Skip to content

Commit 27cebb0

Browse files
author
Magomed
committed
fix bug with referral program
1 parent a05cf78 commit 27cebb0

2 files changed

Lines changed: 38 additions & 14 deletions

File tree

cmd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func main() {
1717

1818
// Загрузка переменных окружения из .env файла
1919
if err := godotenv.Load("F:\\bot_vpn\\.env"); err != nil {
20-
slog.Error(op, "Ошибка загрузки .env файла", slog.String("error", err.Error()))
20+
slog.Warn(op, "Ошибка загрузки .env файла", slog.String("error", err.Error()))
2121
}
2222

2323
port := os.Getenv("PORT")

internal/bot/messages.go

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)