用python写一个微信聊天机器人可以利用python中的wxpy库或者itchat模块,我在网上看到好多都是使用的itchat,但是我这里使用的是wxpy库,wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。使用wxpy这个库可以做好多好多事,比如自动恢复消息、跟人聊天、自动加人啊等等等等,这些都可以在wxpy这个文档中找到使用方法的!!!我做的主要就是根据别人发的消息来回复
这个是wxpy文档的链接:https://wxpy.readthedocs.io/zh/latest/
(不想看文档的话在文章末尾有惊喜哦)
这个是itchat文档的链接:https://itchat.readthedocs.io/zh/latest/
第一步就是先下载wxpy
在电脑上下载wxpy库,使用命令pip install wxpy就好了,如果你电脑上同时下载有python2和python3,就是用下面的命令
py -3 -m pip install wxpy
py -2 -m pip install wxpy
下载好wxpy后,就可以开始制作我们自己的机器人了,下面说说我做机器人的过程以及遇到的一些问题
from wxpy import * #导入wxpy模块
robot = Bot() #初始化机器人,会出现一个二维码,扫码登录即可
机器人要想聊天,首先就得知道别人说了什么,这就需要机器人去监听对方到底说了什么,请看下面代码
#这个是用来监听群聊的消息,而且监听的消息类型为文本消息,若要监听朋友的,将Group改为myFriend就行了
@robot.register(Group,TEXT)
#参数msg就是监听到的消息
def print_group_msg(msg):
print(msg) #将监听到的消息打印到控制台
msg.reply("*******") # ****代表所要回复的内容,使用reply()函数
做个简单的机器人其实就只需要上面这几行代码就好了,你可以根据自己想要做的将函数补充完整就好了,
在做机器人的过程中,有可能需要获取发现消息人的昵称,或者时间啊,这些在文档中都有
如果想知道是谁发的消息,使用
msg.member
就行了,但是这类型不是string类型,你可以在使用过程中是看看它的类型到底是什么
在做机器人的过程中还会出现一种情况,就是如果消息被撤回了该怎么办!
在微信里,每一条消息都对应有一个id号,我们可以通过这个id号还找到被撤回的消息,或者用于还原被撤回的消息(但这不是我要用的就不仔细写了)
这个获取消息的id :
msg_id=msg.id
这个则是获取被撤回信息的id:
msg_id_regex = re.compile('<msgid>(\d+)</msgid>') # 被撤回消息的msgid的匹配规则
old_msg_id = msg_id_regex.findall(raw.get('Content'))[0] # 获取被撤回消息的msgid
当然仅仅写以上内容,会导致你的程序主程序运行结束自然退出。wxpy给出了embed()
方法,在程序末尾(或其他你想要暂停调试的地方)加上embed()
方法就可以让程序保持运行,同时进入Python命令行。
给个完整的例子代码
from wxpy import *
robot=Bot()
@robot.register(Group,TEXT) #注册消息处理方法
def print_group_msg(msg):
print(msg)
message= "{}".format(msg.text) #msg.text是只有消息内容,不包含有其他东西
msg.reply(message) #恢复一样的消息
embed()
最后附上一张在知乎中看到的wxpy的速查表