Example #1
0
        public void BotRun()
        {
            context.Database.EnsureCreated();
            MainProvider provider = new MainProvider();

            client = new TelegramBotClient(Constant.Token);
            CommandProvider commandProvider = new CommandProvider(client, provider);

            client.StartReceiving();

            List <string> commandList = CommandList.GetCommands();
            var           scope       = new ServiceCollection()
                                        .AddScoped <IMessageHandler, MessageHandler>(x => new MessageHandler(client, provider, commandProvider))
                                        .AddScoped <ICallbackHandler, CallBackHandler>(i => new CallBackHandler(client, provider)).BuildServiceProvider();

            client.OnCallbackQuery += async(object sender, CallbackQueryEventArgs args) =>
            {
                var callbackHandler = scope.GetService <ICallbackHandler>();
                await callbackHandler.BaseCallBackHandler(args);
            };

            client.OnMessage += async(object sender, MessageEventArgs args) =>
            {
                var handler = scope.GetService <IMessageHandler>();
                await handler.BaseHandlerMessage(args, args.Message.Text);
            };
        }
Example #2
0
 public void DeleteAllAccessTokens()
 {
     using (var proc = MainProvider.CreateDataProcedure("TRUNCATE TABLE AccessTokens"))
     {
         proc.CommandType = CommandType.Text;
         proc.ExecuteNonQuery();
     }
 }
Example #3
0
        public MessageHandler(TelegramBotClient client, MainProvider provider, CommandProvider commandProvider)
        {
            this.client          = client;
            this.provider        = provider;
            this.commandProvider = commandProvider;

            stopChat = new StopChat(client, provider);
        }
Example #4
0
 public void DeleteAccessTokensByContent(int contentId)
 {
     using (var proc = MainProvider.CreateDataProcedure("DELETE FROM [dbo].[AccessTokens] WHERE [ContentId] = @ContentId")
                       .AddParameter("@ContentId", contentId))
     {
         proc.CommandType = CommandType.Text;
         proc.ExecuteNonQuery();
     }
 }
Example #5
0
 public CallBackHandler(TelegramBotClient client, MainProvider provider)
 {
     this.provider       = provider;
     this.client         = client;
     ordersCallback      = new CallBackOrders(client, provider);
     offerCallback       = new RequestOfferCallBack(client, provider);
     myOffersCallback    = new ShowMyOffersCallBack(client, provider);
     startDialogCallBack = new StartDialogCallBack(client, provider);
     showUsersCallback   = new CallBackShowUsers(client, provider);
 }
Example #6
0
 public void DeleteAccessToken(string tokenValue)
 {
     using (var proc = MainProvider.CreateDataProcedure("DELETE FROM [dbo].[AccessTokens] " +
                                                        $"WHERE [Value] = @Value COLLATE {AccessTokenValueCollationName}")
                       .AddParameter("@Value", tokenValue))
     {
         proc.CommandType = CommandType.Text;
         proc.ExecuteNonQuery();
     }
 }
Example #7
0
        public void CleanupAccessTokens()
        {
            var sql = "DELETE FROM [dbo].[AccessTokens] WHERE [ExpirationDate] < DATEADD(MINUTE, -30, GETUTCDATE())";

            using (var proc = MainProvider.CreateDataProcedure(sql))
            {
                proc.CommandType = CommandType.Text;
                proc.ExecuteNonQuery();
            }
        }
Example #8
0
        public AccessToken LoadAccessTokenById(int accessTokenId)
        {
            using (var proc = MainProvider.CreateDataProcedure("SELECT TOP 1 * FROM [dbo].[AccessTokens] WHERE [AccessTokenId] = @Id")
                              .AddParameter("@Id", accessTokenId))
            {
                proc.CommandType = CommandType.Text;

                using (var reader = proc.ExecuteReader())
                    return(reader.Read() ? GetAccessTokenFromReader(reader) : null);
            }
        }
        public MessageHandler(TelegramBotClient client, MainProvider provider, CommandProvider commandProvider, AdminHandler adminHandler)
        {
            this.client          = client;
            this.provider        = provider;
            this.commandProvider = commandProvider;

            this.adminHandler = adminHandler;

            authSystem   = new AuthenticateSystem(client, provider);
            chatCommands = new ChatCommands(client, provider);
            addCash      = new AddCash(client, provider);
        }
