Discord Bot 醜狗機器人 Xiang

心得 Anpig 2021-05-14 898 3 Minutes

前言

之所以會想做這個機器人是因為朋友發了一篇文:

覺得這個東西如果真的做出來應該還蠻好笑的,趁著最近剛考完期中考比較閒就做了。

實作

一開始我是直接拿高中做的來改,但當時用的是 discord.io,已經停止維護了,所以只好改用 discord.js,網路上有很多教學,抄一抄就可以做出辨識訊息回話的功能了,我把圖片上傳到imgur,再讓機器人回覆網址,在 Discord 裡面看起來就像直接回覆圖片。不過我做完之後,那個朋友問我能不能做一個功能,讓有特定身分組的人不要被機器人回話,怕有些人覺得煩,於是我就開始嘗試讓講「醜狗閉嘴」的人不會被機器人回覆。

開始試著看文件。其實我以前也有嘗試看過文件,不過我當初太笨了,跑去 Discord 官方找,這次不知道為什麼突然知道要去看 discord.js 的文件。一開始我以為 discord.js 沒有身分組功能,因為它放在一個叫做「Guild」的東西下面,我覺得很怪,Discord 什麼時候有公會的功能了,於是我就想用 JSON 直接紀錄哪些人講過「醜狗閉嘴」,不過我發現 JSON 的更新好像讀不到,而且也不知道怎麼新增東西到 JSON 裡面,原本要碰資料庫了,但是我覺得很麻煩就去睡覺了。隔天上完體育課,因為數電改成非同步遠距教學,我就繼續想辦法弄,但我真的不會,就上 Google 找 code 來抄,但是這裡又出現問題,查到的都是舊版的,所以我只好用找到的東西拼拼湊湊,好不容易把這個功能拼出來了。

以下是實際應用狀況(?)

部署

目前我手上只有一台筆電,需要帶來帶去的時候機器人就不能用,而且一直開著也會占用我的硬體資源,所以我就在找地方讓我跑這鬼東西,一開始想到的是 heroku,但是它一直噴錯誤給我,我又不會用,所以我就想到了系計中的工作站,不過我要跑 node 的時候,它卻看不懂我的 code,後來發現它版本太低,因為是工作站又不能自己更新,於是就問了系計中的學長該怎麼辦,他就介紹了系計中開發的「 dosh 」 (docker shell) 給我,雖然我不懂 docker 到底是什麼東西、怎麼運作,不過大致上就是在裡面跑 Ubuntu 的 docker image,可以在裡面裝東西,於是就順利部署了,不過其實後來想想,用 AWS 的免費方案其實就很夠了,好像繞了一點路。我覺得系計中的工作站真的是個很方便的資源,不過好像沒什麼人在用,生涯規劃要在 Minecraft 蓋東西,我上課用的 Minecraft 伺服器也是在系計中的工作站上面跑的,真的很方便,推薦大家多多利用。

心得

做完這個機器人我又覺得真的讀對科系了,學過 OOP 之後發現我蠻大一部分的內容都看得懂,也知道我抄來的 code 在做什麼了,不再像以前一樣只是抄來卻不知道在做什麼,也發現 JavaScript 的有趣之處,覺得蠻開心的。