警告命令的问题

时间:2019-07-25 22:24:21

标签: discord discord.js

我编写了此命令来触发添加3个不同级别的警告,但是当我在服务器上运行discord命令时,警告级别在1.之后停止。任何帮助将不胜感激。

if (command === "warn") {
    if (!message.member.roles.some(r => ["Members", "Pro Team"].includes(r.name)))
    return message.reply("Sorry, you don't have permissions to do this. if you have problems with a member please message @GoldenCodex#0001");
    let warning1 = message.guild.roles.get("604071520381435954");
    let warning2 = message.guild.roles.get("604071671531307039");
    let warning3 = message.guild.roles.get("604071778809151680");
    let member = message.mentions.members.first();
    member.addRole(warning1).catch(console.error)
    if (message.member.roles.has(warning1)) {
member.addRole(warning2).catch(console.error);
    } else if (message.member.roles.has(warning2)) {
      member.addRole(warning3).catch(console.error);
    }
  }

1 个答案:

答案 0 :(得分:1)

从外观上看,我认为用户正在扮演warning1的角色?如果是这样,则意味着将始终命中第一个if语句,这意味着将永远不会到达第二条语句。我建议尝试在分配warning1后删除warning2角色。

另一方面,在分配member1之前,您应该检查用户是否具有warning1角色,否则用户将始终自动设置为warning2

编辑:似乎您正在尝试检查message.member是否具有warning1的角色,但是message.member将是管理员(试图警告的人)。只需更改if语句以检查member.roles.has()

例如。

...

if (member.roles.has(warning1)) {
    member.removeRole(warning1).catch(console.error);
    member.addRole(warning2).catch(console.error); 
} else if (member.roles.has(warning2)) {
    member.removeRole(warning2).catch(console.error);
    member.addRole(warning3).catch(console.error);
else {
    member.addRole(warning1).catch(console.error)
}