#discord #discord.js
#Discord #discord.js
Вопрос:
Я пытаюсь создать голосовой канал, который отображает количество участников на моем сервере, однако, похоже, я не могу получить идентификатор канала, чтобы изменить его. У меня есть этот код в guildMemberAdd
событии:
bot.on('guildMemberAdd', member => {
const channel = member.guild.channels.cache.find(ch => ch.name === 'factions');
channel.send(`Welcome to the server, <@${member.id}>! Make sure to check out <#757221255198802051> and <#757221255198802051>!`);
const serverCount = (bot.guilds.cache.get(member.guild.id).memberCount);
member.guild.channels.find(ch => ch.name === "Server Count:").setName(`Server Count: ${serverCount}`);
});
Все это работает отдельно от последней строки, потому member.guild.channels.find is not a function
что . Я знаю, что мне нужно сделать channel.setName
, но я не уверен, как заставить канал задать имя из member
объекта, который передается в guildMemberAdd
событие.
Комментарии:
1. Не забудьте использовать
cache
свойство.member.guild.channels.cache.find()
. Кроме того, если в названии канала отображается количество пользователей на сервере, оно никогда не будет отображатьсяServer Count:
. Я бы сказал, что использованиеstartsWith()
функции лучше, чем===
Ответ №1:
Вы забыли 2 вещи cache
и startsWith()
функцию. Чтобы исправить вашу проблему:
bot.on('guildMemberAdd', member => {
const channel = member.guild.channels.cache.find(ch => ch.name === 'factions');
channel.send(`Welcome to the server, <@${member.id}>! Make sure to check out <#757221255198802051> and <#757221255198802051>!`);
const serverCount = member.guild.memberCount;
member.guild.channels.cache.find(ch => ch.name.startsWith("Server Count: ")).setName(`Server Count: ${serverCount}`);
});