你想每天定时向你的女朋友发一句早安吗 ?教你实现一个微信机器人
你想每天定時(shí)向你的女朋友發(fā)一句早安嗎?
?wechaty 是一個(gè)使用 typescript 開發(fā)的機(jī)器人,我已經(jīng)使用 wechaty[1] 做了很多關(guān)于有趣的自動(dòng)化的工作。
你可以通過 wechaty 把你的微信變成一個(gè)機(jī)器人,如果你有兩個(gè)微信號(hào)的話,那就收獲了一枚機(jī)器人小助手。通過編程的手段與它接入基金與股票的接口,再加一個(gè)兩點(diǎn)半的定時(shí)任務(wù),這樣小助手就可以在每天收盤前給你發(fā)一個(gè)最近的基金趨勢信息供你選擇。
你還可以把你的常用公眾號(hào)掛一個(gè)機(jī)器人,每天早上七點(diǎn)左右向你的女朋友道一句早安,這樣她就會(huì)在每天醒來時(shí)對你的問候充滿期待。
哦對,忘了,程序員是沒有女朋友的。
好了,來實(shí)現(xiàn)一個(gè)機(jī)器人吧。接下來本篇文章開始介紹微信機(jī)器人的常見使用場景,及如何用代碼來把你的微信變成小助手。
?加我微信前端交流群的小伙伴們知道我有一個(gè)小機(jī)器人在管理著群,每天定時(shí)推送面試題。而這個(gè)微信機(jī)器人就是我自己敲代碼實(shí)現(xiàn)的,今天講一講如何實(shí)現(xiàn)一個(gè)簡單機(jī)器人。
我通過 wechaty 也實(shí)現(xiàn)了一個(gè)自娛自樂的機(jī)器人
自動(dòng)推送文章
自動(dòng)推送技術(shù)面試題并在群里討論
基金、天氣預(yù)報(bào)、百科、名言、詩詞等自動(dòng)回復(fù)及每日推送功能
部分代碼開源在 wechat-bot[2],歡迎來玩
另外也歡迎加入我的前端交流群,添加微信?shanyue-bot
?微信機(jī)器人應(yīng)用場景及私域流量
先來瞅一眼,常見的微信操作,而這些都可以通過機(jī)器人來完成
消息
收發(fā)個(gè)人名片、文本、圖片、小程序、圖文消息
轉(zhuǎn)發(fā)文本、圖片、小程序、圖文消息
群組
建群、設(shè)置群公告、獲取群二維碼
拉人、踢人,并監(jiān)聽相關(guān)事件
群列表、群詳情、群成員
聯(lián)系人
添加好友、自動(dòng)通過好友
好友備注、詳情及列表信息
關(guān)于機(jī)器人的應(yīng)用,我總結(jié)為三個(gè)大方面
「社群管理」,根據(jù)關(guān)鍵字自動(dòng)動(dòng)過好友,對好友自動(dòng)分組,添加備注并拉入相對應(yīng)的群。
「智能對話」,稍微笨一點(diǎn)如回復(fù)資料,智能一些可以真人與人工智能結(jié)合,來處理各種咨詢問題
「定時(shí)任務(wù)」,每天定時(shí)定點(diǎn)在微信群發(fā)送行業(yè)信息促進(jìn)活躍度。如果是中學(xué)高校或教育集團(tuán),可以發(fā)送昨日學(xué)員學(xué)習(xí)信息統(tǒng)計(jì)等
如果中小企業(yè)內(nèi)部有私域流量需求并把微信群作為私域流量池,通過微信機(jī)器人的社群管理、智能對話及定時(shí)任務(wù)可加強(qiáng)管理效率。對于個(gè)人開發(fā)者來說,你可以通過智能對話及定時(shí)任務(wù)把它作為一個(gè)開發(fā)版的日歷及通知服務(wù)。
關(guān)于這三個(gè)應(yīng)用場景的技術(shù)實(shí)現(xiàn),將在以下代碼中涉及到
開始寫第一個(gè)微信機(jī)器人
使用 wechaty[3] 通過幾行就可以寫一個(gè)具有核心功能的微信機(jī)器人
import?{?Wechaty?}?from?'wechaty'const?bot?=?new?Wechaty({//?微信機(jī)器人使用了?iPad?協(xié)議登錄,puppet?為?`PuppetPadplus`puppet:?new?PuppetPadplus(),name:?'daxiange' })bot.on('scan',?(qrcode,?status)?=>?console.log(`Scan?QR?Code?to?login:?${status}\nhttps://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrcode)}`)).on('message',???????message?=>?console.log(`Message:?${message}`)).start()把以上文件存為 index.ts,此時(shí)需要一個(gè) token 來運(yùn)行它。
$?WECHATY_PUPPET_PADPLUS_TOKEN=HELLOSHANYUE?ts-node?index.ts如果你需要獲得一個(gè)永久的 token,可以參考這里:https://github.com/juzibot/Welcome/wiki/Support-Developers
你可以在這里獲得更全面的開發(fā)文檔: https://wechaty.github.io/wechaty/
Node Version
需要注意的是,目前 wechaty 版本是 0.41,需要 Node 版本最小為 node12。
畢竟現(xiàn)在 node12 已經(jīng)是處于活躍期的 LTS,node10 已進(jìn)入維護(hù)期,所以趕快升級(jí) node 版本吧。
社群管理
自動(dòng)通過好友
自動(dòng)拉人入群
智能對話
智能對話,簡單來說就是你一嘴,我一嘴。
與微信公眾號(hào)開發(fā)自動(dòng)回復(fù)差不多,你可以通過自定義關(guān)鍵詞來回復(fù)
//?index.ts bot.on('message',?message.handleMessage)//?message.ts const?defaultRoute?=?{?keyword:?'',?handle:?covid.keyword?} const?routes?=?[{?keyword:?'基金',?handle:?fund.topFund?},{?keyword:?'面試',?handle:?interview.randomQuestion?},{?keyword:?'文章',?handle:?recentArticle?},defaultRoute ]async?function?reply?(msg:?Message,?_data)?{const?data?=?_.concat(_data)for?(const?text?of?data)?{if?(text)?{await?msg.say(text)}} }export?async?function?handleMessage?(msg:?Message)?{//?如果收到了文本消息if?(msg.type()?===?Message.Type.Text)?{//?如果不是微信群if?(!msg.room())?{const?text?=?msg.text()//?通過用戶回復(fù)關(guān)鍵字,進(jìn)行路由處理,找到對應(yīng)的處理函數(shù)const?route?=?routes.find(route?=>?{return?text.includes(route.keyword)})?||?defaultRouteconst?data?=?await?route.handle(text)await?reply(msg,?data)}} }定時(shí)任務(wù)
定時(shí)任務(wù)應(yīng)該是社群運(yùn)營中最常使用的功能之一了,如下
每日九點(diǎn)統(tǒng)計(jì)群活躍度信息
每日十點(diǎn)群發(fā)每日資訊。結(jié)合公眾號(hào)可以群發(fā)公眾號(hào)內(nèi)圖文信息,為企業(yè)內(nèi)公眾號(hào)甚至 C 端產(chǎn)品進(jìn)行促活
每日十點(diǎn)向微信群管理人員發(fā)送網(wǎng)站運(yùn)營數(shù)據(jù),如 UV/IP,活躍用戶數(shù),新增用戶數(shù),新增付費(fèi) (此類功能可用郵件及釘釘機(jī)器人替代,各有優(yōu)劣)
備忘錄提醒功能,如每日十點(diǎn)半運(yùn)營復(fù)盤大會(huì)
當(dāng)然,對于個(gè)人來說,也可以做一做每日兩點(diǎn)半股票基金推薦的消息推送等等有趣的功能。
關(guān)于定時(shí)任務(wù)代碼如下,使用了一個(gè)簡單的非分布式的定時(shí)任務(wù)庫 node-cron[4]。
//?index.ts import?{?schedule?}?from?'./schedule'bot.start().then(()?=>?{schedule(bot)})//?schedule/index.ts import?{?Wechaty?}?from?'wechaty'import?articleBot?from?'./article'export?async?function?schedule?(bot:?Wechaty)?{await?articleBot(bot)//?await?schedule1(bot)//?await?schedule2(bot) }//?schedule/article.ts //?定時(shí)定點(diǎn)群發(fā)消息 import?{?Wechaty?}?from?'wechaty' import?{?CronJob?}?from?'cron'export?default?async?(bot:?Wechaty)?=>?{return?new?CronJob('13?12?*?*?*',?async?()?=>?{const?rooms?=?await?bot.Room.findAll()const?article?=?await?recentArticle()await?pMap(targetRooms,?async?room?=>?{await?room.say(article)},?{concurrency:?6})},?null,?true,?'Asia/Shanghai') }異常處理
異常處理在某種程度上比應(yīng)用系統(tǒng)更加重要,不然有可能應(yīng)用掛掉了 N 天都不知道。
sentry 是一個(gè)關(guān)于異常上報(bào)的系統(tǒng),并且提供完善的 SDK 及文檔,通過 sentry 可以對機(jī)器人添加警報(bào)著重監(jiān)聽以下事件。
自動(dòng)捕捉 unhandledPromiseRejection 異常
監(jiān)控 bot.on('error') 事件并報(bào)告異常
最后記著開通了 Sentry 的 Alerts,不然異常爆滿了都收不到郵件。
總結(jié)
通過 wechaty 開發(fā)機(jī)器人可以很輕松實(shí)現(xiàn)以下功能并作為私域流量管理,并擴(kuò)展來更多的好玩的有趣的事兒
社群管理
智能對話
定時(shí)任務(wù)
我通過 wechaty 也實(shí)現(xiàn)了一個(gè)自娛自樂的機(jī)器人,部分代碼開源在 wechat-bot[5],歡迎來玩
但前提是你需要有一個(gè) WECHATY_PUPPET_PADPLUS_TOKEN,你可以通過 開發(fā)者支持[6] 來獲得免費(fèi) Token
關(guān)注我
掃碼添加我的微信,備注進(jìn)群,加入高級(jí)前端進(jìn)階群
加我微信拉你進(jìn)入面試交流群另外,歡迎關(guān)注公眾號(hào) 【互聯(lián)網(wǎng)大廠招聘】 接收各大廠招聘信息,直達(dá)大廠負(fù)責(zé)人。如果你是技術(shù)負(fù)責(zé)人,歡迎投遞內(nèi)推信息。
更多大廠招聘,面試面經(jīng),技能要求,請關(guān)注公眾號(hào)【互聯(lián)網(wǎng)大廠招聘】Reference
[1]
wechaty: https://github.com/wechaty/wechaty
[2]wechat-bot: https://github.com/shfshanyue/wechat-bot
[3]wechaty: https://github.com/wechaty/wechaty
[4]node-cron: https://github.com/kelektiv/node-cron
[5]wechat-bot: https://github.com/shfshanyue/wechat-bot
[6]開發(fā)者支持: https://github.com/juzibot/Welcome/wiki/Support-Developers
總結(jié)
以上是生活随笔為你收集整理的你想每天定时向你的女朋友发一句早安吗 ?教你实现一个微信机器人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Adguard Home最低DNS处理时
- 下一篇: 在IDEA中如何取消打过的断点