Exemple #1
0
        private async void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if ((ValidUsername == true) && (ValidEmail == true) && (ValidPhone == true) && (ValidPassword == true) && (ValidMasterPassword == true))
            {
                string salt = CryptoClass.GetRandomNumber();
                //Отправка Email
                string EmailCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(EmalTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(EmailCode) + "')");

                await EmailSenderClass.SendEmailAsync("Ваш код для подтверждения e-mail: " + EmailCode, EmalTextBox.Text);

                //MessageBox.Show("Email code: " + EmailCode);

                //Отпрвка SMS
                string SMSCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(PhoneTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(SMSCode) + "')");
                SMSSenderClass ConfirmSMS_obj = new SMSSenderClass();
                string[]       numbers        = new string[] { PhoneTextBox.Text };
                var            request        = new Request {
                    numbers = numbers, text = SMSCode, channel = "DIRECT"
                };

                ConfirmSMS_obj.sms_send(request);
                //MessageBox.Show("Тук тук халявная SMS: "+SMSCode);

                ConfirmAllWindow ConfirmWindow_obj = new ConfirmAllWindow(EmalTextBox.Text, PhoneTextBox.Text, CryptoClass.MD5Hash(PasswordBox.Password), salt, UsernameTextBox.Text);
                ConfirmWindow_obj.Show();
                Close();
            }
        }
Exemple #2
0
        private async Task <bool> ValidOldEmail(string OldEmailText)
        {
            if (ValidatorClass.IsValidEmail(OldEmailText) == true)
            {
                string MD5Login = DatabaseLogicClass.SQLiteGet("SELECT login FROM logins WHERE authenticated=1");

                string result = await DatabaseLogicClass.MySQLGetAsync("SELECT Email FROM Users WHERE (Phone='" + MD5Login + "' OR Email='" + MD5Login + "')");

                result = result.Remove(result.Length - 1);

                if ((CryptoClass.MD5Hash(OldEmailText) == MD5Login) || (CryptoClass.MD5Hash(OldEmailText) == result))
                {
                    return(true);
                }
                else
                {
                    OldEmailComments.Content = "-> не ваш e-mail или его не существует";
                }
            }

            else
            {
                OldEmailComments.Content = "-> некорректный e-mail";
            }

            return(false);
        }
Exemple #3
0
        private async void FinalConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            await DatabaseLogicClass.MySQLExecuteAsync("INSERT INTO Users(Phone,Email,Password,Name) VALUES ('" + CryptoClass.MD5Hash(SMSString) + "','" + CryptoClass.MD5Hash(EmailString) + "','" + CryptoClass.MD5Hash(UserPassword) + "','" + CryptoClass.Base64Encode(username) + "')");

            MessageBox.Show("Новый пользователь с e-mail " + EmailString + " и телефоном " + SMSString + " был успешно добавлен в систему");
            Close();
        }
Exemple #4
0
        private async void PhoneConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if ((OldPhoneValidation == true) && (NewPhoneValidation = true))
            {
                string salt    = CryptoClass.GetRandomNumber();
                string SMSCode = CryptoClass.GetRandomNumber();
                DatabaseLogicClass.SQLiteExecute("INSERT INTO codes(code_source,code) VALUES ('" + CryptoClass.MD5Hash(NewPhoneTextBox.Text + salt) + "','" + CryptoClass.MD5Hash(SMSCode) + "')");
                SMSSenderClass ConfirmSMS_obj = new SMSSenderClass();
                string[]       numbers        = new string[] { NewPhoneTextBox.Text };
                var            request        = new Request {
                    numbers = numbers, text = SMSCode, channel = "DIRECT"
                };
                ConfirmSMS_obj.sms_send(request);

                DEMKAInputBox SMSdemka_obj = new DEMKAInputBox("Ввведите код, отправленный на новый номер телефона:");
                string        InputCode    = SMSdemka_obj.ShowDialog();

                if (InputCode == SMSCode)
                {
                    await DatabaseLogicClass.MySQLExecuteAsync("UPDATE Users SET Phone = '" + CryptoClass.MD5Hash(NewPhoneTextBox.Text) + "' WHERE Phone='" + CryptoClass.MD5Hash(OldPhoneTextBox.Text) + "' ");

                    MessageBox.Show("Успешно обновили номер телефона с " + OldPhoneTextBox.Text + " на " + NewPhoneTextBox.Text);
                }
                else
                {
                    MessageBox.Show("Код подтвержения '" + InputCode + "' не является действительным");
                }
                Close();
            }
        }
