Dependency Injection implementation for aiogram 3.
Project description
Example of usage
import logging
from os import getenv
from typing import Annotated
from aiogram import Router, Bot, Dispatcher
from aiogram.types import Message
from aiogram3_di import DIMiddleware, Depends
router = Router()
def get_user_full_name(event: Message) -> str:
return event.from_user.full_name
@router.message()
async def _(message: Message, full_name: Annotated[str, Depends(get_user_full_name)]) -> None:
await message.answer(f'Hi {full_name}')
def main() -> None:
logging.basicConfig(level=logging.INFO)
bot = Bot(token=getenv('BOT_TOKEN'))
dp = Dispatcher()
dp.include_router(router)
dp.message.middleware(DIMiddleware()) # register Dependency Injection middleware
dp.run_polling(bot)
if __name__ == '__main__':
main()
Handler Dependencies.
You can use Depends
in the flags parameter of the handler, for example:
flags={'dependencies': [Depends(verify_user)]}
Global Dependencies.
You can use Depends
in dispatcher
, for example:
dp = Dispatcher()
dp.dependencies = [Depends(verify_user)]
Or in router
, for example:
router = Router()
router.dependencies = [Depends(verify_user)]
Details
It is inspired by FastAPI.
If you define a normal def, your function will be called in a different thread.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiogram3_di-1.0.9.tar.gz
(4.9 kB
view details)
File details
Details for the file aiogram3_di-1.0.9.tar.gz
.
File metadata
- Download URL: aiogram3_di-1.0.9.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02ff5b8d4842545b153f8331671e4cfc0e6ee86b9cd818b62315a913293f2f48 |
|
MD5 | 639ae49d8392f73fe398ccbb98342025 |
|
BLAKE2b-256 | 7ba254d3e47362b3a3acc577d392398d6c0c5728feeb6bbe544836329f6e50c2 |