Discord.js V12 TypeError:无法读取未定义的属性“发送”

Posted

技术标签:

【中文标题】Discord.js V12 TypeError:无法读取未定义的属性“发送”【英文标题】:Discord.js V12 TypeError: Cannot read property 'send' of undefined 【发布时间】:2021-04-12 07:39:58 【问题描述】:

在为我的机器人发出命令时遇到错误

"TypeError: Cannot read property 'send' of undefined"

使用命令时,因为完整的代码有点长,我不想包含不必要的细节,我认为问题出在这一行

client.users.cache.get(customer).send(`Your order has been claimed and will be delivered soon.`);

因为当我删除该行时命令正常工作,但我不太确定它有什么问题,顺便说一句,“客户”是在代码开头定义的

let customer = message.author.id

【问题讨论】:

console this part client.users.cache.get(customer) 如果没有,问题就在这里。 【参考方案1】:

老实说,我很困惑为什么你会得到 2 个不同的用户对象,而你已经有一个现有的用户对象,即 message.author

如果您不知道,message.author 方法会返回您所指消息的创建者的 User Object,因此为什么要使用您已经拥有的消息作者对象的 id 创建另一个用户对象没有意义,至少在我看来。

您可以非常简单地这样做:

message.author.send('...')

这会向原始消息创建者发送 DM。 另外,如果这种情况仍然发生,请尝试控制台记录message.author,因为您的回调可能会被搞砸。如果此问题持续发生,我很乐意为 Discord (Bqre#0001) 提供帮助 - 如果您这样做了,请先控制台日志并准备好将完整错误发送给我。

【讨论】:

【参考方案2】:

您尝试向其发送消息的用户似乎未缓存或不存在,请确保“客户”实际上是一个 ID 或尝试缓存公会中的所有用户以查看是否可以解决问题.

【讨论】:

我将“customer”替换为“order.orderID”client.users.cache.get(order.orderID).send(您的订单已被认领,将很快发货。); 是的,已经存在这样的// Update Status delete orderDB[ticketID]; orderDB[ticketID] = "orderID": order.orderID, "userID": order.userID, "guildID": order.guildID, "channelID": order.channelID, "order": order.order, "status": "Claimed", "ticketChannelMessageID": "not set", "chef": message.author.id ; 你必须给它一个用户 ID,所以除非 order.orderID 是一个 Discord 用户 ID,否则这是行不通的

以上是关于Discord.js V12 TypeError:无法读取未定义的属性“发送”的主要内容,如果未能解决你的问题,请参考以下文章

“TypeError:无法读取未定义的属性‘split’” discord.js v12

TypeError:client.users.get 不是函数 discord.js V12 [重复]

Discord.js v12 类型错误突击队

discord.js V12中根据反应赋予角色时出错

需要帮助将 Bot 更新到 Discord.js v12

discord.js v12 Discord.EvaluatedPermissions :((