Discord.js v14前缀用户信息命令:强制提及成员及信息获取问题
Discord 用户信息命令修复方案
问题原因
你的代码中使用message.content === ',user'做触发判断,只有当消息内容完全等于,user时才会执行逻辑。但输入,user @用户时,消息内容是,user @用户,和,user不相等,所以无法触发命令逻辑。
修正后的代码
client.on('messageCreate', (message) => { // 判断是否触发用户信息命令(允许命令后带参数) if (message.content.startsWith(',user')) { // 获取被提及的第一个用户 const targetUser = message.mentions.users.first(); // 没有提及用户时返回提示 if (!targetUser) { return message.reply('你必须提及一位成员'); } // 构建用户信息嵌入消息 const userinfoEmbed = new EmbedBuilder() .setTitle(`${targetUser.tag} 的用户信息`) .setThumbnail(targetUser.displayAvatarURL()) .addFields( { name: '用户ID', value: targetUser.id, inline: true }, { name: '创建时间', value: targetUser.createdAt.toLocaleString(), inline: true }, { name: '用户名', value: targetUser.username, inline: true }, { name: '服务器昵称', value: message.guild.members.cache.get(targetUser.id).nickname || '无', inline: true } ) .setColor('#2e2f36'); message.channel.send({ embeds: [userinfoEmbed] }); } });
关键修改说明
- 用
message.content.startsWith(',user')替代严格相等判断,确保命令后带提及用户时也能触发逻辑。 - 新增提及检查:如果
targetUser不存在,直接回复提示消息,符合需求要求。 - 丰富了嵌入消息内容,展示用户的实际信息(ID、创建时间、用户名、服务器昵称),替代原占位文本。
- 若需要获取更多服务器成员信息,确保机器人有权限访问成员缓存,或使用
fetch方法主动获取成员数据。
内容的提问来源于stack exchange,提问作者Sum.
相关产品推荐
相关产品推荐

