diff --git a/modules/tg/handlers.go b/modules/tg/handlers.go index 9050450..c433cde 100644 --- a/modules/tg/handlers.go +++ b/modules/tg/handlers.go @@ -34,7 +34,7 @@ func (bot *Bot) InitUser(id int64, name string) (*database.TgUser, error) { L9Id: l9id, Name: name, TgId: id, - PosTag: "ready", + PosTag: "not_started", } _, err = db.Insert(user, tg_user) if err != nil { @@ -48,14 +48,14 @@ func (bot *Bot) InitUser(id int64, name string) (*database.TgUser, error) { } func (bot *Bot) Start() error { - /*bot.TG_user.PosTag = "add" + bot.TG_user.PosTag = "ready" _, err := bot.DB.Update(bot.TG_user) if err != nil { return err - }*/ - msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Привет! Введи свой номер группы или фамилию преподавателя") + } + msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Привет! У меня можно посмотреть расписание занятий\nПросто введи номер группы или фамилию преподавателя") msg.ParseMode = tgbotapi.ModeHTML - _, err := bot.TG.Send(msg) + _, err = bot.TG.Send(msg) return err } diff --git a/modules/tg/shedule.go b/modules/tg/shedule.go index e02f1b3..58465ac 100644 --- a/modules/tg/shedule.go +++ b/modules/tg/shedule.go @@ -41,9 +41,9 @@ func (bot *Bot) GetSummary(shedules []database.ShedulesInUser, isPersonal bool, firstPair = pairs[0] log.Println(firstPair, secondPair) - var str string + str := "📝Краткая сводка:\n\n" if pairs[0][0].Begin.Day() != time.Now().Day() { - str = "❗️Сегодня пар нет\nБлижайшие занятия " + str += "❗️Сегодня пар нет\nБлижайшие занятия " if time.Until(firstPair[0].Begin).Hours() < 48 { str += "завтра\n" } else { @@ -56,9 +56,9 @@ func (bot *Bot) GetSummary(shedules []database.ShedulesInUser, isPersonal bool, str += day } else { if firstPair[0].Begin.Before(now) { - str = "Сейчас:\n\n" + str += "Сейчас:\n\n" } else { - str = "Ближайшая пара сегодня:\n\n" + str += "Ближайшая пара сегодня:\n\n" } firstStr, err := PairToStr(firstPair, bot.DB) if err != nil { @@ -120,6 +120,15 @@ func (bot *Bot) GetPersonalDaySummary(dt int, msg ...tgbotapi.Message) { } } +var ruWeekdays = []string{ + "понедельник", + "вторник", + "среду", + "четверг", + "пятницу", + "субботу", +} + func (bot *Bot) GetDaySummary(shedules []database.ShedulesInUser, dt int, isPersonal bool, editMsg ...tgbotapi.Message) error { now := time.Now() day := time.Date(now.Year(), now.Month(), now.Day()+dt, 0, 0, 0, 0, now.Location()) @@ -131,7 +140,11 @@ func (bot *Bot) GetDaySummary(shedules []database.ShedulesInUser, dt int, isPers pairs := GroupPairs(lessons) var str string - str = fmt.Sprintf("Расписание на %s\n\n", pairs[0][0].Begin.Format("02.01")) + str = fmt.Sprintf( + "Расписание на %s, %s\n\n", + ruWeekdays[int(pairs[0][0].Begin.Weekday())-1], + pairs[0][0].Begin.Format("02.01"), + ) day, err := bot.GetDayShedule(pairs) if err != nil { return err diff --git a/modules/tg/utils.go b/modules/tg/utils.go index 7dd1b58..1ac6ead 100644 --- a/modules/tg/utils.go +++ b/modules/tg/utils.go @@ -53,7 +53,7 @@ func GenerateKeyboard(array []tgbotapi.InlineKeyboardButton, query string) tgbot } func SummaryKeyboard(clickedButton string, sheduleId int64, isTeacher bool, dt int) tgbotapi.InlineKeyboardMarkup { - tail := GenerateButtonTail(sheduleId, dt, isTeacher) + tail := GenerateButtonTail(sheduleId, 0, isTeacher) near := []tgbotapi.InlineKeyboardButton{ tgbotapi.NewInlineKeyboardButtonData("Краткая сводка", "near"+tail), @@ -72,6 +72,7 @@ func SummaryKeyboard(clickedButton string, sheduleId int64, isTeacher bool, dt i next_arrow := GenerateButtonTail(sheduleId, dt+1, isTeacher) arrows = []tgbotapi.InlineKeyboardButton{ tgbotapi.NewInlineKeyboardButtonData("⏮", clickedButton+prev_arrow), + tgbotapi.NewInlineKeyboardButtonData("🔄", clickedButton+update), tgbotapi.NewInlineKeyboardButtonData("⏭", clickedButton+next_arrow), } } else { diff --git a/modules/tg/week_shedule.go b/modules/tg/week_shedule.go index 05b159e..1770bca 100644 --- a/modules/tg/week_shedule.go +++ b/modules/tg/week_shedule.go @@ -5,6 +5,7 @@ import ( "log" "math" "os" + "sort" "strings" "time" @@ -82,16 +83,26 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer } } var times []ssau_parser.Lesson + var beginsSlice []time.Time + var endsSlice []time.Time for b := range begins { - l := ssau_parser.Lesson{ - Begin: b, - } - times = append(times, l) + beginsSlice = append(beginsSlice, b) } - i := 0 for e := range ends { - times[i].End = e - i++ + endsSlice = append(endsSlice, e) + } + sort.Slice(beginsSlice, func(i, j int) bool { + return beginsSlice[i].Before(beginsSlice[j]) + }) + sort.Slice(endsSlice, func(i, j int) bool { + return endsSlice[i].Before(endsSlice[j]) + }) + for i, b := range beginsSlice { + sh := ssau_parser.Lesson{ + Begin: b, + End: endsSlice[i], + } + times = append(times, sh) } weekBegin := timex.WeekStart(lessons[0].Begin.Year(), week) @@ -108,7 +119,15 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer } html := bot.CreateHTMLShedule(week, shedule, dates, times) - fname := fmt.Sprintf("./%d_%d.html", bot.TG_user.L9Id, week-bot.Week) + + if _, err := os.Stat("shedules"); os.IsNotExist(err) { + err = os.Mkdir("shedules", os.ModePerm) + if err != nil { + return err + } + } + + fname := fmt.Sprintf("./shedules/%d_%d.html", bot.TG_user.L9Id, week-bot.Week) f, _ := os.Create(fname) defer f.Close() f.WriteString(html) @@ -132,7 +151,7 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer return err } - fname = fmt.Sprintf("./%d_%d.pdf", bot.TG_user.L9Id, week-bot.Week) + fname = fmt.Sprintf("./shedules/%d_%d.pdf", bot.TG_user.L9Id, week-bot.Week) err = pdfg.WriteFile(fname) if err != nil { return err @@ -165,7 +184,15 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer shedules[0].IsTeacher, dw, ) - str := fmt.Sprintf("Расписание на %d неделю сообщением ниже 👇", week-bot.Week) + _, nowWeek := time.Now().ISOWeek() + var str string + if week == nowWeek { + str = fmt.Sprintf("Расписание на текущую (%d) неделю сообщением ниже 👇", week-bot.Week) + } else if week-nowWeek == 1 { + str = fmt.Sprintf("Расписание на следующую (%d) неделю сообщением ниже 👇", week-bot.Week) + } else { + str = fmt.Sprintf("Расписание на %d неделю сообщением ниже 👇", week-bot.Week) + } bot.EditOrSend(str, markup, editMsg...) return nil } @@ -179,7 +206,7 @@ const head = `