[Python] How do I get the FSM context to pass to my function?

Discussão em 'Python' iniciado por Stack, Abril 23, 2025.

  1. Stack

    Stack Membro Participativo

    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)


    This code is just a minimal example

    Looking at the docs (https://docs.aiogram.dev/en/dev-3.x/dispatcher/finite_state_machine/index.html) they casually have the FSM context as a second parameter in their start function but as soon as I run the start command I get this error:

    Cause exception while process update id=511380950 by bot id=7945450430
    TypeError: start() missing 1 required positional argument: 'State'
    Traceback (most recent call last):
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/dispatcher.py", line 309, in _process_update
    response = await self.feed_update(bot, update, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/dispatcher.py", line 158, in feed_update
    response = await self.update.wrap_outer_middleware(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<7 lines>...
    )
    ^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/middlewares/error.py", line 25, in __call__
    return await handler(event, data)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/middlewares/user_context.py", line 56, in __call__
    return await handler(event, data)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/fsm/middleware.py", line 42, in __call__
    return await handler(event, data)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger
    return await wrapped_inner(event, kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call
    return await wrapped()
    ^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/dispatcher.py", line 276, in _listen_update
    return await self.propagate_event(update_type=update_type, event=event, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 146, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 141, in _wrapped
    return await self._propagate_event(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    observer=observer, update_type=update_type, event=telegram_event, **data
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 174, in _propagate_event
    response = await router.propagate_event(update_type=update_type, event=event, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 146, in propagate_event
    return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 141, in _wrapped
    return await self._propagate_event(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    observer=observer, update_type=update_type, event=telegram_event, **data
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/router.py", line 166, in _propagate_event
    response = await observer.trigger(event, **kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger
    return await wrapped_inner(event, kwargs)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/zein/Desktop/Usolabot/venv/lib/python3.13/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call
    return await wrapped()
    ~~~~~~~^^
    TypeError: start() missing 1 required positional argument: 'State'


    I've looked as hard as I can to try see what i'm not doing that they're doing but I just don't see it.

    Continue reading...

Compartilhe esta Página