Discord
discord package 以 gateway event、REST 發送、附件保存與原生 Discord interaction 封裝 bwmarrin/discordgo。
啟動與 dispatch
New(token) 設定 guild、guild-message、direct-message 及 message-content intent。Start(ctx) 先用 User("@me") 驗證 token,再開啟 WebSocket。dispatch 會略過 bot 自己的訊息,並同步呼叫 handler。請在 Discord Developer Portal 啟用 Message Content Intent,否則一般訊息沒有文字內容。
發送與保存
| Method | 行為 |
|---|---|
Send / Delete |
發送文字 reply 或刪除訊息 |
SendFiles |
在一則訊息中 streaming 上傳 1–10 個附件 |
SendVoice |
Gemini TTS 的 OGG audio attachment,不是原生 voice bubble |
Save |
UUID 檔名下載,25 MiB 上限 |
原生互動
SendInput 發送 button,點擊後開啟 modal;送出後會以 Input.Text 呼叫 Reply。SendSelect 與 SendMultiSelect 使用 Discord String Select menu。select state 以 UUID 保存並於完成後移除;單選走 Text,多選走 CallbackPicks。
Status
status 以 channel 為單位保存、1 秒 debounce,第一次會在引用訊息加預設 🤔 reaction。FinishStatus 等待進行中的 edit、清 reaction,再刪 status 訊息。