Discord.js 中的临时 Bann 角色

Posted

技术标签:

【中文标题】Discord.js 中的临时 Bann 角色【英文标题】:Temporary Bann Role in Discord.js 【发布时间】: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);
        
    
);

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于Discord.js 中的临时 Bann 角色的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 discord.js 中使用所有人角色

Discord.js 机器人,临时静音命令不会静音

discord.js v12 中的 TempMute

Discord.js,通过数组中的 ID 查找用户是不是具有角色

discord.js - 从所有成员中删除特定角色

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?