Как задать имя канала из события guildMemberAdd?

#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}`);
});