Exemple #5
0
        private async void PhoneTextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (ValidatorClass.IsPhoneNumber(PhoneTextBox.Text) == true)
            {
                string PhoneCheckAsync = await DatabaseLogicClass.MySQLGetAsync("SELECT Password FROM Users WHERE Phone='" + CryptoClass.MD5Hash(PhoneTextBox.Text) + "'");

                if (PhoneCheckAsync == "")
                {
                    Phonecomments.Content   = "-> валидный телефон";
                    PhoneTextBox.Foreground = Brushes.Black;
                    ValidPhone = true;
                }

                else
                {
                    Phonecomments.Content = "-> телефон уже зарегистрирован!";
                    ValidPhone            = false;
                }
            }
            else
            {
                Phonecomments.Content   = "-> некорректный телефон";
                PhoneTextBox.Foreground = Brushes.Red;
                ValidPhone = false;
            }

            NextButton.IsEnabled = (ValidUsername == true) && (ValidEmail == true) && (ValidPhone == true) && (ValidPassword == true) && (ValidMasterPassword == true);
        }
Exemple #6
0
        private void Window_Initialized(object sender, EventArgs e)
        {
            FinalConfirmButton.IsEnabled = false;
            EmailCodeLabel.Content       = "Введите код, отправленный на e-mail " + EmailString + ":";
            PhoneCodeLabel.Content       = "Введите код, отправленный на номер " + SMSString + ":";

            EmailCode = DatabaseLogicClass.SQLiteGet("SELECT code FROM codes WHERE code_source='" + CryptoClass.MD5Hash(EmailString + salt) + "'");
            SMSCode   = DatabaseLogicClass.SQLiteGet("SELECT code FROM codes WHERE code_source='" + CryptoClass.MD5Hash(SMSString + salt) + "'");
        }
Exemple #7
0
        private async Task AddGroupListBoxAsync()
        {
            string bufgroupsstr = await DatabaseLogicClass.MySQLGetAsync("SELECT name FROM SMSSender_schema.GroupsTable");

            string[] groupsarr = bufgroupsstr.Split(',');
            for (int i = 0; i < groupsarr.Length - 1; i++)
            {
                GroupsComboBox.Items.Add(groupsarr[i]);
            }
        }
Exemple #8
0
        private static async Task <bool> CheckUserLogin(string InputLogin)
        {
            string ThisResult = await DatabaseLogicClass.MySQLGetAsync("SELECT Password FROM Users WHERE Email='" + CryptoClass.MD5Hash(InputLogin) + "' OR Phone='" + CryptoClass.MD5Hash(InputLogin) + "'");

            if (ThisResult != "")
            {
                return(true);
            }
            return(false);
        }
Exemple #9
0
        private async void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if ((ValidLogin == true) && (ValidMasterPassword == true))
            {
                await DatabaseLogicClass.MySQLExecuteAsync("DELETE FROM Users WHERE (Phone = '" + CryptoClass.MD5Hash(LoginTextBox.Text) + "' OR Email =  '" + CryptoClass.MD5Hash(LoginTextBox.Text) + "');");

                MessageBox.Show("Пользователь с логином " + LoginTextBox.Text + " был успешно удален из системы");
                Close();
            }
        }