Example #10
0
        public AccessToken LoadAccessToken(string tokenValue, int contentId, string feature)
        {
            var sql = "SELECT TOP 1 * FROM [dbo].[AccessTokens] " +
                      $"WHERE [Value] = @Value COLLATE {AccessTokenValueCollationName} AND [ExpirationDate] > GETUTCDATE() AND " +
                      (contentId != 0 ? $"ContentId = {contentId} AND " : "ContentId IS NULL AND ") +
                      (feature != null ? $"Feature = '{feature}'" : "Feature IS NULL");

            using (var proc = MainProvider.CreateDataProcedure(sql)
                              .AddParameter("@Value", tokenValue))
            {
                proc.CommandType = CommandType.Text;

                using (var reader = proc.ExecuteReader())
                    return(reader.Read() ? GetAccessTokenFromReader(reader) : null);
            }
        }
Example #11
0
        public AccessToken[] LoadAccessTokens(int userId)
        {
            using (var proc = MainProvider.CreateDataProcedure("SELECT * FROM [dbo].[AccessTokens] " +
                                                               "WHERE [UserId] = @UserId AND [ExpirationDate] > GETUTCDATE()")
                              .AddParameter("@UserId", userId))
            {
                proc.CommandType = CommandType.Text;

                var tokens = new List <AccessToken>();
                using (var reader = proc.ExecuteReader())
                    while (reader.Read())
                    {
                        tokens.Add(GetAccessTokenFromReader(reader));
                    }

                return(tokens.ToArray());
            }
        }
Example #12
0
        public void UpdateAccessToken(string tokenValue, DateTime newExpirationDate)
        {
            using (var proc = MainProvider.CreateDataProcedure("UPDATE [AccessTokens] " +
                                                               "SET [ExpirationDate] = @NewExpirationDate " +
                                                               "   OUTPUT INSERTED.AccessTokenId" +
                                                               " WHERE [Value] = @Value " +
                                                               $" COLLATE {AccessTokenValueCollationName} AND [ExpirationDate] > GETUTCDATE()")
                              .AddParameter("@Value", tokenValue)
                              .AddParameter("@NewExpirationDate", newExpirationDate))
            {
                proc.CommandType = CommandType.Text;

                var result = proc.ExecuteScalar();
                if (result == null || result == DBNull.Value)
                {
                    throw new InvalidAccessTokenException("Token not found or it is expired.");
                }
            }
        }
Example #13
0
        public void SaveAccessToken(AccessToken token)
        {
            using (var proc = MainProvider.CreateDataProcedure(
                       "INSERT INTO [dbo].[AccessTokens] " +
                       "([Value],[UserId],[ContentId],[Feature],[CreationDate],[ExpirationDate]) VALUES " +
                       "(@Value, @UserId, @ContentId, @Feature, @CreationDate, @ExpirationDate)" +
                       "SELECT @@IDENTITY")
                              .AddParameter("@Value", token.Value, DbType.String, 1000)
                              .AddParameter("@UserId", token.UserId)
                              .AddParameter("@ContentId", token.ContentId != 0 ? (object)token.ContentId : DBNull.Value, DbType.Int32)
                              .AddParameter("@Feature", token.Feature != null ? (object)token.Feature : DBNull.Value, DbType.String, 1000)
                              .AddParameter("@CreationDate", token.CreationDate)
                              .AddParameter("@ExpirationDate", token.ExpirationDate))
            {
                proc.CommandType = CommandType.Text;

                var result = proc.ExecuteScalar();
                token.Id = Convert.ToInt32(result);
            }
        }
 public StartDialogCallBack(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #15
0
 public BuisnessCommandsProvider(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #16
0
 public ShowMyOffersCallBack(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
 public BuisnessRegistration(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
 public StopChat(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
 public GenerateButtons(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #20
0
 public ChatCommands(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
 public CallBackShowUsers(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #22
0
 public PilotCommandProvider(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #23
0
 public AuthenticateSystem(TelegramBotClient client, MainProvider provider)
 {
     this.client   = client;
     this.provider = provider;
 }
Example #24
0
 public AdminHandler(TelegramBotClient client, MainProvider provider)
 {
     this.client   = client;
     this.provider = provider;
 }
Example #25
0
 public ShowUsersCommand(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #26
0
 public AddCash(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #27
0
 public CreateBuisnessTask(MainProvider provider, TelegramBotClient client)
 {
     this.provider = provider;
     this.client   = client;
 }
Example #28
0
 public RequestOfferCallBack(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
Example #29
0
 public ShowOrders(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }
 public FlyNow(TelegramBotClient client, MainProvider provider) : base(client, provider)
 {
 }