【问题标题】:How to ban and kick a GuildMember如何禁止和踢掉公会成员
【发布时间】:2020-08-31 21:59:46
【问题描述】:

好吧,我遵循了“源代码”“discord.js”教程,(甚至从 GitHub 复制粘贴了他的代码)但是他显示的禁止和踢命令不起作用,我假设它们被最近的一个破坏了更新。它将嵌入发送到事件频道,但实际上并没有禁止播放器。另外,如果您有什么建议让我改变一些东西,请提出!

if (cmd === `${prefix}ban`) {
  let bUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
  if (!bUser) return message.channel.send("Can't find user!");
  let bReason = args.join(" ").slice(22);
  if (!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!");
  if (bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be banned!");

  let banEmbed = new Discord.RichEmbed()
    .setDescription("Ban Management")
    .setColor("#bc0000")
    .addField("Banned User", `${bUser} with ID ${bUser.id}`)
    .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`)
    .addField("Banned In", message.channel)
    .addField("Time", message.createdAt)
    .addField("Reason", bReason);

  let incidentchannel = message.guild.channels.find(`name`, "incidents");
  if (!incidentchannel) return message.channel.send("Can't find incidents channel.");

  message.guild.member(bUser).ban(bReason);
  message.delete().catch(O_o => {});
  incidentchannel.send(banEmbed);

  return;
}

【问题讨论】:

    标签: discord.js


    【解决方案1】:
    message.guild.member(bUser).ban(bReason);
    

    这不会禁止该会员。该消息具有member 属性,因此您无需使用message.guild.member,您可以轻松使用message.member

    所以它应该是这样的:

    if (cmd === `${prefix}ban`) {
      let bUser = message.guild.member(message.mentions.members.first() || message.guild.members.get(args[0]));
      if (!bUser) return message.channel.send("Can't find user!");
      let bReason = args.join(" ").slice(22);
      if (!message.member.hasPermission("MANAGE_MEMBERS")) return message.channel.send("No can do pal!");
      if (bUser.hasPermission("MANAGE_MESSAGES")) return message.channel.send("That person can't be banned!");
    
      let banEmbed = new Discord.RichEmbed()
        .setDescription("Ban Management")
        .setColor("#bc0000")
        .addField("Banned User", `${bUser.user.tag} with ID ${bUser.id}`)
        .addField("Banned By", `<@${message.author.id}> with ID ${message.author.id}`)
        .addField("Banned In", message.channel.name)
        .addField("Time", message.createdAt)
        .addField("Reason", bReason);
    
      let incidentchannel = message.guild.channels.find(`name`, "incidents");
      if (!incidentchannel) return message.channel.send("Can't find incidents channel.");
    
      message.guild.member(bUser).ban({
        reason: bReason
      });
      message.delete();
      incidentchannel.send({
        embed: banEmbed
      });
    
      return;
    }
    

    我改变了很多,因为很多已经过时并且无法工作。可能是我没有看到其中一个错误。

    让我知道它是否有效! :)

    最好的问候, 猴子yy11

    【讨论】:

      【解决方案2】:

      这看起来非常复杂,我希望我的命令可以让事情变得简单一点!

      bot.on('message', message => {
          const arguments = message.content.slice(prefix.length).trim().split(/ +/g);
          const commandName = arguments.shift().toLowerCase();
      if (message.content.startsWith(prefix) && commandName == "kick") {
          if(!message.member.hasPermission("KICK_MEMBERS")) return message.channel.send("Permissions invalid");
          const userKick = message.mentions.users.first();
      
          if (userKick) {
              var member = message.guild.member(userKick);
      
              if (member) {
                  member.kick({
                      reason: `This person was kicked using a bot's moderation system. We are so sorry if this caused problems.`
          }).then(() => {
              message.reply(`A user been kicked.`) 
          })
      } else {
          message.reply(`User not found`);
      }
          } else {
              message.reply(`Please enter a name`)
          }}})
      
      
          bot.on('message', message => {
              const arguments = message.content.slice(prefix.length).trim().split(/ +/g);
              const commandName = arguments.shift().toLowerCase();
          if (message.content.startsWith(prefix) && commandName == "ban") {
              if(!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send("Permissions invalid");
              const userBan = message.mentions.users.first();
          
              if (userBan) {
                  var member = message.guild.member(userBan);
          
                  if (member) {
                      member.ban({
                          reason: `This person was banned using a bot's moderation system. We are so sorry if this caused problems.`
              }).then(() => {
                  message.reply(`a user has been banned!`) 
              })
          } else {
              message.reply(`User not found`);
          }
              } else {
                  message.reply(`Please enter a name`)
              }}})
      

      【讨论】:

        【解决方案3】:

        如果您使用 discord.js v12 或更高版本,则 RichEmbed 现在已弃用。相反,请使用MessageEmbed

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-09-15
          • 2021-02-10
          • 2020-10-20
          • 1970-01-01
          • 2020-07-01
          • 2020-11-20
          • 2021-07-08
          • 2019-02-15
          相关资源
          最近更新 更多