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

Discord.py猜谜游戏:实现错误猜测消息的X表情反应

Discord猜谜机器人错误猜测添加X表情反应解决方案

核心问题分析

你遇到的参数错误,本质是混淆了Discord机器人添加表情反应的两种逻辑:使用自定义表情方法时未传入有效ID,移除ID后又误用了需要ID的调用方式。

直接可用的解决方案

方案1:使用默认❌表情(无需ID)

这是最简便的实现方式,直接调用message.react()传入表情符号或Unicode代码即可:

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent // 必须开启,否则无法读取消息内容
  ]
});

client.on('messageCreate', async (message) => {
  // 跳过机器人自身发送的消息
  if (message.author.bot) return;

  // 匹配!g或!guess命令格式
  const commandMatch = message.content.match(/^!(g|guess)\s+(.+)$/i);
  if (!commandMatch) return;

  const userGuess = commandMatch[2].trim();
  const correctAnswer = '设定的正确答案'; // 替换为你的实际答案判断逻辑

  // 猜测错误时添加X反应
  if (userGuess !== correctAnswer) {
    try {
      // 直接使用默认X表情符号
      await message.react('❌');
      // 也可以用Unicode代码替代:await message.react('\u274C');
    } catch (err) {
      console.error('添加反应失败:', err);
    }
  } else {
    await message.react('✅');
    message.reply('恭喜你猜对了!');
  }
});

client.login('你的机器人Token');

方案2:使用自定义X表情(需正确获取ID)

如果要使用服务器自定义的X表情,需确保机器人能访问该表情所在服务器,再通过以下方式调用:

client.on('messageCreate', async (message) => {
  // 命令匹配逻辑同方案1...

  if (userGuess !== correctAnswer) {
    // 方式1:直接用表情格式字符串(<:表情名称:表情ID>)
    await message.react('<:wrong:1234567890>'); // 替换为你的自定义表情ID

    // 方式2:通过客户端缓存查找表情对象
    const wrongEmoji = client.emojis.cache.get('1234567890'); // 替换为你的表情ID
    if (wrongEmoji) {
      await message.react(wrongEmoji);
    } else {
      // 找不到自定义表情时,降级使用默认表情
      await message.react('❌');
    }
  }
});

错误排查要点

  • 必须开启机器人的MessageContent和GuildMessages权限,否则无法接收和处理用户消息
  • 自定义表情必须是机器人所在服务器的表情,或是支持跨服务器使用的Nitro表情
  • 使用ID调用时,必须传入字符串格式的有效表情ID,不能留空或使用未定义变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:14:54