#javascript #node.js #arrays #foreach #discord.js
#javascript #node.js #массивы #foreach #discord.js
Вопрос:
Я пытаюсь обновить своего бота discord с API v11 до API v12, и у меня возникают проблемы с отправкой прямого сообщения всем пользователям сервера. Он не возвращает никаких ошибок, и я использую последнюю версию Discord API
Это функция:
const members = message.guild.members.cache.map((member) => member);
for (let i = 0; i < message.guild.memberCount; i ) {
console.log(typeof members[i].id);
if (blacklist.includes(members[i].id) === true) {
console.log('1 usuário da BlackList não recebeu a mensagem.');
} else {
client.users.cache
.get(members[i].id)
.send('oi pepe')
.catch(console.error);
}
}
Кто-нибудь может мне помочь?
Комментарии:
1. У вас есть какие-либо ошибки?
2. ошибка заключалась в следующем: один из участников, которому я пытался отправить сообщение, был ботом.
Ответ №1:
Прежде всего, в зависимости от размера сервера, удаление всех членов гильдии является нарушением Условий обслуживания Discord и обычно приводит к блокировке вашего бота.
Во-вторых, message.guild.members.cache
вернет только кэшированных членов гильдии, что очень редко бывает каждым членом. Вместо этого используйте message.guild.fetch()
, который принудительно извлекает каждого члена гильдии через API Discord
В-третьих, большая часть вашего кода очень сложна, например, использование map(member => member)
. Вот как я бы переписал вашу функцию:
// get all members in the guild
message.guild.members.fetch().then((members) => {
// iterate a function through every member of the guild
// with `Array.prototype.forEach()`
members.forEach((member) => {
if (blacklist.includes(member.id) || member.user.bot)
return console.log("1 usuário da BlackList não recebeu a mensagem.");
member.send("oi pepe").catch(console.error);
});
});
Комментарии:
1. Я знаю, что код был действительно слишком сложным, и мотив таков: я тестировал команду. последней функцией было message.guild.members.cache. forEach(members=… но не работает. Так что большое спасибо за ответ!
2. И да, мы согласны с требованиями discord