摘要:微信已經(jīng)成了中國人生活中基本的通訊工具除了那些自由開源人士以外,前兩天發(fā)現(xiàn)微信機器人的項目,其實早就有了。開發(fā)微信機器人該項目基于上的,使用文檔在這里。原文地址一個簡單有趣的微信聊天機器人我的博客時空路由器
釋放我的機器人微信已經(jīng)成了中國人生活中基本的通訊工具(除了那些自由開源人士以外),前兩天發(fā)現(xiàn)微信機器人的項目,其實早就有了。想著自己也做一個吧,順便加了一些小小的功能。
微信掃一掃加他,跟他尬聊吧,把他拽到群里調(diào)戲他。
具體功能下面會介紹。
工具
手機
微信登陸必須得有手機端登陸才能使用網(wǎng)頁登陸,因為要掃一掃
Python 平臺
該項目基于 Python 開發(fā),所以至少得來個嵌入式的開發(fā)板,或者電腦,或者...云服務器 ;-),如果要保證長時間開啟與話,最好使用云服務器。開發(fā)微信機器人
該項目基于 Github 上的 wxpy,使用文檔在 這里。中文版的,所以我就不介紹這個怎么使用了。簡單描述一下
創(chuàng)建機器人from wxpy import * bot = Bot()注冊消息回復
機器人對好友、群聊中 at 他的人進行回復,在群聊中同時統(tǒng)計每個人的發(fā)言次數(shù)和第一次發(fā)言的時間,將這些信息實時存儲在本地,以防程序錯誤導致數(shù)據(jù)丟失。
消息回復中的機器人使用 圖靈機器人, 可免費申請 API,調(diào)用他。也可以使用 小 I 機器人。這兩個都是深度整合在項目里的。
@bot.register([Friend, Group]) def reply_friend(msg): """ 消息自動回復 """ print(msg) if isinstance(msg.chat, Group): group = msg.chat.name name = msg.member.name if group in stat: if name in stat[group]["count"]: stat[group]["count"][name] += 1 else: stat[group]["count"][name] = 1 flag = True for rank in stat[group]["rank"]: if name == rank["name"]: flag = False break if flag: stat[group]["rank"].append({"name": name, "time": time.strftime("%H:%M:%S", time.localtime())}) else: stat[group] = {"count": {name: 1}, "rank": [{"name": name, "time": time.strftime("%H:%M:%S", time.localtime())}, ]} if msg.text == "發(fā)言排行榜": g = bot.groups().search(group)[0] if not stat[g.name]: return msg_text = "" index = 1 count = stat[g.name]["count"] for name in sorted(count, key=lambda x: count[x], reverse=True): # print("{}: {} {}".format(index, rank["name"], rank["time"])) msg_text += "{}: {} 發(fā)言了 {} 次 ".format(index, name, count[name]) index += 1 if msg_text: msg_text = "發(fā)言排行榜: " + msg_text g.send(msg_text) if msg.text == "起床排行榜": g = bot.groups().search(group)[0] if not stat[g.name]: return msg_text = "" index = 1 for rank in stat[g.name]["rank"]: # print("{}: {} {}".format(index, rank["name"], rank["time"])) msg_text += "{}: {} {} ".format(index, rank["name"], rank["time"]) index += 1 if msg_text: msg_text = "起床排行榜: " + msg_text g.send(msg_text) with open("stat.json", "w") as fh: fh.write(json.dumps(stat)) if not msg.is_at: return return tuling_auto_reply(msg)自動接受好友申請
@bot.register(msg_types=FRIENDS) def auto_accept_friends(msg): """ 自動接受好友請求 """ # 接受好友請求 new_friend = msg.card.accept() # 向新的好友發(fā)送消息 new_friend.send("哈哈,我們現(xiàn)在是超級好的好朋友了呢~~")添加計劃任務
光回復怎么夠,還要做一些小小的有趣的功能,我這里添加了兩個統(tǒng)計,一個是起床時間統(tǒng)計,另一個是發(fā)言統(tǒng)計。
當天群聊的用戶第一次發(fā)言作為起床時間,雖然有些不嚴謹,但畢竟功能是受限制的。
然后每天的 9 點發(fā)布一次起床排行榜, 20 點發(fā)布一次發(fā)言排行榜。當然其實主動發(fā)送 “起床排行榜”、“發(fā)言排行榜” 也會回復當前的排行。
起床排行榜 發(fā)言排行榜 實現(xiàn)class ScheduleThread(threading.Thread): """ 計劃任務線程 """ def run(self): global schedule_time global bot global stat while 1: time.sleep(300) cur_hour = time.strftime("%H", time.localtime()) # print("cur:{} schedule:{}".format(cur_hour, schedule_time)) if cur_hour == schedule_time: continue elif cur_hour == "09": for group in bot.groups(): print(group.name) if not stat[group.name]: continue msg_text = "" index = 1 for rank in stat[group.name]["rank"]: # print("{}: {} {}".format(index, rank["name"], rank["time"])) msg_text += "{}: {} {} ".format(index, rank["name"], rank["time"]) index += 1 if msg_text: msg_text = "排行日報 起床排行榜: " + msg_text group.send(msg_text) elif cur_hour == "20": for group in bot.groups(): print(group.name) if not stat[group.name]: continue msg_text = "" index = 1 count = stat[group.name]["count"] for name in sorted(count, key=lambda x: count[x], reverse=True): # print("{}: {} {}".format(index, rank["name"], rank["time"])) msg_text += "{}: {} 發(fā)言了 {} 次 ".format(index, name, count[name]) index += 1 if msg_text: msg_text = "排行日報 發(fā)言排行榜: " + msg_text group.send(msg_text) elif cur_hour == "00": stat = dict() with open("stat.json", "w") as fh: fh.write("") schedule_time = cur_hour聊聊
展示兩個機器人互相尬聊的情況是怎么樣的。
部署創(chuàng)建機器人時添加一個 console_qr 參數(shù), True 時表示在終端顯示二維碼,False 表示用圖片程序打開二維碼。按情況來,如果在沒有界面的云服務器上,那就在終端打開,如果只能連 tty ,那最好的辦法就是生成一張圖片,放到指定的 FTP 或者云盤目錄,然后本地打開掃描,或者建個簡單的 HTTP 服務器展示圖片,方法很多,根據(jù)自己情況來吧。
原文地址:一個簡單有趣的微信聊天機器人
我的博客:時空路由器
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38642.html
摘要:模塊是一個文件,以結(jié)尾,包含了對象定義和語句模塊讓你能夠有邏輯地組織你的代碼段。把相關(guān)的代碼分配到一個模塊里能讓你的代碼更好用,更易懂。命令執(zhí)行成功,執(zhí)行結(jié)果命令執(zhí)行失敗一秒后執(zhí)行關(guān)機命令 Python 模塊(Module) 是一個 Python 文件,以 .py 結(jié)尾,包含了 Python 對象定義和Python語句 模塊讓你能夠有邏輯地組織你的 Python 代碼段。 把相關(guān)的代...
摘要:我的前一篇文章微信程序開發(fā)系列教程一開發(fā)環(huán)境搭建已經(jīng)介紹了微信服務器的開發(fā)環(huán)境搭建。本文作為開發(fā)系列的第二篇文章,介紹如何給您的微信訂閱號開發(fā)一個最簡單的問答服務,非常好玩。 我的前一篇文章微信程序開發(fā)系列教程(一)開發(fā)環(huán)境搭建?已經(jīng)介紹了微信服務器的開發(fā)環(huán)境搭建。本文作為開發(fā)系列的第二篇文章,介紹如何給您的微信訂閱號開發(fā)一個最簡單的問答服務,非常好玩。 這個系列的完整代碼在我的git...
摘要:行代碼實現(xiàn)微信自動回復機器人一寫在前面今天下午又學到了另一種有趣的玩法微信自動回復機器人。將返回消息返回給微信消息的發(fā)送人。以此實現(xiàn)將微信個人號變身為聊天機器人。 30行代碼實現(xiàn)微信自動回復機器人 一、寫在前面 今天下午又學到了itchat另一種有趣的玩法---微信自動回復機器人。 程序很簡單僅僅三十行代碼左右,實現(xiàn)了機器人自動與你的微信好友聊天,下面是我的機器人小籠包跟自己微信好友聊...
摘要:學習筆記七數(shù)學形態(tài)學關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
閱讀 1377·2021-09-30 09:55
閱讀 1904·2021-08-27 13:10
閱讀 2253·2019-08-29 17:22
閱讀 1305·2019-08-29 16:30
閱讀 3470·2019-08-26 18:37
閱讀 2356·2019-08-26 11:47
閱讀 1168·2019-08-23 14:44
閱讀 1745·2019-08-23 13:46