python使用itchat库实现微信机器人(好友聊天、群聊天)


Posted in Python onJanuary 04, 2018

itchat是一个开源的微信个人号接口,可以使用该库进行微信网页版中的所有操作,比如:所有好友、添加好友、拉好友群聊、微信机器人等等。详细用户请看文档介绍,在这里。

本文主要使用该库完成一个能够处理微信消息的的图灵机器人,包括好友聊天、群聊天。

1、itchat库的安装

pip install itchat

安装完成后运行以下代码,会出现出现一张二维码,扫码登陆之后将会登陆微信网页。

2、登陆

import itchat
# 登陆
itchat.auto_login()  # 可设置hotReload = True
# 运行并保持在线状态
itchat.run()

此外,itchat 也提供短时间内断线重连的功能,只需要添加hotReload = True参数,下次登陆时不需要通过扫描二维码,只需要在手机端确认登陆即可。

3、消息的发送

itchat 库可以发送 文本、图片、视频、附件等内容,如向微信文件传输助手发送消息,可这样:

itchat.send('Hello', toUserName='filehelper')

toUserName 为要向发送消息的人的微信号,可以在微信手机端点击查询,也可以使用itchat库中的search_friends函数来进行查找,返回其微信号,详细用法,自行查找官方文档。

4、消息的接收

###################### 完整代码##############################
# 加载库
from itchat.content import *
import requests
import json
import itchat
itchat.auto_login(hotReload = True)
# 调用图灵机器人的api,采用爬虫的原理,根据聊天消息返回回复内容
def tuling(info):
  appkey = "e5ccc9c7c8834ec3b08940e290ff1559"
  url = "http://www.tuling123.com/openapi/api?key=%s&info=%s"%(appkey,info)
  req = requests.get(url)
  content = req.text
  data = json.loads(content)
  answer = data['text']
  return answer
# 对于群聊信息,定义获取想要针对某个群进行机器人回复的群ID函数
def group_id(name):
  df = itchat.search_chatrooms(name=name)
  return df[0]['UserName']
# 注册文本消息,绑定到text_reply处理函数
# text_reply msg_files可以处理好友之间的聊天回复
@itchat.msg_register([TEXT,MAP,CARD,NOTE,SHARING])
def text_reply(msg):
  itchat.send('%s' % tuling(msg['Text']),msg['FromUserName'])
@itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
def download_files(msg):
  msg['Text'](msg['FileName'])
  return '@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName'])
# 现在微信加了好多群,并不想对所有的群都进行设置微信机器人,只针对想要设置的群进行微信机器人,可进行如下设置
@itchat.msg_register(TEXT, isGroupChat=True)
def group_text_reply(msg):
  # 当然如果只想针对@你的人才回复,可以设置if msg['isAt']: 
  item = group_id(u'想要设置的群的名称') # 根据自己的需求设置
  if msg['ToUserName'] == item:
    itchat.send(u'%s' % tuling(msg['Text']), item)
itchat.run()

那么,下面你的好友、微信群可以愉快的跟图灵机器人聊天啦~~~

总结

以上所述是小编给大家介绍的python使用itchat库实现微信机器人(好友聊天、群聊天),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python基础篇之初识Python必看攻略
Jun 23 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Python标准库笔记struct模块的使用
Feb 22 Python
Python实现的端口扫描功能示例
Apr 08 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
python版本五子棋的实现代码
Dec 11 Python
opencv与numpy的图像基本操作
Mar 08 Python
Python数据类型之String字符串实例详解
May 08 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 #Python
Python中实现最小二乘法思路及实现代码
Jan 04 #Python
Python找出最小的K个数实例代码
Jan 04 #Python
Python编程把二叉树打印成多行代码
Jan 04 #Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 #Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
Jan 04 #Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 #Python
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
全面解析Vue中的$nextTick
2020/12/24 Vue.js
python访问sqlserver示例
2014/02/10 Python
为python设置socket代理的方法
2015/01/14 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
会计实习生自我鉴定
2013/12/12 职场文书
餐饮投资计划书
2014/04/25 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
CPU不支持Windows11系统怎么办
2021/11/21 数码科技