From 6d24823bb312ae922119c4f3236d9c3fcbd8f7f2 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Wed, 25 Jun 2025 13:14:54 -0400 Subject: [PATCH] Assure all MUC presences have affiliation/role/realJID --- telegram/connect.go | 5 +++++ telegram/utils.go | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/telegram/connect.go b/telegram/connect.go index b332352..9eca5cc 100644 --- a/telegram/connect.go +++ b/telegram/connect.go @@ -236,6 +236,10 @@ func (c *Client) Disconnect(resource string, quit bool) bool { if c.Session.MUC { c.locks.mucCacheLock.Lock() + var myJid string + if c.me != nil { + myJid = gateway.CHATJID(c.me.Id, true) + } for chatID := range c.mucCache { c.sendPresence( gateway.SPFrom(gateway.MUCNODE(chatID)), @@ -243,6 +247,7 @@ func (c *Client) Disconnect(resource string, quit bool) bool { gateway.SPType("unavailable"), gateway.SPMUCAffiliation("none"), gateway.SPMUCRole("none"), + gateway.SPMUCJid(myJid), gateway.SPMUCStatusCodes([]uint16{110, 332}), ) } diff --git a/telegram/utils.go b/telegram/utils.go index 80ff4b3..bf99046 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -607,12 +607,17 @@ func (c *Client) DestroyMUC(chatId int64) error { for resource := range mucState.Resources { toResources = append(toResources, resource) } + var myJid string + if c.me != nil { + myJid = gateway.CHATJID(c.me.Id, true) + } c.sendPresence( gateway.SPFrom(gateway.MUCNODE(chatId)), gateway.SPResource(c.GetMUCNickname(0)), gateway.SPToResources(toResources), gateway.SPMUCAffiliation("none"), gateway.SPMUCRole("none"), + gateway.SPMUCJid(myJid), gateway.SPMUCDestroy(""), ) @@ -649,8 +654,10 @@ func (c *Client) sendMUCStatuses(chatID int64) { func (c *Client) updateMUCOccupants(mucState *MUCState, chatID int64, members []*client.ChatMember) { sChatId := gateway.MUCNODE(chatID) myNickname := "me" + var myJid string if c.me != nil { myNickname = c.getFullName(c.me) + myJid = gateway.CHATJID(c.me.Id, true) } myAffiliation := "member" myRole := "participant" @@ -690,6 +697,7 @@ func (c *Client) updateMUCOccupants(mucState *MUCState, chatID int64, members [] gateway.SPImmed(true), gateway.SPMUCAffiliation(myAffiliation), gateway.SPMUCRole(myRole), + gateway.SPMUCJid(myJid), gateway.SPMUCStatusCodes([]uint16{100, 110, 210}), ) }