@@ -443,21 +443,22 @@ func (m *MessengerBot) ManageUserDataAfterPayment(value, userTgID string) {
443443 return
444444 }
445445
446- // Убираем ограничение по ключу в Outline Manager
447- if err = m .httpRequest .RemoveOutlineKeyLimit (keyID , url ); err != nil {
448- return
449- }
450-
451- if err = m .repo .UpdateProcessedKey (keyID , false ); err != nil {
452- return
446+ // Убираем ограничение по ключу в Outline Manager и меняем флажок processed на false, если ключ уже был недействительным
447+ if now .After (expiresAt ) {
448+ if err = m .httpRequest .RemoveOutlineKeyLimit (keyID , url ); err != nil {
449+ return
450+ }
451+ if err = m .repo .UpdateProcessedKey (keyID , false ); err != nil {
452+ return
453+ }
453454 }
454-
455455 expirationDate := newExpiration .Format ("02.01.2006 15:04" )
456456
457457 // Формируем сообщение для пользователя о новом сроке действия
458458 text := fmt .Sprintf (
459459 "🎉 *Ваш ключ успешно продлён!* 🎉\n \n " +
460- "📅 *Ключ действителен до: * `%s`.\n \n " +
460+ "📅 *Ключ действителен до: * \n " +
461+ " `%s`\n \n " +
461462 "Спасибо, что остаетесь с нами!\n " +
462463 "Мы ценим вашу поддержку! 😊" ,
463464 expirationDate ,
@@ -523,10 +524,32 @@ func (m *MessengerBot) AddReferralSubscriptionDays(userID string, expirationTime
523524 }
524525
525526 // Уведомляем пользователя о продлении времени действия ключа
526- if err = m .NotifyUserAboutReferralPurchase (strReferralUserID , newExpiration ); err != nil {
527+ if err = m .NotifyUserAboutReferralPurchase (strReferralUserID , newExpiration , expirationTime ); err != nil {
528+ return
529+ }
530+
531+ // Получаем ID ключа outline по userID
532+ keyID , err := m .repo .GetKeyIDByUserID (strReferralUserID )
533+ if err != nil {
534+ return
535+ }
536+
537+ // Получаем URL API для запроса к серверу
538+ url := os .Getenv ("API_URL" ) // url сервера с outline
539+ if url == "" {
540+ slog .Warn (op , "API_URL пуст" )
527541 return
528542 }
529543
544+ // меняем флажок processed на false, если ключ уже был недействительным
545+ if now .After (expiresAt ) {
546+ if err = m .repo .UpdateProcessedKey (keyID , false ); err != nil {
547+ return
548+ }
549+ if err = m .httpRequest .RemoveOutlineKeyLimit (keyID , url ); err != nil {
550+ return
551+ }
552+ }
530553 slog .Info ("Время для реферала успешно обновлено" )
531554 return
532555 }
@@ -551,15 +574,15 @@ func (m *MessengerBot) AddReferralSubscriptionDays(userID string, expirationTime
551574 }
552575
553576 // Уведомляем пользователя о новом ключе
554- if err = m .NotifyUserAboutReferralPurchase (strReferralUserID , time .Now ().Add (expirationTime )); err != nil {
577+ if err = m .NotifyUserAboutReferralPurchase (strReferralUserID , time .Now ().Add (expirationTime ), expirationTime ); err != nil {
555578 return
556579 }
557580
558581 slog .Info (op , "Ключ успешно добавлен и отправлен" , slog .Int ("userID" , referralUserID ))
559582}
560583
561584// NotifyUserAboutReferralPurchase - отправляет уведомление пользователю о том, что по его реферальной ссылке был куплен тариф.
562- func (m * MessengerBot ) NotifyUserAboutReferralPurchase (userTgID string , expiresAt time.Time ) error {
585+ func (m * MessengerBot ) NotifyUserAboutReferralPurchase (userTgID string , expiresAt time.Time , addTime time. Duration ) error {
563586 const op = "internal/bot/messenger.go/NotifyUserAboutReferralPurchase"
564587
565588 // Преобразуем userTgID в chatID
@@ -576,8 +599,9 @@ func (m *MessengerBot) NotifyUserAboutReferralPurchase(userTgID string, expiresA
576599 text := fmt .Sprintf (
577600 "🎉 *По вашей реферальной ссылке оформлен тариф!* 🎉\n \n " +
578601 "📅 *Ключ действителен до:* `%s`\n \n " +
602+ "📆 *Добавлено дней: * `%v`\n \n " +
579603 "⬇️ Нажмите на кнопку ниже, чтобы получить ключ." ,
580- expirationDate ,
604+ expirationDate , addTime . Hours () / 24 ,
581605 )
582606
583607 // Создаём кнопку для активации команды
0 commit comments