aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBohdan Horbeshko <bodqhrohro@gmail.com>2023-09-18 08:17:25 +0300
committerBohdan Horbeshko <bodqhrohro@gmail.com>2023-09-18 08:17:25 +0300
commit93abbe834ee10bf243af9538202bd435e9be1cb6 (patch)
treeb00632d4435d3e3888a8ff08ebad57aeeaa0dcd3
parent6c65ef9988dc786a6b634e05f4e40aacdf9191cb (diff)
Send real JID for room occupants
-rw-r--r--telegram/utils.go8
-rw-r--r--xmpp/extensions/extensions.go1
-rw-r--r--xmpp/gateway/gateway.go14
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 {