如何修改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
相关产品推荐
相关产品推荐

