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 = `