【问题标题】:Reason after blacklisting command Discord.js将命令 Discord.js 列入黑名单后的原因
【发布时间】:2021-04-08 02:24:56
【问题描述】:

我想在我的黑名单中添加一个原因(使用命令 !blacklist {userid} {reason}),这些原因在下面的嵌入中可见,例如 .addField ("???? Reason:", somecode) 我该如何解决这个问题?

  if (command === "blacklist") {
    if(!config["allowed-users"].includes(message.member.id)) return;
    const user = client.users.cache.get(args[0]);
    if(!user) {
      return message.channel.send("This user does not exist")
    }
    if(blacklist.has(user.id)) {
      return message.channel.send("This user is already on the blacklist")
    }

    blacklist.set(user.id, 'blacklisted');
    let set = db.fetch(`g_${message.guild.id}`);
    var embed = new Discord.MessageEmbed()
    .setTitle(":warning: Blacklisted :warning:")
    .setColor('#fc5a03')
    .addField("???? Moderator:", message.author.tag)
    .addField("???? User:", user.username)
    .addField("???? User ID:", user.id)
    .addField("???? Blacklisted on:", message.createdAt)
    .setFooter("© 2020 - 2021 GlobalChat", "https://cdn.discordapp.com/avatars/759021875962576916/cc32b2b08fdd52ae86294516d34532c5.png?size=128")
    .setThumbnail(user.avatarURL({ dynamic:true }))
    .addField("Unblacklist?", "Please contact <@267818548431290369> or <@331736522782932993>");

    client.guilds.cache.forEach(g => {
      try {
        client.channels.cache.get(db.fetch(`g_${g.id}`)).send(embed);
      } catch (e) {
        return;
      }
    });


  } 

【问题讨论】:

  • 您是想将原因添加到数据库中,还是只想在嵌入中显示?
  • 我只想在嵌入中显示

标签: javascript node.js discord discord.js


【解决方案1】:

首先你要检查是否没有原因,这可以通过检查两种方法来简单地完成,如果第二个参数未定义,就像这样

if (args[1] === undefined) {
    const reason = "No reason.";
}

此解决方案对这两种方法都适用,因为如果第二个参数未定义,则后面就不能再有其他参数了

你可以把理由当作一个论据。 在命令里面添加

const reason = args[1];

或者,如果您想让其余的黑名单参数专用于您可以添加类似以下内容的原因

let reason = ""
for (let i = 1; i < args.length; i++) { 
// It's very important that i starts as 1, so we do not take the first argument into account for the reason
    reason += args[i];
}

然后你可以添加到嵌入中

.addField("? Reason:", reason); 

如果您使用第一种方法,黑名单命令将像这样工作

!blacklist 012345678910111213 the_reason_here
// or
!blacklist 012345678910111213 reason

这种方法的局限性在于多词原因不是很直观。

如果你使用第二种方法,黑名单命令会像这样工作

!blacklist 012345678910111213 The reason the user was banned and it can go on and on and on as long as the writer wants

【讨论】:

    【解决方案2】:

    您需要以与获取用户 ID 相同的方式获取原因,如下所示:

    const reason = args[1];
    

    之后,为了确保原因不显示为undefined,您需要以 if 语句的形式添加检查,如下所示:

    if (!reason) {
        reason = "No reason";
    }
    

    之后,在您想要的字段位置添加.addField("? Reason:", reason)

    您的代码应如下所示:

    if (command === "blacklist") {
        if (!config["allowed-users"].includes(message.member.id)) return;
        const user = client.users.cache.get(args[0]);
        const reason = args[1];
    
        if (!user) {
            return message.channel.send("This user does not exist")
        }
        if (blacklist.has(user.id)) {
            return message.channel.send("This user is already on the blacklist")
        }
    
        if (!reason) {
            reason = "No reason";
        }
    
        blacklist.set(user.id, 'blacklisted');
        let set = db.fetch(`g_${message.guild.id}`);
        var embed = new Discord.MessageEmbed()
            .setTitle(":warning: Blacklisted :warning:")
            .setColor('#fc5a03')
            .addField("? Moderator:", message.author.tag)
            .addField("? User:", user.username)
            .addField("? User ID:", user.id)
            .addField("? Blacklisted on:", message.createdAt)
            .addField(("? Reason:", reason)
                .setFooter("© 2020 - 2021 GlobalChat", "https://cdn.discordapp.com/avatars/759021875962576916/cc32b2b08fdd52ae86294516d34532c5.png?size=128")
                .setThumbnail(user.avatarURL({
                    dynamic: true
                }))
                .addField("Unblacklist?", "Please contact <@267818548431290369> or <@331736522782932993>");
    
                client.guilds.cache.forEach(g => {
                    try {
                        client.channels.cache.get(db.fetch(`g_${g.id}`)).send(embed);
                    } catch (e) {
                        return;
                    }
                });
    
    
            }
    

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 2021-03-02
      • 2021-05-19
      • 2016-12-30
      • 2021-03-01
      • 1970-01-01
      • 2020-01-22
      • 2020-10-25
      • 2021-05-05
      相关资源
      最近更新 更多