From 649528e1655e197706ebaea13ad27d20c27d27d9 Mon Sep 17 00:00:00 2001 From: machka-pasla Date: Wed, 6 Aug 2025 18:03:14 +0300 Subject: [PATCH] Refactor bot username retrieval in bulk promo code creation - Updated the logic to retrieve the bot username dynamically, enhancing the accuracy of CSV links for promo codes. - Improved error handling to log failures in fetching the bot username, ensuring better traceability. - Adjusted the promo code service initialization in the start command handler to use the message context, improving consistency in bot interactions. --- bot/handlers/admin/promo/bulk.py | 15 +++++++++++++-- bot/handlers/user/start.py | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/bot/handlers/admin/promo/bulk.py b/bot/handlers/admin/promo/bulk.py index 181ee17..1b6b302 100644 --- a/bot/handlers/admin/promo/bulk.py +++ b/bot/handlers/admin/promo/bulk.py @@ -439,8 +439,19 @@ async def create_bulk_promo_codes_final(callback_or_message, "Команда для старта", "Ссылка для активации" ]) - # Add bot username from settings - bot_username = getattr(settings, 'BOT_USERNAME', 'your_bot') + # Get real bot username + bot_username = 'your_bot' # fallback + try: + if hasattr(callback_or_message, 'message'): + bot = callback_or_message.message.bot + else: + bot = callback_or_message.bot + + bot_info = await bot.get_me() + bot_username = bot_info.username or 'your_bot' + except Exception as e: + logging.error(f"Failed to get bot username for CSV links: {e}") + bot_username = 'your_bot' for code in created_codes: # Determine validity info diff --git a/bot/handlers/user/start.py b/bot/handlers/user/start.py index 9bf10f9..d0fa7f8 100644 --- a/bot/handlers/user/start.py +++ b/bot/handlers/user/start.py @@ -224,7 +224,7 @@ async def start_command_handler(message: types.Message, if promo_code_to_apply: try: from bot.services.promo_code_service import PromoCodeService - promo_code_service = PromoCodeService(settings, subscription_service, bot, i18n) + promo_code_service = PromoCodeService(settings, subscription_service, message.bot, i18n) success, result = await promo_code_service.apply_promo_code( session, user_id, promo_code_to_apply, current_lang