Exemple #10
0
        private async void PasswordConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if ((ValidOldPassword == true) && (ValidNewPassword == true) && (ValidNewRepeatPassword == true))
            {
                string MD5Login = DatabaseLogicClass.SQLiteGet("SELECT login FROM logins WHERE authenticated=1");
                await DatabaseLogicClass.MySQLExecuteAsync("UPDATE Users SET Password = '******' WHERE (Phone='" + MD5Login + "' OR Email='" + MD5Login + "')");

                MessageBox.Show("Успешная смена пароля");
                Close();
            }
        }
Exemple #11
0
        public async Task <Boolean> AdminCheckerAsync(string id)
        {
            string admins = await DatabaseLogicClass.MySQLGetAsync("SELECT AdminTG FROM TGAdmins");

            string[] AdminArr = admins.Split(',');
            for (int i = 0; i < AdminArr.Length; i++)
            {
                if (AdminArr[i] == id)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #12
0
        private async Task <bool> ValidationOldPhone(string OldPhone)
        {
            if (ValidatorClass.IsPhoneNumber(OldPhone) == true)
            {
                string MD5Login = DatabaseLogicClass.SQLiteGet("SELECT login FROM logins WHERE authenticated=1");

                string result = await DatabaseLogicClass.MySQLGetAsync("SELECT Phone FROM Users WHERE (Phone='" + MD5Login + "' OR Email='" + MD5Login + "')");

                result = result.Remove(result.Length - 1);


                return(CryptoClass.MD5Hash(OldPhone) == result);
            }
            return(false);
        }
Exemple #13
0
        private string CheckPhoneLogin(string PhoneString, string PasswordString, bool Login)
        {
            string OutPasswordString;

            if (Login == true)
            {
                OutPasswordString = PasswordString;
            }
            else
            {
                OutPasswordString = CryptoClass.MD5Hash(PasswordString);
            }

            if (DatabaseLogicClass.MySQLGet("SELECT Password FROM Users WHERE Phone='" + CryptoClass.MD5Hash(PhoneString) + "'") == OutPasswordString)
            {
                return(DatabaseLogicClass.MySQLGet("SELECT Name FROM Users WHERE Phone='" + CryptoClass.MD5Hash(PhoneString) + "'"));
            }
            return("");
        }
Exemple #14
0
        private async void EmailConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            string EmailCode = CryptoClass.GetRandomNumber();
            await EmailSenderClass.SendEmailAsync("Ваш код для подтверждения e-mail: " + EmailCode, NewEmailTextBox.Text);

            DEMKAInputBox demka_obj = new DEMKAInputBox("Ввведите код, отправленный на новый e-mail:");
            string        InputCode = demka_obj.ShowDialog();

            if (InputCode == EmailCode)
            {
                await DatabaseLogicClass.MySQLExecuteAsync("UPDATE Users SET Email = '" + CryptoClass.MD5Hash(NewEmailTextBox.Text) + "' WHERE Email='" + CryptoClass.MD5Hash(OldEmailTextBox.Text) + "' ");

                MessageBox.Show("Успешно обновили email с " + OldEmailTextBox.Text + " на " + NewEmailTextBox.Text);
                Close();
            }
            else
            {
                MessageBox.Show("Код подтвержения '" + InputCode + "' не является действительным");
            }
        }
Exemple #15
0
        private void EnterButton_Click(object sender, RoutedEventArgs e)
        {
            if ((LoginTextBox.Text != "") && (PasswordBox.Password != ""))
            {
                string CheckPhoneLoginString = CheckPhoneLogin(LoginTextBox.Text, PasswordBox.Password, ThisAutoLoginEnabled);
                string CheckEmailLoginString = CheckEmailLogin(LoginTextBox.Text, PasswordBox.Password, ThisAutoLoginEnabled);
                if ((CheckPhoneLoginString != "") || (CheckEmailLoginString != ""))
                {
                    DatabaseLogicClass.SQLiteExecute("UPDATE logins SET authenticated = 0");
                    DatabaseLogicClass.SQLiteExecute("INSERT INTO logins(login,authenticated) VALUES ('" + CryptoClass.MD5Hash(LoginTextBox.Text) + "',1)");
                    string       outnamestr       = (CheckPhoneLoginString != "") ? CheckPhoneLoginString : CheckEmailLoginString;
                    SenderWindow SenderWindow_obj = new SenderWindow(TG_obj, TelegramEnabled, outnamestr);

                    if ((SaveLoginCheckBox.IsChecked == true) && (ThisAutoLoginEnabled == false))
                    {
                        DatabaseLogicClass.SQLiteExecute("UPDATE savedlogin SET savedbool = 1, login = '******', pass = '******' WHERE id = 1");
                    }
                    else if (SaveLoginCheckBox.IsChecked == false)
                    {
                        DatabaseLogicClass.SQLiteExecute("UPDATE savedlogin SET savedbool = 0, login = '******', pass = '******' WHERE id = 1");
                    }

                    MessageBox.Show("Успешная авторизация");
                    SenderWindow_obj.Show();
                    Close();
                }
                else
                {
                    MessageBox.Show("Ошибка аутентификации");
                    DatabaseLogicClass.SQLiteExecute("UPDATE savedlogin SET savedbool = 0, login = '******', pass = '******' WHERE id = 1");
                    ThisAutoLoginEnabled = false;
                    LoginTextBox.Text    = "";
                    PasswordBox.Password = "";
                }
            }
            else
            {
                MessageBox.Show("Введите логин пользователя и пароль");
            }
        }
Exemple #16
0
        private void TelegramServerLabel_MouseLeftButtonUp(object sender, RoutedEventArgs e)
        {
            if (DatabaseLogicClass.SQLiteGet("SELECT boolvalue FROM servicetable WHERE service='TelegramService'") == "1")
            {
                DatabaseLogicClass.SQLiteExecute("UPDATE servicetable SET boolvalue = 0 WHERE service='TelegramService'");
                TelegramServerLabel.Content = "Сервер Telegram: выключен";
                TG_obj.TelegramInit(2, true);
            }

            else
            {
                DatabaseLogicClass.SQLiteExecute("UPDATE servicetable SET boolvalue = 1 WHERE service='TelegramService'");
                TelegramServerLabel.Content = "Сервер Telegram: включен";

                if (TG_obj == null)
                {
                    TG_obj = new TelegramClass();
                    TG_obj.TelegramInit(1, true);
                }

                TG_obj.TelegramInit(3, true);
            }
        }
Exemple #17
0
        private void Window_Initialized(object sender, EventArgs e)
        {
            if (PingClass.CheckForInternetConnection() == false)
            {
                MessageBox.Show("Проверьте подключение и повторите попытку");
                Close();
            }
            else
            {
                SetColor();
                DispatcherTimer ColorTimer = new DispatcherTimer();
                ColorTimer.Tick    += new EventHandler(ColorTimer_Tick);
                ColorTimer.Interval = new TimeSpan(0, 0, 0, 3);
                ColorTimer.Start();

                TG_obj = new TelegramClass();
                if (DatabaseLogicClass.SQLiteGet("SELECT boolvalue FROM servicetable WHERE service='TelegramService'") == "1")
                {
                    TG_obj.TelegramInit(1, true);
                    TelegramEnabled = true;
                }
                else if (DatabaseLogicClass.SQLiteGet("SELECT boolvalue FROM servicetable WHERE service='TelegramService'") == "0")
                {
                    TG_obj.TelegramInit(1, false);
                    TelegramEnabled = false;
                    TG_obj.TelegramInit(2, false);
                }

                if (DatabaseLogicClass.SQLiteGet("SELECT savedbool FROM savedlogin WHERE id=1") == "1")
                {
                    LoginTextBox.Text           = DatabaseLogicClass.SQLiteGet("SELECT login FROM savedlogin WHERE id=1");
                    PasswordBox.Password        = DatabaseLogicClass.SQLiteGet("SELECT pass FROM savedlogin WHERE id=1");
                    ThisAutoLoginEnabled        = true;
                    SaveLoginCheckBox.IsChecked = true;
                }
            }
        }
Exemple #18
0
        private async Task <bool> ValidationOldPassword(string OldPassword)
        {
            if (ValidatorClass.ValidatePassword(OldPassword) == true)
            {
                string MD5Login = DatabaseLogicClass.SQLiteGet("SELECT login FROM logins WHERE authenticated=1");

                string result = await DatabaseLogicClass.MySQLGetAsync("SELECT Password FROM Users WHERE (Phone='" + MD5Login + "' OR Email='" + MD5Login + "')");

                result = result.Remove(result.Length - 1);


                if (CryptoClass.MD5Hash(OldPassword) == result)
                {
                    OldPasswordComments.Content = "-> верный пароль";
                    return(true);
                }

                else
                {
                    OldPasswordComments.Content = "-> неверный пароль";
                }
            }
            return(false);
        }
Exemple #19
0
        private async void FinalSendButton_Click(object sender, RoutedEventArgs e)
        {
            //Отправка произовольного текста произвольному получателю
            if ((TextSecondRadioButton.IsChecked == true) && (NumbersSecondRadioButton.IsChecked == true))
            {
                if ((NumbersToSend.Text != "") && (TextToSend.Text != ""))
                {
                    if (MessageBox.Show("Вы действительно хотите отправить сообщение '" + TextToSend.Text + "' на номер " + NumbersToSend.Text + "?", "Отправка сообщения", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                    {
                        SMSSenderClass sms_obj = new SMSSenderClass();
                        string[]       numbers = new string[] { NumbersToSend.Text };
                        var            request = new Request {
                            numbers = numbers, text = TextToSend.Text, channel = "DIRECT"
                        };
                        if (sms_obj.sms_send(request) != "false")
                        {
                            MessageBox.Show("Успешная отправка сообщения");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Сообщение и/или номер отправления не могут быть пустыми");
                }
            }

            //Отправка произвольного текста всем получателям из БД
            else if ((TextSecondRadioButton.IsChecked == true) && (NumbersFirstRadioButton.IsChecked == true))
            {
                if (TextToSend.Text != "")
                {
                    SMSSenderClass sms_obj      = new SMSSenderClass();
                    string         bufnumberstr = await DatabaseLogicClass.MySQLGetAsync("SELECT phone FROM Phones");

                    string[] numbers = bufnumberstr.Split(',');
                    Array.Resize(ref numbers, numbers.Length - 1);
                    var request = new Request {
                        numbers = numbers, text = TextToSend.Text, channel = "DIRECT"
                    };
                    if (sms_obj.sms_send(request) != "false")
                    {
                        MessageBox.Show("Успешная отправка сообщения всем получателям из БД!");
                    }
                }
                else
                {
                    MessageBox.Show("Сообщение для отправки не может быть пустым");
                }
            }

            //Отправка текста из БД произвольному получателю
            else if ((TextFirstRadioButton.IsChecked == true) && (NumbersSecondRadioButton.IsChecked == true) && (GroupsComboBox.SelectedIndex != -1))
            {
                if (NumbersToSend.Text != "")
                {
                    if (SaveDatabaseCheckBox.IsChecked == true)
                    {
                        string thisgroup = GroupsComboBox.SelectedValue.ToString();
                        await DatabaseLogicClass.MySQLExecuteAsync("INSERT INTO Phones(phone,groups) VALUES (\"" + NumbersToSend.Text + "\",\"" + thisgroup + "\");");

                        MessageBox.Show("Успешное добавление нового пользователя с " + thisgroup + " и номером телефона " + NumbersToSend.Text + "!");
                    }

                    if (SendSMSCheckBox.IsChecked == true)
                    {
                        ParseJSONLogicClass thisjson_obj = new ParseJSONLogicClass();
                        thisjson_obj.GetTimetableJSON();
                        string selectedgroup   = GroupsComboBox.SelectedValue.ToString();
                        string thisgroupresult = thisjson_obj.GetTimetableByGroup(selectedgroup);

                        SMSSenderClass sms_obj = new SMSSenderClass();
                        if (thisgroupresult == "false")
                        {
                            if (MessageBox.Show("Нет изменений в расписании для группы " + selectedgroup + "\nХотите отправить оповещение об этом?", "Нет изменений", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                            {
                                string[] numbers = new string[] { NumbersToSend.Text };
                                var      request = new Request {
                                    numbers = numbers, text = "Нет изменений в расписании группы " + selectedgroup, channel = "DIRECT"
                                };
                                if (sms_obj.sms_send(request) != "false")
                                {
                                    MessageBox.Show("Успешная отправка сообщения");
                                }
                            }
                        }
                        else
                        {
                            string[] numbers = new string[] { NumbersToSend.Text };
                            var      request = new Request {
                                numbers = numbers, text = thisgroupresult, channel = "DIRECT"
                            };
                            if (sms_obj.sms_send(request) != "false")
                            {
                                MessageBox.Show("Успешная отправка сообщения");
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Номер отправления не может быть пустым");
                }
            }

            //Отправка сообщения из БД получателям из БД
            else if ((TextFirstRadioButton.IsChecked == true) && (NumbersFirstRadioButton.IsChecked == true))
            {
                ParseJSONLogicClass mainjson_obj = new ParseJSONLogicClass();
                mainjson_obj.GetTimetableJSON();

                string phonesbufresult = await DatabaseLogicClass.MySQLGetAsync("SELECT phone FROM Phones");

                string groupsbufresult = await DatabaseLogicClass.MySQLGetAsync("SELECT groups FROM Phones");

                string[] phonesarr = phonesbufresult.Split(',');
                Array.Resize(ref phonesarr, phonesarr.Length - 1);

                string[] groupsarr = groupsbufresult.Split(',');
                Array.Resize(ref groupsarr, groupsarr.Length - 1);

                int globalcounter = 0;
                for (int i = 0; i < phonesarr.Length; i++)
                {
                    string thisgroupresult = mainjson_obj.GetTimetableByGroup(groupsarr[i]);
                    if (thisgroupresult != "false")
                    {
                        SMSSenderClass sms_obj = new SMSSenderClass();

                        string[] numbers = new string[] { phonesarr[i] };
                        var      request = new Request {
                            numbers = numbers, text = thisgroupresult, channel = "DIRECT"
                        };
                        if (sms_obj.sms_send(request) != "false")
                        {
                            globalcounter++;
                        }
                    }
                }
                MessageBox.Show("Отправлено " + globalcounter.ToString() + " сообщений из " + phonesarr.Length.ToString());
            }

            GetSMSBalance();
            TextToSend.Text    = "";
            NumbersToSend.Text = "";
        }
Exemple #20
0
 private void ExitButton_Click(object sender, RoutedEventArgs e)
 {
     DatabaseLogicClass.SQLiteExecute("UPDATE savedlogin SET savedbool = 0, login = '******', pass = '******' WHERE id = 1");
     Close();
 }
Exemple #21
0
        private async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            var message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.Text)
            {
                return;
            }

            bool AdminResult = await AdminCheckerAsync(message.Chat.Id.ToString());

            if (AdminResult == false)
            {
                return;
            }

            switch (message.Text.Split(' ').First())
            {
            case "/sms":
                try
                {
                    SMS_number  = (message.Text.Split(' '))[1];
                    SMS_message = (message.Text.Split('"'))[1];

                    ReplyKeyboardMarkup ReplyKeyboard = new[]
                    {
                        new[] { "Да", "Нет" },
                    };

                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Вы действительно хотите отправить сообщение \"" + SMS_message + "\" на номер " + SMS_number + "?",
                        replyMarkup : ReplyKeyboard);
                }
                catch
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Синтаксис использования команды:\n/sms номер_телефона \"Сообщение\"");
                }
                break;

            case "/balance":

                SMSSenderClass sms_obj     = new SMSSenderClass();
                dynamic        BalanceJSON = JObject.Parse(sms_obj.balance());
                string         out_str     = "Текущий баланс: " + BalanceJSON.data.balance + "₽";

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    out_str);

                break;

            //Доделать
            case "/history":

                var FormatDictionary = new Dictionary <string, string>
                {
                    { "1", "1️⃣" },
                    { "2", "2️⃣" },
                    { "3", "3️⃣" },
                    { "4", "4️⃣" },
                    { "5", "5️⃣" }
                };

                string         OutString      = "Последние 5 отправленных сообщений:\n";
                SMSSenderClass SMSHistory_obj = new SMSSenderClass();
                dynamic        HistoryJSON    = JObject.Parse(SMSHistory_obj.sms_list(new Request {
                    page = 1
                }));

                for (int i = 0; i < 5; i++)
                {
                    JObject ThisSMS = HistoryJSON.data[i.ToString()];
                    OutString += FormatDictionary[(i + 1).ToString()] + " +" + ThisSMS["number"] + " \"" + ThisSMS["text"] + "\"\n\n";
                }

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    OutString);

                break;

            case "Да":

                if ((Convert.ToString(SMS_message) != null) || (Convert.ToString(SMS_number) != null))
                {
                    SMSSenderClass TelegramSMS_obj = new SMSSenderClass();
                    string[]       numbers         = new string[] { SMS_number };
                    TelegramSMS_obj.sms_send(new Request {
                        numbers = numbers, text = SMS_message, channel = "DIRECT"
                    });
                    dynamic TelegramBalanceJSON = JObject.Parse(TelegramSMS_obj.balance());


                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Сообщение успешно отправлено, остаток на балансе " + TelegramBalanceJSON.data.balance + "₽",
                        replyMarkup : new ReplyKeyboardRemove());
                }
                else
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Что-то пошло не так при отправке сообщения 😔\nПовторно воспользуйтесь командой /sms",
                        replyMarkup : new ReplyKeyboardRemove());
                }

                SMS_message = null;
                SMS_User    = SMS_message;

                break;

            case "/user":
                try
                {
                    SMS_User = (message.Text.Split(' '))[1];
                    if (IntChecker(SMS_User) == true)
                    {
                        ReplyKeyboardMarkup UserReplyKeyboard = new[]
                        {
                            new[] { "Добавление", "Удаление" },
                        };

                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            "Доступные действия с пользователем " + SMS_User + ":",
                            replyMarkup : UserReplyKeyboard);
                    }
                    else
                    {
                        await Bot.SendTextMessageAsync(
                            message.Chat.Id,
                            "Некорректный ввод пользователя, попробуйте заново", replyMarkup : new ReplyKeyboardRemove());
                    }
                }
                catch
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Синтаксис использования команды:\n/user id_пользователя", replyMarkup : new ReplyKeyboardRemove());
                }

                break;

            case "Добавление":
                if (await DatabaseLogicClass.MySQLExecuteAsync("INSERT INTO TGAdmins(AdminTG) VALUES('" + SMS_User + "')") == true)
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Добавление пользователя " + SMS_User + " успешно", replyMarkup : new ReplyKeyboardRemove());
                }

                SMS_User = null;
                break;

            case "Удаление":
                if (await DatabaseLogicClass.MySQLExecuteAsync("DELETE FROM TGAdmins WHERE AdminTG = '" + SMS_User + "'") == true)
                {
                    await Bot.SendTextMessageAsync(
                        message.Chat.Id,
                        "Удаление пользователя " + SMS_User + " успешно", replyMarkup : new ReplyKeyboardRemove());
                }
                SMS_User = null;
                break;



            default:
                const string usage = @"
Доступные команды:
<b>/sms</b> - отправка сообщения
<b>/balance</b> - текущий баланс
<b>/history</b> - последние отправленные сообщения
<b>/user</b> - управление пользователями";

                await Bot.SendTextMessageAsync(
                    message.Chat.Id,
                    usage,
                    parseMode : ParseMode.Html,
                    replyMarkup : new ReplyKeyboardRemove());

                break;
            }
        }