diff --git a/modules/ssau_parser/shedule.go b/modules/ssau_parser/shedule.go
index a9148e5..e1210d6 100644
--- a/modules/ssau_parser/shedule.go
+++ b/modules/ssau_parser/shedule.go
@@ -68,8 +68,33 @@ func Parse(doc *goquery.Document, isGroup bool, sheduleId int64, week int) (*She
})
var shedule [][]Lesson
+ var firstNum int
for t := 0; t < len(raw_times); t += 2 {
+ if t == 0 {
+ begin, err := time.Parse(" 15:04 -07", raw_times[t])
+ if err != nil {
+ return nil, err
+ }
+ switch begin.Hour() {
+ case 8:
+ firstNum = 0
+ case 9:
+ firstNum = 1
+ case 11:
+ firstNum = 2
+ case 13:
+ firstNum = 3
+ case 15:
+ firstNum = 4
+ case 17:
+ firstNum = 5
+ case 18:
+ firstNum = 6
+ case 20:
+ firstNum = 7
+ }
+ }
var time_line []Lesson
for d, date := range raw_dates {
begin_raw := date + raw_times[t]
@@ -86,7 +111,7 @@ func Parse(doc *goquery.Document, isGroup bool, sheduleId int64, week int) (*She
lesson := Lesson{
Begin: begin,
End: end,
- NumInShedule: t / 2,
+ NumInShedule: t/2 + firstNum,
SubLessons: lessons[idx],
}
time_line = append(time_line, lesson)
diff --git a/modules/tg/handlers.go b/modules/tg/handlers.go
index c433cde..1bc8fb8 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: "not_started",
+ PosTag: "ready",
}
_, err = db.Insert(user, tg_user)
if err != nil {
@@ -53,7 +53,11 @@ func (bot *Bot) Start() error {
if err != nil {
return err
}
- msg := tgbotapi.NewMessage(bot.TG_user.TgId, "Привет! У меня можно посмотреть расписание занятий\nПросто введи номер группы или фамилию преподавателя")
+ msg := tgbotapi.NewMessage(
+ bot.TG_user.TgId,
+ `Привет! Я новая версия этого бота и пока тут за главного (:
+У меня можно посмотреть в удобном формате ближайшие пары, расписание по дням и даже по неделям!
+Просто напиши мне номер группы или фамилию преподавателя`)
msg.ParseMode = tgbotapi.ModeHTML
_, err = bot.TG.Send(msg)
return err
diff --git a/modules/tg/shedule.go b/modules/tg/shedule.go
index 58465ac..9d39b3f 100644
--- a/modules/tg/shedule.go
+++ b/modules/tg/shedule.go
@@ -188,9 +188,7 @@ func (bot *Bot) GetLessons(shedules []database.ShedulesInUser, now time.Time, is
return nil, err
}
- if len(lessons) > 0 {
- return lessons, nil
- } else if len(isRetry) == 0 || isRetry[0] < 2 {
+ if len(isRetry) == 0 || isRetry[0] < 2 {
_, week := now.ISOWeek()
isRetry, err = bot.LoadShedule(shedules, week, isRetry...)
if err != nil {
@@ -198,6 +196,8 @@ func (bot *Bot) GetLessons(shedules []database.ShedulesInUser, now time.Time, is
}
dw := isRetry[0]
return bot.GetLessons(shedules, now, dw+1)
+ } else if len(isRetry) != 0 && len(lessons) != 0 {
+ return lessons, nil
} else {
return nil, nil
}
diff --git a/modules/tg/week_shedule.go b/modules/tg/week_shedule.go
index 2af1e6e..8df982e 100644
--- a/modules/tg/week_shedule.go
+++ b/modules/tg/week_shedule.go
@@ -29,15 +29,15 @@ func (bot *Bot) GetWeekLessons(shedules []database.ShedulesInUser, week int, isR
if err != nil {
return nil, err
}
- if len(lessons) > 0 {
- return lessons, nil
- } else if len(isRetry) == 0 || isRetry[0] < 2 {
+ if len(isRetry) == 0 || isRetry[0] < 2 {
isRetry, err = bot.LoadShedule(shedules, week+bot.Week, isRetry...)
if err != nil {
return nil, err
}
dw := isRetry[0]
return bot.GetWeekLessons(shedules, week, dw+1)
+ } else if len(isRetry) != 0 && len(lessons) != 0 {
+ return lessons, nil
} else {
return nil, nil
}
@@ -63,12 +63,16 @@ func (bot *Bot) GetPersonalWeekSummary(dt int, msg ...tgbotapi.Message) {
func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPersonal bool, editMsg ...tgbotapi.Message) error {
_, week := time.Now().ISOWeek()
week += dw
- lessons, _ := bot.GetWeekLessons(shedules, week-bot.Week)
+ lessons, err := bot.GetWeekLessons(shedules, week-bot.Week)
+ if err != nil {
+ log.Fatal(err)
+ }
var dates []time.Time
begins := make(map[time.Time]bool)
ends := make(map[time.Time]bool)
height := 0
+ minDay := lessons[0].NumInShedule
for _, lesson := range lessons {
t := lesson.Begin
begin := time.Date(2000, 1, 1, t.Hour(), t.Minute(), 0, 0, t.Location())
@@ -80,6 +84,8 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer
if lesson.NumInShedule > height {
height = lesson.NumInShedule
+ } else if lesson.NumInShedule < minDay {
+ minDay = lesson.NumInShedule
}
}
var times []ssau_parser.Lesson
@@ -110,12 +116,12 @@ func (bot *Bot) GetWeekSummary(shedules []database.ShedulesInUser, dw int, isPer
dates = append(dates, weekBegin.Add(time.Hour*time.Duration(24*i)))
}
- shedule := make([][6][]database.Lesson, height+1)
+ shedule := make([][6][]database.Lesson, height-minDay+1)
pairs := GroupPairs(lessons)
for _, p := range pairs {
day := int(math.Floor(p[0].Begin.Sub(weekBegin).Hours() / 24))
- shedule[p[0].NumInShedule][day] = p
+ shedule[p[0].NumInShedule-minDay][day] = p
}
html := bot.CreateHTMLShedule(week, shedule, dates, times)