不和谐.js | TypeError:无法读取未定义的属性“0”
Posted
技术标签:
【中文标题】不和谐.js | TypeError:无法读取未定义的属性“0”【英文标题】:Discord.js | TypeError: Cannot read property '0' of undefined 【发布时间】:2020-11-10 21:08:55 【问题描述】:好的,所以我正在尝试创建一个不和谐的机器人命令(广播),我想将 args[0] 作为广播频道的 ID,但是当我尝试它时,它会记录以下内容:
TypeError: Cannot read property '0' of undefined
at Object.execute (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\commands\broadcast.js:8:40)
at Client.<anonymous> (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\index.js:69:11)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
at WebSocketShard.onPacket (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
at WebSocketShard.onMessage (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
at WebSocket.onMessage (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
这是我在命令中的代码:
module.exports =
name: 'broadcast',
aliases: ["bc"],
usage: "[channel id] [message]",
description: "Broadcasts a message in a channel!",
execute(client, message, args)
const bcchannel = parseInt(args[0]);
const bcchannelsend = client.channels.cache.get(bcchannel);
if (isNaN(bcchannel))
return message.reply('that doesn\'t seem to be a valid channel ID!');
else if(args)
bcchannelsend.send(args.join(' '));
【问题讨论】:
【参考方案1】:Cannot read property '0' of undefined
表示args
未定义。
您需要在使用前定义 args 变量。
你可以这样做:const args = message.content.slice(PREFIX.length).trim().split(" ");
下次您看到此类错误时,请务必检查哪个变量受到未定义问题的影响。 ^
对于您的 index.js 文件,我应该替换:
try
command.execute(message, args);
catch (error)
console.error(error);
message.reply('there was an error trying to execute that command!');
作者:
try
command.execute(client, message, args);
catch (error)
console.error(error);
message.reply('there was an error trying to execute that command!');
因为你的 execute() 方法有 3 个参数,而不是两个。
【讨论】:
我已经在我的 index.js 中定义了 args,当我尝试将它放入命令中时,它只是说它已经被声明了。这是我的索引的 sn-p,它已经存在:client.on('message', message => if (!message.content.startsWith(prefix) || message.author.bot) return; const args = message.content.slice(prefix.length).split(/ +/); const commandName = args.shift().toLowerCase(); const command = client.commands.get(commandName) || client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
哦,是的,我明白了,您的 execute() 方法有问题。由于您的 args 变量来自它。你在哪里定义它?
我真的不明白我应该把整个 index.js 发给你吗?
如果你可以在 pastebin/hastebin 的某个地方上传它 ^
现在它给了我这个错误:hastebin.com/cesidopaya.js :/以上是关于不和谐.js | TypeError:无法读取未定义的属性“0”的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取未定义的不和谐机器人 js 说命令的属性“加入”
Discord.js 在尝试将游戏消息转换为不和谐消息时给我留下“TypeError:无法读取未定义的属性 'includes'”
不和谐赠品| TypeError:无法读取未定义的属性“开始”
TypeError:尝试制作不和谐机器人时无法读取未定义的属性“id”