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

如何修改Discord bot代码 实现embed无footer.text时才触发:pray:表情反应

修改方案

完整调整后代码

// 检查消息是否携带embed,原判断>=0恒成立,修正为>=1
if(message.embeds.length >= 1) 
{
  const embeds = message.embeds
  // console.log(embeds) 仅作日志打印
  // Discord.js v13支持单条消息发送多个embed,因此遍历所有embed
  for(let i = 0; i < embeds.length; i++)
  {
    // 核心逻辑反转:如果当前embed存在有效footer.text,直接跳过不执行反应
    if (embeds[i] && embeds[i].footer && embeds[i].footer.text !== null) return;
    // 仅无footer.text时延迟1秒添加反应
    setTimeout(function(){
      message.react(':pray:')
    }, 1000);
  }
}

如果你的运行环境支持ES2020+语法,也可以用可选链简化判断逻辑,功能完全一致:

// 检查消息是否携带embed
if(message.embeds.length >= 1) 
{
  const embeds = message.embeds
  // console.log(embeds) 仅作日志打印
  for(let i = 0; i < embeds.length; i++)
  {
    if (embeds[i]?.footer?.text) return;
    setTimeout(() => message.react(':pray:'), 1000);
  }
}

关键修改点

  • 修正embed存在性校验逻辑:原代码message.embeds.length >= 0无论消息是否带embed都会命中,不符合注释的校验目的,调整为>= 1仅当消息存在至少1个embed时才进入后续逻辑
  • 反转footer.text判断逻辑:原代码判断逻辑为「无footer.text就终止执行」,调整为「存在footer.text就终止执行」,仅当embed无有效footer.text时才触发添加表情的操作
  • 变量名规范优化:原代码用embed命名embed数组,调整为embeds更符合语义,不影响功能运行

内容的提问来源于stack exchange,提问作者Andres Avendaño Aguilar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:48:03