public TelegramBotClass()
        {
            _updateHandler = new UpdatesHandler();
            var parameters = _updateHandler.GetAvailableParameters();

            _updateReciever = new UpdatesReciever(parameters);
            _updateReciever.OnUpdatesRecieved += _updateHandler.UpdatesHandle;
        }
Example #2
0
        private Authorizer(string token, UpdatesHandler updatesHandler, Secrets clientSecret)
        {
            updatesHandler.NullInspect(nameof(updatesHandler));
            clientSecret.NullInspect(nameof(clientSecret));

            ClientSecret           = clientSecret;
            _botActions            = new BotActions(token);
            AuthorizeRequestEvent += Authorizer_AuthorizeRequestEvent;
        }
Example #3
0
 public static Authorizer GetInstance(string token, UpdatesHandler updatesHandler, Secrets clientSecret)
 {
     if (Instance == null)
     {
         lock (_locker)
         {
             Instance = new Authorizer(token, updatesHandler, clientSecret);
         }
     }
     return(Instance);
 }
Example #4
0
 public void InitializeUpdatesHandler()
 {
     if (Updates == null)
     {
         throw new InvalidOperationException($"{nameof(Updates)} property must be specified");
     }
     UpdatesHandler = new UpdatesHandler {
         Updates = Updates
     };
     UpdatesHandler.StartHandleUpdates();
 }
Example #5
0
        public MTProtoClientConnection(
            [NotNull] IClientTransportConfig clientTransportConfig,
            [NotNull] IClientTransportFactory clientTransportFactory,
            [NotNull] TLRig tlRig,
            [NotNull] IMessageIdGenerator messageIdGenerator,
            [NotNull] IMessageCodec messageCodec)
        {
            _tlRig = tlRig;
            _messageIdGenerator = messageIdGenerator;
            _messageCodec       = messageCodec;

            DefaultRpcTimeout     = Defaults.RpcTimeout;
            DefaultConnectTimeout = Defaults.ConnectTimeout;

            _methods = new MTProtoAsyncMethods(this);

            _updatesHandler = new UpdatesHandler(_tlRig);

            InitResponseDispatcher(_responseDispatcher);

            // Init transport.
            _clientTransport = clientTransportFactory.CreateTransport(clientTransportConfig);

            // Connector in/out.
            _clientTransport.ObserveOn(DefaultScheduler.Instance).Do(bytes => LogMessageInOut(bytes, "IN")).Subscribe(ProcessIncomingMessageBytes);

            _clientTransport.RegisterOnDisconnectInternally(() =>
            {
                Console.WriteLine("Client has been closed internally.");

                if (_onClosedInternally != null)
                {
                    _onClosedInternally(this, null);
                }

                if (_state == MTProtoConnectionState.Disconnected)

                {
                    return;
                }
                _state = MTProtoConnectionState.Disconnected;

                if (_connectionCts != null)
                {
                    _connectionCts.Cancel();
                    _connectionCts.Dispose();
                    _connectionCts = null;
                }
            });
        }