我现在正在尝试在我的不和谐机器人上发出用户信息命令。其中一个字段是用户加入服务器的时间。
这是我的代码
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/