Добавлено: личное расписание
This commit is contained in:
parent
b5cc8da9be
commit
2232b69a57
|
@ -132,6 +132,11 @@ func (bot *Bot) HandleUpdate(update tgbotapi.Update, now ...time.Time) (tgbotapi
|
||||||
if len(now) == 0 {
|
if len(now) == 0 {
|
||||||
now = append(now, msg.Time())
|
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)
|
return bot.Find(now[0], user, msg.Text)
|
||||||
default:
|
default:
|
||||||
return bot.Etc(user)
|
return bot.Etc(user)
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
// Приветственное сообщение
|
// Приветственное сообщение
|
||||||
func (bot *Bot) Start(user *database.TgUser) error {
|
func (bot *Bot) Start(user *database.TgUser) error {
|
||||||
user.PosTag = database.Ready
|
user.PosTag = database.Ready
|
||||||
|
// TODO: исправить первичный ключ во всех обновлениях
|
||||||
_, err := bot.DB.Update(user)
|
_, err := bot.DB.Update(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -24,6 +25,7 @@ func (bot *Bot) Start(user *database.TgUser) error {
|
||||||
`Привет! У меня можно посмотреть в удобном формате <b>ближайшие пары</b>, расписание <b>по дням</b> и даже <b>по неделям</b>!
|
`Привет! У меня можно посмотреть в удобном формате <b>ближайшие пары</b>, расписание <b>по дням</b> и даже <b>по неделям</b>!
|
||||||
Просто напиши мне <b>номер группы</b> или <b>фамилию преподавателя</b>`)
|
Просто напиши мне <b>номер группы</b> или <b>фамилию преподавателя</b>`)
|
||||||
msg.ParseMode = tgbotapi.ModeHTML
|
msg.ParseMode = tgbotapi.ModeHTML
|
||||||
|
msg.ReplyMarkup = GeneralKeyboard()
|
||||||
_, err = bot.TG.Send(msg)
|
_, err = bot.TG.Send(msg)
|
||||||
return err
|
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 {
|
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 {
|
if user.PosTag == database.Add {
|
||||||
msg := tgbotapi.NewMessage(user.TgId, "Подключено!")
|
sh := Swap(shedule)
|
||||||
keyboard := tgbotapi.NewReplyKeyboard(
|
sh.L9Id = user.L9Id
|
||||||
[]tgbotapi.KeyboardButton{
|
if _, err := bot.DB.InsertOne(&sh); err != nil {
|
||||||
tgbotapi.NewKeyboardButton("Моё расписание"),
|
return nilMsg, err
|
||||||
})
|
}
|
||||||
msg.ReplyMarkup = keyboard
|
|
||||||
user.PosTag = database.Ready
|
user.PosTag = database.Ready
|
||||||
if _, err := bot.DB.Update(user); err != nil {
|
if _, err := bot.DB.Update(user); err != nil {
|
||||||
return nilMsg, err
|
return nilMsg, err
|
||||||
}
|
}
|
||||||
|
msg := tgbotapi.NewMessage(
|
||||||
|
user.TgId,
|
||||||
|
"Расписание успешно подключено!\n"+
|
||||||
|
"Теперь его можно открыть по кнопке <b>Моё расписание</b>👇",
|
||||||
|
)
|
||||||
|
msg.ParseMode = tgbotapi.ModeHTML
|
||||||
|
msg.ReplyMarkup = GeneralKeyboard()
|
||||||
return bot.TG.Send(msg)
|
return bot.TG.Send(msg)
|
||||||
} else {
|
} 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)
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
shedule := database.ShedulesInUser{
|
||||||
|
IsGroup: isGroup,
|
||||||
|
SheduleId: groupId,
|
||||||
|
}
|
||||||
if !isAdd {
|
if !isAdd {
|
||||||
shedule := database.ShedulesInUser{
|
|
||||||
IsGroup: isGroup,
|
|
||||||
SheduleId: groupId,
|
|
||||||
}
|
|
||||||
if len(now) == 0 {
|
if len(now) == 0 {
|
||||||
now = append(now, time.Now())
|
now = append(now, time.Now())
|
||||||
}
|
}
|
||||||
_, err = bot.GetSummary(now[0], user, []database.ShedulesInUser{shedule}, false, *query.Message)
|
_, 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
|
return err
|
||||||
}
|
}
|
||||||
|
@ -180,20 +199,21 @@ func (bot *Bot) HandleSummary(user *database.TgUser, query *tgbotapi.CallbackQue
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if len(now) == 0 {
|
||||||
|
now = append(now, time.Now())
|
||||||
|
}
|
||||||
if data[2] == "personal" {
|
if data[2] == "personal" {
|
||||||
/*
|
switch data[1] {
|
||||||
switch data[0] {
|
case "day":
|
||||||
case "day":
|
var shedules []database.ShedulesInUser
|
||||||
bot.GetPersonalDaySummary(int(dt), *query.Message)
|
bot.DB.ID(user.L9Id).Find(&shedules)
|
||||||
case "week":
|
_, err = bot.GetDaySummary(now[0], user, shedules, dt, true, *query.Message)
|
||||||
bot.GetPersonalWeekSummary(int(dt), *query.Message)
|
/*case "week":
|
||||||
default:
|
bot.GetPersonalWeekSummary(int(dt), *query.Message)*/
|
||||||
bot.GetPersonalSummary(*query.Message)
|
default:
|
||||||
}*/
|
_, err = bot.GetPersonal(now[0], user, *query.Message)
|
||||||
} else {
|
|
||||||
if len(now) == 0 {
|
|
||||||
now = append(now, time.Now())
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
switch data[1] {
|
switch data[1] {
|
||||||
case "day":
|
case "day":
|
||||||
_, err = bot.GetDaySummary(now[0], user, shedule, dt, false, *query.Message)
|
_, err = bot.GetDaySummary(now[0], user, shedule, dt, false, *query.Message)
|
||||||
|
|
|
@ -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"+
|
||||||
|
"Введи <b>номер группы</b> или <b>фамилию преподавателя</b>",
|
||||||
|
)
|
||||||
|
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(
|
func (bot *Bot) GetSummary(
|
||||||
now time.Time,
|
now time.Time,
|
||||||
|
|
|
@ -10,6 +10,13 @@ import (
|
||||||
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
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 {
|
func GenerateGroupsArray(groups []database.Group, isAdd bool) []tgbotapi.InlineKeyboardButton {
|
||||||
var grKeys []tgbotapi.InlineKeyboardButton
|
var grKeys []tgbotapi.InlineKeyboardButton
|
||||||
|
|
Reference in New Issue