From cff81d227cf0c67011b4d35613c0aebcbe6cc777 Mon Sep 17 00:00:00 2001 From: Bohdan Horbeshko Date: Sun, 15 Jun 2025 08:37:37 -0400 Subject: [PATCH] Extract new MUC members from join messages --- telegram/utils.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/telegram/utils.go b/telegram/utils.go index b166551..e9d86a3 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -1630,17 +1630,25 @@ func (c *Client) ProcessIncomingMessage(chatId int64, message *client.Message) { groupChatFrom := "" groupChatTos := []string{} if c.Session.MUC && c.IsGroup(chat) { - if message.Content.MessageContentType() == client.TypeMessageChatDeleteMember { - deleteMember, _ := message.Content.(*client.MessageChatDeleteMember) - c.mucMemberRolePresence(chatId, deleteMember.UserId, ChatMemberStatusKicked, c.GetMUCNickname(deleteMember.UserId)) - } - senderId := c.getMessageSenderId(message) if senderId == 0 { log.Errorf("Invalid sender id for message %#v", message) return } + switch message.Content.MessageContentType() { + case client.TypeMessageChatJoinByLink: + c.mucMemberRolePresence(chatId, senderId, ChatMemberStatusUnmuted, c.GetMUCNickname(senderId)) + case client.TypeMessageChatAddMembers: + addMembers, _ := message.Content.(*client.MessageChatAddMembers) + for _, memberId := range addMembers.MemberUserIds { + c.mucMemberRolePresence(chatId, memberId, ChatMemberStatusUnmuted, c.GetMUCNickname(memberId)) + } + case client.TypeMessageChatDeleteMember: + deleteMember, _ := message.Content.(*client.MessageChatDeleteMember) + c.mucMemberRolePresence(chatId, deleteMember.UserId, ChatMemberStatusKicked, c.GetMUCNickname(deleteMember.UserId)) + } + if !c.mucCacheHasMember(chatId, senderId) { chatMember, err := c.client.GetChatMember(&client.GetChatMemberRequest{ ChatId: chatId,