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

自定义ID不符仍触发if条件?Discord票务菜单交互问题

问题排查:票务系统选择菜单事件逻辑错误

你的代码问题出在if条件的逻辑判断上,存在两个低级错误:

  1. 运算符优先级错误:!的优先级高于===,导致!interaction.customId === 'staff_selection_menu'会先将interaction.customId转成布尔值取反,再和字符串'staff_selection_menu'做比较,这完全偏离了你“判断customId是否为目标值”的预期。
  2. 逻辑运算符与判断逻辑不匹配:你需要过滤掉「非选择菜单交互」和「customId不是staff_selection_menu的选择菜单」,但原代码的||和取反逻辑组合后,反而让不符合条件的交互通过了判断。

修正后的代码

client.on('interactionCreate', async interaction => { 
    console.log(interaction.customId); //remove
    // 先过滤非选择菜单,再过滤不符合目标customId的菜单
    if(!interaction.isSelectMenu() || interaction.customId !== 'staff_selection_menu') return;
    console.log(`[${new Date().toLocaleTimeString()}] Staff ticket category received.`);
    // 后续业务代码...
});

修正说明

  • 先判断!interaction.isSelectMenu():直接排除所有非选择菜单类型的交互
  • 再通过||连接interaction.customId !== 'staff_selection_menu':如果是选择菜单,但customId不是staff_selection_menu,也直接返回
  • 只有当是选择菜单且customId完全匹配目标值时,才会执行后续的日志打印及业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:36:21