【问题标题】:.joinedAt proprety always returning undefined in discord.js.joinedAt 属性总是在 discord.js 中返回 undefined
【发布时间】:2023-04-11 04:46:01
【问题描述】:

我现在正试图在我的 discord 机器人上创建一个 userinfo 命令。其中一个字段是用户加入服务器的时间。

这是我的代码

module.exports.run = async (Client, msg, args, UserDataBase, messages, commands_ran) => {
    let user = msg.guild.member(msg.mentions.users.first() || msg.guild.members.get(args[0]))

    if(!user) {
        user = msg.author
    }else {
         user = user.user
    }

    const embed = new Discord.RichEmbed()
    .setTitle('**User info**')
    .setThumbnail(user.avatarURL)
    .addField('Name:', user.username,true)
    .addField('Tag:', `#${user.discriminator}`,true)
    .addField('Date Joined:', user.createdAt)
    .addField('Joined Server:', user.joinedAt)
    msg.channel.send(embed)
}

它总是在 final product 中返回 Undefined

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    User 对象没有joinedAt 属性,因为用户不特定于任何服务器。用户在服务器中的表示是GuildMember,这是您在函数的第一行得到的。

    您可以只删除强制它成为用户对象的部分,并且您的代码应该可以工作,因为 discord.js 为 GuildMember 上的所有用户属性添加了 getter。

    module.exports.run = async (Client, msg, args, UserDataBase, messages, commands_ran) => {
        let user = msg.guild.member(msg.mentions.users.first() || msg.guild.members.get(args[0]))
    
        const embed = new Discord.RichEmbed()
        .setTitle('**User info**')
        .setThumbnail(user.avatarURL)
        .addField('Name:', user.username,true)
        .addField('Tag:', `#${user.discriminator}`,true)
        .addField('Date Joined:', user.createdAt)
        .addField('Joined Server:', user.joinedAt)
        msg.channel.send(embed)
    }
    

    【讨论】:

      【解决方案2】:

      user 没有任何joinedAt 属性,因此您需要使用GuildMember。 这可以通过 member = msg.guild.member(user) 获得 然后.addField('Joined at:' member.joinedAt)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-18
        • 2016-01-16
        • 1970-01-01
        • 2012-09-05
        • 2019-06-27
        • 2015-08-11
        • 1970-01-01
        相关资源
        最近更新 更多