Discord.js机器人没有清除消息,但仍发送x数量的已删除消息



我试图用不同的命令名从以前在同一台服务器上制作的机器人中复制这段代码,但现在它没有删除消息,我不知道为什么不删除。

bot.on('message', msg =>{
if(!msg.author.bot && msg.content.startsWith(PREFIX))
{
let args = msg.content.substring(PREFIX.length).split(" ");
switch(args[0])
{
case 'ClearMessages':
if (msg.member.roles.cache.some(r=>["RNGesus"].includes(r.name)))
{
msg.channel.bulkDelete(args[1], true).catch(err=> {
console.error(err)
msg.channel.send("An error has occured while trying to delete messages")
});
msg.channel.send(`${args[1]} messages have been deleted`)
.then(msg =>{
msg.delete({timeout: 3000})
})
.catch(console.error)
}
break;

当机器人程序应该删除消息时,它也不会在控制台中给出任何错误消息。如果有人能帮忙的话,我将不胜感激,我对discord.js还很陌生,我的一个朋友帮我做了这个。我试着向他们寻求帮助,但他们也想不通。

TextChannel.bulkDelete()的第一个参数应该是要删除的消息的数组/集合或消息的数量。显然,您试图提供大量要删除的消息,但实际上您提供的是字符串

您需要首先使用一元加运算符(+(将args[0]转换为一个数字,然后使用Math.floor()将其四舍五入为整数(如果您想更美观、更高效,则可以使用双位NOT运算符(~((。作为一个建议,你还应该检查一下,以确保号码是有效的。

if (msg.member.roles.cache.some((r) => ['RNGesus'].includes(r.name))) {
if (+args[1] < 2 || +args[1] > 100)
return message.channel.send('The number must be at least 2 and at most 100');
msg.channel.bulkDelete(Math.floor(+args[1]), true).catch((err) => {
console.error(err);
msg.channel.send('An error has occured while trying to delete messages');
});
msg.channel
.send(`${args[1]} messages have been deleted`)
.then((msg) => {
msg.delete({ timeout: 3000 });
})
.catch(console.error);
}

最新更新