微信聊天机器人(Itchat)
不务正业,想起干点啥有意思的事,于是想起了用聊天机器人去调戏微信好友也许会有点意思吧,于是参照别人写的东西,自己也浅尝一下。基本原理还是很简单的,就是让机器人替你去聊天。
主要有以下几点:
- 库文件
- 图灵机器人
- Itchat接入网页版微信
- 登录失败的问题
- Reference
库文件
'''
主要使用的就是以下两个库
'''
import itchat # 微信接入库
import requests # 网络库
图灵机器人
这个可以免费在http://www.turingapi.com/上申请,申请之后可以获得一个KEY码,将图灵机器人和微信信息接上之后,就能实现自动聊天功能,所以说,我们的身份就是皮条客,将微信和机器人勾兑到一起。
关于KEY码的申请,这篇文章https://blog.csdn.net/weixin_41137655/article/details/83387792已经写得很明白,有不懂的地方作为参阅。
# Tuling key
KEY = '98d1f00aafd1465*********f84b8d77f'# 获取图灵信息
def TulingIsMe(info):tulingurl = 'http://www.tuling123.com/openapi/api''''以下信息就是发送给图灵机器人的,kEY:就是官网申请的key码info:是你发送给机器人的信息(要想实现机器人聊天,就把你收到的微信消息发送给机器人就行了)userid:随便取一个就行'''data = {'key': KEY,'info': info,'usrid': 'RiskyJr_Wechat_Robot'}try:r = requests.post(tulingurl, data=data).json()print(r.get('text'))return r.get('text')#图灵机器人对你发送的info的回复except:print('none')return
ps:笔者在使用的过程中,发现这个图灵机器人距离完成图灵测试还很远啊,不知道是不是由于打开方式不对,还是其他原因。
Itchat接入网页版微信
这部分主要的功能是实现微信接入。在测试这部分的过程中,笔者有两个微信号,其中一个登录不了,
# 特定聊天对象
@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING, PICTURE])
def reply_someone(msg):person_1 = itchat.search_friends(name='么么')person_2 = itchat.search_friends(name='RISKY')RISKY = person_1[0]['UserName']PIGGIRL = person_2[0]['UserName']# 只回复特定人的信息 通过打印msg信息实现# 这个地方和很多网上的不太相同 ,因为我没有发现msg.Userif msg['FromUserName'] == RISKY or msg['FromUserName'] == PIGGIRL:# 对于不同类型信息的处理if msg['MsgType'] == 1: # 文本 | 地理信息print(msg['Text'])return TulingIsMe(msg['Text'])if msg['MsgType'] == 3: # 图片print(msg['Text'])return TulingIsMe(msg['Text'])if msg['MsgType'] == 34: # 语音消息passif msg['MsgType'] == 42: # 名片passif msg['MsgType'] == 62: # 小视频passif msg['MsgType'] == 47: # 动画表情print(msg['Text'])return TulingIsMe(msg['Text'])if msg['MsgType'] == 49 and msg['AppMsgType'] == 5: # 普通链接或应用分享消息passif msg['MsgType'] == 49 and msg['AppMsgType'] == 3: # 音乐链接消息passif msg['MsgType'] == 49 and msg['AppMsgType'] == 2001: # 红包消息passif msg['MsgType'] == 10000: # 系统消息passelse:pass# 微信群
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True) # 群消息的处理
def reply_group(msg):print(msg)# 只回复特定聊天群ChatRoomID = '@@***ace6a9e45855ee3'if msg['FromUserName'] == ChatRoomID:returnif msg['MsgType'] == 1: # 文本 | 地理信息print(msg['Text'])return TulingIsMe(msg['Text'])if msg['MsgType'] == 3: # 图片print(msg['Text'])return TulingIsMe(msg['Text'])if msg['MsgType'] == 34: # 语音消息passif msg['MsgType'] == 42: # 名片passif msg['MsgType'] == 62: # 小视频passif msg['MsgType'] == 47: # 动画表情# print(msg['Text'])# return TulingIsMe(msg['Text'])if msg['MsgType'] == 49 and msg['AppMsgType'] == 5: # 普通链接或应用分享消息passif msg['MsgType'] == 49 and msg['AppMsgType'] == 3: # 音乐链接消息passif msg['MsgType'] == 49 and msg['AppMsgType'] == 2001: # 红包消息passif msg['MsgType'] == 10000: # 系统消息passelse: # 其他群聊直接忽略pass# 登录微信
def LogWechat(replay_flag):itchat.auto_login(hotReload=True)itchat.send(u'RiskyJunior_Wechat_Robot SignedUp', toUserName='filehelper')if replay_flag == True:passelse:passitchat.run()if __name__ == '__main__':LogWechat(True)
登录失败的问题
关于这部分有需要说明:
- 可能会出现登录不上的问题(建议先在网页版微信进行登录测试)。
登录网页版扫码之后会出现:
<error><ret>1203</ret><message>为了你的帐号安全,
此微信号已不允许登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录
。Windows微信下载地址:https://pc.weixin.qq.com Mac微信下载地址:https://mac.weixin.qq.com</message></error>/*如果遇到这种问题,建议更换微信号尝试,因为我也不知道有没有其他办法解决。如果有,烦请告知。
*/
最后附上测试结果吧:
Reference:
https://itchat.readthedocs.io/zh/latest/《itchat说明文档》
https://blog.csdn.net/weixin_41137655/article/details/83387792《Python + itchat 实现微信机器人聊天(支持自动回复指定群聊)》
https://blog.csdn.net/Lynn_coder/article/details/79436539《itchat给指定联系人发消息》