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

Node.js新手求助:如何让Discord Slash命令机器人显示提问用户及问题

解决方案

1. 定义person变量获取提问用户

在Discord.js的Slash命令交互逻辑里,发起命令的用户信息可以通过interaction.user对象直接获取,你可以根据需求选择显示用户的不同标识:

  • 显示用户完整标签(如JohnDoe#1234):const person = interaction.user.tag;
  • 显示纯用户名(不带#后缀):const person = interaction.user.username;
  • 显示用户在当前服务器的昵称:const person = interaction.member.displayName;(需要机器人有服务器成员权限)

2. 修正拼写错误

你代码里的queston是拼写失误,必须改成question,否则无法正确读取用户输入的问题,命令注册和参数获取的地方都要修正。

修改后的完整代码

命令处理代码:

if (name === 'ask') {
    const messages = ['no', 'yes', 'uhh', 'maybe'];
    const rnd = Math.floor(Math.random() * messages.length);
    const question = options.getString('question'); // 修正拼写
    const person = interaction.user.tag; // 获取用户标签
    const embed = new Discord.MessageEmbed()
        .setDescription(`${person} : ${question}\nBen : ${messages[rnd]}`)
        .setColor('RED');
    interaction.reply({ embeds: [embed] });
}

命令注册代码:

commands.create({
    name: "ask",
    description: "answers any question you ask",
    options: [
        {
            name: "question", // 修正拼写
            description: "the question you want ben to answer",
            required: true,
            type: Discord.Constants.ApplicationCommandOptionTypes.STRING
        }
    ]
});

补充说明

  • interaction.user是Discord.js Slash命令交互对象的内置属性,默认指向发起命令的用户,无需额外配置权限(基础机器人权限即可)。
  • 建议用const替代var,避免变量提升引发的潜在问题,这是现代JavaScript的通用最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:35:16