add user_hello dialog

This commit is contained in:
2025-09-23 14:19:50 +03:00
parent 656c8ac2c4
commit f043d5a0a7
8 changed files with 82 additions and 4 deletions

View File

@@ -0,0 +1,24 @@
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
cfg = Config()
bot = Bot(token=cfg.get("bot_token"))
dp = Dispatcher()
async def main():
dp.include_router(handlers_router)
dp.include_router(dialogs_router)
setup_dialogs(dp)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())

6
app/dialogs/__init__.py Normal file
View File

@@ -0,0 +1,6 @@
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

@@ -0,0 +1,22 @@
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)

6
app/handlers/__init__.py Normal file
View File

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

View File

@@ -0,0 +1,12 @@
from aiogram import Router
from aiogram.filters import CommandStart
from aiogram.types import Message
from aiogram_dialog import DialogManager
from app.dialogs.user_dialog import StartSG
router = Router(name="user_handlers")
@router.message(CommandStart())
async def command_start_process(message: Message, dialog_manager: DialogManager):
await dialog_manager.start(state=StartSG.start)

8
app/utils/getters.py Normal file
View File

@@ -0,0 +1,8 @@
from aiogram.types import User
from aiogram_dialog import DialogManager
async def username_getter(
dialog_manager: DialogManager, event_from_user: User, **kwargs
):
return {"username": event_from_user.username}