mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2026-06-22 09:05:21 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 171953f109 | |||
| 606773d8f0 | |||
| f408b1a2dd | |||
| 3e7ab7e7af | |||
| 456b81d22a | |||
| cb90814829 | |||
| 7b61a30fb1 | |||
| f3a9b74445 | |||
| d996e8f9c9 | |||
| 0a6725852f | |||
| b8fbb89fae | |||
| f3650364b9 | |||
| 5b629ede56 |
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ${{matrix.os}}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.7]
|
||||
python-version: [3.9]
|
||||
os: [ubuntu-latest]
|
||||
fail-fast: False
|
||||
steps:
|
||||
|
||||
@@ -5,7 +5,7 @@ on:
|
||||
- master
|
||||
- doc-fixes
|
||||
push:
|
||||
branches:
|
||||
branches:
|
||||
- master
|
||||
- doc-fixes
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
runs-on: ${{matrix.os}}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.7]
|
||||
python-version: [3.9]
|
||||
os: [ubuntu-latest]
|
||||
fail-fast: False
|
||||
steps:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -74,6 +74,7 @@ The following wonderful people contributed directly or indirectly to this projec
|
||||
- `LRezende <https://github.com/lrezende>`_
|
||||
- `macrojames <https://github.com/macrojames>`_
|
||||
- `Matheus Lemos <https://github.com/mlemosf>`_
|
||||
- `Michael Dix <https://github.com/Eisberge>`_
|
||||
- `Michael Elovskikh <https://github.com/wronglink>`_
|
||||
- `miles <https://github.com/miles170>`_
|
||||
- `Mischa Krüger <https://github.com/Makman2>`_
|
||||
|
||||
+50
-1
@@ -1,6 +1,55 @@
|
||||
=========
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Version 20.0
|
||||
============
|
||||
*Released 2023-01-01*
|
||||
|
||||
This is the technical changelog for version 20.0. More elaborate release notes can be found in the news channel `@pythontelegrambotchannel <https://t.me/pythontelegrambotchannel>`_.
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Full Support For Bot API 6.4 (`#3449`_)
|
||||
|
||||
Minor Changes, Documentation Improvements and CI
|
||||
------------------------------------------------
|
||||
|
||||
- Documentation Improvements (`#3428`_, `#3423`_, `#3429`_, `#3441`_, `#3404`_, `#3443`_)
|
||||
- Allow ``Sequence`` Input for Bot Methods (`#3412`_)
|
||||
- Update Link-Check CI and Replace a Dead Link (`#3456`_)
|
||||
- Freeze Classes Without Arguments (`#3453`_)
|
||||
- Add New Constants (`#3444`_)
|
||||
- Override ``Bot.__deepcopy__`` to Raise ``TypeError`` (`#3446`_)
|
||||
- Add Log Decorator to ``Bot.get_webhook_info`` (`#3442`_)
|
||||
- Add Documentation On Verifying Releases (`#3436`_)
|
||||
- Drop Undocumented ``Job.__lt__`` (`#3432`_)
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
- Downgrade ``sphinx`` to 5.3.0 to Fix Search (`#3457`_)
|
||||
- Bump ``sphinx`` from 5.3.0 to 6.0.0 (`#3450`_)
|
||||
|
||||
.. _`#3449`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3449
|
||||
.. _`#3428`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3428
|
||||
.. _`#3423`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3423
|
||||
.. _`#3429`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3429
|
||||
.. _`#3441`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3441
|
||||
.. _`#3404`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3404
|
||||
.. _`#3443`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3443
|
||||
.. _`#3412`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3412
|
||||
.. _`#3456`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3456
|
||||
.. _`#3453`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3453
|
||||
.. _`#3444`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3444
|
||||
.. _`#3446`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3446
|
||||
.. _`#3442`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3442
|
||||
.. _`#3436`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3436
|
||||
.. _`#3432`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3432
|
||||
.. _`#3457`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3457
|
||||
.. _`#3450`: https://github.com/python-telegram-bot/python-telegram-bot/pull/3450
|
||||
|
||||
Version 20.0b0
|
||||
==============
|
||||
*Released 2022-12-15*
|
||||
@@ -10,7 +59,7 @@ This is the technical changelog for version 20.0b0. More elaborate release notes
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Make `TelegramObject` Immutable (`#3249`_)
|
||||
- Make ``TelegramObject`` Immutable (`#3249`_)
|
||||
|
||||
Minor Changes, Documentation Improvements and CI
|
||||
------------------------------------------------
|
||||
|
||||
+17
-5
@@ -14,7 +14,7 @@
|
||||
:target: https://pypi.org/project/python-telegram-bot/
|
||||
:alt: Supported Python versions
|
||||
|
||||
.. image:: https://img.shields.io/badge/Bot%20API-6.3-blue?logo=telegram
|
||||
.. image:: https://img.shields.io/badge/Bot%20API-6.4-blue?logo=telegram
|
||||
:target: https://core.telegram.org/bots/api-changelog
|
||||
:alt: Supported Bot API versions
|
||||
|
||||
@@ -93,7 +93,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju
|
||||
Telegram API support
|
||||
====================
|
||||
|
||||
All types and methods of the Telegram Bot API **6.2** are supported.
|
||||
All types and methods of the Telegram Bot API **6.4** are supported.
|
||||
|
||||
Installing
|
||||
==========
|
||||
@@ -114,6 +114,18 @@ You can also install ``python-telegram-bot`` from source, though this is usually
|
||||
$ cd python-telegram-bot
|
||||
$ python setup.py install
|
||||
|
||||
Verifying Releases
|
||||
------------------
|
||||
|
||||
We sign all the releases with a GPG key.
|
||||
The signatures are uploaded to both the `GitHub releases page <https://github.com/python-telegram-bot/python-telegram-bot/releases>`_ and the `PyPI project <https://pypi.org/project/python-telegram-bot/>`_ and end with a suffix ``.asc``.
|
||||
Please find the public keys `here <https://github.com/python-telegram-bot/python-telegram-bot/tree/master/public_keys>`_.
|
||||
The keys are named in the format ``<first_version>-<last_version>.gpg`` or ``<first_version>-current.gpg`` if the key is currently being used for new releases.
|
||||
|
||||
In addition, the GitHub release page also contains the sha1 hashes of the release files in the files with the suffix ``.sha1``.
|
||||
|
||||
This allows you to verify that a release file that you downloaded was indeed provided by the ``python-telegram-bot`` team.
|
||||
|
||||
Dependencies & Their Versions
|
||||
-----------------------------
|
||||
|
||||
@@ -136,9 +148,9 @@ Optional Dependencies
|
||||
PTB can be installed with optional dependencies:
|
||||
|
||||
* ``pip install python-telegram-bot[passport]`` installs the `cryptography>=3.0 <https://cryptography.io/en/stable>`_ library. Use this, if you want to use Telegram Passport related functionality.
|
||||
* ``pip install python-telegram-bot[socks]`` installs ``httpx[socks]``. Use this, if you want to work behind a Socks5 server.
|
||||
* ``pip install python-telegram-bot[rate-limiter]`` installs ``aiolimiter~=1.0.0``. Use this, if you want to use ``telegram.ext.AIORateLimiter``.
|
||||
* ``pip install python-telegram-bot[webhooks]`` installs the `tornado~=6.2 <https://www.tornadoweb.org/en/stable/>`_ library. Use this, if you want to use ``telegram.ext.Updater.start_webhook``/``telegram.ext.Application.start_webhook``.
|
||||
* ``pip install python-telegram-bot[socks]`` installs `httpx[socks] <https://www.python-httpx.org/#dependencies>`_. Use this, if you want to work behind a Socks5 server.
|
||||
* ``pip install python-telegram-bot[rate-limiter]`` installs `aiolimiter~=1.0.0 <https://aiolimiter.readthedocs.io/en/stable/>`_. Use this, if you want to use ``telegram.ext.AIORateLimiter``.
|
||||
* ``pip install python-telegram-bot[webhooks]`` installs the `tornado~=6.2 <https://www.tornadoweb.org/en/stable/>`_ library. Use this, if you want to use ``telegram.ext.Updater.start_webhook``/``telegram.ext.Application.run_webhook``.
|
||||
* ``pip install python-telegram-bot[callback-data]`` installs the `cachetools~=5.2.0 <https://cachetools.readthedocs.io/en/latest/>`_ library. Use this, if you want to use `arbitrary callback_data <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Arbitrary-callback_data>`_.
|
||||
* ``pip install python-telegram-bot[job-queue]`` installs the `APScheduler~=3.9.1 <https://apscheduler.readthedocs.io/en/3.x/>`_ library and enforces `pytz>=2018.6 <https://pypi.org/project/pytz/>`_, where ``pytz`` is a dependency of ``APScheduler``. Use this, if you want to use the ``telegram.ext.JobQueue``.
|
||||
|
||||
|
||||
+16
-4
@@ -14,7 +14,7 @@
|
||||
:target: https://pypi.org/project/python-telegram-bot-raw/
|
||||
:alt: Supported Python versions
|
||||
|
||||
.. image:: https://img.shields.io/badge/Bot%20API-6.3-blue?logo=telegram
|
||||
.. image:: https://img.shields.io/badge/Bot%20API-6.4-blue?logo=telegram
|
||||
:target: https://core.telegram.org/bots/api-changelog
|
||||
:alt: Supported Bot API versions
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
:target: https://github.com/python-telegram-bot/python-telegram-bot/
|
||||
:alt: Github Actions workflow
|
||||
|
||||
.. image:: https://app.codecov.io/gh/python-telegram-bot/python-telegram-bot
|
||||
.. image:: https://codecov.io/gh/python-telegram-bot/python-telegram-bot/branch/master/graph/badge.svg
|
||||
:target: https://app.codecov.io/gh/python-telegram-bot/python-telegram-bot
|
||||
:alt: Code coverage
|
||||
|
||||
@@ -89,7 +89,7 @@ Installing both ``python-telegram-bot`` and ``python-telegram-bot-raw`` in conju
|
||||
Telegram API support
|
||||
====================
|
||||
|
||||
All types and methods of the Telegram Bot API **6.2** are supported.
|
||||
All types and methods of the Telegram Bot API **6.4** are supported.
|
||||
|
||||
Installing
|
||||
==========
|
||||
@@ -115,6 +115,18 @@ Note
|
||||
|
||||
Installing the ``.tar.gz`` archive available on PyPi directly via ``pip`` will *not* work as expected, as ``pip`` does not recognize that it should use ``setup-raw.py`` instead of ``setup.py``.
|
||||
|
||||
Verifying Releases
|
||||
------------------
|
||||
|
||||
We sign all the releases with a GPG key.
|
||||
The signatures are uploaded to both the `GitHub releases page <https://github.com/python-telegram-bot/python-telegram-bot/releases>`_ and the `PyPI project <https://pypi.org/project/python-telegram-bot/>`_ and end with a suffix ``.asc``.
|
||||
Please find the public keys `here <https://github.com/python-telegram-bot/python-telegram-bot/tree/master/public_keys>`_.
|
||||
The keys are named in the format ``<first_version>-<last_version>.gpg`` or ``<first_version>-current.gpg`` if the key is currently being used for new releases.
|
||||
|
||||
In addition, the GitHub release page also contains the sha1 hashes of the release files in the files with the suffix ``.sha1``.
|
||||
|
||||
This allows you to verify that a release file that you downloaded was indeed provided by the ``python-telegram-bot`` team.
|
||||
|
||||
Dependencies & Their Versions
|
||||
-----------------------------
|
||||
|
||||
@@ -137,7 +149,7 @@ Optional Dependencies
|
||||
PTB can be installed with optional dependencies:
|
||||
|
||||
* ``pip install python-telegram-bot-raw[passport]`` installs the `cryptography>=3.0 <https://cryptography.io/en/stable>`_ library. Use this, if you want to use Telegram Passport related functionality.
|
||||
* ``pip install python-telegram-bot-raw[socks]`` installs ``httpx[socks]``. Use this, if you want to work behind a Socks5 server.
|
||||
* ``pip install python-telegram-bot-raw[socks]`` installs `httpx[socks] <https://www.python-httpx.org/#dependencies>`_. Use this, if you want to work behind a Socks5 server.
|
||||
|
||||
To install multiple optional dependencies, separate them by commas, e.g. ``pip install python-telegram-bot-raw[passport,socks]``.
|
||||
|
||||
|
||||
+6
-2
@@ -29,9 +29,9 @@ author = "Leandro Toledo"
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = "20.0b0" # telegram.__version__[:3]
|
||||
version = "20.0" # telegram.__version__[:3]
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = "20.0b0" # telegram.__version__
|
||||
release = "20.0" # telegram.__version__
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
needs_sphinx = "5.1.1"
|
||||
@@ -44,11 +44,15 @@ extensions = [
|
||||
"sphinx.ext.napoleon",
|
||||
"sphinx.ext.intersphinx",
|
||||
"sphinx.ext.linkcode",
|
||||
"sphinx.ext.extlinks",
|
||||
"sphinx_paramlinks",
|
||||
"sphinxcontrib.mermaid",
|
||||
"sphinx_search.extension",
|
||||
]
|
||||
|
||||
# For shorter links to Wiki in docstrings
|
||||
extlinks = {"wiki": ("https://github.com/python-telegram-bot/python-telegram-bot/wiki/%s", "%s")}
|
||||
|
||||
# Use intersphinx to reference the python builtin library docs
|
||||
intersphinx_mapping = {
|
||||
"python": ("https://docs.python.org/3", None),
|
||||
|
||||
@@ -267,16 +267,26 @@
|
||||
|
||||
* - :meth:`~telegram.Bot.close_forum_topic`
|
||||
- Used for closing a forum topic
|
||||
* - :meth:`~telegram.Bot.close_general_forum_topic`
|
||||
- Used for closing the general forum topic
|
||||
* - :meth:`~telegram.Bot.create_forum_topic`
|
||||
- Used to create a topic
|
||||
* - :meth:`~telegram.Bot.delete_forum_topic`
|
||||
- Used for deleting a forum topic
|
||||
* - :meth:`~telegram.Bot.edit_forum_topic`
|
||||
- Used to edit a topic
|
||||
* - :meth:`~telegram.Bot.reopen_forum_topic`
|
||||
- Used to reopen a topic
|
||||
* - :meth:`~telegram.Bot.edit_general_forum_topic`
|
||||
- Used to edit the general topic
|
||||
* - :meth:`~telegram.Bot.get_forum_topic_icon_stickers`
|
||||
- Used to get custom emojis to use as topic icons
|
||||
* - :meth:`~telegram.Bot.hide_general_forum_topic`
|
||||
- Used to hide the general topic
|
||||
* - :meth:`~telegram.Bot.unhide_general_forum_topic`
|
||||
- Used to unhide the general topic
|
||||
* - :meth:`~telegram.Bot.reopen_forum_topic`
|
||||
- Used to reopen a topic
|
||||
* - :meth:`~telegram.Bot.reopen_general_forum_topic`
|
||||
- Used to reopen the general topic
|
||||
* - :meth:`~telegram.Bot.unpin_all_forum_topic_messages`
|
||||
- Used to unpin all messages in a forum topic
|
||||
|
||||
|
||||
@@ -39,7 +39,10 @@ Available Types
|
||||
telegram.forumtopic
|
||||
telegram.forumtopicclosed
|
||||
telegram.forumtopiccreated
|
||||
telegram.forumtopicedited
|
||||
telegram.forumtopicreopened
|
||||
telegram.generalforumtopichidden
|
||||
telegram.generalforumtopicunhidden
|
||||
telegram.inlinekeyboardbutton
|
||||
telegram.inlinekeyboardmarkup
|
||||
telegram.inputfile
|
||||
@@ -84,4 +87,5 @@ Available Types
|
||||
telegram.webappdata
|
||||
telegram.webappinfo
|
||||
telegram.webhookinfo
|
||||
telegram.writeaccessallowed
|
||||
|
||||
|
||||
@@ -3,4 +3,5 @@ telegram.Bot
|
||||
|
||||
.. autoclass:: telegram.Bot
|
||||
:members:
|
||||
:show-inheritance:
|
||||
:show-inheritance:
|
||||
:special-members: __reduce__, __deepcopy__
|
||||
@@ -0,0 +1,6 @@
|
||||
telegram.ForumTopicEdited
|
||||
=========================
|
||||
|
||||
.. autoclass:: telegram.ForumTopicEdited
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -0,0 +1,6 @@
|
||||
telegram.GeneralForumTopicHidden
|
||||
================================
|
||||
|
||||
.. autoclass:: telegram.GeneralForumTopicHidden
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -0,0 +1,6 @@
|
||||
telegram.GeneralForumTopicUnhidden
|
||||
==================================
|
||||
|
||||
.. autoclass:: telegram.GeneralForumTopicUnhidden
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -0,0 +1,6 @@
|
||||
telegram.WriteAccessAllowed
|
||||
===========================
|
||||
|
||||
.. autoclass:: telegram.WriteAccessAllowed
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
.. |allow_sending_without_reply| replace:: Pass :obj:`True`, if the message should be sent even if the specified replied-to message is not found.
|
||||
|
||||
.. |caption_entities| replace:: List of special entities that appear in the caption, which can be specified instead of ``parse_mode``.
|
||||
.. |caption_entities| replace:: Sequence of special entities that appear in the caption, which can be specified instead of ``parse_mode``.
|
||||
|
||||
.. |protect_content| replace:: Protects the contents of the sent message from forwarding and saving.
|
||||
|
||||
@@ -42,8 +42,12 @@
|
||||
|
||||
.. |reply_to_msg_id| replace:: If the message is a reply, ID of the original message.
|
||||
|
||||
.. |sequenceclassargs| replace:: Accepts any :class:`collections.abc.Sequence` as input instead of just a list. The input is converted to a tuple.
|
||||
.. |sequenceclassargs| replace:: |sequenceargs| The input is converted to a tuple.
|
||||
|
||||
.. |tupleclassattrs| replace:: This attribute is now an immutable tuple.
|
||||
|
||||
.. |alwaystuple| replace:: This attribute is now always a tuple, that may be empty.
|
||||
|
||||
.. |sequenceargs| replace:: Accepts any :class:`collections.abc.Sequence` as input instead of just a list.
|
||||
|
||||
.. |captionentitiesattr| replace:: Tuple of special entities that appear in the caption, which can be specified instead of ``parse_mode``.
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBF6AWOIBEAClMRtGdbm2yKAo1GdeybmasMpsCBmGI952/z5VvjSgDlu+ktPJ
|
||||
QauWkARWrq4Eab2uZEIQrHUw01+9/Ugfu7qHu4safZjc177Tq4Fp0hJDHFRFVdqb
|
||||
68Rv5mH0xjr7At0eNys2Rx8m7H1dBYQCz4aroUQ0q0TB4qSeKU9FzUzOZZ7/pYri
|
||||
KFyNdaIjhrBeY/WXbn+7L2/cFJtafJHqkZlyfIgQzpmONfIrtJLnG0nxdBPIxg3m
|
||||
CYxzrJKCkPPrl8b4TNV0LCO9c4r8zXGiZ6ZOQMAGjgb2Do67AvHTLI3YYd8+iY25
|
||||
112noIFASabxbW9jBb+nlyMc8nz5kW19JWq6sBfMJYzWaVpI6ofNpiZtKWupIt2V
|
||||
4GcViZmE/Kh4hBQjrBIAeqLUz6ABidERrhWu6/wP3huNe+R6eMQTfEdYlYeD3LXG
|
||||
5Upl46/wnodWQeW4llMVBhjkS+5ExtvlVBD9Yz8iQMUsXUSu8+UPRgjy6YIRsvtF
|
||||
bzGKFXkn4tFWCyQsXJDf8f+lQCtB1XF/DN2IVZF9OjQOvrpRwJk3h3CiQboN5lf7
|
||||
Mj7I11MusPKzn34vg+3f6loOOQ++GUa+WH2B6Dx6AH3C0BI0V2sh6axu6HYJNo3o
|
||||
stOXzhhWysPKp9pj41fmaFTcF8bYYlnHoLA17IapttsYo0WuFaBF5UW90QARAQAB
|
||||
tCpIaW5yaWNoIE1haGxlciA8aGlucmljaC5tYWhsZXJAZnJlZW5ldC5kZT6JAk4E
|
||||
EwEKADgWIQRlW7T1bNsODkUAz1cung4SfvPygwUCXoBY4gIbAwULCQgHAgYVCgkI
|
||||
CwIEFgIDAQIeAQIXgAAKCRAung4SfvPyg3fXD/9IMuDgYGl+T98JvN/VHLcrA9rT
|
||||
idIWr5vDSxjniQaYe8Kc3oTqje1xmRcIR7z3WFKgxErx8yEf3AOUCPqQh53MjS0q
|
||||
rXNDCoRWqlljpeY2EHZh2xPSvin2pUgOd334BRFeBqyvIfb/IQmwUNDoUp1FxKEq
|
||||
4veT4XPDnKZlZs/OwRMD1f0v64mtTy60fQzJyM9ICLWzZdCKZULGTKCBLms63l0h
|
||||
wqznU6RA7qEpKeLEwwZs454maPdDraOebyhBYqf2EbATo1Rf1faqNzjL2T7KtyZg
|
||||
PB1RDah/tCrsRi2ueFbOakyDms+98Km94lC8cZ0Wp7wlXaBLQHbRgylt49dN5KLP
|
||||
cgjUxnBDOxM/4iCrwLQ3GxqZksOkwuzkZE3v1BkRy51XPRiaEov+57zhua686BzY
|
||||
/rQjG6xWEawmodydUPd7qZ8LbO0bGpw+euqVd+FDEmHi4ytB1vyZMQ3Zt7gZjbBm
|
||||
Wxd0x4TSKz0CQ4XuGxXvVx0ZXv3zbOXE2g06UmxijHbCwNZQazAzOw5EVaZiZPvK
|
||||
4HzxssBskp49xh+8T8Pgmc085ujstW2+b1XiZcqnVhIkOqEynxKhPghP/5ODtY7/
|
||||
13dkqbVgAfTZ8JU6Q+jTo5bhaoFohnb8XeEg7O8aLf06WpKvorJ+O8XGKICn1tnD
|
||||
odL5XTa9xX8WMwiI3bQ9SGlucmljaCBNYWhsZXIgPDIyMzY2NTU3K0JpYm8tSm9z
|
||||
aGlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPokCTgQTAQoAOBYhBGVbtPVs2w4O
|
||||
RQDPVy6eDhJ+8/KDBQJjm4maAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJ
|
||||
EC6eDhJ+8/KDKTcP/ja9/nVePimncHGvrT70Ek53qBheSTujurDtNE6mfUOxOgr8
|
||||
7m/fcZo3j/3FUssN81ijoNthS6HuhE0kyc+jbL1q4cv9oOeqgniV0P2GxlCOLwrJ
|
||||
k3BjLNA04P8qSXfS1eefyRgr+dtNaOw2ARetOZm3yja34EW8II6p7Bd7DTRoGOAQ
|
||||
cwi0Xz0AGyz9drLS0vDZ3VJfB0xIUToS/I/PBjUsIg0eD9M2bEOznFHK422CQMJV
|
||||
r4pdHJgMfzX7XmwqMQP31oz8zNljsLWYZqpMR9Lw3B2XKziaZlptXgwC9uulcojG
|
||||
lZv1OTXFKudjKmuOgzd9tW0nwMX/XnNGC7rzCpJCi5//8LeqbLxFqHoK8fXGs/9k
|
||||
U7EBd3srEnGZHp3ROCsEGmNERTTIIN/rWS3lywnQCQ5kyk8HjT3WztfyLuAIiU+q
|
||||
fiGQvvkehFF31ONa6tA5Xsm/0ch8rFx9ON8K72KY0fHLJ4FMz0rIdUa47GDYKDAr
|
||||
n8q+drVCGBVSOWqHYhSZ5C/NCtRr6TebGCsxmhsVuqcXpJSM8CqG8f2xYeQeRw54
|
||||
bGSrCGMB5TlcMUKQ9wmQWHDHa+khobvYrGBtZaHMt/exnBYqwPna88rp1pWyhIqw
|
||||
bBiCzKPYOUvzW+nUL0ogCVTfq5XKMJAQh1d1FPPbSLIb/0LYSHC4FavvrmJ3uQIN
|
||||
BF6AWOIBEADUaTuRBlOcwBBZAFYHgXNM22+TdU+JcYVbdn96A0NPJy0z91SLHotM
|
||||
w8fr9Sbd/g+xhG8byeFDpdEwTz+sH3GN3SjaSRV3CYIueWApiAFC4ybIoR46kcri
|
||||
DQJWaTL8YtofBQs7GTtmZ/IbKaxRC/nKXalBnUh3nPgWCLUcIu8axmloBfHP9zFz
|
||||
+Vn37JrClM66V2TLeJp5/C3Sw2lR2Dj13G65LkSAOX+naoL//PWSSmnfiDef2DA6
|
||||
Ucd3vh2BoTVkmZoDeLkIP93MfDM23I7NRq9rQSptcvYmtdxo3f3IU25sfjYBi+3g
|
||||
HIWzbFq2SBeGAbWBufcFkj+kvoP4LzxJ63hVhpA0ql3WWgi5eKOeuhtnBSNaejhC
|
||||
Axq8ktdAFUpyLMjA53bMUnD7Xkb09tMwW0OcUFPxVz3LG7TT8aQSwA46u/nBFIDN
|
||||
4D5R14OdAysLHcVp536NSApfvzc/E5OCIx+0TPihq+8EnSEyHMvNXA0QLeGcSn8a
|
||||
CoIjRK9p7IpKknGNCBx/H54rHGWi0XdPZPNbGHGFypualEB2uIRELFFkCquO2DTi
|
||||
rYnrYM2Xf/u1ahp1vLNGgM1F6L9u+mC6gUUMGmyBklsz1jTGkTB4HmiMDLBDhAQM
|
||||
/5UPJQhAdxuZwdfyveGxWYBJSSMtGbR+yOfT7NuTEhtBj0WG4h6tPwARAQABiQI2
|
||||
BBgBCgAgFiEEZVu09WzbDg5FAM9XLp4OEn7z8oMFAl6AWOICGwwACgkQLp4OEn7z
|
||||
8oOZ1g/+NE9vZSoxB9yw8uLRthjUUScES2wpA4VBVgpcA0QNEqtq5xE82xXUMhIb
|
||||
1td6E00+lESoXGo66xoIFQdWEMyr0Df6kfFSTgh2FL4DA5NSSQgiM9u4O8yayu2x
|
||||
AmBQzRz42V3AquVSH7gu/WhwPcYROq+gYaQT7D/l6Mg/mRUfMS/zvkFIsTJktp+q
|
||||
yvcuf8ybqoCetDbOw6Uo12IjfxqT1pj8gUVrN/ePlI3HXDzOS6bCiYCgRjCU/Ujj
|
||||
zcXOupKjA4mvN6LCslgwREciZgDE5W31Ghnjd3tT4OL9TSixugRFD67jr7ZsXpcl
|
||||
ZReF+nbEsTZlKMXKVDnvwgvrVD4BolSj9rBpPcyftcZtFeuBPSVUE1c6pd5Vo7HJ
|
||||
I+QDHQA32/hk8dDdqrdVHCn24+yZUkpkuzvNovVJINqt/4GgIRUZot0e5MupFuj9
|
||||
D+Nn90ffKvFe1YjmRkJ1hblHG9Lh2I4LQOjF2qGKRL+CmtgA3NbO4BKLuTEAJnJz
|
||||
PeR4FOX756R40p9Z7e0XhUqF4D/GvRyfxYhxkMKbIGEXbfgPjcNvVCDJxElBBtMz
|
||||
mu6lniNOz/rViivD28dWHIro3ScaGsB4vAo2Eq+4VWTUtvoPo0OHbfX8PDbpcTuU
|
||||
3a3DN3/RD8DQe+Pm5clbVCpDHzKThq9TpHFC0Iozh6d7QY+hQac=
|
||||
=VeuH
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
@@ -0,0 +1,53 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBGOgNtUBEAC9CnrQYcKeHOVQatup9batI7lOSoXhqnS4v41LmWKt2GgVpiSn
|
||||
CpWre04UMg+s/oCFto6af97vGxSsGbb2b23mTVHECvUoUBsiM2CMHopvNpMiPG3s
|
||||
85gIaqQPOyVorET+MgPw96N+Ik/8sevOTb7u6+tUP4wdZcplVXBo5q+3EeK5GDb3
|
||||
g+WNYbcwZ+x+3jwgphQmryHAXAis4PrdAfuaAXxclN/prJ23245IaAQxWID1Mcxi
|
||||
ZaT/vZSqDEKbjj3wyzlJBfe5DuAG2IqAqEbWZCYUjjdUrsrGVdjh6Al1CqA+V8px
|
||||
PYCF+qK6c3M7ilbQSXv9dDjiH1shM7DPrXop657zFandVrmaFVcf7/WLLNSX0KwM
|
||||
kuYdFXYQXXoptpLsB6edB8Od39l6uETObDDVXiKQdeBypFlkWaqDv2soBY04+o0h
|
||||
NvQBWT3EPS2zUXGwo7j2pd1Q4j1qC0ceKW64rxF8UqtZXOG2mJrVKeKvbprhq3kF
|
||||
3+vXHqTgr6ZgjplHkVZmcv31UOBlwGnN+xBi5ooD/brF0rxZ9Pcr0BXdtBhG80V+
|
||||
q1vxVh9D2K0RFJ7pLaxFdExZoevOwHdtwT411I9VfWdICc3w9KYnH4xSwjoR+Cm2
|
||||
Jy9aTlft+TkQXfOxWD83QUtu/zE/MYwp2xhHLsJoOTzSLHcRHMOWC4yfrQARAQAB
|
||||
tG9IaW5yaWNoIE1haGxlciAoS2V5IGZvciBzaWduaW5nIHJlbGVhc2VzIG9mIHB5
|
||||
dGhvbi10ZWxlZ3JhbS1ib3QpIDwyMjM2NjU1NytCaWJvLUpvc2hpQHVzZXJzLm5v
|
||||
cmVwbHkuZ2l0aHViLmNvbT6JAk4EEwEKADgWIQRMulGIRwROKJVIvZ+iuYSpBzAi
|
||||
sgUCY6A21QIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCiuYSpBzAisgG+
|
||||
EACXEqRSzuMI/Ca4vs9Q0teaUskjDbmb3tpt/vlPtgtWVBxIwixIrBXXt6VF58pc
|
||||
4PjnmWd0TQVWHXysVtV1JBdFHJPf7CXD1OXAzDYLS3s0gZJ8Y32oG+94FKVtdcjp
|
||||
M9XV2ip0DZFd0k8ln0bVultFPR441Q7DVpJFctAvICvccC//TkgD0vMWAV+zKD/9
|
||||
xctkIa1t0ZQ2xHA+NPDTLEGzs9rADwJTK/OOE528mo8ki37RTM7Ou6kGF9Xb+A5P
|
||||
iaO2FBDp3b6QyprMvaOF2Xgt18h+wembzsXwVwep3OpjZHYsaImoWn6821HmsS7H
|
||||
MTjR71aG6BrGZTjFtsWNd9Anu2aYfyZgpZZmeTMC6o81x428YEA9Mr7+yAgFAfd7
|
||||
BTyShNsyP1LcbMpPoYciFPiL9ieMqfNPOpdluV56Xb4W27/EJ39wx+PQPEs/5A2n
|
||||
RUfKdtJtqxrGGOWtoLORS0pr+s7JS6WP1dfR/VWeTMiVNG506crAvCkN7VvTlpI0
|
||||
ASqnRvFeu82cgOiP8toZJ/seRDq5JdRy/dV6EMD442mE6si7RUFJ3ShQsAMdukGw
|
||||
lCDdUfLATJ/rrMCsoaInIbqWBa49OqEKcpOxyR2qR/91wxS1LDhfkmtumGgIxkjj
|
||||
utt2XKLSaLNaXIPjX19RMqmFntzMrU2Mk+0HD40dd30bTbkCDQRjoDbVARAA1tN/
|
||||
R2PhQ++bbLCtqeIjmkx/k5nmLK5P52lOu1zR142XVDC1ByZ8FEMzgnU+n660HN2g
|
||||
62/p7lrMi1I12RuPZJBvalsRfGVx2DtbX06AEEg8bjABXB48uF1xU35gLOt1nhDp
|
||||
bEinY0Kx4uBQcXlKme83ceyG2vmZvW0C+2JyLFFjwpUvOwzlzjSMkBFdbDzMBL93
|
||||
A8gTt36WxcA+IbZlEwYte6w8FE5HcEZgGXsYXCvKEEN2wn3scXg+1R8bXOyQeRCo
|
||||
KqblMDRO6Qsb/QL3a86so7MBWX4VmW+7714kaQYhMC+DKZq5u7yO//UqnEElHrYw
|
||||
W8T5KGCYTizXcrM+4giAecdeukdPpeLwOmLhKQ1YfwWkHolsruwjg15vW4QE85dV
|
||||
LRSTdgH1Is6NCqweOMIozH6uIAYz3b1u1r3C9hlgMqFN1oujI12MjOURLtLUtrN/
|
||||
LeosSZEUgL3T7a1bmO4ykcVvhWvGrcU0HfR/CX5nXMymhkjGk2x47elottK/O3BP
|
||||
evinQWPSiF+ABH3605KZQB2cWcr0oH1rLMAIwcYtMdCmGJY9we1fRF2lf/BTcoui
|
||||
nDqsuuIJJpHg9FIIR167fW1tQH0DYbQBvsDCG6jv5pZ7V4Rl8zJ30Am5h1XZzpIk
|
||||
/3wPvouskdfsEF1CahpzKF/rdtIB5aaynWO0xHkAEQEAAYkCNgQYAQoAIBYhBEy6
|
||||
UYhHBE4olUi9n6K5hKkHMCKyBQJjoDbVAhsMAAoJEKK5hKkHMCKypCcP/3pvvpP/
|
||||
axelSKUgdsmU+mcUK4AHWtPXZxJcLoIGhMEOiNOdeX64XhHYGO0gKDvPn1Bv/ygI
|
||||
ef49+NGAXWZmaSOqXSKfSWaWwQqlGLuqL76Hes5EqTbAlo4qEEbZoWx/x52zbXz6
|
||||
1fbcH+rU+3dYVFIzvq2UG2t3L6v+PQXoZL20CWxIAWLGjVmnUPV/7/XJJATg2x1J
|
||||
IEb7iG9h8XLvC4/+whRWG5J48kPRRPE3vy1kgeUtvHCIsvujoFCosAxRhLR62+5x
|
||||
F4rREUyY2WKAsuymVCJPEKE/g3LoTtn+f78ucECm6MJNhJpZqdjlqib0mGhjWGeR
|
||||
XPNHL3iEL4wFlU/DRt25GE7YKTHoPFcjet4wWOUdj9OHdV2DHgsgETEAVxaFwH7W
|
||||
hnPBtyc9TDLsTtJ1NphxofSiehsesNrfX5sneQVBpUclb5HS8vYqJxLC0KLOulNU
|
||||
emDwYaQdM4chy1QfKHJhj9uSbqRcoUcms59mLINUlTmdwez2Vbmnh8sLYfuz2S0L
|
||||
7OANYTUOOmwlw9cQJjF2hgtgvn7lRK/zD38nVesHSBU4dmlYISV5/jnByhIDaIdo
|
||||
Afq07AF3OUKAI2FfAquDjV2P66GS1K2cWEQAAd3wgze3Qlt7xvifGTxHEXXesfP3
|
||||
toI3+U6jDIfsuoL4ynzcPdz0IsFwu+yX6bxw
|
||||
=gtS+
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
+14
-1
@@ -70,9 +70,12 @@ __all__ = ( # Keep this alphabetically ordered
|
||||
"ForumTopic",
|
||||
"ForumTopicClosed",
|
||||
"ForumTopicCreated",
|
||||
"ForumTopicEdited",
|
||||
"ForumTopicReopened",
|
||||
"Game",
|
||||
"GameHighScore",
|
||||
"GeneralForumTopicHidden",
|
||||
"GeneralForumTopicUnhidden",
|
||||
"helpers",
|
||||
"IdDocumentData",
|
||||
"InlineKeyboardButton",
|
||||
@@ -176,6 +179,7 @@ __all__ = ( # Keep this alphabetically ordered
|
||||
"WebAppData",
|
||||
"WebAppInfo",
|
||||
"WebhookInfo",
|
||||
"WriteAccessAllowed",
|
||||
)
|
||||
|
||||
|
||||
@@ -234,7 +238,15 @@ from ._files.video import Video
|
||||
from ._files.videonote import VideoNote
|
||||
from ._files.voice import Voice
|
||||
from ._forcereply import ForceReply
|
||||
from ._forumtopic import ForumTopic, ForumTopicClosed, ForumTopicCreated, ForumTopicReopened
|
||||
from ._forumtopic import (
|
||||
ForumTopic,
|
||||
ForumTopicClosed,
|
||||
ForumTopicCreated,
|
||||
ForumTopicEdited,
|
||||
ForumTopicReopened,
|
||||
GeneralForumTopicHidden,
|
||||
GeneralForumTopicUnhidden,
|
||||
)
|
||||
from ._games.callbackgame import CallbackGame
|
||||
from ._games.game import Game
|
||||
from ._games.gamehighscore import GameHighScore
|
||||
@@ -326,6 +338,7 @@ from ._videochat import (
|
||||
from ._webappdata import WebAppData
|
||||
from ._webappinfo import WebAppInfo
|
||||
from ._webhookinfo import WebhookInfo
|
||||
from ._writeaccessallowed import WriteAccessAllowed
|
||||
|
||||
#: :obj:`str`: The version of the `python-telegram-bot` library as string.
|
||||
#: To get detailed information about the version number, please use :data:`__version_info__`
|
||||
|
||||
+468
-96
File diff suppressed because it is too large
Load Diff
@@ -41,8 +41,12 @@ class BotCommand(TelegramObject):
|
||||
:tg-const:`telegram.BotCommand.MAX_DESCRIPTION` characters.
|
||||
|
||||
Attributes:
|
||||
command (:obj:`str`): Text of the command.
|
||||
description (:obj:`str`): Description of the command.
|
||||
command (:obj:`str`): Text of the command; :tg-const:`telegram.BotCommand.MIN_COMMAND`-
|
||||
:tg-const:`telegram.BotCommand.MAX_COMMAND` characters. Can contain only lowercase
|
||||
English letters, digits and underscores.
|
||||
description (:obj:`str`): Description of the command;
|
||||
:tg-const:`telegram.BotCommand.MIN_DESCRIPTION`-
|
||||
:tg-const:`telegram.BotCommand.MAX_DESCRIPTION` characters.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
# pylint: disable=redefined-builtin
|
||||
"""This module contains an object that represents a Telegram CallbackQuery"""
|
||||
from typing import TYPE_CHECKING, ClassVar, List, Optional, Tuple, Union
|
||||
from typing import TYPE_CHECKING, ClassVar, Optional, Sequence, Tuple, Union
|
||||
|
||||
from telegram import constants
|
||||
from telegram._files.location import Location
|
||||
@@ -78,23 +78,27 @@ class CallbackQuery(TelegramObject):
|
||||
inline_message_id (:obj:`str`, optional): Identifier of the message sent via the bot in
|
||||
inline mode, that originated the query.
|
||||
game_short_name (:obj:`str`, optional): Short name of a Game to be returned, serves as
|
||||
the unique identifier for the game
|
||||
the unique identifier for the game.
|
||||
|
||||
Attributes:
|
||||
id (:obj:`str`): Unique identifier for this query.
|
||||
from_user (:class:`telegram.User`): Sender.
|
||||
chat_instance (:obj:`str`): Global identifier, uniquely corresponding to the chat to which
|
||||
the message with the callback button was sent.
|
||||
the message with the callback button was sent. Useful for high scores in games.
|
||||
message (:class:`telegram.Message`): Optional. Message with the callback button that
|
||||
originated the query.
|
||||
originated the query. Note that message content and message date will not be available
|
||||
if the message is too old.
|
||||
data (:obj:`str` | :obj:`object`): Optional. Data associated with the callback button.
|
||||
Be aware that the message, which originated the query, can contain no callback buttons
|
||||
with this data.
|
||||
|
||||
Tip:
|
||||
The value here is the same as the value passed in
|
||||
:paramref:`telegram.InlineKeyboardButton.callback_data`.
|
||||
inline_message_id (:obj:`str`): Optional. Identifier of the message sent via the bot in
|
||||
inline mode, that originated the query.
|
||||
game_short_name (:obj:`str`): Optional. Short name of a Game to be returned.
|
||||
inline mode, that originated the query.
|
||||
game_short_name (:obj:`str`): Optional. Short name of a Game to be returned, serves as
|
||||
the unique identifier for the game.
|
||||
|
||||
|
||||
"""
|
||||
@@ -192,7 +196,7 @@ class CallbackQuery(TelegramObject):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
disable_web_page_preview: ODVInput[bool] = DEFAULT_NONE,
|
||||
reply_markup: "InlineKeyboardMarkup" = None,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -252,7 +256,7 @@ class CallbackQuery(TelegramObject):
|
||||
caption: str = None,
|
||||
reply_markup: "InlineKeyboardMarkup" = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -720,7 +724,7 @@ class CallbackQuery(TelegramObject):
|
||||
chat_id: Union[int, str],
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
|
||||
+210
-18
@@ -20,7 +20,7 @@
|
||||
"""This module contains an object that represents a Telegram Chat."""
|
||||
from datetime import datetime
|
||||
from html import escape
|
||||
from typing import TYPE_CHECKING, ClassVar, List, Optional, Sequence, Tuple, Union
|
||||
from typing import TYPE_CHECKING, ClassVar, Optional, Sequence, Tuple, Union
|
||||
|
||||
from telegram import constants
|
||||
from telegram._chatlocation import ChatLocation
|
||||
@@ -164,6 +164,16 @@ class Chat(TelegramObject):
|
||||
status of the other party in a private chat. Returned only in
|
||||
:meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_aggressive_anti_spam_enabled (:obj:`bool`, optional): :obj:`True`, if aggressive
|
||||
anti-spam checks are enabled in the supergroup. The field is only available to chat
|
||||
administrators. Returned only in :meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_hidden_members (:obj:`bool`, optional): :obj:`True`, if non-administrators can only
|
||||
get the list of bots and administrators in the chat. Returned only in
|
||||
:meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
@@ -247,6 +257,16 @@ class Chat(TelegramObject):
|
||||
status of the other party in a private chat. Returned only in
|
||||
:meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_aggressive_anti_spam_enabled (:obj:`bool`): Optional. :obj:`True`, if aggressive
|
||||
anti-spam checks are enabled in the supergroup. The field is only available to chat
|
||||
administrators. Returned only in :meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_hidden_members (:obj:`bool`): Optional. :obj:`True`, if non-administrators can only
|
||||
get the list of bots and administrators in the chat. Returned only in
|
||||
:meth:`telegram.Bot.get_chat`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
.. _topics: https://telegram.org/blog/topics-in-groups-collectible-usernames#topics-in-groups
|
||||
@@ -279,6 +299,8 @@ class Chat(TelegramObject):
|
||||
"is_forum",
|
||||
"active_usernames",
|
||||
"emoji_status_custom_emoji_id",
|
||||
"has_hidden_members",
|
||||
"has_aggressive_anti_spam_enabled",
|
||||
)
|
||||
|
||||
SENDER: ClassVar[str] = constants.ChatType.SENDER
|
||||
@@ -323,6 +345,8 @@ class Chat(TelegramObject):
|
||||
is_forum: bool = None,
|
||||
active_usernames: Sequence[str] = None,
|
||||
emoji_status_custom_emoji_id: str = None,
|
||||
has_aggressive_anti_spam_enabled: bool = None,
|
||||
has_hidden_members: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -357,6 +381,8 @@ class Chat(TelegramObject):
|
||||
self.is_forum = is_forum
|
||||
self.active_usernames = parse_sequence_arg(active_usernames)
|
||||
self.emoji_status_custom_emoji_id = emoji_status_custom_emoji_id
|
||||
self.has_aggressive_anti_spam_enabled = has_aggressive_anti_spam_enabled
|
||||
self.has_hidden_members = has_hidden_members
|
||||
|
||||
self._id_attrs = (self.id,)
|
||||
|
||||
@@ -1239,7 +1265,7 @@ class Chat(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1280,7 +1306,7 @@ class Chat(TelegramObject):
|
||||
|
||||
async def send_media_group(
|
||||
self,
|
||||
media: List[
|
||||
media: Sequence[
|
||||
Union["InputMediaAudio", "InputMediaDocument", "InputMediaPhoto", "InputMediaVideo"]
|
||||
],
|
||||
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
||||
@@ -1296,7 +1322,7 @@ class Chat(TelegramObject):
|
||||
api_kwargs: JSONDict = None,
|
||||
caption: Optional[str] = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
) -> Tuple["Message", ...]:
|
||||
"""Shortcut for::
|
||||
|
||||
@@ -1330,6 +1356,7 @@ class Chat(TelegramObject):
|
||||
async def send_chat_action(
|
||||
self,
|
||||
action: str,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -1350,6 +1377,7 @@ class Chat(TelegramObject):
|
||||
return await self.get_bot().send_chat_action(
|
||||
chat_id=self.id,
|
||||
action=action,
|
||||
message_thread_id=message_thread_id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
@@ -1369,9 +1397,10 @@ class Chat(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -1408,6 +1437,7 @@ class Chat(TelegramObject):
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_contact(
|
||||
@@ -1473,7 +1503,7 @@ class Chat(TelegramObject):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1529,7 +1559,7 @@ class Chat(TelegramObject):
|
||||
thumb: FileInput = None,
|
||||
disable_content_type_detection: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1663,7 +1693,7 @@ class Chat(TelegramObject):
|
||||
payload: str,
|
||||
provider_token: str,
|
||||
currency: str,
|
||||
prices: List["LabeledPrice"],
|
||||
prices: Sequence["LabeledPrice"],
|
||||
start_parameter: str = None,
|
||||
photo_url: str = None,
|
||||
photo_size: int = None,
|
||||
@@ -1682,7 +1712,7 @@ class Chat(TelegramObject):
|
||||
send_email_to_provider: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
max_tip_amount: int = None,
|
||||
suggested_tip_amounts: List[int] = None,
|
||||
suggested_tip_amounts: Sequence[int] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1815,9 +1845,10 @@ class Chat(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -1858,6 +1889,7 @@ class Chat(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_sticker(
|
||||
@@ -1974,9 +2006,10 @@ class Chat(TelegramObject):
|
||||
supports_streaming: bool = None,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -2018,6 +2051,7 @@ class Chat(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_video_note(
|
||||
@@ -2080,7 +2114,7 @@ class Chat(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -2125,7 +2159,7 @@ class Chat(TelegramObject):
|
||||
async def send_poll(
|
||||
self,
|
||||
question: str,
|
||||
options: List[str],
|
||||
options: Sequence[str],
|
||||
is_anonymous: bool = None,
|
||||
type: str = None,
|
||||
allows_multiple_answers: bool = None,
|
||||
@@ -2139,7 +2173,7 @@ class Chat(TelegramObject):
|
||||
open_period: int = None,
|
||||
close_date: Union[int, datetime] = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
explanation_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
explanation_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -2192,7 +2226,7 @@ class Chat(TelegramObject):
|
||||
message_id: int,
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
@@ -2242,7 +2276,7 @@ class Chat(TelegramObject):
|
||||
message_id: int,
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
@@ -2663,8 +2697,8 @@ class Chat(TelegramObject):
|
||||
async def edit_forum_topic(
|
||||
self,
|
||||
message_thread_id: int,
|
||||
name: str,
|
||||
icon_custom_emoji_id: str,
|
||||
name: str = None,
|
||||
icon_custom_emoji_id: str = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -2825,6 +2859,164 @@ class Chat(TelegramObject):
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def edit_general_forum_topic(
|
||||
self,
|
||||
name: str,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: JSONDict = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
|
||||
await bot.edit_general_forum_topic(
|
||||
chat_id=update.effective_chat.id, *args, **kwargs
|
||||
)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.edit_general_forum_topic`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
"""
|
||||
return await self.get_bot().edit_general_forum_topic(
|
||||
chat_id=self.id,
|
||||
name=name,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def close_general_forum_topic(
|
||||
self,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: JSONDict = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
|
||||
await bot.close_general_forum_topic(chat_id=update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.close_general_forum_topic`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
"""
|
||||
return await self.get_bot().close_general_forum_topic(
|
||||
chat_id=self.id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def reopen_general_forum_topic(
|
||||
self,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: JSONDict = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
|
||||
await bot.reopen_general_forum_topic(
|
||||
chat_id=update.effective_chat.id, *args, **kwargs
|
||||
)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.reopen_general_forum_topic`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
"""
|
||||
return await self.get_bot().reopen_general_forum_topic(
|
||||
chat_id=self.id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def hide_general_forum_topic(
|
||||
self,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: JSONDict = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
|
||||
await bot.hide_general_forum_topic(chat_id=update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.hide_general_forum_topic`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
"""
|
||||
return await self.get_bot().hide_general_forum_topic(
|
||||
chat_id=self.id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def unhide_general_forum_topic(
|
||||
self,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: JSONDict = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
|
||||
await bot.unhide_general_forum_topic (
|
||||
chat_id=update.effective_chat.id, *args, **kwargs
|
||||
)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.unhide_general_forum_topic`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
"""
|
||||
return await self.get_bot().unhide_general_forum_topic(
|
||||
chat_id=self.id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
async def get_menu_button(
|
||||
self,
|
||||
*,
|
||||
|
||||
@@ -83,6 +83,7 @@ class ChatInviteLink(TelegramObject):
|
||||
:tg-const:`telegram.constants.ChatInviteLinkLimit.MIN_MEMBER_LIMIT`-
|
||||
:tg-const:`telegram.constants.ChatInviteLinkLimit.MAX_MEMBER_LIMIT`.
|
||||
name (:obj:`str`): Optional. Invite link name.
|
||||
0-:tg-const:`telegram.constants.ChatInviteLinkLimit.NAME_LENGTH` characters.
|
||||
|
||||
.. versionadded:: 13.8
|
||||
pending_join_request_count (:obj:`int`): Optional. Number of pending join requests
|
||||
|
||||
@@ -40,10 +40,13 @@ class ChatLocation(TelegramObject):
|
||||
Can't be a live location.
|
||||
address (:obj:`str`): Location address;
|
||||
:tg-const:`telegram.ChatLocation.MIN_ADDRESS`-
|
||||
:tg-const:`telegram.ChatLocation.MAX_ADDRESS` characters, as defined by the chat owner
|
||||
:tg-const:`telegram.ChatLocation.MAX_ADDRESS` characters, as defined by the chat owner.
|
||||
Attributes:
|
||||
location (:class:`telegram.Location`): The location to which the supergroup is connected.
|
||||
address (:obj:`str`): Location address, as defined by the chat owner
|
||||
Can't be a live location.
|
||||
address (:obj:`str`): Location address;
|
||||
:tg-const:`telegram.ChatLocation.MIN_ADDRESS`-
|
||||
:tg-const:`telegram.ChatLocation.MAX_ADDRESS` characters, as defined by the chat owner.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class ChatMember(TelegramObject):
|
||||
considered equal, if their :attr:`user` and :attr:`status` are equal.
|
||||
|
||||
Examples:
|
||||
:any:`Chat Member Bot <examples.chatmemberbot>`
|
||||
:any:`Chat Member Bot <examples.chatmemberbot>`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -65,7 +65,10 @@ class ChatMember(TelegramObject):
|
||||
|
||||
Attributes:
|
||||
user (:class:`telegram.User`): Information about the user.
|
||||
status (:obj:`str`): The member's status in the chat.
|
||||
status (:obj:`str`): The member's status in the chat. Can be
|
||||
:attr:`~telegram.ChatMember.ADMINISTRATOR`, :attr:`~telegram.ChatMember.OWNER`,
|
||||
:attr:`~telegram.ChatMember.BANNED`, :attr:`~telegram.ChatMember.LEFT`,
|
||||
:attr:`~telegram.ChatMember.MEMBER` or :attr:`~telegram.ChatMember.RESTRICTED`.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class ChatMemberUpdated(TelegramObject):
|
||||
old_chat_member (:class:`telegram.ChatMember`): Previous information about the chat member.
|
||||
new_chat_member (:class:`telegram.ChatMember`): New information about the chat member.
|
||||
invite_link (:class:`telegram.ChatInviteLink`): Optional. Chat invite link, which was used
|
||||
by the user to join the chat.
|
||||
by the user to join the chat. For joining by invite link events only.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -56,8 +56,11 @@ class ChosenInlineResult(TelegramObject):
|
||||
Attributes:
|
||||
result_id (:obj:`str`): The unique identifier for the result that was chosen.
|
||||
from_user (:class:`telegram.User`): The user that chose the result.
|
||||
location (:class:`telegram.Location`): Optional. Sender location.
|
||||
inline_message_id (:obj:`str`): Optional. Identifier of the sent inline message.
|
||||
location (:class:`telegram.Location`): Optional. Sender location, only for bots that
|
||||
require user location.
|
||||
inline_message_id (:obj:`str`): Optional. Identifier of the sent inline message. Available
|
||||
only if there is an inline keyboard attached to the message. Will be also received in
|
||||
callback queries and can be used to edit the message.
|
||||
query (:obj:`str`): The query that was used to obtain the result.
|
||||
|
||||
"""
|
||||
|
||||
+10
-2
@@ -52,8 +52,8 @@ class Dice(TelegramObject):
|
||||
|
||||
If :attr:`emoji` is :tg-const:`telegram.Dice.SLOT_MACHINE`, each value
|
||||
corresponds to a unique combination of symbols, which
|
||||
can be found at our `wiki <https://github.com/python-telegram-bot/python-telegram-bot/wiki\
|
||||
/Code-snippets#map-a-slot-machine-dice-value-to-the-corresponding-symbols>`_.
|
||||
can be found in our
|
||||
:wiki:`wiki <Code-snippets#map-a-slot-machine-dice-value-to-the-corresponding-symbols>`.
|
||||
However, this behaviour is undocumented and might be changed by Telegram.
|
||||
|
||||
..
|
||||
@@ -75,6 +75,14 @@ class Dice(TelegramObject):
|
||||
|
||||
Attributes:
|
||||
value (:obj:`int`): Value of the dice.
|
||||
:tg-const:`telegram.Dice.MIN_VALUE`-:tg-const:`telegram.Dice.MAX_VALUE_BOWLING`
|
||||
for :tg-const:`telegram.Dice.DICE`, :tg-const:`telegram.Dice.DARTS` and
|
||||
:tg-const:`telegram.Dice.BOWLING` base emoji,
|
||||
:tg-const:`telegram.Dice.MIN_VALUE`-:tg-const:`telegram.Dice.MAX_VALUE_BASKETBALL`
|
||||
for :tg-const:`telegram.Dice.BASKETBALL` and :tg-const:`telegram.Dice.FOOTBALL`
|
||||
base emoji,
|
||||
:tg-const:`telegram.Dice.MIN_VALUE`-:tg-const:`telegram.Dice.MAX_VALUE_SLOT_MACHINE`
|
||||
for :tg-const:`telegram.Dice.SLOT_MACHINE` base emoji.
|
||||
emoji (:obj:`str`): Emoji on which the dice throw animation is based.
|
||||
|
||||
"""
|
||||
|
||||
@@ -44,7 +44,8 @@ class Animation(_BaseThumbedMedium):
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): File identifier.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
|
||||
@@ -46,11 +46,11 @@ class Audio(_BaseThumbedMedium):
|
||||
which the music file belongs.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
duration (:obj:`int`): Duration of the audio in seconds.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which is supposed to be
|
||||
the same over time and for different bots. Can't be used to download or reuse the file.
|
||||
duration (:obj:`int`): Duration of the audio in seconds as defined by sender.
|
||||
performer (:obj:`str`): Optional. Performer of the audio as defined by sender or by audio
|
||||
tags.
|
||||
title (:obj:`str`): Optional. Title of the audio as defined by sender or by audio tags.
|
||||
|
||||
@@ -36,7 +36,7 @@ class ChatPhoto(TelegramObject):
|
||||
equal.
|
||||
|
||||
Args:
|
||||
small_file_id (:obj:`str`): Unique file identifier of small
|
||||
small_file_id (:obj:`str`): File identifier of small
|
||||
(:tg-const:`telegram.ChatPhoto.SIZE_SMALL` x :tg-const:`telegram.ChatPhoto.SIZE_SMALL`)
|
||||
chat photo. This file_id can be used only for photo download and only for as long
|
||||
as the photo is not changed.
|
||||
@@ -44,7 +44,7 @@ class ChatPhoto(TelegramObject):
|
||||
(:tg-const:`telegram.ChatPhoto.SIZE_SMALL` x :tg-const:`telegram.ChatPhoto.SIZE_SMALL`)
|
||||
chat photo, which is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
big_file_id (:obj:`str`): Unique file identifier of big
|
||||
big_file_id (:obj:`str`): File identifier of big
|
||||
(:tg-const:`telegram.ChatPhoto.SIZE_BIG` x :tg-const:`telegram.ChatPhoto.SIZE_BIG`)
|
||||
chat photo. This file_id can be used only for photo download and only for as long as
|
||||
the photo is not changed.
|
||||
|
||||
@@ -41,16 +41,15 @@ class Document(_BaseThumbedMedium):
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): File identifier.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
thumb (:class:`telegram.PhotoSize`): Optional. Document thumbnail.
|
||||
file_name (:obj:`str`): Original filename.
|
||||
mime_type (:obj:`str`): Optional. MIME type of the file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which is supposed to be
|
||||
the same over time and for different bots. Can't be used to download or reuse the file.
|
||||
thumb (:class:`telegram.PhotoSize`): Optional. Document thumbnail as defined by sender.
|
||||
file_name (:obj:`str`): Optional. Original filename as defined by sender.
|
||||
mime_type (:obj:`str`): Optional. MIME type of the file as defined by sender.
|
||||
file_size (:obj:`int`): Optional. File size in bytes.
|
||||
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ("file_name", "mime_type")
|
||||
|
||||
+11
-6
@@ -42,7 +42,7 @@ class File(TelegramObject):
|
||||
Objects of this class are comparable in terms of equality. Two objects of this class are
|
||||
considered equal, if their :attr:`file_unique_id` is equal.
|
||||
|
||||
.. versionchanged:: 20.0:
|
||||
.. versionchanged:: 20.0
|
||||
``download`` was split into :meth:`download_to_drive` and :meth:`download_to_memory`.
|
||||
|
||||
Note:
|
||||
@@ -58,18 +58,19 @@ class File(TelegramObject):
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
file_size (:obj:`int`, optional): Optional. File size in bytes, if known.
|
||||
file_size (:obj:`int`, optional): File size in bytes, if known.
|
||||
file_path (:obj:`str`, optional): File path. Use e.g. :meth:`download_to_drive` to get the
|
||||
file.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
file_size (:obj:`str`): Optional. File size in bytes.
|
||||
file_path (:obj:`str`): Optional. File path. Use e.g. :meth:`download_to_drive` to get
|
||||
the file.
|
||||
file_size (:obj:`int`): Optional. File size in bytes, if known.
|
||||
file_path (:obj:`str`): Optional. File path. Use e.g. :meth:`download_to_drive` to get the
|
||||
file.
|
||||
"""
|
||||
|
||||
__slots__ = (
|
||||
@@ -141,6 +142,8 @@ class File(TelegramObject):
|
||||
original file in order to decrypt the file without changing the existing one
|
||||
in-place.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
* :paramref:`custom_path` parameter now also accepts :class:`pathlib.Path` as argument.
|
||||
@@ -224,6 +227,8 @@ class File(TelegramObject):
|
||||
:obj:`io.BufferedIOBase`, the file contents will be saved to that object using the
|
||||
:obj:`out.write<io.BufferedIOBase.write>` method.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Args:
|
||||
|
||||
@@ -40,10 +40,12 @@ class InputMedia(TelegramObject):
|
||||
"""
|
||||
Base class for Telegram InputMedia Objects.
|
||||
|
||||
.. versionchanged:: 20.0:
|
||||
.. versionchanged:: 20.0
|
||||
Added arguments and attributes :attr:`type`, :attr:`media`, :attr:`caption`,
|
||||
:attr:`caption_entities`, :paramref:`parse_mode`.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
media_type (:obj:`str`): Type of media that the instance represents.
|
||||
media (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
||||
@@ -66,9 +68,11 @@ class InputMedia(TelegramObject):
|
||||
Attributes:
|
||||
type (:obj:`str`): Type of the input media.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): Media to send.
|
||||
caption (:obj:`str`): Optional. Caption of the media to be sent.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption (:obj:`str`): Optional. Caption of the media to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -115,6 +119,8 @@ class InputMediaAnimation(InputMedia):
|
||||
width, height and duration from that video, unless otherwise specified with the optional
|
||||
arguments.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
media (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
||||
:class:`telegram.Animation`): File to send. |fileinputnopath|
|
||||
@@ -144,27 +150,35 @@ class InputMediaAnimation(InputMedia):
|
||||
width (:obj:`int`, optional): Animation width.
|
||||
height (:obj:`int`, optional): Animation height.
|
||||
duration (:obj:`int`, optional): Animation duration in seconds.
|
||||
has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the animation needs to be covered
|
||||
with a spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.InputMediaType.ANIMATION`.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): Animation to send.
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent.
|
||||
thumb (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|
|
||||
caption (:obj:`str`): Optional. Caption of the animation to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
* |tupleclassattrs|
|
||||
* |alwaystuple|
|
||||
|
||||
thumb (:class:`telegram.InputFile`): Optional. Thumbnail of the file to send.
|
||||
width (:obj:`int`): Optional. Animation width.
|
||||
height (:obj:`int`): Optional. Animation height.
|
||||
duration (:obj:`int`): Optional. Animation duration in seconds.
|
||||
has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the animation is covered with a
|
||||
spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ("duration", "height", "thumb", "width")
|
||||
__slots__ = ("duration", "height", "thumb", "width", "has_spoiler")
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -177,6 +191,7 @@ class InputMediaAnimation(InputMedia):
|
||||
duration: int = None,
|
||||
caption_entities: Sequence[MessageEntity] = None,
|
||||
filename: str = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -203,11 +218,14 @@ class InputMediaAnimation(InputMedia):
|
||||
self.width = width
|
||||
self.height = height
|
||||
self.duration = duration
|
||||
self.has_spoiler = has_spoiler
|
||||
|
||||
|
||||
class InputMediaPhoto(InputMedia):
|
||||
"""Represents a photo to be sent.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
media (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
||||
:class:`telegram.PhotoSize`): File to send. |fileinputnopath|
|
||||
@@ -228,22 +246,31 @@ class InputMediaPhoto(InputMedia):
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceclassargs|
|
||||
has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the photo needs to be covered
|
||||
with a spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.InputMediaType.PHOTO`.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): Photo to send.
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption (:obj:`str`): Optional. Caption of the photo to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
* |tupleclassattrs|
|
||||
* |alwaystuple|
|
||||
has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the photo is covered with a
|
||||
spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
__slots__ = ("has_spoiler",)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -252,6 +279,7 @@ class InputMediaPhoto(InputMedia):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Sequence[MessageEntity] = None,
|
||||
filename: str = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -267,12 +295,15 @@ class InputMediaPhoto(InputMedia):
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
|
||||
self._freeze()
|
||||
with self._unfrozen():
|
||||
self.has_spoiler = has_spoiler
|
||||
|
||||
|
||||
class InputMediaVideo(InputMedia):
|
||||
"""Represents a video to be sent.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Note:
|
||||
* When using a :class:`telegram.Video` for the :attr:`media` attribute, it will take the
|
||||
width, height and duration from that video, unless otherwise specified with the optional
|
||||
@@ -312,13 +343,19 @@ class InputMediaVideo(InputMedia):
|
||||
|
||||
.. versionchanged:: 13.2
|
||||
Accept :obj:`bytes` as input.
|
||||
has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the video needs to be covered
|
||||
with a spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.InputMediaType.VIDEO`.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): Video file to send.
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption (:obj:`str`): Optional. Caption of the video to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -327,13 +364,16 @@ class InputMediaVideo(InputMedia):
|
||||
width (:obj:`int`): Optional. Video width.
|
||||
height (:obj:`int`): Optional. Video height.
|
||||
duration (:obj:`int`): Optional. Video duration in seconds.
|
||||
supports_streaming (:obj:`bool`): Optional. Pass :obj:`True`, if the uploaded video is
|
||||
supports_streaming (:obj:`bool`): Optional. :obj:`True`, if the uploaded video is
|
||||
suitable for streaming.
|
||||
thumb (:class:`telegram.InputFile`): Optional. Thumbnail of the file to send.
|
||||
thumb (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|
|
||||
has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the video is covered with a
|
||||
spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ("duration", "height", "thumb", "supports_streaming", "width")
|
||||
__slots__ = ("duration", "height", "thumb", "supports_streaming", "width", "has_spoiler")
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -347,6 +387,7 @@ class InputMediaVideo(InputMedia):
|
||||
thumb: FileInput = None,
|
||||
caption_entities: Sequence[MessageEntity] = None,
|
||||
filename: str = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -375,11 +416,14 @@ class InputMediaVideo(InputMedia):
|
||||
self.duration = duration
|
||||
self.thumb = self._parse_thumb_input(thumb)
|
||||
self.supports_streaming = supports_streaming
|
||||
self.has_spoiler = has_spoiler
|
||||
|
||||
|
||||
class InputMediaAudio(InputMedia):
|
||||
"""Represents an audio file to be treated as music to be sent.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Note:
|
||||
When using a :class:`telegram.Audio` for the :attr:`media` attribute, it will take the
|
||||
duration, performer and title from that video, unless otherwise specified with the
|
||||
@@ -406,7 +450,7 @@ class InputMediaAudio(InputMedia):
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceclassargs|
|
||||
|
||||
duration (:obj:`int`): Duration of the audio in seconds as defined by sender.
|
||||
duration (:obj:`int`, optional): Duration of the audio in seconds as defined by sender.
|
||||
performer (:obj:`str`, optional): Performer of the audio as defined by sender or by audio
|
||||
tags.
|
||||
title (:obj:`str`, optional): Title of the audio as defined by sender or by audio tags.
|
||||
@@ -419,19 +463,21 @@ class InputMediaAudio(InputMedia):
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.InputMediaType.AUDIO`.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): Audio file to send.
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption (:obj:`str`): Optional. Caption of the audio to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
* |tupleclassattrs|
|
||||
* |alwaystuple|
|
||||
duration (:obj:`int`): Duration of the audio in seconds.
|
||||
duration (:obj:`int`): Optional. Duration of the audio in seconds.
|
||||
performer (:obj:`str`): Optional. Performer of the audio as defined by sender or by audio
|
||||
tags.
|
||||
title (:obj:`str`): Optional. Title of the audio as defined by sender or by audio tags.
|
||||
thumb (:class:`telegram.InputFile`): Optional. Thumbnail of the file to send.
|
||||
thumb (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|
|
||||
|
||||
"""
|
||||
|
||||
@@ -479,6 +525,8 @@ class InputMediaAudio(InputMedia):
|
||||
class InputMediaDocument(InputMedia):
|
||||
"""Represents a general file to be sent.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
media (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
||||
:class:`telegram.Document`): File to send. |fileinputnopath|
|
||||
@@ -512,18 +560,20 @@ class InputMediaDocument(InputMedia):
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.InputMediaType.DOCUMENT`.
|
||||
media (:obj:`str` | :class:`telegram.InputFile`): File to send.
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent.
|
||||
parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption (:obj:`str`): Optional. Caption of the document to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
* |tupleclassattrs|
|
||||
* |alwaystuple|
|
||||
thumb (:class:`telegram.InputFile`): Optional. Thumbnail of the file to send.
|
||||
thumb (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|
|
||||
disable_content_type_detection (:obj:`bool`): Optional. Disables automatic server-side
|
||||
content type detection for files uploaded using multipart/form-data. Always true, if
|
||||
the document is sent as part of an album.
|
||||
content type detection for files uploaded using multipart/form-data. Always
|
||||
:obj:`True`, if the document is sent as part of an album.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -48,10 +48,11 @@ class Location(TelegramObject):
|
||||
longitude (:obj:`float`): Longitude as defined by sender.
|
||||
latitude (:obj:`float`): Latitude as defined by sender.
|
||||
horizontal_accuracy (:obj:`float`): Optional. The radius of uncertainty for the location,
|
||||
measured in meters.
|
||||
measured in meters; 0-:tg-const:`telegram.Location.HORIZONTAL_ACCURACY`.
|
||||
live_period (:obj:`int`): Optional. Time relative to the message sending date, during which
|
||||
the location can be updated, in seconds. For active live locations only.
|
||||
heading (:obj:`int`): Optional. The direction in which user is moving, in degrees.
|
||||
heading (:obj:`int`): Optional. The direction in which user is moving, in degrees;
|
||||
:tg-const:`telegram.Location.MIN_HEADING`-:tg-const:`telegram.Location.MAX_HEADING`.
|
||||
For active live locations only.
|
||||
proximity_alert_radius (:obj:`int`): Optional. Maximum distance for proximity alerts about
|
||||
approaching another chat member, in meters. For sent live locations only.
|
||||
|
||||
@@ -39,7 +39,8 @@ class PhotoSize(_BaseMedium):
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
|
||||
+14
-10
@@ -62,10 +62,9 @@ class Sticker(_BaseThumbedMedium):
|
||||
thumb (:class:`telegram.PhotoSize`, optional): Sticker thumbnail in the ``.WEBP`` or
|
||||
``.JPG`` format.
|
||||
emoji (:obj:`str`, optional): Emoji associated with the sticker
|
||||
set_name (:obj:`str`, optional): Name of the sticker set to which the sticker
|
||||
belongs.
|
||||
mask_position (:class:`telegram.MaskPosition`, optional): For mask stickers, the
|
||||
position where the mask should be placed.
|
||||
set_name (:obj:`str`, optional): Name of the sticker set to which the sticker belongs.
|
||||
mask_position (:class:`telegram.MaskPosition`, optional): For mask stickers, the position
|
||||
where the mask should be placed.
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
premium_animation (:class:`telegram.File`, optional): For premium regular stickers,
|
||||
@@ -78,7 +77,8 @@ class Sticker(_BaseThumbedMedium):
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
@@ -197,7 +197,7 @@ class StickerSet(TelegramObject):
|
||||
arguments had to be changed. Use keyword arguments to make sure that the arguments are
|
||||
passed correctly.
|
||||
|
||||
.. versionchanged:: 20.0:
|
||||
.. versionchanged:: 20.0
|
||||
The parameter ``contains_masks`` has been removed. Use :paramref:`sticker_type` instead.
|
||||
|
||||
Args:
|
||||
@@ -232,11 +232,13 @@ class StickerSet(TelegramObject):
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
sticker_type (:obj:`str`): Type of stickers in the set.
|
||||
sticker_type (:obj:`str`): Type of stickers in the set, currently one of
|
||||
:attr:`telegram.Sticker.REGULAR`, :attr:`telegram.Sticker.MASK`,
|
||||
:attr:`telegram.Sticker.CUSTOM_EMOJI`.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
thumb (:class:`telegram.PhotoSize`): Optional. Sticker set thumbnail in the ``.WEBP``,
|
||||
``.TGS`` or ``.WEBM`` format.
|
||||
``.TGS``, or ``.WEBM`` format.
|
||||
|
||||
"""
|
||||
|
||||
@@ -316,9 +318,11 @@ class MaskPosition(TelegramObject):
|
||||
point (:obj:`str`): The part of the face relative to which the mask should be placed.
|
||||
One of :attr:`FOREHEAD`, :attr:`EYES`, :attr:`MOUTH`, or :attr:`CHIN`.
|
||||
x_shift (:obj:`float`): Shift by X-axis measured in widths of the mask scaled to the face
|
||||
size, from left to right.
|
||||
size, from left to right. For example, choosing ``-1.0`` will place mask just to the
|
||||
left of the default mask position.
|
||||
y_shift (:obj:`float`): Shift by Y-axis measured in heights of the mask scaled to the face
|
||||
size, from top to bottom.
|
||||
size, from top to bottom. For example, ``1.0`` will place the mask just below the
|
||||
default mask position.
|
||||
scale (:obj:`float`): Mask scaling coefficient. For example, ``2.0`` means double size.
|
||||
|
||||
"""
|
||||
|
||||
@@ -55,9 +55,12 @@ class Venue(TelegramObject):
|
||||
title (:obj:`str`): Name of the venue.
|
||||
address (:obj:`str`): Address of the venue.
|
||||
foursquare_id (:obj:`str`): Optional. Foursquare identifier of the venue.
|
||||
foursquare_type (:obj:`str`): Optional. Foursquare type of the venue.
|
||||
foursquare_type (:obj:`str`): Optional. Foursquare type of the venue. (For example,
|
||||
"arts_entertainment/default", "arts_entertainment/aquarium" or "food/icecream".)
|
||||
google_place_id (:obj:`str`): Optional. Google Places identifier of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue. (See
|
||||
`supported types <https://developers.google.com/maps/documentation/places/web-service\
|
||||
/supported_types>`_.)
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -44,7 +44,8 @@ class Video(_BaseThumbedMedium):
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
@@ -56,7 +57,6 @@ class Video(_BaseThumbedMedium):
|
||||
mime_type (:obj:`str`): Optional. MIME type of a file as defined by sender.
|
||||
file_size (:obj:`int`): Optional. File size in bytes.
|
||||
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ("duration", "file_name", "height", "mime_type", "width")
|
||||
|
||||
@@ -42,11 +42,13 @@ class VideoNote(_BaseThumbedMedium):
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
length (:obj:`int`): Video width and height as defined by sender.
|
||||
length (:obj:`int`): Video width and height (diameter of the video message) as defined
|
||||
by sender.
|
||||
duration (:obj:`int`): Duration of the video in seconds as defined by sender.
|
||||
thumb (:class:`telegram.PhotoSize`): Optional. Video thumbnail.
|
||||
file_size (:obj:`int`): Optional. File size in bytes.
|
||||
|
||||
@@ -34,12 +34,13 @@ class Voice(_BaseMedium):
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
duration (:obj:`int`, optional): Duration of the audio in seconds as defined by sender.
|
||||
duration (:obj:`int`): Duration of the audio in seconds as defined by sender.
|
||||
mime_type (:obj:`str`, optional): MIME type of the file as defined by sender.
|
||||
file_size (:obj:`int`, optional): File size in bytes.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
|
||||
+11
-3
@@ -59,9 +59,17 @@ class ForceReply(TelegramObject):
|
||||
Attributes:
|
||||
force_reply (:obj:`True`): Shows reply interface to the user, as if they manually selected
|
||||
the bots message and tapped 'Reply'.
|
||||
selective (:obj:`bool`): Optional. Force reply from specific users only.
|
||||
input_field_placeholder (:obj:`str`): Optional. The placeholder shown in the input
|
||||
field when the reply is active.
|
||||
selective (:obj:`bool`): Optional. Force reply from specific users only. Targets:
|
||||
|
||||
1) Users that are @mentioned in the :attr:`~telegram.Message.text` of the
|
||||
:class:`telegram.Message` object.
|
||||
2) If the bot's message is a reply (has ``reply_to_message_id``), sender of the
|
||||
original message.
|
||||
input_field_placeholder (:obj:`str`): Optional. The placeholder to be shown in the input
|
||||
field when the reply is active;
|
||||
:tg-const:`telegram.ForceReply.MIN_INPUT_FIELD_PLACEHOLDER`-
|
||||
:tg-const:`telegram.ForceReply.MAX_INPUT_FIELD_PLACEHOLDER`
|
||||
characters.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
|
||||
|
||||
@@ -122,6 +122,11 @@ class ForumTopicClosed(TelegramObject):
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
|
||||
class ForumTopicReopened(TelegramObject):
|
||||
"""
|
||||
@@ -132,3 +137,78 @@ class ForumTopicReopened(TelegramObject):
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
|
||||
class ForumTopicEdited(TelegramObject):
|
||||
"""
|
||||
This object represents a service message about an edited forum topic.
|
||||
|
||||
Objects of this class are comparable in terms of equality. Two objects of this class are
|
||||
considered equal, if their :attr:`name` and :attr:`icon_custom_emoji_id` are equal.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Args:
|
||||
name (:obj:`str`, optional): New name of the topic, if it was edited.
|
||||
icon_custom_emoji_id (:obj:`str`, optional): New identifier of the custom emoji shown as
|
||||
the topic icon, if it was edited; an empty string if the icon was removed.
|
||||
|
||||
Attributes:
|
||||
name (:obj:`str`): Optional. New name of the topic, if it was edited.
|
||||
icon_custom_emoji_id (:obj:`str`): Optional. New identifier of the custom emoji shown as
|
||||
the topic icon, if it was edited; an empty string if the icon was removed.
|
||||
"""
|
||||
|
||||
__slots__ = ("name", "icon_custom_emoji_id")
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
name: str = None,
|
||||
icon_custom_emoji_id: str = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
self.name = name
|
||||
self.icon_custom_emoji_id = icon_custom_emoji_id
|
||||
|
||||
self._id_attrs = (self.name, self.icon_custom_emoji_id)
|
||||
|
||||
self._freeze()
|
||||
|
||||
|
||||
class GeneralForumTopicHidden(TelegramObject):
|
||||
"""
|
||||
This object represents a service message about General forum topic hidden in the chat.
|
||||
Currently holds no information.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
|
||||
class GeneralForumTopicUnhidden(TelegramObject):
|
||||
"""
|
||||
This object represents a service message about General forum topic unhidden in the chat.
|
||||
Currently holds no information.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
@@ -19,9 +19,15 @@
|
||||
"""This module contains an object that represents a Telegram CallbackGame."""
|
||||
|
||||
from telegram._telegramobject import TelegramObject
|
||||
from telegram._utils.types import JSONDict
|
||||
|
||||
|
||||
class CallbackGame(TelegramObject):
|
||||
"""A placeholder, currently holds no information. Use BotFather to set up your game."""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
@@ -75,9 +75,10 @@ class Game(TelegramObject):
|
||||
game message. Can be automatically edited to include current high scores for the game
|
||||
when the bot calls :meth:`telegram.Bot.set_game_score`, or manually edited
|
||||
using :meth:`telegram.Bot.edit_message_text`.
|
||||
0-:tg-const:`telegram.constants.MessageLimit.MAX_TEXT_LENGTH` characters.
|
||||
text_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. Special entities that
|
||||
appear in text, such as usernames, URLs, bot commands, etc.
|
||||
This list is empty if the message does not contain text entities.
|
||||
This tuple is empty if the message does not contain text entities.
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
@@ -95,8 +95,7 @@ class InlineKeyboardButton(TelegramObject):
|
||||
Tip:
|
||||
The value entered here will be available in :attr:`telegram.CallbackQuery.data`.
|
||||
|
||||
.. seealso:: `Arbitrary callback_data <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Arbitrary-callback_data>`_
|
||||
.. seealso:: :wiki:`Arbitrary callback_data <Arbitrary-callback_data>`
|
||||
|
||||
web_app (:obj:`telegram.WebAppInfo`, optional): Description of the `Web App
|
||||
<https://core.telegram.org/bots/webapps>`_ that will be launched when the user presses
|
||||
@@ -110,7 +109,7 @@ class InlineKeyboardButton(TelegramObject):
|
||||
specified inline query in the input field. Can be empty, in which case just the bot's
|
||||
username will be inserted. This offers an easy way for users to start using your bot
|
||||
in inline mode when they are currently in a private chat with it. Especially useful
|
||||
when combined with switch_pm* actions - in this case the user will be automatically
|
||||
when combined with ``switch_pm*`` actions - in this case the user will be automatically
|
||||
returned to the chat they switched from, skipping the chat selection screen.
|
||||
switch_inline_query_current_chat (:obj:`str`, optional): If set, pressing the button will
|
||||
insert the bot's username and the specified inline query in the current chat's input
|
||||
@@ -118,11 +117,11 @@ class InlineKeyboardButton(TelegramObject):
|
||||
offers a quick way for the user to open your bot in inline mode in the same chat - good
|
||||
for selecting something from multiple options.
|
||||
callback_game (:class:`telegram.CallbackGame`, optional): Description of the game that will
|
||||
be launched when the user presses the button. This type of button must always be
|
||||
the ``first`` button in the first row.
|
||||
be launched when the user presses the button. This type of button **must** always be
|
||||
the **first** button in the first row.
|
||||
pay (:obj:`bool`, optional): Specify :obj:`True`, to send a Pay button. This type of button
|
||||
must always be the `first` button in the first row and can only be used in invoice
|
||||
messages.
|
||||
**must** always be the **first** button in the first row and can only be used in
|
||||
invoice messages.
|
||||
|
||||
Attributes:
|
||||
text (:obj:`str`): Label text on the button.
|
||||
@@ -148,15 +147,24 @@ class InlineKeyboardButton(TelegramObject):
|
||||
private chats between a user and the bot.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
switch_inline_query (:obj:`str`): Optional. Will prompt the user to select one of their
|
||||
chats, open that chat and insert the bot's username and the specified inline query in
|
||||
the input field. Can be empty, in which case just the bot's username will be inserted.
|
||||
switch_inline_query_current_chat (:obj:`str`): Optional. Will insert the bot's username and
|
||||
the specified inline query in the current chat's input field. Can be empty, in which
|
||||
case just the bot's username will be inserted.
|
||||
switch_inline_query (:obj:`str`): Optional. If set, pressing the button will prompt the
|
||||
user to select one of their chats, open that chat and insert the bot's username and the
|
||||
specified inline query in the input field. Can be empty, in which case just the bot's
|
||||
username will be inserted. This offers an easy way for users to start using your bot
|
||||
in inline mode when they are currently in a private chat with it. Especially useful
|
||||
when combined with ``switch_pm*`` actions - in this case the user will be automatically
|
||||
returned to the chat they switched from, skipping the chat selection screen.
|
||||
switch_inline_query_current_chat (:obj:`str`): Optional. If set, pressing the button will
|
||||
insert the bot's username and the specified inline query in the current chat's input
|
||||
field. Can be empty, in which case only the bot's username will be inserted. This
|
||||
offers a quick way for the user to open your bot in inline mode in the same chat - good
|
||||
for selecting something from multiple options.
|
||||
callback_game (:class:`telegram.CallbackGame`): Optional. Description of the game that will
|
||||
be launched when the user presses the button.
|
||||
pay (:obj:`bool`): Optional. Specify :obj:`True`, to send a Pay button.
|
||||
be launched when the user presses the button. This type of button **must** always be
|
||||
the **first** button in the first row.
|
||||
pay (:obj:`bool`): Optional. Specify :obj:`True`, to send a Pay button. This type of button
|
||||
**must** always be the **first** button in the first row and can only be used in
|
||||
invoice messages.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
# You should have received a copy of the GNU Lesser Public License
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
"""This module contains an object that represents a Telegram InlineKeyboardMarkup."""
|
||||
from typing import TYPE_CHECKING, List, Optional, Sequence
|
||||
from typing import TYPE_CHECKING, Optional, Sequence
|
||||
|
||||
from telegram._inline.inlinekeyboardbutton import InlineKeyboardButton
|
||||
from telegram._telegramobject import TelegramObject
|
||||
@@ -111,7 +111,7 @@ class InlineKeyboardMarkup(TelegramObject):
|
||||
|
||||
@classmethod
|
||||
def from_row(
|
||||
cls, button_row: List[InlineKeyboardButton], **kwargs: object
|
||||
cls, button_row: Sequence[InlineKeyboardButton], **kwargs: object
|
||||
) -> "InlineKeyboardMarkup":
|
||||
"""Shortcut for::
|
||||
|
||||
@@ -120,15 +120,18 @@ class InlineKeyboardMarkup(TelegramObject):
|
||||
Return an InlineKeyboardMarkup from a single row of InlineKeyboardButtons
|
||||
|
||||
Args:
|
||||
button_row (List[:class:`telegram.InlineKeyboardButton`]): The button to use in the
|
||||
markup
|
||||
button_row (Sequence[:class:`telegram.InlineKeyboardButton`]): The button to use
|
||||
in the markup
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceargs|
|
||||
|
||||
"""
|
||||
return cls([button_row], **kwargs) # type: ignore[arg-type]
|
||||
|
||||
@classmethod
|
||||
def from_column(
|
||||
cls, button_column: List[InlineKeyboardButton], **kwargs: object
|
||||
cls, button_column: Sequence[InlineKeyboardButton], **kwargs: object
|
||||
) -> "InlineKeyboardMarkup":
|
||||
"""Shortcut for::
|
||||
|
||||
@@ -137,8 +140,11 @@ class InlineKeyboardMarkup(TelegramObject):
|
||||
Return an InlineKeyboardMarkup from a single column of InlineKeyboardButtons
|
||||
|
||||
Args:
|
||||
button_column (List[:class:`telegram.InlineKeyboardButton`]): The button to use in the
|
||||
markup
|
||||
button_column (Sequence[:class:`telegram.InlineKeyboardButton`]): The button to use
|
||||
in the markup
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceargs|
|
||||
|
||||
"""
|
||||
button_grid = [[button] for button in button_column]
|
||||
|
||||
@@ -72,11 +72,16 @@ class InlineQuery(TelegramObject):
|
||||
query (:obj:`str`): Text of the query (up to
|
||||
:tg-const:`telegram.InlineQuery.MAX_QUERY_LENGTH` characters).
|
||||
offset (:obj:`str`): Offset of the results to be returned, can be controlled by the bot.
|
||||
location (:class:`telegram.Location`): Optional. Sender location, only for bots that
|
||||
request user location.
|
||||
chat_type (:obj:`str`): Optional. Type of the chat, from which the inline query was sent.
|
||||
Can be either :tg-const:`telegram.Chat.SENDER` for a private chat with the inline query
|
||||
sender, :tg-const:`telegram.Chat.PRIVATE`, :tg-const:`telegram.Chat.GROUP`,
|
||||
:tg-const:`telegram.Chat.SUPERGROUP` or :tg-const:`telegram.Chat.CHANNEL`. The chat
|
||||
type should be always known for requests sent from official clients and most
|
||||
third-party clients, unless the request was sent from a secret chat.
|
||||
|
||||
.. versionadded:: 13.5
|
||||
location (:class:`telegram.Location`): Optional. Sender location, only for bots that
|
||||
request user location.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultAudio(InlineQueryResult):
|
||||
Alternatively, you can use :attr:`input_message_content` to send a message with the specified
|
||||
content instead of the audio.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -71,7 +73,7 @@ class InlineQueryResultAudio(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultCachedAudio(InlineQueryResult):
|
||||
file will be sent by the user. Alternatively, you can use :attr:`input_message_content` to
|
||||
send a message with the specified content instead of the audio.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -66,7 +68,7 @@ class InlineQueryResultCachedAudio(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultCachedDocument(InlineQueryResult):
|
||||
by the user with an optional caption. Alternatively, you can use :attr:`input_message_content`
|
||||
to send a message with the specified content instead of the file.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -70,7 +72,7 @@ class InlineQueryResultCachedDocument(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -38,12 +38,14 @@ class InlineQueryResultCachedGif(InlineQueryResult):
|
||||
use :attr:`input_message_content` to send a message with specified content instead of
|
||||
the animation.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
:tg-const:`telegram.InlineQueryResult.MAX_ID_LENGTH` Bytes.
|
||||
gif_file_id (:obj:`str`): A valid file identifier for the GIF file.
|
||||
title (:obj:`str`, optional): Title for the result.caption (:obj:`str`, optional):
|
||||
title (:obj:`str`, optional): Title for the result.
|
||||
caption (:obj:`str`, optional): Caption of the GIF file to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
@@ -69,7 +71,7 @@ class InlineQueryResultCachedGif(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultCachedMpeg4Gif(InlineQueryResult):
|
||||
optional caption. Alternatively, you can use :attr:`input_message_content` to send a message
|
||||
with the specified content instead of the animation.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -69,7 +71,7 @@ class InlineQueryResultCachedMpeg4Gif(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultCachedPhoto(InlineQueryResult):
|
||||
:attr:`input_message_content` to send a message with the specified content instead
|
||||
of the photo.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -71,7 +73,7 @@ class InlineQueryResultCachedPhoto(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
||||
entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ class InlineQueryResultCachedSticker(InlineQueryResult):
|
||||
be sent by the user. Alternatively, you can use :attr:`input_message_content` to send a
|
||||
message with the specified content instead of the sticker.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultCachedVideo(InlineQueryResult):
|
||||
:attr:`input_message_content` to send a message with the specified content instead
|
||||
of the video.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -67,7 +69,7 @@ class InlineQueryResultCachedVideo(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
||||
entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultCachedVoice(InlineQueryResult):
|
||||
message will be sent by the user. Alternatively, you can use :attr:`input_message_content` to
|
||||
send a message with the specified content instead of the voice message.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -47,7 +49,8 @@ class InlineQueryResultCachedVoice(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`, optional): |parse_mode|
|
||||
caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|
|
||||
caption_entities (Sequence[:class:`telegram.MessageEntity`], optional):
|
||||
|captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceclassargs|
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultDocument(InlineQueryResult):
|
||||
specified content instead of the file. Currently, only .PDF and .ZIP files can be sent
|
||||
using this method.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -74,7 +76,7 @@ class InlineQueryResultDocument(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultGif(InlineQueryResult):
|
||||
the user with optional caption. Alternatively, you can use :attr:`input_message_content` to
|
||||
send a message with the specified content instead of the animation.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -75,13 +77,14 @@ class InlineQueryResultGif(InlineQueryResult):
|
||||
gif_duration (:obj:`int`): Optional. Duration of the GIF in seconds.
|
||||
thumb_url (:obj:`str`): URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for
|
||||
the result.
|
||||
thumb_mime_type (:obj:`str`): Optional. MIME type of the thumbnail.
|
||||
thumb_mime_type (:obj:`str`): Optional. MIME type of the thumbnail, must be one of
|
||||
``'image/jpeg'``, ``'image/gif'``, or ``'video/mp4'``. Defaults to ``'image/jpeg'``.
|
||||
title (:obj:`str`): Optional. Title for the result.
|
||||
caption (:obj:`str`): Optional. Caption of the GIF file to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -75,13 +75,21 @@ class InlineQueryResultLocation(InlineQueryResult):
|
||||
longitude (:obj:`float`): Location longitude in degrees.
|
||||
title (:obj:`str`): Location title.
|
||||
horizontal_accuracy (:obj:`float`): Optional. The radius of uncertainty for the location,
|
||||
measured in meters.
|
||||
live_period (:obj:`int`): Optional. Period in seconds for which the location can be
|
||||
updated, should be between 60 and 86400.
|
||||
measured in meters; 0-
|
||||
:tg-const:`telegram.InlineQueryResultLocation.HORIZONTAL_ACCURACY`.
|
||||
live_period (:obj:`int`): Optional. Period in seconds for which the location will be
|
||||
updated, should be between
|
||||
:tg-const:`telegram.InlineQueryResultLocation.MIN_LIVE_PERIOD` and
|
||||
:tg-const:`telegram.InlineQueryResultLocation.MAX_LIVE_PERIOD`.
|
||||
heading (:obj:`int`): Optional. For live locations, a direction in which the user is
|
||||
moving, in degrees.
|
||||
proximity_alert_radius (:obj:`int`): Optional. For live locations, a maximum distance for
|
||||
proximity alerts about approaching another chat member, in meters.
|
||||
moving, in degrees. Must be between
|
||||
:tg-const:`telegram.InlineQueryResultLocation.MIN_HEADING` and
|
||||
:tg-const:`telegram.InlineQueryResultLocation.MAX_HEADING` if specified.
|
||||
proximity_alert_radius (:obj:`int`): Optional. For live locations, a maximum distance
|
||||
for proximity alerts about approaching another chat member, in meters. Must be
|
||||
between :tg-const:`telegram.InlineQueryResultLocation.MIN_PROXIMITY_ALERT_RADIUS`
|
||||
and :tg-const:`telegram.InlineQueryResultLocation.MAX_PROXIMITY_ALERT_RADIUS`
|
||||
if specified.
|
||||
reply_markup (:class:`telegram.InlineKeyboardMarkup`): Optional. Inline keyboard attached
|
||||
to the message.
|
||||
input_message_content (:class:`telegram.InputMessageContent`): Optional. Content of the
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult):
|
||||
use :attr:`input_message_content` to send a message with the specified content instead of the
|
||||
animation.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -46,7 +48,8 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult):
|
||||
mpeg4_width (:obj:`int`, optional): Video width.
|
||||
mpeg4_height (:obj:`int`, optional): Video height.
|
||||
mpeg4_duration (:obj:`int`, optional): Video duration in seconds.
|
||||
thumb_url (:obj:`str`): URL of the static thumbnail (jpeg or gif) for the result.
|
||||
thumb_url (:obj:`str`): URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for
|
||||
the result.
|
||||
thumb_mime_type (:obj:`str`): Optional. MIME type of the thumbnail, must be one of
|
||||
``'image/jpeg'``, ``'image/gif'``, or ``'video/mp4'``. Defaults to ``'image/jpeg'``.
|
||||
title (:obj:`str`, optional): Title for the result.
|
||||
@@ -54,7 +57,8 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
after entities parsing.
|
||||
parse_mode (:obj:`str`, optional): |parse_mode|
|
||||
caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|
|
||||
caption_entities (Sequence[:class:`telegram.MessageEntity`], optional):
|
||||
|captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceclassargs|
|
||||
@@ -75,7 +79,8 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult):
|
||||
mpeg4_duration (:obj:`int`): Optional. Video duration in seconds.
|
||||
thumb_url (:obj:`str`): URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for
|
||||
the result.
|
||||
thumb_mime_type (:obj:`str`): Optional. MIME type of the thumbnail.
|
||||
thumb_mime_type (:obj:`str`): Optional. MIME type of the thumbnail, must be one of
|
||||
``'image/jpeg'``, ``'image/gif'``, or ``'video/mp4'``. Defaults to ``'image/jpeg'``.
|
||||
title (:obj:`str`): Optional. Title for the result.
|
||||
caption (:obj:`str`): Optional. Caption of the MPEG-4 file to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
|
||||
|
||||
@@ -37,6 +37,8 @@ class InlineQueryResultPhoto(InlineQueryResult):
|
||||
caption. Alternatively, you can use :attr:`input_message_content` to send a message with the
|
||||
specified content instead of the photo.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -78,7 +80,7 @@ class InlineQueryResultPhoto(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
||||
entities parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ class InlineQueryResultVenue(InlineQueryResult):
|
||||
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): Inline keyboard attached
|
||||
to the message.
|
||||
input_message_content (:class:`telegram.InputMessageContent`, optional): Content of the
|
||||
message to be sent instead of the location.
|
||||
message to be sent instead of the venue.
|
||||
thumb_url (:obj:`str`, optional): Url of the thumbnail for the result.
|
||||
thumb_width (:obj:`int`, optional): Thumbnail width.
|
||||
thumb_height (:obj:`int`, optional): Thumbnail height.
|
||||
@@ -74,8 +74,12 @@ class InlineQueryResultVenue(InlineQueryResult):
|
||||
address (:obj:`str`): Address of the venue.
|
||||
foursquare_id (:obj:`str`): Optional. Foursquare identifier of the venue if known.
|
||||
foursquare_type (:obj:`str`): Optional. Foursquare type of the venue, if known.
|
||||
(For example, "arts_entertainment/default", "arts_entertainment/aquarium" or
|
||||
"food/icecream".)
|
||||
google_place_id (:obj:`str`): Optional. Google Places identifier of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue. (See
|
||||
`supported types <https://developers.google.com/maps/documentation/places/web-service\
|
||||
/supported_types>`_.)
|
||||
reply_markup (:class:`telegram.InlineKeyboardMarkup`): Optional. Inline keyboard attached
|
||||
to the message.
|
||||
input_message_content (:class:`telegram.InputMessageContent`): Optional. Content of the
|
||||
|
||||
@@ -42,6 +42,8 @@ class InlineQueryResultVideo(InlineQueryResult):
|
||||
If an InlineQueryResultVideo message contains an embedded video (e.g., YouTube), you must
|
||||
replace its content using :attr:`input_message_content`.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -50,7 +52,7 @@ class InlineQueryResultVideo(InlineQueryResult):
|
||||
mime_type (:obj:`str`): Mime type of the content of video url, "text/html" or "video/mp4".
|
||||
thumb_url (:obj:`str`): URL of the thumbnail (JPEG only) for the video.
|
||||
title (:obj:`str`): Title for the result.
|
||||
caption (:obj:`str`, optional): Caption,
|
||||
caption (:obj:`str`, optional): Caption of the video to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`, optional): |parse_mode|
|
||||
@@ -67,7 +69,7 @@ class InlineQueryResultVideo(InlineQueryResult):
|
||||
to the message.
|
||||
input_message_content (:class:`telegram.InputMessageContent`, optional): Content of the
|
||||
message to be sent instead of the video. This field is required if
|
||||
InlineQueryResultVideo is used to send an HTML-page as a result
|
||||
``InlineQueryResultVideo`` is used to send an HTML-page as a result
|
||||
(e.g., a YouTube video).
|
||||
|
||||
Attributes:
|
||||
@@ -80,10 +82,11 @@ class InlineQueryResultVideo(InlineQueryResult):
|
||||
thumb_url (:obj:`str`): URL of the thumbnail (JPEG only) for the video.
|
||||
title (:obj:`str`): Title for the result.
|
||||
caption (:obj:`str`): Optional. Caption of the video to be sent,
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
||||
entities parsing.
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Sequence[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional.
|
||||
|captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -94,11 +97,11 @@ class InlineQueryResultVideo(InlineQueryResult):
|
||||
video_height (:obj:`int`): Optional. Video height.
|
||||
video_duration (:obj:`int`): Optional. Video duration in seconds.
|
||||
description (:obj:`str`): Optional. Short description of the result.
|
||||
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): Inline keyboard attached
|
||||
reply_markup (:class:`telegram.InlineKeyboardMarkup`): Optional. Inline keyboard attached
|
||||
to the message.
|
||||
input_message_content (:class:`telegram.InputMessageContent`): Optional. Content of the
|
||||
message to be sent instead of the video. This field is required if
|
||||
InlineQueryResultVideo is used to send an HTML-page as a result
|
||||
``InlineQueryResultVideo`` is used to send an HTML-page as a result
|
||||
(e.g., a YouTube video).
|
||||
|
||||
"""
|
||||
|
||||
@@ -38,6 +38,8 @@ class InlineQueryResultVoice(InlineQueryResult):
|
||||
:attr:`input_message_content` to send a message with the specified content instead of
|
||||
the voice message.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
Args:
|
||||
id (:obj:`str`): Unique identifier for this result,
|
||||
:tg-const:`telegram.InlineQueryResult.MIN_ID_LENGTH`-
|
||||
@@ -70,7 +72,7 @@ class InlineQueryResultVoice(InlineQueryResult):
|
||||
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
caption_entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
|
||||
@@ -56,14 +56,12 @@ class InputContactMessageContent(InputMessageContent):
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
with self._unfrozen():
|
||||
# Required
|
||||
self.phone_number = phone_number
|
||||
self.first_name = first_name
|
||||
# Optionals
|
||||
self.last_name = last_name
|
||||
self.vcard = vcard
|
||||
|
||||
# Required
|
||||
self.phone_number = phone_number
|
||||
self.first_name = first_name
|
||||
# Optionals
|
||||
self.last_name = last_name
|
||||
self.vcard = vcard
|
||||
|
||||
self._id_attrs = (self.phone_number,)
|
||||
|
||||
self._freeze()
|
||||
self._id_attrs = (self.phone_number,)
|
||||
|
||||
@@ -115,22 +115,33 @@ class InputInvoiceMessageContent(InputMessageContent):
|
||||
currency (:obj:`str`): Three-letter ISO 4217 currency code, see more on
|
||||
`currencies <https://core.telegram.org/bots/payments#supported-currencies>`_
|
||||
prices (Tuple[:class:`telegram.LabeledPrice`]): Price breakdown, a list of
|
||||
components.
|
||||
components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus,
|
||||
etc.)
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
max_tip_amount (:obj:`int`): Optional. The maximum accepted amount for tips in the smallest
|
||||
units of the currency (integer, not float/double).
|
||||
max_tip_amount (:obj:`int`): Optional. 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 ``max_tip_amount`` is ``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``.
|
||||
suggested_tip_amounts (Tuple[:obj:`int`]): Optional. An array of suggested
|
||||
amounts of tip in the smallest units of the currency (integer, not float/double).
|
||||
amounts of tip in the *smallest* units of the currency (integer, **not** float/double).
|
||||
At most 4 suggested tip amounts can be specified. The suggested tip amounts must be
|
||||
positive, passed in a strictly increased order and must not exceed
|
||||
:attr:`max_tip_amount`.
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
provider_data (:obj:`str`): Optional. An object for data about the invoice,
|
||||
which will be shared with the payment provider.
|
||||
photo_url (:obj:`str`): Optional. URL of the product photo for the invoice.
|
||||
which will be shared with the payment provider. A detailed description of the required
|
||||
fields should be provided by the payment provider.
|
||||
photo_url (:obj:`str`): Optional. URL of the product photo for the invoice. Can be a photo
|
||||
of the goods or a marketing image for a service. People like it better when they see
|
||||
what they are paying for.
|
||||
photo_size (:obj:`int`): Optional. Photo size.
|
||||
photo_width (:obj:`int`): Optional. Photo width.
|
||||
photo_height (:obj:`int`): Optional. Photo height.
|
||||
@@ -200,39 +211,38 @@ class InputInvoiceMessageContent(InputMessageContent):
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
# Required
|
||||
self.title = title
|
||||
self.description = description
|
||||
self.payload = payload
|
||||
self.provider_token = provider_token
|
||||
self.currency = currency
|
||||
self.prices = parse_sequence_arg(prices)
|
||||
# Optionals
|
||||
self.max_tip_amount = max_tip_amount
|
||||
self.suggested_tip_amounts = parse_sequence_arg(suggested_tip_amounts)
|
||||
self.provider_data = provider_data
|
||||
self.photo_url = photo_url
|
||||
self.photo_size = photo_size
|
||||
self.photo_width = photo_width
|
||||
self.photo_height = photo_height
|
||||
self.need_name = need_name
|
||||
self.need_phone_number = need_phone_number
|
||||
self.need_email = need_email
|
||||
self.need_shipping_address = need_shipping_address
|
||||
self.send_phone_number_to_provider = send_phone_number_to_provider
|
||||
self.send_email_to_provider = send_email_to_provider
|
||||
self.is_flexible = is_flexible
|
||||
with self._unfrozen():
|
||||
# Required
|
||||
self.title = title
|
||||
self.description = description
|
||||
self.payload = payload
|
||||
self.provider_token = provider_token
|
||||
self.currency = currency
|
||||
self.prices = parse_sequence_arg(prices)
|
||||
# Optionals
|
||||
self.max_tip_amount = max_tip_amount
|
||||
self.suggested_tip_amounts = parse_sequence_arg(suggested_tip_amounts)
|
||||
self.provider_data = provider_data
|
||||
self.photo_url = photo_url
|
||||
self.photo_size = photo_size
|
||||
self.photo_width = photo_width
|
||||
self.photo_height = photo_height
|
||||
self.need_name = need_name
|
||||
self.need_phone_number = need_phone_number
|
||||
self.need_email = need_email
|
||||
self.need_shipping_address = need_shipping_address
|
||||
self.send_phone_number_to_provider = send_phone_number_to_provider
|
||||
self.send_email_to_provider = send_email_to_provider
|
||||
self.is_flexible = is_flexible
|
||||
|
||||
self._id_attrs = (
|
||||
self.title,
|
||||
self.description,
|
||||
self.payload,
|
||||
self.provider_token,
|
||||
self.currency,
|
||||
self.prices,
|
||||
)
|
||||
|
||||
self._freeze()
|
||||
self._id_attrs = (
|
||||
self.title,
|
||||
self.description,
|
||||
self.payload,
|
||||
self.provider_token,
|
||||
self.currency,
|
||||
self.prices,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def de_json(
|
||||
|
||||
@@ -57,13 +57,21 @@ class InputLocationMessageContent(InputMessageContent):
|
||||
latitude (:obj:`float`): Latitude of the location in degrees.
|
||||
longitude (:obj:`float`): Longitude of the location in degrees.
|
||||
horizontal_accuracy (:obj:`float`): Optional. The radius of uncertainty for the location,
|
||||
measured in meters.
|
||||
live_period (:obj:`int`): Optional. Period in seconds for which the location can be
|
||||
updated.
|
||||
measured in meters; 0-
|
||||
:tg-const:`telegram.InputLocationMessageContent.HORIZONTAL_ACCURACY`.
|
||||
live_period (:obj:`int`): Optional. Period in seconds for which the location can be
|
||||
updated, should be between
|
||||
:tg-const:`telegram.InputLocationMessageContent.MIN_LIVE_PERIOD` and
|
||||
:tg-const:`telegram.InputLocationMessageContent.MAX_LIVE_PERIOD`.
|
||||
heading (:obj:`int`): Optional. For live locations, a direction in which the user is
|
||||
moving, in degrees.
|
||||
proximity_alert_radius (:obj:`int`): Optional. For live locations, a maximum distance for
|
||||
proximity alerts about approaching another chat member, in meters.
|
||||
moving, in degrees. Must be between
|
||||
:tg-const:`telegram.InputLocationMessageContent.MIN_HEADING` and
|
||||
:tg-const:`telegram.InputLocationMessageContent.MAX_HEADING` if specified.
|
||||
proximity_alert_radius (:obj:`int`): Optional. For live locations, a maximum distance
|
||||
for proximity alerts about approaching another chat member, in meters. Must be
|
||||
between :tg-const:`telegram.InputLocationMessageContent.MIN_PROXIMITY_ALERT_RADIUS`
|
||||
and :tg-const:`telegram.InputLocationMessageContent.MAX_PROXIMITY_ALERT_RADIUS`
|
||||
if specified.
|
||||
|
||||
"""
|
||||
|
||||
@@ -83,21 +91,20 @@ class InputLocationMessageContent(InputMessageContent):
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
# Required
|
||||
self.latitude = latitude
|
||||
self.longitude = longitude
|
||||
with self._unfrozen():
|
||||
# Required
|
||||
self.latitude = latitude
|
||||
self.longitude = longitude
|
||||
|
||||
# Optionals
|
||||
self.live_period = live_period
|
||||
self.horizontal_accuracy = horizontal_accuracy
|
||||
self.heading = heading
|
||||
self.proximity_alert_radius = (
|
||||
int(proximity_alert_radius) if proximity_alert_radius else None
|
||||
)
|
||||
# Optionals
|
||||
self.live_period = live_period
|
||||
self.horizontal_accuracy = horizontal_accuracy
|
||||
self.heading = heading
|
||||
self.proximity_alert_radius = (
|
||||
int(proximity_alert_radius) if proximity_alert_radius else None
|
||||
)
|
||||
|
||||
self._id_attrs = (self.latitude, self.longitude)
|
||||
|
||||
self._freeze()
|
||||
self._id_attrs = (self.latitude, self.longitude)
|
||||
|
||||
HORIZONTAL_ACCURACY: ClassVar[int] = constants.LocationLimit.HORIZONTAL_ACCURACY
|
||||
""":const:`telegram.constants.LocationLimit.HORIZONTAL_ACCURACY`
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
"""This module contains the classes that represent Telegram InputMessageContent."""
|
||||
|
||||
from telegram._telegramobject import TelegramObject
|
||||
from telegram._utils.types import JSONDict
|
||||
|
||||
|
||||
class InputMessageContent(TelegramObject):
|
||||
@@ -32,3 +33,8 @@ class InputMessageContent(TelegramObject):
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
@@ -52,10 +52,11 @@ class InputTextMessageContent(InputMessageContent):
|
||||
|
||||
Attributes:
|
||||
message_text (:obj:`str`): Text of the message to be sent,
|
||||
1-:tg-const:`telegram.constants.MessageLimit.MAX_TEXT_LENGTH` characters after entities
|
||||
:tg-const:`telegram.constants.MessageLimit.MIN_TEXT_LENGTH`-
|
||||
:tg-const:`telegram.constants.MessageLimit.MAX_TEXT_LENGTH` characters after entities
|
||||
parsing.
|
||||
parse_mode (:obj:`str`): Optional. |parse_mode|
|
||||
entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |caption_entities|
|
||||
entities (Tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -78,13 +79,12 @@ class InputTextMessageContent(InputMessageContent):
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
# Required
|
||||
self.message_text = message_text
|
||||
# Optionals
|
||||
self.parse_mode = parse_mode
|
||||
self.entities = parse_sequence_arg(entities)
|
||||
self.disable_web_page_preview = disable_web_page_preview
|
||||
with self._unfrozen():
|
||||
# Required
|
||||
self.message_text = message_text
|
||||
# Optionals
|
||||
self.parse_mode = parse_mode
|
||||
self.entities = parse_sequence_arg(entities)
|
||||
self.disable_web_page_preview = disable_web_page_preview
|
||||
|
||||
self._id_attrs = (self.message_text,)
|
||||
|
||||
self._freeze()
|
||||
self._id_attrs = (self.message_text,)
|
||||
|
||||
@@ -54,8 +54,12 @@ class InputVenueMessageContent(InputMessageContent):
|
||||
address (:obj:`str`): Address of the venue.
|
||||
foursquare_id (:obj:`str`): Optional. Foursquare identifier of the venue, if known.
|
||||
foursquare_type (:obj:`str`): Optional. Foursquare type of the venue, if known.
|
||||
(For example, "arts_entertainment/default", "arts_entertainment/aquarium" or
|
||||
"food/icecream".)
|
||||
google_place_id (:obj:`str`): Optional. Google Places identifier of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue.
|
||||
google_place_type (:obj:`str`): Optional. Google Places type of the venue. (See
|
||||
`supported types <https://developers.google.com/maps/documentation/places/web-service\
|
||||
/supported_types>`_.)
|
||||
|
||||
"""
|
||||
|
||||
@@ -84,22 +88,20 @@ class InputVenueMessageContent(InputMessageContent):
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
with self._unfrozen():
|
||||
# Required
|
||||
self.latitude = latitude
|
||||
self.longitude = longitude
|
||||
self.title = title
|
||||
self.address = address
|
||||
# Optionals
|
||||
self.foursquare_id = foursquare_id
|
||||
self.foursquare_type = foursquare_type
|
||||
self.google_place_id = google_place_id
|
||||
self.google_place_type = google_place_type
|
||||
|
||||
# Required
|
||||
self.latitude = latitude
|
||||
self.longitude = longitude
|
||||
self.title = title
|
||||
self.address = address
|
||||
# Optionals
|
||||
self.foursquare_id = foursquare_id
|
||||
self.foursquare_type = foursquare_type
|
||||
self.google_place_id = google_place_id
|
||||
self.google_place_type = google_place_type
|
||||
|
||||
self._id_attrs = (
|
||||
self.latitude,
|
||||
self.longitude,
|
||||
self.title,
|
||||
)
|
||||
|
||||
self._freeze()
|
||||
self._id_attrs = (
|
||||
self.latitude,
|
||||
self.longitude,
|
||||
self.title,
|
||||
)
|
||||
|
||||
@@ -68,12 +68,19 @@ class KeyboardButton(TelegramObject):
|
||||
|
||||
.. versionadded:: 20.0
|
||||
Attributes:
|
||||
text (:obj:`str`): Text of the button.
|
||||
request_contact (:obj:`bool`): Optional. The user's phone number will be sent.
|
||||
request_location (:obj:`bool`): Optional. The user's current location will be sent.
|
||||
request_poll (:class:`KeyboardButtonPollType`): Optional. If the user should create a poll.
|
||||
web_app (:class:`WebAppInfo`): Optional. If the described Web App will be launched when the
|
||||
button is pressed.
|
||||
text (:obj:`str`): Text of the button. If none of the optional fields are used, it will be
|
||||
sent to the bot as a message when the button is pressed.
|
||||
request_contact (:obj:`bool`): Optional. If :obj:`True`, the user's phone number will be
|
||||
sent as a contact when the button is pressed. Available in private chats only.
|
||||
request_location (:obj:`bool`): Optional. If :obj:`True`, the user's current location will
|
||||
be sent when the button is pressed. Available in private chats only.
|
||||
request_poll (:class:`KeyboardButtonPollType`): Optional. If specified, the user will be
|
||||
asked to create a poll and send it to the bot when the button is pressed. Available in
|
||||
private chats only.
|
||||
web_app (:class:`WebAppInfo`): Optional. If specified, the described `Web App
|
||||
<https://core.telegram.org/bots/webapps>`_ will be launched when the button is pressed.
|
||||
The Web App will be able to send a :attr:`Message.web_app_data` service message.
|
||||
Available in private chats only.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
@@ -32,11 +32,16 @@ class KeyboardButtonPollType(TelegramObject):
|
||||
Examples:
|
||||
:any:`Poll Bot <examples.pollbot>`
|
||||
|
||||
Attributes:
|
||||
type (:obj:`str`): Optional. If :tg-const:`telegram.Poll.QUIZ` is passed, the user will be
|
||||
Args:
|
||||
type (:obj:`str`, optional): If :tg-const:`telegram.Poll.QUIZ` is passed, the user will be
|
||||
allowed to create only polls in the quiz mode. If :tg-const:`telegram.Poll.REGULAR` is
|
||||
passed, only regular polls will be allowed. Otherwise, the user will be allowed to
|
||||
create a poll of any type.
|
||||
Attributes:
|
||||
type (:obj:`str`): Optional. If equals :tg-const:`telegram.Poll.QUIZ`, the user will
|
||||
be allowed to create only polls in the quiz mode. If equals
|
||||
:tg-const:`telegram.Poll.REGULAR`, only regular polls will be allowed.
|
||||
Otherwise, the user will be allowed to create a poll of any type.
|
||||
"""
|
||||
|
||||
__slots__ = ("type",)
|
||||
|
||||
+15
-3
@@ -44,7 +44,7 @@ class LoginUrl(TelegramObject):
|
||||
the original URL without information about the user will be opened. The data added is
|
||||
the same as described in
|
||||
`Receiving authorization data
|
||||
<https://core.telegram.org/widgets/login#receiving-authorization-data>`_
|
||||
<https://core.telegram.org/widgets/login#receiving-authorization-data>`_.
|
||||
forward_text (:obj:`str`, optional): New text of the button in forwarded messages.
|
||||
bot_username (:obj:`str`, optional): Username of a bot, which will be used for user
|
||||
authorization. See
|
||||
@@ -59,10 +59,22 @@ class LoginUrl(TelegramObject):
|
||||
for your bot to send messages to the user.
|
||||
|
||||
Attributes:
|
||||
url (:obj:`str`): An HTTPS URL to be opened with user authorization data.
|
||||
url (:obj:`str`): An HTTPS URL to be opened with user authorization data added to the query
|
||||
string when the button is pressed. If the user refuses to provide authorization data,
|
||||
the original URL without information about the user will be opened. The data added is
|
||||
the same as described in
|
||||
`Receiving authorization data
|
||||
<https://core.telegram.org/widgets/login#receiving-authorization-data>`_.
|
||||
forward_text (:obj:`str`): Optional. New text of the button in forwarded messages.
|
||||
bot_username (:obj:`str`): Optional. Username of a bot, which will be used for user
|
||||
authorization.
|
||||
authorization. See
|
||||
`Setting up a bot <https://core.telegram.org/widgets/login#setting-up-a-bot>`_
|
||||
for more details. If not specified, the current
|
||||
bot's username will be assumed. The url's domain must be the same as the domain linked
|
||||
with the bot. See
|
||||
`Linking your domain to the bot
|
||||
<https://core.telegram.org/widgets/login#linking-your-domain-to-the-bot>`_
|
||||
for more details.
|
||||
request_write_access (:obj:`bool`): Optional. Pass :obj:`True` to request the permission
|
||||
for your bot to send messages to the user.
|
||||
|
||||
|
||||
@@ -133,14 +133,16 @@ class MenuButtonWebApp(MenuButton):
|
||||
text (:obj:`str`): Text of the button.
|
||||
web_app (:class:`telegram.WebAppInfo`): Description of the Web App that will be launched
|
||||
when the user presses the button. The Web App will be able to send an arbitrary
|
||||
message on behalf of the user using the method :meth:`~telegram.Bot.answerWebAppQuery`.
|
||||
message on behalf of the user using the method :meth:`~telegram.Bot.answerWebAppQuery`
|
||||
of :class:`~telegram.Bot`.
|
||||
|
||||
Attributes:
|
||||
type (:obj:`str`): :tg-const:`telegram.constants.MenuButtonType.WEB_APP`.
|
||||
text (:obj:`str`): Text of the button.
|
||||
web_app (:class:`telegram.WebAppInfo`): Description of the Web App that will be launched
|
||||
when the user presses the button. The Web App will be able to send an arbitrary
|
||||
message on behalf of the user using the method :meth:`~telegram.Bot.answerWebAppQuery`.
|
||||
message on behalf of the user using the method :meth:`~telegram.Bot.answerWebAppQuery`
|
||||
of :class:`~telegram.Bot`.
|
||||
"""
|
||||
|
||||
__slots__ = ("text", "web_app")
|
||||
|
||||
+129
-33
@@ -36,7 +36,14 @@ from telegram._files.venue import Venue
|
||||
from telegram._files.video import Video
|
||||
from telegram._files.videonote import VideoNote
|
||||
from telegram._files.voice import Voice
|
||||
from telegram._forumtopic import ForumTopicClosed, ForumTopicCreated, ForumTopicReopened
|
||||
from telegram._forumtopic import (
|
||||
ForumTopicClosed,
|
||||
ForumTopicCreated,
|
||||
ForumTopicEdited,
|
||||
ForumTopicReopened,
|
||||
GeneralForumTopicHidden,
|
||||
GeneralForumTopicUnhidden,
|
||||
)
|
||||
from telegram._games.game import Game
|
||||
from telegram._inline.inlinekeyboardmarkup import InlineKeyboardMarkup
|
||||
from telegram._messageautodeletetimerchanged import MessageAutoDeleteTimerChanged
|
||||
@@ -59,6 +66,7 @@ from telegram._videochat import (
|
||||
VideoChatStarted,
|
||||
)
|
||||
from telegram._webappdata import WebAppData
|
||||
from telegram._writeaccessallowed import WriteAccessAllowed
|
||||
from telegram.constants import MessageAttachmentType, ParseMode
|
||||
from telegram.helpers import escape_markdown
|
||||
|
||||
@@ -237,8 +245,6 @@ class Message(TelegramObject):
|
||||
of the post author if present.
|
||||
author_signature (:obj:`str`, optional): Signature of the post author for messages in
|
||||
channels, or the custom title of an anonymous group administrator.
|
||||
forward_sender_name (:obj:`str`, optional): Sender's name for messages forwarded from
|
||||
users who disallow adding a link to their account in forwarded messages.
|
||||
passport_data (:class:`telegram.PassportData`, optional): Telegram Passport data.
|
||||
poll (:class:`telegram.Poll`, optional): Message is a native poll,
|
||||
information about the poll.
|
||||
@@ -279,15 +285,35 @@ class Message(TelegramObject):
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_created (:class:`telegram.ForumTopicCreated`, optional): Service message:
|
||||
forum topic created
|
||||
forum topic created.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_closed (:class:`telegram.ForumTopicClosed`, optional): Service message:
|
||||
forum topic closed
|
||||
forum topic closed.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_reopened (:class:`telegram.ForumTopicReopened`, optional): Service message:
|
||||
forum topic reopened
|
||||
forum topic reopened.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_edited (:class:`telegram.ForumTopicEdited`, optional): Service message:
|
||||
forum topic edited.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
general_forum_topic_hidden (:class:`telegram.GeneralForumTopicHidden`, optional):
|
||||
Service message: General forum topic hidden.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
general_forum_topic_unhidden (:class:`telegram.GeneralForumTopicUnhidden`, optional):
|
||||
Service message: General forum topic unhidden.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
write_access_allowed (:class:`telegram.WriteAccessAllowed`, optional): Service message:
|
||||
the user allowed the bot added to the attachment menu to write messages.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_media_spoiler (:obj:`bool`, optional): :obj:`True`, if the message media is covered
|
||||
by a spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
@@ -349,33 +375,48 @@ class Message(TelegramObject):
|
||||
|
||||
audio (:class:`telegram.Audio`): Optional. Message is an audio file, information
|
||||
about the file.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
document (:class:`telegram.Document`): Optional. Message is a general file, information
|
||||
about the file.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
animation (:class:`telegram.Animation`): Optional. Message is an animation, information
|
||||
about the animation. For backward compatibility, when this field is set, the document
|
||||
field will also be set.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
game (:class:`telegram.Game`): Optional. Message is a game, information about the game.
|
||||
photo (Tuple[:class:`telegram.PhotoSize`]): Optional. Message is a photo, available
|
||||
sizes of the photo. This list is empty if the message does not contain a photo.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
sticker (:class:`telegram.Sticker`): Optional. Message is a sticker, information
|
||||
about the sticker.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
video (:class:`telegram.Video`): Optional. Message is a video, information about the
|
||||
video.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
voice (:class:`telegram.Voice`): Optional. Message is a voice message, information about
|
||||
the file.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
video_note (:class:`telegram.VideoNote`): Optional. Message is a video note, information
|
||||
about the video message.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
new_chat_members (Tuple[:class:`telegram.User`]): Optional. New members that were added
|
||||
to the group or supergroup and information about them (the bot itself may be one of
|
||||
these members). This list is empty if the message does not contain new chat members.
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
caption (:obj:`str`): Optional. Caption for the animation, audio, document, photo, video
|
||||
or voice, 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters.
|
||||
contact (:class:`telegram.Contact`): Optional. Message is a shared contact, information
|
||||
@@ -471,15 +512,35 @@ class Message(TelegramObject):
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_created (:class:`telegram.ForumTopicCreated`): Optional. Service message:
|
||||
forum topic created
|
||||
forum topic created.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_closed (:class:`telegram.ForumTopicClosed`): Optional. Service message:
|
||||
forum topic closed
|
||||
forum topic closed.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_reopened (:class:`telegram.ForumTopicReopened`): Optional. Service message:
|
||||
forum topic reopened
|
||||
forum topic reopened.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
forum_topic_edited (:class:`telegram.ForumTopicEdited`): Optional. Service message:
|
||||
forum topic edited.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
general_forum_topic_hidden (:class:`telegram.GeneralForumTopicHidden`): Optional.
|
||||
Service message: General forum topic hidden.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
general_forum_topic_unhidden (:class:`telegram.GeneralForumTopicUnhidden`): Optional.
|
||||
Service message: General forum topic unhidden.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
write_access_allowed (:class:`telegram.WriteAccessAllowed`): Optional. Service message:
|
||||
the user allowed the bot added to the attachment menu to write messages.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
has_media_spoiler (:obj:`bool`): Optional. :obj:`True`, if the message media is covered
|
||||
by a spoiler animation.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
@@ -554,6 +615,11 @@ class Message(TelegramObject):
|
||||
"forum_topic_created",
|
||||
"forum_topic_closed",
|
||||
"forum_topic_reopened",
|
||||
"forum_topic_edited",
|
||||
"general_forum_topic_hidden",
|
||||
"general_forum_topic_unhidden",
|
||||
"write_access_allowed",
|
||||
"has_media_spoiler",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
@@ -622,6 +688,11 @@ class Message(TelegramObject):
|
||||
forum_topic_created: ForumTopicCreated = None,
|
||||
forum_topic_closed: ForumTopicClosed = None,
|
||||
forum_topic_reopened: ForumTopicReopened = None,
|
||||
forum_topic_edited: ForumTopicEdited = None,
|
||||
general_forum_topic_hidden: GeneralForumTopicHidden = None,
|
||||
general_forum_topic_unhidden: GeneralForumTopicUnhidden = None,
|
||||
write_access_allowed: WriteAccessAllowed = None,
|
||||
has_media_spoiler: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -693,6 +764,11 @@ class Message(TelegramObject):
|
||||
self.forum_topic_created = forum_topic_created
|
||||
self.forum_topic_closed = forum_topic_closed
|
||||
self.forum_topic_reopened = forum_topic_reopened
|
||||
self.forum_topic_edited = forum_topic_edited
|
||||
self.general_forum_topic_hidden = general_forum_topic_hidden
|
||||
self.general_forum_topic_unhidden = general_forum_topic_unhidden
|
||||
self.write_access_allowed = write_access_allowed
|
||||
self.has_media_spoiler = has_media_spoiler
|
||||
|
||||
self._effective_attachment = DEFAULT_NONE
|
||||
|
||||
@@ -792,6 +868,16 @@ class Message(TelegramObject):
|
||||
data["forum_topic_reopened"] = ForumTopicReopened.de_json(
|
||||
data.get("forum_topic_reopened"), bot
|
||||
)
|
||||
data["forum_topic_edited"] = ForumTopicEdited.de_json(data.get("forum_topic_edited"), bot)
|
||||
data["general_forum_topic_hidden"] = GeneralForumTopicHidden.de_json(
|
||||
data.get("general_forum_topic_hidden"), bot
|
||||
)
|
||||
data["general_forum_topic_unhidden"] = GeneralForumTopicUnhidden.de_json(
|
||||
data.get("general_forum_topic_unhidden"), bot
|
||||
)
|
||||
data["write_access_allowed"] = WriteAccessAllowed.de_json(
|
||||
data.get("write_access_allowed"), bot
|
||||
)
|
||||
|
||||
return super().de_json(data=data, bot=bot)
|
||||
|
||||
@@ -808,7 +894,7 @@ class Message(TelegramObject):
|
||||
Invoice,
|
||||
Location,
|
||||
PassportData,
|
||||
List[PhotoSize],
|
||||
Sequence[PhotoSize],
|
||||
Poll,
|
||||
Sticker,
|
||||
SuccessfulPayment,
|
||||
@@ -841,6 +927,8 @@ class Message(TelegramObject):
|
||||
|
||||
Otherwise :obj:`None` is returned.
|
||||
|
||||
.. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
:attr:`dice`, :attr:`passport_data` and :attr:`poll` are now also considered to be an
|
||||
attachment.
|
||||
@@ -888,7 +976,7 @@ class Message(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -942,7 +1030,7 @@ class Message(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1006,7 +1094,7 @@ class Message(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1066,7 +1154,7 @@ class Message(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1120,7 +1208,7 @@ class Message(TelegramObject):
|
||||
|
||||
async def reply_media_group(
|
||||
self,
|
||||
media: List[
|
||||
media: Sequence[
|
||||
Union["InputMediaAudio", "InputMediaDocument", "InputMediaPhoto", "InputMediaVideo"]
|
||||
],
|
||||
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
||||
@@ -1137,7 +1225,7 @@ class Message(TelegramObject):
|
||||
api_kwargs: JSONDict = None,
|
||||
caption: Optional[str] = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
) -> Tuple["Message", ...]:
|
||||
"""Shortcut for::
|
||||
|
||||
@@ -1185,9 +1273,10 @@ class Message(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
quote: bool = None,
|
||||
@@ -1231,6 +1320,7 @@ class Message(TelegramObject):
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def reply_audio(
|
||||
@@ -1246,7 +1336,7 @@ class Message(TelegramObject):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1309,7 +1399,7 @@ class Message(TelegramObject):
|
||||
thumb: FileInput = None,
|
||||
disable_content_type_detection: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1372,9 +1462,10 @@ class Message(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
quote: bool = None,
|
||||
@@ -1423,6 +1514,7 @@ class Message(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def reply_sticker(
|
||||
@@ -1488,9 +1580,10 @@ class Message(TelegramObject):
|
||||
supports_streaming: bool = None,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
quote: bool = None,
|
||||
@@ -1539,6 +1632,7 @@ class Message(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def reply_video_note(
|
||||
@@ -1609,7 +1703,7 @@ class Message(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1845,7 +1939,7 @@ class Message(TelegramObject):
|
||||
async def reply_poll(
|
||||
self,
|
||||
question: str,
|
||||
options: List[str],
|
||||
options: Sequence[str],
|
||||
is_anonymous: bool = None,
|
||||
type: str = None, # pylint: disable=redefined-builtin
|
||||
allows_multiple_answers: bool = None,
|
||||
@@ -1859,7 +1953,7 @@ class Message(TelegramObject):
|
||||
open_period: int = None,
|
||||
close_date: Union[int, datetime.datetime] = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
explanation_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
explanation_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1965,6 +2059,7 @@ class Message(TelegramObject):
|
||||
async def reply_chat_action(
|
||||
self,
|
||||
action: str,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -1986,6 +2081,7 @@ class Message(TelegramObject):
|
||||
"""
|
||||
return await self.get_bot().send_chat_action(
|
||||
chat_id=self.chat_id,
|
||||
message_thread_id=message_thread_id,
|
||||
action=action,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
@@ -2052,7 +2148,7 @@ class Message(TelegramObject):
|
||||
payload: str,
|
||||
provider_token: str,
|
||||
currency: str,
|
||||
prices: List["LabeledPrice"],
|
||||
prices: Sequence["LabeledPrice"],
|
||||
start_parameter: str = None,
|
||||
photo_url: str = None,
|
||||
photo_size: int = None,
|
||||
@@ -2071,7 +2167,7 @@ class Message(TelegramObject):
|
||||
send_email_to_provider: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
max_tip_amount: int = None,
|
||||
suggested_tip_amounts: List[int] = None,
|
||||
suggested_tip_amounts: Sequence[int] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -2201,7 +2297,7 @@ class Message(TelegramObject):
|
||||
chat_id: Union[int, str],
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
@@ -2257,7 +2353,7 @@ class Message(TelegramObject):
|
||||
message_id: int,
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
@@ -2321,7 +2417,7 @@ class Message(TelegramObject):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
disable_web_page_preview: ODVInput[bool] = DEFAULT_NONE,
|
||||
reply_markup: InlineKeyboardMarkup = None,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -2368,7 +2464,7 @@ class Message(TelegramObject):
|
||||
caption: str = None,
|
||||
reply_markup: InlineKeyboardMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -2800,8 +2896,8 @@ class Message(TelegramObject):
|
||||
|
||||
async def edit_forum_topic(
|
||||
self,
|
||||
name: str,
|
||||
icon_custom_emoji_id: str,
|
||||
name: str = None,
|
||||
icon_custom_emoji_id: str = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
|
||||
@@ -48,7 +48,7 @@ class MessageEntity(TelegramObject):
|
||||
:attr:`CUSTOM_EMOJI` (for inline custom emoji stickers).
|
||||
|
||||
.. versionadded:: 20.0
|
||||
added inline custom emoji
|
||||
Added inline custom emoji
|
||||
offset (:obj:`int`): Offset in UTF-16 code units to the start of the entity.
|
||||
length (:obj:`int`): Length of the entity in UTF-16 code units.
|
||||
url (:obj:`str`, optional): For :attr:`TEXT_LINK` only, url that will be opened after
|
||||
@@ -77,8 +77,9 @@ class MessageEntity(TelegramObject):
|
||||
length (:obj:`int`): Length of the entity in UTF-16 code units.
|
||||
url (:obj:`str`): Optional. For :attr:`TEXT_LINK` only, url that will be opened after
|
||||
user taps on the text.
|
||||
user (:class:`telegram.User`): Optional. The mentioned user.
|
||||
language (:obj:`str`): Optional. For :attr:`PRE` only, The programming language of
|
||||
user (:class:`telegram.User`): Optional. For :attr:`TEXT_MENTION` only, the mentioned
|
||||
user.
|
||||
language (:obj:`str`): Optional. For :attr:`PRE` only, the programming language of
|
||||
the entity text.
|
||||
custom_emoji_id (:obj:`str`): Optional. For :attr:`CUSTOM_EMOJI` only, unique identifier
|
||||
of the custom emoji. Use :meth:`telegram.Bot.get_custom_emoji_stickers` to get full
|
||||
|
||||
@@ -249,6 +249,28 @@ class SecureData(TelegramObject):
|
||||
This object represents the credentials that were used to decrypt the encrypted data.
|
||||
All fields are optional and depend on fields that were requested.
|
||||
|
||||
Args:
|
||||
personal_details (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
personal details.
|
||||
passport (:class:`telegram.SecureValue`, optional): Credentials for encrypted passport.
|
||||
internal_passport (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
internal passport.
|
||||
driver_license (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
driver license.
|
||||
identity_card (:class:`telegram.SecureValue`, optional): Credentials for encrypted ID card
|
||||
address (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
residential address.
|
||||
utility_bill (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
utility bill.
|
||||
bank_statement (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
bank statement.
|
||||
rental_agreement (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
rental agreement.
|
||||
passport_registration (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
registration from internal passport.
|
||||
temporary_registration (:class:`telegram.SecureValue`, optional): Credentials for encrypted
|
||||
temporary registration.
|
||||
|
||||
Attributes:
|
||||
personal_details (:class:`telegram.SecureValue`): Optional. Credentials for encrypted
|
||||
personal details.
|
||||
@@ -351,6 +373,26 @@ class SecureValue(TelegramObject):
|
||||
This object represents the credentials that were used to decrypt the encrypted value.
|
||||
All fields are optional and depend on the type of field.
|
||||
|
||||
Args:
|
||||
data (:class:`telegram.DataCredentials`, optional): Credentials for encrypted Telegram
|
||||
Passport data. Available for "personal_details", "passport", "driver_license",
|
||||
"identity_card", "identity_passport" and "address" types.
|
||||
front_side (:class:`telegram.FileCredentials`, optional): Credentials for encrypted
|
||||
document's front side. Available for "passport", "driver_license", "identity_card"
|
||||
and "internal_passport".
|
||||
reverse_side (:class:`telegram.FileCredentials`, optional): Credentials for encrypted
|
||||
document's reverse side. Available for "driver_license" and "identity_card".
|
||||
selfie (:class:`telegram.FileCredentials`, optional): Credentials for encrypted selfie
|
||||
of the user with a document. Can be available for "passport", "driver_license",
|
||||
"identity_card" and "internal_passport".
|
||||
translation (List[:class:`telegram.FileCredentials`], optional): Credentials for an
|
||||
encrypted translation of the document. Available for "passport", "driver_license",
|
||||
"identity_card", "internal_passport", "utility_bill", "bank_statement",
|
||||
"rental_agreement", "passport_registration" and "temporary_registration".
|
||||
files (List[:class:`telegram.FileCredentials`], optional): Credentials for encrypted
|
||||
files. Available for "utility_bill", "bank_statement", "rental_agreement",
|
||||
"passport_registration" and "temporary_registration" types.
|
||||
|
||||
Attributes:
|
||||
data (:class:`telegram.DataCredentials`): Optional. Credentials for encrypted Telegram
|
||||
Passport data. Available for "personal_details", "passport", "driver_license",
|
||||
|
||||
@@ -26,6 +26,22 @@ class PersonalDetails(TelegramObject):
|
||||
"""
|
||||
This object represents personal details.
|
||||
|
||||
Args:
|
||||
first_name (:obj:`str`): First Name.
|
||||
middle_name (:obj:`str`): Optional. First Name.
|
||||
last_name (:obj:`str`): Last Name.
|
||||
birth_date (:obj:`str`): Date of birth in DD.MM.YYYY format.
|
||||
gender (:obj:`str`): Gender, male or female.
|
||||
country_code (:obj:`str`): Citizenship (ISO 3166-1 alpha-2 country code).
|
||||
residence_country_code (:obj:`str`): Country of residence (ISO 3166-1 alpha-2 country
|
||||
code).
|
||||
first_name_native (:obj:`str`): First Name in the language of the user's country of
|
||||
residence.
|
||||
middle_name_native (:obj:`str`): Optional. Middle Name in the language of the user's
|
||||
country of residence.
|
||||
last_name_native (:obj:`str`): Last Name in the language of the user's country of
|
||||
residence.
|
||||
|
||||
Attributes:
|
||||
first_name (:obj:`str`): First Name.
|
||||
middle_name (:obj:`str`): Optional. First Name.
|
||||
@@ -91,6 +107,14 @@ class ResidentialAddress(TelegramObject):
|
||||
"""
|
||||
This object represents a residential address.
|
||||
|
||||
Args:
|
||||
street_line1 (:obj:`str`): First line for the address.
|
||||
street_line2 (:obj:`str`): Optional. Second line for the address.
|
||||
city (:obj:`str`): City.
|
||||
state (:obj:`str`): Optional. State.
|
||||
country_code (:obj:`str`): ISO 3166-1 alpha-2 country code.
|
||||
post_code (:obj:`str`): Address post code.
|
||||
|
||||
Attributes:
|
||||
street_line1 (:obj:`str`): First line for the address.
|
||||
street_line2 (:obj:`str`): Optional. Second line for the address.
|
||||
@@ -136,6 +160,10 @@ class IdDocumentData(TelegramObject):
|
||||
"""
|
||||
This object represents the data of an identity document.
|
||||
|
||||
Args:
|
||||
document_no (:obj:`str`): Document number.
|
||||
expiry_date (:obj:`str`): Optional. Date of expiry, in DD.MM.YYYY format.
|
||||
|
||||
Attributes:
|
||||
document_no (:obj:`str`): Document number.
|
||||
expiry_date (:obj:`str`): Optional. Date of expiry, in DD.MM.YYYY format.
|
||||
|
||||
@@ -35,6 +35,7 @@ class PassportElementError(TelegramObject):
|
||||
Args:
|
||||
source (:obj:`str`): Error source.
|
||||
type (:obj:`str`): The section of the user's Telegram Passport which has the error.
|
||||
message (:obj:`str`): Error message.
|
||||
|
||||
Attributes:
|
||||
source (:obj:`str`): Error source.
|
||||
|
||||
@@ -46,7 +46,8 @@ class PassportFile(TelegramObject):
|
||||
file_date (:obj:`int`): Unix time when the file was uploaded.
|
||||
|
||||
Attributes:
|
||||
file_id (:obj:`str`): Identifier for this file.
|
||||
file_id (:obj:`str`): Identifier for this file, which can be used to download
|
||||
or reuse the file.
|
||||
file_unique_id (:obj:`str`): Unique identifier for this file, which
|
||||
is supposed to be the same over time and for different bots.
|
||||
Can't be used to download or reuse the file.
|
||||
|
||||
@@ -48,9 +48,15 @@ class Invoice(TelegramObject):
|
||||
Attributes:
|
||||
title (:obj:`str`): Product name.
|
||||
description (:obj:`str`): Product description.
|
||||
start_parameter (:obj:`str`): Unique bot deep-linking parameter.
|
||||
start_parameter (:obj:`str`): Unique bot deep-linking parameter that can be used to
|
||||
generate this invoice.
|
||||
currency (:obj:`str`): Three-letter ISO 4217 currency code.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency (integer, not
|
||||
float/double). For example, for a price of US$ 1.45 ``amount`` is ``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).
|
||||
|
||||
"""
|
||||
|
||||
@@ -119,3 +125,8 @@ class Invoice(TelegramObject):
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
MAX_TIP_AMOUNTS: ClassVar[int] = constants.InvoiceLimit.MAX_TIP_AMOUNTS
|
||||
""":const:`telegram.constants.InvoiceLimit.MAX_TIP_AMOUNTS`
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
@@ -42,7 +42,12 @@ class LabeledPrice(TelegramObject):
|
||||
|
||||
Attributes:
|
||||
label (:obj:`str`): Portion label.
|
||||
amount (:obj:`int`): Price of the product in the smallest units of the currency.
|
||||
amount (:obj:`int`): Price of the product in the smallest units of the currency (integer,
|
||||
not float/double). For example, for a price of US$ 1.45 ``amount`` is ``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).
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -58,7 +58,12 @@ class PreCheckoutQuery(TelegramObject):
|
||||
id (:obj:`str`): Unique query identifier.
|
||||
from_user (:class:`telegram.User`): User who sent the query.
|
||||
currency (:obj:`str`): Three-letter ISO 4217 currency code.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency (integer, not
|
||||
float/double). For example, for a price of US$ 1.45 ``amount`` is ``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).
|
||||
invoice_payload (:obj:`str`): Bot specified invoice payload.
|
||||
shipping_option_id (:obj:`str`): Optional. Identifier of the shipping option chosen by the
|
||||
user.
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
"""This module contains an object that represents a Telegram ShippingQuery."""
|
||||
|
||||
from typing import TYPE_CHECKING, List, Optional
|
||||
from typing import TYPE_CHECKING, Optional, Sequence
|
||||
|
||||
from telegram._payment.shippingaddress import ShippingAddress
|
||||
from telegram._payment.shippingoption import ShippingOption
|
||||
@@ -92,7 +92,7 @@ class ShippingQuery(TelegramObject):
|
||||
async def answer( # pylint: disable=invalid-name
|
||||
self,
|
||||
ok: bool,
|
||||
shipping_options: List[ShippingOption] = None,
|
||||
shipping_options: Sequence[ShippingOption] = None,
|
||||
error_message: str = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
|
||||
@@ -52,7 +52,12 @@ class SuccessfulPayment(TelegramObject):
|
||||
|
||||
Attributes:
|
||||
currency (:obj:`str`): Three-letter ISO 4217 currency code.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency.
|
||||
total_amount (:obj:`int`): Total price in the smallest units of the currency (integer, not
|
||||
float/double). For example, for a price of US$ 1.45 ``amount`` is ``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).
|
||||
invoice_payload (:obj:`str`): Bot specified invoice payload.
|
||||
shipping_option_id (:obj:`str`): Optional. Identifier of the shipping option chosen by the
|
||||
user.
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
"""This module contains an object that represents a Telegram ReplyKeyboardMarkup."""
|
||||
|
||||
from typing import ClassVar, List, Sequence, Union
|
||||
from typing import ClassVar, Sequence, Union
|
||||
|
||||
from telegram import constants
|
||||
from telegram._keyboardbutton import KeyboardButton
|
||||
@@ -68,18 +68,45 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
characters.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
is_persistent (:obj:`bool`, optional): Requests clients to always show the keyboard when
|
||||
the regular keyboard is hidden. Defaults to :obj:`False`, in which case the custom
|
||||
keyboard can be hidden and opened with a keyboard icon.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
Attributes:
|
||||
keyboard (Tuple[Tuple[:class:`telegram.KeyboardButton` | :obj:`str`]]): Array of button
|
||||
rows.
|
||||
resize_keyboard (:obj:`bool`): Optional. Requests clients to resize the keyboard.
|
||||
keyboard (Tuple[Tuple[:class:`telegram.KeyboardButton`]]): Array of button rows,
|
||||
each represented by an Array of :class:`telegram.KeyboardButton` objects.
|
||||
resize_keyboard (:obj:`bool`): Optional. Requests clients to resize the keyboard vertically
|
||||
for optimal fit (e.g., make the keyboard smaller if there are just two rows of
|
||||
buttons). Defaults to :obj:`False`, in which case the custom keyboard is always of the
|
||||
same height as the app's standard keyboard.
|
||||
one_time_keyboard (:obj:`bool`): Optional. Requests clients to hide the keyboard as soon as
|
||||
it's been used.
|
||||
it's been used. The keyboard will still be available, but clients will automatically
|
||||
display the usual letter-keyboard in the chat - the user can press a special button in
|
||||
the input field to see the custom keyboard again. Defaults to :obj:`False`.
|
||||
selective (:obj:`bool`): Optional. Show the keyboard to specific users only.
|
||||
input_field_placeholder (:obj:`str`): Optional. The placeholder shown in the input
|
||||
field when the reply is active.
|
||||
Targets:
|
||||
|
||||
1) Users that are @mentioned in the :attr:`~telegram.Message.text` of the
|
||||
:class:`telegram.Message` object.
|
||||
2) If the bot's message is a reply (has ``reply_to_message_id``), sender of the
|
||||
original message.
|
||||
|
||||
Defaults to :obj:`False`.
|
||||
|
||||
input_field_placeholder (:obj:`str`): Optional. The placeholder to be shown in the input
|
||||
field when the keyboard is active;
|
||||
:tg-const:`telegram.ReplyKeyboardMarkup.MIN_INPUT_FIELD_PLACEHOLDER`-
|
||||
:tg-const:`telegram.ReplyKeyboardMarkup.MAX_INPUT_FIELD_PLACEHOLDER`
|
||||
characters.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard when
|
||||
the regular keyboard is hidden. If :obj:`False`, the custom keyboard can be hidden and
|
||||
opened with a keyboard icon.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
"""
|
||||
|
||||
@@ -89,6 +116,7 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
"resize_keyboard",
|
||||
"one_time_keyboard",
|
||||
"input_field_placeholder",
|
||||
"is_persistent",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
@@ -98,6 +126,7 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
one_time_keyboard: bool = None,
|
||||
selective: bool = None,
|
||||
input_field_placeholder: str = None,
|
||||
is_persistent: bool = None,
|
||||
*,
|
||||
api_kwargs: JSONDict = None,
|
||||
):
|
||||
@@ -119,6 +148,7 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
self.one_time_keyboard = one_time_keyboard
|
||||
self.selective = selective
|
||||
self.input_field_placeholder = input_field_placeholder
|
||||
self.is_persistent = is_persistent
|
||||
|
||||
self._id_attrs = (self.keyboard,)
|
||||
|
||||
@@ -132,6 +162,7 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
one_time_keyboard: bool = False,
|
||||
selective: bool = False,
|
||||
input_field_placeholder: str = None,
|
||||
is_persistent: bool = None,
|
||||
**kwargs: object,
|
||||
) -> "ReplyKeyboardMarkup":
|
||||
"""Shortcut for::
|
||||
@@ -165,6 +196,11 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
field when the reply is active.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
|
||||
when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
|
||||
custom keyboard can be hidden and opened with a keyboard icon.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
return cls(
|
||||
[[button]],
|
||||
@@ -172,17 +208,19 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
one_time_keyboard=one_time_keyboard,
|
||||
selective=selective,
|
||||
input_field_placeholder=input_field_placeholder,
|
||||
is_persistent=is_persistent,
|
||||
**kwargs, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_row(
|
||||
cls,
|
||||
button_row: List[Union[str, KeyboardButton]],
|
||||
button_row: Sequence[Union[str, KeyboardButton]],
|
||||
resize_keyboard: bool = False,
|
||||
one_time_keyboard: bool = False,
|
||||
selective: bool = False,
|
||||
input_field_placeholder: str = None,
|
||||
is_persistent: bool = None,
|
||||
**kwargs: object,
|
||||
) -> "ReplyKeyboardMarkup":
|
||||
"""Shortcut for::
|
||||
@@ -192,8 +230,11 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
Return a ReplyKeyboardMarkup from a single row of KeyboardButtons.
|
||||
|
||||
Args:
|
||||
button_row (List[:class:`telegram.KeyboardButton` | :obj:`str`]): The button to use in
|
||||
the markup.
|
||||
button_row (Sequence[:class:`telegram.KeyboardButton` | :obj:`str`]): The button to
|
||||
use in the markup.
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceargs|
|
||||
resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard
|
||||
vertically for optimal fit (e.g., make the keyboard smaller if there are just two
|
||||
rows of buttons). Defaults to :obj:`False`, in which case the custom keyboard is
|
||||
@@ -216,6 +257,11 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
field when the reply is active.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
|
||||
when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
|
||||
custom keyboard can be hidden and opened with a keyboard icon.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
"""
|
||||
return cls(
|
||||
@@ -224,17 +270,19 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
one_time_keyboard=one_time_keyboard,
|
||||
selective=selective,
|
||||
input_field_placeholder=input_field_placeholder,
|
||||
is_persistent=is_persistent,
|
||||
**kwargs, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def from_column(
|
||||
cls,
|
||||
button_column: List[Union[str, KeyboardButton]],
|
||||
button_column: Sequence[Union[str, KeyboardButton]],
|
||||
resize_keyboard: bool = False,
|
||||
one_time_keyboard: bool = False,
|
||||
selective: bool = False,
|
||||
input_field_placeholder: str = None,
|
||||
is_persistent: bool = None,
|
||||
**kwargs: object,
|
||||
) -> "ReplyKeyboardMarkup":
|
||||
"""Shortcut for::
|
||||
@@ -244,8 +292,11 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
Return a ReplyKeyboardMarkup from a single column of KeyboardButtons.
|
||||
|
||||
Args:
|
||||
button_column (List[:class:`telegram.KeyboardButton` | :obj:`str`]): The button to use
|
||||
in the markup.
|
||||
button_column (Sequence[:class:`telegram.KeyboardButton` | :obj:`str`]): The button
|
||||
to use in the markup.
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceargs|
|
||||
resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard
|
||||
vertically for optimal fit (e.g., make the keyboard smaller if there are just two
|
||||
rows of buttons). Defaults to :obj:`False`, in which case the custom keyboard is
|
||||
@@ -268,6 +319,11 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
field when the reply is active.
|
||||
|
||||
.. versionadded:: 13.7
|
||||
is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
|
||||
when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
|
||||
custom keyboard can be hidden and opened with a keyboard icon.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
"""
|
||||
button_grid = [[button] for button in button_column]
|
||||
@@ -277,6 +333,7 @@ class ReplyKeyboardMarkup(TelegramObject):
|
||||
one_time_keyboard=one_time_keyboard,
|
||||
selective=selective,
|
||||
input_field_placeholder=input_field_placeholder,
|
||||
is_persistent=is_persistent,
|
||||
**kwargs, # type: ignore[arg-type]
|
||||
)
|
||||
|
||||
|
||||
@@ -45,13 +45,17 @@ class ReplyKeyboardRemove(TelegramObject):
|
||||
for specific users only. Targets:
|
||||
|
||||
1) Users that are @mentioned in the text of the :class:`telegram.Message` object.
|
||||
2) If the bot's message is a reply (has `reply_to_message_id`), sender of the original
|
||||
message.
|
||||
2) If the bot's message is a reply (has ``reply_to_message_id``), sender of
|
||||
the original message.
|
||||
|
||||
Attributes:
|
||||
remove_keyboard (:obj:`True`): Requests clients to remove the custom keyboard.
|
||||
selective (:obj:`bool`): Optional. Use this parameter if you want to remove the keyboard
|
||||
for specific users only.
|
||||
selective (:obj:`bool`): Optional. Remove the keyboard for specific users only.
|
||||
Targets:
|
||||
|
||||
1) Users that are @mentioned in the text of the :class:`telegram.Message` object.
|
||||
2) If the bot's message is a reply (has ``reply_to_message_id``), sender of
|
||||
the original message.
|
||||
|
||||
"""
|
||||
|
||||
|
||||
@@ -92,6 +92,10 @@ class TelegramObject:
|
||||
__INIT_PARAMS_CHECK: Optional[Type["TelegramObject"]] = None
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
# Setting _frozen to `False` here means that classes without arguments still need to
|
||||
# implement __init__. However, with `True` would mean increased usage of
|
||||
# `with self._unfrozen()` in the `__init__` of subclasses and we have fewer empty
|
||||
# classes than classes with arguments.
|
||||
self._frozen: bool = False
|
||||
self._id_attrs: Tuple[object, ...] = ()
|
||||
self._bot: Optional["Bot"] = None
|
||||
|
||||
+20
-11
@@ -46,8 +46,7 @@ class Update(TelegramObject):
|
||||
Note:
|
||||
At most one of the optional parameters can be present in any given update.
|
||||
|
||||
.. seealso:: `Your First Bot <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Extensions-–-Your-first-Bot>`_
|
||||
.. seealso:: :wiki:`Your First Bot <Extensions-–-Your-first-Bot>`
|
||||
|
||||
Args:
|
||||
update_id (:obj:`int`): The update's unique identifier. Update identifiers start from a
|
||||
@@ -98,23 +97,33 @@ class Update(TelegramObject):
|
||||
|
||||
.. versionadded:: 13.8
|
||||
Attributes:
|
||||
update_id (:obj:`int`): The update's unique identifier.
|
||||
message (:class:`telegram.Message`): Optional. New incoming message.
|
||||
edited_message (:class:`telegram.Message`): Optional. New version of a message.
|
||||
channel_post (:class:`telegram.Message`): Optional. New incoming channel post.
|
||||
edited_channel_post (:class:`telegram.Message`): Optional. New version of a channel post.
|
||||
update_id (:obj:`int`): The update's unique identifier. Update identifiers start from a
|
||||
certain positive number and increase sequentially. This ID becomes especially handy if
|
||||
you're using Webhooks, since it allows you to ignore repeated updates or to restore the
|
||||
correct update sequence, should they get out of order. If there are no new updates for
|
||||
at least a week, then identifier of the next update will be chosen randomly instead of
|
||||
sequentially.
|
||||
message (:class:`telegram.Message`): Optional. New incoming message of any kind - text,
|
||||
photo, sticker, etc.
|
||||
edited_message (:class:`telegram.Message`): Optional. New version of a message that is
|
||||
known to the bot and was edited.
|
||||
channel_post (:class:`telegram.Message`): Optional. New incoming channel post of any kind
|
||||
- text, photo, sticker, etc.
|
||||
edited_channel_post (:class:`telegram.Message`): Optional. New version of a channel post
|
||||
that is known to the bot and was edited.
|
||||
inline_query (:class:`telegram.InlineQuery`): Optional. New incoming inline query.
|
||||
chosen_inline_result (:class:`telegram.ChosenInlineResult`): Optional. The result of an
|
||||
inline query that was chosen by a user.
|
||||
inline query that was chosen by a user and sent to their chat partner.
|
||||
callback_query (:class:`telegram.CallbackQuery`): Optional. New incoming callback query.
|
||||
|
||||
Examples:
|
||||
:any:`Arbitrary Callback Data Bot <examples.arbitrarycallbackdatabot>`
|
||||
shipping_query (:class:`telegram.ShippingQuery`): Optional. New incoming shipping query.
|
||||
Only for invoices with flexible price.
|
||||
pre_checkout_query (:class:`telegram.PreCheckoutQuery`): Optional. New incoming
|
||||
pre-checkout query.
|
||||
poll (:class:`telegram.Poll`): Optional. New poll state. Bots receive only updates
|
||||
about stopped polls and polls, which are sent by the bot.
|
||||
pre-checkout query. Contains full information about checkout.
|
||||
poll (:class:`telegram.Poll`): Optional. New poll state. Bots receive only updates about
|
||||
stopped polls and polls, which are sent by the bot.
|
||||
poll_answer (:class:`telegram.PollAnswer`): Optional. A user changed their answer
|
||||
in a non-anonymous poll. Bots receive new votes only in polls that were sent
|
||||
by the bot itself.
|
||||
|
||||
+27
-19
@@ -19,7 +19,7 @@
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
"""This module contains an object that represents a Telegram User."""
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING, List, Optional, Tuple, Union
|
||||
from typing import TYPE_CHECKING, Optional, Sequence, Tuple, Union
|
||||
|
||||
from telegram._inline.inlinekeyboardbutton import InlineKeyboardButton
|
||||
from telegram._menubutton import MenuButton
|
||||
@@ -70,9 +70,9 @@ class User(TelegramObject):
|
||||
Args:
|
||||
id (:obj:`int`): Unique identifier for this user or bot.
|
||||
is_bot (:obj:`bool`): :obj:`True`, if this user is a bot.
|
||||
first_name (:obj:`str`): User's or bots first name.
|
||||
last_name (:obj:`str`, optional): User's or bots last name.
|
||||
username (:obj:`str`, optional): User's or bots username.
|
||||
first_name (:obj:`str`): User's or bot's first name.
|
||||
last_name (:obj:`str`, optional): User's or bot's last name.
|
||||
username (:obj:`str`, optional): User's or bot's username.
|
||||
language_code (:obj:`str`, optional): IETF language tag of the user's language.
|
||||
can_join_groups (:obj:`str`, optional): :obj:`True`, if the bot can be invited to groups.
|
||||
Returned only in :attr:`telegram.Bot.get_me` requests.
|
||||
@@ -376,7 +376,7 @@ class User(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -424,9 +424,10 @@ class User(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -463,11 +464,12 @@ class User(TelegramObject):
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_media_group(
|
||||
self,
|
||||
media: List[
|
||||
media: Sequence[
|
||||
Union["InputMediaAudio", "InputMediaDocument", "InputMediaPhoto", "InputMediaVideo"]
|
||||
],
|
||||
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
||||
@@ -483,7 +485,7 @@ class User(TelegramObject):
|
||||
api_kwargs: JSONDict = None,
|
||||
caption: Optional[str] = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
) -> Tuple["Message", ...]:
|
||||
"""Shortcut for::
|
||||
|
||||
@@ -527,7 +529,7 @@ class User(TelegramObject):
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -575,6 +577,7 @@ class User(TelegramObject):
|
||||
async def send_chat_action(
|
||||
self,
|
||||
action: str,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -595,6 +598,7 @@ class User(TelegramObject):
|
||||
return await self.get_bot().send_chat_action(
|
||||
chat_id=self.id,
|
||||
action=action,
|
||||
message_thread_id=message_thread_id,
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
@@ -708,7 +712,7 @@ class User(TelegramObject):
|
||||
thumb: FileInput = None,
|
||||
disable_content_type_detection: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -800,7 +804,7 @@ class User(TelegramObject):
|
||||
payload: str,
|
||||
provider_token: str,
|
||||
currency: str,
|
||||
prices: List["LabeledPrice"],
|
||||
prices: Sequence["LabeledPrice"],
|
||||
start_parameter: str = None,
|
||||
photo_url: str = None,
|
||||
photo_size: int = None,
|
||||
@@ -819,7 +823,7 @@ class User(TelegramObject):
|
||||
send_email_to_provider: bool = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
max_tip_amount: int = None,
|
||||
suggested_tip_amounts: List[int] = None,
|
||||
suggested_tip_amounts: Sequence[int] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -952,9 +956,10 @@ class User(TelegramObject):
|
||||
reply_to_message_id: int = None,
|
||||
reply_markup: ReplyMarkup = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -995,6 +1000,7 @@ class User(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_sticker(
|
||||
@@ -1053,9 +1059,10 @@ class User(TelegramObject):
|
||||
supports_streaming: bool = None,
|
||||
thumb: FileInput = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
has_spoiler: bool = None,
|
||||
*,
|
||||
filename: str = None,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
@@ -1097,6 +1104,7 @@ class User(TelegramObject):
|
||||
filename=filename,
|
||||
protect_content=protect_content,
|
||||
message_thread_id=message_thread_id,
|
||||
has_spoiler=has_spoiler,
|
||||
)
|
||||
|
||||
async def send_venue(
|
||||
@@ -1217,7 +1225,7 @@ class User(TelegramObject):
|
||||
reply_markup: ReplyMarkup = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1262,7 +1270,7 @@ class User(TelegramObject):
|
||||
async def send_poll(
|
||||
self,
|
||||
question: str,
|
||||
options: List[str],
|
||||
options: Sequence[str],
|
||||
is_anonymous: bool = None,
|
||||
type: str = None,
|
||||
allows_multiple_answers: bool = None,
|
||||
@@ -1276,7 +1284,7 @@ class User(TelegramObject):
|
||||
open_period: int = None,
|
||||
close_date: Union[int, datetime] = None,
|
||||
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
||||
explanation_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
||||
explanation_entities: Sequence["MessageEntity"] = None,
|
||||
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
||||
message_thread_id: int = None,
|
||||
*,
|
||||
@@ -1329,7 +1337,7 @@ class User(TelegramObject):
|
||||
message_id: int,
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
@@ -1379,7 +1387,7 @@ class User(TelegramObject):
|
||||
message_id: int,
|
||||
caption: str = None,
|
||||
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
||||
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
||||
caption_entities: Sequence["MessageEntity"] = None,
|
||||
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
||||
reply_to_message_id: int = None,
|
||||
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
||||
|
||||
@@ -43,8 +43,8 @@ class UserProfilePhotos(TelegramObject):
|
||||
|
||||
Attributes:
|
||||
total_count (:obj:`int`): Total number of profile pictures.
|
||||
photos (Tuple[Tuple[:class:`telegram.PhotoSize`]]): Requested profile pictures (in up
|
||||
to 4 sizes each).
|
||||
photos (Tuple[Tuple[:class:`telegram.PhotoSize`]]): Requested profile pictures (in up to 4
|
||||
sizes each).
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|tupleclassattrs|
|
||||
|
||||
@@ -50,7 +50,7 @@ class Version(NamedTuple):
|
||||
return version
|
||||
|
||||
|
||||
__version_info__ = Version(major=20, minor=0, micro=0, releaselevel="beta", serial=0)
|
||||
__version_info__ = Version(major=20, minor=0, micro=0, releaselevel="final", serial=0)
|
||||
__version__ = str(__version_info__)
|
||||
|
||||
# # SETUP.PY MARKER
|
||||
|
||||
@@ -42,6 +42,11 @@ class VideoChatStarted(TelegramObject):
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None) -> None:
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
|
||||
|
||||
class VideoChatEnded(TelegramObject):
|
||||
"""
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# A library that provides a Python interface to the Telegram Bot API
|
||||
# Copyright (C) 2015-2022
|
||||
# Leandro Toledo de Souza <devs@python-telegram-bot.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser Public License
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
"""This module contains objects related to the write access allowed service message."""
|
||||
from telegram._telegramobject import TelegramObject
|
||||
from telegram._utils.types import JSONDict
|
||||
|
||||
|
||||
class WriteAccessAllowed(TelegramObject):
|
||||
"""
|
||||
This object represents a service message about a user allowing a bot added to the attachment
|
||||
menu to write messages. Currently holds no information.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __init__(self, *, api_kwargs: JSONDict = None):
|
||||
super().__init__(api_kwargs=api_kwargs)
|
||||
|
||||
self._freeze()
|
||||
+50
-11
@@ -61,6 +61,7 @@ __all__ = [
|
||||
"InvoiceLimit",
|
||||
"LocationLimit",
|
||||
"MaskPosition",
|
||||
"MediaGroupLimit",
|
||||
"MenuButtonType",
|
||||
"MessageAttachmentType",
|
||||
"MessageEntityType",
|
||||
@@ -110,7 +111,7 @@ class _BotAPIVersion(NamedTuple):
|
||||
#: :data:`telegram.__bot_api_version_info__`.
|
||||
#:
|
||||
#: .. versionadded:: 20.0
|
||||
BOT_API_VERSION_INFO = _BotAPIVersion(major=6, minor=3)
|
||||
BOT_API_VERSION_INFO = _BotAPIVersion(major=6, minor=4)
|
||||
#: :obj:`str`: Telegram Bot API
|
||||
#: version supported by this version of `python-telegram-bot`. Also available as
|
||||
#: :data:`telegram.__bot_api_version__`.
|
||||
@@ -919,6 +920,27 @@ class MaskPosition(StringEnum):
|
||||
""":obj:`str`: Mask position for a sticker on the chin."""
|
||||
|
||||
|
||||
class MediaGroupLimit(IntEnum):
|
||||
"""This enum contains limitations for :meth:`telegram.Bot.send_media_group`.
|
||||
The enum members of this enumeration are instances of :class:`int` and can be treated as such.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
MIN_MEDIA_LENGTH = 2
|
||||
""":obj:`int`: Minimum length of a :obj:`list` passed as the
|
||||
:paramref:`~telegram.Bot.send_media_group.media` parameter of
|
||||
:meth:`telegram.Bot.send_media_group`.
|
||||
"""
|
||||
MAX_MEDIA_LENGTH = 10
|
||||
""":obj:`int`: Maximum length of a :obj:`list` passed as the
|
||||
:paramref:`~telegram.Bot.send_media_group.media` parameter of
|
||||
:meth:`telegram.Bot.send_media_group`.
|
||||
"""
|
||||
|
||||
|
||||
class MenuButtonType(StringEnum):
|
||||
"""This enum contains the available types of :class:`telegram.MenuButton`. The enum
|
||||
members of this enumeration are instances of :class:`str` and can be treated as such.
|
||||
@@ -1403,8 +1425,9 @@ class UpdateType(StringEnum):
|
||||
|
||||
|
||||
class InvoiceLimit(IntEnum):
|
||||
"""This enum contains limitations for :meth:`telegram.Bot.create_invoice_link`. The enum
|
||||
members of this enumeration are instances of :class:`int` and can be treated as such.
|
||||
"""This enum contains limitations for :class:`telegram.InputInvoiceMessageContent`,
|
||||
:meth:`telegram.Bot.send_invoice`, and :meth:`telegram.Bot.create_invoice_link`.
|
||||
The enum members of this enumeration are instances of :class:`int` and can be treated as such.
|
||||
|
||||
.. versionadded:: 20.0
|
||||
"""
|
||||
@@ -1471,6 +1494,14 @@ class InvoiceLimit(IntEnum):
|
||||
* :paramref:`~telegram.Bot.create_invoice_link.payload` parameter of
|
||||
:meth:`telegram.Bot.create_invoice_link`.
|
||||
"""
|
||||
MAX_TIP_AMOUNTS = 4
|
||||
""":obj:`int`: Maximum length of a :obj:`Sequence` passed as:
|
||||
|
||||
* :paramref:`~telegram.Bot.send_invoice.suggested_tip_amounts` parameter of
|
||||
:meth:`telegram.Bot.send_invoice`.
|
||||
* :paramref:`~telegram.Bot.create_invoice_link.suggested_tip_amounts` parameter of
|
||||
:meth:`telegram.Bot.create_invoice_link`.
|
||||
"""
|
||||
|
||||
|
||||
class UserProfilePhotosLimit(IntEnum):
|
||||
@@ -1537,14 +1568,22 @@ class ForumTopicLimit(IntEnum):
|
||||
__slots__ = ()
|
||||
|
||||
MIN_NAME_LENGTH = 1
|
||||
""":obj:`int`: Minimum length of a :obj:`str` passed as the
|
||||
:paramref:`~telegram.Bot.create_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.create_forum_topic` and :paramref:`~telegram.Bot.edit_forum_topic.name`
|
||||
parameter of :meth:`telegram.Bot.edit_forum_topic`.
|
||||
""":obj:`int`: Minimum length of a :obj:`str` passed as:
|
||||
|
||||
* :paramref:`~telegram.Bot.create_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.create_forum_topic`
|
||||
* :paramref:`~telegram.Bot.edit_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.edit_forum_topic`
|
||||
* :paramref:`~telegram.Bot.edit_general_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.edit_general_forum_topic`
|
||||
"""
|
||||
MAX_NAME_LENGTH = 128
|
||||
""":obj:`int`: Maximum length of a :obj:`str` passed as the
|
||||
:paramref:`~telegram.Bot.create_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.create_forum_topic` and :paramref:`~telegram.Bot.edit_forum_topic.name`
|
||||
parameter of :meth:`telegram.Bot.edit_forum_topic`.
|
||||
""":obj:`int`: Maximum length of a :obj:`str` passed as:
|
||||
|
||||
* :paramref:`~telegram.Bot.create_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.create_forum_topic`
|
||||
* :paramref:`~telegram.Bot.edit_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.edit_forum_topic`
|
||||
* :paramref:`~telegram.Bot.edit_general_forum_topic.name` parameter of
|
||||
:meth:`telegram.Bot.edit_general_forum_topic`
|
||||
"""
|
||||
|
||||
+3
-5
@@ -59,8 +59,7 @@ class TelegramError(Exception):
|
||||
"""
|
||||
Base class for Telegram errors.
|
||||
|
||||
.. seealso:: `Exceptions, Warnings and Logging <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Exceptions%2C-Warnings-and-Logging>`_
|
||||
.. seealso:: :wiki:`Exceptions, Warnings and Logging <Exceptions%2C-Warnings-and-Logging>`
|
||||
"""
|
||||
|
||||
__slots__ = ("message",)
|
||||
@@ -149,9 +148,8 @@ class ChatMigrated(TelegramError):
|
||||
"""
|
||||
Raised when the requested group chat migrated to supergroup and has a new chat id.
|
||||
|
||||
.. seealso:: `Storing Bot, User and Chat Related Data <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Storing-bot%2C-user-and-\
|
||||
chat-related-data>`_,
|
||||
.. seealso::
|
||||
:wiki:`Storing Bot, User and Chat Related Data <Storing-bot%2C-user-and-chat-related-data>`
|
||||
|
||||
Args:
|
||||
new_chat_id (:obj:`int`): The new chat id of the group.
|
||||
|
||||
@@ -90,8 +90,7 @@ class AIORateLimiter(BaseRateLimiter[int]):
|
||||
welcome you to implement your own subclass of :class:`~telegram.ext.BaseRateLimiter`.
|
||||
Feel free to check out the source code of this class for inspiration.
|
||||
|
||||
.. seealso:: `Avoiding Flood Limits <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Avoiding-flood-limits>`_
|
||||
.. seealso:: :wiki:`Avoiding Flood Limits <Avoiding-flood-limits>`
|
||||
|
||||
.. versionadded:: 20.0
|
||||
|
||||
|
||||
@@ -136,10 +136,8 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
Examples:
|
||||
:any:`Echo Bot <examples.echobot>`
|
||||
|
||||
.. seealso:: `Your First Bot <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Extensions-–-Your-first-Bot>`_,
|
||||
`Architecture Overview <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Architecture>`_
|
||||
.. seealso:: :wiki:`Your First Bot <Extensions-–-Your-first-Bot>`,
|
||||
:wiki:`Architecture Overview <Architecture>`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
|
||||
@@ -338,8 +336,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
""":obj:`int`: The number of concurrent updates that will be processed in parallel. A
|
||||
value of ``0`` indicates updates are *not* being processed concurrently.
|
||||
|
||||
.. seealso:: `Concurrency <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Concurrency>`_
|
||||
.. seealso:: :wiki:`Concurrency`
|
||||
"""
|
||||
return self._concurrent_updates
|
||||
|
||||
@@ -349,8 +346,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
:class:`telegram.ext.JobQueue`: The :class:`JobQueue` used by the
|
||||
:class:`telegram.ext.Application`.
|
||||
|
||||
.. seealso:: `Job Queue <https://github.com/python-telegram-bot/
|
||||
python-telegram-bot/wiki/Extensions-%E2%80%93-JobQueue>`_
|
||||
.. seealso:: :wiki:`Job Queue <Extensions-%E2%80%93-JobQueue>`
|
||||
"""
|
||||
if self._job_queue is None:
|
||||
warn(
|
||||
@@ -763,8 +759,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
.. seealso::
|
||||
:meth:`initialize`, :meth:`start`, :meth:`stop`, :meth:`shutdown`
|
||||
:meth:`telegram.ext.Updater.start_webhook`, :meth:`telegram.ext.Updater.stop`,
|
||||
:meth:`run_polling`,
|
||||
`Webhooks <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Webhooks>`_
|
||||
:meth:`run_polling`, :wiki:`Webhooks`
|
||||
|
||||
Args:
|
||||
listen (:obj:`str`, optional): IP-Address to listen on. Defaults to
|
||||
@@ -909,8 +904,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
* If the application is currently running, tasks created by this method will be
|
||||
awaited with :meth:`stop`.
|
||||
|
||||
.. seealso:: `Concurrency <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Concurrency>`_
|
||||
.. seealso:: :wiki:`Concurrency`
|
||||
|
||||
Args:
|
||||
coroutine (:term:`coroutine function`): The coroutine to run as task.
|
||||
@@ -1028,8 +1022,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
"""Processes a single update and marks the update to be updated by the persistence later.
|
||||
Exceptions raised by handler callbacks will be processed by :meth:`process_update`.
|
||||
|
||||
.. seealso:: `Concurrency <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Concurrency>`_
|
||||
.. seealso:: :wiki:`Concurrency`
|
||||
|
||||
.. versionchanged:: 20.0
|
||||
Persistence is now updated in an interval set by
|
||||
@@ -1270,9 +1263,8 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
to the asynchronous nature of these features. Please make sure that your program can
|
||||
avoid or handle such situations.
|
||||
|
||||
.. seealso:: `Storing Bot, User and Chat Related Data <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Storing-bot%2C-user-and-\
|
||||
chat-related-data>`_,
|
||||
.. seealso:: :wiki:`Storing Bot, User and Chat Related Data\
|
||||
<Storing-bot%2C-user-and-chat-related-data>`
|
||||
|
||||
Args:
|
||||
message (:class:`telegram.Message`, optional): A message with either
|
||||
@@ -1495,8 +1487,7 @@ class Application(Generic[BT, CCT, UD, CD, BD, JQ], AbstractAsyncContextManager)
|
||||
Examples:
|
||||
:any:`Errorhandler Bot <examples.errorhandlerbot>`
|
||||
|
||||
.. seealso:: `Exceptions, Warnings and Logging <https://github.com/\
|
||||
python-telegram-bot/python-telegram-bot/wiki/Exceptions%2C-Warnings-and-Logging>`_
|
||||
.. seealso:: :wiki:`Exceptions, Warnings and Logging <Exceptions%2C-Warnings-and-Logging>`
|
||||
|
||||
Args:
|
||||
callback (:term:`coroutine function`): The callback function for this error handler.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user