TransWikia.com

Команда clear (discord.js), нужна помощь из количеством удаляемых сообщений

Stack Overflow на русском Asked by Fellout on October 15, 2020

const {MessageEmbed} = require('discord.js');
module.exports = {
    name: 'clear',
    aliases: ['cls'],
    category: 'moderation',
    description: 'Clear chat command.',
    run: async (bot, message, args) => {
        message.react("?");
        if (message.deletable) {
            message.delete();
        }
        if (!message.channel.permissionsFor(message.member).has(["MANAGE_MESSAGES"])) {
            return message.reply("you do not have permission to manage messages!nName permission: MANAGE_MESSAGES!");
        }
        if (isNaN(args[0]) || parseInt(args[0]) <= 0) {
            return message.reply("is it on your number? At least enter the number 1.");
        }
        if (!message.channel.permissionsFor(message.guild.me).has(["MANAGE_MESSAGES"])) {
            return message.reply("I do not have permission to manage messages!nName permission: MANAGE_MESSAGES!");
        }
        let delmsg;
        if (parseInt(args[0]) > 100) {
            delmsg = 100;
        } else {
            delmsg = parseInt(args[0]);
        }
        message.channel.bulkDelete(delmsg, true)
            .then(deleted => message.channel.send(`${deleted.size} message('s) deleted successfully!`))
            .then(message => message.delete({timeout: 5000}))
            .catch(err => console.log(`${err}`));
    }
}

Вот код команды. Всё рабочее. Меня интересует другое. Количество удаляемых сообщений. Можете подсказать как увеличить количество удаляемых сообщений, обойти ограничение? Я начинающий программист, буду не против если расскажете как и расскажете подробней что к чему. Ещё буду не против если скажете как поместить сообщение 15 (пример) сообщений успешно удалено поместить в embed, я пробовал, но что-то шло не так.

One Answer

Именно увеличить кол-во удаляемых сообщений можно сделав такой цикл:

let clearFunction = async (count) => {
    return new Promise(async (res, rej) => {
        await message.channel.bulkDelete(count, true).catch((e) => {return rej(e)});
        return res(count);
    })
}

let clearCall = async (est) => {
    if (est <= 0) return message.channel.send(`${args[0]} message('s) deleted successfully!`);
    let deleted = await clearFunction(est < 100 ? est : 100);
    return clearCall(est - deleted);
}

return await clearCall(parseInt(args[0]));

Также, необходимо добавить завершение цикла, когда кол-во указанных для удаления сообщений превышает разрешенные в канале, но главное - я ответил на сам вопрос, ведь так?

Answered by wilddip on October 15, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP