Много переделал
This commit is contained in:
95
handlers/start.py
Normal file
95
handlers/start.py
Normal file
@@ -0,0 +1,95 @@
|
||||
from aiogram import Router, types
|
||||
from aiogram.filters import Command
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
import logging
|
||||
from instences.config import BASE_URL_FASTAPI
|
||||
import aiohttp
|
||||
from keyboard.keyboards import main_keyboard
|
||||
|
||||
router = Router()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
async def call_api(method, endpoint, data=None):
|
||||
"""
|
||||
Выполняет HTTP-запрос к FastAPI.
|
||||
:param method: HTTP метод (GET, POST, и т.д.)
|
||||
:param endpoint: конечная точка API
|
||||
:param data: тело запроса (если необходимо)
|
||||
:return: JSON-ответ или "ERROR" при неуспехе
|
||||
"""
|
||||
url = f"{BASE_URL_FASTAPI}{endpoint}"
|
||||
logger.info(f"Инициализация запроса: {method} {url} с данными {data}")
|
||||
|
||||
try:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.request(method, url, json=data) as response:
|
||||
logger.info(f"Получен ответ от {url}: статус {response.status}")
|
||||
|
||||
if response.status in {200, 201}:
|
||||
result = await response.json()
|
||||
logger.debug(f"Ответ JSON: {result}")
|
||||
return result
|
||||
if response.status == 404:
|
||||
logger.debug(f"Код {response.status}, возвращаю ничего")
|
||||
return None
|
||||
logger.error(f"Ошибка в запросе: статус {response.status}, причина {response.reason}")
|
||||
return "ERROR"
|
||||
except Exception as e:
|
||||
logger.exception(f"Исключение при выполнении запроса к {url}: {e}")
|
||||
return "ERROR"
|
||||
|
||||
@router.message(Command("start"))
|
||||
async def start_command(message: Message):
|
||||
"""
|
||||
Обработчик команды /start.
|
||||
"""
|
||||
logger.info(f"Получена команда /start от пользователя: {message.from_user.id} ({message.from_user.username})")
|
||||
|
||||
try:
|
||||
user_data = await call_api("GET", f"/user/{message.from_user.id}")
|
||||
if not user_data:
|
||||
logger.debug("Пользователь не найден в базе, создаем новую запись.")
|
||||
await call_api("POST", "/user/create", {"telegram_id": message.from_user.id})
|
||||
|
||||
logger.debug("Отправка приветственного сообщения пользователю.")
|
||||
await message.answer(
|
||||
f"""Приветствуем в рядах птенец {message.from_user.username}🐣
|
||||
\nСкорее пополни баланс, приобрети подписку и получай доступ к TikTok, YouTube, Discord, Instagram на всех устройствах без ограничений ❕❕❕
|
||||
\nОзнакомься с руководством по пользованию и выбери подходящий тариф 🦅
|
||||
\nСледи за акциями, спец-предложениями, а также розыгрышами по ссылке ниже
|
||||
\n👇👇👇
|
||||
\nhttps://t.me/+0z5xqn3F1m02OTJi
|
||||
\nС любовью ваши пернатые разработчики 🤍🤍🤍""",
|
||||
reply_markup=main_keyboard()
|
||||
)
|
||||
logger.info("Приветственное сообщение отправлено.")
|
||||
|
||||
except Exception as e:
|
||||
logger.exception(f"Ошибка при обработке команды /start для пользователя {message.from_user.id}: {e}")
|
||||
await message.answer("Произошла ошибка. Попробуйте позже.")
|
||||
|
||||
@router.callback_query(lambda callback: callback.data == "base")
|
||||
async def start_callback_handler(callback: CallbackQuery):
|
||||
"""
|
||||
Обработчик callback_query с data="base".
|
||||
"""
|
||||
try:
|
||||
user_data = await call_api("GET", f"/user/{callback.from_user.id}")
|
||||
if not user_data:
|
||||
await call_api("POST", "/user/create", {"telegram_id": callback.from_user.id})
|
||||
|
||||
await callback.message.edit_text(
|
||||
f"""Приветствуем в рядах птенец {callback.from_user.username}🐣
|
||||
\nСкорее пополни баланс, приобрети подписку и получай доступ к TikTok, YouTube, Discord, Instagram на всех устройствах без ограничений ❕❕❕
|
||||
\nОзнакомься с руководством по пользованию и выбери подходящий тариф 🦅
|
||||
\nСледи за акциями, спец-предложениями, а также розыгрышами по ссылке ниже
|
||||
\n👇👇👇
|
||||
\nhttps://t.me/+0z5xqn3F1m02OTJi
|
||||
\nС любовью ваши пернатые разработчики 🤍🤍🤍""",
|
||||
reply_markup=main_keyboard()
|
||||
)
|
||||
except Exception as e:
|
||||
logger.exception(f"Ошибка при обработке callback с data='base': {e}")
|
||||
await callback.message.answer("Произошла ошибка. Попробуйте позже.")
|
||||
finally:
|
||||
await callback.answer()
|
||||
Reference in New Issue
Block a user