【问题标题】:Cannot read properties of undefined when it shouldn't be undefined in discord.js command handler当不应该在 discord.js 命令处理程序中未定义时,无法读取未定义的属性
【发布时间】: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!")
  }
}

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    虽然Message.channel 可能有效,但message 不是Message 的实例。它实际上是Client 的一个实例。参数的顺序总是很重要,将它们放在错误的顺序可能会引发 TypeErrors。这里有1个简单的解决方案

    按正确的顺序排列参数!您可以更改执行或声明

    client.commands.get(command).execute(client, message, args)
    

    这真的很常见,而且发生的不仅仅是向频道发送消息

    【讨论】:

      猜你喜欢
      • 2020-09-07
      • 2021-02-16
      • 2021-07-29
      • 2022-08-04
      • 2020-12-15
      • 2021-06-27
      • 2020-07-20
      • 1970-01-01
      相关资源
      最近更新 更多