Javascript TypeError:value.split不是函数
我正在创建一个discord.js bot v12,当我在discord中使用purge命令时,我在第2行遇到了这个错误,我假设value.split不是一个函数,我想知道我是否应该做其他事情,因为我使用的是discord.js的v12:Javascript TypeError:value.split不是函数,javascript,bots,discord,discord.js,Javascript,Bots,Discord,Discord.js,我正在创建一个discord.js bot v12,当我在discord中使用purge命令时,我在第2行遇到了这个错误,我假设value.split不是一个函数,我想知道我是否应该做其他事情,因为我使用的是discord.js的v12: Uncaught Promise Error: TypeError: args.split is not a function or its return value is not iterable at Object.module.exports.
Uncaught Promise Error:
TypeError: args.split is not a function or its return value is not iterable
at Object.module.exports.run (c:\Users\Kazzu\Desktop\src\commands\prune.js:2:34)
at module.exports (c:\Users\Kazzu\Desktop\src\events\message.js:33:9)
at Client.emit (events.js:323:22)
at MessageCreateAction.handle (c:\Users\Kazzu\Desktop\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (c:\Users\Kazzu\Desktop\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (c:\Users\Kazzu\Desktop\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
at WebSocketShard.onPacket (c:\Users\Kazzu\Desktop\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
at WebSocketShard.onMessage (c:\Users\Kazzu\Desktop\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
at WebSocket.onMessage (c:\Users\Kazzu\Desktop\node_modules\ws\lib\event-target.js:120:16)
at WebSocket.emit (events.js:311:20)
这是我的代码:
module.exports.run = async (client, message, args) => {
let [ userId, limit ] = args.split(/\s+/);
if(!userId && !limit) {
let deletedMessages = await message.channel.bulkDelete();
message.channel.send(`${deletedMessages.size} messages were deleted.`);
}
if(!userId || !limit) return message.channel.send('Please provide the correct arguments.');
let r = new RegExp(/^\d+$/);
if(!r.test(userId)) return message.channel.send('Please provide a valid user id.');
if(isNaN(limit)) return message.channel.send('Please provide a numeric value for limit');
if(limit > 100) return message.channel.send('Limit must be less than or equal to 100.');
try {
let fetchedMessages = await message.channel.messages.fetch({ limit });
let filteredMessages = fetchedMessages.filter(message => message.author.id === userId);
let deletedMessages = await message.channel.bulkDelete(filteredMessages);
message.channel.send(`${deletedMessages.size} messages were deleted.`);
}
catch(err) {
console.log(err);
}
}
module.exports.help = {
name: "purge",
description: "Deletes a number of messages from a user in a channel."
}
module.exports.requirements = {
userPerms: [],
clientPerms: [],
ownerOnly: false
}
原来我需要将value.split替换为value.slice似乎
args
不是字符串的类型。当您为非字符串
调用.split()
时,JavaScript
运行时无法找到该类型的.split()
方法。因此,请确保您正在向函数传递字符串,或者尝试类似的操作:
if (typeof string === args) {
var str = args.toString();
}
您可以通过console.log(args)查看它是什么吗?