【问题标题】:Kick command with reason有理由踢命令
【发布时间】:2020-09-16 06:17:55
【问题描述】:

我有理由创建了一个踢命令,但它没有踢成员,我没有任何错误...... 另外,为什么我发送命令时,它会删除它?

我尝试自己修复它,但仍然无法正常工作。感谢您的帮助。

这是我的代码:

client.on('message', message => { 
  if(message.content.startsWith(prefix + "kick")) { 
     if(message.channel.type === 'DM') { 
    message.channel.send('This command can use only in guide'); 
    return; 
  }; 
  if(!message.member.hasPermission('KICK_MEMBERS')) { 
    const KickEmbed = new Discord.MessageEmbed()
    .setColor("YELLOW")
    .setAuthor(message.author.username)
    .setDescription("Sorry, but you don't have the permission to use the kick command.")
    message.channel.send(KickEmbed); 
    return; 
  }; 
  let mentionMember = message.mentions.members.first();
  if(!mentionMember) { 
    const ErrEmbed = new Discord.MessageEmbed()
    .setColor('YELLOW')
    .setAuthor(message.author.username)
    .setDescription('**Usage:** `y!kick <@user> or ID` You need to mention an user!')
    message.channel.send(ErrEmbed); 
                      return; 
                     };
        let args = message.content.slice(prefix.length).trim().split(/ +/g);
    if(!args.lenght) {
      const ReasonError = new Discord.MessageEmbed()
      .setColor('YELLOW')
      .setAuthor(message.author.username)
      .setDescription('Before kicking this member, you need to provide a reason of your kick.')
      message.channel.send(ReasonError)
      return;
    };
  let authorHighestRole = message.member.roles.highest.position; 
  let mentionHighestRole = mentionMember.roles.highest.position; 
  if(mentionHighestRole >= authorHighestRole) { 
    message.channel.send('You can`t kick members with equal or higher position'); 
    return; 
  }; 
  if(!mentionMember.kickable) {
    message.channel.send('I have no permissions to kick this user'); 
    return 
  }; 
  mentionMember.kick() 
    .then(() => message.channel.send(`Kicked ${mentionMember.tag} with reason: ${args}`)) 
    .catch(console.error); 
}
          }
);

【问题讨论】:

  • 你拼错了 'args.length'。可能想解决这个问题
  • 好的,现在它可以工作了,但只用于踢球,而不是原因部分。

标签: command bots discord discord.js


【解决方案1】:

发帖前应该看文档:

https://discord.js.org/#/docs/main/stable/class/GuildMember?scrollTo=kick

但无论如何:

&lt;Member&gt;.kick(Reason),只是你传入的一个字符串。

而且 args 看起来像一个数组,所以你不能只在字符串中使用args,试试args.join(" ")。 (message.channel.send("Kicked...")内部)

总而言之,变化如下:

所以mentionMember.kick() => mentionMember.kick(args.join(" "))

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2021-01-15
    • 2021-06-01
    • 2019-05-13
    • 2021-07-27
    • 2021-11-13
    • 2020-12-31
    • 2020-11-18
    • 2021-06-30
    相关资源
    最近更新 更多