fbpx
Skip to content

如何用 ChatGPT 寫 Discord 內容收藏、書籤機器人?架設在 NAS DSM 7.2 Container Manager 的教學

我是如何使用 ChatGPT 從零開始打造 Discord 機器人,透過書籤反應,將訊息內容收藏。以及怎麼部署在 Synology NAS DSM 7.2 的 Container Manager?

📌目錄

本教學文是給三種人:

  1. 想在 Discord 有訊息內容收藏、書籤功能的人
  2. 想知道怎麼在最新的 Synology NAS DSM 7.2 Container Manager 部署機器人
  3. 想知道不會寫程式的人,怎麼全程用問 ChatGPT 把 Discord 機器人建置出來

💬 前言&需求

  • 我的身分是內容創作者、Notion 教學講師生活黑客社群經營者。
  • 我們社群使用 Discord 經營已經好一段時間,從最初的 100 多人,到現在已經超過千人。社群的主要定位是探討「數位生活方案」——怎麼讓工作更聰明,讓生活更有掌控感,當然包含各類生活和工作主題;社群算是挺活躍的,平均每一個人一週會發 60 則訊息,根據 Discord 官方所提供的社群活躍平均值,我們每一項都超過 Benchmark。
生活黑客群島 Discord 社群分析活躍
  • 因為我們是以一人公司的模式經營整個品牌,必須去思考怎麼最大幅度的減少人力,能讓工具做的瑣碎事就不要靠人。
  • 這次的需求是因為社群成員不斷反應,Discord 裡面有很多好內容,但沒有「收藏功能」,沒辦法像是 Slack 一樣按個星星就能晚點回來看 Inbox,或者建立個人的精華庫,實在不太方便。於是我在 Google 上搜尋「Discord Bookmark」,有出現過一個機器人推薦,雖然可以加入伺服器,但永遠都是下線狀況無法使用:
