내 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) } });
권한 있는 의도가 봇에 미치는 영향
권한 있는 의도를 활성화하지 않으면 다음 문제가 발생할 수 있습니다.
- GuildMember 이벤트( 예: guildMemberAdd)는 내보내지지 않습니다.
- 회원 사용자 캐시는 비어 있거나 매우 적은 수의 구성원을 포함합니다.
- GuildMemberManager.fetch() 및 UserManager.fetch()와 같은 기능은 시간 초과됩니다.
- 현재 상태 데이터를 사용할 수 없습니다.
문제 해결 팁
권한을 활성화한 후에도 여전히 문제가 발생하는 경우 인텐트를 사용하려면 다음을 시도해 보세요.
- 봇이 Discord에서 승인되었는지 확인하세요.
- 코드가 최신 버전의 Discord.js(v12)를 사용하고 있는지 확인하세요.
- 의도 구성이 올바른지 다시 확인하세요.
- 봇을 다시 시작하여 연결을 새로 고치세요. Discord.
리소스
- [Discord.js 공식 가이드 - 게이트웨이 인텐트](https://discord.js.org/#/docs/main/v12/ 클래스/인텐트)
- [Discord 개발자 문서 - 게이트웨이 인텐트](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [게이트웨이 업데이트 FAQ](https://support.discord.com/hc/en-us/articles/4405026734147-Discord-Gateway-Intent-Framework-Announcement-FAQ)
위 내용은 내 Discord.js GuildMember 이벤트가 실행되지 않는 이유는 무엇이며 빈 사용자 캐시 및 시간 초과를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!