不和谐-对连接到VC的成员进行排序并赋予他们角色

时间:2020-09-26 12:13:39

标签: node.js discord bots

我正在尝试通过不和谐的vc游戏“ Among Us”,并为每个人提供“游戏中”角色。目前,我的代码是:

bot.on('message', message => {
    //let role = member.guild.roles.cache.find(role => role.name === "In-Game");
    let role = message.guild.roles.cache.find(role => role.name == "In-Game");
    let channels = message.guild.channels.cache.filter(c => c.parentID === '759363400253308948' && c.type === 'voice');

    if (message.content.startsWith('.rank')) {
        for (const [channelID, channel] of channels) {
            for (const [memberID, member] of channel.members) {
                member.roles.add(role);
            }
        }
    }
})

我没有收到错误,但也没有得到任何结果?为什么会这样?

1 个答案:

答案 0 :(得分:1)

我认为问题是您的channel变量为空,因此当您尝试在其上循环并对该通道中的成员进行循环时,什么也没有发生。 我认为这样做的原因是您的arrow函数,该函数过滤子级确定为某个父级的通道,但不返回任何内容。 channel.parentID返回一个数字,但是您正在使用===将其与一个数字字符串进行比较,该检查将检查值AND类型。更改为==(即使类型不同,也将检查值是否相等)或删除引号。

bot.on('message', message => {
    //let role = member.guild.roles.cache.find(role => role.name === "In-Game");
    let role = message.guild.roles.cache.find(role => role.name == "In-Game");
    let channels = message.guild.channels.cache.filter(c => c.parentID == '759363400253308948' && c.type === 'voice');

    if (message.content.startsWith('.rank')) {
        for (const [channelID, channel] of channels) {
            for (const [memberID, member] of channel.members) {
                member.roles.add(role);
                //if you want to do anything after the roles have been added, you need to await the above line
                //and make the event function async.
            }
        }
    }
})

注意:您的漫游器需要相关权限。我相信必要的一个:
阅读文本频道/查看语音频道:查看用户所在的频道
管理角色:可让您为用户分配角色。