You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

aiogram报错:Dispatcher.__init__()仅接受1个位置参数却传入2个,求解答

问题分析与解决

报错原因

你使用的是aiogram 3.x版本,但代码写法遵循的是2.x版本的API规范。3.x版本对Dispatcher的初始化逻辑做了重大调整:Dispatcher的__init__方法不再接收Bot实例作为参数,因此你传入bot会触发参数数量不匹配的错误。

另外你的代码还有一个小问题:创建Bot实例时,你传入的是字符串"TOKEN_API",而不是定义好的变量TOKEN_API,这会导致Bot无法正确识别你的令牌。

修正后的代码

import asyncio
from aiogram import Bot, Dispatcher, types

TOKEN_API = "你的真实机器人令牌"

async def main():
    # 正确初始化Bot,传入变量形式的令牌
    bot = Bot(token=TOKEN_API)
    # 3.x版本Dispatcher初始化无需传入Bot
    dp = Dispatcher()

    @dp.message_handler(commands=["start"])
    async def send_random_letter(message: types.Message):
        await message.answer("hi, print /generate_pictures to start")

    # 通过start_polling传入Bot实例,启动机器人
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

关键修改点说明

  • 移除executor导入:aiogram 3.x已弃用旧的executor模块,改用异步上下文的方式启动机器人
  • 调整Bot初始化位置:Bot实例需要在异步函数内创建,确保符合异步运行逻辑
  • 修正Dispatcher初始化:3.x版本Dispatcher无需提前绑定Bot,启动时通过start_polling传入即可
  • 修复令牌传递错误:将字符串"TOKEN_API"改为变量TOKEN_API,保证Bot能读取正确的令牌

内容的提问来源于stack exchange,提问作者Fda Kreobmel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:52:32