如何在Discord.js指令中实现提及(@)用户的交互功能
问题修复说明
你当前代码无法实现@用户交互的核心原因是:虽然已经通过message.mentions.users.first()捕获了被提及的用户数据存入user变量,但构造Embed嵌入消息时依旧硬编码使用了指令触发者message.author的信息,同时代码存在重复引入Discord模块的冗余问题。
修复后的完整代码如下:
const Discord = require("discord.js"); module.exports = new Command({ name: "avatar", permission: "SEND_MESSAGES", async run(message) { // 优先取被@的用户,没有则取指令触发者本人 const user = message.mentions.users.first() || message.author; const avatarEmbed = new Discord.MessageEmbed(); avatarEmbed .setColor("FF0000") .setAuthor(user.username) .setImage(user.avatarURL({ dynamic: true })) message.channel.send({embeds: [avatarEmbed]}); } });
修复后调用规则:
- 直接发送你配置的指令前缀+
avatar,会返回你自己的头像 - 发送指令前缀+
avatar @某个用户,会返回被@用户的头像
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

