itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。
安装
pip3 install itchat
登录
itchat.auto_login()
这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True
,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl
用于存储登录状态
一下几句代码就能实现一个智能机器人的回复,这样以后都不用怕女朋友的信息回复不及时了
使用注意事项:
1、一下的id如果不知道的话也可以直接改成昵称,比如你的女朋友备注为xxx,就改为xxx,不过最好是使用id
2、关于机器人,手动在微信上点击+号添加朋友------点击公众号---搜索微软小冰(如果你不喜欢这个机器人,可以换成别的机器人,只要更换相应的id就好了)
3、以下只是初级代码,如果想变的更高级,需要编写队列,根据队列中的用户来进行一一回复,比如1,2,3同时发消息给你,把他们遍进一个字典数组,回复一个就删除一个(中间具体的实现原理可自行编写)
import itchat
from itchat.content import *
#在这里只是实现简单的智能机器人功能,只针对个人使用
xiaobinId = '@e65dd597c659db72c01f956410c4e1e7'#机器人id
zhidinId ='@12f70535f9bc6d7133f95d1a8c33a01f49d5c5b04c40640f9ba2a2996be3b27f'#指定人的ID
@itchat.msg_register(TEXT)
def replyText_msg(msg):
nickID = msg['FromUserName']
#如果是指定用户发过来的消息,转发给小冰,在把小冰的信息转给指定的用户
if(nickID == zhidinId):
itchat.send(msg.text, toUserName=xiaobinId)
@itchat.msg_register(TEXT, isMpChat=True)
def replyMp_msg(msg):
nickID = msg['FromUserName']
if(nickID == xiaobinId):
itchat.send(msg.text, toUserName=zhidinId)
#hotReload:退出程序后暂存登陆状态
if __name__ == '__main__':
itchat.auto_login(hotReload=True)
itchat.run()
关于itchat的资料:
回复消息
send
send(msg="Text Message", toUserName=None)
参数:
msg
: 文本消息内容
@fil@path_to_file
: 发送文件
@img@path_to_img
: 发送图片
@vid@path_to_video
: 发送视频
toUserName
: 发送对象, 如果留空, 将发送给自己.返回值
True
orFalse
实例代码
# coding-utf-8
import itchat
itchat.auto_login()
itchat.send("Hello World!")
ithcat.send("@fil@%s" % '/tmp/test.text')
ithcat.send("@img@%s" % '/tmp/test.png')
ithcat.send("@vid@%s" % '/tmp/test.mkv')
send_msg
send_msg(msg='Text Message', toUserName=None)
,其中的的msg
是要发送的文本,toUserName
是发送对象, 如果留空, 将发送给自己,返回值为True
或者False
实例代码
import itchat
itchat.auto_login()
itchat.send_msg("hello world.")
send_file
send_file(fileDir, toUserName=None)
fileDir
是文件路径, 当文件不存在时, 将打印无此文件的提醒,返回值为True
或者False
实例代码
mport itchat
itchat.auto_login()
itchat.send_file("/tmp/test.txt")
send_image
send_image(fileDir, toUserName=None)
参数同上实例代码
import itchat
itchat.auto_login()
itchat.send_img("/tmp/test.txt")
send_video
send_video(fileDir, toUserName=None)
参数同上实例代码
import itchat
itchat.auto_login()
itchat.send_video("/tmp/test.txt")
注册消息方法
itchat
将根据接受到的消息类型寻找对应的已注册的方法. 如果一个消息类型没有对应的注册方法, 该消息将会被舍弃. 在运行过程中也可以动态注册方法, 注册方式与结果不变.
注册方法
不带具体对象注册, 将注册为普通消息的回复方法.
import itchat
from itchat.content import *
@itchat.msg_register(TEXT) #这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法
def simple_reply(msg):
#这个是向发送者发送消息
itchat.send_msg('已经收到了文本消息,消息内容为%s'%msg['Text'],toUserName=msg['FromUserName'])
return "T reveived: %s" % msg["Text"] #返回的给对方的消息,msg["Text"]表示消息的内容
带对象参数注册, 对应消息对象将调用该方法,其中
isFriendChat
表示好友之间,isGroupChat
表示群聊,isMapChat
表示公众号
import itchat
from itchat.content import *
@itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True)
def text_reply(msg):
msg.user.send("%s : %s" % (mst.type, msg.text))
消息类型