首頁 >web前端 >js教程 >為什麼我的 Discord 機器人的公會成員活動和功能不起作用?

為什麼我的 Discord 機器人的公會成員活動和功能不起作用?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-19 09:00:14693瀏覽

Why Are My Discord Bot's Guild Member Events and Functions Not Working?

Discord 網關意圖執行


問題:


對於某些用戶,特定公會成員活動和功能突然停止運作。 GuildMemberAdd、GuildMemberRemove 和 GuildMemberUpdate 事件不再觸發,且使用者快取會傳回未定義或有限的結果。此外,GuildMemberManager.fetch() 逾時。

原因:


Discord 最近強制執行了特權意圖。以前,GUILD_PRESENCES 和 GUILD_MEMBERS 意圖是可選的。但是,截至 2020 年 10 月 27 日,這些意圖已預設為停用。

禁用特權的影響意圖:


GUILD_PRESENCES:



  • 清空會員和使用者快取


  • 觸發狀態更新事件失敗

  • 狀態資料為空或未定義

  • 機器人感知所有公會成員為離線

  • Client.login() 與fetchAllMembers逾時選項

GUILD_MEMBERS:



  • 清空會員和使用者快取
  • 逾時GuildMemberManager.fetch() 和UserManager.fetch()

  • 未能觸發公會成員事件(GuildMemberAdd、GuildMemberRemove、GuildMemberUpdate、GuildMemberSpeaking、 GuildMembersChunk)

解:



  1. 啟用透過Discord Developer 表達的意圖入口網站:

    登入Discord 開發者入口網站並導航到您的機器人頁面。在「Bot」標籤下,向下捲動以啟用 GUILD_MEMBERS 和 GUILD_PRESENCES 意圖。



  2. 透過discord.js 模組啟用意圖:

    使用Discord.js v12 建立Discord 用戶端時,在ClientOptions的ws 屬性中指定特權意圖。以下是一些範例:


    // 使用字串<br>const client = new Discord.Client({ ws: {intents: 'GUILD_PRESENCES' }});<p> // 使用陣列<br>const client = new Discord.Client({ ws: {intents: ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});</p><p>// 使用位域值<br>const client = new Discord.Client({ ws: {intents: 32509 }));</p><p>// 使用Intents 類別<br>const client = new Discord.Client({ ws: {intents: Discord.Intents.PRIVILEGED }});<br>const client = new Discord.Client({ ws: {intents : 新的Discord.Intents(Discord.Intents.ALL) }});<br></p>

資源:


請注意,可能需要升級到 Discord.js v12 才能啟用必要的意圖。

以上是為什麼我的 Discord 機器人的公會成員活動和功能不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn