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

Discord.js如何实现bot对自身slash command回复添加表情反应

实现方案

Interaction 本身无反应相关方法,你需要获取交互回复对应的消息实例后调用消息的反应方法即可,具体实现如下:

核心原理

interaction.reply() 配置 fetchReply: true 后会返回 Bot 发送的回复消息对象,该对象自带 react() 方法可直接添加表情反应。

完整修改代码

client.on('interactionCreate', async interaction => {
    if (!interaction.isCommand()) return;

    const { commandName } = interaction;
    const gift = ["Gift 1", "Nothing", "Gift 3", "Nothing", "Gift 5", "Nothing", "Gift 7", "Nothing"]
    const random = Math.floor(Math.random() * gift.length);

    if (commandName === 'gift') {
        if (gift[random] === 'Nothing') {
            // 获取回复消息实例
            const replyMessage = await interaction.reply({
                content: "No Luck today!",
                fetchReply: true
            });
            // 添加哭脸表情反应,可替换为你需要的任意表情
            await replyMessage.react('😢');
        } else {
            const replyMessage = await interaction.reply({
                content: `Congrats ${interaction.user.username} you won ${gift[random]} !`,
                fetchReply: true
            });
            // 添加庆祝表情反应
            await replyMessage.react('🎉');
        }
    }
    // calendar指令同理处理
    else if (commandName === 'calendar' && gift[random] !== 'Nothing') {
        const replyMessage = await interaction.reply({
            content: `Congrats ${interaction.user.username} you won ${gift[random]} !`,
            fetchReply: true
        });
        await replyMessage.react('🎉');
    }
});

注意事项

  • 必须添加 fetchReply: true 配置,否则旧版本 Discord.js 不会返回完整可操作的消息实例,无法调用反应方法
  • 若使用自定义表情,直接传入表情的数字ID即可,无需额外拼接符号
  • 所有异步操作都需要添加 await 关键字,避免出现异步抛出未捕获错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:45:04