#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
. Смотрите ответ.