Skip to content

how to pass variable or object to dp.message_handler decorated function? #551

Answered by Olegt0rr
TonyZhang03 asked this question in Q&A
Discussion options

You must be logged in to vote

If you wanna pass a function to your handler just import it and use it directly.
If you wanna apply it for some handlers, you should use a middleware.

Direct usage

def generate_text():
    return "generated text"

async def handler(message: Message):
    text = generate_text()
    await message.answer(text)

Middleware usage

Create a middleware

from aiogram.dispatcher.middlewares import BaseMiddleware
from aiogram.types import Message

class YourMiddleware(BaseMiddleware):
    async def on_pre_process_message(self, message: Message, data: dict):
        # `text` is a name of var passed to handler
        data["text"] = generate_text()

Register it via Dispatcher (on_startup)

dp.middleware.s…

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by JrooTJunior
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants