如何在Discord.js中制作报告命令

时间:2020-07-20 16:01:03

标签: discord.js

我正在尝试为我的机器人发出报告命令,但似乎没有任何反应

bot.on('message', message => {

    let args = message.content.substring(PREFIX.length).split(' ');

    switch(args[0]){

        case 'report':
            message.delete(3000);
            let target = message.mentions.members.first() || message.guild.members.get(args[0]);
            if(!target) return message.channel.send('Please provide a user that you wish to report').then(m => m.delete(15000));
            
            let reason = args.slice(1).join(" ");
            if(!reason) return message.channel.send(`Please provide a reason for reporting **${target.user.username}**`).then(m => m.delete(15000));
 
            let reportChannel = message.guild.channels.cache.find(x => x.name === "?▸logs");
            
            message.channel.send('Your report has been filed to the staff team. Thank you for reporting!').then(m => m.delete(15000));
            reportChannel.send(`**${message.author.username}** has reported **${target.user.username}** for **${reason}**.`);
        break;
    };
});

1 个答案:

答案 0 :(得分:0)

假设您使用的是discord.js v12,我进行了一些编辑以使此代码有效。 首先,新的discord.js Message#delete()方法现在需要一个参数:

所以改变:

message.delete(3000);-> message.delete({timeout: 3000});

message.guild.members.get()-> message.guild.members.cache.get()

•同样,正确删除用户提及也是args.slice(2)而不是args.slice(1)

这是最终结果^

bot.on('message', message => {
  let args = message.content.substring(PREFIX.length).split(' ');
  switch(args[0]){
      case 'report':
          message.delete({timeout: 3000});
          let target = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
          if(!target) return message.channel.send('Please provide a user that you wish to report').then(m => m.delete({timeout: 15000}));

          let reason = args.slice(2).join(" ");
          if(!reason) return message.channel.send(`Please provide a reason for reporting **${target.user.username}**`).then(m => m.delete({timeout: 15000}));

          let reportChannel = message.guild.channels.cache.find(x => x.name === "?▸logs");

          message.channel.send('Your report has been filed to the staff team. Thank you for reporting!').then(m => m.delete({timeout: 15000}));
          reportChannel.send(`**${message.author.username}** has reported **${target.user.username}** for **${reason}**.`);
      break;
    };
});