Discord.j - функция странно пуста - PullRequest
0 голосов
/ 24 марта 2020

этот вопрос связан с другим. Если вам нужно знать, почему я спрашиваю об этом, отметьте этот вопрос .

Я занимаюсь разработкой бота, который должен получить коллекцию, заполненную участниками с определенной ролью c , Но после тестирования и двойной проверки имени роли и убедитесь, что я тестирую бота на сервере, а не в DM, коллекция всегда пуста и непригодна для использования (программа не может работать без нее).

const eventMembers = message.guild.members.cache.filter(m =>
      m.roles.cache.some(r => r.name === "event")
   );

const connectedMembers = eventMembers.members.filter(m => {
      return voiceChannel.members.has(m.id)
   });
console.log(connectedMembers);

Если у кого-то есть подсказка или решение, я беру его

1 Ответ

1 голос
/ 24 марта 2020

Вы забыли вернуть :)

const eventMembers = message.guild.members.cache.filter(m => {
    return  m.roles.cache.some(r => r.name === "event")
      });

или

const eventMembers = message.guild.members.cache.filter(m => m.roles.cache.some(r => r.name === "event"));

Вы можете проверить, существует ли роль с таким именем:

let role = message.guild.roles.cache.find(role => role.name === 'event')
if (role) {
    console.log('ok')
} else {
    console.log('No role found with this nickname')
}

V2

const eventMembers = message.guild.members.cache.filter(m => {
    return  m.roles.cache.some(r => r.name === "event") && m.voice && m.voice.channelID === message.member.voice.channelID
   });

или

const eventMembers = message.guild.members.cache.filter(m => m.roles.cache.some(r => r.name === "event") && m.voice && m.voice.channelID === message.member.voice.channelID)

V3 : D

bot.on('message', message => {
    if(message.content === '!test') {
        if(!message.member.voice.channel) return message.reply('You need joinVoiceChannel for use this command');
        let targetRole = message.guild.roles.cache.find(role => role.name === 'event')
        if (!targetRole) return message.reply('Can`t find a role');
        let eventMembersNotInVoice = targetRole.members.filter(member => member.voice.channelID !== message.member.voice.channelID)
        console.log(eventMembersNotInVoice.size)
    }
});
...