diff options
author | Bohdan Horbeshko <bodqhrohro@gmail.com> | 2023-09-18 08:17:25 +0300 |
---|---|---|
committer | Bohdan Horbeshko <bodqhrohro@gmail.com> | 2023-09-18 08:17:25 +0300 |
commit | 93abbe834ee10bf243af9538202bd435e9be1cb6 (patch) | |
tree | b00632d4435d3e3888a8ff08ebad57aeeaa0dcd3 | |
parent | 6c65ef9988dc786a6b634e05f4e40aacdf9191cb (diff) |
Send real JID for room occupants
-rw-r--r-- | telegram/utils.go | 8 | ||||
-rw-r--r-- | xmpp/extensions/extensions.go | 1 | ||||
-rw-r--r-- | xmpp/gateway/gateway.go | 14 |
3 files changed, 16 insertions, 7 deletions
diff --git a/telegram/utils.go b/telegram/utils.go index a281a90..9ecf7af 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -302,6 +302,7 @@ func (c *Client) SendMUCStatuses(chatID int64) { }) if err == nil { chatIDString := strconv.FormatInt(chatID, 10) + gatewayJidSuffix := "@" + gateway.Jid.Full() myNickname := "me" if c.me != nil { @@ -337,7 +338,8 @@ func (c *Client) SendMUCStatuses(chatID int64) { gateway.SPFrom(chatIDString), gateway.SPResource(nickname), gateway.SPImmed(true), - gateway.SPAffiliation(affiliation), + gateway.SPMUCAffiliation(affiliation), + gateway.SPMUCJid(strconv.FormatInt(senderId, 10) + gatewayJidSuffix), ) } @@ -348,8 +350,8 @@ func (c *Client) SendMUCStatuses(chatID int64) { gateway.SPFrom(chatIDString), gateway.SPResource(myNickname), gateway.SPImmed(true), - gateway.SPAffiliation(myAffiliation), - gateway.SPMUCStatusCodes([]uint16{110, 210}), + gateway.SPMUCAffiliation(myAffiliation), + gateway.SPMUCStatusCodes([]uint16{100, 110, 210}), ) } } diff --git a/xmpp/extensions/extensions.go b/xmpp/extensions/extensions.go index 1c32fcd..3a2f998 100644 --- a/xmpp/extensions/extensions.go +++ b/xmpp/extensions/extensions.go @@ -224,6 +224,7 @@ type PresenceXMucUserExtension struct { type PresenceXMucUserItem struct { XMLName xml.Name `xml:"item"` Affiliation string `xml:"affiliation,attr"` + Jid string `xml:"jid,attr"` Role string `xml:"role,attr"` } diff --git a/xmpp/gateway/gateway.go b/xmpp/gateway/gateway.go index e4a1be7..d6b7826 100644 --- a/xmpp/gateway/gateway.go +++ b/xmpp/gateway/gateway.go @@ -240,8 +240,11 @@ var SPResource = args.NewString() // SPImmed skips queueing var SPImmed = args.NewBool(args.Default(true)) -// SPAffiliation is a XEP-0045 MUC affiliation -var SPAffiliation = args.NewString() +// SPMUCAffiliation is a XEP-0045 MUC affiliation +var SPMUCAffiliation = args.NewString() + +// SPMUCJid is a real jid of a MUC member +var SPMUCJid = args.NewString() // SPMUCStatusCodes is a set of XEP-0045 MUC status codes var SPMUCStatusCodes = args.New() @@ -301,8 +304,8 @@ func newPresence(bareJid string, to string, args ...args.V) stanza.Presence { }) } } - if SPAffiliation.IsSet(args) { - affiliation := SPAffiliation.Get(args) + if SPMUCAffiliation.IsSet(args) { + affiliation := SPMUCAffiliation.Get(args) if affiliation != "" { userExt := extensions.PresenceXMucUserExtension{ Item: extensions.PresenceXMucUserItem{ @@ -310,6 +313,9 @@ func newPresence(bareJid string, to string, args ...args.V) stanza.Presence { Role: affilationToRole(affiliation), }, } + if SPMUCJid.IsSet(args) { + userExt.Item.Jid = SPMUCJid.Get(args) + } if SPMUCStatusCodes.IsSet(args) { statusCodes := SPMUCStatusCodes.Get(args).([]uint16) for _, statusCode := range statusCodes { |