当不应该在 discord.js 命令处理程序中未定义时,无法读取未定义的属性
Posted
技术标签:
【中文标题】当不应该在 discord.js 命令处理程序中未定义时,无法读取未定义的属性【英文标题】:Cannot read properties of undefined when it shouldn't be undefined in discord.js command handler 【发布时间】:2021-12-06 09:41:51 【问题描述】:我用一个简单的“ping”命令创建了一个小型命令处理程序。但是,尝试访问 message.channel
显示未定义。这是为什么呢?
./index.js
//Discord, fs, prefix, client etc. declarations
client.commands = new Collection()
const files = fs.readdirSync("./commands").filter(file => file.endsWith(".js")
for (const file of files)
const command = require(`./commands/$file`)
client.commands.set(command.name, command)
client.on("messageCreate", message =>
const [command, ...args] = message.content.slice(prefix.length).split(/ +/g)
if (client.commands.has(command)
client.commands.get(command).execute(message, client, args)
)
client.login(/*token*/)
./commands/ping.js
module.exports =
name: "ping",
description: "Make me say pong",
async execute(client, message, args)
message.channel.send("Pong!")
【问题讨论】:
【参考方案1】:虽然Message.channel
可能有效,但message
不是Message
的实例。它实际上是Client
的一个实例。参数的顺序总是很重要,将它们放在错误的顺序可能会引发 TypeErrors。这里有1个简单的解决方案
按正确的顺序排列参数!您可以更改执行或声明
client.commands.get(command).execute(client, message, args)
这真的很常见,而且发生的不仅仅是向频道发送消息
【讨论】:
以上是关于当不应该在 discord.js 命令处理程序中未定义时,无法读取未定义的属性的主要内容,如果未能解决你的问题,请参考以下文章