В Aiogram 3 вы можете разделить обработчики на разные файлы, используя модуль `aiogram.dispatcher.filters` для определения фильтра для каждого обработчика.
Вот пример того, как вы можете разделить обработчики на разные файлы:
Файл `main.py`:
```python
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from handlers1 import dp as dp1
from handlers2 import dp as dp2
API_TOKEN = 'your-token'
bot = Bot(token=API_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)
dp1.include_router(dp2)
dp.include_router(dp1)
if __name__ == '__main__':
from aiogram import executor
executor.start_polling(dp, skip_updates=True)
```
Файл `handlers1.py`:
```python
from aiogram import types
from aiogram.dispatcher import Dispatcher
from aiogram.dispatcher.filters import Command
from handlers2 import dp
@dp.callback_query_handler(Command('start'))
async def start_command_handler(callback_query: types.CallbackQuery):
await callback_query.answer('Start handler called')
@dp.callback_query_handler(Command('stop'))
async def stop_command_handler(callback_query: types.CallbackQuery):
await callback_query.answer('Stop handler called')
await callback_query.bot.send_message(callback_query.from_user.id, "Stopping...")
```
Файл `handlers2.py`:
```python
from aiogram import types
from aiogram.dispatcher.filters import Command
dp = Dispatcher()
@dp.callback_query_handler(Command('help'))
async def help_command_handler(callback_query: types.CallbackQuery):
await callback_query.answer('Help handler called')
```
В этом примере, обработчики команды `/start` и `/stop` находятся в файле `handlers1.py`, а обработчик команды `/help` находится в файле `handlers2.py`.
При запуске `main.py`, все обработчики будут добавлены к глобальному диспетчеру `dp`, и они будут вызываться в соответствии с указанными фильтрами каждого обработчика.
Обратите внимание, что для корректного использования `dp1.include_router(dp2)` и `dp.include_router(dp1)`, в файле `handlers2.py` вы должны определить объект `dp` как глобальную переменную перед определением обработчиков команды `/help`.