Discord.js の GuildMember イベントが何も発生せず、ユーザー キャッシュが基本的に空で、関数がタイムアウトになります
多くの Discord.js ユーザーが最近遭遇した問題ギルドやユーザーに関連する特定のイベントや機能が停止または遅延する問題。これは、Discord が 特権インテント と呼ばれる新機能を実装したためです。これにより、明示的に有効にしない限り、ボットの特定の機能が制限されます。
特権インテントとは?
特権インテントDiscord がボットが使用することを宣言する必要がある機密データまたは機能です。 2 つの特権インテントは次のとおりです:
-
GUILD_PRESENCES: ギルド メンバーのプレゼンス データへのアクセス
-
GUILD_MEMBERS: ギルド メンバーとそのメンバーへのアクセスデータ
有効にする方法特権インテント
特権インテントを有効にするには、Discord 開発者ポータルで手動でチェックする必要があります:
- Discord 開発者ポータルに移動してサインインします。
- クリック[アプリケーション] でボットを選択します。
- [ボット] タブに移動します
- 「特権ゲートウェイ インテント」セクションまで下にスクロールします。
- 使用する特権インテントのボックスをオンにします。
特権インテントを有効にしたら、Discord.js ボットでも特権インテントを有効にする必要がありますコード:
const client = new Discord.Client({ ws: { intents: new Discord.Intents(Discord.Intents.ALL) } });
ログイン後にコピー
特権インテントがボットに与える影響
特権インテントを有効にしない場合、次の問題が発生する可能性があります:
- GuildMember events (例: 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)
- [ゲートウェイの更新] FAQ](https://support.discord.com/hc/en-us/articles/4405026734147-Discord-Gateway-Intent-Framework-payment-FAQ)
以上がDiscord.js の GuildMember イベントが発生しないのはなぜですか? 空のユーザー キャッシュとタイムアウトを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。