itchat

您所在的位置:网站首页 啊登录微信 itchat

itchat

2024-02-19 00:57| 来源: 网络整理| 查看: 265

说在前面:想要使用itchat库,重要的事情说三遍: 首先需要一个能登录网页版微信的微信号! 首先需要一个能登录网页版微信的微信号!! 首先需要一个能登录网页版微信的微信号!!!

个人python学习笔记的目录博客,点击可获取更多内容。【传送门】

itchat是python的一个第三方库,是一个网页版微信个人号接口,可以通过python来应用这个库实现对于微信的一些自动化操作。这些自动化操作都是基于收到信息,并以所收到的信息内容为基础,通过逻辑判断决定接下来的指令。 在这当中会涉及到很多的判断语句和循环结构。如果想要实现一些更加智能的回复效果,就像市面上很多的微信群聊机器人一样,那就还需要一些字典等作为机器人回复信息的依据。 但是不管最终要完成什么功能,了解itchat库的基本语句是必要的。这篇文章也将从itchat的基础语句开始介绍,并在最后附加上我的一些实战。

itchat——使用python登录网页版微信 一、itchat的安装二、itchat的基本内容1.调用2.登录2.1 基本指令2.2 参数设置2.2.1 退出登录后,一段时间内再登录不用扫码2.2.2 将获取的二维码在控制台上打印 2.3 使用示例 3.退出登录3.1 基本指令 4.发送消息4.1 基本指令4.2 参数设置4.2.1 发送文本类型4.2.2 发送文件类型4.2.3 发送图片类型4.2.4 发送视频类型 5.注册消息5.1 基本指令5.2 参数设置5.3 使用示例5.4 注册消息的优先级5.5 动态注册消息 6.消息内容6.1 微信一般消息内容6.2 常用字典内容6.2.1 文本消息(TEXT) 7.账号信息7.1 微信好友7.2 公众号7.3 微信群聊7.4 Uins 三、实战拓展1.官方实践项目分享8.1 微信控制器8.2 群发助手8.3 好友删除检测 2.拓展内容3.个人实战 参考文档

一、itchat的安装

在cmd中使用pip install itchat可以直接进行安装。我是用是conda,但是conda中显示搜索不到这个第三方库,于是我使用了本地安装的方法,详情可以看我的另一篇博文《pip安装的第三方库无法在Anaconda中调用》,介绍了可能会遇到的问题。有关itchat的使用,学习文件最好的还是参考官方说明。

二、itchat的基本内容 1.调用 import itchat 2.登录 2.1 基本指令 itchat.auto_login() # 执行后生成的二维码扫描以登录,且二维码在关闭后自动删除 itchat.run() # 登录微信后保持登录状态 ''' 应当注意:itchat.run()是一个循环,仅当退出登录时才结束循环, 在使用过程中应注意结合多线程来使用 ''' 2.2 参数设置 2.2.1 退出登录后,一段时间内再登录不用扫码

hotReload = True 退出登录后,一段时间内重新登录不需要扫描二维码,这会生成一个二维码,且一段时间后二维码会自动删除

2.2.2 将获取的二维码在控制台上打印

enableCmdQR = True True的值为块字符的宽度,可以根据自己的需求自行调整:

True的默认值为2若控制台背景为深色(黑色),则True>0若控制台背景为浅色(白色),则Trus}, "StatusNotifyCode": 0, "NewMsgId": "", "Status": 0, "VoiceLength": 0, "ForwardFlag": 0, "AppMsgType": 0, "Ticket": "", "AppInfo": {}, "Url": "", "ImgStatus": 0, "MsgType": 0, "ImgHeight": 0, "MediaId": "", "MsgId": "", "FileName": "", "HasProductId": 0, "FileSize": "", "CreateTime": 0, "SubMsgType": 0 }

所接收到的消息都符合这一结构,具体到不同的消息还会有细微的区别,可以根据所接收到的msg,依次查询这些内容来更加详细的了解。

6.2 常用字典内容 6.2.1 文本消息(TEXT) msg['Content'] # 消息内容 msg.User["NickName"] # 消息所在地(好友备注/群聊名称/公众号名称) msg['ActualNickName'] # 发送消息者(适用范围:群聊) 7.账号信息

在使用个人微信的过程当中主要有三种账号需要获取,分别为:好友、公众号、群聊 这部分内容在前文注册消息部分就已经有了一些应用

7.1 微信好友

get_friends

其中每个好友为一个字典列表的第一项为本人的账号信息传入update键为True将可以更新好友列表并返回

search_friends

itchat.search_friends() 获取自己的用户信息,返回自己的属性字典itchat.search_friends(userName='@abcdefg1234567') 获取特定UserName的用户信息itchat.search_friends(name='littlecodersh') 获取任何一项等于name键值的用户itchat.search_friends(wechatAccount='littlecodersh') 获取分别对应相应键值的用户itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh') 三、四项功能可以一同使用

update_friend

该方法需要传入用户的UserName,返回指定用户的最新信息同样也可以传入UserName组成的列表,那么相应的也会返回指定用户的最新信息组成的列表 memberList = itchat.update_friend('@abcdefg1234567') 7.2 公众号

get_mps

