国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python來開發(fā)微信功能

2020-02-15 21:48:50
字體:
供稿:網(wǎng)友

在移動社交時代,微信已經(jīng)成為我們生活不可或缺的一部分。2017年的《微信數(shù)據(jù)報告》中顯示:每天有380億條消息從微信上發(fā)出,其中6億條是語音消息,有350萬個活躍的公眾賬號,并存在著8億活躍粉絲。在其他諸如支付、出行等方面,也更是與我們的生活休憩相關(guān)。正如它的slogan那樣:微信,是一個生活方式。

和微信有關(guān)的第三方框架很多,比如「wxpy」「wxBot」等,今天要使用的是其中著名的「itchat」Python模塊,它是由第三方開發(fā)者@LittleCoder等架構(gòu)實現(xiàn)的接口,該API的使用場景可以不僅僅只是一個微信機器人,更多的功能可以由我們自己去發(fā)現(xiàn)拓展?!竔tchat」的功能非常強大,調(diào)用卻十分簡單,同時,將「itchat」結(jié)合「matplotlib」「jieba」等模塊,可以對我們的微信好友的信息進行一些收集與分析,讓我們能更直觀的了解我們自己的圈子。

一個自動回復(fù)機器人

微信自上線以來,一直沒有自動回復(fù)的功能,想必是有他們的理念。但是有些人群,確實對此功能有一定需求,我舉兩個栗子:

不愿時刻被消息打擾的人 消息需要批量處理的人們(比如微商)

對此,我設(shè)計了幾個功能:

功能列表:

[x] 收到消息立即自動回復(fù) [x] 收到消息延遲指定時間回復(fù) [x] 對不同好友定制不同的回復(fù)內(nèi)容 [x] 在手機端隨時進行控制

itchat的原理是通過掃碼進行遠程微信網(wǎng)頁端的登錄,然后通過在移動端進行操作,網(wǎng)頁端進行響應(yīng),來實現(xiàn)一些功能,雖然似乎繞了個彎子,但是在微信的限制下,這似乎已經(jīng)是一種最佳的方式了,猶如戴著鐐銬起舞。

首先我們需要考慮別的問題是:程序如何在微信端接收到你的指令。此時出現(xiàn)了一個非常重要的角色:文件管理器。(當(dāng)網(wǎng)頁端微信登陸后,消息列表會出現(xiàn))此時,文件管理器充當(dāng)了移動端和web端的橋梁。比如你給文件管理器傳一個字符串作為指令,網(wǎng)頁端接收到數(shù)據(jù)后就能根據(jù)你的預(yù)定來執(zhí)行相應(yīng)操作。

我們可以先通過設(shè)定幾個全局變量來做作為功能的開關(guān)和保存數(shù)據(jù)的容器。

#自動回復(fù)開關(guān)SWITCH_REPLY=True#延遲回復(fù)開關(guān)SWITCH_DELAY=False#延遲時間DELAY_TIME=120#消息前綴開關(guān)SWITCH_PREFIX=True#消息前綴內(nèi)容PREFIX_CONTENT="[自動回復(fù)]"#回復(fù)內(nèi)容字典REPLY_DICT={}#延遲回復(fù)字典DELAY_REPLY_DICT={}

然后通過判斷web端在”文件管理器“中接收到的字符串指令來進行不同操作,這一部分的代碼比較簡單且冗長,這里就不貼出來了,完整源碼地址將會在文末給出。

假如此時我們收到了朋友的消息,需要程序給出自動回復(fù)。

#獲取發(fā)送消息的朋友的信息  target_friend=itchat.search_friends(userName = msg['FromUserName'])  if target_friend:   #獲取ta的昵稱   nickName=target_friend['NickName']   if not REPLY_DICT.__contains__(nickName):    #設(shè)置默認(rèn)回復(fù)    REPLY_DICT[nickName]="抱歉我有事暫未看到消息,稍后回復(fù),若有急事可以電話聯(lián)系(•ω•`)"      reply_content=REPLY_DICT[nickName]   #判斷自動回復(fù)開關(guān)   if SWITCH_REPLY:    #判斷延時回復(fù)開關(guān)    if SWITCH_DELAY:     localtime = time.time()     DELAY_REPLY_DICT[nickName]=[localtime,msg['FromUserName']]     print (DELAY_REPLY_DICT)         if not SWITCH_DELAY:     #判斷消息前綴開關(guān)     if SWITCH_PREFIX:      reply_content = PREFIX_CONTENT + REPLY_DICT[nickName]     else:      reply_content = REPLY_DICT[nickName]     #發(fā)送消息     itchat.send(reply_content, toUserName=msg['FromUserName'])            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万源市| 梅州市| 新源县| 岑巩县| 威远县| 渑池县| 灵璧县| 衡水市| 镶黄旗| 青神县| 石家庄市| 团风县| 东光县| 卢湾区| 舞钢市| 彭阳县| 南华县| 平潭县| 绥芬河市| 宣武区| 平利县| 九江县| 水富县| 临猗县| 双城市| 辽中县| 塘沽区| 大宁县| 玉龙| 宜兴市| 肥西县| 上饶市| 龙游县| 怀安县| 达州市| 离岛区| 儋州市| 邯郸市| 瓦房店市| 湖口县| 镇赉县|