Добавлено: уведомление о след. неделе
parent
2c09b3ab5a
commit
b038afa2a3
|
@ -186,6 +186,7 @@ func Mailing(bot *tg.Bot, notes []Notify, now time.Time) {
|
|||
case NextDay:
|
||||
query.NextDay = true
|
||||
txt, err = StrNextDay(bot, note)
|
||||
// TODO: установить время удаления на момент сообщения о начале пар
|
||||
tempTime = note.Lesson.Begin.Add(-60 * time.Minute)
|
||||
case NextWeek:
|
||||
query.NextWeek = true
|
||||
|
@ -193,30 +194,49 @@ func Mailing(bot *tg.Bot, notes []Notify, now time.Time) {
|
|||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
var condition string
|
||||
if note.Lesson.SubGroup == 0 {
|
||||
condition = "subgroup in (?, 1, 2)"
|
||||
} else {
|
||||
condition = "subgroup in (0, ?)"
|
||||
}
|
||||
if err := bot.DB.
|
||||
UseBool(string(note.NotifyType)).
|
||||
Table("ShedulesInUser").
|
||||
Cols("tgid").
|
||||
Join("INNER", "tguser", "tguser.l9id = ShedulesInUser.l9id").
|
||||
Where("subgroup in (0, ?)", note.Lesson.SubGroup).
|
||||
Where(condition, note.Lesson.SubGroup).
|
||||
Find(&users, &query); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
for _, user := range users {
|
||||
if !slices.Contains(ids, user.TgId) {
|
||||
msg := tgbotapi.NewMessage(user.TgId, txt)
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
m, err := bot.TG.Send(msg)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
temp := database.TempMsg{
|
||||
TgId: m.Chat.ID,
|
||||
MessageId: m.MessageID,
|
||||
Destroy: tempTime,
|
||||
}
|
||||
if _, err := bot.DB.InsertOne(temp); err != nil {
|
||||
log.Println(err)
|
||||
if note.NotifyType != NextWeek {
|
||||
msg := tgbotapi.NewMessage(user.TgId, txt)
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
m, err := bot.TG.Send(msg)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
temp := database.TempMsg{
|
||||
TgId: m.Chat.ID,
|
||||
MessageId: m.MessageID,
|
||||
Destroy: tempTime,
|
||||
}
|
||||
if _, err := bot.DB.InsertOne(temp); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
} else {
|
||||
if err = bot.GetWeekSummary(
|
||||
note.Lesson.Begin,
|
||||
&user,
|
||||
database.ShedulesInUser{},
|
||||
0,
|
||||
true,
|
||||
"На этой неделе больше ничего нет\n\nВыше расписание на следующую неделю",
|
||||
); err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
ids = append(ids, user.TgId)
|
||||
}
|
||||
|
|
|
@ -226,7 +226,7 @@ func (bot *Bot) HandleSummary(user *database.TgUser, query *tgbotapi.CallbackQue
|
|||
bot.DB.ID(user.L9Id).Find(&shedules)
|
||||
_, err = bot.GetDaySummary(now[0], user, shedules, dt, true, *query.Message)
|
||||
case "week":
|
||||
err = bot.GetWeekSummary(now[0], user, shedule[0], dt, true, *query.Message)
|
||||
err = bot.GetWeekSummary(now[0], user, shedule[0], dt, true, "", *query.Message)
|
||||
default:
|
||||
_, err = bot.GetPersonal(now[0], user, *query.Message)
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ func (bot *Bot) HandleSummary(user *database.TgUser, query *tgbotapi.CallbackQue
|
|||
case "day":
|
||||
_, err = bot.GetDaySummary(now[0], user, shedule, dt, false, *query.Message)
|
||||
case "week":
|
||||
err = bot.GetWeekSummary(now[0], user, shedule[0], dt, false, *query.Message)
|
||||
err = bot.GetWeekSummary(now[0], user, shedule[0], dt, false, "", *query.Message)
|
||||
|
||||
default:
|
||||
_, err = bot.GetSummary(now[0], user, shedule, false, *query.Message)
|
||||
|
|
|
@ -249,7 +249,7 @@ func TestGetWeekLessons(t *testing.T) {
|
|||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = bot.CreateWeekImg(now, &user, []database.ShedulesInUser{Swap(sh)}, 0, false)
|
||||
err = bot.CreateWeekImg(now, &user, []database.ShedulesInUser{Swap(sh)}, 0, false, "")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
|
|
@ -165,7 +165,9 @@ func (bot *Bot) EditOrSend(
|
|||
)
|
||||
newMsg.Caption = str
|
||||
newMsg.ParseMode = tgbotapi.ModeHTML
|
||||
newMsg.ReplyMarkup = &markup
|
||||
if len(markup.InlineKeyboard) != 0 {
|
||||
newMsg.ReplyMarkup = &markup
|
||||
}
|
||||
return bot.TG.Send(newMsg)
|
||||
} else if len(editMsg[0].Photo) == 0 {
|
||||
// Фото нет и не было, только текст
|
||||
|
@ -174,7 +176,9 @@ func (bot *Bot) EditOrSend(
|
|||
editMsg[0].MessageID,
|
||||
str,
|
||||
)
|
||||
msg.ReplyMarkup = &markup
|
||||
if len(markup.InlineKeyboard) != 0 {
|
||||
msg.ReplyMarkup = &markup
|
||||
}
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
if _, err := bot.TG.Request(msg); err != nil {
|
||||
if strings.Contains(err.Error(), "message is not modified") {
|
||||
|
@ -195,7 +199,9 @@ func (bot *Bot) EditOrSend(
|
|||
}
|
||||
|
||||
msg := tgbotapi.NewMessage(id, str)
|
||||
msg.ReplyMarkup = &markup
|
||||
if len(markup.InlineKeyboard) != 0 {
|
||||
msg.ReplyMarkup = &markup
|
||||
}
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
return bot.TG.Send(msg)
|
||||
}
|
||||
|
@ -209,12 +215,16 @@ func (bot *Bot) EditOrSend(
|
|||
)
|
||||
newMsg.Caption = str
|
||||
newMsg.ParseMode = tgbotapi.ModeHTML
|
||||
newMsg.ReplyMarkup = &markup
|
||||
if len(markup.InlineKeyboard) != 0 {
|
||||
newMsg.ReplyMarkup = &markup
|
||||
}
|
||||
return bot.TG.Send(newMsg)
|
||||
} else {
|
||||
// Только текст
|
||||
msg := tgbotapi.NewMessage(id, str)
|
||||
msg.ReplyMarkup = &markup
|
||||
if len(markup.InlineKeyboard) != 0 {
|
||||
msg.ReplyMarkup = &markup
|
||||
}
|
||||
msg.ParseMode = tgbotapi.ModeHTML
|
||||
return bot.TG.Send(msg)
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ func (bot *Bot) GetWeekSummary(
|
|||
shedule database.ShedulesInUser,
|
||||
dw int,
|
||||
isPersonal bool,
|
||||
caption string,
|
||||
editMsg ...tgbotapi.Message,
|
||||
) error {
|
||||
_, week := now.ISOWeek()
|
||||
|
@ -75,7 +76,7 @@ func (bot *Bot) GetWeekSummary(
|
|||
} else {
|
||||
shedules = append(shedules, shedule)
|
||||
}
|
||||
return bot.CreateWeekImg(now, user, shedules, dw, isPersonal, editMsg...)
|
||||
return bot.CreateWeekImg(now, user, shedules, dw, isPersonal, caption, editMsg...)
|
||||
} else {
|
||||
var shId int64
|
||||
if isPersonal {
|
||||
|
@ -83,14 +84,17 @@ func (bot *Bot) GetWeekSummary(
|
|||
} else {
|
||||
shId = shedule.SheduleId
|
||||
}
|
||||
markup := SummaryKeyboard(
|
||||
"sh_week",
|
||||
shId,
|
||||
shedule.IsGroup,
|
||||
dw,
|
||||
)
|
||||
markup := tgbotapi.InlineKeyboardMarkup{}
|
||||
if caption == "" {
|
||||
markup = SummaryKeyboard(
|
||||
"sh_week",
|
||||
shId,
|
||||
shedule.IsGroup,
|
||||
dw,
|
||||
)
|
||||
}
|
||||
|
||||
_, err := bot.EditOrSend(user.TgId, "", image.FileId, markup, editMsg...)
|
||||
_, err := bot.EditOrSend(user.TgId, caption, image.FileId, markup, editMsg...)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -114,6 +118,7 @@ func (bot *Bot) CreateWeekImg(
|
|||
shedules []database.ShedulesInUser,
|
||||
dw int,
|
||||
isPersonal bool,
|
||||
caption string,
|
||||
editMsg ...tgbotapi.Message,
|
||||
) error {
|
||||
_, week := now.ISOWeek()
|
||||
|
@ -270,16 +275,18 @@ func (bot *Bot) CreateWeekImg(
|
|||
} else {
|
||||
shId = shedules[0].SheduleId
|
||||
}
|
||||
markup := SummaryKeyboard(
|
||||
"sh_week",
|
||||
shId,
|
||||
shedules[0].IsGroup,
|
||||
dw,
|
||||
)
|
||||
|
||||
// Качаем фото и сохраняем данные о нём в БД
|
||||
photo := tgbotapi.NewPhoto(user.TgId, photoFileBytes)
|
||||
photo.ReplyMarkup = &markup
|
||||
photo.Caption = caption
|
||||
if caption == "" {
|
||||
photo.ReplyMarkup = SummaryKeyboard(
|
||||
"sh_week",
|
||||
shId,
|
||||
shedules[0].IsGroup,
|
||||
dw,
|
||||
)
|
||||
}
|
||||
resp, err := bot.TG.Send(photo)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Reference in New Issue