public static async void ChooseTripIdToEdit(int userId, string message) { try { var temp = message; if (message == "Назад") { StartEditTimetable(userId); } else if (message == "Отмена") { Undo(userId); } else if (!int.TryParse(temp, out var tempInt)) { await BotController.Bot.SendTextMessageAsync(userId, "Введите число, которое является ID рейса."); } else { if (!DataBaseContextAdmin.CheckTripId(tempInt)) { await BotController.Bot.SendTextMessageAsync(userId, "Введите существующий ID рейса."); } DataBaseContextAdmin.SetTripId(userId, tempInt); await BotController.Bot.SendTextMessageAsync(userId, "Выберите, что будете редактировать.", replyMarkup : KeyboardContainer.CreateTimetableEditTripKeyboard()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ChooseTripColumn); } } catch (Exception e) { Console.WriteLine(e); } }
public static async void EditTripColumn(int userId, string message) { try { if (message == "Назад") { await BotController.Bot.SendTextMessageAsync(userId, "Выберите, что будете редактировать.", replyMarkup : KeyboardContainer.CreateTimetableEditTripKeyboard()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ChooseTripColumn); } else if (message == "Отмена") { Undo(userId); } else { DataBaseContextAdmin.UpdateTripColumn(DataBaseContextAdmin.GetTripId(userId), DataBaseContextAdmin.GetColumn(userId), message); StartEditTimetable(userId); } } catch (Exception e) { Console.WriteLine(e); } }
public static async void SetDepartureDate(int userId, string message) { try { var temp = message; if (message == "Назад") { DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.DeparturePlace); await BotController.Bot.SendTextMessageAsync(userId, "Откуда рейс?"); } if (message == "Отмена") { Undo(userId); } if (!KeyWords.Contains(message)) { DataBaseContextAdmin.UpdateTripColumn(DataBaseContextAdmin.GetTripId(userId), AdminCommandStep.DepartureDate.ToString(), temp); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.DepartureTime); await BotController.Bot.SendTextMessageAsync(userId, "Время отправки?"); } } catch (Exception e) { Console.WriteLine(e); } }
private static async void Undo(int userId) { await BotController.Bot.SendTextMessageAsync(userId, "Для вывода команд введите /admin", replyMarkup : KeyboardContainer.CreateDefaultKeyboard()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.Default); }
public static async void EditTimetable(int userId, string message) { if (message == "Добавить рейс") { DataBaseContextAdmin.AddTrip(); DataBaseContextAdmin.SetTripId(userId, DataBaseContextAdmin.GetLastTripId()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.DeparturePlace); await BotController.Bot.SendTextMessageAsync(userId, "Откуда рейс?", replyMarkup : KeyboardContainer.CreateTwoKeyboardAdminButtons()); } if (message == "Редактировать рейс") { await BotController.Bot.SendTextMessageAsync(userId, "Введите ID рейса для редактирования.", replyMarkup : KeyboardContainer.CreateTwoKeyboardAdminButtons()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.SetTripIdEdit); } if (message == "Удалить рейс") { await BotController.Bot.SendTextMessageAsync(userId, "Введите ID рейса для удаления.", replyMarkup : KeyboardContainer.CreateTwoKeyboardAdminButtons()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.SetTripIdDel); } if (message == "Отмена") { Undo(userId); } }
private static async void HandleMessageTypeContact(MessageEventArgs messageEventArgs, int userId) { try { var phoneNumber = messageEventArgs.Message.Contact.PhoneNumber; await BotController.Bot.SendTextMessageAsync(userId, "Мы свяжемся с Вами в ближайшее время."); DataBaseContext.SetPhoneNumber(userId, phoneNumber); var customer = BotController.GetAvailableSenderName(messageEventArgs); var admins = DataBaseContextAdmin.GetAllAdminId(); foreach (var admin in admins) { try { await BotController.Bot.SendTextMessageAsync(admin, $"{customer} запросил звонок, " + $"его номер: {DataBaseContext.GetPhoneNumber(userId)}"); } catch (Exception e) { Console.WriteLine(e); } } } catch (Exception e) { Console.WriteLine(e); } }
public static async void ChooseTripIdToDelete(int userId, string message) { try { var temp = message; if (message == "Назад") { StartEditTimetable(userId); } else if (message == "Отмена") { Undo(userId); } else if (!int.TryParse(temp, out var tempInt)) { await BotController.Bot.SendTextMessageAsync(userId, "Введите число, которое является ID рейса."); } else if (!KeyWords.Contains(message)) { if (!DataBaseContextAdmin.CheckTripId(tempInt)) { await BotController.Bot.SendTextMessageAsync(userId, "Введите существующий ID рейса."); } DataBaseContextAdmin.DeleteTrip(tempInt); StartEditTimetable(userId); } } catch (Exception e) { Console.WriteLine(e); } }
public static async void SetArrivalTime(int userId, string message) { try { var temp = message; if (message == "Назад") { DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ArrivalDate); await BotController.Bot.SendTextMessageAsync(userId, "Дата прибытия?"); } if (message == "Отмена") { Undo(userId); } if (!KeyWords.Contains(message)) { DataBaseContextAdmin.UpdateTripColumn(DataBaseContextAdmin.GetTripId(userId), AdminCommandStep.ArrivalTime.ToString(), temp); StartEditTimetable(userId); } } catch (Exception e) { Console.WriteLine(e); } }
private static string ShowTimetableWithId() { try { string timetable = String.Join(null, DataBaseContextAdmin.GetTimetableTripsWithId()); return($"\n\n{timetable}"); } catch (Exception e) { Console.WriteLine(e); return(" "); } }
private static async void ConfirmUser(int userId, string userName) { try { await BotController.Bot.SendTextMessageAsync(userId, $"Вы собираетесь присвоить права администратора пользователю {userName}?"); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ConfirmUser); } catch (Exception e) { Console.WriteLine(e); } }
public static async void StartEditTimetable(int userId) { try { await BotController.Bot.SendTextMessageAsync(userId, $"Какие действия произвести с текущим расписанием?" + $"{ShowTimetableWithId()}", replyMarkup : KeyboardContainer.CreateTimetableEditKeyboard()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.EditTimetable); } catch (Exception e) { Console.WriteLine(e); } }
private static async void GetForwardingMessage(int userId) { try { await BotController.Bot.SendTextMessageAsync(userId, "Отправьте сообщение для рассылки (только текст (обычный и форматированный) и эмодзи).", replyMarkup : KeyboardContainer.CreateThreeKeyboardAdminButtons()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.SendMessage); } catch (Exception e) { Console.WriteLine(e); } }
private static async void ConfirmForwardingMessage(int userId, int messageId) { try { await BotController.Bot.SendTextMessageAsync(userId, "Отправить всем следующее сообщение?"); await BotController.Bot.ForwardMessageAsync(userId, userId, messageId); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ConfirmSending); } catch (Exception e) { Console.WriteLine(e.Message); } }
private static void HandleMessageTypeText(string sender, MessageEventArgs messageEventArgs) { var userId = messageEventArgs.Message.From.Id; var message = messageEventArgs.Message.Text; Console.WriteLine($"{sender} отправил текстовое сообщение: {message}", true, Encoding.Unicode); AdminCommandHandler.HandleAdminCommands(messageEventArgs); var keyCommands = new[] { "/admin", "/appoint", "/timetable", "/message" }; if (DataBaseContextAdmin.GetCommandId(userId) != (int)AdminCommandStep.Default) { return; } switch (message.ToLower().Trim()) { case "/start": DataBaseContext.RegisterUser(messageEventArgs); TextMessageProcessor.CreateStartStatement(messageEventArgs); break; case "меню": var inlineMenu = new InlineMenu(); inlineMenu.RunCreatingProcess(messageEventArgs, true); break; case "контакты": TextMessageProcessor.SendContacts(userId); break; case "заказать звонок": break; case "показать на карте": TextMessageProcessor.ShowInTheMap(userId); break; default: if (!keyCommands.Contains(message)) { TextMessageProcessor.SendAiAnswer(userId, message); } break; } }
public static void HandleConfirmingUser(MessageEventArgs messageEventArgs, int userId, string message) { if (message == "Подтвердить") { AppointAdmin(messageEventArgs, DataBaseContextAdmin.GetTargetName(userId)); Thread.Sleep(10); Undo(userId); } if (message == "Назад") { ShowUsers(userId); } if (message == "Отмена") { Undo(userId); } }
private static async void AppointAdmin(MessageEventArgs messageEventArgs, string userName) { try { DataBaseContextAdmin.ChangeUserStatus(userName); await BotController.Bot.SendTextMessageAsync(messageEventArgs.Message.From.Id, $"Пользователю {userName} присвоены права администратора."); await BotController.Bot.SendTextMessageAsync(DataBaseContextAdmin.GetUserIdByUserName(userName), $"{BotController.GetAvailableSenderName(messageEventArgs)} " + $"присвоил вам права администратора. Для вывода команд введите /admin"); } catch (Exception e) { Console.WriteLine(e); await BotController.Bot.SendTextMessageAsync(messageEventArgs.Message.From.Id, $"Пользователю {userName} не удалось присвоить права администратора. \n{e.Message}"); } }
public static async void ChooseTripColumn(int userId, string message) { try { var keyCommands = new Dictionary <string, string>(); keyCommands.Add("Место отправки", AdminCommandStep.DeparturePlace.ToString()); keyCommands.Add("Дата отправки", AdminCommandStep.DepartureDate.ToString()); keyCommands.Add("Время отправки", AdminCommandStep.DepartureTime.ToString()); keyCommands.Add("Место прибытия", AdminCommandStep.ArrivalPlace.ToString()); keyCommands.Add("Дата прибытия", AdminCommandStep.ArrivalDate.ToString()); keyCommands.Add("Время прибытия", AdminCommandStep.ArrivalTime.ToString()); if (keyCommands.ContainsKey(message)) { keyCommands.TryGetValue(message, out var resMessage); DataBaseContextAdmin.SetColumn(userId, resMessage); await BotController.Bot.SendTextMessageAsync(userId, "Введите новое значение.", replyMarkup : KeyboardContainer.CreateTwoKeyboardAdminButtons()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.EditTripColumn); } else if (message == "Назад") { await BotController.Bot.SendTextMessageAsync(userId, "Введите ID рейса для редактирования.", replyMarkup : KeyboardContainer.CreateTwoKeyboardAdminButtons()); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.SetTripIdEdit); } else if (message == "Отмена") { Undo(userId); } else { await BotController.Bot.SendTextMessageAsync(userId, "Выберите, что будете редактировать."); } } catch (Exception e) { Console.WriteLine(e); } }
private static async void CreateKeyboardButtons(int userId, string firstName) { if (DataBaseContextAdmin.GetCommandId(userId) != (int)AdminCommandStep.Default) { return; } try { var replyKeyboard = KeyboardContainer.CreateDefaultKeyboard(); await BotController.Bot.SendTextMessageAsync(userId, $"Здравствуйте, " + $"{firstName}! \nПожалуйста, воспользуйтесь кнопками для начала работы", replyMarkup : replyKeyboard); } catch (Exception ex) { Console.WriteLine($"Error: {ex}"); } }
private static async void ShowUsers(int userId) { try { var users = DataBaseContextAdmin.GetAllUserNames(); var userNames = string.Join(", ", users); await BotController.Bot.SendTextMessageAsync(userId, "Выберите и введите username пользователя, которого хотите назначить администратором. " + "Здесь показаны только те пользователи, которые имеют username. Если среди них нет нужного пользователя," + "он должен выставить username в настройках своего профиля Telegram и ввести /start в боте, тогда его данные обновятся.", replyMarkup : KeyboardContainer.CreateThreeKeyboardAdminButtons()); Thread.Sleep(10); await BotController.Bot.SendTextMessageAsync(userId, userNames); DataBaseContextAdmin.SetCommandId(userId, (int)AdminCommandStep.ShowUsers); } catch (Exception e) { Console.WriteLine(e); } }
public static void HandleConfirmingSending(int userId, string message) { if (message == "Подтвердить") { var usersId = DataBaseContextAdmin.GetAllUserId(); foreach (var targetId in usersId) { ForwardMessage(targetId, userId, DataBaseContextAdmin.GetForwardingMessageId(userId)); } Thread.Sleep(10); Undo(userId); } if (message == "Назад") { GetForwardingMessage(userId); } if (message == "Отмена") { Undo(userId); } }
public static async void HandleSendMessage(MessageEventArgs messageEventArgs, int userId, string message) { var forwardingMessage = messageEventArgs.Message; DataBaseContextAdmin.SetForwardingMessageId(userId, forwardingMessage.MessageId); if (message == "Подтвердить") { await BotController.Bot.SendTextMessageAsync(userId, "Введите сообщение для рассылки."); } if (message == "Назад") { Undo(userId); } if (message == "Отмена") { Undo(userId); } if (!KeyWords.Contains(message)) { ConfirmForwardingMessage(userId, forwardingMessage.MessageId); } }
public static async void HandleTargetName(int userId, string message) { var tempUserName = message; DataBaseContextAdmin.SetTargetName(userId, tempUserName); if (message == "Подтвердить") { await BotController.Bot.SendTextMessageAsync(userId, "Введите username"); } if (message == "Назад") { Undo(userId); } if (message == "Отмена") { Undo(userId); } if (!KeyWords.Contains(message)) { ConfirmUser(userId, tempUserName); } }
public static void HandleAdminCommands(MessageEventArgs messageEventArgs) { if (!DataBaseContextAdmin.CheckAdminRights(messageEventArgs.Message.From.Id)) { return; } var userId = messageEventArgs.Message.From.Id; var message = messageEventArgs.Message.Text; var commandId = DataBaseContextAdmin.GetCommandId(userId); switch (commandId) { case (int)AdminCommandStep.Default: AdminCommand.HandleDefaultCommands(userId, message); break; case (int)AdminCommandStep.ShowUsers: AdminCommand.HandleTargetName(userId, message); break; case (int)AdminCommandStep.ConfirmUser: AdminCommand.HandleConfirmingUser(messageEventArgs, userId, message); break; case (int)AdminCommandStep.SendMessage: AdminCommand.HandleSendMessage(messageEventArgs, userId, message); break; case (int)AdminCommandStep.ConfirmSending: AdminCommand.HandleConfirmingSending(userId, message); break; case (int)AdminCommandStep.EditTimetable: TimetableEditor.EditTimetable(userId, message); break; case (int)AdminCommandStep.DeparturePlace: TimetableEditor.SetDeparturePlace(userId, message); break; case (int)AdminCommandStep.DepartureDate: TimetableEditor.SetDepartureDate(userId, message); break; case (int)AdminCommandStep.DepartureTime: TimetableEditor.SetDepartureTime(userId, message); break; case (int)AdminCommandStep.ArrivalPlace: TimetableEditor.SetArrivalPlace(userId, message); break; case (int)AdminCommandStep.ArrivalDate: TimetableEditor.SetArrivalDate(userId, message); break; case (int)AdminCommandStep.ArrivalTime: TimetableEditor.SetArrivalTime(userId, message); break; case (int)AdminCommandStep.SetTripIdEdit: TimetableEditor.ChooseTripIdToEdit(userId, message); break; case (int)AdminCommandStep.SetTripIdDel: TimetableEditor.ChooseTripIdToDelete(userId, message); break; case (int)AdminCommandStep.ChooseTripColumn: TimetableEditor.ChooseTripColumn(userId, message); break; case (int)AdminCommandStep.EditTripColumn: TimetableEditor.EditTripColumn(userId, message); break; } }