new bot structure

This commit is contained in:
2025-09-25 13:22:14 +03:00
parent f043d5a0a7
commit 8c801eb66e
22 changed files with 85 additions and 47 deletions

3
app/bot/__init__.py Normal file
View File

@@ -0,0 +1,3 @@
from .bot import main
__all__ = ["main"]

View File

@@ -2,21 +2,19 @@ import asyncio
from aiogram import Bot, Dispatcher
from aiogram_dialog import setup_dialogs
from bestconfig import Config
from app.dialogs import dialogs_router
from app.handlers import handlers_router
from app.bot.dialogs.flows import dialogs_router
from app.bot.handlers.commands import commands_router
from config.config import settings
cfg = Config()
bot = Bot(token=cfg.get("bot_token"))
bot = Bot(token=settings.bot_token)
dp = Dispatcher()
async def main():
dp.include_router(handlers_router)
dp.include_router(dialogs_router)
setup_dialogs(dp)
dp.include_router(commands_router)
dp.include_router(dialogs_router)
await dp.start_polling(bot)

View File

@@ -0,0 +1,8 @@
from aiogram import Router
from .admin import admin_router
from .user import user_router
dialogs_router = Router(name="dialogs")
dialogs_router.include_router(admin_router)
dialogs_router.include_router(user_router)

View File

@@ -0,0 +1,3 @@
from aiogram import Router
admin_router = Router(name="admin dialogs")

View File

@@ -0,0 +1,6 @@
from aiogram import Router
from .start.dialogs import start_dialog
user_router = Router(name="user")
user_router.include_router(start_dialog)

View File

@@ -0,0 +1,14 @@
from aiogram_dialog import Dialog, Window
from aiogram_dialog.widgets.text import Format
from app.bot.dialogs.widgets.getters import username_getter
from .states import StartSG
start_dialog = Dialog(
Window(
Format("Hello, {username}"),
getter=username_getter,
state=StartSG.start,
)
)

View File

@@ -0,0 +1,5 @@
from aiogram.fsm.state import State, StatesGroup
class StartSG(StatesGroup):
start = State()

View File

@@ -4,5 +4,5 @@ from aiogram_dialog import DialogManager
async def username_getter(
dialog_manager: DialogManager, event_from_user: User, **kwargs
):
) -> dict[str, str]:
return {"username": event_from_user.username}

View File

@@ -3,10 +3,10 @@ from aiogram.filters import CommandStart
from aiogram.types import Message
from aiogram_dialog import DialogManager
from app.dialogs.user_dialog import StartSG
from app.bot.dialogs.flows.user.start.states import StartSG
router = Router(name="user_handlers")
commands_router = Router(name="commands_router")
@router.message(CommandStart())
@commands_router.message(CommandStart())
async def command_start_process(message: Message, dialog_manager: DialogManager):
await dialog_manager.start(state=StartSG.start)

View File

@@ -1,6 +0,0 @@
from aiogram import Router
from .user_dialog import router as user_router
dialogs_router = Router(name="dialogs")
dialogs_router.include_router(user_router)

View File

@@ -1,22 +0,0 @@
from aiogram import Router
from aiogram.fsm.state import State, StatesGroup
from aiogram_dialog import Dialog, DialogManager, StartMode, Window
from aiogram_dialog.widgets.text import Format
from app.utils.getters import username_getter
class StartSG(StatesGroup):
start = State()
start_dialog = Dialog(
Window(
Format("Hello, {username}"),
getter=username_getter,
state=StartSG.start
)
)
router = Router(name="user_dialogs")
router.include_router(start_dialog)

View File

@@ -1,6 +0,0 @@
from aiogram import Router
from .user_handlers import router as user_router
handlers_router = Router(name="handlers")
handlers_router.include_router(user_router)