不和谐是否更改了 java 脚本中的 "bulkDelete" 变量?


module.exports = {
name: 'clear',
description: 'clear certain amount of messages',
async execute(message, args){
if(!args[0]) return message.reply("please enter the amount of messages");
if(isNaN(args[0])) return message.reply("please type a number");
if(args[0] > 100) return message.reply("you can not delete more than 100 messages at a time.")
if(args[0] < 1) return message.reply("Number has to be more than 1")
await message.channel.messages.fetch({limit: args[0]}).then(message =>{
message.channel.bulkDelete(messages);
});
}
}

每次我运行它时,都会出现一个错误:

无法读取未定义的属性"bulkDelete">

我不知道自己做错了什么。我检查了视频中的代码,并访问了discord.js.org,看看他们是否有不同的解决方案。如果有人能帮忙,我会非常感激。

您将.then()函数中的参数命名为message,因此它覆盖了第一个消息对象。您应该将其重命名为messages,因为您在同一行中引用了该名称。

一些提示:

  • args[0]将是一个字符串,而不是一个数字,因此它不会产生任何效果。您可以使用一元运算符进行转换。

  • 获取消息没有意义,因为您只需向bulkDelete()函数输入一个数字

await message.channel.bulkDelete(+args[0]);

messages.fetch解析为消息的Collection。您需要将该数组传递给原始消息上的bulkDelete方法。

此外,由于您使用的是await,因此不妨完全删除.then

const messages = await message.channel.messages.fetch({limit: args[0]});
await message.channel.bulkDelete(messages);

但是,只传递要删除的数量的消息会更容易。

message.channel.bulkDelete(args[0]);

为了更好的可读性,我还建议提前将args[0]放入变量中。

async execute(message, args){
const numToDelete = args[0];
// continue using numToDelete, not args[0]

相关内容

  • 没有找到相关文章

最新更新