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进阶教程之函数参数的多种传递方法
Aug 30 Python
Python类方法__init__和__del__构造、析构过程分析
Mar 06 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
基于python3实现socket文件传输和校验
Jul 28 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
Python循环结构的应用场景详解
Jul 11 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
python3实现单目标粒子群算法
Nov 14 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
PR值查询 | PageRank 查询
2006/12/20 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
PHP代码加密的方法总结
2020/03/13 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
python 多个参数不为空校验方法
2019/02/14 Python
对于Python深浅拷贝的理解
2019/07/29 Python
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
详解MySQL 联合查询优化机制
2021/05/10 MySQL
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL