【问题标题】:Discord.j - Function strangely emptyDiscord.j - 函数奇怪地为空
【发布时间】:2020-07-04 19:10:50
【问题描述】:

这个问题与另一个问题有关。如果你想知道我问这个的原因,请查看this question

我正在开发一个机器人,它应该获得一个包含具有特定角色的成员的集合。但是在测试和仔细检查角色名称并确保我在服务器中而不是在 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);

如果有人有提示或解决方案,我会接受

【问题讨论】:

    标签: node.js bots discord discord.js


    【解决方案1】:

    你忘了返回 :)

    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)
        }
    });
    

    【讨论】:

    • 谢谢,但console.log(eventMembers) 仍然给我一个空数组,然后其他过滤器无法使用。我将编辑问题并添加最后一部分,也许它会有所帮助。
    • @codingNoob voiceChannel.member 是什么?
    • 和我在同一个voiceChannel中连接的事件角色的成员
    • 我添加了V2版本,最好像这样检查相同的声音。
    • 我想我有东西。我可能是错的,但我认为问题不在我想的地方,当我console.log(eventMembers) 时,它的结果是Map(2) {_array: null, _keyArray: null}。但是 2 是服务器上有多少具有事件角色的成员,但是 connectMembers 结果为 TypeError: Cannot read property 'filter' of undefined。如果eventMembers 为空,我会忽略,我对集合不满意,但connectedMembers 常量可能是问题所在(或者它应该如何由程序确定)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2011-06-14
    • 2020-01-31
    • 2014-05-24
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多