discord.js - console.log 消息所有者的显示名称时出错
问题描述
我得到这个错误:
TypeError: Cannot read property 'displayName' of null
这是应该控制台记录命令和使用它的用户的用户名的代码:
client.on('message', (message) => {
const { content, member } = message
const autor = member.displayName || member.username
aliases.forEach((alias) => {
const command = `${prefix}${alias}`
if (content.startsWith(`${command}`) || content === command) {
console.log(`${autor} used: ${command}`)
callback(message)
}
})
})
在控制台中,我得到了用户名,但它仍然给出了错误。如果我使用特定命令,它只会给出这个错误。该命令发送消息的嵌入。然后它将消息的副本发送给发送它的用户。
if (message.content.includes('...'))
{message.delete({timeout: 800})
.then(message.member.send(message.content))
message.channel.send(embed)
谢谢您的帮助
解决方案
如果您想主要使用昵称,如果昵称不可用,您可以让您的机器人默认使用用户名。
对于您的第一部分,您可以使用三元运算符。
const autor = member ? member.displayName : message.author.username
如果member
返回 null,它将改为使用永远不为 null 的username
属性author
。
对于代码的第二部分,您不妨替换message.member.send()
为,message.author.send()
从那时起,前者没有提供比后者任何优势,而是只会导致诸如此类的实例。
推荐阅读
- python - 可以根据段落中的编号将字符串拆分为列
- mysql - 如何使用运算符和 AVG() 找出属性值大于所有属性平均值的元组?
- python-3.x - 将 TFRECORD 文件转换为文本数据
- python-3.x - 嵌套元组的压缩列表
- swagger - 如何在不使用 Swashbuckle 的情况下隐藏在 Swagger 中显示的属性
- php - php单击用户名以显示个人资料
- c# - 时间:2019-04-01 标签:c#read/editaccdb宏
- javascript - 根据select html元素动态更改axios BaseURL
- java - Java keytool importkeystore 并设置别名
- tkinter - 将小部件绑定到菜单键