我们如何使用 userid 执行 kick 命令?

时间:2021-03-13 21:54:20

标签: discord command discord.js bots

那么我们如何使用下面的 kick 命令检测用户 ID?

下面是我的 kick 命令,每当我踢一个人时,我都需要提及他们 (?kick @test) 我想通过用户 ID (?kick 354353) 和他们的提及来踢一个用户。



const client = new Discord.Client();

client.on('ready', () => {
  console.log('I am ready!');
});

client.on('message', message => {
  // Ignore messages that aren't from a guild
  if (!message.guild) return;


  if (message.content.startsWith('?kick')) {
    if (member.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS'])) 
    return;
    
    const user = message.mentions.users.first();
    if (user) {
      const member = message.guild.member(user);
      if (member) {
        member
          .kick('Optional reason that will display in the audit logs')
          .then(() => {
            message.reply(`Successfully kicked ${user.tag}`);
          })
          .catch(err => {
            message.reply('I was unable to kick the member');
            // Log the error
            console.error(err);
          });
      } else {
        // The mentioned user isn't in this guild
        message.reply("That user isn't in this guild!");
      }
      // Otherwise, if no user was mentioned
    } else {
      message.reply("You didn't mention the user to kick!");
    }
  }
});

client.login('TOKEN');

1 个答案:

答案 0 :(得分:0)

如果您打算制作更多需要用户输入的命令,我建议您设置 Arguments

但是,如果您对完全设置参数不感兴趣,您可以只对消息进行切片并获取 id。然后,您需要获取成员对象,确保为此使您的函数异步,或者如果您愿意,可以使用 Promise#then

if (message.content.startsWith('?kick')) {
    if (member.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS'])) 
    return;
   const memberId = message.content.slice(' ')[1];

   if (memberId) {
      const memberToKick = await message.guild.members.cache.fetch(userId);

      memberToKick.kick('Optional reason that will display in the audit logs')
          .then(() => {
            message.reply(`Successfully kicked ${user.tag}`);
          })
          .catch(err => {
            message.reply('I was unable to kick the member');
            // Log the error
            console.error(err);
          });
   }
}