Моя команда «Информация о сервере» показывает 1 человека и 1 бота, у меня 10 ботов и 3 пользователя

#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#выборка