Javascript Discord bot-清除命令不起作用Discord.js-commando

Javascript Discord bot-清除命令不起作用Discord.js-commando,javascript,bots,discord,discord.js,Javascript,Bots,Discord,Discord.js,我最近使用node js创建了一个discord机器人,当我这样做时,!清除,响应未知命令,执行!帮助查看命令列表,但说出后,它将清除消息。也就是说,它工作得很好,但会发布错误消息。我不知道有什么问题,请帮帮我 const commando = require('discord.js-commando'); const bot = new commando.Client(); const prefix = '!'; bot.on('message', message => {

我最近使用node js创建了一个discord机器人,当我这样做时,
!清除
,响应
未知命令,执行!帮助查看命令列表
,但说出后,它将清除消息。也就是说,它工作得很好,但会发布错误消息。我不知道有什么问题,请帮帮我

const commando = require('discord.js-commando');
const bot = new commando.Client();
const prefix = '!';

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

    let msg = message.content.toUpperCase();
    let sender = message.author; 
    let cont = message.content.slice(prefix.length).split(" "); 
    let args = cont.slice(1); 

    if (msg.startsWith(prefix + 'PURGE')) {        
        async function purge() {
            message.delete();

            if (isNaN(args[0])) {
                message.channel.send('Please input a number of messages to be deleted \n Syntax: ' + prefix + 'purge <amount>'); 
                return;
            }

            const fetched = await message.channel.fetchMessages({limit: args[0]}); 
            console.log(fetched.size + ' messages found, deleting...'); 

            // Deleting the messages
            message.channel.bulkDelete(fetched)
                .catch(error => message.channel.send(`Error: ${error}`));

        } 
        purge(); 
    }
});

bot.login('MY BOT TOKEN HERE');
const commando=require('discord.js commando');
const bot=new commando.Client();
常量前缀='!';
bot.on('message',message=>{
让msg=message.content.toUpperCase();
让发件人=message.author;
让cont=message.content.slice(前缀.length).split(“”);
设args=cont.slice(1);
如果(msg.startsWith(前缀+'PURGE')){
异步函数清除(){
message.delete();
if(isNaN(args[0])){
message.channel.send('请输入一些要删除的消息\n语法:'+前缀+'清除');
返回;
}
const fetched=wait message.channel.fetchMessages({limit:args[0]});
log(fetched.size+'找到消息,删除…');
//删除消息
message.channel.bulkDelete(已获取)
.catch(error=>message.channel.send(`error:${error}`));
} 
清除();
}
});
bot.login('MY bot TOKEN HERE');

现在您正在使用
discord.js commando
库。你决定使用那个图书馆的原因是什么?看起来您只是在使用标准的
discord.js
函数,如
bot.on
message.channel.send
message.channel.fetchMessages
message.channel.bulkDelete

您只需使用标准的
discord.js
库,就可以很好地使用以下代码:

const Discord = require('discord.js');
const bot = new Discord.Client();
您可以在的“欢迎”主页上找到此代码

编辑: 我仍然不知道为什么要使用
discord.js commando
,但这并不重要。下面是我使用
discord.js commando
库提出的一个示例命令:

const commando = require('discord.js-commando');

class PurgeCommand extends commando.Command {
    constructor(client) {
        super(client, {
            name: 'purge',
            group: 'random', // like your !roll command
            memberName: 'purge',
            description: 'Purge some messages from a Text Channel.',
            examples: ['purge 5'],

            args: [
                {
                    key: 'numToPurge',
                    label: 'number',
                    prompt: 'Please input a number ( > 0) of messages to be deleted.',
                    type: 'integer'
                }
            ]
        });
    }

    run(msg, { numToPurge }) {
        let channel = msg.channel;

        // fail if number of messages to purge is invalid
        if (numToPurge <= 0) {
            return msg.reply('Purge number must be greater than 0');
        }

        // channel type must be text for .bulkDelete to be available
        else if (channel.type === 'text') {
            return channel.fetchMessages({limit: numToPurge})
                .then(msgs => channel.bulkDelete(msgs))
                .then(msgs => msg.reply(`Purge deleted ${msgs.size} message(s)`))
                .catch(console.error);
        }
        else {
            return msg.reply('Purge command only available in Text Channels');
        }
    }
};

module.exports = PurgeCommand
const commando=require('discord.js commando');
类PurgeCommand扩展了commando.Command{
建造商(客户){
超级(客户、{
名称:“清除”,
组:'random',//就像您的!roll命令一样
memberName:“清除”,
描述:“清除文本频道中的某些邮件。”,
示例:['purge 5'],
args:[
{
键:“numToPurge”,
标签:“编号”,
提示:“请输入要删除的邮件数(>0)。”,
类型:“整数”
}
]
});
}
运行(msg,{numToPurge}){
让channel=msg.channel;
//如果要清除的消息数无效,则失败
if(numToPurge通道.批量删除(msgs))
.then(msgs=>msg.reply(`Purge deleted${msgs.size}消息`)
.catch(控制台错误);
}
否则{
返回msg.reply('清除命令仅在文本频道中可用');
}
}
};
module.exports=PurgeCommand
我还建议使用新的
类型
而不是
整数
,这样您就可以验证用户的响应,并确保他们输入的数字大于0


如果您需要帮助设置初始的
discord.js commando
脚本,我会看看discord团队提供的这个repo:

您可能需要使用它。这个清除命令是针对discord.jsv11.5.1的,我还没有测试它在v12上是否有效,但我认为这可能适合您。我应该说这会删除频道内的所有内容(嵌套命令)


我使用discord-js.commmando作为我可以执行的其他命令!滚动,但更改为您所说的内容也会在我执行
时发送错误消息!清除
它说有时错误:DiscordAPIError:未知消息我会发送错误,那么我该怎么办now@RaviKiran-查看我的新答案,这是一个使用
discord.js commando
的示例命令。如果你有疑问,请告诉我。我是否需要添加删除我的命令?如果我这样做了,那就不是说没有这样的命令了。谢谢你的帮助,但是你知道,我问这个问题已经2年9个月了,现在我已经进步了很多,所以这对我来说很简单,我不再使用discord.js-commando。顺便说一句,这段代码只删除最后100条消息,而不是频道中的所有消息,不要真正使用discord.js v11,当discord停止使用discord.js的API版本时,它很快就会崩溃,该版本本打算在10月到11月之间完成,但他们仍然没有完成,所以您必须尽快切换到v12 tbhtbh,我使用v11作为我的selfbot,现在我已经习惯了v11。。我讨厌语法更改,我不想仅仅为了discord.py而学习python。让我们把你自己的令牌放进去v11很快就会停止工作,尽管我知道,我希望它在支持被取消后仍然稳定:(
exports.run = (bot, message, args) => {
  let filter = m => message.author.id === message.author.id;
    
  message.channel.send("Are you sure you wanna delete all messages? (y/n)").then(() => {
      message.channel.awaitMessages(filter, {
        max: 1,
        time: 30000,
        errors: ['time']
      })
        .then(message => {
          message = message.first();
        
          if (message.content.toUpperCase() == "YES" || message.content.toUpperCase() == "Y") {
            message.channel.bulkDelete(100);
          } else if (message.content.toUpperCase() == "NO" || message.content.toUpperCase() == "N") {
            message.channel.send("Terminated").then(() => {message.delete(2000)});
          } else {
            message.delete();
          }
        })
        .catch(collected => {
        message.channel.send("Timeout").then(() => {message.delete(2000)});
      });
    }).catch(error => {
    message.channel.send(error);
  });
};