javascript - 计算来自频道的消息
问题描述
我想清理我所有的频道,而且我要到那里了。问题是,它非常非常长……
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 改变了他们的位置。
谢谢
解决方案
有两种方法可以做到这一点。
克隆
您可以使用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);
注意:不是最优雅的解决方案,因为它是深夜,但这应该可以帮助你。
推荐阅读
- php - php将对象路径传递给函数
- sql-server - MS SQL Server (ubuntu docker) sqlcmd 无法运行脚本文件
- php - 无法使用php从邮递员那里检索帖子值
- sql - 在 SQL 中保存 VB6 值
- javascript - 如何在 JavaScript 中使用 OR 运算符从 Firestore 检索数据?
- node.js - 快速应用中请求响应处理的最佳实践
- bash - 使用 POSIX 提取 git url 的域
- mysql - 为什么我的sql池连接突然关闭
- jenkins - 将本地 Docker 守护进程暴露给 minikube - Jenkins config.json:系统找不到指定的路径
- python-3.x - Asyncssh 无法创建具有多个进程的通道