把 Grok Bot 接進 Discord,在 DC 直接下指令(新手保姆級教學,附完整提示詞)

最近我把 Grok Bot 接進了 Discord:打開 DC,私訊一句話,Grok Bot 就開始幫我做事,做完直接回在同一個對話裡。

整個過程其實只有四件事:在 Discord 建一個機器人、把它邀進伺服器、把我整理好的提示詞貼給 Grok Bot、把三樣祕密填進加密輸入框。剩下的,Grok Bot 自己會搞定。

懶得看原理?直接跳到〈七、完整提示詞〉,複製貼上就能開工。


一、原理:訊息是怎麼跑的?

訊息流向圖

一句話說完:Discord ⇄ 橋接程式 ⇄ Grok Bot 的 routine。

  1. 收訊息:橋接程式 relay.py(用 discord.py 寫的)跑在 Grok Bot 自己的電腦上,透過 Discord Gateway 的 WebSocket 主動往外連,所以不需要開任何公網埠、不用架伺服器。
  2. 轉給 Grok Bot:收到你的訊息後,橋接程式把 {text, channel_id, message_id, author_id} 用 JSON POST 到 routine 的 Webhook URL,標頭帶 Authorization: Bearer <key>。成功就在你的訊息上按 👀,失敗按 ⚠️。
  3. 回覆:routine 被觸發後由 Grok Bot 處理你的要求,做完執行 reply.py <channel_id>,用機器人 Token 透過 Discord REST 回到原頻道(超過 2000 字自動分段,並關閉 @ 提及,不會亂 tag 人)。
  4. 留底:同時在 Grok Bot 的主聊天裡貼一行摘要,回頭查也方便。

另外有一把「鎖」:第一個私訊或 @ 機器人的人會被記成唯一主人(存在 config.json 的 allowed_user_id),其他人講什麼都不理。所以建好之後,請你自己第一個去私訊它。


二、在 Discord 建機器人

這一步在幹嘛:在 Discord 申請一個機器人帳號,拿到它的「鑰匙」(Bot Token)。

2.1 建立應用程式

打開 Discord Developer Portal,按右上角「新應用程式」,取個名字(例如:你的機器人),勾選同意條款後按「建立」。

建立應用程式

2.2 打開「訊息內容意圖」並取得 Token

左側選「機器人」:

機器人頁面:訊息內容意圖與重設 Token


三、邀請機器人進你的伺服器

這一步在幹嘛:產生一條邀請連結,決定機器人能做哪些事。

左側選「OAuth2」,找到「OAuth2 URL 產生器」。

3.1 範圍(Scopes):只勾 bot

Scopes 只勾 bot

3.2 機器人權限:照這張清單勾

分類 中文介面名稱 英文名稱 用途
一般權限 ☑ 檢視頻道 View Channels 看得到頻道
文字權限 ☑ 傳送訊息 Send Messages 回覆你
文字權限 ☑ 在討論串中傳送訊息 Send Messages in Threads 在討論串裡回覆
文字權限 ☑ 嵌入連結 Embed Links 連結預覽
文字權限 ☑ 附加檔案 Attach Files 傳檔案給你
文字權限 ☑ 讀取訊息歷史記錄 Read Message History 讀得到上下文
文字權限 ☑ 新增反應 Add Reactions 按 👀 / ⚠️ 回條

⛔ 不要勾「管理者」(Administrator),也不要勾管理伺服器、管理頻道、管理身分組、踢出/停權成員這類管理權限。這個機器人只需要「看、說、按反應」,權限越小,萬一 Token 外洩損失越小。

權限清單與產生 URL

3.3 授權

拉到最下面,複製「產生 URL」,用瀏覽器打開 → 選擇你的伺服器 → 按「授權」。機器人就會出現在伺服器的成員列表裡(這時它還是離線的,正常)。


四、讓 Grok Bot 建「Discord 下旨入口」

這一步在幹嘛:在 Grok Bot 裡開一個專門接 Discord 訊息的入口(webhook 觸發的 routine),等於給 Discord 一個「門牌地址」和「門鑰」。

把〈七、完整提示詞〉整段貼給你的主 Bot 後,它會先建好一個名叫「Discord 下旨入口」的 routine。Webhook URL 和 key 是建立時自動產生的,你要做的是:

