diff --git a/modules/tg/bot.go b/modules/tg/bot.go
index d3056bd..8931bbb 100644
--- a/modules/tg/bot.go
+++ b/modules/tg/bot.go
@@ -132,6 +132,11 @@ func (bot *Bot) HandleUpdate(update tgbotapi.Update, now ...time.Time) (tgbotapi
if len(now) == 0 {
now = append(now, msg.Time())
}
+ if msg.Text == "Моё расписание" {
+ return bot.GetPersonal(now[0], user)
+ }
+ return bot.Find(now[0], user, msg.Text)
+ case database.Add:
return bot.Find(now[0], user, msg.Text)
default:
return bot.Etc(user)
diff --git a/modules/tg/handlers.go b/modules/tg/handlers.go
index d57f2d8..d59c3bb 100644
--- a/modules/tg/handlers.go
+++ b/modules/tg/handlers.go
@@ -15,6 +15,7 @@ import (
// Приветственное сообщение
func (bot *Bot) Start(user *database.TgUser) error {
user.PosTag = database.Ready
+ // TODO: исправить первичный ключ во всех обновлениях
_, err := bot.DB.Update(user)
if err != nil {
return err
@@ -24,6 +25,7 @@ func (bot *Bot) Start(user *database.TgUser) error {
`Привет! У меня можно посмотреть в удобном формате ближайшие пары, расписание по дням и даже по неделям!
Просто напиши мне номер группы или фамилию преподавателя`)
msg.ParseMode = tgbotapi.ModeHTML
+ msg.ReplyMarkup = GeneralKeyboard()
_, err = bot.TG.Send(msg)
return err
}
@@ -80,41 +82,48 @@ func (bot *Bot) Find(now time.Time, user *database.TgUser, query string) (tgbota
// Если получен единственный результат, сразу выдать (подключить) расписание
if len(allGroups) == 1 || len(allTeachers) == 1 {
+ var sheduleId int64
+ var isGroup bool
+ if len(allGroups) == 1 {
+ sheduleId = allGroups[0].GroupId
+ isGroup = true
+ } else {
+ sheduleId = allTeachers[0].TeacherId
+ isGroup = false
+ }
+ shedule := ssau_parser.WeekShedule{
+ IsGroup: isGroup,
+ SheduleId: sheduleId,
+ }
+ not_exists, _ := ssau_parser.CheckGroupOrTeacher(bot.DB, shedule)
+ if not_exists {
+ msg := tgbotapi.NewMessage(user.TgId, "Загружаю расписание...\nЭто займёт некоторое время")
+ bot.TG.Send(msg)
+ err := bot.LoadShedule(shedule)
+ if err != nil {
+ bot.Debug.Println(err)
+ }
+ }
+
if user.PosTag == database.Add {
- msg := tgbotapi.NewMessage(user.TgId, "Подключено!")
- keyboard := tgbotapi.NewReplyKeyboard(
- []tgbotapi.KeyboardButton{
- tgbotapi.NewKeyboardButton("Моё расписание"),
- })
- msg.ReplyMarkup = keyboard
+ sh := Swap(shedule)
+ sh.L9Id = user.L9Id
+ if _, err := bot.DB.InsertOne(&sh); err != nil {
+ return nilMsg, err
+ }
user.PosTag = database.Ready
if _, err := bot.DB.Update(user); err != nil {
return nilMsg, err
}
+ msg := tgbotapi.NewMessage(
+ user.TgId,
+ "Расписание успешно подключено!\n"+
+ "Теперь его можно открыть по кнопке Моё расписание👇",
+ )
+ msg.ParseMode = tgbotapi.ModeHTML
+ msg.ReplyMarkup = GeneralKeyboard()
return bot.TG.Send(msg)
} else {
- var sheduleId int64
- var isGroup bool
- if len(allGroups) == 1 {
- sheduleId = allGroups[0].GroupId
- isGroup = true
- } else {
- sheduleId = allTeachers[0].TeacherId
- isGroup = false
- }
- shedule := ssau_parser.WeekShedule{
- IsGroup: isGroup,
- SheduleId: sheduleId,
- }
- not_exists, _ := ssau_parser.CheckGroupOrTeacher(bot.DB, shedule)
- if not_exists {
- msg := tgbotapi.NewMessage(user.TgId, "Загружаю расписание...\nЭто займёт некоторое время")
- bot.TG.Send(msg)
- err := bot.LoadShedule(shedule)
- if err != nil {
- bot.Debug.Println(err)
- }
- }
return bot.GetSummary(now, user, []database.ShedulesInUser{Swap(shedule)}, false)
}
@@ -161,15 +170,25 @@ func (bot *Bot) GetShedule(user *database.TgUser, query *tgbotapi.CallbackQuery,
if err != nil {
return err
}
+ shedule := database.ShedulesInUser{
+ IsGroup: isGroup,
+ SheduleId: groupId,
+ }
if !isAdd {
- shedule := database.ShedulesInUser{
- IsGroup: isGroup,
- SheduleId: groupId,
- }
if len(now) == 0 {
now = append(now, time.Now())
}
_, err = bot.GetSummary(now[0], user, []database.ShedulesInUser{shedule}, false, *query.Message)
+ } else {
+ shedule.L9Id = user.L9Id
+ if _, err = bot.DB.InsertOne(&shedule); err != nil {
+ return err
+ }
+ user.PosTag = database.Ready
+ if _, err = bot.DB.Update(&user); err != nil {
+ return err
+ }
+ _, err = bot.GetPersonal(now[0], user)
}
return err
}
@@ -180,20 +199,21 @@ func (bot *Bot) HandleSummary(user *database.TgUser, query *tgbotapi.CallbackQue
if err != nil {
return err
}
+ if len(now) == 0 {
+ now = append(now, time.Now())
+ }
if data[2] == "personal" {
- /*
- switch data[0] {
- case "day":
- bot.GetPersonalDaySummary(int(dt), *query.Message)
- case "week":
- bot.GetPersonalWeekSummary(int(dt), *query.Message)
- default:
- bot.GetPersonalSummary(*query.Message)
- }*/
- } else {
- if len(now) == 0 {
- now = append(now, time.Now())
+ switch data[1] {
+ case "day":
+ var shedules []database.ShedulesInUser
+ bot.DB.ID(user.L9Id).Find(&shedules)
+ _, err = bot.GetDaySummary(now[0], user, shedules, dt, true, *query.Message)
+ /*case "week":
+ bot.GetPersonalWeekSummary(int(dt), *query.Message)*/
+ default:
+ _, err = bot.GetPersonal(now[0], user, *query.Message)
}
+ } else {
switch data[1] {
case "day":
_, err = bot.GetDaySummary(now[0], user, shedule, dt, false, *query.Message)
diff --git a/modules/tg/shedule.go b/modules/tg/shedule.go
index 829c177..4266152 100644
--- a/modules/tg/shedule.go
+++ b/modules/tg/shedule.go
@@ -30,6 +30,29 @@ func (bot *Bot) GetPersonalSummary(user *database.TgUser, msg ...tgbotapi.Messag
}
}*/
+func (bot *Bot) GetPersonal(now time.Time, user *database.TgUser, editMsg ...tgbotapi.Message) (tgbotapi.Message, error) {
+ var shedules []database.ShedulesInUser
+ bot.DB.ID(user.L9Id).Find(&shedules)
+
+ if len(shedules) == 0 {
+ user.PosTag = database.Add
+ if _, err := bot.DB.Update(user); err != nil {
+ return tgbotapi.Message{}, err
+ }
+
+ msg := tgbotapi.NewMessage(
+ user.TgId,
+ "У тебя пока никакого расписания не подключено\n"+
+ "Введи номер группы или фамилию преподавателя",
+ )
+ msg.ReplyMarkup = tgbotapi.ReplyKeyboardRemove{RemoveKeyboard: true}
+ msg.ParseMode = tgbotapi.ModeHTML
+ return bot.TG.Send(msg)
+ } else {
+ return bot.GetSummary(now, user, shedules, true, editMsg...)
+ }
+}
+
// Получить краткую сводку
func (bot *Bot) GetSummary(
now time.Time,
diff --git a/modules/tg/utils.go b/modules/tg/utils.go
index 2257b71..44c8b8c 100644
--- a/modules/tg/utils.go
+++ b/modules/tg/utils.go
@@ -10,6 +10,13 @@ import (
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
+func GeneralKeyboard() tgbotapi.ReplyKeyboardMarkup {
+ return tgbotapi.NewReplyKeyboard(
+ []tgbotapi.KeyboardButton{
+ tgbotapi.NewKeyboardButton("Моё расписание"),
+ })
+}
+
// Создание ряда кнопок из списка групп
func GenerateGroupsArray(groups []database.Group, isAdd bool) []tgbotapi.InlineKeyboardButton {
var grKeys []tgbotapi.InlineKeyboardButton