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

如何将FSM Context传入函数?aiogram参数缺失报错排查

问题

使用aiogram 3.x开发Telegram机器人时,在处理/start命令和start回调的start函数中添加FSMContext作为第二个参数,运行时触发TypeError: start() missing 1 required positional argument: 'State'报错。

代码示例

Utilities.py

import aiogram
import aiogram.filters
import aiogram.types
import aiogram.fsm.context
import aiogram.fsm.state

from aiogram.fsm.storage.redis import RedisStorage
import redis.asyncio as redis

with open("Telegram/Configs.json", "r") as File:
    TelegramConfigs: dict[str, typing.Any] = json.load(File)

Main文件

import Telegram.Utilities as Utilities

Dispatcher=Utilities.aiogram.Dispatcher(
    storage=Utilities.RedisStorage(
        Utilities.redis.Redis(
            host="127.0.0.1",
            port="6379",
        )
    )
)

Router=Utilities.aiogram.Router(name = "Main")

@Router.message(Utilities.aiogram.filters.CommandStart())
@Router.callback_query(Utilities.aiogram.F.data == "start")
async def start(MessageOrCallback: Utilities.aiogram.types.Message | Utilities.aiogram.types.CallbackQuery, State: Utilities.aiogram.fsm.context.FSMContext):
    print("/Started")

Dispatcher.include_router(Router)
解决方案

核心问题

报错源于依赖注入的类型标注不规范,aiogram 3.x的依赖注入系统需要明确的类型标识来自动注入FSMContext,间接引用的类型路径可能无法被正确识别,同时参数名的写法也不符合框架惯例。

修复步骤

  1. 修正类型标注与参数名
    直接导入FSMContext类,避免间接引用,同时使用框架惯例的小写参数名state:
    在Main文件开头添加导入:

    from aiogram.fsm.context import FSMContext
    

    修改start函数定义:

    async def start(MessageOrCallback: Utilities.aiogram.types.Message | Utilities.aiogram.types.CallbackQuery, state: FSMContext):
        print("/Started")
    
  2. 修正回调查询过滤器
    原代码中Utilities.aiogram.F.data == "start"的写法有误,替换为正确的回调过滤器:

    @Router.callback_query(Utilities.aiogram.filters.CallbackQueryFilter(data="start"))
    

    或者更简洁的lambda写法:

    @Router.callback_query(lambda c: c.data == "start")
    

额外说明

如果坚持使用Utilities模块的间接引用,需确保Utilities.aiogram.fsm.context.FSMContext确实指向FSMContext类,但直接导入的方式更可靠,能避免路径解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:42:14