【发布时间】:2021-10-08 08:22:51
【问题描述】:
目前我正在制作一个 Discord Bot,但我遇到了麻烦,我不知道如何删除 discord.js 中的 100 多条消息,因为它限制为 100 条,我正在寻找可以帮助我解决问题的功能,我目前的编码:
const Discord = require("discord.js");
const { Client, MessageEmbed } = require("discord.js");
module.exports = {
name: "purge",
alias: [],
devOnly: false,
guildOnly: true,
nsfwOnly: false,
botPermissions: [
"SEND_MESSAGES",
"ATTACH_FILES",
"VIEW_CHANNEL",
"MANAGE_MESSAGES",
],
userPermissions: ["SEND_MESSAGES", "MANAGE_MESSAGES"],
category: "Moderation",
usage: "clear (messages)",
description: "Deletes the specified amount of messages",
run: async (client, message, args) => {
let prefix = await client.prefix(message);
let member = message.mentions.members.first();
if (!message.guild.me.permissions.has("MANAGE_MESSAGES"))
return message.channel.send(
new Discord.MessageEmbed()
.setDescription(
`<:no:860978971771928647> ***I don't have the necessary permissions to do that, please use the command \`${prefix}setup\` to check all it's working correctly.***`
)
.setColor(16711680)
);
if (!message.member.hasPermission("MANAGE_MESSAGES"))
return message.channel.send(
new Discord.MessageEmbed()
.setDescription(
"<:no:860978971771928647> ***You don't have the necessary permissions to do that.***"
)
.setColor(16711680)
);
if (member) {
const userMessages = (await messages).filter(
(m) => m.author.id === member.id
)
await message.channel.bulkDelete(userMessages)
message.channel.send(new Discord.MessageEmbed()
.setDescription(`<:si:860978510079852544> ***${member} messages has been cleared.***`)
.setColor('GREEN')
)
} else {
let mensajes = parseInt(args[0]);
if (!mensajes)
return message.channel.send(
new Discord.MessageEmbed()
.setDescription(
"<:no:860978971771928647> ***Please provide a amount of messages to delete, it needs to be a number***"
)
.setColor(16711680)
);
if (mensajes < 1)
return message.channel.send(
new Discord.MessageEmbed()
.setDescription(
"<:no:860978971771928647> ***The arguments provided are not correctly, the amount of messages must be greater than 1***"
)
.setColor(16711680)
);
let embedlimitmessages = new Discord.MessageEmbed()
.setDescription(
"<:no:860978971771928647> ***You can't delete more than 100 messages**"
)
.setColor(16711680);
if (mensajes > 100) return message.channel.send(embedlimitmessages);
message.delete();
message.channel.bulkDelete(mensajes);
let embed = new Discord.MessageEmbed()
.setDescription(
`<:si:860978510079852544> ***I deleted ${mensajes} messages successfully!***`
)
.setColor("GREEN");
message.channel.send(embed).then((m) => m.delete({ timeout: 10000 }));
}
},
};
我在其他论坛上阅读了如何做到这一点,我也在 Discord 帮助服务器中查找过,他们说有一段时间我可以这样做,以免滥用 API,我会很感激你们可以举个例子
【问题讨论】:
-
不,不是。我试图用 bulkDelete() 删除 100 多条消息;我没有错误
-
您是否曾尝试一次删除超过 100 条消息?如您所述,它应该抛出错误或以其他方式失败。
-
更重要的是,我在上面链接中提供的问题在答案部分有一个解决方案,应该可以解决您的问题。
-
是的,我尝试删除超过 100 条消息,但出现错误,另外,请阅读,因为这不是问题,我正在寻找一个函数来使用 bulkDelete 删除超过 100 条消息
标签: javascript node.js discord.js