继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python——wxpy模块实现微信尬聊(基于图灵机器人)

九日王朝
关注TA
已关注
手记 180
粉丝 42
获赞 185

wxpy(微信机器人)是在itchat基础上开发的微信个人功能服务API,基本可以实现微信各种拓展功能,

API文档http://wxpy.readthedocs.io/zh/latest/index.html

项目主页https://github.com/youfou/wxpy

支持pip安装,适用2.7以及3.4-3.6的python版本

通过

# 导入模块from wxpy import *# 初始化机器人,扫码登陆bot = Bot()

即可扫码登录,同时也支持

bot = Bot(console_qr=True, cache_path=True)

来保留缓存自动登录

机器人对象http://wxpy.readthedocs.io/zh/latest/bot.html

一个机器人对象Bot可以理解为一个web客户端,所以其是不能和正常的web端、PC端共存的。

其可以完成一个web客户端的基本功能:聊天、搜索、获取、加好友、建群等等……

聊天对象http://wxpy.readthedocs.io/zh/latest/chats.html

bot对象里含有chats,friends,groups,mps等方法,分别可以获取当前机器人的聊天对象、好友、群聊、公众号等信息

可以通过search进行搜索,例如:

boring_group1 = bot.groups().search('ω妹子会有的')[0]
my_friend = bot.friends().search('二狗子', sex=MALE, city='北京')[0]

通过send可以对其发送消息

# 发送文本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')

给自己的文件传输助手发送也可以:

bot.file_helper.send('[奸笑][奸笑]')

还可以通过stats、stats_text等方法进行数据统计

bot.friends().stats_text()

消息处理http://wxpy.readthedocs.io/zh/latest/messages.html

通过Message.type可以定义接收消息的类型,默认全部接收

通过@bot.register激活监听事件,可以定义chats、msg_type等参数

@bot.register(chats = [Friend])def forward_message(msg):print('[接收]'+str(msg))ret = auto_ai(msg.text)print('[发送]'+str(ret))return ret

进程等待http://wxpy.readthedocs.io/zh/latest/console.html

适用 embed()可以让进程处于等待持续监听状态

from wxpy import *bot = Bot()embed() # 进入 Python 命令行# 输入对象名称并回车>>> bot# Out[1]: <Bot: **>>>> bot.friends()# Out[2]: [<Friend: **>, <Friend: **>, <Friend: **>]

机器人接口http://wxpy.readthedocs.io/zh/latest/utils.html

wxpy目前提供了两种机器人接口

图灵机器人http://www.tuling123.com/以及小I机器人http://cloud.xiaoi.com/

以图灵机器人为例完整代码:

# coding:utf-8  import jsonimport requestsfrom wxpy import *#bot = Bot()#bot.file_helper.send_image('ParticleSmoke.png')# 回复 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)def auto_ai(text):url = "http://www.tuling123.com/openapi/api"api_key="****"payload={"key":api_key,"info":text,"userid":"666"}r = requests.post(url,data=json.dumps(payload))result = json.loads(r.content)if ('url' in result.keys()):        return "[九日AI]  "+result["text"]+result["url"]    else:        return "[九日AI]  "+result["text"]bot = Bot(cache_path=True)#登录缓存#bot.file_helper.send('[奸笑][奸笑]')print('九日AI已经启动')boring_group1 = bot.groups().search('ω妹子会有的')[0]@bot.register(boring_group1)def group_message(msg):    print('[接收]'+str(msg))    if (msg.type!='Text'):        ret = '[奸笑][奸笑]'    else:        ret = auto_ai(msg.text)    print('[发送]'+str(ret))    return ret@bot.register(chats = [Friend])def forward_message(msg):    print('[接收]'+str(msg))    if (msg.type!='Text'):        ret = '[奸笑][奸笑]'    else:        ret = auto_ai(msg.text)    print('[发送]'+str(ret))    return retembed()

https://img2.mukewang.com/5b4ca07d000131b804360611.jpg


https://img2.mukewang.com/5b4ca08a00014ad308510384.jpg

这个机器人还真是萌气十足,看来以后妈妈再也不用担心我不会和妹子聊天啦!

https://img2.mukewang.com/5b4ca09d0001e40900790080.jpg



两天后:

https://img1.mukewang.com/5b4ca0b000014ad308510384.jpg


https://img.mukewang.com/5b4ca0b70001b21e04640471.jpg


https://img4.mukewang.com/5b4ca0be00015f2a07140200.jpg


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP