public static IServiceCollection AddTelegramBot(this IServiceCollection services)
        {
            var updateTypes = new UpdateType[]
            {
                UpdateType.CallbackQuery,
                UpdateType.ChannelPost,
                UpdateType.ChosenInlineResult,
                UpdateType.EditedChannelPost,
                UpdateType.EditedMessage,
                UpdateType.InlineQuery,
                UpdateType.Message,
                UpdateType.Poll,
                UpdateType.PreCheckoutQuery,
                UpdateType.ShippingQuery,
                UpdateType.Unknown
            };

            var token      = EnvironmentExtensions.GetTelegramKey();
            var hookUrl    = EnvironmentExtensions.GetWebHookUrl();
            var socks5Host = EnvironmentExtensions.GetSocks5Host();
            var socks5Port = EnvironmentExtensions.GetSocks5Port();

            var client = string.IsNullOrEmpty(socks5Host)
                                ? new TelegramBotClient(token)
                                : new TelegramBotClient(
                token,
                new HttpToSocks5Proxy(socks5Host, socks5Port));

            client.SetWebhookAsync(hookUrl, maxConnections: 3).ConfigureAwait(false);

            return(services
                   .AddSingleton(client));
        }
        public static IServiceCollection AddDbContext(this IServiceCollection services)
        {
            var builder = new PostgreSqlConnectionStringBuilder(EnvironmentExtensions.GetDataBaseUrl())
            {
                Pooling = true,
                TrustServerCertificate = true,
                SslMode = SslMode.Require
            };

            services.AddEntityFrameworkNpgsql()
            .AddDbContext <MarathonContext>(options => options.UseNpgsql(builder.ConnectionString));

            return(services);
        }