Beispiel #1
0
        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()
            });
        }
Beispiel #2
0
        /// <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());
        }