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 角色的主要内容,如果未能解决你的问题,请参考以下文章