删除 discord.js 文本通道中的所有消息

新手上路,请多包涵

好的,所以我搜索了一段时间,但是我找不到有关如何删除不和谐频道中的所有消息的任何信息。我所说的所有消息是指该频道中曾经写过的每条消息。有什么线索吗?

原文由 Johannes 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 543
2 个回答

尝试这个

async () => {
  let fetched;
  do {
    fetched = await channel.fetchMessages({limit: 100});
    message.channel.bulkDelete(fetched);
  }
  while(fetched.size >= 2);
}

原文由 user8690818 发布,翻译遵循 CC BY-SA 4.0 许可协议

Discord 不允许机器人删除超过 100 条消息,因此您无法删除频道中的每条消息。您可以使用 BulkDelete 删除少于 100 条消息。

例子:

 const Discord = require("discord.js");
const client = new Discord.Client();
const prefix = "!";

client.on("ready" () => {
    console.log("Successfully logged into client.");
});

client.on("message", msg => {
    if (msg.content.toLowerCase().startsWith(prefix + "clearchat")) {
        async function clear() {
            msg.delete();
            const fetched = await msg.channel.fetchMessages({limit: 99});
            msg.channel.bulkDelete(fetched);
        }
        clear();
    }
});

client.login("BOT_TOKEN");

请注意,它必须在异步函数中才能使 await 工作。

原文由 Pruina Tempestatis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题