其中每个公众号为一个字典传入update键为True将可以更新公众号列表并返回

search_mps

itchat.search_mps(userName='@abcdefg1234567') 获取特定UserName的公众号,返回值为一个字典itchat.search_mps(name='LittleCoder') 获取名字中含有特定字符的公众号,返回值为一个字典的列表itchat.search_mps(userName='@abcdefg1234567', name='LittleCoder') 以下方法相当于仅特定了UserName 7.3 微信群聊

get_chatrooms

其中每个群聊为一个字典传入update键为True将可以更新群聊列表并返回通讯录中保存的群聊列表群聊列表为后台自动更新,如果中途意外退出存在极小的概率产生本地群聊消息与后台不同步为了保证群聊信息在热启动中可以被正确的加载,即使不需要持续在线的程序也需要运行itchat.run()如果不想要运行上述命令,请在退出程序前调用itchat.dump_login_status(),更新热拔插需要的信息

search_chatrooms

itchat.search_chatrooms(userName='@@abcdefg1234567') 获取特定UserName的群聊,返回值为一个字典itchat.search_chatrooms(name='LittleCoder') 获取名字中含有特定字符的群聊,返回值为一个字典的列表itchat.search_chatrooms(userName='@@abcdefg1234567', name='LittleCoder') 以下方法相当于仅特定了UserName

update_chatroom

同样,如果想要更新该群聊的其他信息也可以用该方法群聊在首次获取中不会获取群聊的用户列表,所以需要调用该命令才能获取群聊的成员该方法需要传入群聊的UserName,返回特定群聊的详细信息同样也可以传入UserName组成的列表,那么相应的也会返回指定用户的最新信息组成的列表 memberList = itchat.update_chatroom('@@abcdefg1234567', detailedMember=True)

创建群聊、增加、删除群聊用户的方法如下所示:

由于之前通过群聊检测是否被好友拉黑的程序,目前这三个方法都被严格限制了使用频率

删除群聊需要本账号为群管理员,否则会失败

将用户加入群聊有直接加入与发送邀请,通过useInvitation设置

超过40人的群聊无法使用直接加入的加入方式,特别注意

memberList = itchat.get_friends()[1:]

chatroomUserName = itchat.create_chatroom(memberList, 'test chatroom') 创建群聊,topic键值为群聊名

itchat.delete_member_from_chatroom(chatroomUserName, memberList[0]) 删除群聊内的用户

itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False) 增加用户进入群聊

7.4 Uins

Uin 就是微信中用于标识用户的方式,每一个用户、群聊都有唯一且不同的Uin。那么通过Uin,即使退出了重新登录,也可以轻松的确认正在对话的是上一次登陆的哪一个用户。 但注意,Uin与其他值不同,微信后台做了一定的限制,必须通过特殊的操作才能获取.最简单来说,首次点开登陆用的手机端的某个好友或者群聊,itchat就能获取到该好友或者群聊的Uin。如果想要通过程序获取,也可以用程序将某个好友或者群聊置顶(取消置顶)。 这里提供一个提示群聊更新的程序:

import re, sys, json import itchat from itchat.content import * itchat.auto_login(True) @itchat.msg_register(SYSTEM) def get_uin(msg): if msg['SystemInfo'] != 'uins': return ins = itchat.instanceList[0] fullContact = ins.memberList + ins.chatroomList + ins.mpList print('** Uin Updated **') for username in msg['Text']: member = itchat.utils.search_dict_list( fullContact, 'UserName', username) print(('%s: %s' % ( member.get('NickName', ''), member['Uin'])) .encode(sys.stdin.encoding, 'replace')) itchat.run(True)

每当Uin更新了,就会打印相应的更新情况。同样的,如果你想要获取Uin更新的情况也通过获取SYSTEM类型消息实现。

三、实战拓展 1.官方实践项目分享

官方提供了三个实践项目用来分享,比起微信机器人确实多了很多心意(毕竟微信机器人除去智能识别以外别的都很程序化),在这里我只写出我对于三个项目的理解,不会过于深入的实践,想要阅读原文的请点击这里。

8.1 微信控制器

通过前文的介绍,我们知道了微信可以检测接收到的消息,这里包括文件传输助手(filehelper)所接收到的消息。于是,我们可以将通过与文件传输助手的对话,对收到的消息进行逻辑判断从而实现对于电脑的操作,即把微信作为一个控制器。

8.2 群发助手

本质上就是给昵称不同的人发送不同的信息。把对方的名称融合到所发的消息中即可。(感觉还是很麻烦…)

8.3 好友删除检测

这个的原理就比较高级了:

在于将好友拉入群聊时,非好友和黑名单好友不会被拉入群聊群聊在第一次产生普通消息时才会被除创建者以外的人发现的(系统消息不算普通消息) 2.拓展内容

除了itchat以外,python还有一些其他的第三方库来协助我们完成对微信的操作,这些都是其他人所上传的,这里进行部分列出,如有其他好的内容欢迎补充。

第三方库简介wxpy微信机器人 / 可能是最优雅的微信个人号 APIWxBot微信机器人itchatmp微信公众号、企业号接口 3.个人实战 基于itchat+wxpython创建微信网页版桌面客户端 参考文档 itchat项目介绍


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3