升级discord.js v13后,提及成员返回ID而非用户名问题求助
解决discord.js v13中提及成员显示ID而非用户名的问题
在discord.js v13版本中,GuildMember对象直接参与字符串拼接时,默认返回的是用户ID,这和旧版本的行为不同。你需要明确调用对应的属性来获取用户名或昵称。
问题原因
旧版本的discord.js中,GuildMember对象转字符串时会返回用户名或提及格式,但v13调整了这一行为,直接转字符串会返回用户ID。
解决方案
根据需求选择以下方式之一:
- 获取用户原始用户名:调用
member.user.username - 获取服务器内的昵称:调用
member.displayName - 生成可点击的@提及标签:调用
member.toString()(显示@用户名,支持点击跳转用户资料)
修改后的代码示例
const mentionedMember = message.mentions.members.first(); // 先判断是否存在提及的成员,避免报错 if (!mentionedMember) { return message.reply('请提及一个成员!'); } const galletita1 = new Discord.MessageEmbed() .setDescription(`${message.author.username} Toma una galletita ${mentionedMember.user.username}`) .setFooter({ text: "espero te guste" }) .setColor('#FFFF00') .setImage('http://pm1.narvii.com/6559/7ce32024e00c60cb695a8e838d5bcaf3264bc612_hq.jpg'); // v13发送Embed的格式需要调整 message.channel.send({ embeds: [galletita1] });
额外说明
v13发送Embed的方式也有更新,必须用{ embeds: [embed对象] }作为参数,建议同步调整发送逻辑避免其他问题。
内容的提问来源于stack exchange,提问作者jojan gojan
相关产品推荐
相关产品推荐

