Extract new MUC members from join messages

This commit is contained in:
Bohdan Horbeshko 2025-06-15 08:37:37 -04:00
parent 8ce5c8373f
commit cff81d227c

View file

@ -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,