【问题标题】:Is it possile to map people that have certain permissions in voice channel? Discord.js是否可以在语音通道中映射具有某些权限的人?不和谐.js
【发布时间】:2019-04-18 18:54:55
【问题描述】:

我是一名使用 JS 编写的不和谐机器人开发人员。 我目前正在尝试为某些私人捐赠者频道映射在语音频道上具有“CONNECT”权限的用户,以便捐赠者可以看到他们已将谁列入白名单。 这是我的代码:

if (!message.member.voiceChannel) {

            let novoice = new Discord.RichEmbed()
            .setDescription("Please join your voice chat to use this command.")
            .setColor(config.orange)

            message.delete()
            message.channel.send({ embed: novoice }).then(msg => msg.delete(10000));
            return

        } else if (message.member.voiceChannel.name.includes('????')) {

            let list = new Discord.RichEmbed()
            .setAuthor(`???? List of whitelisted members in ${message.member.voiceChannel}`)
            .setDescription(message.member.voiceChannel.members.filter(members => members.hasPermission('CONNECT') === true).join(" "))

            message.channel.send({ embed: list });
            return

        }

如果您有解决此问题的想法或提示,请告诉我。 提前感谢您的帮助!

【问题讨论】:

    标签: node.js discord discord.js


    【解决方案1】:

    您可以通过循环访问公会的成员并将任何有权连接到该频道的成员添加到您的列表中来做到这一点。

    let whitelisted = [];
    let members = message.guild.members.array();
    
    for (var i = 0; i < members.length; i++) {
      if (message.member.voiceChannel.permissionsFor(members[i]).has('CONNECT')) whitelisted.push(`<@${members[i].id}>`);
    }
    
    let list = whitelisted.join(', '); // mentions of each user
    

    编辑:

    回顾我自己的答案,老实说,我不会赞成。这是我希望我第一次提供的解决方案。

    您还可以使用Collection#filter() 方法评估传递给它的每个值的函数。通过这种方式,它根据返回值(真/假)确定将哪个添加到新集合中。请注意,原始集合保持不变,而是返回一个新集合。

    // discord.js v11
    const whitelisted = message.guild.members.filter(
      (m) => member.voiceChannel.permissionsFor(m).has('CONNECT')
    );
    
    // discord.js v12
    const whitelisted = message.guild.members.cache.filter(
      (m) => member.voice.channel.permissionsFor(m).has('CONNECT')
    );
    
    whitelisted.array().join(', '); // list of mentions
    

    【讨论】:

    • 非常感谢!老实说,我没有想法:P
    猜你喜欢
    • 2021-11-17
    • 2023-04-07
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多