【问题标题】:Temporary Bann Role in Discord.jsDiscord.js 中的临时 Bann 角色
【发布时间】:2020-01-27 16:42:41
【问题描述】:

我基本上是想给说特定单词的成员一个角色,该角色会剥夺读写权限。我遇到的麻烦是将用户的角色归还给用户。

我尝试通过“message.member.roles.find()”查找用户拥有的角色,但遗憾的是没有成功。我是这方面的初学者,所以我可能错过了一些简单的解决方案。

client.on('message', message => {
    if (!message.author.bot) {
        // exclude messages from bots
        if ((message.content.startsWith(prefix) || message.content.startsWith(prefixPermanent)) && message.content.length > 1) {
            // query commands
            Commands.handleCommand(client, message);
        }
        else if (message.content.toLowerCase() === 'bad word' || message.content.toLowerCase() === 'other bad word') {
            const memberroles = message.member.roles.find();
            message.channel.send('Get banned');
            message.member.setRoles(['608002911225643028'])
        setTimeout(() => {
            message.member.setRoles([`memberoles`])
        }, 60000);
        }
    }
});

【问题讨论】:

    标签: discord discord.js roles


    【解决方案1】:

    我遇到的问题是将用户的角色归还给用户。
    ...
    我尝试通过“message.member.roles.find()”找到用户拥有的角色,但遗憾的是没有成功。

    message.member.roles.find() 只查找该成员当前拥有的角色。
    在您的情况下,您正在尝试将角色添加回成员。所以你不会从成员那里找到角色。

    你可能想要的是message.guild.roles.find()
    它会找到公会的角色。

    编辑

    你有const memberroles = message.member.roles.find();
    它只从成员那里获得一个角色。

    相反,做

    const memberroles = message.member.roles;
    

    它返回一个角色集合,您可以将其输入回message.member.setRoles(),如下所示:

    ...
    const memberroles = message.member.roles;
    message.channel.send('Get banned');
    message.member.setRoles(['608002911225643028'])
    setTimeout(() => {
       message.member.setRoles(memberoles)
    }, 60000);
    ...
    

    【讨论】:

    • 但是让我们说:成员有 3 个角色(RoleA、RoleB、RoleC)他说触发词并设置为只有角色 D 时间用完后,我希望机器人把他还给他他在被“禁止”之前扮演的角色我该怎么做? ://
    • @LonelyChimo Woops,我并没有真正理解你的问题,我编辑了我的答案,这可能对这种情况有所帮助
    • @LonelyChimo 似乎该方法接受了一个 ID 数组,不像文档所说的那样......你可以试试const memberroles = message.member.roles.keys(); 吗?
    • 哦,毕竟文档是正确的,很高兴你自己解决了这个问题:)
    【解决方案2】:

    Collection#find() 方法不适用于您的情况。该方法尝试在集合中查找提供的 ID。 相反,只需将 memberroles 设置为 message.member.roles

    要重新设置角色,请执行message.member.setRoles(memberroles)

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2021-01-28
      • 2017-08-25
      • 2021-02-07
      • 2020-08-24
      相关资源
      最近更新 更多