>웹 프론트엔드 >JS 튜토리얼 >Discord Bot의 길드원 이벤트 및 기능이 작동하지 않는 이유는 무엇입니까?

Discord Bot의 길드원 이벤트 및 기능이 작동하지 않는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 09:00:14641검색

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

Discord Gateway Intent Enforcement


문제:


일부 사용자의 경우 특정 길드원 이벤트 및 기능이 갑자기 중단되었습니다. GuildMemberAdd, GuildMemberRemove 및 GuildMemberUpdate 이벤트는 더 이상 실행되지 않으며 사용자 캐시는 정의되지 않거나 제한된 결과를 반환합니다. 또한 GuildMemberManager.fetch()가 시간 초과되었습니다.

원인:


Discord는 최근 특권 인텐트를 시행했습니다. 이전에는 GUILD_PRESENCES 및 GUILD_MEMBERS 인텐트가 선택 사항이었습니다. 그러나 2020년 10월 27일 현재 이러한 인텐트는 기본적으로 비활성화되어 있습니다.

비활성화 권한의 효과 인텐트:

GUILD_PRESENCES:



  • 빈 회원 및 사용자 캐시

  • ;부정확 Guild.memberCount

  • presenceUpdate 이벤트 트리거 실패

  • Null 또는 정의되지 않은 존재 데이터

  • Bot가 모든 길드를 인식함 회원 fetchAllMembers로 인한 오프라인

  • Client.login() 시간 초과 옵션

GUILD_MEMBERS:



  • 빈 회원 및 사용자 캐시< /li>
  • 시간 초과: 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><p>// 배열 사용<br>const client = new Discord.Client({ ws: { 인텐트: ['GUILD_PRESENCES', 'GUILD_MEMBERS'] }});</p><p>// 비트 필드 값 사용<br>const client = new Discord.Client({ ws: {intents: 32509 }));</p><p>// 인텐트 클래스 사용<br>const client = new Discord.Client({ ws: { 인텐트: Discord.Intents.PRIVILEGED }});<br>const client = new Discord.Client({ ws: { 인텐트 : 새로운 Discord.Intents(Discord.Intents.ALL) }});<br>

자원:


필요한 인텐트를 활성화하려면 discord.js v12로 업그레이드해야 할 수도 있습니다.

위 내용은 Discord Bot의 길드원 이벤트 및 기능이 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.