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(); } }
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); }
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(); }
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(); } }
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); }
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) + "'"); }
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]); } }
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); }
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(); } }
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(); } }
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); }
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); }
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(""); }
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 + "' не является действительным"); } }
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("Введите логин пользователя и пароль"); } }
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); } }
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; } } }
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); }
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 = ""; }
private void ExitButton_Click(object sender, RoutedEventArgs e) { DatabaseLogicClass.SQLiteExecute("UPDATE savedlogin SET savedbool = 0, login = '******', pass = '******' WHERE id = 1"); Close(); }
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; } }