Как мой Discord.js Бот приветствует новых людей на сервере?

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Я пытаюсь сделать так, чтобы бот автоматически приветствовал новых участников на нескольких серверах, это код, который у меня есть в настоящее время, и он не выдает ошибку, но он не работает

 client.on("guildMemberAdd", (member) => {
    const guild = member.guild;
    if (!newUsers[guild.id]) newUsers[guild.id] = new Discord.Collection();
    newUsers[guild.id].set(member.id, member.user);
  
    if (newUsers[guild.id].size > 10) {
      const userlist = newUsers[guild.id].map(u => u.toString()).join(" ");
      guild.channels.find(channel => channel.name === "general").send("Welcome our new users!n"   userlist);
      newUsers[guild.id].clear();
    }
  });
  
  client.on("guildMemberRemove", (member) => {
    const guild = member.guild;
    if (newUsers[guild.id].has(member.id)) newUsers.delete(member.id);
  });```
  

Комментарии:

1. В чем ошибка?

2. @Jakye это не выдает ошибку, оно просто не отправляет

Ответ №1:

Ваша проблема заключается в вашей третьей строке кода. Здесь вы создаете новую коллекцию каждый раз, когда кто-то присоединяется. Это означает, что коллекция никогда не может быть > 10 , потому что она всегда 1 .

Чтобы исправить это, просто создайте коллекцию в верхней части вашего индексного файла, а не внутри прослушивателя.

В примечании я предполагаю, что вы хотите создать коллекцию, чтобы отслеживать, кто находится на вашем сервере discord. Это не очень хорошая идея, потому что он будет создаваться заново каждый раз, когда бот перезапускается, и поскольку он обновляется только тогда, когда кто-то присоединяется или покидает его, это будет неточно. Коллекция намного проще в использовании guild.members .

РЕДАКТИРОВАТЬ: вот как вы могли бы сделать что-то подобное

 client.on('guildMemberAdd', member => {
    const guild = member.guild;
    const userlist = guild.members.cache.map(u => `n${u.user.username}: ${u.user.id}`);
    guild.channels.find(channel => channel.name === "general").send("Welcome our new user!n Users"   userlist);
})
  

Пожалуйста, имейте в виду, что это вернет всех членов гильдии. Вы можете использовать guildMembersChunk прослушиватель только для приветствия нескольких участников, и все они должны быть из одной гильдии, что маловероятно.

Комментарии:

1. Спасибо, не могли бы вы опубликовать пример исправления?

2. Приходит с ошибкой, поиск не является функцией guild.channels.find(канал => channel.name === «общие»).отправить («Приветствуем нашего нового пользователя! n Пользователи» список пользователей); ^ Ошибка типа: guild.channels. поиск — это не функция

3. вам нужно использовать guild.members.cache . Смотрите ответ.