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