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 partclient.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