我正在执行“用户信息”命令,该命令返回用户的Discord用户名,他们的ID,他们的服务器加入日期以及他们是否在线。我能够通过user.id
,user.username
和user.presence.status
显示所有信息。但是,当我尝试使用user.joinedAt
时,屏幕上会显示undefined
。
我知道这是因为User
类和GuildMember
类不同,并且GuildMember
类包含一个User
对象。
但是我的问题是:如何从用户提及中获取.joinedAt
数据?
这是我当前的代码:
let user = message.mentions.users.first();
let embed = new Discord.RichEmbed()
.setColor('#4286f4')
.addField("Full Username:", `${user.username}#${user.discriminator}`)
.addField("User ID:", `${user.id}`)
.addField("Server Join Date:", `${user.joinedAt}`)
.addField("Online Status:", `${user.presence.status}`)
.setThumbnail(user.avatarURL);
message.channel.send(embed);
答案 0 :(得分:0)
从技术上讲,您可以通过从公会获取成员然后使用GuildMember.joinedAt
来找到它:由于User
类代表每个公会中的用户,因此始终需要GuildMember
获取有关特定公会的信息。
let user = message.mentions.users.first(),
member;
if (user) member = message.guild.member(user);
if (member) embed.addField("Server Join Date:", `${member.joinedAt}`);
话虽如此,我不建议您这样做,因为这样做效率不高。只需从成员收藏中提及,然后再从中吸引用户即可。
let member = message.mentions.members.first(),
user;
if (member) user = member.user;
这样做的缺点是,如果您也想从DM执行命令,则不能使用它。在这种情况下,您应该使用第一种方法。
答案 1 :(得分:0)
这是我的用户信息命令的代码:
if (msg.split(" ")[0] === prefix + "userinfo") {
//ex `member @Rinkky
let args = msg.split(" ").slice(1) // gets rid of the command
let rMember = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0])) // Takes the user mentioned, or the ID of a user
let micon = rMember.displayAvatarURL // Gets their Avatar
if(!rMember)
return message.reply("Who that user? I dunno him.") // if there is no user mentioned, or provided, it will say this
let memberembed = new Discord.RichEmbed()
.setDescription("__**Member Information**__")
.setColor(0x15f153)
.setThumbnail(micon) // Their icon
.addField("Name", `${rMember.username}#${rMember.discriminator}`) // Their name, I use a different way, this should work
.addField("ID", rMember.id) // Their ID
.addField("Joined at", rMember.joinedAt) // When they joined
await message.channel.send(memberembed)
};
这将发送嵌入的用户信息,这是我当前的代码,并且
rMember.joinedAt
为我工作。
编辑: 再次查看您的问题后,我发现我并不需要发布所有内容,您也无法加入,因为这只是提及。试试这个:
let user = message.guild.member(message.mentions.users.first())
应该工作
答案 2 :(得分:0)
const member = message.channel.guild.members.cache.find(member => member.user == message.mentions.users.first())