【发布时间】:2018-06-05 18:11:10
【问题描述】:
这是我当前的代码。感谢@André Dion 的帮助。
if (message.channel.type == 'text') {
message.channel.fetchMessages().then(messages => {
const botMessages = messages.filter(msg => msg.author.bot)
message.channel.bulkDelete(botMessages);
messagesDeleted = botMessages.array().length; // number of messages deleted
// Logging the number of messages deleted on both the channel and console
message.channel.send("Deletion of messages successful. Total messages deleted: " + messagesDeleted);
console.log('Deletion of messages successful. Total messages deleted: ' + messagesDeleted)
}).catch(err => {
console.log('Error while doing Bulk Delete');
console.log(err);
});
}
当用户输入“!clearMessages”时,它会运行此代码并仅删除来自机器人的消息。我想添加一个功能,该功能还可以删除以 !/./> 开头的用户消息(这些消息不仅可以来自用户,也可以来自机器人),所以我尝试使用 const botMessages 将行编辑为:const botMessages = messages.filter(msg => msg.author.bot && msg.content.startsWith("!" || "." || ">"));但这没有用。你能指出我哪里出错了,我该如何解决这个问题?
我注意到的另一个问题是,当只有 1 条机器人消息时,机器人不会删除该消息并出现 DiscordAPIError,说您必须提供至少 2-100 条消息才能删除。有解决办法吗?
谢谢。
【问题讨论】:
-
我想到的一种绕过错误的方法是一起删除 2 条消息。因此,当用户输入“.kick @User”时,机器人会说“被踢用户”。然后你输入“!clearMessages”,然后机器人批量删除以 . 开头的消息。 (“.kick @User”)以及来自机器人的消息“被踢用户”。这应该可以工作,因为它现在批量删除 2 条消息而不是 1 条?
标签: javascript node.js bots discord discord.js