discord 是否更改了 java 脚本中的 "bulkDelete" 变量?
Did discord change the "bulkDelete" variable in java script?
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);
});
}
}
每次我运行它,都会出现错误:
Cannot read property 'bulkDelete' of undefined
我不知道我做错了什么。我检查了视频中的代码并继续 discord.js.org 看看他们是否有不同的解决方案。如果有人能提供帮助,我将不胜感激。
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]
您将 .then()
函数中的参数命名为 message
,因此它覆盖了第一个消息对象。您应该将其重命名为 messages
,因为您在同一行中引用了该名称。
几点提示:
args[0]
将是一个字符串,而不是一个数字,所以它不会产生任何影响。您可以使用一元运算符进行转换。
获取消息没有意义,因为您可以向 bulkDelete()
函数输入一个数字
await message.channel.bulkDelete(+args[0]);
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);
});
}
}
每次我运行它,都会出现错误:
Cannot read property 'bulkDelete' of undefined
我不知道我做错了什么。我检查了视频中的代码并继续 discord.js.org 看看他们是否有不同的解决方案。如果有人能提供帮助,我将不胜感激。
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]
您将 .then()
函数中的参数命名为 message
,因此它覆盖了第一个消息对象。您应该将其重命名为 messages
,因为您在同一行中引用了该名称。
几点提示:
args[0]
将是一个字符串,而不是一个数字,所以它不会产生任何影响。您可以使用一元运算符进行转换。获取消息没有意义,因为您可以向
bulkDelete()
函数输入一个数字
await message.channel.bulkDelete(+args[0]);