#javascript #node.js #discord.js
Вопрос:
У меня на сервере discord 10 человек и 3 пользователя, но мой бот показывает только 2 общих участника, 1 человека и 1 бота. Может ли кто-нибудь помочь мне исправить это так, чтобы оно показывало все количество участников на сервере? Это и есть код —
Весь —
.addField('Total Members', `${interaction.guild.members.cache.size}`, true)
Люди —
.addField('Human Users', `${interaction.guild.members.cache.filter(members => !members.user.bot).size}`, true)
Боты —
.addField('Bots', `${interaction.guild.members.cache.filter(members => members.user.bot).size}`, true)
Комментарии:
1. Не уверен, что в этом проблема, но попробуйте в настройках клиента заменить ее на
const client = new Client({intents : ['GUILD_PRESENCES','GUILD_MEMBERS']})
2. Попробуйте сначала собрать членов гильдии, прежде чем использовать
filter
функцию
Ответ №1:
Существует несколько способов решения этой проблемы
#1: У вас есть намерения?
const client = new Discord.Client({ intents: ['GUILDS', 'GUILD_MEMBERS'] })
#2: Вы пробовали собрать всех членов гильдии перед показом? Discord.js использует что-то под названием «кэш», где пакет хранит что-то в своей базе данных, и вы можете делать с ним все, что захотите, позже, не делая новый запрос API для разногласий каждый раз, когда вы хотите что-то сделать (например, получить имя канала). Discord.js пытается кэшировать все, что может, пока может. Если их нет в вашем кэше, вы можете извлечь их и добавить в кэш вручную.
Смотрите GuildMemberManager#выборка