如何在Aiogram中连接路由器

问题描述 投票:0回答:1

我有目录结构:

├── src
│   ├── admin.py
│   ├── main.py
│   ├── handlers.py

我想在 admin.py 和 handlers.py 中添加路由器,但我有一个问题。我在 handlers.py 和 admin.py 中初始化了路由器

然后将此代码放入 main.py 中

import asyncio
import logging

from aiogram import Bot, Dispatcher
from aiogram.enums.parse_mode import ParseMode
from aiogram.fsm.storage.memory import MemoryStorage

import config
from admin import router1
from handlers import router2


async def main():
    bot = Bot(token=config.BOT_TOKEN, parse_mode=ParseMode.HTML)
    dp = Dispatcher(storage=MemoryStorage())
    dp.include_routers(router1, router2)
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())

但是当我运行代码时,只有处理程序内部的路由器起作用。

我的admin.py代码:

from aiogram import F, Router, Bot
from aiogram.types import Message, CallbackQuery
from aiogram.filters import Command
import handlers

import kb
import config
import text

global admin_flag
admin_flag = False
global user_id

router1 = Router()
router1.include_router1(handlers.router1)


@router1.message(Command("admin"))
async def admin_handler(msg: Message):
    global user_id
    user_id = int(msg.from_user.id)
    if user_id in config.admins:
        await msg.answer(text.greet_admin, reply_markup=kb.admin_main_menu_kb)

和 handlers.py 代码:

from aiogram import Router, F, Bot
from aiogram.types import Message, CallbackQuery
from aiogram.filters import Command

import kb
import config
import text

global user, flag
flag = False

router2 = Router()


@router2.message(Command("start"))
async def start_handler(msg: Message):
    user_id = int(msg.from_user.id)
    if user_id not in config.admins:
        await msg.answer(text.greet, reply_markup=kb.main_menu_kb)
python router aiogram
1个回答
0
投票

我认为问题出在“include_router”方法中。试着朝这个方向看去

© www.soinside.com 2019 - 2024. All rights reserved.