从零开始微信机器人(一):wxpy简介(登录、消息发送、注册回复)
登录微信
(这里吐槽一下wxpy文档中登录错写为登陆)
Github上和文档中给出了最简单的登录机器人的方式,在程序中写上这两行并运行,会通过图片扫描二维码并登录微信。
导入模块
from wxpy import * # 初始化机器人,扫码登陆 bot = Bot()
有些情况下,可能不能通过终端打开图片(例如部署在服务器上时),我们可以通过参数选择在终端内显示二维码,这样代码会变为:
from wxpy import * bot = Bot(console_qr=True)
如果你发现这样设置终端中的二维码变形了,可以尝试传入console_qr=1(或其他倍数)来进行调整字幅宽度。如果需要反色显示,可以使用负数来进行反色操作。
如果你认为每次都需要扫描二维码很麻烦,可以启用缓存,来保存自己的登录状态:
bot = Bot(console_qr=True, cache_path=True)
发送消息
首先我们尝试给自己和文件传输助手发消息:
给机器人自己发送消息
bot.self.send('Hello World!')
给文件传输助手发送消息
bot.file_helper.send('Hello World!')
如果无法给机器人自身发送消息,请参考http://wxpy.readthedocs.io/zh/latest/bot.html#wxpy.Bot.self
查找昵称为'乙醚。'的好友
my_friend = bot.friends().search(u'乙醚。')[0]
<Friend: 乙醚。>
wxpy同时也包括了发送不同类型消息的方法,通过这些方法我们可以发送各种不同类型的消息。以下是文档给出的样例使用方式:
# 发送文本
my_friend.send('Hello, WeChat!')
# 发送图片
my_friend.send_image('my_picture.png')
# 发送视频
my_friend.send_video('my_video.mov')
# 发送文件
my_friend.send_file('my_file.zip')
# 以动态的方式发送图片
my_friend.send('@img@my_picture.png')通过使用这些方法,我们就可以自定义一个在合适的时候做合适的事情的机器人了!
由于群聊机器人设计暂时需要好友相关内容不多,此处不再作过过多赘述,如果有需要搜索好友的可以参考http://wxpy.readthedocs.io/zh/latest/chats.html#module-wxpy
自动处理消息
wxpy提供了注册消息的方法,可以简单将各种类型的消息注册并自定义处理方式。
注册消息使用简单的@bot.register()方法,
获取所有类型的消息(好友消息、群聊、公众号,不包括任何自己发送的消息)
并将获得的消息打印到控制台
@bot.register()
def print_others(msg):
print(msg)
同时wxpy也可以给注册消息的类型加上限制,
回复 my_friend 发送的消息
@bot.register(my_friend)
def reply_my_friend(msg):
return 'received: {} ({})'.format(msg.text, msg.type)
回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
@bot.register(bot.self, except_self=False)
def reply_self(msg):
return 'received: {} ({})'.format(msg.text, msg.type)
打印出所有群聊中@自己的文本消息,并自动回复相同内容
这条注册消息是我们构建群聊机器人的基础
@bot.register(Group, TEXT)
def print_group_msg(msg):
if msg.is_at:
print(msg)
msg.reply(meg.text)
当然仅仅写以上内容,会导致你的程序主程序运行结束自然退出。wxpy给出了embed()方法,在程序末尾(或其他你想要暂停调试的地方)加上embed()方法就可以让程序保持运行,同时进入Python命令行。
进入 Python 命令行、让程序保持运行
推荐使用
embed()
或者仅仅堵塞线程
bot.join()
作者:乙醚_
链接:https://www.jianshu.com/p/577129b32756
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
查看3道真题和解析