我编写了此命令来触发添加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);
}
}
答案 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)
}