點開 Bot 的側邊欄 → Routines 面板 → 找到「Discord 下旨入口」,分別複製 Webhook URL(長得像 https://.../automations/webhook/<id>)和 key(crsr_ 開頭)。

Routine 面板

接著 Grok Bot 會跳出加密輸入框,把三樣東西分別貼進去:

加密輸入框

按提交,介面會顯示已安全保存。全程不要把這三樣貼在聊天訊息裡。


五、讓 Grok Bot 寫橋接程式

這一步在幹嘛:在 Grok Bot 自己的電腦上,寫一支 24 小時掛著的小程式負責傳話。

這一步完全不用你動手,提示詞裡都寫好了。Grok Bot 會產出:

檔案 作用
relay.py 用 discord.py 連 Gateway,過濾訊息(主人鎖、要不要 @)、POST 到 webhook、按 👀 / ⚠️
reply.py python reply.py <channel_id>,從標準輸入讀回覆,2000 字分段、關閉提及後發回 Discord
start.sh 在背景(重新)啟動 relay,寫 log、記 pid;可重複執行
config.json allowed_user_id(主人)與 channel_ids(免 @ 的專用頻道)

完成後,伺服器裡的機器人會變成「上線」綠燈。


六、第一次測試

  1. 先由你本人私訊機器人(在伺服器成員列表點它 → 傳訊息)。這一句會把你鎖定為唯一主人。
  2. 隨便說一句,例如「你好,你是 Grok Bot 嗎?」
  3. 看到訊息上出現 👀,代表已送進 Grok Bot;稍等一下就會收到回覆。
  4. 打開 Grok Bot 主聊天,會看到一行這次對話的摘要。

第一次測試

如果出現的是 ⚠️:通常是 Webhook URL 或 key 填錯,回到 Routines 面板重新複製,再請 Grok Bot 跳加密框重填並重啟。


七、完整提示詞(整段複製,原樣發給 Grok Bot)

打開 Grok Bot,找到你的主 Bot,把下面整段貼過去:

—— 提示詞開始 ——
我想把你接到我的 Discord,讓我在 Discord 私訊或 @ 機器人就能直接給你下指令、並在同一個地方收到回覆。請照下面步驟做,每完成一步告訴我結果,需要我操作的地方停下來等我。

1、架構:在你自己的電腦上用 Python + discord.py 寫一個橋接程式,透過 Discord Gateway WebSocket 主動往外連來收訊息。只走出站連線,不要開任何公網埠。

2、建入口:在 Grok Bot 裡建一個由 webhook 觸發的 routine,名字叫「Discord 下旨入口」。這個 routine 的工作是:讀取收到的 JSON(text、channel_id、message_id、author_id),把 text 當成我的指令去執行;做完後執行 `reply.py <channel_id>` 把回覆發回 Discord,並在我們的主聊天裡貼一行摘要。建好後提醒我去側邊欄的 Routines 面板複製 Webhook URL 和 key(crsr_ 開頭)。

3、收祕密:用加密輸入框跟我要三樣東西:DISCORD_BOT_TOKEN、DISCORD_ROUTINE_WEBHOOK_URL、DISCORD_ROUTINE_WEBHOOK_KEY。不要讓我在聊天裡貼明文,也不要把它們印在 log 或回覆裡。程式一律從環境變數讀取。

4、relay.py:
- 開啟 message_content intent;如果沒開,log 提醒我去 Developer Portal → 機器人 → 打開「訊息內容意圖」。
- 私訊不需要 @;在伺服器裡必須 @ 機器人才處理,除非頻道 ID 在 config.json 的 channel_ids 裡。
- 單一主人鎖:config.json 的 allowed_user_id 為空時,第一個私訊或 @ 機器人的人就成為主人並寫回 config.json;之後其他人的訊息一律忽略。
- 去掉訊息裡的 @機器人 標記,附件附上網址,然後 POST {text, channel_id, message_id, author_id} 到 Webhook URL,標頭帶 Authorization: Bearer <key>。
- HTTP 200 就在原訊息按 👀,失敗按 ⚠️。

5、reply.py:用法 `reply.py <channel_id>`,從標準輸入讀回覆內容,用機器人 Token 透過 Discord REST 發送;超過 2000 字自動分段(盡量在換行處切),allowed_mentions 設為不提及任何人。

6、start.sh:在背景(重新)啟動 relay.py,寫 log、記 pid,可以重複執行;環境變數在啟動時讀取,所以改了祕密要重跑 start.sh。另外做一個 stop.sh。

7、完成後先用 --check 確認能登入,再正式啟動,然後提醒我:「請你本人先私訊機器人一句話,完成主人綁定。」

8、最後告訴我:電腦重開機後 relay 不會自己起來,要叫你執行 start.sh;想換主人要清空 allowed_user_id;Token 外洩要去 Developer Portal 重設 Token 再用加密框重填。
—— 提示詞結束 ——

發完,Grok Bot 就會自己建 routine、寫程式、跳加密框。你只要在它停下來的時候,照第二~四步把東西給它。


八、常見問題

Q1:每次都要 @ 機器人嗎? 私訊不用。在伺服器頻道裡要 @ 它,否則它不會理(避免群組聊天被誤觸)。如果想開一個「專用頻道」免 @,跟 Grok Bot 說「把這個頻道加進 channel_ids」,並給它頻道 ID(Discord 設定 → 進階 → 開發者模式,然後在頻道上按右鍵「複製頻道 ID」)。

Q2:Grok Bot 的電腦重開機後,DC 沒反應了? 橋接程式不會自動重啟。跟 Grok Bot 說一句「幫我執行 Discord 橋接的 start.sh」就好。環境變數是在啟動時讀的,所以換了 Token 或 key 之後也要重跑一次。

Q3:想換主人(例如被別人先搶了)怎麼辦? 請 Grok Bot 把 config.json 的 allowed_user_id 清空並重啟 relay,然後由新主人第一個私訊機器人。

Q4:Token 不小心外洩了怎麼辦? 馬上到 Developer Portal → 機器人 → 按「重設 Token」,舊的立刻失效。再請 Grok Bot 跳加密輸入框,把新 Token 填進去並重跑 start.sh。(Webhook key 外洩也是同理:到 Routines 面板重新產生,再重填。)

Q5:出現 ⚠️ 或完全沒反應? - 有 ⚠️:Webhook URL / key 錯了或過期,重新複製重填。 - 沒任何反應:確認是不是你本人(主人)、伺服器裡有沒有 @、機器人是否在線、「訊息內容意圖」有沒有打開。


總結

你親手要做的只有:建機器人、勾權限邀進伺服器、貼一段提示詞、把三樣祕密填進加密框、自己先私訊一句。剩下的,交給 Grok Bot。