为啥我在 discord.js 中收到客户端错误

Posted

技术标签:

【中文标题】为啥我在 discord.js 中收到客户端错误【英文标题】:Why am I getting a client error in discord.js为什么我在 discord.js 中收到客户端错误 【发布时间】:2021-06-06 15:45:26 【问题描述】:

我正在使用这个Discord.js Guide 在我的 discord.js 机器人中创建一个 !stats 命令。 当我使用基本命令处理程序时,这里是我的 stats.js 代码:

module.exports = 
    name: 'stats',
    description: 'React to a message',
    execute(message, client) 
        message.channel.send(`Server count: $client.guilds.cache.size`);
    ,
;

然后我收到此错误:

TypeError: Cannot read property 'cache' of undefined
    at Object.execute (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\commands\Utility\stats.js:5:55)
    at Object.execute (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\events\message.js:69:12)
    at Client.<anonymous> (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\bot.js:30:61)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)   
    at Object.module.exports [as MESSAGE_CREATE] (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)  
    at WebSocketShard.onMessage (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10) 
    at WebSocket.onMessage (E:\The Owner\Naffy Dharni\Discord\Bots\Toxado Manager\node_modules\ws\lib\event-target.js:132:16)

我能做些什么来解决这个问题?

【问题讨论】:

【参考方案1】:

cache 属性之前的内容是undefined

所以在您的情况下,这就是 client.guilds。鉴于不能为正确的 djs 客户端对象取消定义,您在调用该文件时可能没有以正确的顺序传递值。也就是说,client 可能不是真正的 djs 客户端类/对象。

【讨论】:

【参考方案2】:

您的 discord.js 版本使用什么? 在 12 版本上添加了缓存。 使用 npm i discord.js@12 或仅删除字段 cache 上的调用。

module.exports = 
    name: 'stats',
    description: 'React to a message',
    execute(message, client) 
        message.channel.send(`Server count: $client.guilds.size`);
    ,
;

【讨论】:

以上是关于为啥我在 discord.js 中收到客户端错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到 ReferenceError:AbortController 未在 Discord.js v13 中定义?

为啥我的 Discord.js 欢迎消息中出现“无效的表单正文”错误?

为啥运行 app.js 显示错误:找不到模块'discord.js'

我正在尝试在 heroku 上部署我的 node.js discord 机器人,但我不断收到错误

为啥我在 Nodejs 中收到“无法在将标头发送到客户端后设置标头”错误?

Discord.js 机器人在更改意图后收到 Bitfield Invalid 错误