首页 > 解决方案 > Discord.js 中的临时 Bann 角色

问题描述

我基本上是在尝试为说特定单词的成员赋予一个角色,该角色会剥夺读写权限。我遇到的麻烦是给用户他的角色。

我尝试通过“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);
        }
    }
});

标签: discorddiscord.jsroles

解决方案


我遇到的麻烦是给用户他的角色。
...
我尝试通过“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);
...

推荐阅读