from __future__ import annotations from typing import TYPE_CHECKING from aiogram import Router from aiogram.filters import Command from aiogram.utils.i18n import gettext as _ from bot.filters.admin import AdminFilter from bot.services.users import get_all_users, get_user_count from bot.utils.users_export import convert_users_to_csv if TYPE_CHECKING: from aiogram.types import BufferedInputFile, Message from sqlalchemy.ext.asyncio import AsyncSession from bot.database.models import UserModel router = Router(name="export_users") @router.message(Command(commands="export_users"), AdminFilter()) async def export_users_handler(message: Message, session: AsyncSession) -> None: """Export all users in csv file.""" all_users: list[UserModel] = await get_all_users(session) document: BufferedInputFile = await convert_users_to_csv(all_users) count: int = await get_user_count(session) await message.answer_document(document=document, caption=_("user counter: {count}").format(count=count))