Discord.js 中的临时 Bann 角色

Temporary Bann Role in Discord.js

我基本上是在尝试为说特定词的成员提供一个角色,该角色会取消读写权限。我遇到的麻烦是让用户恢复他的角色。

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

The thing i have trouble with is giving the user his roles back.
...
I tried finding the roles the user has by "message.member.roles.find()" that didn't work sadly.

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

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

编辑

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

相反,

const memberroles = message.member.roles;

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

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

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

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