把 Grok Bot 接進 Discord,在 DC 直接下指令(新手保姆級教學,附完整提示詞)
最近我把 Grok Bot 接進了 Discord:打開 DC,私訊一句話,Grok Bot 就開始幫我做事,做完直接回在同一個對話裡。
整個過程其實只有四件事:在 Discord 建一個機器人、把它邀進伺服器、把我整理好的提示詞貼給 Grok Bot、把三樣祕密填進加密輸入框。剩下的,Grok Bot 自己會搞定。
懶得看原理?直接跳到〈七、完整提示詞〉,複製貼上就能開工。
一、原理:訊息是怎麼跑的?
一句話說完:Discord ⇄ 橋接程式 ⇄ Grok Bot 的 routine。
- 收訊息:橋接程式
relay.py(用 discord.py 寫的)跑在 Grok Bot 自己的電腦上,透過 Discord Gateway 的 WebSocket 主動往外連,所以不需要開任何公網埠、不用架伺服器。 - 轉給 Grok Bot:收到你的訊息後,橋接程式把
{text, channel_id, message_id, author_id}用 JSON POST 到 routine 的 Webhook URL,標頭帶Authorization: Bearer <key>。成功就在你的訊息上按 👀,失敗按 ⚠️。 - 回覆:routine 被觸發後由 Grok Bot 處理你的要求,做完執行
reply.py <channel_id>,用機器人 Token 透過 Discord REST 回到原頻道(超過 2000 字自動分段,並關閉 @ 提及,不會亂 tag 人)。 - 留底:同時在 Grok Bot 的主聊天裡貼一行摘要,回頭查也方便。
另外有一把「鎖」:第一個私訊或 @ 機器人的人會被記成唯一主人(存在 config.json 的 allowed_user_id),其他人講什麼都不理。所以建好之後,請你自己第一個去私訊它。
二、在 Discord 建機器人
這一步在幹嘛:在 Discord 申請一個機器人帳號,拿到它的「鑰匙」(Bot Token)。
2.1 建立應用程式
打開 Discord Developer Portal,按右上角「新應用程式」,取個名字(例如:你的機器人),勾選同意條款後按「建立」。
2.2 打開「訊息內容意圖」並取得 Token
左側選「機器人」:
- 往下找到 Privileged Gateway Intents,把「訊息內容意圖」(Message Content Intent)打開,按「儲存變更」。沒開的話,機器人收得到訊息卻讀不到內容。
- 回到上方 TOKEN 區,按「重設 Token」,複製出現的 Token。它只會顯示一次,先暫存在安全的地方(等一下要填進 Grok Bot 的加密框,不要貼在聊天裡)。
三、邀請機器人進你的伺服器
這一步在幹嘛:產生一條邀請連結,決定機器人能做哪些事。
左側選「OAuth2」,找到「OAuth2 URL 產生器」。
3.1 範圍(Scopes):只勾 bot
3.2 機器人權限:照這張清單勾
| 分類 | 中文介面名稱 | 英文名稱 | 用途 |
|---|---|---|---|
| 一般權限 | ☑ 檢視頻道 | View Channels | 看得到頻道 |
| 文字權限 | ☑ 傳送訊息 | Send Messages | 回覆你 |
| 文字權限 | ☑ 在討論串中傳送訊息 | Send Messages in Threads | 在討論串裡回覆 |
| 文字權限 | ☑ 嵌入連結 | Embed Links | 連結預覽 |
| 文字權限 | ☑ 附加檔案 | Attach Files | 傳檔案給你 |
| 文字權限 | ☑ 讀取訊息歷史記錄 | Read Message History | 讀得到上下文 |
| 文字權限 | ☑ 新增反應 | Add Reactions | 按 👀 / ⚠️ 回條 |
⛔ 不要勾「管理者」(Administrator),也不要勾管理伺服器、管理頻道、管理身分組、踢出/停權成員這類管理權限。這個機器人只需要「看、說、按反應」,權限越小,萬一 Token 外洩損失越小。
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_ 開頭)。
接著 Grok Bot 會跳出加密輸入框,把三樣東西分別貼進去:
DISCORD_BOT_TOKEN:第二步拿到的 Token(YOUR_BOT_TOKEN)DISCORD_ROUTINE_WEBHOOK_URL:剛剛複製的 Webhook URLDISCORD_ROUTINE_WEBHOOK_KEY:剛剛複製的 key(crsr_xxx)
按提交,介面會顯示已安全保存。全程不要把這三樣貼在聊天訊息裡。
五、讓 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(免 @ 的專用頻道) |
完成後,伺服器裡的機器人會變成「上線」綠燈。
六、第一次測試
- 先由你本人私訊機器人(在伺服器成員列表點它 → 傳訊息)。這一句會把你鎖定為唯一主人。
- 隨便說一句,例如「你好,你是 Grok Bot 嗎?」
- 看到訊息上出現 👀,代表已送進 Grok Bot;稍等一下就會收到回覆。
- 打開 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。