[英]discord.js v12 Userinfo command works when user isn't mentioned or when user id is given
我制作了一个用于提及用户的 userinfo 命令。 这是代码:
client.on('message', async message => {
if (message.content.startsWith('+ui')) {
const args = message.content.slice(4).trim().split(/ +/g);
const member = message.mentions.members.first();
const embed = new MessageEmbed()
.setTitle(`${member.displayName}'s Information`)
.setThumbnail(member.user.displayAvatarURL({
dynamic: true
}))
.addField('User', member, true)
.addField('Discriminator', `\`#${member.user.discriminator}\``, true)
.addField('ID', `\`${member.id}\``, true)
.addField('Status', statuses[member.presence.status], true)
.addField('Bot', `\`${member.user.bot}\``, true)
.addField('Color Role', member.roles.color || '`None`', true)
.addField('Highest Role', member.roles.highest, true)
.addField('Joined server on', `\`${moment(member.joinedAt).format('MMM DD YYYY')}\``, true)
.addField('Joined Discord on', `\`${moment(member.user.createdAt).format('MMM DD YYYY')}\``, true)
.setFooter(message.member.displayName, message.author.displayAvatarURL({
dynamic: true
}))
.setTimestamp()
.setColor(member.displayHexColor);
if (activities.length > 0) embed.setDescription(activities.join('\n'));
if (customStatus) embed.spliceFields(0, 0, {
name: 'Custom Status',
value: customStatus
});
if (userFlags.length > 0) embed.addField('Badges', userFlags.map(flag => flags[flag]).join('\n'));
message.channel.send(embed);
}
});
但是,这仅在发送的消息为+ui @User
时有效。 但是,如果我想要自己的用户信息,我需要在提及自己的地方使用 +ui @mention
。
如果没有提及,我如何让机器人发送消息作者的 output 以及如果给出用户 ID 而不是提及,则发送用户信息。
对于问题引起的任何误解,我们深表歉意。 提前致谢
当message.mentions.members.first()
给你未定义时,你可以添加一个回退值。
const member = message.mentions.members.first() || message.member
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.