Исправлено: расписание, где пары начинаются не с 8 часов
Изменено: автоподгрузка каждый раз
This commit is contained in:
parent
38b9aede57
commit
b78ccaaba9
|
@ -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)
|
||||
|
|
|
@ -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Просто введи <b>номер группы</b> или <b>фамилию преподавателя</b>")
|
||||
msg := tgbotapi.NewMessage(
|
||||
bot.TG_user.TgId,
|
||||
`Привет! Я новая версия этого бота и пока тут за главного (:
|
||||
У меня можно посмотреть в удобном формате <b>ближайшие пары</b>, расписание <b>по дням</b> и даже <b>по неделям</b>!
|
||||
Просто напиши мне <b>номер группы</b> или <b>фамилию преподавателя</b>`)
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
_, err = bot.TG.Send(msg)
|
||||
return err
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Reference in New Issue