Previously the deep_link parameter only had two effective states:
False (default) accepted any /start command regardless of arguments,
and True required arguments to be present.
Change the default to None (accept both, backward compatible) so that
False can mean "reject if deep-link arguments are present", which is
the intuitive expectation when explicitly passing deep_link=False.
Closes#1713
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Added full support for the Bot API 9.6
* Add support for `managed_bot` updates
* Set `description_parse_mode` default to `"parse_mode"` and use `DateTime` for `addition_date` in `PollOption`
* Update changelog with features and changes from Bot API 9.6
* Add changelog fragment generator and update poll parameter descriptions
* Update API methods and types for Telegram Bot API 9.5
* Draft: follow-up for Bot API 9.5 (#1780) (#1781)
* Add set_chat_member_tag shortcut coverage
* Add set_member_tag shortcut tests and align decoration expectations
* Fix follow-up test coverage for sender_tag and can_edit_tag
* Add changelog fragment for PR 1781
* Align changelog with base PR #1780
* Expand 1780 changelog to cover base and follow-up scope
* Treat sender_tag as metadata, not message content type
---------
Co-authored-by: Latand <latand@users.noreply.github.com>
Co-authored-by: Codex Agent <codex@openclaw.local>
* Add tests for date_time formatting with Unix time and datetime objects
* Update changelog with Telegram Bot API 9.5 changes
---------
Co-authored-by: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com>
Co-authored-by: Latand <latand@users.noreply.github.com>
Co-authored-by: Codex Agent <codex@openclaw.local>
* Bump API schema to version 9.4, add new object types, methods, and properties.
* Add tests for `ChatOwnerChanged` and `ChatOwnerLeft` message types
* Add tests for `GetUserProfileAudios`, `RemoveMyProfilePhoto`, and `SetMyProfilePhoto` methods
* Bump version
* Update Makefile variables and refactor `test_get_user_profile_audios.py`
* Document new features and updates from Bot API 9.4 in changelog
* Add `ButtonStyle` enum to represent button styles in the Telegram API
* Fix review issues from PR #1761
- Remove stray '-' artifact from GameHighScore docstring and butcher schema
- Fix Makefile reformat target scope inconsistency (ruff check --fix)
- Fix ButtonStyle enum source URL (#chat -> #inlinekeyboardbutton)
- Add User.get_profile_audios() shortcut method (parallel to get_profile_photos)
- Test ChatOwnerLeft with new_owner=None (edge case)
- Add VideoQuality type and Video.qualities nesting tests
- Add User.get_profile_audios() test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Revert "Fix review issues from PR #1761"
This reverts commit 2184e98988.
* Update source links for `ButtonStyle` documentation to reflect accurate API references
* Fix review issues from PR #1761 (#1762)
* Fix review issues from PR #1761
- Remove stray '-' artifact from GameHighScore docstring
- Fix Makefile reformat target scope inconsistency (ruff check --fix)
- Add User.get_profile_audios() shortcut method (parallel to get_profile_photos)
- Test ChatOwnerLeft with new_owner=None (edge case)
- Add VideoQuality type and Video.qualities nesting tests
- Add User.get_profile_audios() test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address review comments: use fixture and variables in tests, add changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address review follow-ups for PR #1762
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Reformat code
* Shut up, ruff
---------
Co-authored-by: latand <latand666@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com>
* Fix scene handling for channel updates with missing FSM state (#1743)
* Add changelog entry for scene handling fix
* Refine scene context error handling
* 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
* Added full support of Telegram Bot API 9.3
* Fixed tests that fails
* Add tests for `GetChatGifts`, `GetUserGifts`, `RepostStory`, and `SendMessageDraft` methods
* Added changelog record
* Switch to using `uv` for dependency management and update related project workflows and scripts
* Expand contributing documentation with instructions for using `uv`, including dependency management, testing, linting, and docs workflows.
* Add changelog entry for migration to `uv` for dependency management and workflows
* 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>
* migrated mongo storage from using deprecated motor to PyMongo
* added storages to __init__.py file to improve DX
* changelog file created
* Revert "added storages to __init__.py file to improve DX"
This reverts commit 5d0f6a9dfb.
* added optional dependency to pymongo to pyproject.toml
* Revert "migrated mongo storage from using deprecated motor to PyMongo"
This reverts commit 1c0207e1d1.
* added deprecation warning to mongo storage
* created pymongo storage
* added entry for PyMongoStorage to documentation in fsm.storages
* updated changelog to have information about how to migrate from MongoStorage to PyMongoStorage
* added test for pymongo storage (copied from mongo storage test)
* fixed formatting using black and isort
* fixed bug in close method of PyMongoStorage (client close method was not awaited)
* added test for PyMongoStorage that checks if storage could be properly closed
* pymongo package changed to be lower case in PyMongoStorage
* added fixture registration for pymongo storage
* test for pymongo is now using proper test fixtures
* removed redundant call to get_data, because we have checked this condition in the previous line
* added more tests to pymongo test, to check for all possible cases of using update_data method
* fixed PyMongoStorage update_data method implementation
* added pymongo tests to test_storages
* fixed pymongo tests, update_data method should not delete document when {} was passed
* Revert "fixed PyMongoStorage update_data method implementation"
This reverts commit 86170e1cb9.
* fixed linting issues in PyMongoStorage
* changed allowed versions of pymongo, to be compatible with motor
* pinned the upper version of pymongo to <4.11
* Added full support for the Bot API 9.2
* Mark butcher tool output files as linguist-generated in .gitattributes
* Switch `send_date` type from `int` to `DateTime` in suggested post models
* Add support for Telegram Bot API 9.1 features, including checklists, gifts, and new methods like `SendChecklist`, `EditMessageChecklist`, and `GetMyStarBalance`. Update changelog and improve `True` field descriptions.
* Bump API Version
* Refactor profile photo types to use `InputProfilePhotoType` enums instead of hardcoded literals
* Refactor imports and clean up redundant code across methods, types, and webhook server classes
* Add semaphore support for limiting concurrent updates
Introduce a semaphore-based mechanism to control the number of concurrent tasks in polling mode when `handle_as_tasks=True`. Added the `tasks_concurrency_limit` parameter to `start_polling()` and `run_polling()`, preventing potential memory exhaustion during high update loads.
* fix: update variable name for clarity in semaphore creation
* Update aiogram/dispatcher/dispatcher.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update callback_data.py
Allows using a default value in the class which is equal to an empty string ("").
Example:
class MyCallbackData(CallbackData, prefix="MyCallbackData"):
input1: str
input2: str = ""
* Create 1493.bugfix.rst
* Update callback_data.py
Fixed an issue that prevented unpacking None values.
* Added tests for CallbackData
* Update tests/test_filters/test_callback_data.py
Co-authored-by: Oleg A. <t0rr@mail.ru>
* Update test_callback_data.py
* Update callback_data.py
* Update 1493.bugfix.rst
---------
Co-authored-by: Oleg A. <t0rr@mail.ru>
* Added "startapp" deep link support
* Remove link_type param, added create_startapp_link method
* Write tests for create_startapp_link method
* Refactor with black & isort
* Added CHANGELOG
* Added support of direct mini app links
* Added CHANGELOG
* Update translation files with new creation dates.
This update includes newly added and corrected translation entries for various .po files in the Ukrainian locale. It ensures consistency with updated source files and aligns with the latest Telegram bot API changes.
* Update Ukrainian documentation translation
* Added "startapp" deep link support
* Remove link_type param, added create_startapp_link method
* Write tests for create_startapp_link method
* Refactor with black & isort
* Added CHANGELOG
* Refactor: Introduce Union types for streamlined type handling
Implemented Union types across various modules to consolidate and simplify type annotations. This change replaces repetitive union declarations with reusable Union aliases, improving code readability and maintainability. Updates applied to affected classes, methods, and imports accordingly.
* Refactor unions into type aliases for better reusability
Replaced inline `Union` types with predefined aliases like `MediaUnion`, `ReplyMarkupUnion`, and `ChatIdUnion`. Simplifies type annotations, improves code readability, and reduces duplication. Added `media_union.py` for grouping related media types.
* Refactor type unions with ResultChatMemberUnion and ResultMenuButtonUnion
Replaced verbose type definitions of chat member and menu button unions with `ResultChatMemberUnion` and `ResultMenuButtonUnion` for improved readability and maintainability. Updated relevant methods, modules, and documentation to use the new type aliases consistently.
* Added changelog
* Add TypedDict support for middleware context data
Introduced `MiddlewareData` and associated TypedDicts to type-hint middleware context data. Updated documentation to include usage examples and guidelines for extending the default middleware data. Also adjusted coverage configuration to exclude the new data module.
* Added more docstrings
* Typo fixes
* Fix handler registration order in `Scene`
Previously, `Scene` handlers were registered based on the sorted output of `inspect.getmembers`, causing incorrect execution order. Now, handlers are registered in the order they are defined in the class, ensuring reliable behavior and proper sequence when handling filters with varying specificity. Added test cases to validate the correct handler ordering.
* Add dynamic dataclass and class attribute resolvers
Introduced `dataclass_kwargs` to ensure compatibility with different Python versions and modular attribute handling. Added utilities for resolving class attributes dynamically, enhancing flexibility with MRO-based resolvers. Updated tests to verify new features and ensure proper functionality across various scenarios.
* Update changelog
* Add business_connection_id to message API methods
Integrated the business_connection_id attribute into various message manipulation methods, ensuring consistent data handling. This update eliminates the need to pass the business_connection_id as a parameter, instead directly accessing it from the instance attributes.
* Added changelog
* Add function `get_value` to all built-in storage implementations, `FSMContext` and `SceneWizard` (#1431)
* Fix type hints
* Split up return statements in `get_value` functions
* Implement `get_value` method in `BaseStorage` and remove redundant implementations
* Try to enable tests on Python 3.13
* Remove support for Python 3.8 and PyPy 3.8
Dropped Python 3.8 and PyPy 3.8 from the CI workflow and updated the minimum required Python version to 3.9 in pyproject.toml. Also updated dependencies and tools to align with the new minimum Python version.
* Added changelog
* Reformat code
* Bump mypy python version
* #1583 Improved Scene handler and action inheritance mechanism
Enhanced the inheritance of handlers and actions in scenes. Refactored to eliminate the copying of previously connected handlers and actions from parent scenes. Now, handlers are dynamically rebuilt based on the current class, properly utilizing class inheritance and enabling handler overrides.
* Added more tests
* Added more tests for non-function handlers
Add new version details to CHANGES.rst and update __meta__.py. Removed individual CHANGES/* feature and bugfix files, merging their content into the main CHANGES.rst.
* #1579 Fixed `Default` object annotation resolution in `pydantic` models. Reformat code.
* Bump mongo and Redis dependencies
* Update pydantic version constraints based on Python version
Adjusted the version constraints for the pydantic library in `pyproject.toml` to ensure compatibility with different Python versions. This helps maintain stability and compatibility across various development environments.
* Adjust version
* Fixed typo
The warning previously stated that the Arch Linux package is outdated. It is now revised to indicate that the package may be outdated and recommends using the PyPI package for the latest version. This change ensures users are correctly informed about the potential version differences.
Moved warning for outdated package to the top of the Arch Linux section and removed redundant PyPI installation instructions for the development build. This enhances the clarity and accuracy of the installation documentation.
* feature: add aliases for InaccessibleMessage type
* add changelog
* fix changelog
* remove methods that may not be accessible for the InaccessibleMessage type, add tests
* apply black isort
* update docs with InaccessibleMessage aliases
* Bump to the latest schema
* Added full support ob Bot API 7.10
* Add support for purchased paid media events
Enhanced the router to include `purchased_paid_media` handling. Added corresponding test cases to verify the new functionality and updated middleware to return the appropriate `EventContext`.
* Added changelog
* #1543 Fixed link preview options to use global defaults
Refactor various classes to use global defaults for `link_preview_options`. This change ensures consistency and enhances flexibility in handling link preview options across different components.
* Added changelog
* Added message_thread_id to url of chats with topics for message.get_url() (#1451)
* Added tests for message.get_url()
* Added tests for message.get_url()
* Changed tests for message.get_url()
* Added full support of Bot API 7.8
* Added changelog
* Try to fix tests on Windows
* scope=session?
* Try another way
* Just try to set custom event loop policy manually
* Revert "Just try to set custom event loop policy manually"
This reverts commit 04ee60d878.
* Just try to set custom event loop policy manually
* 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
* Added 'as_reply_parameters' method & integrate with message reply methods
The 'as_reply_parameters' method is added to generate reply parameters in a message. This method was used in reply methods.
* Added changelog
* #1520 Fixed event context resolving for the callback query that is coming from the business account
* Simplify some conditions
* Added changelog
* Fixed AttributeError
* Add serialization utilities and update documentation
Introduced utilities to deserialize Telegram objects to JSON-compliant Python objects and vice versa. These utilities manage both cases with and without files. The documentation has been updated to reflect these changes, including updates in migration recommendations and tutorials. A new unit test is added to verify the new functionality.
* Fixed Must-die implementation of the datetime serialization
* Fixed `TypeError: can't subtract offset-naive and offset-aware datetimes`
* Add DNS cache ttl setting to aiohttp session.
Also the limit argument is added to the session initializer.
This commit adds a setting for DNS cache ttl (time-to-live) to the aiohttp session configuration. This is implemented as a workaround for a known issue in aiogram as exhibited in aiogram/aiogram#1500.
* Added changelog
* Update upload_file.rst
who the fuck even wrote this
* Update docs/api/upload_file.rst
Co-authored-by: Yana Malenko <107151775+akchonya@users.noreply.github.com>
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
Co-authored-by: Yana Malenko <107151775+akchonya@users.noreply.github.com>
* Smaller timeout for MongoStorage connection
By default serverSelectionTimeoutMS=30000. This is too much
* Correct ConnectionError for RedisStorage in tests
* Remove unused import in conftest.py
* Refactor skipping redis and mongo tests
* Fail redis and mongo tests if incorrect URI
If incorrect URIs provided to "--redis" and/or "--mongo" options
tests should fail with ERRORs instead of skipping.
Otherwise the next scenario is possible:
1) developer breaks RedisStorage and/or MongoStorage code
2) tests are run with incorrect redis and/or mongo URIs
provided by "--redis" and "--mongo" options.
For example, wrong port specified.
3) tests pass because skipping doesn't fail tests run
4) developer or reviewer doesn't notice
that redis and/or mongo tests were skipped
5) broken code gets in codebase
* Remove unused fixtures passing in storages tests
* Define create_storage_key fixture in conftest.py
* Linters formatting
* Changes description
* Revert "Smaller timeout for MongoStorage connection"
This reverts commit d88b7ec612.
* Smaller timeout for MongoStorage connection in tests
The default 30s timeout is too long
* Add test for MongoStorage for 100% coverage
* Linters formatting
* Move skipping redis/mongo tests in earlier fixtures
* Replace vars with constants in conftest.py
* Linters formatting
* Add MongoDB dependency to ReadTheDocs configuration
An update has been made to the ReadTheDocs configuration file to include MongoDB as an additional dependency on installation. This change addresses issues with the MongoStorage section in the documentation.
* Rename changelog file
* Remove deprecated attributes from Bot class
The deprecated attributes `parse_mode`, `disable_web_page_preview`, and `protect_content` have been removed from the Bot class. Additionally, the associated warnings and test cases have been deleted. These attributes should now be passed using the `default=DefaultBotProperties(...)` syntax instead.
* Added docs and changelog
* Mongo storage included to storages test
* Added few additional checks in storages test
* Added MongoStorage for FSM
* Added changes description
* Fixed error message syntax
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
* Resolved mypy check error
* IF/ELSE statement simplified
* Fix ruff linter error: RET505 Unnecessary `elif` after `return` statement
* Fix ruff linter error: E501 Line too long (100 > 99)
* Added mongo storage testing in CI
* Refactoring while review
* Refactoring while review
* Storing FSM state and data together in MongoDB-storage
* Fix CI - MongoDB container action is only supported on Linux
* Refactoring while review
* Enable Macos in pypy-tests section of CI
* Refactoring while review
* Makefile updated
* redis and mongo storages tests do not run in pypy-tests job of CI
* Fix docstring of DefaultKeyBuilder
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
* Add context manager support for bot client
The bot client now supports the context manager protocol, providing automatic resource management. This enhancement helps to automatically close the session when leaving the context, which cleans up resources better. The documentation and tests have been updated accordingly to illustrate this new feature. Moreover, an example of usage without a dispatcher has been provided to clarify its use in simple cases.
* Added changelog
* Added base support of Bot API 7.2
* Added base support of Bot API 7.2
* Fixing tests and content types for Telegram Bot API 7.2 update (#1453)
* Fixing tests and content types for Telegram Bot API 7.2
* Adding changelog for 1453 PR
* Fixes + coverage
* Replace `BusinessConnection.date` type
* Reformat code
* Refactor UserContextMiddleware to use EventContext class
This update significantly refactors UserContextMiddleware to leverage a new class, EventContext. Instead of resolving event context as a tuple, it now produces an instance of EventContext. Additional adjustments include supporting a business connection ID for event context identification and facilitating backwards compatibility. Tests and other files were also updated accordingly for these changes.
* Cover FSM key builder (business_connection_id
* Added changelog
---------
Co-authored-by: RoLOQ <roman.fedunn@gmail.com>
* Add voter_chat to poll_answer event handling
The change ensures that when a poll_answer event is processed, the user context middleware now also returns the chat where the vote took place. Previously, only the user who cast the vote was returned.
* Added changelog
* Fixed tests
* Bump Python version in test
* Add missing Telegram WebApp API classes and fields (#1424)
* Implemented `WebAppChat` class with fields `id`, `type`, `title`, `username`, and `photo_url` as per Telegram documentation.
* Modified `WebAppUser` class by adding `is_premium`, `added_to_attachment_menu`, and `allows_write_to_pm` fields.
* Modified `WebAppInitData` class to include `chat`, `chat_type`, `chat_instance` fields for full API support.
* fix changelog file name
* fix line too long
Three properties of the Bot class - parse_mode, disable_web_page_preview, and protect_content - have been marked as deprecated with proper warning messages. The associated tests have also been added to confirm the working of these deprecation warnings. Users are advised to use the updated alternatives specified in the warning messages.
* Add KeyboardButtonPollTypeType enum
A new enum, KeyboardButtonPollType, has been added and documented. This enum holds types of polls that can be created and sent when the corresponding button is pressed. It is now imported and included in the aiogram enums documentation.
* Added changelog
* Added support for Bot API 7.0
* Fixed available tests
* Fixed text decorations
* Bot API 7.0 tests for ForwardMessages
* Bot API 7.0 tests for CopyMessages
* Bot API 7.0 tests for DeleteMessages
* Bot API 7.0 tests for GetUserChatBoosts
* Bot API 7.0 tests for SetMessageReaction
* Fixed custom_emoji attribute name
* Fixed tests
* Test parsing CallbackQuery message (inaccessible and accessible)
* Added changes description
* Bot API 7.0 tests for dispatcher handle update message_reaction
* Bot API 7.0 tests for dispatcher handle update message_reaction_count
* Bot API 7.0 tests for dispatcher handle update chat_boost
* Bot API 7.0 tests for dispatcher handle update removed_chat_boost
* fix tests: update ReactionTypeCustomEmoji custom_emoji -> custom_emoji_id
* micro fix Markdown V2 blockquote
* add tests for Markdown tools
* fix markdown test apply single entity
* add tests coverage for Message.react
* check that all messages and content types are covered for Message.content_type
* sort imports in tests (run `make reformat lint`)
* update Giveaway objects Unix time field to DateTime type
* Update Message.content_type property
* upgrade tests for message content_types and sent_copy
* Update Giveaway type generation config
* Update GiveawayWinners and PassportFile types generation configs
---------
Co-authored-by: Suren Khorenyan <surenkhorenyan@gmail.com>
* Update thumbnail type to InputFile only
The thumbnail's type restriction has been changed in several methods and types. Previously, it accepted Union[InputFile, str], allowing both InputFile instances and strings. Now it's changed to accept only InputFile instances. This change enhances meaning of the thumbnail fields in due to Bot API accepts only InputFile instances.
* Added changelog
* Fixed typehints
* Base implementation
* Small refactoring + added possibility to specify post-action on handlers
* Move scene properties to config object
* Revise aiogram/scenes with wizard-based design pattern
Modified files in aiogram/scenes to incorporate the Wizard design pattern. Files affected are _marker.py, _registry.py, _wizard.py and __init__.py. The changes introduced a SceneWizard Class and ScenesManager, both of which aid in controlling navigation between different scenes or states. This helps clarifying the codebase, streamline scene transitions and offer more control over the app flow.
* Added example
* Small optimizations
* Replace ValueError with SceneException in scenes. Added error safety in scene resolver.
* str
* Added possibility to reset context on scene entered and to handle callback query in any state
* Remove inline markup in example
* Small changes
* Docs + example
* Small refactoring
* Remove scene inclusion methods from router
The methods for including scenes as sub-routers have been removed from the router.py file. Instead, the SceneRegistry class is now set to register scenes by default upon initializing. This streamlines the scene management process by removing redundant routers and making registration automatic.
* Init tests
* Small fix in tests
* Add support for State instance in the scene
The aiogram FSM scene now allows the use of State instance as an argument, enabling more customization. Modified the 'as_handler' method to receive **kwargs arguments, allowing passing of attributes to the handler. An additional type check has been also added to ensure the 'scene' is either a subclass of Scene or a string.
* Fixed test
* Expand test coverage for test_fsm module
The commit enhances tests for the test_fsm module to improve code reliability. It includes additional unit tests for the ObserverDecorator and ActionContainer classes and introduces new tests for the SceneHandlerWrapper class. This ensures the correct functionality of the decorator methods, the action container execution, and the handler wrapper.
* Reformat code
* Fixed long line in the example
* Skip some tests on PyPy
* Change mock return_value
* Compatibility...
* Compatibility...
* Compatibility...
* Added base changes description
* Scenes Tests (#1369)
* ADD tests for `SceneRegistry`
* ADD tests for `ScenesManager`
* ADD Changelog
* Revert "ADD Changelog"
This reverts commit 6dd9301252.
* Remove `@pytest.mark.asyncio`, Reformat code
* Scenes Tests. Part 2 (#1371)
* ADD tests for `SceneWizard`
* ADD tests for `Scene`
* Refactor ObserverDecorator to use on.message syntax in test_scene.py
Cover `Scene::__init_subclass__::if isinstance(value, ObserverDecorator):`
* Refactor `HistoryManager` in `aiogram/fsm/scene.py`
Removed condition that checked if 'history' is empty before calling 'update_data' in 'Scene'.
* ADD tests for `HistoryManager`
* Small changes in the documentation
* Small changes in the documentation
* Small changes in the documentation
---------
Co-authored-by: Andrew <11490628+andrew000@users.noreply.github.com>
* fix: CallbackData set optional as None
* docs: add fix changelog
* Add support for nullable fields in callback data
This update extends the callback data handling by adding support for nullable fields. The code now uses the Python typing structures `Optional` and `Union` to parse such fields correctly. A helper function `_check_field_is_nullable` has been added to assist in efficiently checking if a given field is nullable.
* Add support for nullable fields in callback data
This update extends the callback data handling by adding support for nullable fields. The code now uses the Python typing structures `Optional` and `Union` to parse such fields correctly. A helper function `_check_field_is_nullable` has been added to assist in efficiently checking if a given field is nullable.
---------
Co-authored-by: JRoot Junior <jroot.junior@gmail.com>
* Upgrade to py12 compatible aiohttp beta version
* Fix uvloop deprecation warning causing pytest not to run
* Fix test due to asyncio task scheduling race condition
* Fix test_state_in_unknown_class for Python 3.12+ due to PEP 678 changes
* Add Python 3.12 support in GitHub Actions and project configurations
* Add changelog entry
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
* #1320 Update pytest configuration and tests cleanup
This commit modifies the pytest's configuration file, `pyproject.toml`, to remove filterwarnings settings. It also makes changes in various test files; the Redis isolation test is now using the provided `redis_storage` fixture instead of setting up its own connection, pytest.mark.filterwarnings is no longer used in `test_isolation.py` and `test_aiohttp_session.py` properly closes off sessions.
* Added changelog
* Fixed coverage for the RedisEventIsolation
The comment describing the 'initial_sleep' parameter in the chat_action.py script has been revised for clarity. It now accurately specifies this parameter's purpose as the waiting period prior to the first sending of the action, rather than just the first iteration.
* Add current handler to filters, so that flags can be retrieved from it.
* run black isort
* add changelog
* Update CHANGES/1360.bugfix.rst
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
This commit changes the version requirements for typing-extensions in the dependencies section of pyproject.toml file. This change now requires versions that are greater than or equal to 4.7.0 and less than or equal to 5.0. The previous version, 4.8.0, has been found to cause compatibility issues with some other libraries.
* Add CITATION.cff for automatic academic citation
A `CITATION.cff` file has been added to the project to facilitate the generation of accurate academic citations directly from the GitHub page. This allows users to easily copy the citation and paste it into their academic papers. The file includes the project's information like title, authors, repository code, url, keywords, and license.
* Fixed category name
Updated the instructions for adding changelog entries in the pull_request_changelog.yml workflow file. The changes provide more specific instructions on how to name and write the changelog entry file. This was done to provide clearer instructions to contributors updating the changelog.
* docs: updated migration guide with API server
* Update docs/migration_2_to_3.rst
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
Implemented a MediaGroupBuilder class in 'aiogram/utils/media_group.py' to help construct media groups. The class supports addition of different media types (audio, photo, video, document) to the media group with a maximum limit of 10 files. The functionality is demonstrated and usage is documented in 'docs/utils/media_group.rst'. Added related test cases in 'tests/test_utils/test_media_group.py'. This is to streamline and simplify the process of media group creation
* Ensure base type validation can handle non-dictionary values
The update introduces a condition to verify whether the values being validated are a dictionary before attempting to handle UNSET_TYPE in the aiogram base type. This adjustment helps to prevent potential errors or incorrect validation when non-dictionary values are faced.
* Added a test case for non-dictionary input in remove_unset method
* Added changelog
* Fixed tests
* Fix `Message.send_copy` method for stories
Fixed an issue with the `Message.send_copy` method, which was not functioning properly with story-type messages. The `ForwardMessage` logic has been added to the method to enable copying of stories, in addition to other types. Tests and documentation have also been updated to reflect these changes.
* Typo fix
* #1277 Replace datetime.datetime with DateTime across codebase
Replaced all instances of standard library 'datetime.datetime' with a new 'DateTime' type from `.custom` module. This change is necessary to make all date-time values compatible with the Telegram Bot API (it uses Unix time). This will simplify the conversion process and eliminate potential errors related to date-time format mismatches. Changed codebase, butcher files, and modified 'pyproject.toml' to shift the typing-extensions dependency. The 'aiogram/custom_types.py' file was renamed to 'aiogram/types/custom.py' to better reflect its nature as a location for custom types used in the aiogram library.
Modified the ".as_" method in the magic filter class to correctly handle values that are interpreted as `False` such as `0`. Previously, the method incorrectly dismissed these valid values. The issue was identified and fixed to ensure correct handling of all valid data inputs.
* Update a warning message in dispatcher
Enhanced the warning message in aiogram/dispatcher/dispatcher.py to include a JSON dump of the update. This change helps to give clearer and more detailed information on why an update type is unknown by including the specifics of what the update contains.
* Added changelog
* Move global filters check placement into router to add chance to pass context from global filters into handlers in the same way as it possible in other places
* Added changelog
* Add multi-file bot example
This commit adds a multi-file bot example to the repository. .
* Refactor: Clean up code formatting for consistency
* add Changelog
* Refactor bot code, fix changelog version
* 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
* fix changelog version
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
* 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
* Add support for message_thread_id in ChatActionSender
The given changes add support for including the 'message_thread_id' in ChatActionSender function calls, allowing actions to be sent in specific threads rather than the main chat.
* Added changelog
Modified the Dispatcher to remove the "bot" key from workflow_data if found, prior to emitting startup in order to allow manual addition of "bot" to workflow data. This change was necessary as a bot instance is required to start polling, and therefore must be passed correctly. This logic is now tested in the 'test_start_polling' function. The change also includes an update to the changelog.
* Enhance keyboard utility, improved documentation for this utility.
Updated the 'aiogram/utils/keyboard.py' file with new methods for integrating buttons and keyboard creation more seamlessly. Added functionality to create buttons from existing markup and attach another builder. This improvement aims to make the keyboard building process more user-friendly and flexible.
* Added changelog
* Cover by tests
* Add additional API message methods to ChatJoinRequest class
ChatJoinRequest now includes additional message methods including SendAnimation, SendAudio, SendContact, and many more. The changes are useful for sending various types of messages during chat join requests.
* Added changelog
* Add model validation to remove UNSET before field validation
Updated aiogram/types/base.py to include a model validator which removes any 'UNSET' before field validation. This change was necessary to correctly handle `parse_mode` where 'UNSET' is used as a sentinel value. Without the removal of 'UNSET', it would create issues when passed to model initialization from `Bot.method_name`. 'UNSET' was also added to typing. Tiny documentation fix was made.
* Added changelog
* Removed the use of the context instance (Bot.get_current) from all placements that were used previously.
* Fixed tests
* Added changelog
* Change category
In this commit, a new function `get_mounted_bot` was added to `context_controller.py` that returns the bot mounted in context. This function was needed to bypass the limitation in pydantic BaseModel's properties, which neither support computed fields nor serialization/validation.
Various tests were also updated to compare models using `model_dump_json()` method rather than comparing the models directly. This change provides more accurate comparisons by considering default values in the models.
Further, the dispatcher was adjusted to enforce update re-mounting if the mounted bot differs from the current update. This allows shortcuts to be used in the bot's current instance and ensures the correct propagation of the context to all the nested objects and attributes of Updates.
* PoC: Mount objects to the Bot instance, bind shortcuts to configured instance
* Fixe docstring of the bind method
* Pass Bot instance explicitly to the URLInputFile
* Added tests
* Added changelog
* Refactor aiogram client and update tests
Refactored base.py to improve code readability by separating response_type operation from model_validate(). Also, adjusted the parameters in URLInputFile() within test_input_file.py for better test coverage. Updated input_file.py to streamline read method and avoid unnecessary instantiation of Bot class. Lastly, adjusted typing in methods/base.py to enhance code clarity.
* Update changelog
* Added missing FORUM_TOPIC_EDITED value to content_type property
* Added changelog to CHANGES
* Fixed aiogram/filters/magic_data.py:21:41: C416 Unnecessary `dict` comprehension (rewrite using `dict()`)
* Resolve #1155: Different signature of startup/shutdown events on polling and webhooks (#1156)
* Code refactor
- Use 'or' istead of 'A if A else B'
- Raise new error from catched error: raise Error from e
* Fixed signature of startup/shutdown events
- Include the **dispatcher.workflow_data as the handler arguments
* Update deep_linking basic examples (#1151)
* skip if current router does not have observer for custom event (#1147)
* skip if current router does not have observer for custom event
* Test custom event in router
* Feature changelog file
* fix style
* Change `InlineQueryResultType.MPEG` to more correct (#1146)
* Change `InlineQueryResultType.MPEG` to `InlineQueryResultType.MPEG4GIF`
* Change regexp for parse entities
* Use code generator to fix types
* Add changelog
* fix(docs): fix wrong page link in docs (#1154)
* storage cleanup (#1144)
* storage cleanup
* storage cleanup
* Update API docs
* Added tests
* Fix tests
---------
Co-authored-by: Alex Root Junior <jroot.junior@gmail.com>
Co-authored-by: Łukasz Tshipenchko <dev@zxc.sx>
Co-authored-by: Max Kotsiuruba <81016938+A5KET@users.noreply.github.com>
Co-authored-by: Andrey Tikhonov <andrey.tikhonov@quantori.com>
Co-authored-by: Desiders <47452083+Desiders@users.noreply.github.com>
Co-authored-by: Daniil <hum4noid@yandex.ru>
Co-authored-by: RootShinobi <111008396+RootShinobi@users.noreply.github.com>
* Code refactor
- Use 'or' istead of 'A if A else B'
- Raise new error from catched error: raise Error from e
* Fixed signature of startup/shutdown events
- Include the **dispatcher.workflow_data as the handler arguments
"description":"Use this method to add a new sticker to a set created by the bot. You must use exactly one of the fields png_sticker, tgs_sticker, or webm_sticker. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers. Returns True on success.",
"html_description":"<p>Use this method to add a new sticker to a set created by the bot. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em>, <em>tgs_sticker</em>, or <em>webm_sticker</em>. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to add a new sticker to a set created by the bot. You **must** use exactly one of the fields *png_sticker*, *tgs_sticker*, or *webm_sticker*. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers. Returns :code:`True` on success.",
"description":"Use this method to add a new sticker to a set created by the bot. Emoji sticker sets can have up to 200 stickers. Other sticker sets can have up to 120 stickers. Returns True on success.",
"html_description":"<p>Use this method to add a new sticker to a set created by the bot. Emoji sticker sets can have up to 200 stickers. Other sticker sets can have up to 120 stickers. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to add a new sticker to a set created by the bot. Emoji sticker sets can have up to 200 stickers. Other sticker sets can have up to 120 stickers. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer",
@ -30,44 +28,12 @@
"name":"name"
},
{
"type":"InputFile or String",
"required":false,
"description":"PNG image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. More information on Sending Files",
"html_description":"<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href=\"#sending-files\">More information on Sending Files »</a></td>",
"rst_description":"**PNG** image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a *file_id* as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » <sending-files>`\n",
"name":"png_sticker"
},
{
"type":"InputFile",
"required":false,
"description":"TGS animation with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#animated-sticker-requirements for technical requirements",
"html_description":"<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href=\"/stickers#animated-sticker-requirements\"/><a href=\"https://core.telegram.org/stickers#animated-sticker-requirements\">https://core.telegram.org/stickers#animated-sticker-requirements</a> for technical requirements</td>",
"rst_description":"**TGS** animation with the sticker, uploaded using multipart/form-data. See `https://core.telegram.org/stickers#animated-sticker-requirements <https://core.telegram.org/stickers#animated-sticker-requirements>`_`https://core.telegram.org/stickers#animated-sticker-requirements <https://core.telegram.org/stickers#animated-sticker-requirements>`_ for technical requirements\n",
"name":"tgs_sticker"
},
{
"type":"InputFile",
"required":false,
"description":"WEBM video with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#video-sticker-requirements for technical requirements",
"html_description":"<td><strong>WEBM</strong> video with the sticker, uploaded using multipart/form-data. See <a href=\"/stickers#video-sticker-requirements\"/><a href=\"https://core.telegram.org/stickers#video-sticker-requirements\">https://core.telegram.org/stickers#video-sticker-requirements</a> for technical requirements</td>",
"rst_description":"**WEBM** video with the sticker, uploaded using multipart/form-data. See `https://core.telegram.org/stickers#video-sticker-requirements <https://core.telegram.org/stickers#video-sticker-requirements>`_`https://core.telegram.org/stickers#video-sticker-requirements <https://core.telegram.org/stickers#video-sticker-requirements>`_ for technical requirements\n",
"name":"webm_sticker"
},
{
"type":"String",
"type":"InputSticker",
"required":true,
"description":"One or more emoji corresponding to the sticker",
"html_description":"<td>One or more emoji corresponding to the sticker</td>",
"rst_description":"One or more emoji corresponding to the sticker\n",
"name":"emojis"
},
{
"type":"MaskPosition",
"required":false,
"description":"A JSON-serialized object for position where the mask should be placed on faces",
"html_description":"<td>A JSON-serialized object for position where the mask should be placed on faces</td>",
"rst_description":"A JSON-serialized object for position where the mask should be placed on faces\n",
"name":"mask_position"
"description":"A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set isn't changed.",
"html_description":"<td>A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set isn't changed.</td>",
"rst_description":"A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set isn't changed.\n",
"description":"Pass True if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query",
"html_description":"<td>Pass <em>True</em> if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query</td>",
"rst_description":"Pass :code:`True` if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query\n",
"description":"Pass True if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query.",
"html_description":"<td>Pass <em>True</em> if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query.</td>",
"rst_description":"Pass :code:`True` if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query.\n",
"name":"is_personal"
},
{
@ -54,12 +52,12 @@
"name":"next_offset"
},
{
"type":"String",
"type":"InlineQueryResultsButton",
"required":false,
"description":"If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter switch_pm_parameter",
"html_description":"<td>If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter <em>switch_pm_parameter</em></td>",
"rst_description":"If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter*\n",
"name":"switch_pm_text"
"description":"A JSON-serialized object describing a button to be shown above inline query results",
"html_description":"<td>A JSON-serialized object describing a button to be shown above inline query results</td>",
"rst_description":"A JSON-serialized object describing a button to be shown above inline query results\n",
"name":"button"
},
{
"type":"String",
@ -67,7 +65,23 @@
"description":"Deep-linking parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only A-Z, a-z, 0-9, _ and - are allowed.\n\nExample: An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a switch_inline button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.",
"html_description":"<td><a href=\"/bots/features#deep-linking\">Deep-linking</a> parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only <code>A-Z</code>, <code>a-z</code>, <code>0-9</code>, <code>_</code> and <code>-</code> are allowed.<br/>\n<br/>\n<em>Example:</em> An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a <a href=\"#inlinekeyboardmarkup\"><em>switch_inline</em></a> button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.</td>",
"rst_description":"`Deep-linking <https://core.telegram.org/bots/features#deep-linking>`_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.\n\n\n\n*Example:* An inline bot that sends YouTube videos can ask the user to connect the bot to their YouTube account to adapt search results accordingly. To do this, it displays a 'Connect your YouTube account' button above the results, or even before showing any. The user presses the button, switches to a private chat with the bot and, in doing so, passes a start parameter that instructs the bot to return an OAuth link. Once done, the bot can offer a `https://core.telegram.org/bots/api#inlinekeyboardmarkup <https://core.telegram.org/bots/api#inlinekeyboardmarkup>`_ *switch_inline* button so that the user can easily return to the chat where they wanted to use the bot's inline capabilities.\n",
"name":"switch_pm_parameter"
"name":"switch_pm_parameter",
"deprecated":{
"version":"6.7",
"release_date":"2023-04-21"
}
},
{
"type":"String",
"required":false,
"description":"If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter switch_pm_parameter",
"html_description":"<td>If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter <em>switch_pm_parameter</em></td>",
"rst_description":"If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter*\n",
"description":"Required if ok is False. Error message in human readable form that explains why it is impossible to complete the order (e.g. \"Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.",
"html_description":"<td>Required if <em>ok</em> is <em>False</em>. Error message in human readable form that explains why it is impossible to complete the order (e.g. \"Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.</td>",
"rst_description":"Required if *ok* is :code:`False`. Error message in human readable form that explains why it is impossible to complete the order (e.g. \"Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.\n",
"description":"Required if ok is False. Error message in human readable form that explains why it is impossible to complete the order (e.g. 'Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.",
"html_description":"<td>Required if <em>ok</em> is <em>False</em>. Error message in human readable form that explains why it is impossible to complete the order (e.g. “Sorry, delivery to your desired address is unavailable”). Telegram will display this message to the user.</td>",
"rst_description":"Required if *ok* is :code:`False`. Error message in human readable form that explains why it is impossible to complete the order (e.g. 'Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.\n",
"description":"Use this method to approve a suggested post in a direct messages chat. The bot must have the 'can_post_messages' administrator right in the corresponding channel chat. Returns True on success.",
"html_description":"<p>Use this method to approve a suggested post in a direct messages chat. The bot must have the 'can_post_messages' administrator right in the corresponding channel chat. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to approve a suggested post in a direct messages chat. The bot must have the 'can_post_messages' administrator right in the corresponding channel chat. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer",
"required":true,
"description":"Unique identifier for the target direct messages chat",
"html_description":"<td>Unique identifier for the target direct messages chat</td>",
"rst_description":"Unique identifier for the target direct messages chat\n",
"name":"chat_id"
},
{
"type":"Integer",
"required":true,
"description":"Identifier of a suggested post message to approve",
"html_description":"<td>Identifier of a suggested post message to approve</td>",
"rst_description":"Identifier of a suggested post message to approve\n",
"name":"message_id"
},
{
"type":"Integer",
"required":false,
"description":"Point in time (Unix timestamp) when the post is expected to be published; omit if the date has already been specified when the suggested post was created. If specified, then the date must be not more than 2678400 seconds (30 days) in the future",
"html_description":"<td>Point in time (Unix timestamp) when the post is expected to be published; omit if the date has already been specified when the suggested post was created. If specified, then the date must be not more than 2678400 seconds (30 days) in the future</td>",
"rst_description":"Point in time (Unix timestamp) when the post is expected to be published; omit if the date has already been specified when the suggested post was created. If specified, then the date must be not more than 2678400 seconds (30 days) in the future\n",
"description":"Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.",
"html_description":"<td>Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.</td>",
"rst_description":"Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n",
"description":"Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.",
"html_description":"<td>Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.</td>",
"rst_description":"Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n",
"description":"Converts a given regular gift to Telegram Stars. Requires the can_convert_gifts_to_stars business bot right. Returns True on success.",
"html_description":"<p>Converts a given regular gift to Telegram Stars. Requires the <em>can_convert_gifts_to_stars</em> business bot right. Returns <em>True</em> on success.</p>",
"rst_description":"Converts a given regular gift to Telegram Stars. Requires the *can_convert_gifts_to_stars* business bot right. Returns :code:`True` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"name":"business_connection_id"
},
{
"type":"String",
"required":true,
"description":"Unique identifier of the regular gift that should be converted to Telegram Stars",
"html_description":"<td>Unique identifier of the regular gift that should be converted to Telegram Stars</td>",
"rst_description":"Unique identifier of the regular gift that should be converted to Telegram Stars\n",
"description":"Use this method to copy messages of any kind. Service messages and invoice messages can't be copied. A quiz poll can be copied only if the value of the field correct_option_id is known to the bot. The method is analogous to the method forwardMessage, but the copied message doesn't have a link to the original message. Returns the MessageId of the sent message on success.",
"html_description":"<p>Use this method to copy messages of any kind. Service messages and invoice messages can't be copied. A quiz <a href=\"#poll\">poll</a> can be copied only if the value of the field <em>correct_option_id</em> is known to the bot. The method is analogous to the method <a href=\"#forwardmessage\">forwardMessage</a>, but the copied message doesn't have a link to the original message. Returns the <a href=\"#messageid\">MessageId</a> of the sent message on success.</p>",
"rst_description":"Use this method to copy messages of any kind. Service messages and invoice messages can't be copied. A quiz :class:`aiogram.methods.poll.Poll` can be copied only if the value of the field *correct_option_id* is known to the bot. The method is analogous to the method :class:`aiogram.methods.forward_message.ForwardMessage`, but the copied message doesn't have a link to the original message. Returns the :class:`aiogram.types.message_id.MessageId` of the sent message on success.",
"description":"Use this method to copy messages of any kind. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz poll can be copied only if the value of the field correct_option_id is known to the bot. The method is analogous to the method forwardMessage, but the copied message doesn't have a link to the original message. Returns the MessageId of the sent message on success.",
"html_description":"<p>Use this method to copy messages of any kind. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz <a href=\"#poll\">poll</a> can be copied only if the value of the field <em>correct_option_id</em> is known to the bot. The method is analogous to the method <a href=\"#forwardmessage\">forwardMessage</a>, but the copied message doesn't have a link to the original message. Returns the <a href=\"#messageid\">MessageId</a> of the sent message on success.</p>",
"rst_description":"Use this method to copy messages of any kind. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz :class:`aiogram.methods.poll.Poll` can be copied only if the value of the field *correct_option_id* is known to the bot. The method is analogous to the method :class:`aiogram.methods.forward_message.ForwardMessage`, but the copied message doesn't have a link to the original message. Returns the :class:`aiogram.types.message_id.MessageId` of the sent message on success.",
"annotations":[
{
"type":"Integer or String",
@ -24,11 +22,19 @@
{
"type":"Integer",
"required":false,
"description":"Unique identifier for the target message thread (topic) of the forum; for forum supergroups only",
"html_description":"<td>Unique identifier for the target message thread (topic) of the forum; for forum supergroups only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of the forum; for forum supergroups only\n",
"description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only",
"html_description":"<td>Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only\n",
"name":"message_thread_id"
},
{
"type":"Integer",
"required":false,
"description":"Identifier of the direct messages topic to which the message will be sent; required if the message is sent to a direct messages chat",
"html_description":"<td>Identifier of the direct messages topic to which the message will be sent; required if the message is sent to a direct messages chat</td>",
"rst_description":"Identifier of the direct messages topic to which the message will be sent; required if the message is sent to a direct messages chat\n",
"name":"direct_messages_topic_id"
},
{
"type":"Integer or String",
"required":true,
@ -45,6 +51,14 @@
"rst_description":"Message identifier in the chat specified in *from_chat_id*\n",
"name":"message_id"
},
{
"type":"Integer",
"required":false,
"description":"New start timestamp for the copied video in the message",
"html_description":"<td>New start timestamp for the copied video in the message</td>",
"rst_description":"New start timestamp for the copied video in the message\n",
"name":"video_start_timestamp"
},
{
"type":"String",
"required":false,
@ -69,6 +83,14 @@
"rst_description":"A JSON-serialized list of special entities that appear in the new caption, which can be specified instead of *parse_mode*\n",
"name":"caption_entities"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True, if the caption must be shown above the message media. Ignored if a new caption isn't specified.",
"html_description":"<td>Pass <em>True</em>, if the caption must be shown above the message media. Ignored if a new caption isn't specified.</td>",
"rst_description":"Pass :code:`True`, if the caption must be shown above the message media. Ignored if a new caption isn't specified.\n",
"name":"show_caption_above_media"
},
{
"type":"Boolean",
"required":false,
@ -86,12 +108,44 @@
"name":"protect_content"
},
{
"type":"Integer",
"type":"Boolean",
"required":false,
"description":"If the message is a reply, ID of the original message",
"html_description":"<td>If the message is a reply, ID of the original message</td>",
"rst_description":"If the message is a reply, ID of the original message\n",
"name":"reply_to_message_id"
"description":"Pass True to allow up to 1000 messages per second, ignoring broadcasting limits for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance",
"html_description":"<td>Pass <em>True</em> to allow up to 1000 messages per second, ignoring <a href=\"https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once\">broadcasting limits</a> for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance</td>",
"rst_description":"Pass :code:`True` to allow up to 1000 messages per second, ignoring `broadcasting limits <https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once>`_ for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's balance\n",
"name":"allow_paid_broadcast"
},
{
"type":"String",
"required":false,
"description":"Unique identifier of the message effect to be added to the message; only available when copying to private chats",
"html_description":"<td>Unique identifier of the message effect to be added to the message; only available when copying to private chats</td>",
"rst_description":"Unique identifier of the message effect to be added to the message; only available when copying to private chats\n",
"name":"message_effect_id"
},
{
"type":"SuggestedPostParameters",
"required":false,
"description":"A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only. If the message is sent as a reply to another suggested post, then that suggested post is automatically declined.",
"html_description":"<td>A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only. If the message is sent as a reply to another suggested post, then that suggested post is automatically declined.</td>",
"rst_description":"A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only. If the message is sent as a reply to another suggested post, then that suggested post is automatically declined.\n",
"name":"suggested_post_parameters"
},
{
"type":"ReplyParameters",
"required":false,
"description":"Description of the message to reply to",
"html_description":"<td>Description of the message to reply to</td>",
"rst_description":"Description of the message to reply to\n",
"name":"reply_parameters"
},
{
"type":"InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply",
"required":false,
"description":"Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove a reply keyboard or to force a reply from the user",
"html_description":"<td>Additional interface options. A JSON-serialized object for an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a>, <a href=\"/bots/features#keyboards\">custom reply keyboard</a>, instructions to remove a reply keyboard or to force a reply from the user</td>",
"rst_description":"Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove a reply keyboard or to force a reply from the user\n",
"name":"reply_markup"
},
{
"type":"Boolean",
@ -99,15 +153,23 @@
"description":"Pass True if the message should be sent even if the specified replied-to message is not found",
"html_description":"<td>Pass <em>True</em> if the message should be sent even if the specified replied-to message is not found</td>",
"rst_description":"Pass :code:`True` if the message should be sent even if the specified replied-to message is not found\n",
"name":"allow_sending_without_reply"
"name":"allow_sending_without_reply",
"deprecated":{
"version":"7.0",
"release_date":"2023-12-29"
}
},
{
"type":"InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply",
"type":"Integer",
"required":false,
"description":"Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user.",
"html_description":"<td>Additional interface options. A JSON-serialized object for an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a>, <a href=\"/bots/features#keyboards\">custom reply keyboard</a>, instructions to remove reply keyboard or to force a reply from the user.</td>",
"rst_description":"Additional interface options. A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_, `custom reply keyboard <https://core.telegram.org/bots/features#keyboards>`_, instructions to remove reply keyboard or to force a reply from the user.\n",
"name":"reply_markup"
"description":"If the message is a reply, ID of the original message",
"html_description":"<td>If the message is a reply, ID of the original message</td>",
"rst_description":"If the message is a reply, ID of the original message\n",
"description":"Use this method to copy messages of any kind. If some of the specified messages can't be found or copied, they are skipped. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz poll can be copied only if the value of the field correct_option_id is known to the bot. The method is analogous to the method forwardMessages, but the copied messages don't have a link to the original message. Album grouping is kept for copied messages. On success, an array of MessageId of the sent messages is returned.",
"html_description":"<p>Use this method to copy messages of any kind. If some of the specified messages can't be found or copied, they are skipped. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz <a href=\"#poll\">poll</a> can be copied only if the value of the field <em>correct_option_id</em> is known to the bot. The method is analogous to the method <a href=\"#forwardmessages\">forwardMessages</a>, but the copied messages don't have a link to the original message. Album grouping is kept for copied messages. On success, an array of <a href=\"#messageid\">MessageId</a> of the sent messages is returned.</p>",
"rst_description":"Use this method to copy messages of any kind. If some of the specified messages can't be found or copied, they are skipped. Service messages, paid media messages, giveaway messages, giveaway winners messages, and invoice messages can't be copied. A quiz :class:`aiogram.methods.poll.Poll` can be copied only if the value of the field *correct_option_id* is known to the bot. The method is analogous to the method :class:`aiogram.methods.forward_messages.ForwardMessages`, but the copied messages don't have a link to the original message. Album grouping is kept for copied messages. On success, an array of :class:`aiogram.types.message_id.MessageId` of the sent messages is returned.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"Integer",
"required":false,
"description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only",
"html_description":"<td>Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only\n",
"name":"message_thread_id"
},
{
"type":"Integer",
"required":false,
"description":"Identifier of the direct messages topic to which the messages will be sent; required if the messages are sent to a direct messages chat",
"html_description":"<td>Identifier of the direct messages topic to which the messages will be sent; required if the messages are sent to a direct messages chat</td>",
"rst_description":"Identifier of the direct messages topic to which the messages will be sent; required if the messages are sent to a direct messages chat\n",
"name":"direct_messages_topic_id"
},
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the chat where the original messages were sent (or channel username in the format @channelusername)",
"html_description":"<td>Unique identifier for the chat where the original messages were sent (or channel username in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the chat where the original messages were sent (or channel username in the format :code:`@channelusername`)\n",
"name":"from_chat_id"
},
{
"type":"Array of Integer",
"required":true,
"description":"A JSON-serialized list of 1-100 identifiers of messages in the chat from_chat_id to copy. The identifiers must be specified in a strictly increasing order.",
"html_description":"<td>A JSON-serialized list of 1-100 identifiers of messages in the chat <em>from_chat_id</em> to copy. The identifiers must be specified in a strictly increasing order.</td>",
"rst_description":"A JSON-serialized list of 1-100 identifiers of messages in the chat *from_chat_id* to copy. The identifiers must be specified in a strictly increasing order.\n",
"name":"message_ids"
},
{
"type":"Boolean",
"required":false,
"description":"Sends the messages silently. Users will receive a notification with no sound.",
"html_description":"<td>Sends the messages <a href=\"https://telegram.org/blog/channels-2-0#silent-messages\">silently</a>. Users will receive a notification with no sound.</td>",
"rst_description":"Sends the messages `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.\n",
"name":"disable_notification"
},
{
"type":"Boolean",
"required":false,
"description":"Protects the contents of the sent messages from forwarding and saving",
"html_description":"<td>Protects the contents of the sent messages from forwarding and saving</td>",
"rst_description":"Protects the contents of the sent messages from forwarding and saving\n",
"name":"protect_content"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to copy the messages without their captions",
"html_description":"<td>Pass <em>True</em> to copy the messages without their captions</td>",
"rst_description":"Pass :code:`True` to copy the messages without their captions\n",
"description":"Use this method to create a subscription invite link for a channel chat. The bot must have the can_invite_users administrator rights. The link can be edited using the method editChatSubscriptionInviteLink or revoked using the method revokeChatInviteLink. Returns the new invite link as a ChatInviteLink object.",
"html_description":"<p>Use this method to create a <a href=\"https://telegram.org/blog/superchannels-star-reactions-subscriptions#star-subscriptions\">subscription invite link</a> for a channel chat. The bot must have the <em>can_invite_users</em> administrator rights. The link can be edited using the method <a href=\"#editchatsubscriptioninvitelink\">editChatSubscriptionInviteLink</a> or revoked using the method <a href=\"#revokechatinvitelink\">revokeChatInviteLink</a>. Returns the new invite link as a <a href=\"#chatinvitelink\">ChatInviteLink</a> object.</p>",
"rst_description":"Use this method to create a `subscription invite link <https://telegram.org/blog/superchannels-star-reactions-subscriptions#star-subscriptions>`_ for a channel chat. The bot must have the *can_invite_users* administrator rights. The link can be edited using the method :class:`aiogram.methods.edit_chat_subscription_invite_link.EditChatSubscriptionInviteLink` or revoked using the method :class:`aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink`. Returns the new invite link as a :class:`aiogram.types.chat_invite_link.ChatInviteLink` object.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target channel chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target channel chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target channel chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"String",
"required":false,
"description":"Invite link name; 0-32 characters",
"html_description":"<td>Invite link name; 0-32 characters</td>",
"rst_description":"Invite link name; 0-32 characters\n",
"name":"name"
},
{
"type":"Integer",
"required":true,
"description":"The number of seconds the subscription will be active for before the next payment. Currently, it must always be 2592000 (30 days).",
"html_description":"<td>The number of seconds the subscription will be active for before the next payment. Currently, it must always be 2592000 (30 days).</td>",
"rst_description":"The number of seconds the subscription will be active for before the next payment. Currently, it must always be 2592000 (30 days).\n",
"name":"subscription_period"
},
{
"type":"Integer",
"required":true,
"description":"The amount of Telegram Stars a user must pay initially and after each subsequent subscription period to be a member of the chat; 1-10000",
"html_description":"<td>The amount of Telegram Stars a user must pay initially and after each subsequent subscription period to be a member of the chat; 1-10000</td>",
"rst_description":"The amount of Telegram Stars a user must pay initially and after each subsequent subscription period to be a member of the chat; 1-10000\n",
"description":"Use this method to create a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the can_manage_topics administrator rights. Returns information about the created topic as a ForumTopic object.",
"html_description":"<p>Use this method to create a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the <em>can_manage_topics</em> administrator rights. Returns information about the created topic as a <a href=\"#forumtopic\">ForumTopic</a> object.</p>",
"rst_description":"Use this method to create a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns information about the created topic as a :class:`aiogram.types.forum_topic.ForumTopic` object.",
"description":"Use this method to create a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the can_manage_topics administrator right. Returns information about the created topic as a ForumTopic object.",
"html_description":"<p>Use this method to create a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the <em>can_manage_topics</em> administrator right. Returns information about the created topic as a <a href=\"#forumtopic\">ForumTopic</a> object.</p>",
"rst_description":"Use this method to create a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator right. Returns information about the created topic as a :class:`aiogram.types.forum_topic.ForumTopic` object.",
"html_description":"<p>Use this method to create a link for an invoice. Returns the created invoice link as <em>String</em> on success.</p>",
"rst_description":"Use this method to create a link for an invoice. Returns the created invoice link as *String* on success.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the link will be created. For payments in Telegram Stars only.",
"html_description":"<td>Unique identifier of the business connection on behalf of which the link will be created. For payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a> only.</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the link will be created. For payments in `Telegram Stars <https://t.me/BotNews/90>`_ only.\n",
"name":"business_connection_id"
},
{
"type":"String",
"required":true,
@ -32,41 +38,49 @@
{
"type":"String",
"required":true,
"description":"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.",
"html_description":"<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.</td>",
"rst_description":"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.\n",
"description":"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use it for your internal processes.",
"html_description":"<td>Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use it for your internal processes.</td>",
"rst_description":"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use it for your internal processes.\n",
"name":"payload"
},
{
"type":"String",
"required":true,
"description":"Payment provider token, obtained via BotFather",
"html_description":"<td>Payment provider token, obtained via <a href=\"https://t.me/botfather\">BotFather</a></td>",
"rst_description":"Payment provider token, obtained via `BotFather <https://t.me/botfather>`_\n",
"required":false,
"description":"Payment provider token, obtained via @BotFather. Pass an empty string for payments in Telegram Stars.",
"html_description":"<td>Payment provider token, obtained via <a href=\"https://t.me/botfather\">@BotFather</a>. Pass an empty string for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Payment provider token, obtained via `@BotFather <https://t.me/botfather>`_. Pass an empty string for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"provider_token"
},
{
"type":"String",
"required":true,
"description":"Three-letter ISO 4217 currency code, see more on currencies",
"html_description":"<td>Three-letter ISO 4217 currency code, see <a href=\"/bots/payments#supported-currencies\">more on currencies</a></td>",
"rst_description":"Three-letter ISO 4217 currency code, see `more on currencies <https://core.telegram.org/bots/payments#supported-currencies>`_\n",
"description":"Three-letter ISO 4217 currency code, see more on currencies. Pass 'XTR' for payments in Telegram Stars.",
"html_description":"<td>Three-letter ISO 4217 currency code, see <a href=\"/bots/payments#supported-currencies\">more on currencies</a>. Pass “XTR” for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Three-letter ISO 4217 currency code, see `more on currencies <https://core.telegram.org/bots/payments#supported-currencies>`_. Pass 'XTR' for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"currency"
},
{
"type":"Array of LabeledPrice",
"required":true,
"description":"Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)",
"html_description":"<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)</td>",
"rst_description":"Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)\n",
"description":"Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.). Must contain exactly one item for payments in Telegram Stars.",
"html_description":"<td>Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.). Must contain exactly one item for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.). Must contain exactly one item for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"prices"
},
{
"type":"Integer",
"required":false,
"description":"The maximum accepted amount for tips in the smallest units of the currency (integer, not float/double). For example, for a maximum tip of US$ 1.45 pass max_tip_amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0",
"html_description":"<td>The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href=\"/bots/payments/currencies.json\">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0</td>",
"rst_description":"The maximum accepted amount for tips in the *smallest units* of the currency (integer, **not** float/double). For example, for a maximum tip of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* parameter in `currencies.json <https://core.telegram.org/bots/payments/currencies.json>`_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0\n",
"description":"The number of seconds the subscription will be active for before the next payment. The currency must be set to 'XTR' (Telegram Stars) if the parameter is used. Currently, it must always be 2592000 (30 days) if specified. Any number of subscriptions can be active for a given bot at the same time, including multiple concurrent subscriptions from the same user. Subscription price must no exceed 10000 Telegram Stars.",
"html_description":"<td>The number of seconds the subscription will be active for before the next payment. The currency must be set to “XTR” (Telegram Stars) if the parameter is used. Currently, it must always be 2592000 (30 days) if specified. Any number of subscriptions can be active for a given bot at the same time, including multiple concurrent subscriptions from the same user. Subscription price must no exceed 10000 Telegram Stars.</td>",
"rst_description":"The number of seconds the subscription will be active for before the next payment. The currency must be set to 'XTR' (Telegram Stars) if the parameter is used. Currently, it must always be 2592000 (30 days) if specified. Any number of subscriptions can be active for a given bot at the same time, including multiple concurrent subscriptions from the same user. Subscription price must no exceed 10000 Telegram Stars.\n",
"name":"subscription_period"
},
{
"type":"Integer",
"required":false,
"description":"The maximum accepted amount for tips in the smallest units of the currency (integer, not float/double). For example, for a maximum tip of US$ 1.45 pass max_tip_amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0. Not supported for payments in Telegram Stars.",
"html_description":"<td>The maximum accepted amount for tips in the <em>smallest units</em> of the currency (integer, <strong>not</strong> float/double). For example, for a maximum tip of <code>US$ 1.45</code> pass <code>max_tip_amount = 145</code>. See the <em>exp</em> parameter in <a href=\"/bots/payments/currencies.json\">currencies.json</a>, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0. Not supported for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"The maximum accepted amount for tips in the *smallest units* of the currency (integer, **not** float/double). For example, for a maximum tip of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* parameter in `currencies.json <https://core.telegram.org/bots/payments/currencies.json>`_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0. Not supported for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"max_tip_amount"
},
{
@ -120,57 +134,57 @@
{
"type":"Boolean",
"required":false,
"description":"Pass True if you require the user's full name to complete the order",
"html_description":"<td>Pass <em>True</em> if you require the user's full name to complete the order</td>",
"rst_description":"Pass :code:`True` if you require the user's full name to complete the order\n",
"description":"Pass True if you require the user's full name to complete the order. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if you require the user's full name to complete the order. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if you require the user's full name to complete the order. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"need_name"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if you require the user's phone number to complete the order",
"html_description":"<td>Pass <em>True</em> if you require the user's phone number to complete the order</td>",
"rst_description":"Pass :code:`True` if you require the user's phone number to complete the order\n",
"description":"Pass True if you require the user's phone number to complete the order. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if you require the user's phone number to complete the order. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if you require the user's phone number to complete the order. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"need_phone_number"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if you require the user's email address to complete the order",
"html_description":"<td>Pass <em>True</em> if you require the user's email address to complete the order</td>",
"rst_description":"Pass :code:`True` if you require the user's email address to complete the order\n",
"description":"Pass True if you require the user's email address to complete the order. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if you require the user's email address to complete the order. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if you require the user's email address to complete the order. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"need_email"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if you require the user's shipping address to complete the order",
"html_description":"<td>Pass <em>True</em> if you require the user's shipping address to complete the order</td>",
"rst_description":"Pass :code:`True` if you require the user's shipping address to complete the order\n",
"description":"Pass True if you require the user's shipping address to complete the order. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if you require the user's shipping address to complete the order. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if you require the user's shipping address to complete the order. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"need_shipping_address"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if the user's phone number should be sent to the provider",
"html_description":"<td>Pass <em>True</em> if the user's phone number should be sent to the provider</td>",
"rst_description":"Pass :code:`True` if the user's phone number should be sent to the provider\n",
"description":"Pass True if the user's phone number should be sent to the provider. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if the user's phone number should be sent to the provider. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if the user's phone number should be sent to the provider. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"send_phone_number_to_provider"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if the user's email address should be sent to the provider",
"html_description":"<td>Pass <em>True</em> if the user's email address should be sent to the provider</td>",
"rst_description":"Pass :code:`True` if the user's email address should be sent to the provider\n",
"description":"Pass True if the user's email address should be sent to the provider. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if the user's email address should be sent to the provider. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if the user's email address should be sent to the provider. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"name":"send_email_to_provider"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True if the final price depends on the shipping method",
"html_description":"<td>Pass <em>True</em> if the final price depends on the shipping method</td>",
"rst_description":"Pass :code:`True` if the final price depends on the shipping method\n",
"description":"Pass True if the final price depends on the shipping method. Ignored for payments in Telegram Stars.",
"html_description":"<td>Pass <em>True</em> if the final price depends on the shipping method. Ignored for payments in <a href=\"https://t.me/BotNews/90\">Telegram Stars</a>.</td>",
"rst_description":"Pass :code:`True` if the final price depends on the shipping method. Ignored for payments in `Telegram Stars <https://t.me/BotNews/90>`_.\n",
"description":"Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. You must use exactly one of the fields png_sticker, tgs_sticker, or webm_sticker. Returns True on success.",
"html_description":"<p>Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. You <strong>must</strong> use exactly one of the fields <em>png_sticker</em>, <em>tgs_sticker</em>, or <em>webm_sticker</em>. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. You **must** use exactly one of the fields *png_sticker*, *tgs_sticker*, or *webm_sticker*. Returns :code:`True` on success.",
"description":"Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. Returns True on success.",
"html_description":"<p>Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to create a new sticker set owned by a user. The bot will be able to edit the sticker set thus created. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer",
@ -38,52 +36,40 @@
"name":"title"
},
{
"type":"InputFile or String",
"required":false,
"description":"PNG image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a file_id as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. More information on Sending Files",
"html_description":"<td><strong>PNG</strong> image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a <em>file_id</em> as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. <a href=\"#sending-files\">More information on Sending Files »</a></td>",
"rst_description":"**PNG** image with the sticker, must be up to 512 kilobytes in size, dimensions must not exceed 512px, and either width or height must be exactly 512px. Pass a *file_id* as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » <sending-files>`\n",
"name":"png_sticker"
},
{
"type":"InputFile",
"required":false,
"description":"TGS animation with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#animated-sticker-requirements for technical requirements",
"html_description":"<td><strong>TGS</strong> animation with the sticker, uploaded using multipart/form-data. See <a href=\"/stickers#animated-sticker-requirements\"/><a href=\"https://core.telegram.org/stickers#animated-sticker-requirements\">https://core.telegram.org/stickers#animated-sticker-requirements</a> for technical requirements</td>",
"rst_description":"**TGS** animation with the sticker, uploaded using multipart/form-data. See `https://core.telegram.org/stickers#animated-sticker-requirements <https://core.telegram.org/stickers#animated-sticker-requirements>`_`https://core.telegram.org/stickers#animated-sticker-requirements <https://core.telegram.org/stickers#animated-sticker-requirements>`_ for technical requirements\n",
"name":"tgs_sticker"
},
{
"type":"InputFile",
"required":false,
"description":"WEBM video with the sticker, uploaded using multipart/form-data. See https://core.telegram.org/stickers#video-sticker-requirements for technical requirements",
"html_description":"<td><strong>WEBM</strong> video with the sticker, uploaded using multipart/form-data. See <a href=\"/stickers#video-sticker-requirements\"/><a href=\"https://core.telegram.org/stickers#video-sticker-requirements\">https://core.telegram.org/stickers#video-sticker-requirements</a> for technical requirements</td>",
"rst_description":"**WEBM** video with the sticker, uploaded using multipart/form-data. See `https://core.telegram.org/stickers#video-sticker-requirements <https://core.telegram.org/stickers#video-sticker-requirements>`_`https://core.telegram.org/stickers#video-sticker-requirements <https://core.telegram.org/stickers#video-sticker-requirements>`_ for technical requirements\n",
"name":"webm_sticker"
"type":"Array of InputSticker",
"required":true,
"description":"A JSON-serialized list of 1-50 initial stickers to be added to the sticker set",
"html_description":"<td>A JSON-serialized list of 1-50 initial stickers to be added to the sticker set</td>",
"rst_description":"A JSON-serialized list of 1-50 initial stickers to be added to the sticker set\n",
"name":"stickers"
},
{
"type":"String",
"required":false,
"description":"Type of stickers in the set, pass 'regular' or 'mask'. Custom emoji sticker sets can't be created via the Bot API at the moment. By default, a regular sticker set is created.",
"html_description":"<td>Type of stickers in the set, pass “regular” or “mask”. Custom emoji sticker sets can't be created via the Bot API at the moment. By default, a regular sticker set is created.</td>",
"rst_description":"Type of stickers in the set, pass 'regular' or 'mask'. Custom emoji sticker sets can't be created via the Bot API at the moment. By default, a regular sticker set is created.\n",
"description":"Type of stickers in the set, pass 'regular', 'mask', or 'custom_emoji'. By default, a regular sticker set is created.",
"html_description":"<td>Type of stickers in the set, pass “regular”, “mask”, or “custom_emoji”. By default, a regular sticker set is created.</td>",
"rst_description":"Type of stickers in the set, pass 'regular', 'mask', or 'custom_emoji'. By default, a regular sticker set is created.\n",
"name":"sticker_type"
},
{
"type":"String",
"required":true,
"description":"One or more emoji corresponding to the sticker",
"html_description":"<td>One or more emoji corresponding to the sticker</td>",
"rst_description":"One or more emoji corresponding to the sticker\n",
"name":"emojis"
"type":"Boolean",
"required":false,
"description":"Pass True if stickers in the sticker set must be repainted to the color of text when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context; for custom emoji sticker sets only",
"html_description":"<td>Pass <em>True</em> if stickers in the sticker set must be repainted to the color of text when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context; for custom emoji sticker sets only</td>",
"rst_description":"Pass :code:`True` if stickers in the sticker set must be repainted to the color of text when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context; for custom emoji sticker sets only\n",
"name":"needs_repainting"
},
{
"type":"MaskPosition",
"type":"String",
"required":false,
"description":"A JSON-serialized object for position where the mask should be placed on faces",
"html_description":"<td>A JSON-serialized object for position where the mask should be placed on faces</td>",
"rst_description":"A JSON-serialized object for position where the mask should be placed on faces\n",
"name":"mask_position"
"description":"Format of stickers in the set, must be one of 'static', 'animated', 'video'",
"html_description":"<td>Format of stickers in the set, must be one of “static”, “animated”, “video”</td>",
"rst_description":"Format of stickers in the set, must be one of 'static', 'animated', 'video'\n",
"description":"Use this method to decline a suggested post in a direct messages chat. The bot must have the 'can_manage_direct_messages' administrator right in the corresponding channel chat. Returns True on success.",
"html_description":"<p>Use this method to decline a suggested post in a direct messages chat. The bot must have the 'can_manage_direct_messages' administrator right in the corresponding channel chat. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to decline a suggested post in a direct messages chat. The bot must have the 'can_manage_direct_messages' administrator right in the corresponding channel chat. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer",
"required":true,
"description":"Unique identifier for the target direct messages chat",
"html_description":"<td>Unique identifier for the target direct messages chat</td>",
"rst_description":"Unique identifier for the target direct messages chat\n",
"name":"chat_id"
},
{
"type":"Integer",
"required":true,
"description":"Identifier of a suggested post message to decline",
"html_description":"<td>Identifier of a suggested post message to decline</td>",
"rst_description":"Identifier of a suggested post message to decline\n",
"name":"message_id"
},
{
"type":"String",
"required":false,
"description":"Comment for the creator of the suggested post; 0-128 characters",
"html_description":"<td>Comment for the creator of the suggested post; 0-128 characters</td>",
"rst_description":"Comment for the creator of the suggested post; 0-128 characters\n",
"description":"Delete messages on behalf of a business account. Requires the can_delete_sent_messages business bot right to delete messages sent by the bot itself, or the can_delete_all_messages business bot right to delete any message. Returns True on success.",
"html_description":"<p>Delete messages on behalf of a business account. Requires the <em>can_delete_sent_messages</em> business bot right to delete messages sent by the bot itself, or the <em>can_delete_all_messages</em> business bot right to delete any message. Returns <em>True</em> on success.</p>",
"rst_description":"Delete messages on behalf of a business account. Requires the *can_delete_sent_messages* business bot right to delete messages sent by the bot itself, or the *can_delete_all_messages* business bot right to delete any message. Returns :code:`True` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection on behalf of which to delete the messages",
"html_description":"<td>Unique identifier of the business connection on behalf of which to delete the messages</td>",
"rst_description":"Unique identifier of the business connection on behalf of which to delete the messages\n",
"name":"business_connection_id"
},
{
"type":"Array of Integer",
"required":true,
"description":"A JSON-serialized list of 1-100 identifiers of messages to delete. All messages must be from the same chat. See deleteMessage for limitations on which messages can be deleted",
"html_description":"<td>A JSON-serialized list of 1-100 identifiers of messages to delete. All messages must be from the same chat. See <a href=\"#deletemessage\">deleteMessage</a> for limitations on which messages can be deleted</td>",
"rst_description":"A JSON-serialized list of 1-100 identifiers of messages to delete. All messages must be from the same chat. See :class:`aiogram.methods.delete_message.DeleteMessage` for limitations on which messages can be deleted\n",
"description":"Use this method to delete a forum topic along with all its messages in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the can_delete_messages administrator rights. Returns True on success.",
"html_description":"<p>Use this method to delete a forum topic along with all its messages in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the <em>can_delete_messages</em> administrator rights. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to delete a forum topic along with all its messages in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_delete_messages* administrator rights. Returns :code:`True` on success.",
"description":"Use this method to delete a forum topic along with all its messages in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the can_delete_messages administrator rights. Returns True on success.",
"html_description":"<p>Use this method to delete a forum topic along with all its messages in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the <em>can_delete_messages</em> administrator rights. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to delete a forum topic along with all its messages in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the *can_delete_messages* administrator rights. Returns :code:`True` on success.",
"description":"Use this method to delete a message, including service messages, with the following limitations:\n- A message can only be deleted if it was sent less than 48 hours ago.\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.\n- Bots can delete outgoing messages in private chats, groups, and supergroups.\n- Bots can delete incoming messages in private chats.\n- Bots granted can_post_messages permissions can delete outgoing messages in channels.\n- If the bot is an administrator of a group, it can delete any message there.\n- If the bot has can_delete_messages permission in a supergroup or a channel, it can delete any message there.\nReturns True on success.",
"html_description":"<p>Use this method to delete a message, including service messages, with the following limitations:<br/>\n- A message can only be deleted if it was sent less than 48 hours ago.<br/>\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.<br/>\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.<br/>\n- Bots can delete outgoing messages in private chats, groups, and supergroups.<br/>\n- Bots can delete incoming messages in private chats.<br/>\n- Bots granted <em>can_post_messages</em> permissions can delete outgoing messages in channels.<br/>\n- If the bot is an administrator of a group, it can delete any message there.<br/>\n- If the bot has <em>can_delete_messages</em> permission in a supergroup or a channel, it can delete any message there.<br/>\nReturns <em>True</em> on success.</p>",
"rst_description":"Use this method to delete a message, including service messages, with the following limitations:\n\n- A message can only be deleted if it was sent less than 48 hours ago.\n\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.\n\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.\n\n- Bots can delete outgoing messages in private chats, groups, and supergroups.\n\n- Bots can delete incoming messages in private chats.\n\n- Bots granted *can_post_messages* permissions can delete outgoing messages in channels.\n\n- If the bot is an administrator of a group, it can delete any message there.\n\n- If the bot has *can_delete_messages* permission in a supergroup or a channel, it can delete any message there.\n\nReturns :code:`True` on success.",
"description":"Use this method to delete a message, including service messages, with the following limitations:\n- A message can only be deleted if it was sent less than 48 hours ago.\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.\n- Bots can delete outgoing messages in private chats, groups, and supergroups.\n- Bots can delete incoming messages in private chats.\n- Bots granted can_post_messages permissions can delete outgoing messages in channels.\n- If the bot is an administrator of a group, it can delete any message there.\n- If the bot has can_delete_messages administrator right in a supergroup or a channel, it can delete any message there.\n- If the bot has can_manage_direct_messages administrator right in a channel, it can delete any message in the corresponding direct messages chat.\nReturns True on success.",
"html_description":"<p>Use this method to delete a message, including service messages, with the following limitations:<br/>\n- A message can only be deleted if it was sent less than 48 hours ago.<br/>\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.<br/>\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.<br/>\n- Bots can delete outgoing messages in private chats, groups, and supergroups.<br/>\n- Bots can delete incoming messages in private chats.<br/>\n- Bots granted <em>can_post_messages</em> permissions can delete outgoing messages in channels.<br/>\n- If the bot is an administrator of a group, it can delete any message there.<br/>\n- If the bot has <em>can_delete_messages</em> administrator right in a supergroup or a channel, it can delete any message there.<br/>\n- If the bot has <em>can_manage_direct_messages</em> administrator right in a channel, it can delete any message in the corresponding direct messages chat.<br/>\nReturns <em>True</em> on success.</p>",
"rst_description":"Use this method to delete a message, including service messages, with the following limitations:\n\n- A message can only be deleted if it was sent less than 48 hours ago.\n\n- Service messages about a supergroup, channel, or forum topic creation can't be deleted.\n\n- A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.\n\n- Bots can delete outgoing messages in private chats, groups, and supergroups.\n\n- Bots can delete incoming messages in private chats.\n\n- Bots granted *can_post_messages* permissions can delete outgoing messages in channels.\n\n- If the bot is an administrator of a group, it can delete any message there.\n\n- If the bot has *can_delete_messages* administrator right in a supergroup or a channel, it can delete any message there.\n\n- If the bot has *can_manage_direct_messages* administrator right in a channel, it can delete any message in the corresponding direct messages chat.\n\nReturns :code:`True` on success.",
"description":"Use this method to delete multiple messages simultaneously. If some of the specified messages can't be found, they are skipped. Returns True on success.",
"html_description":"<p>Use this method to delete multiple messages simultaneously. If some of the specified messages can't be found, they are skipped. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to delete multiple messages simultaneously. If some of the specified messages can't be found, they are skipped. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"Array of Integer",
"required":true,
"description":"A JSON-serialized list of 1-100 identifiers of messages to delete. See deleteMessage for limitations on which messages can be deleted",
"html_description":"<td>A JSON-serialized list of 1-100 identifiers of messages to delete. See <a href=\"#deletemessage\">deleteMessage</a> for limitations on which messages can be deleted</td>",
"rst_description":"A JSON-serialized list of 1-100 identifiers of messages to delete. See :class:`aiogram.methods.delete_message.DeleteMessage` for limitations on which messages can be deleted\n",
"description":"Deletes a story previously posted by the bot on behalf of a managed business account. Requires the can_manage_stories business bot right. Returns True on success.",
"html_description":"<p>Deletes a story previously posted by the bot on behalf of a managed business account. Requires the <em>can_manage_stories</em> business bot right. Returns <em>True</em> on success.</p>",
"rst_description":"Deletes a story previously posted by the bot on behalf of a managed business account. Requires the *can_manage_stories* business bot right. Returns :code:`True` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"name":"business_connection_id"
},
{
"type":"Integer",
"required":true,
"description":"Unique identifier of the story to delete",
"html_description":"<td>Unique identifier of the story to delete</td>",
"rst_description":"Unique identifier of the story to delete\n",
"description":"Use this method to edit a subscription invite link created by the bot. The bot must have the can_invite_users administrator rights. Returns the edited invite link as a ChatInviteLink object.",
"html_description":"<p>Use this method to edit a subscription invite link created by the bot. The bot must have the <em>can_invite_users</em> administrator rights. Returns the edited invite link as a <a href=\"#chatinvitelink\">ChatInviteLink</a> object.</p>",
"rst_description":"Use this method to edit a subscription invite link created by the bot. The bot must have the *can_invite_users* administrator rights. Returns the edited invite link as a :class:`aiogram.types.chat_invite_link.ChatInviteLink` object.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"String",
"required":true,
"description":"The invite link to edit",
"html_description":"<td>The invite link to edit</td>",
"rst_description":"The invite link to edit\n",
"name":"invite_link"
},
{
"type":"String",
"required":false,
"description":"Invite link name; 0-32 characters",
"html_description":"<td>Invite link name; 0-32 characters</td>",
"rst_description":"Invite link name; 0-32 characters\n",
"description":"Use this method to edit name and icon of a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have can_manage_topics administrator rights, unless it is the creator of the topic. Returns True on success.",
"html_description":"<p>Use this method to edit name and icon of a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have <em>can_manage_topics</em> administrator rights, unless it is the creator of the topic. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to edit name and icon of a topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have *can_manage_topics* administrator rights, unless it is the creator of the topic. Returns :code:`True` on success.",
"description":"Use this method to edit name and icon of a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the can_manage_topics administrator rights, unless it is the creator of the topic. Returns True on success.",
"html_description":"<p>Use this method to edit name and icon of a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the <em>can_manage_topics</em> administrator rights, unless it is the creator of the topic. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to edit name and icon of a topic in a forum supergroup chat or a private chat with a user. In the case of a supergroup chat the bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights, unless it is the creator of the topic. Returns :code:`True` on success.",
"description":"Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have can_manage_topics administrator rights. Returns True on success.",
"html_description":"<p>Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have <em>can_manage_topics</em> administrator rights. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have *can_manage_topics* administrator rights. Returns :code:`True` on success.",
"description":"Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the can_manage_topics administrator rights. Returns True on success.",
"html_description":"<p>Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the <em>can_manage_topics</em> administrator rights. Returns <em>True</em> on success.</p>",
"rst_description":"Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot must be an administrator in the chat for this to work and must have the *can_manage_topics* administrator rights. Returns :code:`True` on success.",
"description":"Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.",
"html_description":"<p>Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned.</p>",
"rst_description":"Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned.",
"description":"Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within 48 hours from the time they were sent.",
"html_description":"<p>Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within <strong>48 hours</strong> from the time they were sent.</p>",
"rst_description":"Use this method to edit captions of messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within **48 hours** from the time they were sent.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the message to be edited was sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message to be edited was sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message to be edited was sent\n",
"name":"business_connection_id"
},
{
"type":"Integer or String",
"required":false,
@ -61,6 +67,14 @@
"rst_description":"A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*\n",
"name":"caption_entities"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True, if the caption must be shown above the message media. Supported only for animation, photo and video messages.",
"html_description":"<td>Pass <em>True</em>, if the caption must be shown above the message media. Supported only for animation, photo and video messages.</td>",
"rst_description":"Pass :code:`True`, if the caption must be shown above the message media. Supported only for animation, photo and video messages.\n",
"description":"Use this method to edit a checklist on behalf of a connected business account. On success, the edited Message is returned.",
"html_description":"<p>Use this method to edit a checklist on behalf of a connected business account. On success, the edited <a href=\"#message\">Message</a> is returned.</p>",
"rst_description":"Use this method to edit a checklist on behalf of a connected business account. On success, the edited :class:`aiogram.types.message.Message` is returned.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection on behalf of which the message will be sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message will be sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message will be sent\n",
"name":"business_connection_id"
},
{
"type":"Integer",
"required":true,
"description":"Unique identifier for the target chat",
"html_description":"<td>Unique identifier for the target chat</td>",
"rst_description":"Unique identifier for the target chat\n",
"name":"chat_id"
},
{
"type":"Integer",
"required":true,
"description":"Unique identifier for the target message",
"html_description":"<td>Unique identifier for the target message</td>",
"rst_description":"Unique identifier for the target message\n",
"name":"message_id"
},
{
"type":"InputChecklist",
"required":true,
"description":"A JSON-serialized object for the new checklist",
"html_description":"<td>A JSON-serialized object for the new checklist</td>",
"rst_description":"A JSON-serialized object for the new checklist\n",
"name":"checklist"
},
{
"type":"InlineKeyboardMarkup",
"required":false,
"description":"A JSON-serialized object for the new inline keyboard for the message",
"html_description":"<td>A JSON-serialized object for the new <a href=\"/bots/features#inline-keyboards\">inline keyboard</a> for the message</td>",
"rst_description":"A JSON-serialized object for the new `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_ for the message\n",
"html_description":"<p>Use this method to edit live location messages. A location can be edited until its <em>live_period</em> expires or editing is explicitly disabled by a call to <a href=\"#stopmessagelivelocation\">stopMessageLiveLocation</a>. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned.</p>",
"rst_description":"Use this method to edit live location messages. A location can be edited until its *live_period* expires or editing is explicitly disabled by a call to :class:`aiogram.methods.stop_message_live_location.StopMessageLiveLocation`. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the message to be edited was sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message to be edited was sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message to be edited was sent\n",
"name":"business_connection_id"
},
{
"type":"Integer or String",
"required":false,
@ -38,7 +44,7 @@
"name":"inline_message_id"
},
{
"type":"Float number",
"type":"Float",
"required":true,
"description":"Latitude of new location",
"html_description":"<td>Latitude of new location</td>",
@ -46,7 +52,7 @@
"name":"latitude"
},
{
"type":"Float number",
"type":"Float",
"required":true,
"description":"Longitude of new location",
"html_description":"<td>Longitude of new location</td>",
@ -54,7 +60,15 @@
"name":"longitude"
},
{
"type":"Float number",
"type":"Integer",
"required":false,
"description":"New period in seconds during which the location can be updated, starting from the message send date. If 0x7FFFFFFF is specified, then the location can be updated forever. Otherwise, the new value must not exceed the current live_period by more than a day, and the live location expiration date must remain within the next 90 days. If not specified, then live_period remains unchanged",
"html_description":"<td>New period in seconds during which the location can be updated, starting from the message send date. If 0x7FFFFFFF is specified, then the location can be updated forever. Otherwise, the new value must not exceed the current <em>live_period</em> by more than a day, and the live location expiration date must remain within the next 90 days. If not specified, then <em>live_period</em> remains unchanged</td>",
"rst_description":"New period in seconds during which the location can be updated, starting from the message send date. If 0x7FFFFFFF is specified, then the location can be updated forever. Otherwise, the new value must not exceed the current *live_period* by more than a day, and the live location expiration date must remain within the next 90 days. If not specified, then *live_period* remains unchanged\n",
"name":"live_period"
},
{
"type":"Float",
"required":false,
"description":"The radius of uncertainty for the location, measured in meters; 0-1500",
"html_description":"<td>The radius of uncertainty for the location, measured in meters; 0-1500</td>",
"description":"Use this method to edit animation, audio, document, photo, or video messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.",
"html_description":"<p>Use this method to edit animation, audio, document, photo, or video messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned.</p>",
"rst_description":"Use this method to edit animation, audio, document, photo, or video messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned.",
"description":"Use this method to edit animation, audio, document, photo, or video messages, or to add media to text messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within 48 hours from the time they were sent.",
"html_description":"<p>Use this method to edit animation, audio, document, photo, or video messages, or to add media to text messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within <strong>48 hours</strong> from the time they were sent.</p>",
"rst_description":"Use this method to edit animation, audio, document, photo, or video messages, or to add media to text messages. If a message is part of a message album, then it can be edited only to an audio for audio albums, only to a document for document albums and to a photo or a video otherwise. When an inline message is edited, a new file can't be uploaded; use a previously uploaded file via its file_id or specify a URL. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within **48 hours** from the time they were sent.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the message to be edited was sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message to be edited was sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message to be edited was sent\n",
"description":"Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.",
"html_description":"<p>Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned.</p>",
"rst_description":"Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned.",
"description":"Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within 48 hours from the time they were sent.",
"html_description":"<p>Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within <strong>48 hours</strong> from the time they were sent.</p>",
"rst_description":"Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within **48 hours** from the time they were sent.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the message to be edited was sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message to be edited was sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message to be edited was sent\n",
"description":"Use this method to edit text and game messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.",
"html_description":"<p>Use this method to edit text and <a href=\"#games\">game</a> messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned.</p>",
"rst_description":"Use this method to edit text and `game <https://core.telegram.org/bots/api#games>`_ messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned.",
"description":"Use this method to edit text and game messages. On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within 48 hours from the time they were sent.",
"html_description":"<p>Use this method to edit text and <a href=\"#games\">game</a> messages. On success, if the edited message is not an inline message, the edited <a href=\"#message\">Message</a> is returned, otherwise <em>True</em> is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within <strong>48 hours</strong> from the time they were sent.</p>",
"rst_description":"Use this method to edit text and `game <https://core.telegram.org/bots/api#games>`_ messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned. Note that business messages that were not sent by the bot and do not contain an inline keyboard can only be edited within **48 hours** from the time they were sent.",
"annotations":[
{
"type":"String",
"required":false,
"description":"Unique identifier of the business connection on behalf of which the message to be edited was sent",
"html_description":"<td>Unique identifier of the business connection on behalf of which the message to be edited was sent</td>",
"rst_description":"Unique identifier of the business connection on behalf of which the message to be edited was sent\n",
"name":"business_connection_id"
},
{
"type":"Integer or String",
"required":false,
@ -62,12 +68,12 @@
"name":"entities"
},
{
"type":"Boolean",
"type":"LinkPreviewOptions",
"required":false,
"description":"Disables link previews for links in this message",
"html_description":"<td>Disables link previews for links in this message</td>",
"rst_description":"Disables link previews for links in this message\n",
"name":"disable_web_page_preview"
"description":"Link preview generation options for the message",
"html_description":"<td>Link preview generation options for the message</td>",
"rst_description":"Link preview generation options for the message\n",
"name":"link_preview_options"
},
{
"type":"InlineKeyboardMarkup",
@ -76,6 +82,18 @@
"html_description":"<td>A JSON-serialized object for an <a href=\"/bots/features#inline-keyboards\">inline keyboard</a>.</td>",
"rst_description":"A JSON-serialized object for an `inline keyboard <https://core.telegram.org/bots/features#inline-keyboards>`_.\n",
"name":"reply_markup"
},
{
"type":"Boolean",
"required":false,
"description":"Disables link previews for links in this message",
"html_description":"<td>Disables link previews for links in this message</td>",
"rst_description":"Disables link previews for links in this message\n",
"description":"Edits a story previously posted by the bot on behalf of a managed business account. Requires the can_manage_stories business bot right. Returns Story on success.",
"html_description":"<p>Edits a story previously posted by the bot on behalf of a managed business account. Requires the <em>can_manage_stories</em> business bot right. Returns <a href=\"#story\">Story</a> on success.</p>",
"rst_description":"Edits a story previously posted by the bot on behalf of a managed business account. Requires the *can_manage_stories* business bot right. Returns :class:`aiogram.types.story.Story` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"name":"business_connection_id"
},
{
"type":"Integer",
"required":true,
"description":"Unique identifier of the story to edit",
"html_description":"<td>Unique identifier of the story to edit</td>",
"rst_description":"Unique identifier of the story to edit\n",
"name":"story_id"
},
{
"type":"InputStoryContent",
"required":true,
"description":"Content of the story",
"html_description":"<td>Content of the story</td>",
"rst_description":"Content of the story\n",
"name":"content"
},
{
"type":"String",
"required":false,
"description":"Caption of the story, 0-2048 characters after entities parsing",
"html_description":"<td>Caption of the story, 0-2048 characters after entities parsing</td>",
"rst_description":"Caption of the story, 0-2048 characters after entities parsing\n",
"name":"caption"
},
{
"type":"String",
"required":false,
"description":"Mode for parsing entities in the story caption. See formatting options for more details.",
"html_description":"<td>Mode for parsing entities in the story caption. See <a href=\"#formatting-options\">formatting options</a> for more details.</td>",
"rst_description":"Mode for parsing entities in the story caption. See `formatting options <https://core.telegram.org/bots/api#formatting-options>`_ for more details.\n",
"name":"parse_mode"
},
{
"type":"Array of MessageEntity",
"required":false,
"description":"A JSON-serialized list of special entities that appear in the caption, which can be specified instead of parse_mode",
"html_description":"<td>A JSON-serialized list of special entities that appear in the caption, which can be specified instead of <em>parse_mode</em></td>",
"rst_description":"A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*\n",
"name":"caption_entities"
},
{
"type":"Array of StoryArea",
"required":false,
"description":"A JSON-serialized list of clickable areas to be shown on the story",
"html_description":"<td>A JSON-serialized list of clickable areas to be shown on the story</td>",
"rst_description":"A JSON-serialized list of clickable areas to be shown on the story\n",
"description":"Allows the bot to cancel or re-enable extension of a subscription paid in Telegram Stars. Returns True on success.",
"html_description":"<p>Allows the bot to cancel or re-enable extension of a subscription paid in Telegram Stars. Returns <em>True</em> on success.</p>",
"rst_description":"Allows the bot to cancel or re-enable extension of a subscription paid in Telegram Stars. Returns :code:`True` on success.",
"annotations":[
{
"type":"Integer",
"required":true,
"description":"Identifier of the user whose subscription will be edited",
"html_description":"<td>Identifier of the user whose subscription will be edited</td>",
"rst_description":"Identifier of the user whose subscription will be edited\n",
"name":"user_id"
},
{
"type":"String",
"required":true,
"description":"Telegram payment identifier for the subscription",
"html_description":"<td>Telegram payment identifier for the subscription</td>",
"rst_description":"Telegram payment identifier for the subscription\n",
"name":"telegram_payment_charge_id"
},
{
"type":"Boolean",
"required":true,
"description":"Pass True to cancel extension of the user subscription; the subscription must be active up to the end of the current subscription period. Pass False to allow the user to re-enable a subscription that was previously canceled by the bot.",
"html_description":"<td>Pass <em>True</em> to cancel extension of the user subscription; the subscription must be active up to the end of the current subscription period. Pass <em>False</em> to allow the user to re-enable a subscription that was previously canceled by the bot.</td>",
"rst_description":"Pass :code:`True` to cancel extension of the user subscription; the subscription must be active up to the end of the current subscription period. Pass :code:`False` to allow the user to re-enable a subscription that was previously canceled by the bot.\n",
"description":"Use this method to forward messages of any kind. Service messages can't be forwarded. On success, the sent Message is returned.",
"html_description":"<p>Use this method to forward messages of any kind. Service messages can't be forwarded. On success, the sent <a href=\"#message\">Message</a> is returned.</p>",
"rst_description":"Use this method to forward messages of any kind. Service messages can't be forwarded. On success, the sent :class:`aiogram.types.message.Message` is returned.",
"description":"Use this method to forward messages of any kind. Service messages and messages with protected content can't be forwarded. On success, the sent Message is returned.",
"html_description":"<p>Use this method to forward messages of any kind. Service messages and messages with protected content can't be forwarded. On success, the sent <a href=\"#message\">Message</a> is returned.</p>",
"rst_description":"Use this method to forward messages of any kind. Service messages and messages with protected content can't be forwarded. On success, the sent :class:`aiogram.types.message.Message` is returned.",
"annotations":[
{
"type":"Integer or String",
@ -24,11 +22,19 @@
{
"type":"Integer",
"required":false,
"description":"Unique identifier for the target message thread (topic) of the forum; for forum supergroups only",
"html_description":"<td>Unique identifier for the target message thread (topic) of the forum; for forum supergroups only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of the forum; for forum supergroups only\n",
"description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only",
"html_description":"<td>Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only\n",
"name":"message_thread_id"
},
{
"type":"Integer",
"required":false,
"description":"Identifier of the direct messages topic to which the message will be forwarded; required if the message is forwarded to a direct messages chat",
"html_description":"<td>Identifier of the direct messages topic to which the message will be forwarded; required if the message is forwarded to a direct messages chat</td>",
"rst_description":"Identifier of the direct messages topic to which the message will be forwarded; required if the message is forwarded to a direct messages chat\n",
"name":"direct_messages_topic_id"
},
{
"type":"Integer or String",
"required":true,
@ -37,6 +43,14 @@
"rst_description":"Unique identifier for the chat where the original message was sent (or channel username in the format :code:`@channelusername`)\n",
"name":"from_chat_id"
},
{
"type":"Integer",
"required":false,
"description":"New start timestamp for the forwarded video in the message",
"html_description":"<td>New start timestamp for the forwarded video in the message</td>",
"rst_description":"New start timestamp for the forwarded video in the message\n",
"name":"video_start_timestamp"
},
{
"type":"Boolean",
"required":false,
@ -53,6 +67,22 @@
"rst_description":"Protects the contents of the forwarded message from forwarding and saving\n",
"name":"protect_content"
},
{
"type":"String",
"required":false,
"description":"Unique identifier of the message effect to be added to the message; only available when forwarding to private chats",
"html_description":"<td>Unique identifier of the message effect to be added to the message; only available when forwarding to private chats</td>",
"rst_description":"Unique identifier of the message effect to be added to the message; only available when forwarding to private chats\n",
"name":"message_effect_id"
},
{
"type":"SuggestedPostParameters",
"required":false,
"description":"A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only",
"html_description":"<td>A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only</td>",
"rst_description":"A JSON-serialized object containing the parameters of the suggested post to send; for direct messages chats only\n",
"description":"Use this method to forward multiple messages of any kind. If some of the specified messages can't be found or forwarded, they are skipped. Service messages and messages with protected content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array of MessageId of the sent messages is returned.",
"html_description":"<p>Use this method to forward multiple messages of any kind. If some of the specified messages can't be found or forwarded, they are skipped. Service messages and messages with protected content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array of <a href=\"#messageid\">MessageId</a> of the sent messages is returned.</p>",
"rst_description":"Use this method to forward multiple messages of any kind. If some of the specified messages can't be found or forwarded, they are skipped. Service messages and messages with protected content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array of :class:`aiogram.types.message_id.MessageId` of the sent messages is returned.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"Integer",
"required":false,
"description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only",
"html_description":"<td>Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only</td>",
"rst_description":"Unique identifier for the target message thread (topic) of a forum; for forum supergroups and private chats of bots with forum topic mode enabled only\n",
"name":"message_thread_id"
},
{
"type":"Integer",
"required":false,
"description":"Identifier of the direct messages topic to which the messages will be forwarded; required if the messages are forwarded to a direct messages chat",
"html_description":"<td>Identifier of the direct messages topic to which the messages will be forwarded; required if the messages are forwarded to a direct messages chat</td>",
"rst_description":"Identifier of the direct messages topic to which the messages will be forwarded; required if the messages are forwarded to a direct messages chat\n",
"name":"direct_messages_topic_id"
},
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the chat where the original messages were sent (or channel username in the format @channelusername)",
"html_description":"<td>Unique identifier for the chat where the original messages were sent (or channel username in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the chat where the original messages were sent (or channel username in the format :code:`@channelusername`)\n",
"name":"from_chat_id"
},
{
"type":"Array of Integer",
"required":true,
"description":"A JSON-serialized list of 1-100 identifiers of messages in the chat from_chat_id to forward. The identifiers must be specified in a strictly increasing order.",
"html_description":"<td>A JSON-serialized list of 1-100 identifiers of messages in the chat <em>from_chat_id</em> to forward. The identifiers must be specified in a strictly increasing order.</td>",
"rst_description":"A JSON-serialized list of 1-100 identifiers of messages in the chat *from_chat_id* to forward. The identifiers must be specified in a strictly increasing order.\n",
"name":"message_ids"
},
{
"type":"Boolean",
"required":false,
"description":"Sends the messages silently. Users will receive a notification with no sound.",
"html_description":"<td>Sends the messages <a href=\"https://telegram.org/blog/channels-2-0#silent-messages\">silently</a>. Users will receive a notification with no sound.</td>",
"rst_description":"Sends the messages `silently <https://telegram.org/blog/channels-2-0#silent-messages>`_. Users will receive a notification with no sound.\n",
"name":"disable_notification"
},
{
"type":"Boolean",
"required":false,
"description":"Protects the contents of the forwarded messages from forwarding and saving",
"html_description":"<td>Protects the contents of the forwarded messages from forwarding and saving</td>",
"rst_description":"Protects the contents of the forwarded messages from forwarding and saving\n",
"description":"Returns the list of gifts that can be sent by the bot to users and channel chats. Requires no parameters. Returns a Gifts object.",
"html_description":"<p>Returns the list of gifts that can be sent by the bot to users and channel chats. Requires no parameters. Returns a <a href=\"#gifts\">Gifts</a> object.</p>",
"rst_description":"Returns the list of gifts that can be sent by the bot to users and channel chats. Requires no parameters. Returns a :class:`aiogram.types.gifts.Gifts` object.",
"description":"Returns the gifts received and owned by a managed business account. Requires the can_view_gifts_and_stars business bot right. Returns OwnedGifts on success.",
"html_description":"<p>Returns the gifts received and owned by a managed business account. Requires the <em>can_view_gifts_and_stars</em> business bot right. Returns <a href=\"#ownedgifts\">OwnedGifts</a> on success.</p>",
"rst_description":"Returns the gifts received and owned by a managed business account. Requires the *can_view_gifts_and_stars* business bot right. Returns :class:`aiogram.types.owned_gifts.OwnedGifts` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"name":"business_connection_id"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that aren't saved to the account's profile page",
"html_description":"<td>Pass <em>True</em> to exclude gifts that aren't saved to the account's profile page</td>",
"rst_description":"Pass :code:`True` to exclude gifts that aren't saved to the account's profile page\n",
"name":"exclude_unsaved"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that are saved to the account's profile page",
"html_description":"<td>Pass <em>True</em> to exclude gifts that are saved to the account's profile page</td>",
"rst_description":"Pass :code:`True` to exclude gifts that are saved to the account's profile page\n",
"name":"exclude_saved"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased an unlimited number of times",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased an unlimited number of times</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased an unlimited number of times\n",
"name":"exclude_unlimited"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased a limited number of times and can be upgraded to unique",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased a limited number of times and can be upgraded to unique</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased a limited number of times and can be upgraded to unique\n",
"name":"exclude_limited_upgradable"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique\n",
"name":"exclude_limited_non_upgradable"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude unique gifts",
"html_description":"<td>Pass <em>True</em> to exclude unique gifts</td>",
"rst_description":"Pass :code:`True` to exclude unique gifts\n",
"name":"exclude_unique"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram",
"html_description":"<td>Pass <em>True</em> to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram</td>",
"rst_description":"Pass :code:`True` to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram\n",
"name":"exclude_from_blockchain"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to sort results by gift price instead of send date. Sorting is applied before pagination.",
"html_description":"<td>Pass <em>True</em> to sort results by gift price instead of send date. Sorting is applied before pagination.</td>",
"rst_description":"Pass :code:`True` to sort results by gift price instead of send date. Sorting is applied before pagination.\n",
"name":"sort_by_price"
},
{
"type":"String",
"required":false,
"description":"Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results",
"html_description":"<td>Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results</td>",
"rst_description":"Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n",
"name":"offset"
},
{
"type":"Integer",
"required":false,
"description":"The maximum number of gifts to be returned; 1-100. Defaults to 100",
"html_description":"<td>The maximum number of gifts to be returned; 1-100. Defaults to 100</td>",
"rst_description":"The maximum number of gifts to be returned; 1-100. Defaults to 100\n",
"name":"limit"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased a limited number of times",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased a limited number of times</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased a limited number of times\n",
"description":"Returns the amount of Telegram Stars owned by a managed business account. Requires the can_view_gifts_and_stars business bot right. Returns StarAmount on success.",
"html_description":"<p>Returns the amount of Telegram Stars owned by a managed business account. Requires the <em>can_view_gifts_and_stars</em> business bot right. Returns <a href=\"#staramount\">StarAmount</a> on success.</p>",
"rst_description":"Returns the amount of Telegram Stars owned by a managed business account. Requires the *can_view_gifts_and_stars* business bot right. Returns :class:`aiogram.types.star_amount.StarAmount` on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"description":"Use this method to get information about the connection of the bot with a business account. Returns a BusinessConnection object on success.",
"html_description":"<p>Use this method to get information about the connection of the bot with a business account. Returns a <a href=\"#businessconnection\">BusinessConnection</a> object on success.</p>",
"rst_description":"Use this method to get information about the connection of the bot with a business account. Returns a :class:`aiogram.types.business_connection.BusinessConnection` object on success.",
"annotations":[
{
"type":"String",
"required":true,
"description":"Unique identifier of the business connection",
"html_description":"<td>Unique identifier of the business connection</td>",
"rst_description":"Unique identifier of the business connection\n",
"description":"Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). Returns a Chat object on success.",
"html_description":"<p>Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). Returns a <a href=\"#chat\">Chat</a> object on success.</p>",
"rst_description":"Use this method to get up to date information about the chat (current name of the user for one-on-one conversations, current username of a user, group or channel, etc.). Returns a :class:`aiogram.types.chat.Chat` object on success.",
"description":"Use this method to get up-to-date information about the chat. Returns a ChatFullInfo object on success.",
"html_description":"<p>Use this method to get up-to-date information about the chat. Returns a <a href=\"#chatfullinfo\">ChatFullInfo</a> object on success.</p>",
"rst_description":"Use this method to get up-to-date information about the chat. Returns a :class:`aiogram.types.chat_full_info.ChatFullInfo` object on success.",
"description":"Returns the gifts owned by a chat. Returns OwnedGifts on success.",
"html_description":"<p>Returns the gifts owned by a chat. Returns <a href=\"#ownedgifts\">OwnedGifts</a> on success.</p>",
"rst_description":"Returns the gifts owned by a chat. Returns :class:`aiogram.types.owned_gifts.OwnedGifts` on success.",
"annotations":[
{
"type":"Integer or String",
"required":true,
"description":"Unique identifier for the target chat or username of the target channel (in the format @channelusername)",
"html_description":"<td>Unique identifier for the target chat or username of the target channel (in the format <code>@channelusername</code>)</td>",
"rst_description":"Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)\n",
"name":"chat_id"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that aren't saved to the chat's profile page. Always True, unless the bot has the can_post_messages administrator right in the channel.",
"html_description":"<td>Pass <em>True</em> to exclude gifts that aren't saved to the chat's profile page. Always <em>True</em>, unless the bot has the <em>can_post_messages</em> administrator right in the channel.</td>",
"rst_description":"Pass :code:`True` to exclude gifts that aren't saved to the chat's profile page. Always :code:`True`, unless the bot has the *can_post_messages* administrator right in the channel.\n",
"name":"exclude_unsaved"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that are saved to the chat's profile page. Always False, unless the bot has the can_post_messages administrator right in the channel.",
"html_description":"<td>Pass <em>True</em> to exclude gifts that are saved to the chat's profile page. Always <em>False</em>, unless the bot has the <em>can_post_messages</em> administrator right in the channel.</td>",
"rst_description":"Pass :code:`True` to exclude gifts that are saved to the chat's profile page. Always :code:`False`, unless the bot has the *can_post_messages* administrator right in the channel.\n",
"name":"exclude_saved"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased an unlimited number of times",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased an unlimited number of times</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased an unlimited number of times\n",
"name":"exclude_unlimited"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased a limited number of times and can be upgraded to unique",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased a limited number of times and can be upgraded to unique</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased a limited number of times and can be upgraded to unique\n",
"name":"exclude_limited_upgradable"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique",
"html_description":"<td>Pass <em>True</em> to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique</td>",
"rst_description":"Pass :code:`True` to exclude gifts that can be purchased a limited number of times and can't be upgraded to unique\n",
"name":"exclude_limited_non_upgradable"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram",
"html_description":"<td>Pass <em>True</em> to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram</td>",
"rst_description":"Pass :code:`True` to exclude gifts that were assigned from the TON blockchain and can't be resold or transferred in Telegram\n",
"name":"exclude_from_blockchain"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to exclude unique gifts",
"html_description":"<td>Pass <em>True</em> to exclude unique gifts</td>",
"rst_description":"Pass :code:`True` to exclude unique gifts\n",
"name":"exclude_unique"
},
{
"type":"Boolean",
"required":false,
"description":"Pass True to sort results by gift price instead of send date. Sorting is applied before pagination.",
"html_description":"<td>Pass <em>True</em> to sort results by gift price instead of send date. Sorting is applied before pagination.</td>",
"rst_description":"Pass :code:`True` to sort results by gift price instead of send date. Sorting is applied before pagination.\n",
"name":"sort_by_price"
},
{
"type":"String",
"required":false,
"description":"Offset of the first entry to return as received from the previous request; use an empty string to get the first chunk of results",
"html_description":"<td>Offset of the first entry to return as received from the previous request; use an empty string to get the first chunk of results</td>",
"rst_description":"Offset of the first entry to return as received from the previous request; use an empty string to get the first chunk of results\n",
"name":"offset"
},
{
"type":"Integer",
"required":false,
"description":"The maximum number of gifts to be returned; 1-100. Defaults to 100",
"html_description":"<td>The maximum number of gifts to be returned; 1-100. Defaults to 100</td>",
"rst_description":"The maximum number of gifts to be returned; 1-100. Defaults to 100\n",
"description":"Use this method to get the current bot description for the given user language. Returns BotDescription on success.",
"html_description":"<p>Use this method to get the current bot description for the given user language. Returns <a href=\"#botdescription\">BotDescription</a> on success.</p>",
"rst_description":"Use this method to get the current bot description for the given user language. Returns :class:`aiogram.types.bot_description.BotDescription` on success.",
"annotations":[
{
"type":"String",
"required":false,
"description":"A two-letter ISO 639-1 language code or an empty string",
"html_description":"<td>A two-letter ISO 639-1 language code or an empty string</td>",
"rst_description":"A two-letter ISO 639-1 language code or an empty string\n",
"description":"Use this method to get the current bot name for the given user language. Returns BotName on success.",
"html_description":"<p>Use this method to get the current bot name for the given user language. Returns <a href=\"#botname\">BotName</a> on success.</p>",
"rst_description":"Use this method to get the current bot name for the given user language. Returns :class:`aiogram.types.bot_name.BotName` on success.",
"annotations":[
{
"type":"String",
"required":false,
"description":"A two-letter ISO 639-1 language code or an empty string",
"html_description":"<td>A two-letter ISO 639-1 language code or an empty string</td>",
"rst_description":"A two-letter ISO 639-1 language code or an empty string\n",
"name":"language_code"
}
],
"category":"methods"
}
}
Some files were not shown because too many files have changed in this diff
Show more