public void ShowNextDayTimetable(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); MessageTransfer msg = new MessageTransfer() { ChatId = user.Id }; var day = result.Entities.OfType <DateEntity>(Sys.Date); DayTimetable timetable = new DayTimetable(); switch (user.Role) { case Role.Student: timetable = CistApi.GetGroupTimetable((user as Student).GroupId, day.DateTime); break; case Role.Teacher: timetable = CistApi.GetTeacherTimetable((user as Teacher).TeacherId, day.DateTime); break; default: break; } msg.Message = timetable?.ToString() ?? $"В расписании нету пар на {day.DateTime.ToShortDateString()}"; result.SendResponse(msg.ToJson()); }
public void ShowGroupTimetable(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); MessageTransfer msg = new MessageTransfer() { ChatId = user.Id }; var group = result.Entities.OfType("groupName"); var day = result.Entities.OfType <DateEntity>(Sys.Date) ?? new DateEntity("", DateTime.Now); int groupId = -1; try { groupId = CistApi.GetGroupIdFromName(group.Value); } catch (Exception) { msg.Message = "Что-то я не нашел такой группы, попробуй ещё раз!"; result.SendResponse(msg.ToJson()); return; } DayTimetable timetable = CistApi.GetGroupTimetable(groupId, day.DateTime); msg.Message = timetable?.ToString() ?? $"В расписании нету пар на {day.DateTime.ToShortDateString()}"; result.SendResponse(msg.ToJson()); }
public void ShowTodayTimetable(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); MessageTransfer msg = new MessageTransfer() { ChatId = user.Id }; DayTimetable timetable = new DayTimetable(); switch (user.Role) { case Role.Student: timetable = CistApi.GetGroupTimetable((user as Student).GroupId, DateTime.Now); break; case Role.Teacher: timetable = CistApi.GetTeacherTimetable((user as Teacher).TeacherId, DateTime.Now); break; default: break; } msg.Message = timetable?.ToString() ?? "На сегодня пар нету!"; result.SendResponse(msg.ToJson()); }
public void ShowTeacherNearestTimetable(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); var msg = new MessageTransfer() { ChatId = user.Id }; var teacher = result.Entities.OfType("teacherName"); var day = DateTime.Now; int teacherId = -1; try { teacherId = CistApi.GetTeacherIdFromName(teacher.Value); } catch (Exception) { msg.Message = "Что-то я не нашел такого преподователя, попробуй ещё раз!"; result.SendResponse(msg.ToJson()); return; } var timetable = CistApi.GetTeacherNearestTimetable(teacherId, day); msg.Message = timetable != null ? $"Ближайшая пара у {teacher}:\n" + timetable?.ToString() : $"В расписании нету пар для {teacher}"; result.SendResponse(msg.ToJson()); }
public void ShowTeacherTimetable(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); MessageTransfer msg = new MessageTransfer() { ChatId = user.Id }; var teacher = result.Entities.OfType("teacherName"); var day = result.Entities.OfType <DateEntity>(Sys.Date); int teacherId = -1; try { teacherId = CistApi.GetTeacherIdFromName(teacher.Value); } catch (Exception) { msg.Message = "Что-то я не нашел такого преподователя, попробуй ещё раз!"; result.SendResponse(msg.ToJson()); return; } DayTimetable timetable = CistApi.GetTeacherTimetable(teacherId, day.DateTime); msg.Message = timetable?.ToString() ?? $"В расписании нету пар на {day.DateTime.ToShortDateString()}"; result.SendResponse(msg.ToJson()); }
public void ShowNureFeed(Context context, Result result) { var user = context.SharedData.OfType <User>(); context.SharedData.Remove(user); var msg = new MessageTransfer() { ChatId = user.Id }; try { msg.Message = CistApi.GetNureFeed(); } catch (Exception) { msg.Message = "К сожалению, сервер с новостями не работает!"; result.SendResponse(msg.ToJson()); return; } result.SendResponse(msg.ToJson()); }
private static async void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message != null && message.Type == MessageType.LocationMessage) { var msg = CistApi.GetTravelTime($"{message.Location.Latitude.ToString().Replace(",",".")},{message.Location.Longitude.ToString().Replace(",", ".")}"); await Bot.SendTextMessageAsync(message.Chat.Id, msg, replyMarkup : new ReplyKeyboardHide()); return; } if (message == null || message.Type != MessageType.TextMessage) { return; } User user = CheckRegistration(message); user = await CheckUserRoleAsync(user, message); if (user.Role == Role.NotSet) { return; } if (user.Role == Role.Student) { var student = user as Student; if (student == null) { return; } switch (student.GroupId) { case 0: await Bot.SendTextMessageAsync(message.Chat.Id, "Будь добр, напиши из какой ты группы?"); UService.ChangeGroup(user.Id, -1); return; case -1: try { int id = CistApi.GetGroupIdFromName(message.Text); UService.ChangeGroup(user.Id, id); await Bot.SendTextMessageAsync(message.Chat.Id, "Отлично, я запомнил это!"); } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, "Что-то у меня не получается найти такую группу, попробуй ещё раз!"); return; } return; default: break; } } else if (user.Role == Role.Teacher) { var teacher = user as Teacher; if (teacher == null) { return; } switch (teacher.TeacherId) { case 0: await Bot.SendTextMessageAsync(message.Chat.Id, "Пожалуйста, напишите ваше ФИО"); UService.ChangeTeacherId(teacher.Id, -1); return; case -1: try { int id = CistApi.GetTeacherIdFromName(message.Text); UService.ChangeTeacherId(user.Id, id); await Bot.SendTextMessageAsync(message.Chat.Id, "Отлично, я запомнил это!"); return; } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, "Что-то у меня не получается найти вас, попробуйте еще раз!"); } return; default: break; } } var textMessage = message.Text; switch (message.Text) { case "/timetable": textMessage = "Покажи мне моё расписание"; break; case "/weather": textMessage = "Погода"; break; case "/news": textMessage = "Новости"; break; case "/locate": var keyboard = new ReplyKeyboardMarkup(new[] { new KeyboardButton($"{Emoji.Round_Pushpin} Моё местоположение") { RequestLocation = true } } ); await Bot.SendTextMessageAsync(message.Chat.Id, "Отправьте пожалуйста своё местоположение!", replyMarkup : keyboard); return; case "/help": StringBuilder sb = new StringBuilder(); sb.AppendLine("Для общения с ботом можно использовать как быстрые команды:"); sb.Append( $"{Emoji.White_Check_Mark} /timetable - Расписание на сегодня\n{Emoji.White_Check_Mark} /weather - Погода\n{Emoji.White_Check_Mark} /news - Новости\n{Emoji.White_Check_Mark} /locate - Маршрут до университета\n{Emoji.White_Check_Mark} /help - Помощь\n{Emoji.White_Check_Mark} /restart - Перезагрузка отношений\n"); sb.AppendLine("Так и всевозможные фразы:"); sb.AppendLine($"{Emoji.Arrow_Right} Покажи мне моё расписание"); sb.AppendLine($"{Emoji.Arrow_Right} Покажи мне моё расписание на [дату]"); sb.AppendLine($"{Emoji.Arrow_Right} Расписание [название группы | ФИО преподователя]"); sb.AppendLine($"{Emoji.Arrow_Right} Новости"); sb.AppendLine("И много много других фраз!"); await Bot.SendTextMessageAsync(message.Chat.Id, sb.ToString()); return; case "/restart": UService.RemoveUser(user.Id); await Bot.SendTextMessageAsync(message.Chat.Id, "Хорошо, как скажешь!"); return; default: break; } RecognitionSystem.MainUser.Context.SharedData.Add(user); var evaluateRequest = RecognitionSystem.Evaluate(textMessage); try { evaluateRequest.Invoke(); } catch (Exception) { await Bot.SendTextMessageAsync(message.Chat.Id, $"Извини, не получилось выполнить твой запроc{Emoji.Disappointed}\n" + $"Какие-то проблемы на сервере\n" + $"Попробуй по позже!"); } }