discord.js - 不和谐.js | TypeError:无法读取未定义的属性“toLowerCase”
问题描述
我正在尝试创建一个不和谐的机器人命令 (/role),当我尝试该命令时它起作用了,但是当我更新到最新的节点版本时它不起作用并且它记录了这个:
TypeError: Cannot read property 'toLowerCase' of undefined
at Object.execute (C:\Users\Jakub Sokol\Documents\Coding\Discord Bots\WaterDrop\commands\role.js:8:34)
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: 'role',
description: "Assign yourself a role!",
usage: "[role]",
cooldown: 5,
execute(message, args){
const roleName = args[0].toLowerCase();
let takeroles = ['Legend', 'Ultra', 'Onlylegend']
if(roleName === "legend"){
message.member.roles.add('734832820710801550').catch(console.error);
message.reply("gave you the Legend role!");
} else if(roleName === "ultra"){
message.member.roles.add('734832749063700550').catch(console.error);
message.reply("gave you the Ultra role!");
} else if (roleName === "onlylegend" && message.member.roles.cache.has('734832820710801550')) {
message.member.roles.add('734836969133309962').catch(console.error);
message.reply("gave you the Only Legend role!");
} else if (roleName === "onlylegend" && !message.member.roles.cache.has('734832820710801550')) {
message.reply("you don't have permission to take that role!");
}
}
}
解决方案
foo.bar;
无法读取 'foo' 的属性 'bar' 此处foo
未定义。
在您的实例中,args[0]
未定义。您应该进行一些检查以确保通过提供至少一个参数if (!args.length) return message.reply(...)
基本上,您必须只是键入!role
而不是!role legend or whatever
推荐阅读
- python - 添加“重试”导致我失去了回溯
- node.js - 如何让 Mocha 识别单元测试
- css - 使用 Prestashop 实现
- wordpress - 如何在 GraphQL 的 ACF 关系字段中访问自定义文件?
- f# - F#计算表达式的用法
- python - Python 使用 apply 或 map 计算 NTLM 哈希值
- javascript - 数学计算在 VueJs 中没有显示正确的结果
- excel - Excel将日期添加到文件名格式错误
- docker - Docker Multi-Stage:如何拆分成多个 Dockerfile
- eclipse - Eclipse:本地主机上的服务器 Tomcat v8.0 服务器无法启动