Discord.js bot不是';t清除消息,但仍发送x数量的消息已被删除的消息

Discord.js bot不是';t清除消息,但仍发送x数量的消息已被删除的消息,discord.js,Discord.js,我试图从我在同一台服务器上使用不同命令名制作的上一个bot复制这段代码,但现在它没有删除消息,我也不明白为什么不能 bot.on('message', msg =>{ if(!msg.author.bot && msg.content.startsWith(PREFIX)) { let args = msg.content.substring(PREFIX.length).split(" "); switch(args[0])

我试图从我在同一台服务器上使用不同命令名制作的上一个bot复制这段代码,但现在它没有删除消息,我也不明白为什么不能

bot.on('message', msg =>{
  if(!msg.author.bot && msg.content.startsWith(PREFIX))
  {
    let args = msg.content.substring(PREFIX.length).split(" ");

    switch(args[0])

    {
      case 'ClearMessages':
        if (msg.member.roles.cache.some(r=>["RNGesus"].includes(r.name)))
        {
          msg.channel.bulkDelete(args[1], true).catch(err=> {
            console.error(err)
            msg.channel.send("An error has occured while trying to delete messages")
          });
          msg.channel.send(`${args[1]} messages have been deleted`)
          .then(msg =>{
            msg.delete({timeout: 3000})
          })
          .catch(console.error)
        }
      break;
当机器人应该删除消息时,它也不会在控制台中给出任何错误消息。如果有人能帮上忙的话,我将不胜感激,我对discord.js还相当陌生,我的一个朋友帮我做了这个。我试图向他们寻求帮助,但他们也无法解决。

的第一个参数应该是消息数组/集合或要删除的消息数。很明显,您试图提供一些要删除的消息,但实际上您提供了一个字符串

您需要首先使用将参数[0]转换为一个数字,然后使用将其四舍五入为一个整数(如果您希望更美观、更高效,可以使用double)。作为建议,你还应该检查一下,以确保号码是有效的

if(msg.member.roles.cache.some((r)=>['RNGesus'].包括(r.name))){
如果(+args[1]<2 | |+args[1]>100)
返回message.channel.send('数字必须至少为2,最多为100');
msg.channel.bulkDelete(数学地板(+args[1]),true.catch((err)=>{
控制台错误(err);
msg.channel.send('尝试删除邮件时出错');
});
味精频道
.send(`${args[1]}邮件已被删除`)
。然后((msg)=>{
msg.delete({timeout:3000});
})
.catch(控制台错误);
}