尝试为我的 discord.js 机器人创建警告系统。我做错了什么?

时间:2021-02-12 20:21:26

标签: javascript node.js discord discord.js

我正在为客户开发机器人,我正在制作一个可由 (prefix) warn <user mention> 触发的警告系统。我有下面的代码。

我可以运行一次命令,它会添加警告 1 角色,但后续命令不会添加警告 2 或 3。

if (mentionedUser.roles.cache.has(warn1)){
    if (mentionedUser.roles.cache.has(warn2)){
        message.channel.send('Already has 2 warnings.');
        mentionedUser.addRole(warn3);
    }
    else{
        message.channel.send('Already has 1 warning.')
        mentionedUser.addRole(warn2);
    }
}
else{
    mentionedUser.roles.add(warn1);
    message.channel.send('Warned the user.');
}

1 个答案:

答案 0 :(得分:0)

看起来您正在混合使用 v11 和 v12 语法。您使用 warn1 (v12) 添加 roles.add 但使用 warn2 (v11) 添加 user.addRole。如果 warn1 有效,则您使用的是 discord.js v12,因此您应该在任何地方使用 mentionedUser.roles.add

// role IDs
const warn1 = '808376848172974143';
const warn2 = '808376936006418524';
const warn3 = '808377003580457000';
const mute = '808377222884753459';
const beenMuted = '810008640802258975';
const mentionedUser = message.mentions.members.first();

if (mentionedUser.roles.cache.has(warn1)) {
    if (mentionedUser.roles.cache.has(warn2)) {
        message.channel.send('Already has 2 warnings.');
        mentionedUser.roles.add(warn3);
    }
    else {
        message.channel.send('Already has 1 warning.')
        mentionedUser.roles.add(warn2);
    }
}
else {
    mentionedUser.roles.add(warn1);
    message.channel.send('Warned the user.');
}

使用上面的代码正确添加了角色:

enter image description here