feat(telegram_bot): added commands folder
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
from aiogram import Router
|
||||||
|
from aiogram.filters import Command
|
||||||
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram_dialog import DialogManager, StartMode
|
||||||
|
|
||||||
|
from filters.auth import AuthenticatedFilter
|
||||||
|
from states.campaigns import CampaignsDailogState
|
||||||
|
|
||||||
|
campaigns_router = Router()
|
||||||
|
|
||||||
|
|
||||||
|
@campaigns_router.message(Command("campaigns"), AuthenticatedFilter())
|
||||||
|
async def stats_command(
|
||||||
|
message: Message, dialog_manager: DialogManager, state: FSMContext
|
||||||
|
) -> None:
|
||||||
|
await dialog_manager.start(
|
||||||
|
state=CampaignsDailogState.campaigns, mode=StartMode.RESET_STACK
|
||||||
|
)
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
from aiogram import Router
|
||||||
|
from aiogram.filters import Command
|
||||||
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram_dialog import DialogManager
|
||||||
|
|
||||||
|
logout_router = Router()
|
||||||
|
|
||||||
|
|
||||||
|
@logout_router.message(Command("logout"))
|
||||||
|
async def logout_command(
|
||||||
|
message: Message, dialog_manager: DialogManager, state: FSMContext
|
||||||
|
) -> None:
|
||||||
|
state_data = await state.get_data()
|
||||||
|
|
||||||
|
if state_data["authenticated"]:
|
||||||
|
await dialog_manager.reset_stack()
|
||||||
|
del state_data["advertiser_id"]
|
||||||
|
await state.set_data(state_data)
|
||||||
|
await message.answer("Successfully logged out.")
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
from aiogram import Router
|
||||||
|
from aiogram.filters import CommandStart
|
||||||
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram_dialog import DialogManager, StartMode
|
||||||
|
|
||||||
|
from states.start import StartDialogState
|
||||||
|
|
||||||
|
start_router = Router()
|
||||||
|
|
||||||
|
|
||||||
|
@start_router.message(CommandStart())
|
||||||
|
async def start_command(
|
||||||
|
message: Message, dialog_manager: DialogManager, state: FSMContext
|
||||||
|
) -> None:
|
||||||
|
state_data = await state.get_data()
|
||||||
|
|
||||||
|
if state_data["authenticated"]:
|
||||||
|
await message.answer(
|
||||||
|
"Already authenticated as"
|
||||||
|
f" <code>{state_data['advertiser']['name']}</code>"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
await dialog_manager.start(
|
||||||
|
state=StartDialogState.start, mode=StartMode.RESET_STACK
|
||||||
|
)
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
from aiogram import Router
|
||||||
|
from aiogram.filters import Command
|
||||||
|
from aiogram.fsm.context import FSMContext
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram_dialog import DialogManager
|
||||||
|
|
||||||
|
from api.client import AdNovaClient
|
||||||
|
from filters.auth import AuthenticatedFilter
|
||||||
|
|
||||||
|
stats_router = Router()
|
||||||
|
|
||||||
|
|
||||||
|
@stats_router.message(Command("stats"), AuthenticatedFilter())
|
||||||
|
async def stats_command(
|
||||||
|
message: Message, dialog_manager: DialogManager, state: FSMContext
|
||||||
|
) -> None:
|
||||||
|
state_data = await state.get_data()
|
||||||
|
advertiser_id = state_data["advertiser_id"]
|
||||||
|
|
||||||
|
async with AdNovaClient() as client:
|
||||||
|
stats = await client.get_advertiser_statistics(advertiser_id)
|
||||||
|
|
||||||
|
response = (
|
||||||
|
f"📊 Overall <code>{state_data['advertiser']['name']}</code>"
|
||||||
|
" statistics:\n\n"
|
||||||
|
f"\t• Impressions: {stats.impressions_count}\n"
|
||||||
|
f"\t• Clicks: {stats.clicks_count}\n"
|
||||||
|
f"\t• Conversion: {stats.conversion:.2f}%\n"
|
||||||
|
f"\t• Spent on impressions: ${stats.spent_impressions:.2f}\n"
|
||||||
|
f"\t• Spent on clicks: ${stats.spent_clicks:.2f}\n"
|
||||||
|
f"\t• Spent total: ${stats.spent_total:.2f}"
|
||||||
|
)
|
||||||
|
await message.answer(response)
|
||||||
Reference in New Issue
Block a user