feat: /new_creative tg_bot

This commit is contained in:
Artem Tsyrulnikov
2025-12-01 13:20:08 +03:00
parent 3508a522ac
commit f7754b707d
21 changed files with 688 additions and 113 deletions

View File

@@ -3,4 +3,10 @@ from aiogram import Router
telegram_callback_router = Router()
# Import handlers to register them
from . import chat_join_request, chat_member_updated, my_chat_member, start_with_login # noqa: E402, F401
from . import ( # noqa: E402, F401
chat_join_request,
chat_member_updated,
creative_commands,
my_chat_member,
start_with_login,
)

View File

@@ -0,0 +1,51 @@
import logging
from aiogram import F
from aiogram.filters import Command
from aiogram.types import CallbackQuery, Message
from src import dependencies
from src.controller.telegram_callback import telegram_callback_router
log = logging.getLogger(__name__)
@telegram_callback_router.message(Command('new_creative'))
async def cmd_new_creative(message: Message) -> None:
if not message.from_user:
log.error('Failed to get user data from message')
return
usecase = dependencies.get_usecase()
await usecase.start_creative_creation(telegram_id=message.from_user.id, chat_id=message.chat.id)
@telegram_callback_router.callback_query(F.data.startswith('cc_ch:'))
async def callback_creative_channel(callback: CallbackQuery) -> None:
if not callback.from_user or not callback.message or not callback.data:
log.error('Failed to get required data from callback query')
return
usecase = dependencies.get_usecase()
await usecase.handle_creative_callback(
telegram_id=callback.from_user.id,
chat_id=callback.message.chat.id,
callback_data=callback.data,
message_id=callback.message.message_id,
)
await callback.answer()
@telegram_callback_router.message(F.text & ~F.text.startswith('/'))
async def handle_text_message(message: Message) -> None:
if not message.from_user or not message.text:
return
usecase = dependencies.get_usecase()
await usecase.handle_creative_text_input(
telegram_id=message.from_user.id,
chat_id=message.chat.id,
text=message.text,
text_html=message.html_text,
)

View File

@@ -28,3 +28,14 @@ async def cmd_start_with_deeplink(message: Message) -> None:
)
await dependencies.get_usecase().telegram_login(input=input)
@telegram_callback_router.message(CommandStart())
async def cmd_start(message: Message) -> None:
"""Handle /start command without deep link."""
if not message.from_user:
log.error('Failed to get user data from message')
return
usecase = dependencies.get_usecase()
await usecase.telegram_start(telegram_id=message.from_user.id, chat_id=message.chat.id)