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

Discord.js 自定义服务器表情在反应收集器中无响应问题求助

问题原因及修复方案

1. 直接导致无响应的代码错误

你代码中collect事件回调的第一行存在逻辑错误,访问了不存在的属性,会直接抛出异常中断后续逻辑,导致看起来收集器没有响应:

// 错误写法
reaction.emoji.reaction.users.remove(user.id);

reaction本身就是你当前触发的反应对象,不需要通过.emoji.reaction回溯获取,修正为:

// 正确写法
reaction.users.remove(user.id);

2. 易忽略的网关意图配置问题

如果你使用的是Discord.js v13及以上版本,必须在客户端初始化时开启GUILD_MESSAGE_REACTIONS网关意图,否则程序无法接收到服务器内的消息反应事件,收集器自然不会触发:

// 客户端初始化示例
const client = new Discord.Client({
  intents: [
    Discord.Intents.FLAGS.GUILDS,
    Discord.Intents.FLAGS.GUILD_MESSAGES,
    Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, // 必须添加该意图
    // 其他你业务需要的意图
  ]
});

3. 可选优化点

  • 你在数据库查询回调中重复调用了nojobMsg.reactions.removeAll(),该操作进入switch分支后已经执行过一次,可以删掉重复调用避免冗余请求
  • 建议给collect事件回调添加try/catch捕获异常,方便后续排查其他问题
  • SQL语句建议使用参数化查询,避免SQL注入风险,不要直接拼接用户ID到SQL语句中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:36:05