From a0bada3e762f79e7a741280599497069c7964a2a Mon Sep 17 00:00:00 2001 From: Vladless Date: Sun, 13 Oct 2024 04:02:47 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=20=D0=BD=D0=B5=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=BC=20=D1=82=D1=80=D0=B8=D0=B0=D0=BB=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/key_management.py | 39 ++++++++++++++++++++++++++++++++++++-- handlers/notifications.py | 1 + 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/handlers/key_management.py b/handlers/key_management.py index da77bf58..65eace84 100644 --- a/handlers/key_management.py +++ b/handlers/key_management.py @@ -126,14 +126,49 @@ async def cancel_create_key(callback_query: CallbackQuery, state: FSMContext): @router.message(Command('start')) async def handle_start(message: types.Message, state: FSMContext): - # Обработка команды /start await start_command(message) @router.message(Command('menu')) async def handle_menu(message: types.Message, state: FSMContext): - # Обработка команды /menu await start_command(message) +@router.message(Command('send_trial')) +async def handle_send_trial_command(message: types.Message, state: FSMContext): + try: + conn = await asyncpg.connect(DATABASE_URL) + try: + # Получаем всех пользователей с не использованным пробным ключом + records = await conn.fetch(''' + SELECT tg_id FROM connections WHERE trial = 0 + ''') + + if records: + for record in records: + tg_id = record['tg_id'] + trial_message = ( + "🎉 Вам предоставлен пробный период на 1 день!\n" + "Пожалуйста, воспользуйтесь им, чтобы протестировать наш сервис." + ) + try: + # Отправляем сообщение каждому пользователю + await bot.send_message(chat_id=tg_id, text=trial_message) + except Exception as e: + # Если бот был заблокирован пользователем, просто пропускаем его + if "Forbidden: bot was blocked by the user" in str(e): + print(f"Бот заблокирован пользователем с tg_id: {tg_id}") + else: + print(f"Ошибка при отправке сообщения пользователю {tg_id}: {e}") + + await message.answer("Сообщения о пробном периоде отправлены всем пользователям с не использованным ключом.") + else: + await message.answer("Нет пользователей с не использованными пробными ключами.") + + finally: + await conn.close() + + except Exception as e: + await message.answer(f"Ошибка при отправке сообщений: {e}") + @router.message(Command('send_to_all')) async def send_message_to_all_clients(message: types.Message, state: FSMContext): if message.from_user.id != ADMIN_ID: diff --git a/handlers/notifications.py b/handlers/notifications.py index 1229dd7e..bf4a8db6 100644 --- a/handlers/notifications.py +++ b/handlers/notifications.py @@ -96,3 +96,4 @@ async def notify_expiring_keys(bot: Bot): await conn.close() except Exception as e: print(f"Ошибка при отправке уведомлений: {e}") + # Импортируйте функцию, которая возвращает все соединения