仅删除提及成员的消息

时间:2021-04-19 20:22:12

标签: discord.js

我想做一个像“c!clear @User 50”这样的命令来清除“@User”的 50 条消息。

“c!”是前缀。

我有一个经典的清晰命令,但我不知道我是否可以改变一些东西来实现我想要的:

    run: async (message, args) => {
        if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send('Vous n\'avez pas la permission d\'utiliser cette commande.')
        const count = args[0]
        if (!/\d+/.test(count)) return message.channel.send('Veuillez indiquer un nombre de messages à supprimer.')
        if (count < 1 || count > 99) return message.channel.send('Le nombre de message doit être compris entre 1 et 99.')
        const { size } = await message.channel.bulkDelete(Number(count) + 1, true)
        message.channel.send(`${size - 1} messages ont été supprimés !`).then(sent => sent.delete({timeout: 3e3}))
    },

1 个答案:

答案 0 :(得分:0)

TextChannel.bulkDelete() 还接受消息集合作为参数(因为数字不起作用,您想删除特定用户的消息)。

从通道中的 MessageManager 获取一个集合,并将其传递给 bulkDelete()

msg.channel.messages.fetch(messages => {
    msg.channel.bulkDelete(messages.filter(m => m.author.id === msg.mentions.members.first().id)).then(() => {
        //handle result here
    })
})

当然,您应该针对您的用例进行错误捕获和调整代码。

查看此docs