Discord bookmark topgg
在 top.gg 網站(The #1 Discord Bot List)上有過一個 Bookmarker,但已無法使用
  • 既然別人的 Bookmarker 機器人壞掉了,那我們怎麼不自己打造?我雖然在大學時間有學過一些 Python 皮毛,但幾乎十年沒碰算是完全忘光了,所以這次我盡可能不去自己修程式碼,「全程靠問 ChatGPT」的方式,來把這個 Discord 機器人建置出來!

🔖 「書馬克先生」Discord 訊息收藏機器人展示

  1. 圖一:當你想收藏某條訊息,只要對該訊息按下 :bookmark: 反應(表情符號)
  2. 圖二:書馬克先生(機器人)就會把這條訊息的內容&連結,發送一則私人訊息給你。

► 「書馬克先生」機器人介紹:

書馬克先生 Discord 內容收藏機器人

🤖 用 ChatGPT 寫程式、部署 Discord 機器人過程

  1. 因為我們的需求很簡單明確(對伺服器內的 A 訊息按上表情符號 :bookmark: 後,機器人則傳送一則私人訊息給我,訊息內容就是 A 訊息,以及這條訊息的 Discord 連結網址),所以只要清楚描述這個需求,直接告訴 ChatGPT,它就會列出我該執行的步驟。
  2. 果不其然,ChatGPT 一聽完我的需求,就立馬給了我一段 Python 程式碼,還有一堆執行步驟:
  1. 然而,整趟最困難的地方是:
    • 「我該怎麼在 Discord 上建立機器人?」
    • 「選擇部屬在哪個平台來運行(或者用我家的 NAS 虛擬機?)」
    • 「怎麼試錯?將機器人的效果,程式碼迭代優化成我想要的模樣?」
  2. 第一個問題它會直接給你 Discord Developer Portal 的網址,並告訴你步驟,以及點哪些地方來建立你的機器人,取得 API Token,這部分大概只花我 5 分鐘,是最簡單的環節 ✅。
  3. 接下來就開始困難了,ChatGPT 告訴我該怎麼使用 Glitch 這個網頁服務來部署我的 Python 程式碼,甚至用文字來引導我該按下畫面上的哪一個鈕來檢查錯誤,但它可能不知道 Glitch 的 UI 介面有改,畢竟它的資料庫不是最新,是 2021 年,所以有些提示不在它所說的方位,需要一點時間自己去找。
  4. 把程式碼成功部署後,我遇到最大的問題是 {message.content} 一直出現錯誤,雖然整個程式運行正確,但機器人就是抓不出原有的訊息內容,回傳空白的內容給我。我不斷換方式問 ChatGPT 怎麼修正並把錯誤訊息貼給它,但它告訴我的方式卻不正確、無法使用。(我猜也是因為資料庫是 2021 年,而這兩年多 Discord 的隱私權政策有改)
  5. 本來我打算要放棄了,因為時間有點晚了,用最後一絲精神力來地毯式逛逛 Discord Bot 的設定頁面,結果發現是 Server Members Intent 的關係,有些訪問權限沒有打開!原來是一開始最簡單的步驟,完全沒有自己去瞭解頁面,只靠 ChatGPT 指示我的方式去做,所以漏掉了一些它不知道的權限。
  6. 最終成功誕生了我們的「書馬克先生」,再用 Midjourney,Blend 了兩張圖片(收藏星星&機器人頭像)為它製作了一個符合形象的頭像,看起來直接人模人樣,質感 UPUP 😆

※ 關於此收藏機器人的程式碼(bot.py),放在文末


🥹 DSM 7.2 更新後 Docker 無法使用,改用 Container Manager 部署機器人

機器人上線一天後,發現免費版本的 Glitch 會因為程式碼一段時間沒運行就自動下線,所以當我們伺服器半夜都沒人使用 :bookmark: 功能的時候,我隔天早上起床還要到 Glitch 重啟這個程式,實在太麻煩。

所以我後來把整個程式碼部署在我家的 Synology NAS DS1522+ 的 Docker 上,就可以完全不用動它,大成功 🥳。

然而…喜悅總是短暫。在 5/31 時,我將 NAS 的作業系統 DSM 更新到 7.2,原有的 Docker 已被淘汰無法使用,必須轉移到新的 Container Manager,於是我們的書馬克先生直接離線掰掰,我又開始了跟 ChatGPT 來一段機器人修復之旅。

CleanShot 2023 06 08 at 18.08.32@2x

因為 ChatGPT 的資料只有到 2021,而 Container Manager 是 Synology NAS 2023.05 才推出的新工具,GPT 完全不知道這是啥東西,所以讓我這個程式小白搞超久頭超痛,讓我直接下結論:

  1. 原本在 Docker 裡的項目,會直接轉成 Container Manager 裡面的「容器」,雖然顯示「運行正常」但機器人會處於離線狀態。
  2. 因為網路上基本上查不到 Container Manager 的應用教學,所以即便使用 GPT-4 的 Web Browse Plugins ChatGPT 還是會一直繞圈圈告訴你用 Docker,但 DSM 7.2 無法使用 Docker,我後來在這上面搞了 4 個多小時才弄懂問題出在哪。
  3. 我們不能用它預設的容器,可以直接刪掉,重新建一個「專案」,映像檔選 python:latest,接著我們需要寫一個 yaml 檔案告訴這個專案的存放路徑,以及要執行的命令。這樣一來,容器會隨著你成功建立專案而產生,並開始運行整個程式碼。
  4. 其實長期來看用 yaml 來維護整個程式碼是更好的,更簡單明瞭,而且 Home Assistant 也是同邏輯,學一件事兩邊運用。但因為剛改版 ChatGPT 找不到任何有效資料,對於我們這種程式小白真的有夠困擾,但學完就是你的了。

✅ 感謝你看到這邊,以此文記錄著我和 ChatGPT 共同努力奮鬥約 10 個小時的簡要過程。

活用 ChatGPT 讓我們這種非專業人士,也能靠自己寫出自己需求的機器人,我也樂於其中。前陣子也寫了一個 Telegram Bot,能把 Telegram 的訊息一鍵傳到 Readwise。

在這提供給所有需要的朋友,這個 Discord 內容收藏機器人,所需要的兩個檔案(bot.pyrequirements.txt),以及建立在 Synology NAS 的 Docker-compose.yml:點此前往 Notion 文檔


分享按鈕

關於作者

留言回應

訂閱
接收通知
guest
0 留言
最新的留言
最舊的留言 Most Voted
Inline Feedbacks
View all comments

領取高效生產力的秘訣!

Free 免費 NT$ ?????
免費入門課&電子書&精華文章一次帶走
  • 聰明工作者的 6 堂入門課
  • 現代人必備的 25+ 款數位工具
  • 每年複利成長的復盤技巧
……更多你需要的現代人精進指南!