不务正业,想起干点啥有意思的事,于是想起了用聊天机器人去调戏微信好友也许会有点意思吧,于是参照别人写的东西,自己也浅尝一下。基本原理还是很简单的,就是让机器人替你去聊天。
主要有以下几点:
'''
主要使用的就是以下两个库
'''
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.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.User
if 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: # 语音消息
pass
if msg['MsgType'] == 42: # 名片
pass
if msg['MsgType'] == 62: # 小视频
pass
if msg['MsgType'] == 47: # 动画表情
print(msg['Text'])
return TulingIsMe(msg['Text'])
if msg['MsgType'] == 49 and msg['AppMsgType'] == 5: # 普通链接或应用分享消息
pass
if msg['MsgType'] == 49 and msg['AppMsgType'] == 3: # 音乐链接消息
pass
if msg['MsgType'] == 49 and msg['AppMsgType'] == 2001: # 红包消息
pass
if msg['MsgType'] == 10000: # 系统消息
pass
else:
pass
# 微信群
@itchat.msg_register([itchat.content.TEXT], isGroupChat=True) # 群消息的处理
def reply_group(msg):
print(msg)
# 只回复特定聊天群
ChatRoomID = '@@***ace6a9e45855ee3'
if msg['FromUserName'] == ChatRoomID:
return
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: # 语音消息
pass
if msg['MsgType'] == 42: # 名片
pass
if msg['MsgType'] == 62: # 小视频
pass
if msg['MsgType'] == 47: # 动画表情
# print(msg['Text'])
# return TulingIsMe(msg['Text'])
if msg['MsgType'] == 49 and msg['AppMsgType'] == 5: # 普通链接或应用分享消息
pass
if msg['MsgType'] == 49 and msg['AppMsgType'] == 3: # 音乐链接消息
pass
if msg['MsgType'] == 49 and msg['AppMsgType'] == 2001: # 红包消息
pass
if msg['MsgType'] == 10000: # 系统消息
pass
else: # 其他群聊直接忽略
pass
# 登录微信
def LogWechat(replay_flag):
itchat.auto_login(hotReload=True)
itchat.send(u'RiskyJunior_Wechat_Robot SignedUp', toUserName='filehelper')
if replay_flag == True:
pass
else:
pass
itchat.run()
if __name__ == '__main__':
LogWechat(True)
关于这部分有需要说明:
登录网页版扫码之后会出现:
1203 为了你的帐号安全,
此微信号已不允许登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录
。Windows微信下载地址:https://pc.weixin.qq.com Mac微信下载地址:https://mac.weixin.qq.com
/*
如果遇到这种问题,建议更换微信号尝试,因为我也不知道有没有其他办法解决。
如果有,烦请告知。
*/
最后附上测试结果吧:
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给指定联系人发消息》