javascript - .joinedAt 属性总是在discord.js 中返回未定义

标签 javascript discord discord.js

我现在正在尝试在我的不和谐机器人上发出用户信息命令。其中一个字段是用户加入服务器的时间。

这是我的代码

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中返回未定义

最佳答案

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

您可以删除强制其成为 User 对象的部分,并且您的代码应该可以工作,因为 discord.js 为 GuildMember 上的所有 User 属性添加了 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)
}

关于javascript - .joinedAt 属性总是在discord.js 中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59637222/

相关文章:

javascript - React Native ListView 到 FlatList 迁移

javascript - 文本区域字数限制下限

javascript - Discord.js V12 粗鲁言语过滤器不起作用

javascript - 一旦编辑了命令执行者的命令,机器人如何编辑它的消息?

javascript - 使用 JS(无 Jquery)切换 html IMG 元素的类

javascript - 如何验证表单控件数据大小不超过 2.5 MB?

javascript - 每次使用该命令时输出都会增加

javascript - 获取提供旧数据的变量

javascript - (Discord.js)如何检测用户何时开始/停止在特定语音 channel 中说话

javascript - 使用纯文本而不是提及来定义用户