You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:20:05