StaticMedia#
StaticMedia
allows you to share media files by their path os URLs. Though address supports string interpolation as it can be Text
widget, other parameters remain static.
You can use it providing path
or url
to the file, it’s ContentType and additional parameters if required.
Also you might need to change media type (type=ContentType.Photo
) or provide any additional params supported by aiogram using media_params
Be careful using relative paths. Mind the working directory.
from aiogram.types import ContentType
from aiogram_dialog import Window
from aiogram_dialog.widgets.media import StaticMedia
windows = Window(
StaticMedia(
path="/home/tishka17/python_logo.png",
type=ContentType.PHOTO,
),
)
It will look like:
For more complex cases you can read source code of StaticMedia
and create your own widget with any logic you need.
Note
Telegram allows to send files using file_id
instead of uploading same file again.
This make media sending much faster. aiogram_dialog
uses this feature and caches sent file ids in memory
If you want to persistent file_id
cache, implement MediaIdStorageProtocol
and pass instance to your dialog registry