我最近使用javascript创建了一个discord bot,当我执行!purge时,响应“未知命令,执行!help以查看命令列表”,但说完之后,便删除了消息。我不知道是什么问题,请帮帮我

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');

最佳答案

现在,您正在使用discord.js-commando库。您决定使用该库的任何理由?看来您只是在使用标准的discord.js函数,例如bot.onmessage.channel.sendmessage.channel.fetchMessagesmessage.channel.bulkDelete ...

只需使用标准的discord.js库,就可以从此开始代码:

const Discord = require('discord.js');
const bot = new Discord.Client();


您可以在Discord.js的“欢迎”主页上找到此代码。

编辑:
我仍然不确定为什么要使用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


我还建议使用新的type而不是integer,以便您可以验证用户的响应并确保他们输入的数字大于0。

如果您需要有关设置初始discord.js-commando脚本的帮助,请查看Discord团队提供的以下存储库:https://github.com/discordjs/Commando/tree/master/test

10-05 20:39
查看更多