|
|
@ -339,18 +339,35 @@ func handleGetDisco(dt discoType, s xmpp.Sender, iq *stanza.IQ) { |
|
|
|
|
|
|
|
if dt == discoTypeInfo { |
|
|
|
disco := answer.DiscoInfo() |
|
|
|
_, ok := toToID(iq.To) |
|
|
|
if ok { |
|
|
|
toID, toOk := toToID(iq.To) |
|
|
|
if toOk { |
|
|
|
disco.AddIdentity("", "account", "registered") |
|
|
|
} else { |
|
|
|
disco.AddIdentity("Telegram Gateway", "gateway", "telegram") |
|
|
|
} |
|
|
|
bare, _, ok := splitFrom(iq.From) |
|
|
|
if ok { |
|
|
|
session, ok := sessions[bare] |
|
|
|
if ok && session.Session.MUC { |
|
|
|
disco.AddFeatures(stanza.NSDiscoItems) |
|
|
|
disco.AddIdentity("Telegram group chats", "conference", "text") |
|
|
|
bare, _, fromOk := splitFrom(iq.From) |
|
|
|
if fromOk { |
|
|
|
session, sessionOk := sessions[bare] |
|
|
|
if sessionOk && session.Session.MUC { |
|
|
|
if toOk { |
|
|
|
chat, _, err := session.GetContactByID(toID, nil) |
|
|
|
if err == nil && session.IsGroup(chat) { |
|
|
|
disco.AddIdentity(chat.Title, "conference", "text") |
|
|
|
} |
|
|
|
|
|
|
|
disco.AddFeatures( |
|
|
|
"http://jabber.org/protocol/muc", |
|
|
|
"muc_persistent", |
|
|
|
"muc_hidden", |
|
|
|
"muc_membersonly", |
|
|
|
"muc_unmoderated", |
|
|
|
"muc_nonanonymous", |
|
|
|
"muc_unsecured", |
|
|
|
) |
|
|
|
} else { |
|
|
|
disco.AddFeatures(stanza.NSDiscoItems) |
|
|
|
disco.AddIdentity("Telegram group chats", "conference", "text") |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
answer.Payload = disco |
|
|
|