From 71f59ee73974ed9a6e13f148a9c743e31ff13775 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Thu, 8 May 2025 20:17:16 -0400 Subject: [PATCH] Duplicate chat presences as following MUC member presences too --- telegram/utils.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/telegram/utils.go b/telegram/utils.go index fe9591e..05c9f05 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -454,11 +454,32 @@ func (c *Client) ProcessStatusUpdate(chatID int64, status string, show string, o gateway.SPPhoto(photo), gateway.SPImmed(gateway.SPImmed.Get(oldArgs)), } - newArgs = gateway.SPAppendFrom(newArgs, chatID) if presenceType != "" { newArgs = append(newArgs, gateway.SPType(presenceType)) } + c.locks.mucCacheLock.Lock() + for mucId, state := range c.mucCache { + member, ok := state.Members[chatID] + if ok { + sMucId := strconv.FormatInt(mucId, 10) + newMucArgs := append( + newArgs, + gateway.SPFrom(sMucId), + gateway.SPResource(member.Nickname), + gateway.SPMUCAffiliation(member.Affiliation), + ) + err := c.sendPresence(newMucArgs...) + if err != nil { + c.locks.mucCacheLock.Unlock() + return err + } + } + } + c.locks.mucCacheLock.Unlock() + + newArgs = gateway.SPAppendFrom(newArgs, chatID) + return c.sendPresence(newArgs...) }