Tiada peristiwa ahli persatuan discord.js saya dipancarkan, cache pengguna saya pada asasnya kosong dan fungsi saya tamat masa
Adakah anda pernah mengalami mana-mana isu ini:
- Isu anda acara guildMemberAdd, guildMemberRemove dan guildMemberUpdate tiba-tiba berhenti berfungsi
- Cache GuildMemberManager anda kosong atau hampir dengannya
- Kaedah GuildMemberManager.fetch() dan UserManager.fetch() anda telah tamat
- Klien anda.login() tamat masa jika anda menentukan pilihan fetchAllMembers
- Ahli Persatuan anda nampaknya berada di luar talian
Sekiranya anda mengalami mana-mana isu ini, malangnya, tiada perkara besar yang boleh anda lakukan. Baru-baru ini, Discord telah menguatkuasakan niat istimewa, yang mungkin menyebabkan masalah yang disenaraikan di atas.
Apakah niat istimewa itu?
Niat istimewa adalah data sensitif yang memerlukan pendayaan manual. Mulai 27 Oktober 2020, niat ini dimatikan secara lalai.
Niat istimewa termasuk:
-
GUILD_PRESENCES: Niat ini membenarkan bot anda mengakses kehadiran data.
-
GUILD_MEMBERS: Niat ini membenarkan bot anda mengakses data ahli.
Cara untuk mendayakan niat istimewa
-
Pergi ke Pembangun Discord Portal: [https://discord.com/developers/applications](https://discord.com/developers/applications)
- Pilih aplikasi anda
- Klik pada tab "Bot"
- Tatal ke bawah ke Bahagian "Niat Gerbang Istimewa"
- Dayakan niat "Ahli Pelayan" dan/atau "Kehadiran Pelayan"
- Klik "Simpan Perubahan"
Jika bot anda tidak disahkan, anda perlu untuk menyerahkan tiket sokongan kepada Discord untuk meminta akses kepada niat istimewa.
Pelaksanaan Discord.js
Setelah anda mendayakan niat istimewa dalam Pembangun Discord Portal, anda perlu mendayakannya dalam bot Discord.js anda.
Untuk melakukan ini, tambahkan kod berikut pada pembina bot anda:
const client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
});
Salin selepas log masuk
Ini akan membolehkan niat GUILD_MEMBERS dan GUILD_PRESENCES untuk bot anda.
Anda juga boleh mendayakan niat istimewa menggunakan pilihan ws:
const client = new Discord.Client({
ws: {
intents: [
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_PRESENCES
]
}
});
Salin selepas log masuk
Jika anda masih mengalami masalah selepas mendayakan niat istimewa, sila rujuk sumber berikut:
- [Portal Pembangun Discord - Niat Gateway](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [Panduan Rasmi Discord.js - Niat Gateway ](https://discordjs.guide/gateway/intents.html)
- [Kemas Kini Gerbang Soalan Lazim](https://discord.com/developers/docs/topics/gateway#gateway-intents)
- [Discord API Github - Issue 1363 - Privileged Intents](https://github.com/discord /discord-api-docs/issues/1363)
- [Blog Discord - Masa Depan Bot pada Discord](https://blog.discord.com/the-future-of-bots-on-discord-3d25af28f58e)
Atas ialah kandungan terperinci Mengapa Acara Ahli Guild Discord.js Saya Tidak Ditembak, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!