Discord. js | Как указать количество сообщений, которые я хочу удалить / очистить - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь заставить своего бота Discord удалить определенное c количество сообщений. Это мой код:

    if (message.content === "zpurge") {


        const nopurgeembed = new Discord.MessageEmbed()
        .setDescription("*You don't have permission to use this command*")
        .setColor(0xffe6f7)
      
        if(!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send(nopurgeembed)
        if(message.member.hasPermission("ADMINISTRATOR")) {
            message.channel.bulkDelete(10).then(() => {
                message.channel.send("***Deleted 10 messages***")
                .then(message =>{
                    message.delete({ timeout: 1000 })
                })
            })
        }

      }

Я хочу знать, как очистить определенную c сумму, а не только 10 или то, что я установил для удаления.

Мы будем благодарны за вашу помощь!

1 Ответ

0 голосов
/ 02 августа 2020

Я изменил ваш код, чтобы использовать префикс для команд и автоматически разбивать сообщение на команду и аргументы для упрощения обработки.

Я также убрал использование вставки как сообщения об ошибке, поскольку это просто добавляет ненужной сложности.

const prefix = "!";

client.on("message", asynchronous (message) => {
    if (message.author.bot || !message.content.startsWith(prefix)) return;

    const args = message.content.slice(prefix.length).trim().split(/\s+/g);
    const command = args.shift().toLowerCase();

    switch (command) {
        case 'purge':
            if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send("*You don't have permission to use this command.*");
            if (!args[0]) return message.channel.send("*You didn't specify how many messages to delete.*");

            await message.delete();

            message.channel.bulkDelete(args[0]).then(() => {
                message.channel.send("***Deleted 10 messages***")
                .then(message => {
                    message.delete({ timeout: 1000 });
                });
            });
            break;
        default:
            message.channel.send(`The command \`${command}\` was not recognized.`);
    }
});
...