首页 > 解决方案 > 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)

谢谢您的帮助

标签: discord.js

解决方案


如果您想主要使用昵称,如果昵称不可用,您可以让您的机器人默认使用用户名。

对于您的第一部分,您可以使用三元运算符。

const autor = member ? member.displayName : message.author.username

如果member返回 null,它将改为使用永远不为 null 的username属性author

对于代码的第二部分,您不妨替换message.member.send()为,message.author.send()从那时起,前者没有提供比后者任何优势,而是只会导致诸如此类的实例。


推荐阅读