discord.js ギルドメンバー イベントがどれも発生せず、ユーザー キャッシュは基本的に空で、関数がタイムアウトしています
次の問題を経験したことがありますか?
- guildMemberAdd、guildMemberRemove、および guildMemberUpdate イベントが突然機能しなくなりました
- GuildMemberManager のキャッシュが空か空に近い
- GuildMemberManager.fetch() および UserManager.fetch() メソッドがタイムアウトしました
- 次の場合、client.login() がタイムアウトします。 fetchAllMembers オプションを指定している
- ギルドメンバーがオフラインになっているようです
これらの問題のいずれかが発生している場合、残念ながら、お客様側でできることはあまりありません。最近、Discord は特権インテントを強制しました。これにより、上記の問題が発生する可能性があります。
gt;特権インテントとは何ですか?
特権インテント手動で有効にする必要がある機密データです。 2020 年 10 月 27 日の時点で、これらのインテントはデフォルトでオフになっています.
特権インテントには以下が含まれます:
- GUILD_PRESENCES: このインテントボットがプレゼンスにアクセスできるようにしますdata.
- GUILD_MEMBERS: このインテントにより、ボットはメンバー データにアクセスできます。
特権インテントを有効にする方法
-
Discord に移動開発者ポータル: [https://discord.com/developers/applications](https://discord.com/developers/applications)
- アプリケーションを選択してください
- 「ボット」をクリックしますタブ
- 「Privileged Gateway Intents」セクションまで下にスクロールします
- 「Server Members」および/または「Server Presence」インテントを有効にします
- 「保存」をクリック変更点"
ボットが検証されていない場合は、特権インテントへのアクセスをリクエストするためにサポート チケットを Discord に送信する必要があります。
Discord.js 実装
で特権インテントを有効にすると、 Discord 開発者ポータルでは、Discord.js ボットでこれらを有効にする必要があります。
これを行うには、ボットのコンストラクターに次のコードを追加します。
const client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
});
ログイン後にコピー
これにより、GUILD_MEMBERS が有効になります。ボットの GUILD_PRESENCES インテント。
特権を有効にすることもできます。 ws オプションを使用したインテント:
const client = new Discord.Client({
ws: {
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
}
});
ログイン後にコピー
特権インテントを有効にしても問題が解決しない場合は、次のリソースを参照してください:
- [Discord 開発者ポータル - ゲートウェイ インテント](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [Discord.js 公式ガイド - ゲートウェイインテント](https://discordjs.guide/gateway/intents.html)
- [ゲートウェイ更新 FAQ](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [Discord API Github - 問題 1363 - 特権付きインテント](https://github.com/discord/discord-api-docs/issues/1363)
- [Discord ブログ - Discord におけるボットの未来](https://blog.discord.com /the-future-of-bots-on-discord-3d25af28f58e)
以上がDiscord.js ギルド メンバー イベントが起動しないのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。