Discord.js消息计数触发发信后不复位仅生效一次如何修复
问题修复方案
问题根因
当前逻辑中msgCount累加到100触发消息发送后,没有重置计数器的操作,msgCount会一直停留在100,后续永远无法再满足msgCount === 100的判断条件,所以只会触发一次消息发送。
修复后完整代码
let msgCount = 0; // 全局计数器放在事件外是正确的,用于跨事件累计消息数 // 消息接收事件 client.on("messageCreate", async(message)=>{ if (message.author.bot) return; // 仅统计目标频道的非机器人消息 if (message.channel.id === "替换为你的目标频道ID") { msgCount += 1; } if (msgCount === 100) { const channel = await client.channels.cache.get("替换为你的目标频道ID") await channel.send("hi") // 消息发送完成后重置计数器,开启下一轮计数 msgCount = 0; } })
可选优化点
- 可以将频道ID提取为公共常量,避免多处填写出现拼写错误
- 发送消息前可以增加频道非空判断,避免获取频道失败导致代码报错
- 如果需要支持多频道独立计数,可以将
msgCount替换为以频道ID为键的对象存储,每个频道单独统计数值
内容的提问来源于stack exchange,提问作者Bgroup Official
相关产品推荐
相关产品推荐

