discord.js如何将clear命令限制在14天以内而不抛出任何错误
有人能告诉我们如何避开14天内发出的清算信息吗 示例:如果清除命令purge 50 MSG,但在14天内只有20 MSG,则即使不输入数字,我也只需要清除20 MSGdiscord.js如何将clear命令限制在14天以内而不抛出任何错误,discord.js,Discord.js,有人能告诉我们如何避开14天内发出的清算信息吗 示例:如果清除命令purge 50 MSG,但在14天内只有20 MSG,则即使不输入数字,我也只需要清除20 MSG client.on('message', async message => { if (!message.content.startsWith(prefix) || message.author.bot) return; let command = message.content.split(' ')[0];
client.on('message', async message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
let command = message.content.split(' ')[0];
const args = message.content.split(' ').slice(1);
const deleteCount = parseInt(args[0], 10);
command = command.slice(prefix.length);
if(command === 'clear') {
message.delete();
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('```You don\'t have the permission```').then(mes => mes.delete(3000)) .catch();
const fetched = await message.channel.fetchMessages({ limit: deleteCount });
message.channel.bulkDelete(fetched);
const messagesDeleted = fetched.array().length;
message.channel.send('```php\n' + messagesDeleted + ' messages have been deleted\n```').then(mes => mes.delete(3000)) .catch();
}
});
谢谢。要捕获发生的任何错误,请执行message.channel.bulkDeletefetched.catchconsole.error 这将捕获发生的任何错误 希望这有帮助。您可以在中看到,that channel.bulkDelete接受第二个参数filterOld,它应该是一个布尔值,指示函数是否应自动过滤超过2周的消息,以避免因不一致而出现错误 您还可以利用bulkDelete可以接受一个数字而不是一组消息这一事实来简化您的命令,这样您就不必手动获取要删除的消息。它解析为实际删除的邮件集合,所以您可以将此集合的大小返回给用户 这样的方法应该更有效:
if(command === 'clear') {
message.delete();
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('```You don\'t have the permission```').then(mes => mes.delete(3000)) .catch();
const messagesDeleted = await message.channel.bulkDelete(deleteCount, true);
message.channel.send('```php\n' + messagesDeleted.size + ' messages have been deleted\n```').then(mes => mes.delete(3000)).catch();
}
起初,我不知道我可以使用deleteCount,这是活动的filterOld。但现在,使用此代码后,它对我很有效:
if(command === 'clear') {
message.delete();
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('```You don\'t have the permission```').then(mes => mes.delete(3000)) .catch();
const fetched = await message.channel.fetchMessages({ limit:deleteCount }, true);
const msgsDeleted = await message.channel.bulkDelete(fetched, true);
message.channel.send('```php\n' + msgsDeleted.size + ' messages have been deleted\n```').then(mes => mes.delete(3000)) .catch();
}
});