itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
开源地址
https://github.com/littlecodersh/ItChat
文档:
@L_404_1@
安装:
pip3 install itchat登入与登出
登入并向文件助手发送一句话,登入时会经过扫码 *** 作,类似于电脑微信登入
1 import itchat2 #登入并保存登入状态,实现第一次运行时扫码,一定时间内再次运行就不用扫码了,手机微信上将显示:网页微信已登入.....3 itchat.auto_login(hotReload=True)4 发送文本数据到文件助手5 itchat.send("东小东你好123",toUsername=filehelper")
登出:
itchat.logout()
注册登入登出的回调方法
def ldong():2 print('微信登入')3 edong():4 微信登出5 登入6 itchat.auto_login(hotReload=True,loginCallback=ldong,exitCallback=edong)
命令行二维码
通过以下命令可以在登陆的时候使用命令行显示二维码:
itchat.auto_login(enableCmdQR=True)
部分系统可能字幅宽度有出入,可以通过将enableCmdQR赋值为特定的倍数进行调整:
如部分的linux系统,块字符的宽度为一个字符(正常应为两字符),故赋值为2itchat.auto_login(enableCmdQR=2)
默认控制台背景色为暗色(黑色),若背景色为浅色(白色),可以将enableCmdQR赋值为负值:
itchat.auto_login(enableCmdQR=-1)可接受监听的数据类型
消息分类:
图片或表情(PICTURE)、录制(RECORDING)、附件(ATTACHMENT)、小视频(VIDEO)、文本(TEXT),地图(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀请(FRIENDS)、语音(RECORDING)、系统消息(SYstem)
获取消息内容:
可以通过print(msg)方法查看消息里的所有数据,然后进行提取
@itchat.msg_register(itchat.content.TEXT) text_reply(msg): print(msg)消息捕获
针对朋友的消息捕获
登入时不适用于hotReload=True,因为多次运行会多次注册自动回复,比如在没有登出的情况下运行3次程序,就会出现1次接受3次发送的效果
监听函数只有在对方发送数据时进入
文本
1 2 自动回复 3 4 text_reply(msg): 5 return 东小东回复数据:"+msg[Text"] 6 7 8 itchat.auto_login() 9 保持运行10 itchat.run()
文件下载
PICTURE,RECORDING,ATTACHMENT,VIDEO,TEXT 图片、录制、附件、视频、文本from itchat.content PICTURE,TEXT 5 6 @itchat.msg_register([PICTURE,VIDEO]) download_files(msg): 8 filedpx=./filex/filename"] 得到文件路径,目录需要手动创建 9 msg.download(filedpx) 下载10 你发送的文件类型Type']+ 保存地址为:filex/"+msg.filename
针对群聊的自动监测
如果想添加针对群聊的监测,则在监听函数加入isGroupChat=True
监听函数只要有数据发送就会进入,包括自己发送的数据
只对群消息有效 3 @itchat.msg_register(itchat.content.TEXT,isGroupChat=if(msg["]==11): 6 东小东回复数据xx:只对个人用户有效11 12 13 14 itchat.run()
@我信息监测
5 判断是否是@本人if msg["].find(@"+usermsgx[Nickname"])==0: 7 "+msg.actualNickname+ 东你发的信息为:"+msg.text 8 9 itchat.auto_login()10 usermsgx=itchat.search_frIEnds()得到当前用户的信息11 itchat.run()保持运行
针对所有信息来源信息监听
朋友、群聊、公众号
@itchat.msg_register(TEXT,isFrIEndChat=True,isGroupChat=True,isMpChat= simple_reply(msg): I received: %s' % msg.text数据发送
return
在接收数据函数里的return “数据” 则是自动确认为回复当前发送用户数据,可以删除该句,则不进行数据回复
itchat.send,可以一次性发送多条
参数:(内容,用户)
返回值:发送结果,是否发送成功,Json数据
注意:文件地址不可为中文
内容:可为单独的字符串内容,其他有【@类型@地址】,类型有图片(img)、文件(fil)、视频(vID)
用户:省略则发个自己,不稳定,msg['FromUsername']表示指定用户为触发用户
1 res=itchat.send(文本信息的发送......!',toUsername=msg[FromUsername])2 res=itchat.send(@img@%s' % ./filex/zcy.gif3 res=itchat.send(@fil@%s./filex/tt.txt4 res=itchat.send(@vID@%s./filex/vIDeox.mp4'])
指定类型发送2
参数:(地址,用户)
返回值:发送结果,是否发送成功,Json数据
注意:文件地址不可为中文
1 bb = itchat.send_msg(文字信息22 bb = itchat.send_image(3 bb = itchat.send_file(4 bb = itchat.send_vIDeo(返回值:发送者:toUsername=msg['FromUsername']
例子:
通过群名向群里发送内容,该微信群需要在运行代码前进行手动添加到通讯录
2 5 chatroomname=傻逼群群名 6 itchat.get_chatrooms(update= 7 chatrooms = itchat.search_chatrooms(name=chatroomname)if len(chatrooms)==0 : 9 没有找到群聊:' + chatroomname)10 exit(0)else:12 print(chatrooms[0][Username'])输出群聊标识符13 itchat.send_msg(大家好,这是发送的内容发送消息14 15 16 itchat.run()个人的基本信息获取本人信息
usermsgx=itchat.search_frIEnds()print(usermsgx)print(usermsgx["]) 得到昵称获取所有朋友信息
frIEndx=itchat.get_frIEnds()print(frIEndx)条件获取朋友或者自己信息
获取特定Username的用户信息2 itchat.search_frIEnds(username=@abcdefg1234567 获取任何一项等于name键值的用户4 itchat.search_frIEnds(name=littlecodersh 获取分别对应相应键值的用户6 itchat.search_frIEnds(wechatAccount=7 三、四项功能可以一同使用8 itchat.search_frIEnds(name=littleCoder机器人')得到用户序号
@itchat.msg_register([TEXT,MAP])(msg) print(msg[User"][Uin"])更新用户数据,通过Username,或者Username列表
memberList = itchat.update_frIEnd(')
注意:中文文件名文件上传
Q: 为什么中文的文件没有办法上传?
A: 这是因为使用requests包会自动将中文文件名编码为服务器端无法识别的格式,所以需要修改requests包或者使用别的方法上传文件。
最简单的方法即将requests包的packages/urlib3中的fIElds.py中的format_header_param方法改为如下内容:
format_header_param(name,value): 2 if not any(ch in value for ch in "\\r\n 3 result = %s="%s"' % (name,value) 4 try 5 result.encode(asciiexcept UnicodeEncodeError:pass 8 9 return resultnot six.PY3: Python 2:11 value = value.encode(utf-812 value = email.utils.encode_rfc2231(value,13 value = ' % (name,value.decode(utf8))14 return value命令行显示二维码
Q: 为什么我在设定了itchat.auto_login()的enableCmdQR为True后还是没有办法在命令行显示二维码?
A: 这是由于没有安装可选的包pillow,可以使用右边的命令安装:pip install pillow
综合:实现文本信息的关联,及可以实时看到所关联的账号的聊天信息,当发生聊天数据时会主动将聊天数据发送到主账号上
@itchat.msg_register([TEXT]) 5 6 查询数据的接收者 7 touserx=默认为文件助手发送信息 8 ToUsername"]!=":如果非文件助手信息 9 touserx=itchat.search_frIEnds(username=msg["])[10 inuserx = itchat.search_frIEnds(username=msg["]查询数据的发送者11 totouserx=itchat.search_frIEnds(name=东里个咚')[0][通过昵称查询到username12 texts=msg.text 得到接收的数据13 itchat.send_msg(【"+thisuserx+】\n"+inuserx+-->"+touserx+ :\n"+texts,toUsername=totouserx) 发送给目标16 17 thisuserx=itchat.search_frIEnds()[得到当前用户昵称18 19 itchat.run()总结
以上是内存溢出为你收集整理的Python微信 *** 控(itchat)全部内容,希望文章能够帮你解决Python微信 *** 控(itchat)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)