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

Discord.js v13 点击embed消息表情反应无法创建工单问题求助

Discord.js v13 工单反应事件无响应排查修复
  • 检查网关意图配置
    discord.js v13强制要求显式声明网关意图,否则无法触发messageReactionAdd事件。初始化Client时必须添加以下三个意图:
const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_MESSAGE_REACTIONS
  ],
  partials: ['MESSAGE', 'REACTION', 'USER'] // 显式声明partial类型,匹配你代码中的partial处理逻辑更稳妥
});
  • 修正移除反应的语法
    v13中reaction.users.remove需要传入用户ID而非用户对象,将代码中reaction.users.remove(user)修改为:
reaction.users.remove(user.id);
  • 修复频道创建的类型参数错误
    v13不再支持用字符串text指定频道类型,需要导入ChannelType枚举传入对应值:
  1. 顶部导入依赖:
const { ChannelType, MessageEmbed } = require('discord.js');
  1. 修改频道创建代码的type字段:
reaction.message.guild.channels.create(`ticket-${user.username}`, {
    permissionOverwrites: [
        {
            id: user.id,
            allow: ["SEND_MESSAGES", "VIEW_CHANNEL"]
        },
        {
            id: reaction.message.guild.roles.everyone,
            deny: ["VIEW_CHANNEL"]
        }
    ],
    type: ChannelType.GuildText
})
  • 权限与存储校验
    • 确认机器人在服务器内拥有「管理频道」「管理消息」「发送消息」权限,否则无法完成创建频道、移除用户反应的操作
    • 调试settings.get(${reaction.message.guild.id}-ticket)的返回值,确认存储的工单消息ID与你添加了🎫反应的消息ID完全匹配,避免逻辑提前返回
  • 测试场景注意
    仅机器人上线后新添加的反应会被监听,测试时请在机器人启动后重新对目标消息添加🎫反应验证逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:48:05