package telegram import ( "github.com/pkg/errors" log "github.com/sirupsen/logrus" "github.com/zelenin/go-tdlib/client" ) // Connect starts TDlib connection func (c *Client) Connect() error { if c.online { return nil } log.Warn("Connecting to Telegram network...") authorizer := client.ClientAuthorizer() go func() { for { state, ok := <-authorizer.State if !ok { return } ok = authorizationStateHandler(state) if !ok { return } } }() authorizer.TdlibParameters <- c.parameters tdlibClient, err := client.NewClient(authorizer, c.logVerbosity) if err != nil { return errors.Wrap(err, "Coudn't initialize a Telegram client instance") } c.client = tdlibClient c.online = true go updateHandler(c.client) return nil } // Disconnect drops TDlib connection func (c *Client) Disconnect() { if !c.online { return } log.Warn("Disconnecting from Telegram network...") // TODO: send unavailable presence to cached chats c.client.Stop() c.online = false } func authorizationStateHandler(state client.AuthorizationState) bool { switch state.AuthorizationStateType() { // TODO } return true }