首页 > 编程 > Python > 正文

使用Python来开发微信功能

2020-02-15 21:48:50
字体:
来源:转载
供稿:网友

在移动社交时代,微信已经成为我们生活不可或缺的一部分。2017年的《微信数据报告》中显示:每天有380亿条消息从微信上发出,其中6亿条是语音消息,有350万个活跃的公众账号,并存在着8亿活跃粉丝。在其他诸如支付、出行等方面,也更是与我们的生活休憩相关。正如它的slogan那样:微信,是一个生活方式。

和微信有关的第三方框架很多,比如「wxpy」「wxBot」等,今天要使用的是其中著名的「itchat」Python模块,它是由第三方开发者@LittleCoder等架构实现的接口,该API的使用场景可以不仅仅只是一个微信机器人,更多的功能可以由我们自己去发现拓展。「itchat」的功能非常强大,调用却十分简单,同时,将「itchat」结合「matplotlib」「jieba」等模块,可以对我们的微信好友的信息进行一些收集与分析,让我们能更直观的了解我们自己的圈子。

一个自动回复机器人

微信自上线以来,一直没有自动回复的功能,想必是有他们的理念。但是有些人群,确实对此功能有一定需求,我举两个栗子:

不愿时刻被消息打扰的人 消息需要批量处理的人们(比如微商)

对此,我设计了几个功能:

功能列表:

[x] 收到消息立即自动回复 [x] 收到消息延迟指定时间回复 [x] 对不同好友定制不同的回复内容 [x] 在手机端随时进行控制

itchat的原理是通过扫码进行远程微信网页端的登录,然后通过在移动端进行操作,网页端进行响应,来实现一些功能,虽然似乎绕了个弯子,但是在微信的限制下,这似乎已经是一种最佳的方式了,犹如戴着镣铐起舞。

首先我们需要考虑别的问题是:程序如何在微信端接收到你的指令。此时出现了一个非常重要的角色:文件管理器。(当网页端微信登陆后,消息列表会出现)此时,文件管理器充当了移动端和web端的桥梁。比如你给文件管理器传一个字符串作为指令,网页端接收到数据后就能根据你的预定来执行相应操作。

我们可以先通过设定几个全局变量来做作为功能的开关和保存数据的容器。

#自动回复开关SWITCH_REPLY=True#延迟回复开关SWITCH_DELAY=False#延迟时间DELAY_TIME=120#消息前缀开关SWITCH_PREFIX=True#消息前缀内容PREFIX_CONTENT="[自动回复]"#回复内容字典REPLY_DICT={}#延迟回复字典DELAY_REPLY_DICT={}

然后通过判断web端在”文件管理器“中接收到的字符串指令来进行不同操作,这一部分的代码比较简单且冗长,这里就不贴出来了,完整源码地址将会在文末给出。

假如此时我们收到了朋友的消息,需要程序给出自动回复。

#获取发送消息的朋友的信息  target_friend=itchat.search_friends(userName = msg['FromUserName'])  if target_friend:   #获取ta的昵称   nickName=target_friend['NickName']   if not REPLY_DICT.__contains__(nickName):    #设置默认回复    REPLY_DICT[nickName]="抱歉我有事暂未看到消息,稍后回复,若有急事可以电话联系(•ω•`)"      reply_content=REPLY_DICT[nickName]   #判断自动回复开关   if SWITCH_REPLY:    #判断延时回复开关    if SWITCH_DELAY:     localtime = time.time()     DELAY_REPLY_DICT[nickName]=[localtime,msg['FromUserName']]     print (DELAY_REPLY_DICT)         if not SWITCH_DELAY:     #判断消息前缀开关     if SWITCH_PREFIX:      reply_content = PREFIX_CONTENT + REPLY_DICT[nickName]     else:      reply_content = REPLY_DICT[nickName]     #发送消息     itchat.send(reply_content, toUserName=msg['FromUserName'])            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表