在介紹intents之前我要先來介紹Gateway,Gateway是Discord用於推送實時事件(Real-time events)的WebSocket接口,簡單來說就Gateway可以看作是Discord服務器和使用者之間傳遞消息的通道。而intents是Gateway事件的類型。
在Discord的Gateway機制中,Intents指的是伺服器管理員可以開啟的事件類型。
當客戶端通過Gateway連接上Discord時,需要指定自己需要開啟哪些類型的事件。這些事件類型就稱為Intents,gateway只有在事件發生後才會觸發。
在看完網路上的資料跟discord給的文檔後我歸類了幾個原因:
底下是discord官網上列出的所有intents標題跟他的解釋
詳細的intents在這https://discord.com/developers/docs/topics/gateway
名字 | 解釋 |
---|---|
GUILDS (1 << 0) | 這個Intent涵蓋了伺服器的創建、更新和刪除,以及討論串(thread)和頻道的創建、更新和刪除。此外,它還包括頻道釘住的消息更新,以及舞台(stage)(註解一)實例的創建、更新和刪除。 |
GUILD_MEMBERS (1 << 1) | 這個Intent涵蓋了伺服器成員的添加、更新和移除。 |
GUILD_MODERATION (1 << 2) | 這個Intent涵蓋了伺服器審核日誌條目的創建,以及伺服器禁止和解禁的操作。 |
GUILD_EMOJIS_AND_STICKERS (1 << 3) | 這個Intent涵蓋了伺服器表情符號和貼圖的更新。 |
GUILD_INTEGRATIONS (1 << 4) | 這個Intent涵蓋了伺服器整合的更新,以及整合的創建、更新和刪除。 |
GUILD_WEBHOOKS (1 << 5) | 這個Intent涵蓋了Webhooks(註解二)的更新。 |
GUILD_INVITES (1 << 6) | 這個Intent涵蓋了邀請的創建和刪除。 |
GUILD_VOICE_STATES (1 << 7) | 這個Intent涵蓋了語音狀態的更新。 |
GUILD_PRESENCES (1 << 8) | 這個Intent涵蓋了在線狀態的更新。 |
GUILD_MESSAGES (1 << 9) | 這個Intent涵蓋了消息的創建、更新和刪除,以及批量刪除消息。 |
GUILD_MESSAGE_REACTIONS (1 << 10) | 這個Intent涵蓋了消息反應的添加、移除,以及移除所有反應和移除特定表情符號的反應。 |
GUILD_MESSAGE_TYPING (1 << 11) | 這個Intent涵蓋了打字狀態的開始。 |
DIRECT_MESSAGES (1 << 12) | 這個Intent涵蓋了直接消息的創建、更新和刪除,以及直接消息中釘住的消息更新。 |
DIRECT_MESSAGE_REACTIONS (1 << 13) | 這個Intent涵蓋了直接消息中的消息反應的添加、移除,以及移除所有反應和移除特定表情符號的反應。 |
DIRECT_MESSAGE_TYPING (1 << 14) | 這個Intent涵蓋了在直接消息中打字狀態的開始。 |
MESSAGE_CONTENT (1 << 15) | 這個Intent涵蓋了消息內容的讀取和更新。 |
GUILD_SCHEDULED_EVENTS (1 << 16) | 這個Intent涵蓋了伺服器預定事件的創建、更新和刪除,以及伺服器預定事件用戶的添加和移除。 |
AUTO_MODERATION_CONFIGURATION (1 << 20) | 這個Intent涵蓋了自動審核規則的創建、更新和刪除。 |
AUTO_MODERATION_EXECUTION (1 << 21) | 這個Intent涵蓋了自動審核行動的執行。 |
註解一:要啟用stage你的伺服器必須啟用社群
註解二:Webhooks是一種允許應用程式提供其他應用程式實時訊息的方法。Webhook在特定事件發生時,會將數據發送到其他應用程式的指定URL。它是一種實現應用程式之間的即時、自動通訊的方式,在discord很常使用到。
舉例來說,假設你有一個天氣預報應用程式,你希望每當天氣預報更新時,都能自動發送一條消息到你的Discord伺服器。你可以設置一個Webhook,當天氣預報更新時,天氣預報應用程式會將相關數據發送到Discord的Webhook URL,然後Discord會在你的伺服器上發布一條包含這些數據的消息。
總的來說,Webhooks提供了一種方式,讓應用程式能夠在不需要頻繁請求情況下獲取實時更新。