new bot structure
This commit is contained in:
3
app/bot/__init__.py
Normal file
3
app/bot/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .bot import main
|
||||
|
||||
__all__ = ["main"]
|
||||
@@ -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)
|
||||
|
||||
|
||||
8
app/bot/dialogs/flows/__init__.py
Normal file
8
app/bot/dialogs/flows/__init__.py
Normal 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)
|
||||
3
app/bot/dialogs/flows/admin/__init__.py
Normal file
3
app/bot/dialogs/flows/admin/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from aiogram import Router
|
||||
|
||||
admin_router = Router(name="admin dialogs")
|
||||
6
app/bot/dialogs/flows/user/__init__.py
Normal file
6
app/bot/dialogs/flows/user/__init__.py
Normal 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)
|
||||
14
app/bot/dialogs/flows/user/start/dialogs.py
Normal file
14
app/bot/dialogs/flows/user/start/dialogs.py
Normal 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,
|
||||
)
|
||||
)
|
||||
5
app/bot/dialogs/flows/user/start/states.py
Normal file
5
app/bot/dialogs/flows/user/start/states.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from aiogram.fsm.state import State, StatesGroup
|
||||
|
||||
|
||||
class StartSG(StatesGroup):
|
||||
start = State()
|
||||
@@ -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}
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user