private async void SetEnterNewTextState(MessageEventArgs e) { var userId = e.Message.From.Id; var block = GetBlockChoice(userId); var text = $"{Texts.PersonalAccount.YouWantToChange} *{e.Message.Text}* {Environment.NewLine}"; var currentText = Texts.GetText(block, e.Message.Text); if (string.IsNullOrEmpty(currentText)) { text = $"{Emoji.Error} Такого текста не существует."; await TBot.SendTextMessageAsync(userId, text); SetChooseTextState(e); } else { await TBot.SendTextMessageAsync(userId, text, Telegram.Bot.Types.Enums.ParseMode.Markdown); text = Texts.PersonalAccount.EnterNewText; var keyboard = Keyboards.PersonalAccount.EnterNewTextKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.EnterNewText); } }
private async void SetGetEmailState(MessageEventArgs e) { int userId = e.Message.From.Id; var text = Texts.GetEmailAddress; await TBot.SendTextMessageAsync(userId, text); SetState(userId, State.GetEmailAddress); }
private async void SetGreetingState(int userId) { var text = Texts.Lamagna.Greeting; var keyboard = BotController.IsOwner(userId, TBot) ? Keyboards.Lamagna.ExtendedGreetingKeyboard : Keyboards.Lamagna.GreetingKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.Greeting); }
private async void SetGetTokenState(MessageEventArgs e) { int userId = e.Message.From.Id; var text = Texts.GetBotToken; await TBot.SendTextMessageAsync(userId, text); SetState(userId, State.GetBotToken); }
private async void SetGetPhoneNumberState(MessageEventArgs e) { int userId = e.Message.From.Id; var text = Texts.GetPhoneNumber; var keyboard = Keyboards.GetPhoneNumberKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.GetPhoneNumber); }
private async void SetChooseBlockState(MessageEventArgs e) { var userId = e.Message.From.Id; var text = Texts.PersonalAccount.ChooseBlock; var keyboard = Keyboards.PersonalAccount.ChooseBlockKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.ChooseBlockToEdit); }
private async void SetChooseSettingsState(MessageEventArgs e) { var userId = e.Message.From.Id; var text = Texts.PersonalAccount.PersnonalAccountGreeting(e.Message.From.FirstName); var keyboard = Keyboards.PersonalAccount.ChooseSettingKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.ChooseSettings); }
private async void SetChooseTextState(MessageEventArgs e) { var userId = e.Message.From.Id; var text = Texts.PersonalAccount.ChooseText; var blockChoice = GetBlockChoice(userId).ToString(); var keyboard = Keyboards.PersonalAccount.ChooseTextKeyboard(blockChoice); await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.ChooseTextToEdit); }
private async void SetContactsState(CallbackQueryEventArgs e) { var userId = e.CallbackQuery.From.Id; var text = Texts.Other.Contacts; var keyboard = Keyboards.MainProduct.ContactsKeyboard; await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, ""); await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.Contacts); }
private async void SetTrippier3State(CallbackQueryEventArgs e) { var userId = e.CallbackQuery.From.Id; var text = Texts.Trippier.Text3; var keyboard = Keyboards.Trippier.Text3Keyboard; await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, ""); await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.Trippier3); }
private async void SetLamagna4State(CallbackQueryEventArgs e) { var userId = e.CallbackQuery.From.Id; var text = Texts.Lamagna.Text4; var keyboard = Keyboards.Lamagna.Text4Keyboard; await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, ""); await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.Lamagna4); }
private async void UpdateText(MessageEventArgs e) { int userId = e.Message.From.Id; var block = GetBlockChoice(userId); var fieldName = GetTextChoice(userId); Texts.Update(block, fieldName, e.Message.Text); string text = Texts.PersonalAccount.NewTextSaved; await TBot.SendTextMessageAsync(userId, text); SetChooseTextState(e); }
private void ShowMainProductPassedUsers(MessageEventArgs e) { var newMessage = $"Пользователи бота {BotUsername}, прошедшие блок Главный продукт:{Environment.NewLine}"; using (var db = DBHelper.GetConnection(BotUsername)) { var users = db.Table <BotUser>().Where(u => u.MainProductPassed); foreach (var user in users) { newMessage += $"{Environment.NewLine}{user.ToString()}"; } } TBot.SendTextMessageAsync(e.Message.From.Id, newMessage); SetChooseStatisticsState(e); }
private void ShowAllUsers(MessageEventArgs e) { var newMessage = $"Пользователи бота {BotUsername}:{Environment.NewLine}"; using (var db = DBHelper.GetConnection(BotUsername)) { var users = db.Table <BotUser>().ToList(); foreach (var user in users) { newMessage += $"{Environment.NewLine}{user.ToString()}"; } } TBot.SendTextMessageAsync(e.Message.From.Id, newMessage); SetChooseStatisticsState(e); }
private async void SetCheckContactDataState(MessageEventArgs e) { int userId = e.Message.From.Id; Client client = null; using (var db = DBHelper.GetConnection()) { client = db.Find <Client>(userId); } var text = Texts.GetCheckContactDataText(client); var keyboard = Keyboards.CheckContactDataKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.CheckContactData); }
private async void SetStartState(MessageEventArgs e) { int userId = e.Message.From.Id; if (DBHelper.IsClient(e.Message.From)) { await TBot.SendTextMessageAsync(userId, Texts.KnownClientGreeting); SetCheckContactDataState(e); } else { var text = Texts.UnknownClientGreeting(e.Message.From); var keyboard = Keyboards.UnknownClientGreetingKeyboard; await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard); SetState(userId, State.UnknownClientGreeting); } }
public async override void Next(MessageEventArgs e) { var userId = e.Message.From.Id; string btnText = e.Message.Text; var state = GetUserState(userId); switch (state) { case State.UnknownClientGreeting: { if (btnText == Texts.LetsButton) { SetGetPhoneNumberState(e); } break; } case State.CheckContactData: { if (btnText == Texts.PhoneNumberChangedButton) { SetGetPhoneNumberState(e); } else if (btnText == Texts.EmailAddressChangedButton) { SetGetEmailState(e); } else if (btnText == Texts.ItsAnActualDataButton) { SetGetTokenState(e); } break; } case State.GetPhoneNumber: { if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.ContactMessage) { var contact = e.Message.Contact; if (contact.UserId == userId) { SavePhoneNumber(e); await TBot.SendTextMessageAsync(userId, Texts.PhoneNumberSaved); if (DBHelper.IsClient(e.Message.From)) { SetCheckContactDataState(e); } else { SetGetEmailState(e); } } else { await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет, нам нужен ВАШ номер."); } } else { await TBot.SendTextMessageAsync(userId, "Нажмите на кнопку внизу, чтобы отправить свой номер."); } break; } case State.GetEmailAddress: { if (FormatHelper.IsEmailAddress(e.Message.Text)) { SaveEmailAddress(e); await TBot.SendTextMessageAsync(userId, Texts.EmailSaved); if (DBHelper.IsClient(userId)) { SetCheckContactDataState(e); } else { SaveNewClient(userId); SetGetTokenState(e); } } else { await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Это не адрес электронный почты."); } break; } case State.GetBotToken: { string token = e.Message.Text; if (TokenIsValid(token)) { OurBot existedBot = null; using (var db = DBHelper.GetConnection()) { existedBot = db.Table <OurBot>().FirstOrDefault(b => b.Token == token); } if (existedBot != null) { var tBotName = new TelegramBotClient(token).GetMeAsync().Result.Username; await TBot.SendTextMessageAsync(userId, $"Данный токен уже используется в Вашем персональном помощнике @{tBotName}"); } else { BotController.RegisterNewBot(e.Message.Text, userId, nameof(Scheme1)); await TBot.SendTextMessageAsync(userId, $"Поздравляем"); } } else { await TBot.SendTextMessageAsync(userId, "Неверный токен"); SetGetTokenState(e); } break; } } }
public async override void Next(MessageEventArgs e) { var userId = e.Message.From.Id; string btnText = e.Message.Text; var state = GetUserState(userId); if (btnText == Texts.ToStartButton) { SetGreetingState(e.Message.From.Id); } else { switch (state) { case State.ChooseSettings: { if (btnText == Texts.PersonalAccount.StatisticsButton) { SetChooseStatisticsState(e); } else if (btnText == Texts.PersonalAccount.TextsEditingButton) { SetChooseBlockState(e); } else if (btnText == Texts.BackButton) { SetGreetingState(e.Message.From.Id); } break; } case State.ChooseStatistics: { if (btnText == Texts.PersonalAccount.AllUsersButton) { ShowAllUsers(e); } else if (btnText == Texts.PersonalAccount.LamagnaPassedUsersButton) { ShowLamagnaPassedUsers(e); } else if (btnText == Texts.PersonalAccount.TrippierPassedUsersButton) { ShowTrippierPassedUsers(e); } else if (btnText == Texts.PersonalAccount.MainProductPassedUsersButton) { ShowMainProductPassedUsers(e); } else if (btnText == Texts.BackButton) { SetChooseSettingsState(e); } break; } case State.ChooseBlockToEdit: { if (btnText == Texts.BackButton) { SetChooseSettingsState(e); } else if (Texts.ValidBlockName(e.Message.Text)) { SaveBlockChoice(userId, e.Message.Text); SetChooseTextState(e); } else { await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет такого блока."); SetChooseBlockState(e); } break; } case State.ChooseTextToEdit: { if (btnText == Texts.BackButton) { SetChooseBlockState(e); } else { SaveTextChoice(userId, e.Message.Text); SetEnterNewTextState(e); } break; } case State.EnterNewText: { if (btnText == Texts.BackButton) { SetChooseTextState(e); } else { if (string.IsNullOrEmpty(btnText)) { await TBot.SendTextMessageAsync(userId, "Молчание не привлечёт к вам клиентов!"); SetChooseTextState(e); } UpdateText(e); } break; } } } }