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 json import requests from 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 ret embed()
这个机器人还真是萌气十足,看来以后妈妈再也不用担心我不会和妹子聊天啦!