Skip to content

Instantly share code, notes, and snippets.

@pzxbc
Last active September 27, 2018 09:39
Show Gist options
  • Save pzxbc/5587f9874f6f852f6559456c5fd926e0 to your computer and use it in GitHub Desktop.
Save pzxbc/5587f9874f6f852f6559456c5fd926e0 to your computer and use it in GitHub Desktop.
[itchat使用] 记录使用itchat过程遇到的问题 #itchat #wxbot #微信机器人

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有两个参数需要注意:hotReloadenableCmdQR

  • 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库。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment