Discord 網關意圖:解決事件發送失敗和快取問題
最近,一些Discord 用戶遇到了事件發送和快取方面的困難管理。具體來說,guildMemberAdd、guildMemberRemove 和 guildMemberUpdate 等事件已停止觸發,導致功能無回應。此外,據觀察,用戶快取是空的或極其有限。此外,旨在獲取公會成員的函數一直遇到超時。
這些問題可以歸因於 Discord 最近執行的「特權意圖」。意圖是允許您在 Discord 上訂閱特定資料流的機制。其中兩個意圖,GUILD_MEMBERS 和 GUILD_PRESENCES,由於其敏感性而被視為特權,並且自 2020 年 10 月 27 日起默認被禁用。
特權意圖的影響
停用特權意圖可能會導致各種問題:
- 啟動時成員和使用者快取為空或顯著耗盡
- Guild.memberCount傳回過時的值
- 無法觸發與狀態相關的事件
- 狀態資料回傳null 或未定義
- 公會成員出現離線
- 如果啟用fetchAllMembers,登入期間會發生逾時
- GuildMemberManager.fetch() 和UserManager.fetch() 方法逾時
- 涉及公會成員的事件失敗,例如guildMemberAdd、guildMemberRemove、guildMemberUpdate、guildMemberSpeaking 和guildMembersChunk
>
要解決此問題,您必須透過Discord 開發者入口網站手動啟用特權意圖:
導覽至 Discord 開發者入口網站。 - 選擇您的應用程式。
- 到側邊欄中的「機器人」標籤。
- 向下捲動至「特權網關意圖」部分。
- 選取 GUILD_MEMBERS 和/或 GUILD_PRESENCES 複選框。
- 如果您bot 擁有超過 75 個公會,Discord 需要先對其進行驗證。按照指示請求白名單訪問。
-
啟用後,您將需要在 Discord.js 模組配置中指定所需的意圖。如果您不需要所有意圖,可以選擇性地啟用特定意圖。
資源
Discord.js 官方指南- 網關意圖-
Discord 開發者文件- 網關意圖-
- 網關更新常見問題
- Discord API Github - 問題1363 - 特權意圖
- Discord 部落格 - Discord 上機器人的未來
以上是為什麼我的 Discord 機器人事件失敗並且我的快取為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!