Добавлено: личное расписание
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 {
|
||||
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)
|
||||
|
|
|
@ -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 {
|
|||
`Привет! У меня можно посмотреть в удобном формате <b>ближайшие пары</b>, расписание <b>по дням</b> и даже <b>по неделям</b>!
|
||||
Просто напиши мне <b>номер группы</b> или <b>фамилию преподавателя</b>`)
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
msg.ReplyMarkup = GeneralKeyboard()
|
||||
_, err = bot.TG.Send(msg)
|
||||
return err
|
||||
}
|
||||
|
@ -80,19 +82,6 @@ func (bot *Bot) Find(now time.Time, user *database.TgUser, query string) (tgbota
|
|||
|
||||
// Если получен единственный результат, сразу выдать (подключить) расписание
|
||||
if len(allGroups) == 1 || len(allTeachers) == 1 {
|
||||
if user.PosTag == database.Add {
|
||||
msg := tgbotapi.NewMessage(user.TgId, "Подключено!")
|
||||
keyboard := tgbotapi.NewReplyKeyboard(
|
||||
[]tgbotapi.KeyboardButton{
|
||||
tgbotapi.NewKeyboardButton("Моё расписание"),
|
||||
})
|
||||
msg.ReplyMarkup = keyboard
|
||||
user.PosTag = database.Ready
|
||||
if _, err := bot.DB.Update(user); err != nil {
|
||||
return nilMsg, err
|
||||
}
|
||||
return bot.TG.Send(msg)
|
||||
} else {
|
||||
var sheduleId int64
|
||||
var isGroup bool
|
||||
if len(allGroups) == 1 {
|
||||
|
@ -115,6 +104,26 @@ func (bot *Bot) Find(now time.Time, user *database.TgUser, query string) (tgbota
|
|||
bot.Debug.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
if user.PosTag == database.Add {
|
||||
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"+
|
||||
"Теперь его можно открыть по кнопке <b>Моё расписание</b>👇",
|
||||
)
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
msg.ReplyMarkup = GeneralKeyboard()
|
||||
return bot.TG.Send(msg)
|
||||
} else {
|
||||
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
|
||||
}
|
||||
if !isAdd {
|
||||
shedule := database.ShedulesInUser{
|
||||
IsGroup: isGroup,
|
||||
SheduleId: groupId,
|
||||
}
|
||||
if !isAdd {
|
||||
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 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())
|
||||
}
|
||||
if data[2] == "personal" {
|
||||
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)
|
||||
|
|
|
@ -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(
|
||||
now time.Time,
|
||||
|
|
|
@ -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
|
||||
|
|
Reference in New Issue