* Migrate from Black to Ruff and reformat code with enabling additional linter checks
* Add changelog for migration to Ruff as formatter and linter
* Add type ignores for specific attributes and replace tuple with set for chat type check
* Remove file from another changes
* Drop py3.9 and pypy3.9
Add pypy3.11 (testing) into `tests.yml`
Remove py3.9 from matrix in `tests.yml`
Refactor not auto-gen code to be compatible with py3.10+, droping ugly 3.9 annotation.
Replace some `from typing` imports to `from collections.abc`, due to deprecation
Add `from __future__ import annotations` and `if TYPE_CHECKING:` where possible
Add some `noqa` to calm down Ruff in some places, if Ruff will be used as default linting+formatting tool in future
Replace some relative imports to absolute
Sort `__all__` tuples in `__init__.py` and some other `.py` files
Sort `__slots__` tuples in classes
Split raises into `msg` and `raise` (`EM101`, `EM102`) to not duplicate error message in the traceback
Add `Self` from `typing_extenstion` where possible
Resolve typing problem in `aiogram/filters/command.py:18`
Concatenate nested `if` statements
Convert `HandlerContainer` into a dataclass in `aiogram/fsm/scene.py`
Bump tests docker-compose.yml `redis:6-alpine` -> `redis:8-alpine`
Bump tests docker-compose.yml `mongo:7.0.6` -> `mongo:8.0.14`
Bump pre-commit-config `black==24.4.2` -> `black==25.9.0`
Bump pre-commit-config `ruff==0.5.1` -> `ruff==0.13.3`
Update Makefile lint for ruff to show fixes
Add `make outdated` into Makefile
Use `pathlib` instead of `os.path`
Bump `redis[hiredis]>=5.0.1,<5.3.0` -> `redis[hiredis]>=6.2.0,<7`
Bump `cryptography>=43.0.0` -> `cryptography>=46.0.0` due to security reasons
Bump `pytz~=2023.3` -> `pytz~=2025.2`
Bump `pycryptodomex~=3.19.0` -> `pycryptodomex~=3.23.0` due to security reasons
Bump linting and formatting tools
* Add `1726.removal.rst`
* Update aiogram/utils/dataclass.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update aiogram/filters/callback_data.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update 1726.removal.rst
* Remove `outdated` from Makefile
* Add `__slots__` to `HandlerContainer`
* Remove unused imports
* Add `@dataclass` with `slots=True` to `HandlerContainer`
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix url in button
* Fixed URL path in the "Open" button at the `demo/sendMessage` endpoint
* Fix web_app example
* Add changelog
* Restore old changelog
* Refactor and improve bot messages
Refactored bot code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display.
CommandStart() is now used instead of Command('start') for readability.
Furthermore, the bot's 'stop' command was improved, ensuring it executes appropriately during KeyboardInterrupt or SystemExit.
Additionally, the bot's logging was adjusted to output to sys.stdout for better logs' readability.
* Added Changelog
* Add guidance comments on obtaining bot tokens from environment variables
* Remove hardcoded tokens, opt for environment variable
* Remove unnecessary spaces and reorganize imports
* Fix error, switch default storage from Redis to Memory, and add logging to multibot example