v0.5.0

Discord 設定

最後更新


本頁說明如何建立 core/discord bot、它要求的 gateway intents,以及 handler 收到的 Input。

建構子


  1. bot, err := discord.New(token)

token 為空時 New 回 token is required。它以 Bot <token> 建立 discordgo.Session、註冊訊息與 interaction handler,不會連線。沒有任何選項。

Gateway intents


Intent要求原因
IntentGuilds讓 gateway 推送 GUILD_CREATE,填滿 discordgo 的 state cache;缺少時 Input.ChannelName 永遠是 ""
IntentsGuildMessages伺服器頻道內的訊息
IntentDirectMessages傳給 bot 的私訊
IntentMessageContent訊息文字與附件

IntentMessageContent 屬於 privileged intent。請在 Discord Developer Portal 的 Bot 設定開啟 Message Content Intent;否則多數訊息的 Input.Text 會是空的(Discord 只對私訊與提及 bot 的訊息附上內容)。

Start


Start(ctx) 先以 REST User("@me") 驗證 token,再以 Session.Open() 連上 WebSocket。token 錯誤會在第一步失敗,不會留下已開啟的連線。bot 自己送出的訊息會依 discordgo 的 session state 過濾,不會進到 handler。

Input


欄位型別內容
ChannelIDstring訊息或 prompt 所在 channel
ChannelNamestring從 state cache 讀取,不額外發 request;私訊或 cache 未命中為 ""
GuildIDstring伺服器 ID;私訊為 ""
MessageIDstring使用者的訊息;modal 與 select 答案時為 prompt 訊息
UserID / Usernamestring傳送者;interaction 時取自 guild member,私訊時取自 user
Textstring訊息內容、modal 答案或單選結果
Attachments[]*discordgo.MessageAttachment所有上傳檔案(圖片、檔案、音訊);以 ContentType 區分
CallbackPicks[]stringSendMultiSelect 選單中選取的值
Raw*discordgo.MessageCreate一般訊息的 SDK 事件;interaction 答案時為 nil

所有 ID 都是 Discord snowflake 字串。

相關頁面


EN