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
相关产品推荐
相关产品推荐

