TypeError: members.forEach is not a function при попытке обработки результата guild.members.fetch() Discord Api JS
function kickall(message) при попытке обработки результата функции fetchGuildUsers(message)
выдает ошибку TypeError: members.forEach is not a function. По советам вместо .forEach() пытался использовать .each(), результат - аналогичная ошибка. Подскажите, как обработать этот массив?
const Discord = require('discord.js');
const Client = new Discord.Client();
let config = require('./config.json');
let token = config.token;
Client.on('ready', () => {
console.log(`Logget in as ${Client.user.tag}!`)
})
async function fetchGuildUsers(message) {
let Users = await message.guild.members.fetch()
.then(console.log)
.catch(console.error);
return Users;
}
function mkick(member) {
member.kick()
.then(() => console.log('Kicked'))
.catch(console.error);
}
function kickall(message) {
let members = fetchGuildUsers(message);
members.forEach(member => {
setTimeout(mkick,1300,member);
});
}
Client.on('message', message => {
if (message.content == 'kickall') {
kickall(message);
}
});
Client.login(token);
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Если не ошибаюсь, вот здесь вы получаете undefined:
let Users = await message.guild.members.fetch()
.then(console.log)
потому что console.log возвращает undefined. Попробуйте убрать .then(console.log) и посмотрите, изменится ли что-то.
Если вы используете async-функции, лучше не использовать .then(), чтобы не запутаться. Например, можно так:
async function fetchGuildUsers(message) {
try {
let Users = await message.guild.members.fetch();
console.log(Users);
return Users;
} catch (error) {
console.error(error);
}
}