上回逗汁儿的朋友豆苗为了哄女朋友开心,爬了一堆的笑话让我来给处理一下,今天这货又来找我了,真是无事不登三宝殿啊,事情是这样的。
豆苗:逗汁儿啊,上次你的方法很不错,让我节约了很多时间,为了感谢你,请你吃个饭啊。
逗汁儿:算你有良心。
吃饭ing
豆苗:那个,逗汁儿啊,其实还有一事相求啊。
逗汁儿:……
豆苗:上次那个笑话啊,我感觉每天发太累了,我想让微信自动发。你看能不能……
逗汁儿:。。。。。,消息都懒得发,下次媳妇我也帮你娶了呗?
实在耐不住豆苗的劝说,也所谓拿人手短,吃人嘴短嘛,我就去研究了一下,如何让微信自动回复呢?
经过度娘的检索,发现python是可以做到的!python可以通过调用itchat和wxpy库来进行微信的相关处理。可以进行各种模拟操作,常见的微信机器人就可以用它来制作
查了一下库代码,wxpy是基于itchat来运行的。想了一下seaborn和matplotlib的关系,我决定选择wxpy库来开始制造我们的初级微信机器人吧。
一.Wxpy初体验:
首先复习一下库的导入,库除了import 库名外,还有一个导入方法from 库名 import 方法
import wxpy
from wxpy import *
这两种方法都可以导入wxpy的所有内容,后者更好一些,比如说beautifulsoup库比较大,我们只用到BS4,那我们就可以只输入from wxpy import BS4,即可只导入BS4这部分,降低程序的臃肿程度。
Wxpy主要通过网页微信来进行操作的,所以它可以执行web微信的大部分的功能,这里面也要注意一下,因为微信的设置,新申请的账号无法使用web微信,如果用新微信扫码的话,会报错KeyError: 'pass_ticket',这就代表不能用这个微信作为机器人启动。
导入了库之后,我们就要激活或者说初始化机器人
bot = Bot()
会弹出来一个二维码,扫描二维码,这样你的微信就被wxpy操控了
这里每次执行的时候都会要扫码,最开始的时候也很头痛,这个是为什么执行就要扫码?有没有替代的可能呢?通过查阅文档,可以通过增加参数才行
Bot(cache_path = True) #使用默认缓存路径’wxpy.pkl’
Bot(cache_path = ‘A:\\B\\robot.pkl’) #这种是设置路径的
设置完路径后会出现一个新文件
![]()
IDE会提示你已经登录了,如果出现以下提示则可以认为是成功

成功接管了微信之后,我们试下能不能发消息,那首先试试看能不能给文件助手发消息,这样的话,还能不打扰别人(我不会说是我现在不知道怎么找好友)
bot.file_helper.send('hello,world')
结果:
真的发送到手机上面去了!!
二.指定回复
好,因为豆苗说,只想让他女朋友自动回复笑话这些功能,那别人聊天不能自动回复啊,所以要专门用来回复女朋友的,首先第一步我们要找一下,我的朋友里面有哪些人
Bot.friends()
结果

,我们可以看到这个里面的排列的顺序并不是按照微信名字顺序来的,那我们实验一下,再次获取会不会一样呢?如果可以的话,我们就可以根据每次输出的顺序来确定女朋友在哪里了

真的是一样的,那这个如果从新登陆会不会不同了呢?
经过测试都相同,那我们的一个办法就是可以根据位置来测试,假设女朋友的微信昵称为测试对象001,我们看到位置在第二个,测试方法是向它发送一个消息。
bot.friends()[1].send('你好')

真的发送过来了!!看来这个方法可行,但是经过我的长期测试,发现并不是每次都OK的,如果这个从新扫码之后,这个顺序还是会变化的,那怎么办呢?
我们可以通过查找的方式来找到对应的名字
bot.friends().search('测试对象001')
返回结果:[<Friend: 测试对象001>]
那能不能继续呢?
bot.friends().search('测试对象001').send('你好2')
结果出现了报错:AttributeError: 'Chats' object has no attribute 'send'
说chats这个类没有send这个结果,那这个我们确实找到了好友,但是不能发消息也不行啊~其实只需要让电脑找到这个人就行了,变成下面的代码就可以了
bot.friends().search('测试对象001')[0].send('你好2')
输出结果:↪ 测试对象001 : 你好2 (Text)
看来这个问题也解决了,我们可以找到针对专人的发送消息的方法了。这个就太棒了
但是这个还不够啊,目前还是手动的,还点能自动回复才可以啊
先给测试对象001叫做TestFriend,
TestFriend = bot.friends().search('测试对象001')[0]
接着要设置一个,让它只能自动回复测试001的话,而不会自动回复其他人的话,目前是最初阶的机器人,无法识别非文本信息,那我们就要写一个,非文本信息回复不能识别的消息,那文本信息既然是女朋友,就自动回复:在的,宝贝,测试时候用你好代替要不太肉麻了。
@bot.register(TestFriend)
def AutoReturnMessage(msg):
print('[接收]' + str(msg))
if msg.type != 'Text': #非文本消息回复
ret = '无法识别‘
else:
ret = '你好'
print('[发送]' + str(ret))
return ret
我们下面来测试一下
,

成功了,我用测试001成功让它自动回复了,那我试试别的测试账号
用测试012回复后,果然没有任何反应。又成功了,这次连回复都显示不出来。。
![]()
好,那我们就要测试下一部分了。如何回复笑话?
我想到了指定关键词
先来试试看
@bot.register(TestFriend)
def AutoReturnMessage(msg):
print('[接收]' + str(msg))
if msg.type != 'Text': #非文本消息回复
ret = '无法识别'
elif "你是谁" in str(msg): #笑话备用版
ret = "我是人工智障机器人"
else:
ret = '你好'
print('[发送]' + str(ret))
return ret
结果如下

搞定,可以根据指定关键词回复了!!
这次可以让豆苗的女朋友说:笑话,就会自动说笑话了,但是每次只回复一个笑话有些无聊,那能不能换笑话呢?
经过我的冥思苦想,感觉理论上是可以操作的,但是技术还没达到这种程度,所以就去研究了一下,有没有别的可以操作的呢?
答案是有的!有个现成的机器人任你摆布,并且每日可以聊一千条!!算了算,估计豆苗的女朋友应该不会这么无聊每日召唤1000次豆苗啊~所以我就开始动手了
首先去tuling123.com申请一个图灵机器人,之后得到APIKEY。
因为图灵机器人是用requests库来进行返回的,而且格式是json格式,那需要我们额外引入两个库
Import requests
Import json
然后输入下面的代码
def tuling(info):
key="自己的APIKEY"
url = "http://www.tuling123.com/openapi/api?key=%s&info=%s"%(key,info)
req = requests.get(url)
content = req.text
data = json.loads(content)
answer = data['text']
return answer
tuling("你好") #测试机器人可用
结果返回为:'你好我好大家好',测试成功,这个是图灵机器人内置的内容,可以通过语料库更改
@bot.register(TestFriend)def text_reply(msg):msg.reply('%s' % tuling(msg))
直接和机器人聊天
现在终于成功了,
看看能不能讲笑话
连查询天气都可以!!
成功完成豆苗的求助,这也打开了我的新世界的大门啊~这个可以用来回复笑话,那是不是也可以用来加好友,参与群聊呢??一个更大的世界大门向我打开了~
关注公众号:DC学习助手,获取更多数据科学知识
本文介绍如何使用Python的wxpy库实现微信自动回复功能,包括指定回复特定用户、关键词触发及利用图灵机器人API提供多样化回复。
2235

被折叠的 条评论
为什么被折叠?



