https://itchat.readthedocs.io/zh/latest/#_15,作者:LittleCoder,tempdban,Chyroc。
一、简介
近期有个朋友因为忘了发一个通知,导致工作出现一些问题,所以我产生一个想法,是否可以通过代码实现定时将信息发送至特定的群聊或者人?于是我找到了这一个基于网页版微信接口的第三方库itchat,它实现了微信基本的微信信息发送功能,如文件发送,文本发送等,也具备了一定的微信操作:加好友,创建群聊等,非常好玩。此博客便用于记录该库的基本运用为后期使用,希望对你们也有所用处。
二、安装方法
熟悉的pip大法,hh: pip3 install itchat
三、基本接口方法
(一)登陆
1.itchat.login()
常用参数
作用
enableCmdQR
True/False(用于显示二维码在命令行窗口),也可以输入整型数值用于设置显示二维码像素的长度
picDir
用于输入要将登陆二维码放置的文件夹位置
2.itchat.auto_login():
常用参数
作用
enableCmdQR
True/False(用于显示二维码在命令行窗口),也可以输入整型数值用于设置显示二维码像素的长度
hotReload
hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码
statusStorageDir
设置用来储存status的位置
picDir
用于输入要将登陆二维码放置的文件夹位置
(二)查找朋友、群聊、公众号
1.itchat.search_friends()
常用参数
作用
name
用于通过备注或昵称搜寻朋友其他信息
nickName
用于通过昵称搜寻朋友其他信息(可以避免一个人的昵称和另一个人的备注相同,较为精确查找)
remarkName
用于通过备注搜寻朋友其他信息(同)
userName
用于通过userName寻找朋友的昵称,比如在接受信息时可以用到
2.itchat. search_chatrooms()
常用参数
作用
name
用于通过群名查寻群聊其他信息
userName
用于通过userName寻找群名的昵称或其他信息,比如在接受信息时分析可以用到
3.search_mps
常用参数
作用
name
用于通过名称查寻公众号其他信息
userName
用于通过userName寻找群名的昵称或其他信息,比如在接受信息时分析可以用到
(三)发送信息
1.itchat.send()
常用参数
作用
msg
需要发送的信息(文本、图片、视频、文件等)前缀列表[’@fil@’, ‘@img@’, ‘@msg@’, ‘@vid@’],例如发送图片:itchat.send(r’@img@C:\Users\user\Desktop\608431415239ef9e7bbfeb7a90f751bf.jpg’,[UserName])
toUserName
使用如上面例子,获取例子: itchat.search_friends(name=‘name’)[0].get(‘UserName’)
2.itchat.send_image()
常用参数
作用
fileDir
图片的地址
toUserName
发送的目标对象
3.itchat.send_video()
常用参数
作用
fileDir
视频的地址
toUserName
发送的目标对象
4.itchat.send_file()
常用参数
作用
fileDir
文件的地址
toUserName
发送的目标对象
PS:发送的文件大小不能超过20MB!
(四)自动回复设置
import itchat
from itchat.content import *
@itchat.msg_register(TEXT) #这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法
def reply(msg):
#这个是向发送者发送消息
itchat.send_msg('已经收到了文本消息,消息内容为%s'%msg['Text'],toUserName=msg['FromUserName'])
return "我接收到: %s" % msg["Text"] #返回的给对方的消息,msg["Text"]表示消息的内容
#运行
if __name__ == '__main__':
itchat.auto_login()
itchat.run()#开始自动回复
也可以加入用于判断为是好友之间的消息还是群聊的消息
import itchat
from itchat.content import *
@itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True)
#isFriendChat、isGroupChat、isMpChat参数用于判断
def text_reply(msg):
itchat.send("%s : %s" % (msg.type, msg.text),msg['FromUserName'])
自动通过好友
@itchat.msg_register(FRIENDS)#来自官方文档
def add_friend(msg):
msg.user.verify()
msg.user.send('Nice to meet you!')
(五)退出及登陆完成后调用特定方法
可以使得程序在登陆后或者退出后运行某方法
import time
import itchat
def lc():
print('finish login')
def ec():
print('exit')
itchat.auto_login(loginCallback=lc, exitCallback=ec)
time.sleep(3)
itchat.logout()
(六)用户多开
import itchat
newInstance = itchat.new_instance()
newInstance.auto_login(hotReload=True, statusStorageDir='newInstance.pkl')
@newInstance.msg_register(TEXT)
def reply(msg):
return msg.text
newInstance.run()
(七)其他注意事项
中文的文件没有办法上传,这是由于requests的编码问题导致的。若需要支持中文文件传输,将
fields.py
(py3版本见
这里
)文件放入requests包的packages/urllib3下即可。
四、思考
通过该库的接口,可以很容易的实现定时发送消息与通过接受其他用户的信息设定定时发送消息这一功能和删除之前的定时发送消息这一功能。不过这需要使用者将这一微信号拉进需要发送通知的通知群。由于定时发送信息最好是24小时挂载,所以我想使用服务器进行配置将是一个不错的想法。