Denua 博客

使用 itchat 登入微信收发消息

发布时间: 2017-11-09 18:08   分类 : Python    标签: PythonLib 浏览: 916   


itchat 实现了登入网页版微信的功能, 使用扫描二维码的方式登入,可以处理收到的信息并实现自动回复,自动添加好友创建讨论组等功能. 安装 pip install itchat easy_install itchat 如果出现itchat无法访问微信服务器的错误提示, 这时可能是 certifi 的问题, 需要安装版本为 2015.4.28 ## 登入 登出 ##### 1. 登入 import itchat.login() 的一种方法 login(self, enableCmdQR=False, picDir=None, qrCallback=None, loginCallback=None, exitCallback=None) 参数说明: - enableCmdQR: 如果不为False, 则在控制台打印登入所需二维码, 当 enableCmdQR 为 int 时,打印不同大小的二维码, 用于不同控制台输出不同字体时使用 - picDir: 保存二维码的路径, - qrCallback: 登入相关的回调函数, 接收 uuid status qrcode - loginCallback: 登入成功后的回调函数 - exitCallback: 注销后的回调函数 另一个方法 auto_login(self, hotReload=False, statusStorageDir='itchat.pkl', enableCmdQR=False, picDir=None, qrCallback=None, loginCallback=None, exitCallback=None) 参数说明: - hotReload: 默认False, 当为 True 时, 短时间内登入不需要扫描二维码验证 - statusStorageDir: 验证文件的保存路径, 登入成功后悔生成一个验证文件用于下次登入使用 - 剩余参数与 login() 用途一致 和登入相关的方法还有 load_login_status(self, fileDir, loginCallback=None, exitCallback=None) get_QR(self, uuid=None, enableCmdQR=False, picDir=None, qrCallback=None) check_login(self, uuid=None) ##### 2. 登出 itchat.logout() ##### 3. 保持登入状态 如果没有这句, 则登入成功后会直接退出 itchat.run() ## 发送消息 ##### 1. 发送普通消息 send_msg(self, msg='Test Message', toUserName=None) 参数说明 - msg: 要发送的消息内容 - toUserName: 收消息的用户名, 从获取的好友列表获取该值 ##### 2. 发送文件 send_file(self, fileDir, toUserName=None, mediaId=None, file_=None) 参数说明 - fileDir: 文件路径 - toUserName: 接收用户名 - mediaId: 媒体id, 如果设置, 将不会发送两次, 而是直接从服务器发送 - file_: 未知 ##### 3.发送特定格式文件 send_image(self, fileDir=None, toUserName=None, mediaId=None, file_=None) send_video(self, fileDir=None, toUserName=None, mediaId=None, file_=None) ##### 4.通用发送方法 send(self, msg, toUserName=None, mediaId=None) 参数说明: - msg: 要发送的内容, 这里不同于其他方法, 内容可以为图片,或者视频,文件. + '@fil@dir': 文件 + '@img@dir': 图片 + '@msg@txt': 普通文本 + '@vid@dir': 视频 - toUserName: 接收者 - mediaId: 如果设置则不会重复上传, 直接从服务器发送该消息 ##### 5.撤回消息 revoke(self, msgId, toUserName, localId=None) 参数说明: - msgId: 消息服务器id - toUserName: 接收者 - locaId: 消息本地id ## 接收消息 接收消息不同于发送, 当需要处理接收消息的时候则需要用到 装饰器 from itchat.content import * @itchat.msg_registerr(self, msgType, isFriendChat=False, isGroupChat=False, isMpChat=False) def msg_receiced(msg): ''' return msg 参数说明: - 装饰器 * msgType: 指定该方法用于处理的消息类型 + TEXT: 文本 + PICTURE: 图片 + VIDEO: 视频 + FRIENDS: 好友请求 + VIOCE: 语音 + CARD: 名片 * isFriendChar: 处理好友消息 * isGroupChat: 处理群消息 * isMpChat: 位置 - msg: 收到的消息dict, 其中几个重要的值: * FromUserName: 发送人 * User: 发送人信息 * MsgType: 消息类型 * MsgId: 消息id * Content: 消息内容 ## 一个简单的例子 # coding=utf-8 import itchat from itchat.content import * @itchat.msg_register(TEXT, isFriendChat = True) def receive_text(msg): for m in msg: print m, msg[m] print msg['Text'] return msg['Text'] # 返回的内容将发送给发送者 @itchat.msg_register(FRIENDS) def auto_agree(msg): itchat.add_friend(**msg['Text']) itchat.send_msg('你好.'), msg['RecommendInfo']['UserName']) if __name__ == "__main__": itchat.auto_login(enableCmdQR=1, hotReload=True) itchat.run(debug=True) itchat.logout() (完)

评论    

Copyright denua denua.cn