diff --git a/telegram/connect.go b/telegram/connect.go index 400c706..c30f9a0 100644 --- a/telegram/connect.go +++ b/telegram/connect.go @@ -3,6 +3,7 @@ package telegram import ( "github.com/pkg/errors" + log "github.com/sirupsen/logrus" "github.com/zelenin/go-tdlib/client" ) @@ -12,6 +13,8 @@ func (c *Client) Connect() error { return nil } + log.Warn("Connecting to Telegram network...") + authorizer := client.ClientAuthorizer() go func() { for { @@ -48,6 +51,10 @@ func (c *Client) Disconnect() { return } + log.Warn("Disconnecting from Telegram network...") + + // TODO: send unavailable presence to cached chats + c.client.Stop() c.online = false } diff --git a/xmpp/handlers.go b/xmpp/handlers.go index 70f985d..ba93a11 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -96,7 +96,7 @@ func handlePresence(s xmpp.Sender, p stanza.Presence) { } switch p.Type { - case "unsubscribed": + case "unsubscribed", "unsubscribe": session.Disconnect() delete(sessions, bareFromJid) case "unavailable", "error": @@ -105,7 +105,7 @@ func handlePresence(s xmpp.Sender, p stanza.Presence) { // due to the weird implentation of go-tdlib wrapper, it won't // return the client instance until successful authorization go func() { - session.Connect() + err = session.Connect() if err != nil { log.Error(errors.Wrap(err, "TDlib connection failure")) }