public override MessagesSendParams ConstructResponse(Message message) { string response = ""; switch (message.Text.ToLower()) { case "сегодня": if (DateTime.Now.DayOfWeek != DayOfWeek.Sunday) { response = Converters.SheduleFormat.GetSheduleOn(DateTime.Now, IpdShedule, false); } else { return new MessagesSendParams() { Message = "ВОСКРЕСЕНЬЕ:\n\nВыходной день. Пар не должно быть.", RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() } }; break; case "завтра": if (DateTime.Now.DayOfWeek != DayOfWeek.Saturday) { response = Converters.SheduleFormat.GetSheduleOn(DateTime.Now.AddDays(1), IpdShedule, false); } else { return new MessagesSendParams() { Message = "ВОСКРЕСЕНЬЕ:\n\nВыходной день. Пар не должно быть.", RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() } }; break; case "понедельник": case "вторник": case "среда": case "четверг": case "пятница": case "суббота": DayOfWeek day = Converters.DayOfWeekConverter.FromStrToDOW(message.Text); response = Converters.SheduleFormat.GetSheduleOn((new DateTime(2019, 9, 2)).AddDays(day == DayOfWeek.Sunday ? 6 : (int)day - 1), IpdShedule, true); break; case "воскресенье": return(new MessagesSendParams() { Message = "ВОСКРЕСЕНЬЕ:\n\nВыходной день. Пар не должно быть.", RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() }); case "помощь": return(new MessagesSendParams() { Message = $"{Emoji.RedCircle()} SheduleBOT ALPHA v0.73 {Emoji.RedCircle()}\n\nПоследние изменения:\n - Обновлена версия библиотеки TimetableGetter.dll \nЭтот бот находится на стадии alpha-тестирования и может работать нестабильно. Обо всех найденных ошибках сообщать: http://vk.com/flexlug \n Для того, чтобы увидеть расписание, введите соответствующий день недели.\nТакже можно вывести расписание на сегодняшний или завтрашний день. Вводите \"сегодня\" или \"завтра\" соответственно.", RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() }); default: return(new MessagesSendParams() { Message = "Пардон, я тебя не понял. Даже не знаю, что и сказать =(.", RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() }); } return(new MessagesSendParams() { Message = response, RandomId = new DateTime().Millisecond, PeerId = message.PeerId.Value, Keyboard = keyboardBuilder.Build() }); }
/// <summary> /// Возвращает расписание на определённый день недели /// </summary> /// <param name="day">День, на который нужно получить расписание</param> /// <param name="shedule">Само расписание</param> /// <param name="bothWeeeks">Расписание на обе недели (верхней и нижней) или только на текущей</param> /// <returns></returns> public static string GetSheduleOn(DateTime day, Shedule shedule, bool bothWeeks) { StringBuilder lower = new StringBuilder(); StringBuilder upper = new StringBuilder(); StringBuilder final = new StringBuilder(); final.AppendLine($"{Converters.DayOfWeekConverter.FromDOWToStr(day.DayOfWeek).ToUpper()}:\n"); if (shedule.IsLower(day)) { lower.AppendLine("НИЖНЯЯ НЕДЕЛЯ:"); upper.AppendLine("Верхняя неделя:"); } else { lower.AppendLine("Нижняя неделя:"); upper.AppendLine("ВЕРХНЯЯ НЕДЕЛЯ:"); } Day loadingDay = null; switch (day.DayOfWeek) { case DayOfWeek.Monday: loadingDay = shedule.Monday; break; case DayOfWeek.Tuesday: loadingDay = shedule.Tuesday; break; case DayOfWeek.Wednesday: loadingDay = shedule.Wednesday; break; case DayOfWeek.Thursday: loadingDay = shedule.Thursday; break; case DayOfWeek.Friday: loadingDay = shedule.Friday; break; case DayOfWeek.Saturday: loadingDay = shedule.Saturday; break; } foreach (Subject subj in loadingDay.Timetable) { if (subj.WeekType == WeekType.Lower) { lower.AppendLine($"{Emoji.Number(subj.SubjectNumber)}: {(subj.GroupNumber != 0 ? $"(группа {subj.GroupNumber})" : "")} {subj.SubjectName.ToUpper()} ({subj.Auditory}) {subj.SubjectType}\n{subj.EducatorName}{(subj.Comment == string.Empty ? "" : $"\n{Emoji.RedCircle()}{subj.Comment}{Emoji.RedCircle()}")}"); } else { upper.AppendLine($"{Emoji.Number(subj.SubjectNumber)}: {(subj.GroupNumber != 0 ? $"(группа {subj.GroupNumber})" : "")} {subj.SubjectName.ToUpper()} ({subj.Auditory}) {subj.SubjectType}\n{subj.EducatorName}{(subj.Comment == string.Empty ? "" : $"\n{Emoji.RedCircle()}{subj.Comment}{Emoji.RedCircle()}")}"); } } if (!bothWeeks) { if (shedule.IsLower(day)) { final.Append(lower); } else { final.Append(upper); } } else { final.Append(lower); final.Append("\n\n"); final.Append(upper); } if (loadingDay.Comments.Count != 0) { foreach (string str in loadingDay.Comments) { final.Append($"{str}\n"); } } return(final.ToString()); }