diff --git a/pkg/channels/wecom.go b/pkg/channels/wecom.go index f8daf89de..863efd79a 100644 --- a/pkg/channels/wecom.go +++ b/pkg/channels/wecom.go @@ -339,14 +339,15 @@ func (c *WeComBotChannel) processMessage(ctx context.Context, msg WeComBotMessag return } c.processedMsgs[msgID] = true - c.msgMu.Unlock() - // Clean up old messages periodically (keep last 1000) + // Clean up old messages periodically (keep last 1000). + // Keep the current message id in the new map to preserve dedup behavior. if len(c.processedMsgs) > 1000 { - c.msgMu.Lock() - c.processedMsgs = make(map[string]bool) - c.msgMu.Unlock() + c.processedMsgs = map[string]bool{ + msgID: true, + } } + c.msgMu.Unlock() senderID := msg.From.UserID