mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-19 12:16:28 +00:00
fix(channels): collect contacts for DM and group-mentioned messages (#271)
* fix(channels): collect contacts for DM and group-mentioned messages
Previously, EnsureContact was only called inside the "not mentioned →
record history → return" branch, so contacts were never saved for
messages that the bot actually processed (DMs and group @mentions).
This caused the contacts list to show empty names ("—") for active
users across all channels.
Move contact collection to the main processing path (before
PublishInbound / HandleMessage) so every processed message upserts
the sender's display name. The existing ContactCollector 30-minute
cache prevents redundant DB writes.
Affected channels: Feishu, Telegram, Discord, Slack, Zalo, WhatsApp.
* fix(slack): use clean userID for EnsureContact cache key
The senderID param in HandleMessage is the compound "U123|DisplayName"
form, which produces a different cache key than the clean "U123" used
in the group-history path (handlers.go:178). Use userID (extracted
clean ID) to ensure cache dedup works correctly.
---------
Co-authored-by: Luvu182 <208665161+Luvu182@users.noreply.github.com>
Co-authored-by: viettranx <viettranx@gmail.com>
This commit is contained in:
6 files changed
+35
No files matched your search
@@ -131,6 +131,11 @@ func (c *Channel) handleMessageEvent(ctx context.Context, event *MessageEvent) {
|
||||
peerKind = "group"
|
||||
}
|
||||
|
||||
// Collect contact for processed messages (DM + group-mentioned).
|
||||
if cc := c.ContactCollector(); cc != nil {
|
||||
cc.EnsureContact(ctx, c.Type(), c.Name(), mc.SenderID, mc.SenderID, senderName, "", peerKind)
|
||||
}
|
||||
|
||||
metadata := map[string]string{
|
||||
"message_id": messageID,
|
||||
"chat_type": mc.ChatType,
|
||||
|
||||
Reference in new issue
Block a user