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

如何创建可与其他用户交互的Discord斜杠命令?

解决Discord.js /hug斜杠命令的用户提及与随机Embed问题

你的代码存在几个核心问题,导致要么无响应要么报错,以下是具体修正方案:

问题分析

  1. 斜杠命令未添加目标用户参数,无法让用户选择要抱抱的对象
  2. 硬写的{User} hugs {user}!没有实际替换成有效用户提及,字符串格式无效
  3. 未定义随机回复数组reply和随机数randomNum,导致取值报错
  4. Embed标题与/hug场景不符

修正后的完整代码

const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');

// 定义随机抱抱回复内容
const hugReplies = [
    "温暖的拥抱!🥰",
    "给你一个大大的熊抱!🐻",
    "扑过去紧紧抱住!🤗",
    "轻轻抱了抱你~",
    "超治愈的抱抱送达!"
];

module.exports = {
    data: new SlashCommandBuilder()
        // Discord要求斜杠命令名必须小写
        .setName("hug")
        .setDescription('给朋友一个抱抱!')
        // 添加必填的目标用户参数
        .addUserOption(option =>
            option.setName("target")
                .setDescription("要抱抱的用户")
                .setRequired(true)),
    async execute(interaction) {
        // 获取用户选择的目标对象
        const targetUser = interaction.options.getUser("target");
        // 生成随机回复索引
        const randomNum = Math.floor(Math.random() * hugReplies.length);
        const randomReply = hugReplies[randomNum];

        const embed = new EmbedBuilder()
            .setTitle(`${interaction.user.username} 发起了抱抱!`)
            .setColor(0x0099ff)
            // 用用户对象自动生成Discord可识别的@提及格式
            .addFields([
                { name: `${interaction.user} 抱抱了 ${targetUser}!`, value: randomReply }
            ]);
        
        await interaction.reply({ embeds: [embed] });
    }
};

关键修改说明

  • 添加用户参数:通过addUserOption添加必填的target参数,让用户能选择要抱抱的对象
  • 正确提及用户:使用interaction.user(发起命令的用户)和targetUser(目标用户)的默认toString()方法,自动生成Discord可识别的@提及格式
  • 随机回复逻辑:定义hugReplies数组存储随机内容,用Math.random()生成索引获取随机回复
  • 规范命令名:Discord要求斜杠命令名必须小写,所以将原Hug改为hug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:44:58