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

如何在Discord.js中实现命令回复时自动提及触发用户?

解决Discord.js中Slash Command自动提及触发用户的问题

我懂你的困扰——你已经在客户端配置里加了allowedMentions: { repliedUser: true },但用Slash Command(比如你的ping命令)回复时,并没有自动@触发命令的用户。这是因为交互命令的回复配置会覆盖客户端的全局设置,你需要在interaction.reply()的参数里显式指定这个选项。

单个命令的快速修改方案

直接调整你的ping命令代码,在reply的选项中补充allowedMentions配置即可:

module.exports = {
 name: 'ping',
 description: 'Replies with Pong!',
 async execute(interaction) {
 await interaction.reply({ 
     content: 'Pong!',
     allowedMentions: { repliedUser: true } // 添加这一行实现自动提及
 });
 },
};

这样用户触发/ping时,机器人的回复就会自动@该用户了。

全局统一配置的优化方案

如果不想给每个命令都重复写这段配置,可以在客户端的interactionCreate事件里统一处理。比如在你的events文件夹中修改对应的事件文件:

// interactionCreate事件示例代码
module.exports = {
 name: 'interactionCreate',
 async execute(interaction, client) {
 if (!interaction.isCommand()) return;

 const command = client.commands.get(interaction.commandName);
 if (!command) return;

 try {
     // 统一传入自动提及的配置给所有命令
     await command.execute(interaction, { allowedMentions: { repliedUser: true } });
 } catch (error) {
     console.error(error);
     await interaction.reply({ content: '执行命令时出现错误!', ephemeral: true });
 }
 },
};

对应的命令文件也要调整execute方法,接收并使用这个全局配置:

// 修改后的ping命令
module.exports = {
 name: 'ping',
 description: 'Replies with Pong!',
 async execute(interaction, globalOptions) {
 await interaction.reply({ 
     content: 'Pong!',
     ...globalOptions // 展开全局配置
 });
 },
};

补充说明

你之前设置的客户端全局allowedMentions其实是对**普通消息回复(比如message.reply())**生效的,但Slash Command属于交互(Interaction)系统,它的回复配置是独立的,所以需要单独指定。

内容的提问来源于stack exchange,提问作者user15952596

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:38:15