我想做一个像“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}))
},
答案 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