itchat
是基于微信网页端接口实现的一个处理微信消息的库
给文件助手发送消息
import itchat
itchat.auto_login()
itchat.send('Hell, filehelper', toUserName='filehelper')
回复自己发送的文本消息
import itchat
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
return msg.text
itchat.auto_login()
itchat.run()
通过调用itchat.auto_login
登陆。auto_login
有两个参数需要注意:hotReload
和enableCmdQR
hotReload
: 设置为True
,会自动保存微信登陆会话,重启itchat
后自动登陆,不用重新扫码enableCmdQR
: 设置为True
,会在控制台下显示二维码,默认是调用桌面图片软件打开二维码图片。如果控制台下显示的二维码不完全,可以将其值设置为2
itchat.send_msg
itchat.send_file
itchat.send_image
itchat.send_video
回复消息前,先要注册消息处理函数
@itchat.msg_register(msg_type, isFriendChat=False, isGroupChat=False, isMpChat=False)
def msg_reply_func(msg):
return msg.text
如果注册的消息处理函数,没有指定任何一种类型(好友、群聊、公众号),则默认为好友消息处理函数
如果消息处理函数返回字符串,则该字符串会被当做回复内容,自动回复。
auto_login
登陆后,会调用更新联系人信息,包括好友、群(保存到通讯录里的群)、公众号
查找好友联系人&发送消息
# nickName是微信好友的名字,而不是微信号。返回的是一个列表,因为好友名字可以重复
user = itchat.search_friends(nickName='xxx')
if user:
itchat.send_msg(msg, user[0]['UserName'])
查找群&发送消息
# 同理群名也是会重复的
group = itchat.search_chatrooms(name='group_name')
if group:
itchat.send_msg(msg, group[0]['UserName'])
UserName
属性标识了好友、群、公众号;好友的属性UserName
每次登陆都不同,群的UserName
每次登陆时相同的,公众号的没注意~
调用run
函数开启消息处理循环
itchat.run(debug=False, blockThread=True)
默认会阻塞当前线程,如果itchat
要在其他有事件循环的框架中使用,那么使用blockThread=False
参数,itchat
会开启一个新的线程来处理消息
itchat
模块自带了一个Core
实例(理解成Bot),itchat
模块中的操作函数都是针对这个Core
的接口调用
如果想创建多个微信机器人的话,就创建多个Core
的实例。itchat
提供了一个new_instance
接口来创建Core
实例
Core
的函数都是在components
模块中实现
微信消息发送有限制,所以一个账号同时能进行发送的消息就有限。如果想做同时的大规模消息推送是不可能的。
有个对itchat
接口的封装库wxpy
。封装出来的接口比较好用,但是该项目已经停止维护了,建议还是使用itchat
库。