это мой код для отображения участников в роли. Но когда я вызываю эту команду для роли, в которой много участников, она возвращает только мое имя. Как я могу это исправить? V12
let role;
if (message.mentions.roles.first() || message.guild.roles.cache.get(args[0])) {
role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]);
if (!role)
return message.reply("I can't find this role!");
} else {
let choosenRole = args.slice(0).join(" ");
if (!choosenRole)
return message.reply("Please type a role name to check.");
role = message.guild.roles.cache.find(r => r.name === choosenRole);
if (!role)
return message.reply("I can't find this role!");
}
let inrole = new Discord.MessageEmbed()
.setColor("#09ba87")
.setAuthor(`${role.name}(${role.members.size})`)
.setDescription(`\n・` + role.members.map(m => m.user.username + "#" + m.user.discriminator).join("\n・"))
let m = await message.channel.send(inrole);
Эй, ваша проблема в том, что из-за недавних изменений шлюза Discord Api кеш Guild
пуст, вам нужно включить намерения, вот исправление для вас -
bot
, если вы прокрутите немного вниз, вы увидите раздел под названием Privileged Gateway Intents
SERVER MEMBERS INTENT
и перезапустите бота, и вы обнаружите, что ваш кеш не ограничен небольшим количеством!Если это все еще не работает, попробуйте получить всех членов гильдии - message.guild.members.fetch()
Узнайте больше о намерениях на Discord.js