feat(telegram_bot): added dialogs folder

This commit is contained in:
ITQ
2025-02-19 14:37:11 +03:00
parent 1c1dd0191f
commit c0e1ccfb06
3 changed files with 117 additions and 0 deletions
@@ -0,0 +1,54 @@
from typing import Any
from aiogram.fsm.context import FSMContext
from aiogram.types import CallbackQuery
from aiogram_dialog import Dialog, DialogManager, Window
from aiogram_dialog.widgets.kbd import Button, ListGroup, ScrollingGroup
from aiogram_dialog.widgets.text import Const, Format
from api.client import AdNovaClient
from states.campaigns import CampaignsDailogState
async def campaigns(**kwargs: dict[Any]) -> dict[str, Any]:
state: FSMContext = kwargs["state"]
state_data = await state.get_data()
async with AdNovaClient() as client:
campaigns = await client.list_campaigns(state_data["advertiser_id"])
campaigns = [campaign.model_dump(mode="json") for campaign in campaigns]
return {
"campaigns": campaigns,
}
async def campaign_detail_on_click(
callback: CallbackQuery, button: Button, manager: DialogManager
) -> None:
await callback.answer()
campaigns_dialog = Dialog(
Window(
Const("Campaigns:"),
ScrollingGroup(
ListGroup(
Button(
Format("{item[ad_title]}"),
id="detail",
on_click=campaign_detail_on_click,
),
id="campaigns",
item_id_getter=lambda item: item["campaign_id"],
items="campaigns",
),
id="pagination",
width=1,
height=4,
),
state=CampaignsDailogState.campaigns,
getter=campaigns,
),
)