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

Bot重复发送同一Embed消息6次问题求助

问题解决:Discord Bot重复发送Embed消息

根本原因

你的代码中,client.channels.cache.get(...).send(e5566) 被放在遍历玩家标识符的for循环内部。每个玩家通常包含多个标识符(如Steam、Discord、License等,一般为6个左右),循环会随标识符数量执行对应次数,每次都发送一次Embed,最终导致重复消息。

修正后的代码

on("playerConnecting", async (name) => {
    const player = global.source;
    let discorddd = "NOT DETECTED";
    
    // 遍历标识符,找到Discord ID后停止循环
    for (let i = 0; i < GetNumPlayerIdentifiers(player); i++) {
        const identifier = GetPlayerIdentifier(player, i);
        if (identifier.includes('discord:')) {
            discorddd = identifier.split('discord:').pop();
            break;
        }
    }
    
    // 仅发送一次Embed消息
    const e5566 = new MessageEmbed()
        .setColor("RED")
        .setDescription(`${discorddd}`);
    
    client.channels.cache.get('1051799184803643392').send(e5566);
})

关键优化点

  • 将Embed创建与发送逻辑移至循环外部,确保仅执行一次
  • 找到Discord标识符后立即退出循环,避免无意义的遍历
  • 仅在检测到Discord标识符时处理ID,保留"NOT DETECTED"默认值的正确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:50:43