完整的微信个人账户API

itchat的Python项目详细描述


Python2Python3

itchat是微信的开源api,微信是中国常用的社交网络应用。

通过python中的itchat访问您的个人微信帐户从未如此简单。

一个微信机器人只需不到30行代码就可以处理所有的基本信息。

类似于itchatmp(微信海量平台的api),只需学习一次,就可以得到两个工具。

现在微信已经成为个人生活的一个重要组成部分,希望本次回购能够帮助您扩展个人微信账号的功能,让微信用户体验更美好。

安装

pip install itchat

简单用法

使用itchat时,如果要向filehelper发送消息,请执行以下操作:

importitchatitchat.auto_login()itchat.send('Hello, filehelper',toUserName='filehelper')

你只需要写这个来回复个人短信。

importitchat@itchat.msg_register(itchat.content.TEXT)deftext_reply(msg):returnmsg.textitchat.auto_login()itchat.run()

对于更高级的用途,您可以继续阅读或浏览document

尝试

您可以先试用基于此项目的机器人:

QRCodeOfRobot

这是code

高级用法

消息字典的特殊用法

你可以在屏幕上打印出来,发现所有的用户和信息都是字典。

但实际上,它们是itchat创建的有用类。

它们有有用的键和有用的界面,例如:

@itchat.msg_register(TEXT)def_(msg):# equals to print(msg['FromUserName'])print(msg.fromUserName)

喜欢:

author=itchat.search_friends(nickName='LittleCoder')[0]author.send('greeting, littlecoder!')

各种类型的消息寄存器

下面是itchat如何配置为获取和回复每日信息的演示。

importitchat,timefromitchat.contentimport*@itchat.msg_register([TEXT,MAP,CARD,NOTE,SHARING])deftext_reply(msg):msg.user.send('%s: %s'%(msg.type,msg.text))@itchat.msg_register([PICTURE,RECORDING,ATTACHMENT,VIDEO])defdownload_files(msg):msg.download(msg.fileName)typeSymbol={PICTURE:'img',VIDEO:'vid',}.get(msg.type,'fil')return'@%s@%s'%(typeSymbol,msg.fileName)@itchat.msg_register(FRIENDS)defadd_friend(msg):msg.user.verify()msg.user.send('Nice to meet you!')@itchat.msg_register(TEXT,isGroupChat=True)deftext_reply(msg):ifmsg.isAt:msg.user.send(u'@%s\u2005I received: %s'%(msg.actualNickName,msg.text))itchat.auto_login(True)itchat.run(True)

命令行二维码

您可以使用此命令在命令行中访问二维码:

itchat.auto_login(enableCmdQR=True)

由于某些字符的宽度与系统不同,您可以调整enablecmdqr来解决此问题。

# for some linux system, width of block character is one instead of two, so enableCmdQR should be 2itchat.auto_login(enableCmdQR=2)

命令行的默认背景色为深色(黑色),如果不是,则可以将enablecmdqr设置为负值:

itchat.auto_login(enableCmdQR=-1)

热重新加载

通过使用以下命令,您可以在一段时间内重新加载程序而无需重新扫描qrcode。

itchat.auto_login(hotReload=True)

用户搜索

通过使用“搜索朋友”,您可以使用四种方法搜索用户:

  1. 获取自己的用户信息
  2. 通过用户名获取用户信息
  3. 获取评论名、微信账号或昵称与功能名称键匹配的用户信息
  4. 获取评论名、微信账号和昵称与功能匹配的用户信息

方法3、4可以一起使用,下面是演示程序:

# get your own user informationitchat.search_friends()# get user information of specific usernameitchat.search_friends(userName='@abcdefg1234567')# get user information of function 3itchat.search_friends(name='littlecodersh')# get user information of function 4itchat.search_friends(wechatAccount='littlecodersh')# combination of way 3, 4itchat.search_friends(name='LittleCoder机器人',wechatAccount='littlecodersh')

文档中有关于搜索和获取大型平台和聊天室的详细信息。

下载并发送附件

itchat的附件下载功能在msg的文本键中

文件名(图片的默认名称)在msg的文件名键中

下载函数接受一个位置值(包括文件名)并相应地存储附件。

@itchat.msg_register([PICTURE,RECORDING,ATTACHMENT,VIDEO])defdownload_files(msg):msg.download(msg.fileName)itchat.send('@%s@%s'%('img'ifmsg['Type']=='Picture'else'fil',msg['FileName']),msg['FromUserName'])return'%s received'%msg['Type']

如果不需要图片的本地副本,可以不向函数传递任何内容来获取二进制字符串。

@itchat.msg_register([PICTURE,RECORDING,ATTACHMENT,VIDEO])defdownload_files(msg):withopen(msg.fileName,'wb')asf:f.write(msg.download())

多实例

可以使用以下命令打开多实例。

importitchatnewInstance=itchat.new_instance()newInstance.auto_login(hotReload=True,statusStorageDir='newInstance.pkl')@newInstance.msg_register(itchat.content.TEXT)defreply(msg):returnmsg['Text']newInstance.run()

登录和注销后设置回调

<> >登录和注销的回调是通过 LogCurrBue/cTe>和 ExtCalb后退设置的。

importtimeimportitchatdeflc():print('finish login')defec():print('exit')itchat.auto_login(loginCallback=lc,exitCallback=ec)time.sleep(3)itchat.logout()

如果没有设置logincallback,qr图片将被删除,命令将被清除。

如果您通过电话退出,也将调用ExtCalBo后撤。

faq

问:为什么我不能发送用utf8编码的文件?

答:这是因为请求的上传设置,您可以将this file(对于py3,您需要this)放入请求包的package s/urllib3中。

问:如何使用这个软件包来使用我的微信作为监视器?

答:有两种方式:与自己的帐户或filehelper通信。

问:为什么有时候我不能发信息?

答:有些帐户根本无法向自己发送消息,因此请改用filehelper

注释

如果您有任何问题或建议,您可以通过issue

或者在gitter上。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
integer CPLEX(12.5)Java API,将LP解析为IP   在Java中为PDF创建缩略图   java如何在没有main方法的情况下创建Netbeans GUI表单   java使用命令设计模式,只需撤销   JavaQuartz产生未处理的空指针异常   java Builder模式返回null   升级到Java 7后,泛型类的Typeparameterized字段不可见   java是否可以避免FileChannel的ClosedByInterruptException?   JavaEclipse不识别持久性的内容。xml   Java如何确定URL是http还是https?   java在安卓中创建反馈表单   java开放搜索服务器文件爬虫专门锁定文件   java OrientDB选择一个对象的名称,后跟2个以上的用户   java如何在spring JPA保存方法中添加用户定义注释   java为什么eclipse对BASE64Encoder施加限制?