我有目录结构:
├── 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)
我认为问题出在“include_router”方法中。试着朝这个方向看去