我的Discord.js GuildMember 事件都沒有發出,我的用戶緩存基本上為空,並且我的函數超時
許多Discord.js 用戶最近遇到過與公會和使用者相關的某些活動和功能已停止工作或延遲的問題。這是因為 Discord 實現了一項名為 特權意圖 的新功能,該功能限制機器人的某些功能,除非明確啟用它們。
什麼是特權意圖?
特權意圖是 Discord 要求機器人聲明他們將使用的敏感資料或功能。這兩個特權意圖是:
-
GUILD_PRESENCES: 訪問公會成員的狀態數據
-
GUILD_MEMBERS:訪問公會成員及其成員資料
如何啟用特權意圖
要啟用特權意圖,您必須在Discord 開發者入口網站中手動檢查它們:
- 前往Discord 開發者入口網站並登入。
- 點擊在「應用程式」上並選擇您的機器人。
- 前往「應用程式」上的「機器人」標籤
- 向下捲動至「特權閘道意圖」部分。
- 選取您要使用的特權意圖的複選框。
一次您已啟用特權意圖,您還需要在Discord.js 機器人中啟用它們代碼:
const client = new Discord.Client({ ws: { intents: new Discord.Intents(Discord.Intents.ALL) } });
登入後複製
特權意圖如何影響您的機器人
如果您不啟用特權意圖,您可能會遇到以下問題:
- 公會成員事件(例如,guildMemberAdd) 將不會發出。
- 成員和使用者快取將為空或包含很少的成員。
- GuildMemberManager.fetch() 和 UserManager.fetch() 等函數將會逾時。
- 狀態資料將無法使用。
故障排除提示
如果您在啟用特權意圖後仍然遇到問題,請嘗試以下操作:
- 確保您的機器人已獲得Discord 批准。
- 檢查您的程式碼使用最新版本的 Discord.js (v12 )。
- 仔細檢查您意圖的正確性配置。
- 重新啟動您的機器人以刷新與 Discord 的連接。
資源
- [Discord.js 官方指南- 網關意圖](https://discord.js.org/#/docs/main/v12/class/ Intents)
- [Discord 開發人員文件- 閘道意圖](https://discord.com/developers/ docs/topics/gateway#gateway-intents)
- [網關更新常見問題解答](https://support.discord.com/hc/en-us/articles/4405026734147-Discord-Gateway-Intent- Framework-Announcement-FAQ)
以上是為什麼我的 Discord.js GuildMember 事件沒有觸發,以及如何修復空用戶快取和逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!