【问题标题】:Issues with warn command警告命令的问题
【发布时间】:2019-07-29 07:21:49
【问题描述】:

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

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

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

    另一方面,您应该检查用户是否具有角色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)
    } 
    

    【讨论】:

    • 仍然遇到同样的问题
    • 我想我找到了你的问题,你正在尝试查看message.member 是否具有warning1 的角色,但消息成员将是执行该角色的管理员,我将更新我的代码以便它检查 member 是否具有角色
    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 2014-12-21
    • 2020-12-30
    • 2021-07-03
    • 2021-06-02
    • 2019-03-07
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多