首页 > 解决方案 > 计算来自频道的消息

问题描述

我想清理我所有的频道,而且我要到那里了。问题是,它非常非常长……

message.guild.channels.cache.forEach(c => {
                if (c.isText()) {
                    let CompteurMessage = 0;
                    let CompteurSuppression;
                    c.messages.fetch().then(messages => {
                        messages.forEach(msg => {
                            msg.delete();
                        });
                    });

                    c.send(`Your server is the best, ${message.author}.`);
                }
            });

您是否知道如何更快地进行,例如计算频道中的消息数量?

编辑:现在,我克隆了频道,但它们改变了位置......

c.clone().then((clone) => {
                        clone.send(`Love ${message.author}.`);
                        const originalPosition = c.position;

                        c.delete();
                        clone.setPosition(originalPosition);
                    });

频道 n°3 和 4 改变了他们的位置。

谢谢

标签: javascriptnode.jsdiscorddiscord.jsbots

解决方案


有两种方法可以做到这一点。

克隆

您可以使用TextChannel.clone克隆TextChannel 。这将阻止您使用 BulkDelete 的 14 天限制。

const newChannel = await message.channel.clone();
message.channel.delete();

newChannel.send('The channel has been purged.');

批量删除

您可以非常轻松地删除过去 14 天内的所有消息。

await message.channel.messages.fetch();
const messageCount = message.channel.messages.cache.map(x => x).length;
message.channel.bulkDelete(messageCount, true);

注意:不是最优雅的解决方案,因为它是深夜,但这应该可以帮助你。


推荐阅读