從 0 到 1:Discord Bot 開發之旅
前言
使用Discord也有段很長的時間了,使用過各式各樣的群組Bot,
好的群組Bot可以替群組增加許多有趣功能,增添社群的趣味性,
筆者身為工程師也想做一個出來,至少資料都看得到存在哪,不會因為哪天服務停止就全消失了。
此篇文章不會深入如何從 Discord 開發者模式去創建新Bot,僅開發完成的功能進行說明。
核心功能介紹
以前有開發過用對話輸入特殊格式訊息觸發Bot指令,
後來發現有 Slash Command 能更加客製化會方便許多,
以下功能全部使用 Slash Command 開發,
大部分指令提供給所有身分,
但有些指令關係到群組設定會限定身分使用。
關鍵字回應
當成員輸入某個關鍵字會回應特定訊息
新增
查看
刪除
成員歡迎/離開訊息
設定
該功能只有能群組管理員才能操作
時間提醒任務
新增
查看
重複成員訊息
刪除多筆訊息
該功能只有能刪除訊息的使用者才能操作
技術架構
使用 JavaScript進行開發,
在 Node.js(v18.20.5) 及 discord.js (v14.17.3) 環境運行,
啟動資訊放在專案的 main.js 下,
啟動時會載入相關設定,並設定前端網站(顯示運作狀態),
主要功能都集中在 src 資料夾下,
在底下依功能性區分資料夾,
commands:指令
core:啟動時載入的設定
events:監聽事件
routes:前端顯示
store:狀態及存取資料管理
logs:運作日誌
utils:共通工具
目前資料儲存讀取是都在專案下的Json檔案內,
關鍵字回應: replies
時間提醒: reminders
歡迎/離開訊息:settings
依照 不同群組 區分儲存內容,
依Discord回應設定有分成 私密 與 非私密 訊息,
私密訊息可以自己刪除,
但非私密訊息就需要能刪除的人砍訊息了。
部署到網路我是採用 Heroku方式,
官方文件寫得很詳細,計費方案也很透明,
省去申請網域名稱的問題,也提供實際運作上的效能圖表,
方便查看上線後運行情況。
未來規劃
調整資料儲存方式
目前做法雖然方便,可以直接查看設定內容,
但存儲資料應在資料庫較好,
部署上Heroku 每次啟動都會重建檔案內容,
讓上次新增的資料全部重置也是個問題。
新增更多功能
給予身分組:自動給予成員身分組
隨機抽獎:設定抽獎範圍與數量抽出結果
成員管理:禁言違規用戶
音樂播放:支援 YouTube、Spotify 串流播放
API 整合:天氣查詢
結論
基本上為個人開發,
技術上還不是很成熟,
若願意提出意見我會十分感謝,
感謝你看到這邊,最後附上專案位置,