[英]Purge command not repeating bulk delete
我的 Discord.js v12.2.0 機器人上有一個清除命令,但它沒有像我希望的那樣工作。 我希望能夠通過重復批量刪除來清除多達 1,000 條消息,但不幸的是它實際上並沒有重復批量刪除,它只批量刪除一次。 任何幫助將不勝感激。
這是我的代碼:
module.exports = {
name: 'purge',
description: "Purge messages.",
usage: '[amount]',
aliases: ['prune'],
execute(client, Discord, message, args, prefix, wrongchannelpublic, wrongchannelstaff, talkingserverbump, disabledcommand, nopermission, noarguments, colour, footer1, footer2) {
if (!message.member.roles.cache.some(role => role.id === '703316042965057546')) { return message.delete({ timeout: 100 }), message.channel.send(nopermission).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
if (!args[0] || isNaN(args[0])) { return message.delete({ timeout: 100 }), message.channel.send(noarguments).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
if (args[0] < 1 || args[0] > 1000) { return message.delete({ timeout: 100 }), message.channel.send(`Please provide a number between 1 and 100, ${message.author}!`).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
message.delete({ timeout: 100 })
.then(() => {
let remainder = args[0] % 100;
let numOfTimes = (args[0]-remainder)/100;
try {
for (let i = 0; i < numOfTimes; i++) {
message.channel.bulkDelete(100);
}
if (remainder > 0) { message.channel.bulkDelete(remainder); }
} catch (err) {
const purgeerror = new Discord.MessageEmbed()
.setDescription(`**Execution error**\nThe \`purge\` command ran by ${message.author} in ${message.channel} failed to execute.\nError: \`${err}\``)
.setColor('#ff0000')
.setTimestamp();
message.channel.send(`<:cross:740242485728772137> Error: \`${err}\``);
client.channels.cache.get('740251593382821920').send(purgeerror);
console.log(`The purge command ran by ${message.author.tag} in #${message.channel.name} failed to execute. Error: ${err}`);
}
if (args[0] === "1") {
setTimeout(()=>{ message.channel.send(`<:tick:740242485908996128> Purged ${args[0]} message.`).then(sentMessage => sentMessage.delete({ timeout: 4000})) }, 1000)
} else {
setTimeout(()=>{ message.channel.send(`<:tick:740242485908996128> Purged ${args[0]} messages.`).then(sentMessage => sentMessage.delete({ timeout: 4000})) }, 1000)
}
})
}
}
使用await
以便在每個bulkDelete
之間等待一兩秒(此時,所有的bulkDelete
都已發送,但它們刪除了相同的消息):
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
module.exports = {
name: 'purge',
description: "Purge messages.",
usage: '[amount]',
aliases: ['prune'],
execute(client, Discord, message, args, prefix, wrongchannelpublic, wrongchannelstaff, talkingserverbump, disabledcommand, nopermission, noarguments, colour, footer1, footer2) {
if (!message.member.roles.cache.some(role => role.id === '703316042965057546')) { return message.delete({ timeout: 100 }), message.channel.send(nopermission).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
if (!args[0] || isNaN(args[0])) { return message.delete({ timeout: 100 }), message.channel.send(noarguments).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
if (args[0] < 1 || args[0] > 1000) { return message.delete({ timeout: 100 }), message.channel.send(`Please provide a number between 1 and 100, ${message.author}!`).then(sentMessage => sentMessage.delete({ timeout: 7000})) }
message.delete({ timeout: 100 })
.then(async () => {
let remainder = args[0] % 100;
let numOfTimes = (args[0]-remainder)/100;
try {
for (let i = 0; i < numOfTimes; i++) {
await message.channel.bulkDelete(100);
await delay(1000); // wait one second
}
if (remainder > 0) { message.channel.bulkDelete(remainder); }
} catch (err) {
const purgeerror = new Discord.MessageEmbed()
.setDescription(`**Execution error**\nThe \`purge\` command ran by ${message.author} in ${message.channel} failed to execute.\nError: \`${err}\``)
.setColor('#ff0000')
.setTimestamp();
message.channel.send(`<:cross:740242485728772137> Error: \`${err}\``);
client.channels.cache.get('740251593382821920').send(purgeerror);
console.log(`The purge command ran by ${message.author.tag} in #${message.channel.name} failed to execute. Error: ${err}`);
}
if (args[0] === "1") {
setTimeout(()=>{ message.channel.send(`<:tick:740242485908996128> Purged ${args[0]} message.`).then(sentMessage => sentMessage.delete({ timeout: 4000})) }, 1000)
} else {
setTimeout(()=>{ message.channel.send(`<:tick:740242485908996128> Purged ${args[0]} messages.`).then(sentMessage => sentMessage.delete({ timeout: 4000})) }, 1000)
}
})
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.