Как переместить пользователей discord без ролей (@everyone) в существующую роль с помощью моего .js бота?

#discord #discord.js

#Discord #discord.js

Вопрос:

Я уже использую это "guildMemberAdd" для участников, недавно добавленных для присоединения к роли «Посетители».

 client.on("guildMemberAdd", member =>{
  member.roles.add(member.guild.roles.cache.find(role => role.name == "Visitors"), "auto added.");
})
 

Мой бот не может быть онлайн 24 часа. Итак, когда я подключаю его, есть несколько пользователей, которые присоединились, в то время как бот был отключен, очевидно, без роли (я предполагаю, что они в роли @everyone).

Я намерен переместить пользователей discord без роли в существующую роль, когда я подключу бота.

Ответ №1:

В вашем готовом событии просто выберите каждого члена гильдии с GuildMemberManager#fetch() помощью , а затем отфильтруйте участников только с одной ролью (@everyone).

 client.on('ready', async () => {
 const members = await client.guilds.cache.get('Guild ID').members.fetch(); // fetch every member
 members
  .filter((m) => m.roles.cache.size === 1) // iterate through every member with only one role
  .each((m) => m.roles.add('Role ID')); // add the Visitors role
});
 

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

1. Очень полезно для продолжения, но, похоже, это ошибка при повторении; «members.each не является функцией на клиенте» и «members.filter не является функцией на клиенте». Есть ли какие-либо обновления в документации, которые могут вызвать это?

2. Это моя ошибка, пожалуйста, проверьте мой отредактированный ответ

3. Вот и все. Теперь я добавлю message.send на том же client.on, чтобы пользователи знали, куда и почему были перемещены.