繁体   English   中英

清除命令未正确删除消息 discord.js v13

[英]Clear command is not deleting messages correctly discord.js v13

当我想使用以下代码清除消息时:

await message.channel.messages.fetch({limit: args[0]}).then(messages =>{
message.channel.send(`Deleting Messages...`).then(msg => {
setTimeout(() => msg.delete(), 500)
})
message.channel.bulkDelete(messages);
});

它有效,但是当我说:“${prefix}clear 3”时,它会删除 2 条消息。 或者当消息超过过去 14 天时,它不能删除消息。

列表:

  1. 我希望机器人删除 args 中指定的特定数字。
  2. 当请求的消息量是过去 14 天时,它会显示“抱歉,我无法删除这些消息,因为它们是过去 14 天的。”

额外说明:我使用的是 discord.js v13 和 node.js v16

  1. 您的机器人还将您的命令视为一条消息,并将其删除。 这就是为什么它只删除另外 2 条消息。 为防止您必须先使用message.delete()添加过滤器或删除命令
  2. Channel.bulkDelete()默认不会删除超过 2 周的消息! 要启用filterOld参数,您必须使用Channel.bulkDelete(number, true)并且您也可以删除这些消息!

首先,您的命令是一条消息,这就是为什么它删除的数量少于该数量。其次,机器人无法删除超过 2 周的消息第三,您不能删除超过 100 条消息。 所以你可以这样做:

const amount = args[0]

if (amount > 100 || amount < 1) {
 return message.channel.send({content: `I cannot delete 100 messages or more`})
        }
const messages = await message.channel.messages.fetch({
            limit: amount + 1,
        }); 
await message.channel.bulkDelete(messages, true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM