我的主要目标是让具有消息管理权限的人键入删除消息的命令,但能够指定他们要删除多少条消息。
我尝试弄乱变量,但是我对它们没有太多的了解,通常会出现一些错误。我曾尝试用成功的变量替换已删除的消息(值2)的值,但在用消息更改变量时我一无所知。
if(message.member.hasPermission('MANAGE_MESSAGES')) {
if(message.content.startsWith(`${prefix}delete`)) {
message.channel.bulkDelete(2)
}
}
答案 0 :(得分:0)
我想您在消息事件中拥有它。
这是多种方法之一:
if(message.content.startsWith(`${prefix}delete`)) {
const user = message.mentions.users.first();
// Parse Amount
const amount = !!parseInt(message.content.split(' ')[1]) ? parseInt(message.content.split(' ')[1]) : parseInt(message.content.split(' ')[2])
//Check if it the amount for message to delete where declared
if (!amount) return message.reply('Must specify an amount to delete!').then(msg => msg.delete(15000));
// Fetch 100 messages (will be filtered and lowered up to max amount requested)
message.channel.fetchMessages({
limit: 100,
}).then((messages) => {
//I declare the messages like that with amount + 1 to delete the command itself
messages = messages.array().slice(0, amount + 1);
//And finally buldDelete deletes the desired amount
message.channel.bulkDelete(messages).then(messages => console.log(`Bulk deleted ${args[0]} messages`))
.catch(console.error);
});
答案 1 :(得分:0)
您将需要分割message.content,这将返回一个在本示例中名为 args 的数组。然后, args [1] 应该是您要查找的数字。
const prefix = '@'
const args = message.content.split(' ')
if(message.member.hasPermission('MANAGE_MESSAGES')) {
if(message.content.startsWith(`${prefix}delete`)) {
message.channel.bulkDelete(args[1])
}
}
等等!您只需要确保 args [1] 现在是一个数字即可。