2015-07-07 21:50:36 +02:00
|
|
|
|
#!/usr/bin/env python
|
2022-05-05 09:27:54 +02:00
|
|
|
|
# pylint: disable=no-self-argument, not-callable, no-member, too-many-arguments
|
2015-08-11 21:58:17 +02:00
|
|
|
|
#
|
|
|
|
|
# A library that provides a Python interface to the Telegram Bot API
|
2022-01-03 08:15:18 +01:00
|
|
|
|
# Copyright (C) 2015-2022
|
2016-01-05 14:12:03 +01:00
|
|
|
|
# Leandro Toledo de Souza <devs@python-telegram-bot.org>
|
2015-08-11 21:58:17 +02:00
|
|
|
|
#
|
|
|
|
|
# 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/].
|
2016-10-17 00:22:40 +02:00
|
|
|
|
"""This module contains an object that represents a Telegram Bot."""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
import asyncio
|
2016-04-24 15:06:59 +02:00
|
|
|
|
import functools
|
2020-10-31 16:33:34 +01:00
|
|
|
|
import logging
|
2022-03-12 12:27:18 +01:00
|
|
|
|
import pickle
|
2022-05-05 09:27:54 +02:00
|
|
|
|
from contextlib import AbstractAsyncContextManager
|
2022-10-31 09:46:56 +01:00
|
|
|
|
from copy import copy
|
2020-10-31 16:33:34 +01:00
|
|
|
|
from datetime import datetime
|
2022-04-24 12:38:09 +02:00
|
|
|
|
from types import TracebackType
|
2020-10-31 16:33:34 +01:00
|
|
|
|
from typing import (
|
|
|
|
|
TYPE_CHECKING,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
Any,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
Callable,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
Dict,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
List,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
NoReturn,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
Optional,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
Sequence,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
Tuple,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
Type,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
TypeVar,
|
|
|
|
|
Union,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
cast,
|
2022-05-05 09:27:54 +02:00
|
|
|
|
no_type_check,
|
2020-10-31 16:33:34 +01:00
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
|
2021-02-13 22:07:37 +01:00
|
|
|
|
try:
|
|
|
|
|
from cryptography.hazmat.backends import default_backend
|
|
|
|
|
from cryptography.hazmat.primitives import serialization
|
|
|
|
|
|
|
|
|
|
CRYPTO_INSTALLED = True
|
|
|
|
|
except ImportError:
|
|
|
|
|
default_backend = None # type: ignore[assignment]
|
|
|
|
|
serialization = None # type: ignore[assignment]
|
|
|
|
|
CRYPTO_INSTALLED = False
|
2017-12-08 22:38:59 +01:00
|
|
|
|
|
2022-05-05 09:27:54 +02:00
|
|
|
|
from telegram._botcommand import BotCommand
|
|
|
|
|
from telegram._botcommandscope import BotCommandScope
|
|
|
|
|
from telegram._chat import Chat
|
|
|
|
|
from telegram._chatadministratorrights import ChatAdministratorRights
|
|
|
|
|
from telegram._chatinvitelink import ChatInviteLink
|
|
|
|
|
from telegram._chatmember import ChatMember
|
|
|
|
|
from telegram._chatpermissions import ChatPermissions
|
|
|
|
|
from telegram._files.animation import Animation
|
|
|
|
|
from telegram._files.audio import Audio
|
|
|
|
|
from telegram._files.chatphoto import ChatPhoto
|
|
|
|
|
from telegram._files.contact import Contact
|
|
|
|
|
from telegram._files.document import Document
|
|
|
|
|
from telegram._files.file import File
|
|
|
|
|
from telegram._files.inputmedia import InputMedia
|
|
|
|
|
from telegram._files.location import Location
|
|
|
|
|
from telegram._files.photosize import PhotoSize
|
|
|
|
|
from telegram._files.sticker import MaskPosition, Sticker, StickerSet
|
|
|
|
|
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._games.gamehighscore import GameHighScore
|
|
|
|
|
from telegram._inline.inlinekeyboardmarkup import InlineKeyboardMarkup
|
|
|
|
|
from telegram._menubutton import MenuButton
|
|
|
|
|
from telegram._message import Message
|
|
|
|
|
from telegram._messageid import MessageId
|
|
|
|
|
from telegram._passport.passportelementerrors import PassportElementError
|
|
|
|
|
from telegram._payment.shippingoption import ShippingOption
|
|
|
|
|
from telegram._poll import Poll
|
|
|
|
|
from telegram._sentwebappmessage import SentWebAppMessage
|
|
|
|
|
from telegram._telegramobject import TelegramObject
|
|
|
|
|
from telegram._update import Update
|
|
|
|
|
from telegram._user import User
|
|
|
|
|
from telegram._userprofilephotos import UserProfilePhotos
|
|
|
|
|
from telegram._utils.defaultvalue import DEFAULT_NONE, DefaultValue
|
|
|
|
|
from telegram._utils.files import is_local_file, parse_file_input
|
|
|
|
|
from telegram._utils.types import DVInput, FileInput, JSONDict, ODVInput, ReplyMarkup
|
|
|
|
|
from telegram._webhookinfo import WebhookInfo
|
2021-10-19 18:28:19 +02:00
|
|
|
|
from telegram.constants import InlineQueryLimit
|
2022-05-12 19:20:24 +02:00
|
|
|
|
from telegram.error import InvalidToken
|
2022-04-24 12:38:09 +02:00
|
|
|
|
from telegram.request import BaseRequest, RequestData
|
|
|
|
|
from telegram.request._httpxrequest import HTTPXRequest
|
2022-05-05 09:27:54 +02:00
|
|
|
|
from telegram.request._requestparameter import RequestParameter
|
2020-10-09 17:22:07 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
if TYPE_CHECKING:
|
2020-12-30 13:41:07 +01:00
|
|
|
|
from telegram import (
|
2022-05-05 09:27:54 +02:00
|
|
|
|
InlineQueryResult,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
InputFile,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
InputMediaAudio,
|
|
|
|
|
InputMediaDocument,
|
|
|
|
|
InputMediaPhoto,
|
|
|
|
|
InputMediaVideo,
|
|
|
|
|
LabeledPrice,
|
|
|
|
|
MessageEntity,
|
|
|
|
|
)
|
2015-08-09 14:41:58 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
BT = TypeVar("BT", bound="Bot")
|
2015-07-20 12:53:58 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
class Bot(TelegramObject, AbstractAsyncContextManager):
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""This object represents a Telegram Bot.
|
2015-08-28 17:19:30 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
Instances of this class can be used as asyncio context managers, where
|
|
|
|
|
|
|
|
|
|
.. code:: python
|
|
|
|
|
|
|
|
|
|
async with bot:
|
|
|
|
|
# code
|
|
|
|
|
|
|
|
|
|
is roughly equivalent to
|
|
|
|
|
|
|
|
|
|
.. code:: python
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
await bot.initialize()
|
|
|
|
|
# code
|
|
|
|
|
finally:
|
|
|
|
|
await request_object.shutdown()
|
2021-01-17 09:23:36 +01:00
|
|
|
|
|
2020-12-30 15:59:50 +01:00
|
|
|
|
Note:
|
2022-03-12 12:27:18 +01:00
|
|
|
|
* Most bot methods have the argument ``api_kwargs`` which allows passing arbitrary keywords
|
|
|
|
|
to the Telegram API. This can be used to access new features of the API before they are
|
|
|
|
|
incorporated into PTB. However, this is not guaranteed to work, i.e. it will fail for
|
|
|
|
|
passing files.
|
|
|
|
|
* Bots should not be serialized since if you for e.g. change the bots token, then your
|
|
|
|
|
serialized instance will not reflect that change. Trying to pickle a bot instance will
|
|
|
|
|
raise :exc:`pickle.PicklingError`.
|
2020-12-30 15:59:50 +01:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.ext.Application.bot`,
|
|
|
|
|
:attr:`telegram.ext.CallbackContext.bot`,
|
|
|
|
|
:attr:`telegram.ext.Updater.bot`
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
.. versionadded:: 13.2
|
|
|
|
|
Objects of this class are comparable in terms of equality. Two objects of this class are
|
|
|
|
|
considered equal, if their :attr:`bot` is equal.
|
|
|
|
|
|
2022-05-06 17:15:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
2021-10-19 18:28:19 +02:00
|
|
|
|
|
2021-08-30 16:31:19 +02:00
|
|
|
|
* Removed the deprecated methods ``kick_chat_member``, ``kickChatMember``,
|
|
|
|
|
``get_chat_members_count`` and ``getChatMembersCount``.
|
|
|
|
|
* Removed the deprecated property ``commands``.
|
2021-10-03 15:10:13 +02:00
|
|
|
|
* Removed the deprecated ``defaults`` parameter. If you want to use
|
2021-10-19 18:28:19 +02:00
|
|
|
|
:class:`telegram.ext.Defaults`, please use the subclass :class:`telegram.ext.ExtBot`
|
|
|
|
|
instead.
|
2022-03-12 12:27:18 +01:00
|
|
|
|
* Attempting to pickle a bot instance will now raise :exc:`pickle.PicklingError`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
* The following are now keyword-only arguments in Bot methods:
|
|
|
|
|
``location``, ``filename``, ``venue``, ``contact``,
|
|
|
|
|
``{read, write, connect, pool}_timeout``, ``api_kwargs``. Use a named argument for those,
|
|
|
|
|
and notice that some positional arguments changed position as a result.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
* For uploading files, file paths are now always accepted. If :paramref:`local_mode` is
|
|
|
|
|
:obj:`False`, the file contents will be read in binary mode and uploaded. Otherwise,
|
|
|
|
|
the file path will be passed in the
|
|
|
|
|
`file URI scheme <https://en.wikipedia.org/wiki/File_URI_scheme>`_.
|
2021-08-30 16:31:19 +02:00
|
|
|
|
|
2015-08-28 17:19:30 +02:00
|
|
|
|
Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
token (:obj:`str`): Bot's unique authentication token.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
base_url (:obj:`str`, optional): Telegram Bot API service URL.
|
|
|
|
|
base_file_url (:obj:`str`, optional): Telegram Bot API file URL.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
request (:class:`telegram.request.BaseRequest`, optional): Pre initialized
|
|
|
|
|
:class:`telegram.request.BaseRequest` instances. Will be used for all bot methods
|
|
|
|
|
*except* for :meth:`get_updates`. If not passed, an instance of
|
|
|
|
|
:class:`telegram.request.HTTPXRequest` will be used.
|
|
|
|
|
get_updates_request (:class:`telegram.request.BaseRequest`, optional): Pre initialized
|
|
|
|
|
:class:`telegram.request.BaseRequest` instances. Will be used exclusively for
|
|
|
|
|
:meth:`get_updates`. If not passed, an instance of
|
|
|
|
|
:class:`telegram.request.HTTPXRequest` will be used.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
private_key (:obj:`bytes`, optional): Private key for decryption of telegram passport data.
|
|
|
|
|
private_key_password (:obj:`bytes`, optional): Password for above private key.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
local_mode (:obj:`bool`, optional): Set to :obj:`True`, if the :paramref:`base_url` is
|
|
|
|
|
the URI of a `Local Bot API Server <https://core.telegram.org/bots/api#using-a-local\
|
|
|
|
|
-bot-api-server>`_ that runs with the ``--local`` flag. Currently, the only effect of
|
|
|
|
|
this is that files are uploaded using their local path in the
|
|
|
|
|
`file URI scheme <https://en.wikipedia.org/wiki/File_URI_scheme>`_.
|
|
|
|
|
Defaults to :obj:`False`.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0.
|
2021-06-06 11:48:48 +02:00
|
|
|
|
|
2022-06-29 21:38:03 +02:00
|
|
|
|
.. include:: inclusions/bot_methods.rst
|
2022-02-09 17:30:16 +01:00
|
|
|
|
|
2015-08-28 17:19:30 +02:00
|
|
|
|
"""
|
2015-07-09 18:19:58 +02:00
|
|
|
|
|
2021-05-29 16:18:16 +02:00
|
|
|
|
__slots__ = (
|
2022-09-18 15:42:12 +02:00
|
|
|
|
"_token",
|
|
|
|
|
"_base_url",
|
|
|
|
|
"_base_file_url",
|
|
|
|
|
"_private_key",
|
2021-10-21 11:17:12 +02:00
|
|
|
|
"_bot_user",
|
2021-05-29 16:18:16 +02:00
|
|
|
|
"_request",
|
2022-03-12 12:27:18 +01:00
|
|
|
|
"_logger",
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"_initialized",
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"_local_mode",
|
2021-05-29 16:18:16 +02:00
|
|
|
|
)
|
|
|
|
|
|
2020-02-06 11:22:56 +01:00
|
|
|
|
def __init__(
|
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
token: str,
|
2021-10-09 13:56:50 +02:00
|
|
|
|
base_url: str = "https://api.telegram.org/bot",
|
|
|
|
|
base_file_url: str = "https://api.telegram.org/file/bot",
|
2022-04-24 12:38:09 +02:00
|
|
|
|
request: BaseRequest = None,
|
|
|
|
|
get_updates_request: BaseRequest = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
private_key: bytes = None,
|
|
|
|
|
private_key_password: bytes = None,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
local_mode: bool = False,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
):
|
2022-10-07 11:51:53 +02:00
|
|
|
|
super().__init__(api_kwargs=None)
|
2022-08-03 08:16:48 +02:00
|
|
|
|
if not token:
|
|
|
|
|
raise InvalidToken("You must pass the token you received from https://t.me/Botfather!")
|
2022-09-18 15:42:12 +02:00
|
|
|
|
self._token = token
|
2015-07-08 22:23:18 +02:00
|
|
|
|
|
2022-09-18 15:42:12 +02:00
|
|
|
|
self._base_url = base_url + self._token
|
|
|
|
|
self._base_file_url = base_file_url + self._token
|
2022-09-19 22:31:23 +02:00
|
|
|
|
self._local_mode = local_mode
|
2021-10-21 11:17:12 +02:00
|
|
|
|
self._bot_user: Optional[User] = None
|
2022-09-18 15:42:12 +02:00
|
|
|
|
self._private_key = None
|
2022-03-12 12:27:18 +01:00
|
|
|
|
self._logger = logging.getLogger(__name__)
|
2022-04-24 12:38:09 +02:00
|
|
|
|
self._initialized = False
|
|
|
|
|
|
|
|
|
|
self._request: Tuple[BaseRequest, BaseRequest] = (
|
|
|
|
|
HTTPXRequest() if get_updates_request is None else get_updates_request,
|
|
|
|
|
HTTPXRequest() if request is None else request,
|
|
|
|
|
)
|
2015-07-20 13:36:08 +02:00
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if private_key:
|
2021-02-13 22:07:37 +01:00
|
|
|
|
if not CRYPTO_INSTALLED:
|
|
|
|
|
raise RuntimeError(
|
|
|
|
|
"To use Telegram Passports, PTB must be installed via `pip install "
|
|
|
|
|
"python-telegram-bot[passport]`."
|
|
|
|
|
)
|
2022-09-18 15:42:12 +02:00
|
|
|
|
self._private_key = serialization.load_pem_private_key(
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
private_key, password=private_key_password, backend=default_backend()
|
|
|
|
|
)
|
2020-10-09 17:22:07 +02:00
|
|
|
|
|
2022-09-18 15:42:12 +02:00
|
|
|
|
@property
|
|
|
|
|
def token(self) -> str:
|
|
|
|
|
""":obj:`str`: Bot's unique authentication token.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
"""
|
|
|
|
|
return self._token
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def base_url(self) -> str:
|
|
|
|
|
""":obj:`str`: Telegram Bot API service URL, built from :paramref:`Bot.base_url` and
|
|
|
|
|
:paramref:`Bot.token`.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
"""
|
|
|
|
|
return self._base_url
|
|
|
|
|
|
|
|
|
|
@property
|
|
|
|
|
def base_file_url(self) -> str:
|
|
|
|
|
""":obj:`str`: Telegram Bot API file URL, built from :paramref:`Bot.base_file_url` and
|
|
|
|
|
:paramref:`Bot.token`.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
"""
|
|
|
|
|
return self._base_file_url
|
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
@property
|
|
|
|
|
def local_mode(self) -> bool:
|
|
|
|
|
""":obj:`bool`: Whether this bot is running in local mode.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
"""
|
|
|
|
|
return self._local_mode
|
|
|
|
|
|
2022-09-18 15:42:12 +02:00
|
|
|
|
# Proper type hints are difficult because:
|
|
|
|
|
# 1. cryptography doesn't have a nice base class, so it would get lengthy
|
|
|
|
|
# 2. we can't import cryptography if it's not installed
|
|
|
|
|
@property
|
|
|
|
|
def private_key(self) -> Optional[Any]:
|
|
|
|
|
"""Deserialized private key for decryption of telegram passport data.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
"""
|
|
|
|
|
return self._private_key
|
|
|
|
|
|
2022-03-12 12:27:18 +01:00
|
|
|
|
def __reduce__(self) -> NoReturn:
|
|
|
|
|
"""Called by pickle.dumps(). Serializing bots is unadvisable, so we forbid pickling."""
|
|
|
|
|
raise pickle.PicklingError("Bot objects cannot be pickled!")
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
# TODO: After https://youtrack.jetbrains.com/issue/PY-50952 is fixed, we can revisit this and
|
|
|
|
|
# consider adding Paramspec from typing_extensions to properly fix this. Currently a workaround
|
|
|
|
|
def _log(func: Any): # type: ignore[no-untyped-def] # skipcq: PY-D0003
|
|
|
|
|
logger = logging.getLogger(func.__module__)
|
|
|
|
|
|
|
|
|
|
@functools.wraps(func)
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def decorator(*args, **kwargs): # type: ignore[no-untyped-def]
|
2021-10-03 20:06:07 +02:00
|
|
|
|
logger.debug("Entering: %s", func.__name__)
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await func(*args, **kwargs)
|
2021-10-03 20:06:07 +02:00
|
|
|
|
logger.debug(result)
|
|
|
|
|
logger.debug("Exiting: %s", func.__name__)
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
return decorator
|
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
def _parse_file_input(
|
|
|
|
|
self,
|
|
|
|
|
file_input: Union[FileInput, "TelegramObject"],
|
|
|
|
|
tg_type: Type["TelegramObject"] = None,
|
|
|
|
|
filename: str = None,
|
|
|
|
|
attach: bool = False,
|
|
|
|
|
) -> Union[str, "InputFile", Any]:
|
|
|
|
|
return parse_file_input(
|
|
|
|
|
file_input=file_input,
|
|
|
|
|
tg_type=tg_type,
|
|
|
|
|
filename=filename,
|
|
|
|
|
attach=attach,
|
|
|
|
|
local_mode=self._local_mode,
|
|
|
|
|
)
|
|
|
|
|
|
2022-09-17 15:08:54 +02:00
|
|
|
|
def _insert_defaults(self, data: Dict[str, object]) -> None: # skipcq: PYL-R0201
|
2021-10-03 15:10:13 +02:00
|
|
|
|
"""This method is here to make ext.Defaults work. Because we need to be able to tell
|
|
|
|
|
e.g. `send_message(chat_id, text)` from `send_message(chat_id, text, parse_mode=None)`, the
|
|
|
|
|
default values for `parse_mode` etc are not `None` but `DEFAULT_NONE`. While this *could*
|
|
|
|
|
be done in ExtBot instead of Bot, shortcuts like `Message.reply_text` need to work for both
|
|
|
|
|
Bot and ExtBot, so they also have the `DEFAULT_NONE` default values.
|
|
|
|
|
|
|
|
|
|
This makes it necessary to convert `DefaultValue(obj)` to `obj` at some point between
|
|
|
|
|
`Message.reply_text` and the request to TG. Doing this here in a centralized manner is a
|
|
|
|
|
rather clean and minimally invasive solution, i.e. the link between tg and tg.ext is as
|
|
|
|
|
small as possible.
|
|
|
|
|
See also _insert_defaults_for_ilq
|
|
|
|
|
ExtBot overrides this method to actually insert default values.
|
|
|
|
|
|
|
|
|
|
If in the future we come up with a better way of making `Defaults` work, we can cut this
|
|
|
|
|
link as well.
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"""
|
2021-10-03 15:10:13 +02:00
|
|
|
|
# We
|
|
|
|
|
# 1) set the correct parse_mode for all InputMedia objects
|
|
|
|
|
# 2) replace all DefaultValue instances with the corresponding normal value.
|
2021-02-19 19:07:48 +01:00
|
|
|
|
for key, val in data.items():
|
2021-10-03 15:10:13 +02:00
|
|
|
|
# 1)
|
|
|
|
|
if isinstance(val, InputMedia):
|
2022-10-31 09:46:56 +01:00
|
|
|
|
# Copy object as not to edit it in-place
|
|
|
|
|
val = copy(val)
|
2021-10-15 18:03:56 +02:00
|
|
|
|
val.parse_mode = DefaultValue.get_value(val.parse_mode)
|
2022-10-31 09:46:56 +01:00
|
|
|
|
data[key] = val
|
2021-10-03 15:10:13 +02:00
|
|
|
|
elif key == "media" and isinstance(val, list):
|
2022-10-31 09:46:56 +01:00
|
|
|
|
# Copy objects as not to edit them in-place
|
|
|
|
|
copy_list = [copy(media) for media in val]
|
|
|
|
|
for media in copy_list:
|
2021-10-03 15:10:13 +02:00
|
|
|
|
media.parse_mode = DefaultValue.get_value(media.parse_mode)
|
2022-10-31 09:46:56 +01:00
|
|
|
|
data[key] = copy_list
|
2021-10-03 15:10:13 +02:00
|
|
|
|
# 2)
|
|
|
|
|
else:
|
|
|
|
|
data[key] = DefaultValue.get_value(val)
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def _post(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
endpoint: str,
|
|
|
|
|
data: JSONDict = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Union[bool, JSONDict, None]:
|
|
|
|
|
if data is None:
|
|
|
|
|
data = {}
|
|
|
|
|
|
2020-06-30 22:07:38 +02:00
|
|
|
|
if api_kwargs:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data.update(api_kwargs)
|
2020-06-30 22:07:38 +02:00
|
|
|
|
|
2021-02-19 19:07:48 +01:00
|
|
|
|
# Insert is in-place, so no return value for data
|
2022-04-24 12:38:09 +02:00
|
|
|
|
self._insert_defaults(data)
|
2021-10-03 15:10:13 +02:00
|
|
|
|
|
2021-02-19 19:07:48 +01:00
|
|
|
|
# Drop any None values because Telegram doesn't handle them well
|
|
|
|
|
data = {key: value for key, value in data.items() if value is not None}
|
|
|
|
|
|
2022-08-26 06:50:03 +02:00
|
|
|
|
return await self._do_post(
|
|
|
|
|
endpoint=endpoint,
|
|
|
|
|
data=data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
async def _do_post(
|
|
|
|
|
self,
|
|
|
|
|
endpoint: str,
|
|
|
|
|
data: JSONDict,
|
|
|
|
|
*,
|
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
) -> Union[bool, JSONDict, None]:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
# This also converts datetimes into timestamps.
|
|
|
|
|
# We don't do this earlier so that _insert_defaults (see above) has a chance to convert
|
2021-10-03 15:10:13 +02:00
|
|
|
|
# to the default timezone in case this is called by ExtBot
|
2022-04-24 12:38:09 +02:00
|
|
|
|
request_data = RequestData(
|
|
|
|
|
parameters=[RequestParameter.from_input(key, value) for key, value in data.items()],
|
|
|
|
|
)
|
2021-10-03 15:10:13 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
if endpoint == "getUpdates":
|
|
|
|
|
request = self._request[0]
|
|
|
|
|
else:
|
|
|
|
|
request = self._request[1]
|
|
|
|
|
|
|
|
|
|
return await request.post(
|
2022-09-18 15:42:12 +02:00
|
|
|
|
url=f"{self._base_url}/{endpoint}",
|
2022-04-24 12:38:09 +02:00
|
|
|
|
request_data=request_data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
)
|
2020-10-09 17:22:07 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def _send_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
endpoint: str,
|
|
|
|
|
data: JSONDict,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Union[bool, Message]:
|
2019-02-13 11:37:13 +01:00
|
|
|
|
if reply_to_message_id is not None:
|
|
|
|
|
data["reply_to_message_id"] = reply_to_message_id
|
|
|
|
|
|
2021-10-03 15:10:13 +02:00
|
|
|
|
# We don't check if (DEFAULT_)None here, so that _post is able to insert the defaults
|
2021-02-19 19:07:48 +01:00
|
|
|
|
# correctly, if necessary
|
|
|
|
|
data["disable_notification"] = disable_notification
|
|
|
|
|
data["allow_sending_without_reply"] = allow_sending_without_reply
|
2022-01-07 17:02:23 +01:00
|
|
|
|
data["protect_content"] = protect_content
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2019-02-13 11:37:13 +01:00
|
|
|
|
if reply_markup is not None:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["reply_markup"] = reply_markup
|
2019-02-13 11:37:13 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
endpoint,
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2019-02-13 11:37:13 +01:00
|
|
|
|
|
|
|
|
|
if result is True:
|
2020-10-31 16:33:34 +01:00
|
|
|
|
return result
|
2019-02-13 11:37:13 +01:00
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return Message.de_json(result, self) # type: ignore[return-value, arg-type]
|
2019-02-13 11:37:13 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def initialize(self) -> None:
|
|
|
|
|
"""Initialize resources used by this class. Currently calls :meth:`get_me` to
|
|
|
|
|
cache :attr:`bot` and calls :meth:`telegram.request.BaseRequest.initialize` for
|
|
|
|
|
the request objects used by this bot.
|
|
|
|
|
|
2022-05-06 17:15:23 +02:00
|
|
|
|
.. seealso:: :meth:`shutdown`
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"""
|
|
|
|
|
if self._initialized:
|
|
|
|
|
self._logger.debug("This Bot is already initialized.")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
await asyncio.gather(self._request[0].initialize(), self._request[1].initialize())
|
2022-08-03 08:16:48 +02:00
|
|
|
|
# Since the bot is to be initialized only once, we can also use it for
|
|
|
|
|
# verifying the token passed and raising an exception if it's invalid.
|
|
|
|
|
try:
|
|
|
|
|
await self.get_me()
|
|
|
|
|
except InvalidToken as exc:
|
2022-09-18 15:42:12 +02:00
|
|
|
|
raise InvalidToken(f"The token `{self._token}` was rejected by the server.") from exc
|
2022-04-24 12:38:09 +02:00
|
|
|
|
self._initialized = True
|
|
|
|
|
|
|
|
|
|
async def shutdown(self) -> None:
|
|
|
|
|
"""Stop & clear resources used by this class. Currently just calls
|
|
|
|
|
:meth:`telegram.request.BaseRequest.shutdown` for the request objects used by this bot.
|
|
|
|
|
|
2022-05-06 17:15:23 +02:00
|
|
|
|
.. seealso:: :meth:`initialize`
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"""
|
|
|
|
|
if not self._initialized:
|
|
|
|
|
self._logger.debug("This Bot is already shut down. Returning.")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
await asyncio.gather(self._request[0].shutdown(), self._request[1].shutdown())
|
|
|
|
|
self._initialized = False
|
|
|
|
|
|
|
|
|
|
async def __aenter__(self: BT) -> BT:
|
|
|
|
|
try:
|
|
|
|
|
await self.initialize()
|
|
|
|
|
return self
|
|
|
|
|
except Exception as exc:
|
|
|
|
|
await self.shutdown()
|
|
|
|
|
raise exc
|
|
|
|
|
|
|
|
|
|
async def __aexit__(
|
|
|
|
|
self,
|
|
|
|
|
exc_type: Optional[Type[BaseException]],
|
|
|
|
|
exc_val: Optional[BaseException],
|
|
|
|
|
exc_tb: Optional[TracebackType],
|
|
|
|
|
) -> None:
|
|
|
|
|
# Make sure not to return `True` so that exceptions are not suppressed
|
|
|
|
|
# https://docs.python.org/3/reference/datamodel.html?#object.__aexit__
|
|
|
|
|
await self.shutdown()
|
|
|
|
|
|
2016-09-06 15:38:07 +02:00
|
|
|
|
@property
|
2022-04-24 12:38:09 +02:00
|
|
|
|
def request(self) -> BaseRequest:
|
|
|
|
|
"""The :class:`~telegram.request.BaseRequest` object used by this bot.
|
|
|
|
|
|
|
|
|
|
Warning:
|
|
|
|
|
Requests to the Bot API are made by the various methods of this class. This attribute
|
|
|
|
|
should *not* be used manually.
|
|
|
|
|
"""
|
|
|
|
|
return self._request[1]
|
2016-09-06 15:38:07 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
|
|
|
|
def bot(self) -> User:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":class:`telegram.User`: User instance for the bot as returned by :meth:`get_me`.
|
|
|
|
|
|
|
|
|
|
Warning:
|
|
|
|
|
This value is the cached return value of :meth:`get_me`. If the bots profile is
|
|
|
|
|
changed during runtime, this value won't reflect the changes until :meth:`get_me` is
|
|
|
|
|
called again.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`initialize`
|
|
|
|
|
"""
|
2021-10-21 11:17:12 +02:00
|
|
|
|
if self._bot_user is None:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
raise RuntimeError(
|
|
|
|
|
f"{self.__class__.__name__} is not properly initialized. Call "
|
|
|
|
|
f"`{self.__class__.__name__}.initialize` before accessing this property."
|
|
|
|
|
)
|
2021-10-21 11:17:12 +02:00
|
|
|
|
return self._bot_user
|
2021-01-17 09:23:36 +01:00
|
|
|
|
|
|
|
|
|
@property
|
2021-10-08 08:17:00 +02:00
|
|
|
|
def id(self) -> int: # pylint: disable=invalid-name
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`int`: Unique identifier for this bot. Shortcut for the corresponding attribute of
|
|
|
|
|
:attr:`bot`.
|
|
|
|
|
"""
|
2021-01-17 09:23:36 +01:00
|
|
|
|
return self.bot.id
|
2015-07-08 22:23:18 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def first_name(self) -> str:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`str`: Bot's first name. Shortcut for the corresponding attribute of
|
|
|
|
|
:attr:`bot`.
|
|
|
|
|
"""
|
2021-01-17 09:23:36 +01:00
|
|
|
|
return self.bot.first_name
|
2015-07-08 22:23:18 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def last_name(self) -> str:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`str`: Optional. Bot's last name. Shortcut for the corresponding attribute of
|
|
|
|
|
:attr:`bot`.
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return self.bot.last_name # type: ignore
|
2015-07-20 13:59:41 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def username(self) -> str:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`str`: Bot's username. Shortcut for the corresponding attribute of
|
|
|
|
|
:attr:`bot`.
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return self.bot.username # type: ignore
|
2015-07-08 22:23:18 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def link(self) -> str:
|
2020-03-09 22:17:05 +01:00
|
|
|
|
""":obj:`str`: Convenience property. Returns the t.me link of the bot."""
|
2020-11-23 22:09:29 +01:00
|
|
|
|
return f"https://t.me/{self.username}"
|
2020-03-09 22:17:05 +01:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def can_join_groups(self) -> bool:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`bool`: Bot's :attr:`telegram.User.can_join_groups` attribute. Shortcut for the
|
|
|
|
|
corresponding attribute of :attr:`bot`.
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return self.bot.can_join_groups # type: ignore
|
2020-03-29 09:52:30 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def can_read_all_group_messages(self) -> bool:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`bool`: Bot's :attr:`telegram.User.can_read_all_group_messages` attribute.
|
|
|
|
|
Shortcut for the corresponding attribute of :attr:`bot`.
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return self.bot.can_read_all_group_messages # type: ignore
|
2020-03-29 09:52:30 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def supports_inline_queries(self) -> bool:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`bool`: Bot's :attr:`telegram.User.supports_inline_queries` attribute.
|
|
|
|
|
Shortcut for the corresponding attribute of :attr:`bot`.
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return self.bot.supports_inline_queries # type: ignore
|
2020-03-29 09:52:30 +02:00
|
|
|
|
|
2015-07-08 22:23:18 +02:00
|
|
|
|
@property
|
2020-10-06 19:28:40 +02:00
|
|
|
|
def name(self) -> str:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
""":obj:`str`: Bot's @username. Shortcut for the corresponding attribute of :attr:`bot`."""
|
2020-11-23 22:09:29 +01:00
|
|
|
|
return f"@{self.username}"
|
2015-07-08 22:23:18 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_me(
|
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
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,
|
|
|
|
|
) -> User:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""A simple method for testing your bot's auth token. Requires no parameters.
|
2015-07-20 12:53:58 +02:00
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-01-06 22:48:34 +01:00
|
|
|
|
|
2015-07-20 12:53:58 +02:00
|
|
|
|
Returns:
|
2016-10-17 00:11:20 +02:00
|
|
|
|
:class:`telegram.User`: A :class:`telegram.User` instance representing that bot if the
|
2017-07-23 22:33:08 +02:00
|
|
|
|
credentials are valid, :obj:`None` otherwise.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getMe",
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2022-05-05 09:27:54 +02:00
|
|
|
|
self._bot_user = User.de_json(result, self) # type: ignore[arg-type]
|
2021-10-21 11:17:12 +02:00
|
|
|
|
return self._bot_user # type: ignore[return-value]
|
2015-07-20 12:53:58 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_message(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
text: str,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_web_page_preview: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send text messages.
|
2015-07-08 00:54:00 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_text`, :attr:`telegram.Chat.send_message`,
|
|
|
|
|
:attr:`telegram.User.send_message`
|
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-10-19 18:28:19 +02:00
|
|
|
|
text (:obj:`str`): Text of the message to be sent. Max
|
|
|
|
|
:tg-const:`telegram.constants.MessageLimit.TEXT_LENGTH` characters after entities
|
|
|
|
|
parsing.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
parse_mode (:obj:`str`): Send Markdown or HTML, if you want Telegram apps to show bold,
|
|
|
|
|
italic, fixed-width text or inline URLs in your bot's message. See the constants in
|
2021-10-19 18:28:19 +02:00
|
|
|
|
:class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
entities (List[:class:`telegram.MessageEntity`], optional): List of special entities
|
2022-02-09 17:30:16 +01:00
|
|
|
|
that appear in message text, which can be specified instead of
|
|
|
|
|
:paramref:`parse_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_web_page_preview (:obj:`bool`, optional): Disables link previews for links in
|
|
|
|
|
this message.
|
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
2016-04-19 14:04:25 +02:00
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of sent messages from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Returns:
|
2016-10-17 00:11:20 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent message is returned.
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"text": text,
|
|
|
|
|
"parse_mode": parse_mode,
|
|
|
|
|
"disable_web_page_preview": disable_web_page_preview,
|
|
|
|
|
}
|
2015-07-12 00:01:02 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["entities"] = entities
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendMessage",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def delete_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2019-08-23 21:20:41 +02:00
|
|
|
|
Use this method to delete a message, including service messages, with the following
|
|
|
|
|
limitations:
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
- A message can only be deleted if it was sent less than 48 hours ago.
|
|
|
|
|
- A dice message in a private chat can only be deleted if it was sent more than 24
|
|
|
|
|
hours ago.
|
|
|
|
|
- Bots can delete outgoing messages in private chats, groups, and supergroups.
|
|
|
|
|
- Bots can delete incoming messages in private chats.
|
|
|
|
|
- Bots granted :attr:`~telegram.ChatMemberAdministrator.can_post_messages` permissions
|
|
|
|
|
can delete outgoing messages in channels.
|
|
|
|
|
- If the bot is an administrator of a group, it can delete any message there.
|
|
|
|
|
- If the bot has :attr:`~telegram.ChatMemberAdministrator.can_delete_messages`
|
|
|
|
|
permission in a supergroup or a channel, it can delete any message there.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`telegram.Message.delete`,
|
|
|
|
|
:meth:`telegram.CallbackQuery.delete_message`
|
2017-05-12 17:40:57 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`): Identifier of the message to delete.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-05-12 17:40:57 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-05-12 17:40:57 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "message_id": message_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"deleteMessage",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-05-12 17:40:57 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def forward_message(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
from_chat_id: Union[str, int],
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2022-05-18 17:18:44 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to forward messages of any kind. Service messages can't be forwarded.
|
2015-07-08 00:54:00 +02:00
|
|
|
|
|
2021-12-11 15:21:56 +01:00
|
|
|
|
Note:
|
|
|
|
|
Since the release of Bot API 5.5 it can be impossible to forward messages from
|
|
|
|
|
some chats. Use the attributes :attr:`telegram.Message.has_protected_content` and
|
|
|
|
|
:attr:`telegram.Chat.has_protected_content` to check this.
|
|
|
|
|
|
|
|
|
|
As a workaround, it is still possible to use :meth:`copy_message`. However, this
|
|
|
|
|
behaviour is undocumented and might be changed by Telegram.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.forward`, :attr:`telegram.Chat.forward_to`,
|
|
|
|
|
:attr:`telegram.Chat.forward_from`
|
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
from_chat_id (:obj:`int` | :obj:`str`): Unique identifier for the chat where the
|
2021-04-30 10:47:41 +02:00
|
|
|
|
original message was sent (or channel username in the format ``@channelusername``).
|
|
|
|
|
message_id (:obj:`int`): Message identifier in the chat specified in from_chat_id.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {}
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
2015-07-07 21:50:36 +02:00
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if from_chat_id:
|
|
|
|
|
data["from_chat_id"] = from_chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"forwardMessage",
|
|
|
|
|
data,
|
|
|
|
|
disable_notification=disable_notification,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_photo(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
photo: Union[FileInput, "PhotoSize"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send photos.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_photo`, :attr:`telegram.Chat.send_photo`,
|
|
|
|
|
:attr:`telegram.User.send_photo`
|
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
photo (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.PhotoSize`): Photo to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.PhotoSize` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
caption (:obj:`str`, optional): Photo caption (may also be used when resending photos
|
2021-10-19 18:28:19 +02:00
|
|
|
|
by file_id), 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH`
|
|
|
|
|
characters after entities parsing.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the photo, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 00:54:00 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-12-16 14:28:53 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"photo": self._parse_file_input(photo, PhotoSize, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-12-16 14:28:53 +01:00
|
|
|
|
}
|
2015-07-07 23:46:32 +02:00
|
|
|
|
|
2015-07-07 21:50:36 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendPhoto",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_audio(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
audio: Union[FileInput, "Audio"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
duration: int = None,
|
|
|
|
|
performer: str = None,
|
|
|
|
|
title: str = None,
|
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
thumb: FileInput = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send audio files, if you want Telegram clients to display them in the
|
2020-04-10 20:05:01 +02:00
|
|
|
|
music player. Your audio must be in the .mp3 or .m4a format.
|
|
|
|
|
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Bots can currently send audio files of up to
|
|
|
|
|
:tg-const:`telegram.constants.FileSizeLimit.FILESIZE_UPLOAD` in size, this limit may be
|
|
|
|
|
changed in the future.
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
2021-04-30 10:47:41 +02:00
|
|
|
|
For sending voice messages, use the :meth:`send_voice` method instead.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_audio`, :attr:`telegram.Chat.send_audio`,
|
|
|
|
|
:attr:`telegram.User.send_audio`
|
|
|
|
|
|
2015-07-08 01:10:43 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
audio (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Audio`): Audio file to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.Audio` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
caption (:obj:`str`, optional): Audio caption,
|
|
|
|
|
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
|
|
|
|
entities parsing.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
duration (:obj:`int`, optional): Duration of sent audio in seconds.
|
|
|
|
|
performer (:obj:`str`, optional): Performer.
|
|
|
|
|
title (:obj:`str`, optional): Track name.
|
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
thumb (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`, \
|
|
|
|
|
optional): |thumbdocstring|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the audio, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 01:10:43 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-12-16 14:28:53 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"audio": self._parse_file_input(audio, Audio, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-12-16 14:28:53 +01:00
|
|
|
|
}
|
2015-07-08 01:10:43 +02:00
|
|
|
|
|
2015-08-17 16:34:42 +02:00
|
|
|
|
if duration:
|
|
|
|
|
data["duration"] = duration
|
|
|
|
|
if performer:
|
|
|
|
|
data["performer"] = performer
|
|
|
|
|
if title:
|
|
|
|
|
data["title"] = title
|
2016-10-03 15:05:49 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if thumb:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb, attach=True)
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendAudio",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 01:10:43 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_document(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
document: Union[FileInput, "Document"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
thumb: FileInput = None,
|
|
|
|
|
disable_content_type_detection: bool = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send general files.
|
|
|
|
|
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Bots can currently send files of any type of up to
|
|
|
|
|
:tg-const:`telegram.constants.FileSizeLimit.FILESIZE_UPLOAD` in size, this limit may be
|
2020-04-10 20:05:01 +02:00
|
|
|
|
changed in the future.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_document`, :attr:`telegram.Chat.send_document`,
|
|
|
|
|
:attr:`telegram.User.send_document`
|
|
|
|
|
|
2015-07-08 02:12:51 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
document (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Document`): File to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.Document` object to send.
|
|
|
|
|
|
|
|
|
|
Note:
|
|
|
|
|
Sending by URL will currently only work ``GIF``, ``PDF`` & ``ZIP`` files.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
caption (:obj:`str`, optional): Document caption (may also be used when resending
|
2021-10-19 18:28:19 +02:00
|
|
|
|
documents by file_id), 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH`
|
|
|
|
|
characters after entities parsing.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
disable_content_type_detection (:obj:`bool`, optional): Disables automatic server-side
|
|
|
|
|
content type detection for files uploaded using multipart/form-data.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
thumb (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`, \
|
|
|
|
|
optional): |thumbdocstring|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the document, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 02:12:51 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"document": self._parse_file_input(document, Document, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
}
|
2015-07-08 02:12:51 +02:00
|
|
|
|
|
2016-04-24 17:51:15 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if disable_content_type_detection is not None:
|
|
|
|
|
data["disable_content_type_detection"] = disable_content_type_detection
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if thumb:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb, attach=True)
|
2015-09-11 01:08:24 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendDocument",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 02:12:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_sticker(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
sticker: Union[FileInput, "Sticker"],
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
2022-02-02 21:05:46 +01:00
|
|
|
|
Use this method to send static ``.WEBP``, animated ``.TGS``, or video ``.WEBM`` stickers.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_sticker`, :attr:`telegram.Chat.send_sticker`,
|
|
|
|
|
:attr:`telegram.User.send_sticker`
|
|
|
|
|
|
2015-07-08 14:17:18 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Sticker`): Sticker to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.Sticker` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 14:17:18 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "sticker": self._parse_file_input(sticker, Sticker)}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendSticker",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 04:52:12 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_video(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
video: Union[FileInput, "Video"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
duration: int = None,
|
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
|
|
|
|
width: int = None,
|
|
|
|
|
height: int = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
supports_streaming: bool = None,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
thumb: FileInput = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send video files, Telegram clients support mp4 videos
|
|
|
|
|
(other formats may be sent as Document).
|
|
|
|
|
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Bots can currently send video files of up to
|
|
|
|
|
:tg-const:`telegram.constants.FileSizeLimit.FILESIZE_UPLOAD` in size, this limit may be
|
|
|
|
|
changed in the future.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
:paramref:`thumb` will be ignored for small video files, for which Telegram can
|
|
|
|
|
easily generate thumbnails. However, this behaviour is undocumented and might be
|
|
|
|
|
changed by Telegram.
|
2015-07-08 14:17:18 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_video`, :attr:`telegram.Chat.send_video`,
|
|
|
|
|
:attr:`telegram.User.send_video`
|
|
|
|
|
|
2015-07-08 14:17:18 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
video (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Video`): Video file to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.Video` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
duration (:obj:`int`, optional): Duration of sent video in seconds.
|
2017-08-02 04:56:07 +02:00
|
|
|
|
width (:obj:`int`, optional): Video width.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
height (:obj:`int`, optional): Video height.
|
|
|
|
|
caption (:obj:`str`, optional): Video caption (may also be used when resending videos
|
2021-10-19 18:28:19 +02:00
|
|
|
|
by file_id), 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH`
|
|
|
|
|
characters after entities parsing.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
supports_streaming (:obj:`bool`, optional): Pass :obj:`True`, if the uploaded video is
|
2018-02-18 16:11:04 +01:00
|
|
|
|
suitable for streaming.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
thumb (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`, \
|
|
|
|
|
optional): |thumbdocstring|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the video, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 14:17:18 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-12-16 14:28:53 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"video": self._parse_file_input(video, Video, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-12-16 14:28:53 +01:00
|
|
|
|
}
|
2015-07-08 14:17:18 +02:00
|
|
|
|
|
2015-08-11 22:32:06 +02:00
|
|
|
|
if duration:
|
|
|
|
|
data["duration"] = duration
|
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2018-02-18 16:11:04 +01:00
|
|
|
|
if supports_streaming:
|
|
|
|
|
data["supports_streaming"] = supports_streaming
|
2017-06-14 13:48:45 +02:00
|
|
|
|
if width:
|
|
|
|
|
data["width"] = width
|
|
|
|
|
if height:
|
|
|
|
|
data["height"] = height
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if thumb:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb, attach=True)
|
2015-08-11 22:32:06 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendVideo",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 14:17:18 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_video_note(
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
video_note: Union[FileInput, "VideoNote"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
duration: int = None,
|
|
|
|
|
length: int = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
thumb: FileInput = None,
|
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
|
|
|
|
As of v.4.0, Telegram clients support rounded square mp4 videos of up to 1 minute long.
|
|
|
|
|
Use this method to send video messages.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
:paramref:`thumb` will be ignored for small video files, for which Telegram can
|
|
|
|
|
easily generate thumbnails. However, this behaviour is undocumented and might be
|
|
|
|
|
changed by Telegram.
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_video_note`,
|
|
|
|
|
:attr:`telegram.Chat.send_video_note`,
|
|
|
|
|
:attr:`telegram.User.send_video_note`
|
|
|
|
|
|
2015-08-17 16:34:42 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
video_note (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2022-09-19 22:31:23 +02:00
|
|
|
|
:class:`telegram.VideoNote`): Video note to send.
|
|
|
|
|
Pass a file_id as String to send a video note that exists on the Telegram
|
|
|
|
|
servers (recommended) or upload a new video using multipart/form-data.
|
|
|
|
|
|uploadinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.VideoNote` object to send.
|
|
|
|
|
Sending video notes by a URL is currently unsupported.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
duration (:obj:`int`, optional): Duration of sent video in seconds.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
length (:obj:`int`, optional): Video width and height, i.e. diameter of the video
|
|
|
|
|
message.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
thumb (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`, \
|
|
|
|
|
optional): |thumbdocstring|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the video note, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"video_note": self._parse_file_input(video_note, VideoNote, filename=filename),
|
2020-11-29 16:20:46 +01:00
|
|
|
|
}
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
if duration is not None:
|
|
|
|
|
data["duration"] = duration
|
|
|
|
|
if length is not None:
|
|
|
|
|
data["length"] = length
|
|
|
|
|
if thumb:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb, attach=True)
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendVideoNote",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_animation(
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
animation: Union[FileInput, "Animation"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
duration: int = None,
|
|
|
|
|
width: int = None,
|
|
|
|
|
height: int = None,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
thumb: FileInput = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound).
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Bots can currently send animation files of up to
|
|
|
|
|
:tg-const:`telegram.constants.FileSizeLimit.FILESIZE_UPLOAD` in size, this limit may be
|
|
|
|
|
changed in the future.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2020-10-07 17:12:05 +02:00
|
|
|
|
Note:
|
2022-06-27 18:58:51 +02:00
|
|
|
|
:paramref:`thumb` will be ignored for small files, for which Telegram can easily
|
2022-09-19 22:31:23 +02:00
|
|
|
|
generate thumbnails. However, this behaviour is undocumented and might be changed
|
2020-10-07 17:12:05 +02:00
|
|
|
|
by Telegram.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_animation`,
|
|
|
|
|
:attr:`telegram.Chat.send_animation`,
|
|
|
|
|
:attr:`telegram.User.send_animation`
|
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
animation (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2022-09-19 22:31:23 +02:00
|
|
|
|
:class:`telegram.Animation`): Animation to send.
|
|
|
|
|
|fileinput|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
Lastly you can pass an existing :class:`telegram.Animation` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
duration (:obj:`int`, optional): Duration of sent animation in seconds.
|
|
|
|
|
width (:obj:`int`, optional): Animation width.
|
|
|
|
|
height (:obj:`int`, optional): Animation height.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
thumb (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`, \
|
|
|
|
|
optional): |thumbdocstring|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
caption (:obj:`str`, optional): Animation caption (may also be used when resending
|
2021-10-19 18:28:19 +02:00
|
|
|
|
animations by file_id),
|
|
|
|
|
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
|
|
|
|
entities parsing.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the animation, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-12-16 14:28:53 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"animation": self._parse_file_input(animation, Animation, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-12-16 14:28:53 +01:00
|
|
|
|
}
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
|
|
|
|
if duration:
|
|
|
|
|
data["duration"] = duration
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if width:
|
|
|
|
|
data["width"] = width
|
|
|
|
|
if height:
|
|
|
|
|
data["height"] = height
|
|
|
|
|
if thumb:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb, attach=True)
|
2016-10-03 15:05:49 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendAnimation",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-08-17 16:34:42 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_voice(
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
voice: Union[FileInput, "Voice"],
|
2020-10-06 19:28:40 +02:00
|
|
|
|
duration: int = None,
|
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
|
|
|
|
filename: str = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send audio files, if you want Telegram clients to display the file
|
2022-04-24 12:38:09 +02:00
|
|
|
|
as a playable voice message. For this to work, your audio must be in an ``.ogg`` file
|
2020-04-10 20:05:01 +02:00
|
|
|
|
encoded with OPUS (other formats may be sent as Audio or Document). Bots can currently
|
2021-10-19 18:28:19 +02:00
|
|
|
|
send voice messages of up to :tg-const:`telegram.constants.FileSizeLimit.FILESIZE_UPLOAD`
|
|
|
|
|
in size, this limit may be changed in the future.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
To use this method, the file must have the type :mimetype:`audio/ogg` and be no more
|
|
|
|
|
than ``1MB`` in size. ``1-20MB`` voice notes will be sent as files.
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_voice`, :attr:`telegram.Chat.send_voice`,
|
|
|
|
|
:attr:`telegram.User.send_voice`
|
|
|
|
|
|
2017-05-20 19:35:55 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
voice (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Voice`): Voice file to send.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|fileinput|
|
|
|
|
|
Lastly you can pass an existing :class:`telegram.Voice` object to send.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
caption (:obj:`str`, optional): Voice message caption,
|
|
|
|
|
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
|
|
|
|
entities parsing.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
duration (:obj:`int`, optional): Duration of the voice message in seconds.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
filename (:obj:`str`, optional): Custom file name for the voice, when uploading a
|
|
|
|
|
new file. Convenience parameter, useful e.g. when sending files generated by the
|
|
|
|
|
:obj:`tempfile` module.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.1
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-12-16 14:28:53 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
"voice": self._parse_file_input(voice, Voice, filename=filename),
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
2020-12-16 14:28:53 +01:00
|
|
|
|
}
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if duration:
|
2017-05-20 19:35:55 +02:00
|
|
|
|
data["duration"] = duration
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendVoice",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-05-20 19:35:55 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_media_group(
|
2017-12-08 22:38:59 +01:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2020-12-30 13:41:07 +01:00
|
|
|
|
media: List[
|
|
|
|
|
Union["InputMediaAudio", "InputMediaDocument", "InputMediaPhoto", "InputMediaVideo"]
|
|
|
|
|
],
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> List[Message]:
|
2017-12-08 22:38:59 +01:00
|
|
|
|
"""Use this method to send a group of photos or videos as an album.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_media_group`,
|
|
|
|
|
:attr:`telegram.Chat.send_media_group`,
|
|
|
|
|
:attr:`telegram.User.send_media_group`
|
|
|
|
|
|
2017-12-08 22:38:59 +01:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2020-11-29 16:20:46 +01:00
|
|
|
|
media (List[:class:`telegram.InputMediaAudio`, :class:`telegram.InputMediaDocument`, \
|
|
|
|
|
:class:`telegram.InputMediaPhoto`, :class:`telegram.InputMediaVideo`]): An array
|
|
|
|
|
describing messages to be sent, must include 2–10 items.
|
2017-12-08 22:38:59 +01:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-12-08 22:38:59 +01:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to ``20``.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-12-08 22:38:59 +01:00
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
List[:class:`telegram.Message`]: An array of the sent Messages.
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-12-08 22:38:59 +01:00
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"media": media,
|
|
|
|
|
"disable_notification": disable_notification,
|
|
|
|
|
"allow_sending_without_reply": allow_sending_without_reply,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
"protect_content": protect_content,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
}
|
2017-12-08 22:38:59 +01:00
|
|
|
|
|
|
|
|
|
if reply_to_message_id:
|
|
|
|
|
data["reply_to_message_id"] = reply_to_message_id
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"sendMediaGroup",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-12-08 22:38:59 +01:00
|
|
|
|
|
2021-02-19 19:07:48 +01:00
|
|
|
|
return Message.de_list(result, self) # type: ignore
|
2017-12-08 22:38:59 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_location(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
latitude: float = None,
|
|
|
|
|
longitude: float = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
|
|
|
|
live_period: int = None,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
horizontal_accuracy: float = None,
|
|
|
|
|
heading: int = None,
|
|
|
|
|
proximity_alert_radius: int = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
location: Location = None,
|
|
|
|
|
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,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send point on the map.
|
2015-07-08 14:37:25 +02:00
|
|
|
|
|
2017-07-25 00:35:22 +02:00
|
|
|
|
Note:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
You can either supply a :paramref:`latitude` and :paramref:`longitude` or a
|
|
|
|
|
:paramref:`location`.
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_location`, :attr:`telegram.Chat.send_location`,
|
|
|
|
|
:attr:`telegram.User.send_location`
|
|
|
|
|
|
2015-07-08 14:37:25 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-25 00:35:22 +02:00
|
|
|
|
latitude (:obj:`float`, optional): Latitude of location.
|
|
|
|
|
longitude (:obj:`float`, optional): Longitude of location.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
horizontal_accuracy (:obj:`int`, optional): The radius of uncertainty for the location,
|
2021-10-19 18:28:19 +02:00
|
|
|
|
measured in meters;
|
|
|
|
|
0-:tg-const:`telegram.constants.LocationLimit.HORIZONTAL_ACCURACY`.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
live_period (:obj:`int`, optional): Period in seconds for which the location will be
|
|
|
|
|
updated, should be between 60 and 86400.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
heading (:obj:`int`, optional): For live locations, a direction in which the user is
|
2021-10-19 18:28:19 +02:00
|
|
|
|
moving, in degrees. Must be between 1 and
|
|
|
|
|
:tg-const:`telegram.constants.LocationLimit.HEADING` if specified.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
proximity_alert_radius (:obj:`int`, optional): For live locations, a maximum distance
|
|
|
|
|
for proximity alerts about approaching another chat member, in meters. Must be
|
2021-10-19 18:28:19 +02:00
|
|
|
|
between 1 and :tg-const:`telegram.constants.LocationLimit.HEADING` if specified.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
location (:class:`telegram.Location`, optional): The location to send.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 14:37:25 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2019-08-23 21:13:29 +02:00
|
|
|
|
if not ((latitude is not None and longitude is not None) or location):
|
2017-07-25 00:35:22 +02:00
|
|
|
|
raise ValueError(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"Either location or latitude and longitude must be passed as argument."
|
2017-10-14 20:03:02 +02:00
|
|
|
|
)
|
|
|
|
|
|
2020-10-31 16:33:34 +01:00
|
|
|
|
if not (latitude is not None or longitude is not None) ^ bool(location):
|
2017-10-14 20:03:02 +02:00
|
|
|
|
raise ValueError(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"Either location or latitude and longitude must be passed as argument. Not both."
|
2017-10-14 20:03:02 +02:00
|
|
|
|
)
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
|
|
|
|
if isinstance(location, Location):
|
|
|
|
|
latitude = location.latitude
|
|
|
|
|
longitude = location.longitude
|
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "latitude": latitude, "longitude": longitude}
|
2015-07-08 14:37:25 +02:00
|
|
|
|
|
2017-10-14 20:03:02 +02:00
|
|
|
|
if live_period:
|
|
|
|
|
data["live_period"] = live_period
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if horizontal_accuracy:
|
|
|
|
|
data["horizontal_accuracy"] = horizontal_accuracy
|
|
|
|
|
if heading:
|
|
|
|
|
data["heading"] = heading
|
|
|
|
|
if proximity_alert_radius:
|
|
|
|
|
data["proximity_alert_radius"] = proximity_alert_radius
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendLocation",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_message_live_location(
|
2017-10-14 20:03:02 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
latitude: float = None,
|
|
|
|
|
longitude: float = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
horizontal_accuracy: float = None,
|
|
|
|
|
heading: int = None,
|
|
|
|
|
proximity_alert_radius: int = None,
|
|
|
|
|
*,
|
|
|
|
|
location: Location = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Union[Message, bool]:
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""Use this method to edit live location messages sent by the bot or via the bot
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(for inline bots). A location can be edited until its :attr:`telegram.Location.live_period`
|
|
|
|
|
expires or editing is explicitly disabled by a call to :meth:`stop_message_live_location`.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Note:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
You can either supply a :paramref:`latitude` and :paramref:`longitude` or a
|
|
|
|
|
:paramref:`location`.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.edit_live_location`,
|
|
|
|
|
:attr:`telegram.CallbackQuery.edit_message_live_location`
|
|
|
|
|
|
2017-10-14 20:03:02 +02:00
|
|
|
|
Args:
|
2020-02-02 20:20:54 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``).
|
2017-10-14 20:03:02 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the message to edit.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
|
|
|
|
specified. Identifier of the inline message.
|
|
|
|
|
latitude (:obj:`float`, optional): Latitude of location.
|
|
|
|
|
longitude (:obj:`float`, optional): Longitude of location.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
horizontal_accuracy (:obj:`float`, optional): The radius of uncertainty for the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
location, measured in meters;
|
|
|
|
|
0-:tg-const:`telegram.constants.LocationLimit.HORIZONTAL_ACCURACY`.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
heading (:obj:`int`, optional): Direction in which the user is moving, in degrees. Must
|
2021-10-19 18:28:19 +02:00
|
|
|
|
be between 1 and :tg-const:`telegram.constants.LocationLimit.HEADING` if specified.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
proximity_alert_radius (:obj:`int`, optional): Maximum distance for proximity alerts
|
2021-10-19 18:28:19 +02:00
|
|
|
|
about approaching another chat member, in meters. Must be between 1 and
|
|
|
|
|
:tg-const:`telegram.constants.LocationLimit.HEADING` if specified.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for a new
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
location (:class:`telegram.Location`, optional): The location to send.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited message is returned, otherwise :obj:`True` is returned.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""
|
2022-05-12 19:20:24 +02:00
|
|
|
|
# The location parameter is a convenience functionality added by us, so enforcing the
|
|
|
|
|
# mutual exclusivity here is nothing that Telegram would handle anyway
|
2017-10-14 20:03:02 +02:00
|
|
|
|
if not (all([latitude, longitude]) or location):
|
|
|
|
|
raise ValueError(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"Either location or latitude and longitude must be passed as argument."
|
2017-10-14 20:03:02 +02:00
|
|
|
|
)
|
2020-10-31 16:33:34 +01:00
|
|
|
|
if not (latitude is not None or longitude is not None) ^ bool(location):
|
2017-10-14 20:03:02 +02:00
|
|
|
|
raise ValueError(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"Either location or latitude and longitude must be passed as argument. Not both."
|
2017-10-14 20:03:02 +02:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if isinstance(location, Location):
|
|
|
|
|
latitude = location.latitude
|
|
|
|
|
longitude = location.longitude
|
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"latitude": latitude, "longitude": longitude}
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if horizontal_accuracy:
|
|
|
|
|
data["horizontal_accuracy"] = horizontal_accuracy
|
|
|
|
|
if heading:
|
|
|
|
|
data["heading"] = heading
|
|
|
|
|
if proximity_alert_radius:
|
|
|
|
|
data["proximity_alert_radius"] = proximity_alert_radius
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-06-30 22:07:38 +02:00
|
|
|
|
"editMessageLiveLocation",
|
|
|
|
|
data,
|
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def stop_message_live_location(
|
2017-10-14 20:03:02 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Union[Message, bool]:
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""Use this method to stop updating a live location message sent by the bot or via the bot
|
|
|
|
|
(for inline bots) before live_period expires.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.stop_live_location`
|
|
|
|
|
:attr:`telegram.CallbackQuery.stop_message_live_location`
|
|
|
|
|
|
2017-10-14 20:03:02 +02:00
|
|
|
|
Args:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Required if inline_message_id is not specified.
|
|
|
|
|
Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``).
|
2017-10-14 20:03:02 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the sent message with live location to stop.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
|
|
|
|
specified. Identifier of the inline message.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for a new
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-10-01 16:51:03 +02:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited message is returned, otherwise :obj:`True` is returned.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {}
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-06-30 22:07:38 +02:00
|
|
|
|
"stopMessageLiveLocation",
|
|
|
|
|
data,
|
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 14:37:25 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_venue(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
latitude: float = None,
|
|
|
|
|
longitude: float = None,
|
|
|
|
|
title: str = None,
|
|
|
|
|
address: str = None,
|
|
|
|
|
foursquare_id: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
|
|
|
|
foursquare_type: str = None,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
google_place_id: str = None,
|
|
|
|
|
google_place_type: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
venue: Venue = None,
|
|
|
|
|
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,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send information about a venue.
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2017-07-25 00:35:22 +02:00
|
|
|
|
Note:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
* You can either supply :paramref:`venue`, or :paramref:`latitude`,
|
2022-06-09 17:08:54 +02:00
|
|
|
|
:paramref:`longitude`, :paramref:`title` and :paramref:`address` and optionally
|
|
|
|
|
:paramref:`foursquare_id` and :paramref:`foursquare_type` or optionally
|
|
|
|
|
:paramref:`google_place_id` and :paramref:`google_place_type`.
|
2021-08-29 18:17:06 +02:00
|
|
|
|
* Foursquare details and Google Place details are mutually exclusive. However, this
|
2020-11-29 16:20:46 +01:00
|
|
|
|
behaviour is undocumented and might be changed by Telegram.
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_venue`, :attr:`telegram.Chat.send_venue`,
|
|
|
|
|
:attr:`telegram.User.send_venue`
|
|
|
|
|
|
2016-04-16 16:48:36 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-25 00:35:22 +02:00
|
|
|
|
latitude (:obj:`float`, optional): Latitude of venue.
|
|
|
|
|
longitude (:obj:`float`, optional): Longitude of venue.
|
|
|
|
|
title (:obj:`str`, optional): Name of the venue.
|
|
|
|
|
address (:obj:`str`, optional): Address of the venue.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
foursquare_id (:obj:`str`, optional): Foursquare identifier of the venue.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
foursquare_type (:obj:`str`, optional): Foursquare type of the venue, if known.
|
|
|
|
|
(For example, "arts_entertainment/default", "arts_entertainment/aquarium" or
|
|
|
|
|
"food/icecream".)
|
2020-11-29 16:20:46 +01:00
|
|
|
|
google_place_id (:obj:`str`, optional): Google Places identifier of the venue.
|
|
|
|
|
google_place_type (:obj:`str`, optional): Google Places type of the venue. (See
|
|
|
|
|
`supported types \
|
2022-06-09 17:08:54 +02:00
|
|
|
|
<https://developers.google.com/maps/documentation/places/web-service/supported_types>`_.)
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
venue (:class:`telegram.Venue`, optional): The venue to send.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-05-12 19:20:24 +02:00
|
|
|
|
# The venue parameter is a convenience functionality added by us, so enforcing the
|
|
|
|
|
# mutual exclusivity here is nothing that Telegram would handle anyway
|
2017-07-25 00:35:22 +02:00
|
|
|
|
if not (venue or all([latitude, longitude, address, title])):
|
|
|
|
|
raise ValueError(
|
2022-01-07 17:02:23 +01:00
|
|
|
|
"Either venue or latitude, longitude, address and title must be "
|
2017-07-25 00:35:22 +02:00
|
|
|
|
"passed as arguments."
|
|
|
|
|
)
|
2022-05-15 14:08:40 +02:00
|
|
|
|
if not bool(venue) ^ any([latitude, longitude, address, title]):
|
2022-05-12 19:20:24 +02:00
|
|
|
|
raise ValueError(
|
|
|
|
|
"Either venue or latitude, longitude, address and title must be "
|
|
|
|
|
"passed as arguments. Not both."
|
|
|
|
|
)
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
|
|
|
|
if isinstance(venue, Venue):
|
|
|
|
|
latitude = venue.location.latitude
|
|
|
|
|
longitude = venue.location.longitude
|
|
|
|
|
address = venue.address
|
|
|
|
|
title = venue.title
|
|
|
|
|
foursquare_id = venue.foursquare_id
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
foursquare_type = venue.foursquare_type
|
2020-11-29 16:20:46 +01:00
|
|
|
|
google_place_id = venue.google_place_id
|
|
|
|
|
google_place_type = venue.google_place_type
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {
|
2016-10-12 22:56:57 +02:00
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"latitude": latitude,
|
|
|
|
|
"longitude": longitude,
|
|
|
|
|
"address": address,
|
|
|
|
|
"title": title,
|
|
|
|
|
}
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
|
|
|
|
if foursquare_id:
|
|
|
|
|
data["foursquare_id"] = foursquare_id
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if foursquare_type:
|
|
|
|
|
data["foursquare_type"] = foursquare_type
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if google_place_id:
|
|
|
|
|
data["google_place_id"] = google_place_id
|
|
|
|
|
if google_place_type:
|
|
|
|
|
data["google_place_type"] = google_place_type
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendVenue",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_contact(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
phone_number: str = None,
|
|
|
|
|
first_name: str = None,
|
|
|
|
|
last_name: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
vcard: str = None,
|
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
|
|
|
|
contact: Contact = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send phone contacts.
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2017-07-25 00:35:22 +02:00
|
|
|
|
Note:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
You can either supply :paramref:`contact` or :paramref:`phone_number` and
|
|
|
|
|
:paramref:`first_name` with optionally :paramref:`last_name` and optionally
|
|
|
|
|
:paramref:`vcard`.
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_contact`, :attr:`telegram.Chat.send_contact`,
|
|
|
|
|
:attr:`telegram.User.send_contact`
|
|
|
|
|
|
2016-04-16 16:48:36 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-25 00:35:22 +02:00
|
|
|
|
phone_number (:obj:`str`, optional): Contact's phone number.
|
|
|
|
|
first_name (:obj:`str`, optional): Contact's first name.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
last_name (:obj:`str`, optional): Contact's last name.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
vcard (:obj:`str`, optional): Additional data about the contact in the form of a vCard,
|
|
|
|
|
0-2048 bytes.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
contact (:class:`telegram.Contact`, optional): The contact to send.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-05-12 19:20:24 +02:00
|
|
|
|
# The contact parameter is a convenience functionality added by us, so enforcing the
|
|
|
|
|
# mutual exclusivity here is nothing that Telegram would handle anyway
|
2017-07-25 00:35:22 +02:00
|
|
|
|
if (not contact) and (not all([phone_number, first_name])):
|
|
|
|
|
raise ValueError(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"Either contact or phone_number and first_name must be passed as arguments."
|
2017-07-25 00:35:22 +02:00
|
|
|
|
)
|
2022-05-15 14:08:40 +02:00
|
|
|
|
if not bool(contact) ^ any([phone_number, first_name]):
|
2022-05-12 19:20:24 +02:00
|
|
|
|
raise ValueError(
|
|
|
|
|
"Either contact or phone_number and first_name must be passed as arguments. "
|
|
|
|
|
"Not both."
|
|
|
|
|
)
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
|
|
|
|
if isinstance(contact, Contact):
|
|
|
|
|
phone_number = contact.phone_number
|
|
|
|
|
first_name = contact.first_name
|
|
|
|
|
last_name = contact.last_name
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
vcard = contact.vcard
|
2017-07-25 00:35:22 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"phone_number": phone_number,
|
|
|
|
|
"first_name": first_name,
|
|
|
|
|
}
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
|
|
|
|
if last_name:
|
|
|
|
|
data["last_name"] = last_name
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
if vcard:
|
|
|
|
|
data["vcard"] = vcard
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendContact",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-16 16:48:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_game(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
game_short_name: str,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send a game.
|
2016-10-03 20:22:57 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_game`, :attr:`telegram.Chat.send_game`,
|
|
|
|
|
:attr:`telegram.User.send_game`
|
|
|
|
|
|
2016-10-03 20:22:57 +02:00
|
|
|
|
Args:
|
2021-04-30 10:47:41 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
game_short_name (:obj:`str`): Short name of the game, serves as the unique identifier
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
for the game. Set up your games via `@BotFather <https://t.me/BotFather>`_.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for a new
|
|
|
|
|
inline keyboard. If empty, one ‘Play game_title’ button will be
|
2020-04-10 20:05:01 +02:00
|
|
|
|
shown. If not empty, the first button must launch the game.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-10-03 20:22:57 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2016-10-03 20:22:57 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "game_short_name": game_short_name}
|
2016-10-03 20:22:57 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendGame",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-10-03 20:22:57 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_chat_action(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2020-10-09 08:22:44 +02:00
|
|
|
|
action: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method when you need to tell the user that something is happening on the bot's
|
2016-10-17 00:11:20 +02:00
|
|
|
|
side. The status is set for 5 seconds or less (when a message arrives from your bot,
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Telegram clients clear its typing status). Telegram only recommends using this method when
|
|
|
|
|
a response from the bot will take a noticeable amount of time to arrive.
|
2015-07-08 14:55:06 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_chat_action`, :attr:`telegram.Chat.send_action`,
|
|
|
|
|
:attr:`telegram.User.send_chat_action`
|
|
|
|
|
|
2015-07-08 14:55:06 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-10-19 18:28:19 +02:00
|
|
|
|
action(:obj:`str`): Type of action to broadcast. Choose one, depending on what the user
|
|
|
|
|
is about to receive. For convenience look at the constants in
|
|
|
|
|
:class:`telegram.constants.ChatAction`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 14:55:06 +02:00
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "action": action}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"sendChatAction",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2015-07-08 14:55:06 +02:00
|
|
|
|
|
2022-09-17 15:08:54 +02:00
|
|
|
|
def _effective_inline_results( # skipcq: PYL-R0201
|
2021-06-06 11:48:48 +02:00
|
|
|
|
self,
|
|
|
|
|
results: Union[
|
|
|
|
|
Sequence["InlineQueryResult"], Callable[[int], Optional[Sequence["InlineQueryResult"]]]
|
|
|
|
|
],
|
|
|
|
|
next_offset: str = None,
|
|
|
|
|
current_offset: str = None,
|
|
|
|
|
) -> Tuple[Sequence["InlineQueryResult"], Optional[str]]:
|
|
|
|
|
"""
|
|
|
|
|
Builds the effective results from the results input.
|
|
|
|
|
We make this a stand-alone method so tg.ext.ExtBot can wrap it.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
Tuple of 1. the effective results and 2. correct the next_offset
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
if current_offset is not None and next_offset is not None:
|
|
|
|
|
raise ValueError("`current_offset` and `next_offset` are mutually exclusive!")
|
|
|
|
|
|
|
|
|
|
if current_offset is not None:
|
|
|
|
|
# Convert the string input to integer
|
|
|
|
|
if current_offset == "":
|
|
|
|
|
current_offset_int = 0
|
|
|
|
|
else:
|
|
|
|
|
current_offset_int = int(current_offset)
|
|
|
|
|
|
|
|
|
|
# for now set to empty string, stating that there are no more results
|
|
|
|
|
# might change later
|
|
|
|
|
next_offset = ""
|
|
|
|
|
|
|
|
|
|
if callable(results):
|
|
|
|
|
callable_output = results(current_offset_int)
|
|
|
|
|
if not callable_output:
|
|
|
|
|
effective_results: Sequence["InlineQueryResult"] = []
|
|
|
|
|
else:
|
|
|
|
|
effective_results = callable_output
|
|
|
|
|
# the callback *might* return more results on the next call, so we increment
|
|
|
|
|
# the page count
|
|
|
|
|
next_offset = str(current_offset_int + 1)
|
|
|
|
|
else:
|
2021-10-19 18:28:19 +02:00
|
|
|
|
if len(results) > (current_offset_int + 1) * InlineQueryLimit.RESULTS:
|
2021-06-06 11:48:48 +02:00
|
|
|
|
# we expect more results for the next page
|
|
|
|
|
next_offset_int = current_offset_int + 1
|
|
|
|
|
next_offset = str(next_offset_int)
|
|
|
|
|
effective_results = results[
|
|
|
|
|
current_offset_int
|
2021-10-19 18:28:19 +02:00
|
|
|
|
* InlineQueryLimit.RESULTS : next_offset_int
|
|
|
|
|
* InlineQueryLimit.RESULTS
|
2021-06-06 11:48:48 +02:00
|
|
|
|
]
|
|
|
|
|
else:
|
2021-10-19 18:28:19 +02:00
|
|
|
|
effective_results = results[current_offset_int * InlineQueryLimit.RESULTS :]
|
2021-06-06 11:48:48 +02:00
|
|
|
|
else:
|
|
|
|
|
effective_results = results # type: ignore[assignment]
|
|
|
|
|
|
|
|
|
|
return effective_results, next_offset
|
|
|
|
|
|
2021-10-03 15:10:13 +02:00
|
|
|
|
@no_type_check # mypy doesn't play too well with hasattr
|
2022-10-31 09:46:56 +01:00
|
|
|
|
def _insert_defaults_for_ilq_results(self, res: "InlineQueryResult") -> "InlineQueryResult":
|
2021-10-03 15:10:13 +02:00
|
|
|
|
"""The reason why this method exists is similar to the description of _insert_defaults
|
|
|
|
|
The reason why we do this in rather than in _insert_defaults is because converting
|
|
|
|
|
DEFAULT_NONE to NONE *before* calling to_dict() makes it way easier to drop None entries
|
|
|
|
|
from the json data.
|
2022-10-31 09:46:56 +01:00
|
|
|
|
|
|
|
|
|
Must return the correct object instead of editing in-place!
|
2021-10-03 15:10:13 +02:00
|
|
|
|
"""
|
2022-10-31 09:46:56 +01:00
|
|
|
|
# Copy the objects that need modification to avoid modifying the original object
|
|
|
|
|
copied = False
|
2021-10-03 15:10:13 +02:00
|
|
|
|
if hasattr(res, "parse_mode"):
|
2022-10-31 09:46:56 +01:00
|
|
|
|
res = copy(res)
|
|
|
|
|
copied = True
|
2021-10-03 15:10:13 +02:00
|
|
|
|
res.parse_mode = DefaultValue.get_value(res.parse_mode)
|
|
|
|
|
if hasattr(res, "input_message_content") and res.input_message_content:
|
|
|
|
|
if hasattr(res.input_message_content, "parse_mode"):
|
2022-10-31 09:46:56 +01:00
|
|
|
|
if not copied:
|
|
|
|
|
res = copy(res)
|
|
|
|
|
copied = True
|
|
|
|
|
res.input_message_content = copy(res.input_message_content)
|
2021-10-03 15:10:13 +02:00
|
|
|
|
res.input_message_content.parse_mode = DefaultValue.get_value(
|
|
|
|
|
res.input_message_content.parse_mode
|
|
|
|
|
)
|
|
|
|
|
if hasattr(res.input_message_content, "disable_web_page_preview"):
|
2022-10-31 09:46:56 +01:00
|
|
|
|
if not copied:
|
|
|
|
|
res = copy(res)
|
|
|
|
|
res.input_message_content = copy(res.input_message_content)
|
2021-10-03 15:10:13 +02:00
|
|
|
|
res.input_message_content.disable_web_page_preview = DefaultValue.get_value(
|
|
|
|
|
res.input_message_content.disable_web_page_preview
|
|
|
|
|
)
|
|
|
|
|
|
2022-10-31 09:46:56 +01:00
|
|
|
|
return res
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def answer_inline_query(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
inline_query_id: str,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
results: Union[
|
2021-03-13 16:21:03 +01:00
|
|
|
|
Sequence["InlineQueryResult"], Callable[[int], Optional[Sequence["InlineQueryResult"]]]
|
2020-12-30 13:41:07 +01:00
|
|
|
|
],
|
2022-05-09 19:30:46 +02:00
|
|
|
|
cache_time: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
is_personal: bool = None,
|
|
|
|
|
next_offset: str = None,
|
|
|
|
|
switch_pm_text: str = None,
|
|
|
|
|
switch_pm_parameter: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
current_offset: str = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Use this method to send answers to an inline query. No more than
|
|
|
|
|
:tg-const:`telegram.InlineQuery.MAX_RESULTS` results per query are allowed.
|
2016-01-04 17:31:06 +01:00
|
|
|
|
|
2020-09-27 14:11:49 +02:00
|
|
|
|
Warning:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
In most use cases :paramref:`current_offset` should not be passed manually. Instead of
|
2020-09-27 14:11:49 +02:00
|
|
|
|
calling this method directly, use the shortcut :meth:`telegram.InlineQuery.answer` with
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`telegram.InlineQuery.answer.auto_pagination` set to :obj:`True`, which will
|
|
|
|
|
take care of passing the correct value.
|
2020-09-27 14:11:49 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.InlineQuery.answer`
|
|
|
|
|
|
2016-01-04 17:31:06 +01:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
inline_query_id (:obj:`str`): Unique identifier for the answered query.
|
2020-09-27 14:11:49 +02:00
|
|
|
|
results (List[:class:`telegram.InlineQueryResult`] | Callable): A list of results for
|
2022-02-09 17:30:16 +01:00
|
|
|
|
the inline query. In case :paramref:`current_offset` is passed,
|
|
|
|
|
:paramref:`results` may also be
|
2020-12-30 13:41:07 +01:00
|
|
|
|
a callable that accepts the current page index starting from 0. It must return
|
2021-02-01 17:59:39 +01:00
|
|
|
|
either a list of :class:`telegram.InlineQueryResult` instances or :obj:`None` if
|
|
|
|
|
there are no more results.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
cache_time (:obj:`int`, optional): The maximum amount of time in seconds that the
|
2021-04-30 10:47:41 +02:00
|
|
|
|
result of the inline query may be cached on the server. Defaults to ``300``.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
is_personal (:obj:`bool`, optional): Pass :obj:`True`, if results may be cached on
|
|
|
|
|
the server side only for the user that sent the query. By default,
|
|
|
|
|
results may be returned to any user who sends the same query.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
next_offset (:obj:`str`, optional): Pass the offset that a client should send in the
|
|
|
|
|
next query with the same text to receive more results. Pass an empty string if
|
|
|
|
|
there are no more results or if you don't support pagination. Offset length can't
|
|
|
|
|
exceed 64 bytes.
|
|
|
|
|
switch_pm_text (:obj:`str`, optional): If passed, clients will display a button with
|
|
|
|
|
specified text that switches the user to a private chat with the bot and sends the
|
2022-02-09 17:30:16 +01:00
|
|
|
|
bot a start message with the parameter :paramref:`switch_pm_parameter`.
|
|
|
|
|
switch_pm_parameter (:obj:`str`, optional): Deep-linking parameter for the
|
|
|
|
|
:guilabel:`/start` message sent to the bot when user presses the switch button.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
1-:tg-const:`telegram.InlineQuery.MAX_SWITCH_PM_TEXT_LENGTH` characters,
|
2022-02-09 17:30:16 +01:00
|
|
|
|
only ``A-Z``, ``a-z``, ``0-9``, ``_`` and ``-`` are allowed.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2020-09-27 14:11:49 +02:00
|
|
|
|
current_offset (:obj:`str`, optional): The :attr:`telegram.InlineQuery.offset` of
|
|
|
|
|
the inline query to answer. If passed, PTB will automatically take care of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
the pagination for you, i.e. pass the correct :paramref:`next_offset` and truncate
|
|
|
|
|
the results list/get the results from the callable you passed.
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
An inline bot that sends YouTube videos can ask the user to connect the bot to their
|
|
|
|
|
YouTube account to adapt search results accordingly. To do this, it displays a
|
|
|
|
|
'Connect your YouTube account' button above the results, or even before showing any.
|
|
|
|
|
The user presses the button, switches to a private chat with the bot and, in doing so,
|
|
|
|
|
passes a start parameter that instructs the bot to return an oauth link. Once done, the
|
|
|
|
|
bot can offer a switch_inline button so that the user can easily return to the chat
|
|
|
|
|
where they wanted to use the bot's inline capabilities.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2016-04-19 14:04:25 +02:00
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2016-04-14 07:34:29 +02:00
|
|
|
|
|
2016-04-19 14:04:25 +02:00
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-06-06 11:48:48 +02:00
|
|
|
|
effective_results, next_offset = self._effective_inline_results(
|
|
|
|
|
results=results, next_offset=next_offset, current_offset=current_offset
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
|
2021-06-06 11:48:48 +02:00
|
|
|
|
# Apply defaults
|
2022-10-31 09:46:56 +01:00
|
|
|
|
effective_results = [
|
|
|
|
|
self._insert_defaults_for_ilq_results(result) for result in effective_results
|
|
|
|
|
]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data: JSONDict = {"inline_query_id": inline_query_id, "results": effective_results}
|
2020-10-06 19:28:40 +02:00
|
|
|
|
|
2016-04-19 00:08:47 +02:00
|
|
|
|
if cache_time or cache_time == 0:
|
2016-04-21 13:15:38 +02:00
|
|
|
|
data["cache_time"] = cache_time
|
2016-04-14 07:38:51 +02:00
|
|
|
|
if is_personal:
|
2016-04-21 13:15:38 +02:00
|
|
|
|
data["is_personal"] = is_personal
|
2016-04-25 16:26:36 +02:00
|
|
|
|
if next_offset is not None:
|
2016-01-04 17:31:06 +01:00
|
|
|
|
data["next_offset"] = next_offset
|
2016-04-14 07:34:29 +02:00
|
|
|
|
if switch_pm_text:
|
|
|
|
|
data["switch_pm_text"] = switch_pm_text
|
|
|
|
|
if switch_pm_parameter:
|
|
|
|
|
data["switch_pm_parameter"] = switch_pm_parameter
|
2016-01-04 17:31:06 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"answerInlineQuery",
|
|
|
|
|
data,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-01-04 17:31:06 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_user_profile_photos(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
offset: int = None,
|
2022-05-09 19:30:46 +02:00
|
|
|
|
limit: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2022-08-03 08:16:48 +02:00
|
|
|
|
) -> UserProfilePhotos:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to get a list of profile pictures for a user.
|
2015-07-08 15:14:07 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :meth:`telegram.User.get_profile_photos`
|
|
|
|
|
|
2015-07-08 15:14:07 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
|
|
|
|
offset (:obj:`int`, optional): Sequential number of the first photo to be returned.
|
|
|
|
|
By default, all photos are returned.
|
|
|
|
|
limit (:obj:`int`, optional): Limits the number of photos to be retrieved. Values
|
2021-04-30 10:47:41 +02:00
|
|
|
|
between 1-100 are accepted. Defaults to ``100``.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2015-07-08 15:14:07 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.UserProfilePhotos`
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id}
|
2015-07-08 15:10:08 +02:00
|
|
|
|
|
2017-08-07 23:13:32 +02:00
|
|
|
|
if offset is not None:
|
2015-07-08 15:10:08 +02:00
|
|
|
|
data["offset"] = offset
|
|
|
|
|
if limit:
|
|
|
|
|
data["limit"] = limit
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getUserProfilePhotos",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-08 15:10:08 +02:00
|
|
|
|
|
2022-08-26 06:50:03 +02:00
|
|
|
|
return UserProfilePhotos.de_json(result, self) # type: ignore[arg-type,return-value]
|
2015-07-08 15:10:08 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_file(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
file_id: Union[
|
|
|
|
|
str, Animation, Audio, ChatPhoto, Document, PhotoSize, Sticker, Video, VideoNote, Voice
|
|
|
|
|
],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> File:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to get basic info about a file and prepare it for downloading. For the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
moment, bots can download files of up to
|
|
|
|
|
:tg-const:`telegram.constants.FileSizeLimit.FILESIZE_DOWNLOAD` in size. The file can then
|
|
|
|
|
be downloaded
|
2021-03-14 16:46:37 +01:00
|
|
|
|
with :meth:`telegram.File.download`. It is guaranteed that the link will be
|
2017-07-23 22:33:08 +02:00
|
|
|
|
valid for at least 1 hour. When the link expires, a new one can be requested by
|
2018-02-18 16:49:52 +01:00
|
|
|
|
calling get_file again.
|
2015-09-20 17:28:10 +02:00
|
|
|
|
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Note:
|
|
|
|
|
This function may not preserve the original file name and MIME type.
|
|
|
|
|
You should save the file's MIME type and name (if available) when the File object
|
|
|
|
|
is received.
|
|
|
|
|
|
2015-09-20 17:28:10 +02:00
|
|
|
|
Args:
|
2019-09-13 21:07:56 +02:00
|
|
|
|
file_id (:obj:`str` | :class:`telegram.Animation` | :class:`telegram.Audio` | \
|
|
|
|
|
:class:`telegram.ChatPhoto` | :class:`telegram.Document` | \
|
2018-02-18 16:49:52 +01:00
|
|
|
|
:class:`telegram.PhotoSize` | :class:`telegram.Sticker` | \
|
|
|
|
|
:class:`telegram.Video` | :class:`telegram.VideoNote` | \
|
|
|
|
|
:class:`telegram.Voice`):
|
|
|
|
|
Either the file identifier or an object that has a file_id attribute
|
|
|
|
|
to get file information about.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2015-09-20 17:28:10 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.File`
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2018-02-18 16:49:52 +01:00
|
|
|
|
try:
|
2020-10-06 19:28:40 +02:00
|
|
|
|
file_id = file_id.file_id # type: ignore[union-attr]
|
2018-02-18 16:49:52 +01:00
|
|
|
|
except AttributeError:
|
|
|
|
|
pass
|
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"file_id": file_id}
|
2015-09-20 17:28:10 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getFile",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-09-20 17:28:10 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if result.get("file_path") and not is_local_file( # type: ignore[union-attr]
|
|
|
|
|
result["file_path"] # type: ignore[index]
|
|
|
|
|
):
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result[ # type: ignore[index]
|
|
|
|
|
"file_path"
|
2022-09-18 15:42:12 +02:00
|
|
|
|
] = f"{self._base_file_url}/{result['file_path']}" # type: ignore[index]
|
2015-09-20 17:28:10 +02:00
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return File.de_json(result, self) # type: ignore[return-value, arg-type]
|
2015-09-20 17:28:10 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def ban_chat_member(
|
2021-07-01 17:45:19 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
until_date: Union[int, datetime] = None,
|
|
|
|
|
revoke_messages: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-07-01 17:45:19 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to ban a user from a group, supergroup or a channel. In the case of
|
2020-04-10 20:05:01 +02:00
|
|
|
|
supergroups and channels, the user will not be able to return to the group on their own
|
|
|
|
|
using invite links, etc., unless unbanned first. The bot must be an administrator in the
|
2021-03-14 16:41:35 +01:00
|
|
|
|
chat for this to work and must have the appropriate admin rights.
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.ban_member`
|
|
|
|
|
|
2021-07-01 17:45:19 +02:00
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
2016-10-17 00:11:20 +02:00
|
|
|
|
Args:
|
2021-03-14 16:41:35 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target group or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
|
|
|
|
until_date (:obj:`int` | :obj:`datetime.datetime`, optional): Date when the user will
|
|
|
|
|
be unbanned, unix time. If user is banned for more than 366 days or less than 30
|
2021-03-14 16:41:35 +01:00
|
|
|
|
seconds from the current time they are considered to be banned forever. Applied
|
|
|
|
|
for supergroups and channels only.
|
2020-09-27 12:59:48 +02:00
|
|
|
|
For timezone naive :obj:`datetime.datetime` objects, the default timezone of the
|
2022-06-27 18:58:51 +02:00
|
|
|
|
bot will be used, which is UTC unless :attr:`telegram.ext.Defaults.tzinfo` is
|
|
|
|
|
used.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
revoke_messages (:obj:`bool`, optional): Pass :obj:`True` to delete all messages from
|
|
|
|
|
the chat for the user that is being removed. If :obj:`False`, the user will be able
|
|
|
|
|
to see messages in the group that were sent before the user was removed.
|
|
|
|
|
Always :obj:`True` for supergroups and channels.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.4
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2016-04-12 05:46:50 +02:00
|
|
|
|
Returns:
|
2021-04-30 10:47:41 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
if until_date is not None:
|
|
|
|
|
data["until_date"] = until_date
|
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
if revoke_messages is not None:
|
|
|
|
|
data["revoke_messages"] = revoke_messages
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"banChatMember",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def ban_chat_sender_chat(
|
2021-12-11 15:21:56 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
sender_chat_id: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-12-11 15:21:56 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to ban a channel chat in a supergroup or a channel. Until the chat is
|
|
|
|
|
unbanned, the owner of the banned chat won't be able to send messages on behalf of **any of
|
|
|
|
|
their channels**. The bot must be an administrator in the supergroup or channel for this
|
|
|
|
|
to work and must have the appropriate administrator rights.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.ban_chat`, :attr:`telegram.Chat.ban_sender_chat`
|
|
|
|
|
|
2021-12-11 15:21:56 +01:00
|
|
|
|
.. versionadded:: 13.9
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target group or username
|
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
|
|
|
|
sender_chat_id (:obj:`int`): Unique identifier of the target sender chat.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-12-11 15:21:56 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "sender_chat_id": sender_chat_id}
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"banChatSenderChat",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-12-11 15:21:56 +01:00
|
|
|
|
|
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def unban_chat_member(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
only_if_banned: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""Use this method to unban a previously kicked user in a supergroup or channel.
|
2017-09-01 08:43:08 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
The user will *not* return to the group or channel automatically, but will be able to join
|
|
|
|
|
via link, etc. The bot must be an administrator for this to work. By default, this method
|
|
|
|
|
guarantees that after the call the user is not a member of the chat, but will be able to
|
|
|
|
|
join it. So if the user is a member of the chat they will also be *removed* from the chat.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
If you don't want this, use the parameter :paramref:`only_if_banned`.
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.unban_member`
|
|
|
|
|
|
2016-04-12 05:46:50 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
only_if_banned (:obj:`bool`, optional): Do nothing if the user is not banned.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2016-04-12 05:46:50 +02:00
|
|
|
|
Returns:
|
2021-12-11 15:21:56 +01:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if only_if_banned is not None:
|
|
|
|
|
data["only_if_banned"] = only_if_banned
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"unbanChatMember",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-04-12 05:46:50 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def unban_chat_sender_chat(
|
2021-12-11 15:21:56 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
sender_chat_id: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-12-11 15:21:56 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""Use this method to unban a previously banned channel in a supergroup or channel.
|
|
|
|
|
The bot must be an administrator for this to work and must have the
|
|
|
|
|
appropriate administrator rights.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.unban_chat`
|
|
|
|
|
|
2021-12-11 15:21:56 +01:00
|
|
|
|
.. versionadded:: 13.9
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
|
|
|
|
sender_chat_id (:obj:`int`): Unique identifier of the target sender chat.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-12-11 15:21:56 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "sender_chat_id": sender_chat_id}
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"unbanChatSenderChat",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-12-11 15:21:56 +01:00
|
|
|
|
|
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def answer_callback_query(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
callback_query_id: str,
|
|
|
|
|
text: str = None,
|
2022-05-09 19:30:46 +02:00
|
|
|
|
show_alert: bool = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
url: str = None,
|
|
|
|
|
cache_time: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to send answers to callback queries sent from inline keyboards. The answer
|
|
|
|
|
will be displayed to the user as a notification at the top of the chat screen or as an
|
|
|
|
|
alert.
|
|
|
|
|
Alternatively, the user can be redirected to the specified Game URL. For this option to
|
2021-04-30 10:47:41 +02:00
|
|
|
|
work, you must first create a game for your bot via `@BotFather <https://t.me/BotFather>`_
|
|
|
|
|
and accept the terms. Otherwise, you may use links like t.me/your_bot?start=XXXX that open
|
|
|
|
|
your bot with a parameter.
|
2016-04-14 02:25:26 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.CallbackQuery.answer`
|
|
|
|
|
|
2016-04-14 02:25:26 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
callback_query_id (:obj:`str`): Unique identifier for the query to be answered.
|
|
|
|
|
text (:obj:`str`, optional): Text of the notification. If not specified, nothing will
|
2021-10-19 18:28:19 +02:00
|
|
|
|
be shown to the user, 0-:tg-const:`telegram.CallbackQuery.MAX_ANSWER_TEXT_LENGTH`
|
|
|
|
|
characters.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
show_alert (:obj:`bool`, optional): If :obj:`True`, an alert will be shown by the
|
|
|
|
|
client instead of a notification at the top of the chat screen. Defaults to
|
|
|
|
|
:obj:`False`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
url (:obj:`str`, optional): URL that will be opened by the user's client. If you have
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
created a Game and accepted the conditions via
|
|
|
|
|
`@BotFather <https://t.me/BotFather>`_, specify the URL that
|
2017-07-23 22:33:08 +02:00
|
|
|
|
opens your game - note that this will only work if the query comes from a callback
|
|
|
|
|
game button. Otherwise, you may use links like t.me/your_bot?start=XXXX that open
|
|
|
|
|
your bot with a parameter.
|
|
|
|
|
cache_time (:obj:`int`, optional): The maximum amount of time in seconds that the
|
|
|
|
|
result of the callback query may be cached client-side. Defaults to 0.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2016-04-14 02:25:26 +02:00
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool` On success, :obj:`True` is returned.
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"callback_query_id": callback_query_id}
|
2016-04-14 02:25:26 +02:00
|
|
|
|
|
|
|
|
|
if text:
|
|
|
|
|
data["text"] = text
|
|
|
|
|
if show_alert:
|
|
|
|
|
data["show_alert"] = show_alert
|
2016-10-03 15:25:07 +02:00
|
|
|
|
if url:
|
2016-10-03 23:55:29 +02:00
|
|
|
|
data["url"] = url
|
2016-12-11 22:44:52 +01:00
|
|
|
|
if cache_time is not None:
|
|
|
|
|
data["cache_time"] = cache_time
|
2016-04-14 02:25:26 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"answerCallbackQuery",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-14 02:25:26 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-04-14 02:25:26 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_message_text(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
text: str,
|
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
|
|
|
|
disable_web_page_preview: ODVInput[bool] = DEFAULT_NONE,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> Union[Message, bool]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Use this method to edit text and game messages.
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2022-06-27 18:58:51 +02:00
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|editreplymarkup|.
|
2022-06-27 18:58:51 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.edit_text`,
|
|
|
|
|
:attr:`telegram.CallbackQuery.edit_message_text`
|
|
|
|
|
|
2016-04-14 05:28:06 +02:00
|
|
|
|
Args:
|
2020-02-02 20:20:54 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``)
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the message to edit.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
2017-05-17 18:41:08 +02:00
|
|
|
|
specified. Identifier of the inline message.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
text (:obj:`str`): New text of the message,
|
|
|
|
|
1-:tg-const:`telegram.constants.MessageLimit.TEXT_LENGTH` characters after entities
|
|
|
|
|
parsing.
|
2020-02-02 20:20:54 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in your bot's message. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
entities (List[:class:`telegram.MessageEntity`], optional): List of special entities
|
2022-02-09 17:30:16 +01:00
|
|
|
|
that appear in message text, which can be specified instead of
|
|
|
|
|
:paramref:`parse_mode`.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
disable_web_page_preview (:obj:`bool`, optional): Disables link previews for links in
|
|
|
|
|
this message.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for an
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-24 15:06:59 +02:00
|
|
|
|
|
2016-04-14 05:28:06 +02:00
|
|
|
|
Returns:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited message is returned, otherwise :obj:`True` is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"text": text,
|
|
|
|
|
"parse_mode": parse_mode,
|
|
|
|
|
"disable_web_page_preview": disable_web_page_preview,
|
|
|
|
|
}
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if entities:
|
|
|
|
|
data["entities"] = [me.to_dict() for me in entities]
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-06-30 22:07:38 +02:00
|
|
|
|
"editMessageText",
|
|
|
|
|
data,
|
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_message_caption(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
caption: str = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
|
|
|
|
caption_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Union[Message, bool]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Use this method to edit captions of messages.
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2022-06-27 18:58:51 +02:00
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|editreplymarkup|
|
2022-06-27 18:58:51 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.edit_caption`,
|
|
|
|
|
:attr:`telegram.CallbackQuery.edit_message_caption`
|
|
|
|
|
|
2016-04-14 05:28:06 +02:00
|
|
|
|
Args:
|
2020-02-02 20:20:54 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``)
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the message to edit.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
2016-10-17 00:11:20 +02:00
|
|
|
|
specified. Identifier of the inline message.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
caption (:obj:`str`, optional): New caption of the message,
|
|
|
|
|
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
2020-04-10 20:05:01 +02:00
|
|
|
|
entities parsing.
|
2018-02-18 16:11:04 +01:00
|
|
|
|
parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to
|
|
|
|
|
show bold, italic, fixed-width text or inline URLs in the media caption. See the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`parse_mode`.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for an
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited message is returned, otherwise :obj:`True` is returned.
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {"parse_mode": parse_mode}
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2016-04-19 14:04:25 +02:00
|
|
|
|
if caption:
|
|
|
|
|
data["caption"] = caption
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if caption_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["caption_entities"] = caption_entities
|
2016-04-14 05:28:06 +02:00
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"editMessageCaption",
|
|
|
|
|
data,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_message_media(
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
self,
|
2021-08-29 18:17:06 +02:00
|
|
|
|
media: "InputMedia",
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Union[Message, bool]:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Use this method to edit animation, audio, document, photo, or video messages. If a message
|
|
|
|
|
is part of a message album, then it can be edited only to an audio for audio albums, only
|
|
|
|
|
to a document for document albums and to a photo or a video otherwise. When an inline
|
2021-10-01 16:51:03 +02:00
|
|
|
|
message is edited, a new file can't be uploaded; use a previously uploaded file via its
|
2022-06-27 18:58:51 +02:00
|
|
|
|
:attr:`~telegram.File.file_id` or specify a URL.
|
|
|
|
|
|
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|editreplymarkup|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.edit_media`,
|
|
|
|
|
:attr:`telegram.CallbackQuery.edit_message_media`
|
|
|
|
|
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
Args:
|
2021-08-29 18:17:06 +02:00
|
|
|
|
media (:class:`telegram.InputMedia`): An object for a new media content
|
|
|
|
|
of the message.
|
2020-02-02 20:20:54 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``).
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the message to edit.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
|
|
|
|
specified. Identifier of the inline message.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for an
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-10-09 13:56:50 +02:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited Message is returned, otherwise :obj:`True` is returned.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"media": media}
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"editMessageMedia",
|
|
|
|
|
data,
|
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_message_reply_markup(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
reply_markup: Optional["InlineKeyboardMarkup"] = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Union[Message, bool]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to edit only the reply markup of messages sent by the bot or via the bot
|
2016-10-17 00:11:20 +02:00
|
|
|
|
(for inline bots).
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2022-06-27 18:58:51 +02:00
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|editreplymarkup|
|
2022-06-27 18:58:51 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.edit_reply_markup`,
|
|
|
|
|
:attr:`telegram.CallbackQuery.edit_message_reply_markup`
|
|
|
|
|
|
2016-04-14 05:28:06 +02:00
|
|
|
|
Args:
|
2020-02-02 20:20:54 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat or username of the target channel
|
2021-04-30 10:47:41 +02:00
|
|
|
|
(in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Identifier of the message to edit.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
2016-10-17 00:11:20 +02:00
|
|
|
|
specified. Identifier of the inline message.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for an
|
|
|
|
|
inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
:class:`telegram.Message`: On success, if edited message is not an inline message, the
|
|
|
|
|
edited message is returned, otherwise :obj:`True` is returned.
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {}
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
|
|
|
|
data["message_id"] = message_id
|
|
|
|
|
if inline_message_id:
|
|
|
|
|
data["inline_message_id"] = inline_message_id
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"editMessageReplyMarkup",
|
|
|
|
|
data,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
reply_markup=reply_markup,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-04-14 05:28:06 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_updates(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
offset: int = None,
|
2022-05-09 19:30:46 +02:00
|
|
|
|
limit: int = None,
|
|
|
|
|
timeout: float = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allowed_updates: List[str] = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: float = 2,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> List[Update]:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to receive incoming updates using long polling.
|
2015-07-08 14:22:31 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
Note:
|
|
|
|
|
1. This method will not work if an outgoing webhook is set up.
|
|
|
|
|
2. In order to avoid getting duplicate updates, recalculate offset after each
|
|
|
|
|
server response.
|
|
|
|
|
3. To take full advantage of this library take a look at :class:`telegram.ext.Updater`
|
|
|
|
|
|
2015-07-08 14:22:31 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
offset (:obj:`int`, optional): Identifier of the first update to be returned. Must be
|
|
|
|
|
greater by one than the highest among the identifiers of previously received
|
|
|
|
|
updates. By default, updates starting with the earliest unconfirmed update are
|
2022-04-24 12:38:09 +02:00
|
|
|
|
returned. An update is considered confirmed as soon as this method is called with
|
|
|
|
|
an offset higher than its :attr:`telegram.Update.update_id`. The negative offset
|
|
|
|
|
can be specified to retrieve updates starting from -offset update from the end of
|
|
|
|
|
the updates queue. All previous updates will forgotten.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
limit (:obj:`int`, optional): Limits the number of updates to be retrieved. Values
|
2021-04-30 10:47:41 +02:00
|
|
|
|
between 1-100 are accepted. Defaults to ``100``.
|
|
|
|
|
timeout (:obj:`int`, optional): Timeout in seconds for long polling. Defaults to ``0``,
|
2017-07-23 22:33:08 +02:00
|
|
|
|
i.e. usual short polling. Should be positive, short polling should be used for
|
|
|
|
|
testing purposes only.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allowed_updates (List[:obj:`str`]), optional): A list the types of
|
|
|
|
|
updates you want your bot to receive. For example, specify ["message",
|
|
|
|
|
"edited_channel_post", "callback_query"] to only receive updates of these types.
|
|
|
|
|
See :class:`telegram.Update` for a complete list of available update types.
|
|
|
|
|
Specify an empty list to receive all updates except
|
|
|
|
|
:attr:`telegram.Update.chat_member` (default). If not specified, the previous
|
|
|
|
|
setting will be used. Please note that this parameter doesn't affect updates
|
|
|
|
|
created before the call to the get_updates, so unwanted updates may be received for
|
|
|
|
|
a short period of time.
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
``2``. :paramref:`timeout` will be added to this value.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2015-07-08 21:58:18 +02:00
|
|
|
|
|
2015-07-08 14:22:31 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
List[:class:`telegram.Update`]
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"timeout": timeout}
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
2015-07-07 21:50:36 +02:00
|
|
|
|
if offset:
|
|
|
|
|
data["offset"] = offset
|
|
|
|
|
if limit:
|
|
|
|
|
data["limit"] = limit
|
2016-12-14 00:50:34 +01:00
|
|
|
|
if allowed_updates is not None:
|
|
|
|
|
data["allowed_updates"] = allowed_updates
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2017-01-06 22:48:34 +01:00
|
|
|
|
# Ideally we'd use an aggressive read timeout for the polling. However,
|
|
|
|
|
# * Short polling should return within 2 seconds.
|
|
|
|
|
# * Long polling poses a different problem: the connection might have been dropped while
|
|
|
|
|
# waiting for the server to return and there's no way of knowing the connection had been
|
|
|
|
|
# dropped in real time.
|
2021-06-06 11:48:48 +02:00
|
|
|
|
result = cast(
|
|
|
|
|
List[JSONDict],
|
2022-04-24 12:38:09 +02:00
|
|
|
|
await self._post(
|
2021-06-06 11:48:48 +02:00
|
|
|
|
"getUpdates",
|
|
|
|
|
data,
|
2022-05-09 19:30:46 +02:00
|
|
|
|
read_timeout=read_timeout + timeout if timeout else read_timeout,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2021-06-06 11:48:48 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
),
|
2020-06-30 22:07:38 +02:00
|
|
|
|
)
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2015-09-05 16:55:55 +02:00
|
|
|
|
if result:
|
2022-03-12 12:27:18 +01:00
|
|
|
|
self._logger.debug("Getting updates: %s", [u["update_id"] for u in result])
|
2015-07-20 13:59:41 +02:00
|
|
|
|
else:
|
2022-03-12 12:27:18 +01:00
|
|
|
|
self._logger.debug("No new updates found.")
|
2015-07-20 13:59:41 +02:00
|
|
|
|
|
2021-06-06 11:48:48 +02:00
|
|
|
|
return Update.de_list(result, self) # type: ignore[return-value]
|
2015-07-07 21:50:36 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_webhook(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2021-08-29 18:17:06 +02:00
|
|
|
|
url: str,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
certificate: FileInput = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
max_connections: int = None,
|
|
|
|
|
allowed_updates: List[str] = None,
|
|
|
|
|
ip_address: str = None,
|
|
|
|
|
drop_pending_updates: bool = None,
|
2022-06-27 18:54:11 +02:00
|
|
|
|
secret_token: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to specify a url and receive incoming updates via an outgoing webhook.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Whenever there is an update for the bot, Telegram will send an HTTPS POST request to the
|
2022-01-03 09:09:03 +01:00
|
|
|
|
specified url, containing An Update. In case of an unsuccessful request,
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Telegram will give up after a reasonable amount of attempts.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2022-06-27 18:54:11 +02:00
|
|
|
|
If you'd like to make sure that the Webhook was set by you, you can specify secret data in
|
|
|
|
|
the parameter :paramref:`secret_token`. If specified, the request will contain a header
|
|
|
|
|
``X-Telegram-Bot-Api-Secret-Token`` with the secret token as content.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Note:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
1. You will not be able to receive updates using :meth:`get_updates` for long as an
|
|
|
|
|
outgoing webhook is set up.
|
|
|
|
|
2. To use a self-signed certificate, you need to upload your public key certificate
|
|
|
|
|
using :paramref:`certificate` parameter. Please upload as
|
|
|
|
|
:class:`~telegram.InputFile`, sending a String will not work.
|
|
|
|
|
3. Ports currently supported for Webhooks:
|
|
|
|
|
:attr:`telegram.constants.SUPPORTED_WEBHOOK_PORTS`.
|
|
|
|
|
|
|
|
|
|
If you're having any trouble setting up webhooks, please check out this `guide to
|
|
|
|
|
Webhooks`_.
|
2015-07-09 18:19:58 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
url (:obj:`str`): HTTPS url to send updates to. Use an empty string to remove webhook
|
2017-05-17 18:41:08 +02:00
|
|
|
|
integration.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
certificate (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`):
|
|
|
|
|
Upload your public key certificate so that the root
|
|
|
|
|
certificate in use can be checked. See our `self-signed guide <https://github.com/\
|
|
|
|
|
python-telegram-bot/python-telegram-bot/wiki/Webhooks#creating-a-self-signed-\
|
|
|
|
|
certificate-using-openssl>`_ for details. |uploadinputnopath|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
ip_address (:obj:`str`, optional): The fixed IP address which will be used to send
|
|
|
|
|
webhook requests instead of the IP address resolved through DNS.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
max_connections (:obj:`int`, optional): Maximum allowed number of simultaneous HTTPS
|
2021-04-30 10:47:41 +02:00
|
|
|
|
connections to the webhook for update delivery, 1-100. Defaults to ``40``. Use
|
|
|
|
|
lower values to limit the load on your bot's server, and higher values to increase
|
|
|
|
|
your bot's throughput.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
allowed_updates (List[:obj:`str`], optional): A list the types of
|
2020-02-02 20:20:54 +01:00
|
|
|
|
updates you want your bot to receive. For example, specify ["message",
|
|
|
|
|
"edited_channel_post", "callback_query"] to only receive updates of these types.
|
|
|
|
|
See :class:`telegram.Update` for a complete list of available update types.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
Specify an empty list to receive all updates except
|
|
|
|
|
:attr:`telegram.Update.chat_member` (default). If not specified, the previous
|
|
|
|
|
setting will be used. Please note that this parameter doesn't affect updates
|
|
|
|
|
created before the call to the set_webhook, so unwanted updates may be received for
|
|
|
|
|
a short period of time.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
drop_pending_updates (:obj:`bool`, optional): Pass :obj:`True` to drop all pending
|
|
|
|
|
updates.
|
2022-06-27 18:54:11 +02:00
|
|
|
|
secret_token (:obj:`str`, optional): A secret token to be sent in a header
|
|
|
|
|
``X-Telegram-Bot-Api-Secret-Token`` in every webhook request,
|
|
|
|
|
:tg-const:`telegram.constants.WebhookLimit.MIN_SECRET_TOKEN_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.constants.WebhookLimit.MAX_SECRET_TOKEN_LENGTH` characters.
|
|
|
|
|
Only characters ``A-Z``, ``a-z``, ``0-9``, ``_`` and ``-`` are allowed.
|
|
|
|
|
The header is useful to ensure that the request comes from a webhook set by you.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2015-07-09 18:19:58 +02:00
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool` On success, :obj:`True` is returned.
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2020-02-02 20:20:54 +01:00
|
|
|
|
.. _`guide to Webhooks`: https://core.telegram.org/bots/webhooks
|
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-08-29 18:17:06 +02:00
|
|
|
|
data: JSONDict = {"url": url}
|
2016-04-19 14:04:25 +02:00
|
|
|
|
|
2015-09-04 22:53:39 +02:00
|
|
|
|
if certificate:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["certificate"] = self._parse_file_input(certificate)
|
2016-12-14 00:50:34 +01:00
|
|
|
|
if max_connections is not None:
|
|
|
|
|
data["max_connections"] = max_connections
|
|
|
|
|
if allowed_updates is not None:
|
|
|
|
|
data["allowed_updates"] = allowed_updates
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if ip_address:
|
|
|
|
|
data["ip_address"] = ip_address
|
|
|
|
|
if drop_pending_updates:
|
|
|
|
|
data["drop_pending_updates"] = drop_pending_updates
|
2022-06-27 18:54:11 +02:00
|
|
|
|
if secret_token is not None:
|
|
|
|
|
data["secret_token"] = secret_token
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setWebhook",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def delete_webhook(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
drop_pending_updates: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to remove webhook integration if you decide to switch back to
|
2021-04-30 10:47:41 +02:00
|
|
|
|
:meth:`get_updates()`.
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
|
|
|
|
Args:
|
2021-04-30 10:47:41 +02:00
|
|
|
|
drop_pending_updates (:obj:`bool`, optional): Pass :obj:`True` to drop all pending
|
2020-11-29 16:20:46 +01:00
|
|
|
|
updates.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-04-30 10:47:41 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2016-12-14 00:50:34 +01:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
data = {}
|
|
|
|
|
|
|
|
|
|
if drop_pending_updates:
|
|
|
|
|
data["drop_pending_updates"] = drop_pending_updates
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"deleteWebhook",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2015-07-09 18:19:58 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2015-07-20 12:53:58 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def leave_chat(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method for your bot to leave a group, supergroup or channel.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.leave`
|
|
|
|
|
|
2016-05-26 02:41:12 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-04-30 10:47:41 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"leaveChat",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_chat(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> Chat:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to get up to date information about the chat (current name of the user for
|
|
|
|
|
one-on-one conversations, current username of a user, group or channel, etc.).
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Chat`
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getChat",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return Chat.de_json(result, self) # type: ignore[return-value, arg-type]
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_chat_administrators(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> List[ChatMember]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2020-04-10 20:05:01 +02:00
|
|
|
|
Use this method to get a list of administrators in a chat.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.get_administrators`
|
|
|
|
|
|
2016-05-26 02:41:12 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
List[:class:`telegram.ChatMember`]: On success, returns a list of ``ChatMember``
|
|
|
|
|
objects that contains information about all chat administrators except
|
|
|
|
|
other bots. If the chat is a group or a supergroup and no administrators were
|
|
|
|
|
appointed, only the creator will be returned.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getChatAdministrators",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-02-19 19:07:48 +01:00
|
|
|
|
return ChatMember.de_list(result, self) # type: ignore
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_chat_member_count(
|
2021-07-01 17:45:19 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-07-01 17:45:19 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> int:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""Use this method to get the number of members in a chat.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.get_member_count`
|
|
|
|
|
|
2022-06-09 17:08:54 +02:00
|
|
|
|
.. versionadded:: 13.7
|
2021-07-01 17:45:19 +02:00
|
|
|
|
|
2016-05-26 02:41:12 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
:obj:`int`: Number of members in the chat.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getChatMemberCount",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_chat_member(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> ChatMember:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to get information about a member of a chat.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.get_member`
|
|
|
|
|
|
2016-05-26 02:41:12 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target supergroup or channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.ChatMember`
|
2016-05-26 02:41:12 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getChatMember",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return ChatMember.de_json(result, self) # type: ignore[return-value, arg-type]
|
2016-05-24 01:22:31 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_sticker_set(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
sticker_set_name: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""Use this method to set a new group sticker set for a supergroup.
|
|
|
|
|
The bot must be an administrator in the chat for this to work and must have the appropriate
|
|
|
|
|
admin rights. Use the field :attr:`telegram.Chat.can_set_sticker_set` optionally returned
|
2021-03-14 16:46:37 +01:00
|
|
|
|
in :meth:`get_chat` requests to check if the bot can use this method.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target supergroup (in the format @supergroupusername).
|
|
|
|
|
sticker_set_name (:obj:`str`): Name of the sticker set to be set as the group
|
|
|
|
|
sticker set.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "sticker_set_name": sticker_set_name}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatStickerSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def delete_chat_sticker_set(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""Use this method to delete a group sticker set from a supergroup. The bot must be an
|
|
|
|
|
administrator in the chat for this to work and must have the appropriate admin rights.
|
|
|
|
|
Use the field :attr:`telegram.Chat.can_set_sticker_set` optionally returned in
|
2021-03-14 16:46:37 +01:00
|
|
|
|
:meth:`get_chat` requests to check if the bot can use this method.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target supergroup (in the format @supergroupusername).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-10-14 20:03:02 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"deleteChatStickerSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-10-14 20:03:02 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_webhook_info(
|
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
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,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
) -> WebhookInfo:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to get current webhook status. Requires no parameters.
|
|
|
|
|
|
2021-04-30 10:47:41 +02:00
|
|
|
|
If the bot is using :meth:`get_updates`, will return an object with the
|
|
|
|
|
:attr:`telegram.WebhookInfo.url` field empty.
|
2016-10-03 19:43:10 +02:00
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-01-06 22:48:34 +01:00
|
|
|
|
|
2016-10-03 19:43:10 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.WebhookInfo`
|
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getWebhookInfo",
|
|
|
|
|
None,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return WebhookInfo.de_json(result, self) # type: ignore[return-value, arg-type]
|
2016-10-03 15:16:43 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_game_score(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
user_id: Union[int, str],
|
|
|
|
|
score: int,
|
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
force: bool = None,
|
|
|
|
|
disable_edit_message: bool = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Union[Message, bool]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2021-10-01 16:51:03 +02:00
|
|
|
|
Use this method to set the score of the specified user in a game message.
|
2016-10-04 00:50:46 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso::`telegram.CallbackQuery.set_game_score`
|
|
|
|
|
|
2016-12-11 22:44:52 +01:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): User identifier.
|
|
|
|
|
score (:obj:`int`): New score, must be non-negative.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
force (:obj:`bool`, optional): Pass :obj:`True`, if the high score is allowed to
|
|
|
|
|
decrease. This can be useful when fixing mistakes or banning cheaters.
|
|
|
|
|
disable_edit_message (:obj:`bool`, optional): Pass :obj:`True`, if the game message
|
|
|
|
|
should not be automatically edited to include the current scoreboard.
|
2020-04-10 20:05:01 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
|
|
|
|
Identifier of the sent message.
|
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
2016-12-11 22:44:52 +01:00
|
|
|
|
specified. Identifier of the inline message.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2016-12-11 22:44:52 +01:00
|
|
|
|
|
2016-10-04 00:50:46 +02:00
|
|
|
|
Returns:
|
2021-10-01 16:51:03 +02:00
|
|
|
|
:class:`telegram.Message`: The edited message. If the message is not an inline message
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
, :obj:`True`.
|
2016-10-04 00:50:46 +02:00
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`: If the new score is not greater than the user's
|
2020-11-29 16:20:46 +01:00
|
|
|
|
current score in the chat and force is :obj:`False`.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id, "score": score}
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
2016-10-04 00:50:46 +02:00
|
|
|
|
data["message_id"] = message_id
|
2016-10-03 20:43:02 +02:00
|
|
|
|
if inline_message_id:
|
2016-10-04 00:50:46 +02:00
|
|
|
|
data["inline_message_id"] = inline_message_id
|
2016-12-11 22:44:52 +01:00
|
|
|
|
if force is not None:
|
|
|
|
|
data["force"] = force
|
|
|
|
|
if disable_edit_message is not None:
|
|
|
|
|
data["disable_edit_message"] = disable_edit_message
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"setGameScore",
|
|
|
|
|
data,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_game_high_scores(
|
2017-05-07 16:09:58 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
user_id: Union[int, str],
|
|
|
|
|
chat_id: Union[str, int] = None,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int = None,
|
2022-08-27 11:58:28 +02:00
|
|
|
|
inline_message_id: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> List[GameHighScore]:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to get data for high score tables. Will return the score of the specified
|
2021-04-30 10:47:41 +02:00
|
|
|
|
user and several of their neighbors in a game.
|
2016-10-04 00:57:19 +02:00
|
|
|
|
|
2021-06-06 12:16:23 +02:00
|
|
|
|
Note:
|
|
|
|
|
This method will currently return scores for the target user, plus two of their
|
|
|
|
|
closest neighbors on each side. Will also return the top three users if the user and
|
|
|
|
|
his neighbors are not among them. Please note that this behavior is subject to change.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.CallbackQuery.get_game_high_scores`
|
|
|
|
|
|
2017-01-06 22:48:34 +01:00
|
|
|
|
Args:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
user_id (:obj:`int`): Target user id.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`, optional): Required if inline_message_id is not
|
|
|
|
|
specified. Unique identifier for the target chat.
|
|
|
|
|
message_id (:obj:`int`, optional): Required if inline_message_id is not specified.
|
|
|
|
|
Identifier of the sent message.
|
|
|
|
|
inline_message_id (:obj:`str`, optional): Required if chat_id and message_id are not
|
2017-05-17 18:41:08 +02:00
|
|
|
|
specified. Identifier of the inline message.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-01-06 22:48:34 +01:00
|
|
|
|
|
2016-10-04 00:57:19 +02:00
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
List[:class:`telegram.GameHighScore`]
|
2016-10-04 00:57:19 +02:00
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id}
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
|
|
|
|
if chat_id:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if message_id:
|
2016-10-04 00:57:19 +02:00
|
|
|
|
data["message_id"] = message_id
|
2016-10-03 20:43:02 +02:00
|
|
|
|
if inline_message_id:
|
2016-10-04 00:57:19 +02:00
|
|
|
|
data["inline_message_id"] = inline_message_id
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getGameHighScores",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
2021-02-19 19:07:48 +01:00
|
|
|
|
return GameHighScore.de_list(result, self) # type: ignore
|
2016-10-03 20:43:02 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_invoice(
|
2017-05-19 19:46:42 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
title: str,
|
|
|
|
|
description: str,
|
|
|
|
|
payload: str,
|
|
|
|
|
provider_token: str,
|
|
|
|
|
currency: str,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
prices: List["LabeledPrice"],
|
2021-04-30 10:09:21 +02:00
|
|
|
|
start_parameter: str = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
photo_url: str = None,
|
|
|
|
|
photo_size: int = None,
|
|
|
|
|
photo_width: int = None,
|
|
|
|
|
photo_height: int = None,
|
|
|
|
|
need_name: bool = None,
|
|
|
|
|
need_phone_number: bool = None,
|
|
|
|
|
need_email: bool = None,
|
|
|
|
|
need_shipping_address: bool = None,
|
|
|
|
|
is_flexible: bool = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
provider_data: Union[str, object] = None,
|
|
|
|
|
send_phone_number_to_provider: bool = None,
|
|
|
|
|
send_email_to_provider: bool = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
max_tip_amount: int = None,
|
|
|
|
|
suggested_tip_amounts: List[int] = None,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Message:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to send invoices.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2021-04-30 10:09:21 +02:00
|
|
|
|
Warning:
|
2022-02-09 17:30:16 +01:00
|
|
|
|
As of API 5.2 :paramref:`start_parameter` is an optional argument and therefore the
|
|
|
|
|
order of the arguments had to be changed. Use keyword arguments to make sure that the
|
2021-04-30 10:09:21 +02:00
|
|
|
|
arguments are passed correctly.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_invoice`, :attr:`telegram.Chat.send_invoice`,
|
|
|
|
|
:attr:`telegram.User.send_invoice`
|
|
|
|
|
|
2021-04-30 10:09:21 +02:00
|
|
|
|
.. versionchanged:: 13.5
|
2022-02-09 17:30:16 +01:00
|
|
|
|
As of Bot API 5.2, the parameter :paramref:`start_parameter` is optional.
|
2021-04-30 10:09:21 +02:00
|
|
|
|
|
2017-05-19 19:46:42 +02:00
|
|
|
|
Args:
|
2021-04-30 10:09:21 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-06-27 18:54:11 +02:00
|
|
|
|
title (:obj:`str`): Product name. :tg-const:`telegram.Invoice.MIN_TITLE_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_TITLE_LENGTH` characters.
|
|
|
|
|
description (:obj:`str`): Product description.
|
|
|
|
|
:tg-const:`telegram.Invoice.MIN_DESCRIPTION_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_DESCRIPTION_LENGTH` characters.
|
|
|
|
|
payload (:obj:`str`): Bot-defined invoice payload.
|
|
|
|
|
:tg-const:`telegram.Invoice.MIN_PAYLOAD_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_PAYLOAD_LENGTH` bytes. This will not be
|
2017-07-23 22:33:08 +02:00
|
|
|
|
displayed to the user, use for your internal processes.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
provider_token (:obj:`str`): Payments provider token, obtained via
|
|
|
|
|
`@BotFather <https://t.me/BotFather>`_.
|
2022-06-27 18:54:11 +02:00
|
|
|
|
currency (:obj:`str`): Three-letter ISO 4217 currency code, see `more on currencies
|
|
|
|
|
<https://core.telegram.org/bots/payments#supported-currencies>`_.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
prices (List[:class:`telegram.LabeledPrice`)]: Price breakdown, a list
|
2020-02-02 20:20:54 +01:00
|
|
|
|
of components (e.g. product price, tax, discount, delivery cost, delivery tax,
|
|
|
|
|
bonus, etc.).
|
2021-04-30 10:09:21 +02:00
|
|
|
|
max_tip_amount (:obj:`int`, optional): The maximum accepted amount for tips in the
|
2022-06-27 18:54:11 +02:00
|
|
|
|
*smallest* units of the currency (integer, **not** float/double). For example, for
|
|
|
|
|
a maximum tip of US$ 1.45 pass ``max_tip_amount = 145``. See the exp parameter in
|
2021-04-30 10:09:21 +02:00
|
|
|
|
`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``.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.5
|
2022-01-03 09:09:03 +01:00
|
|
|
|
suggested_tip_amounts (List[:obj:`int`], optional): An array of
|
2022-06-27 18:54:11 +02:00
|
|
|
|
suggested amounts of tips in the *smallest* units of the currency (integer, **not**
|
2021-04-30 10:09:21 +02:00
|
|
|
|
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
|
2022-06-27 18:58:51 +02:00
|
|
|
|
:paramref:`max_tip_amount`.
|
2021-04-30 10:09:21 +02:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.5
|
|
|
|
|
start_parameter (:obj:`str`, optional): Unique deep-linking parameter. If left empty,
|
|
|
|
|
*forwarded copies* of the sent message will have a *Pay* button, allowing
|
|
|
|
|
multiple users to pay directly from the forwarded message, using the same invoice.
|
|
|
|
|
If non-empty, forwarded copies of the sent message will have a *URL* button with a
|
|
|
|
|
deep link to the bot (instead of a *Pay* button), with the value used as the
|
|
|
|
|
start parameter.
|
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.5
|
|
|
|
|
As of Bot API 5.2, this parameter is optional.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
provider_data (:obj:`str` | :obj:`object`, optional): data about the
|
2017-12-08 22:38:59 +01:00
|
|
|
|
invoice, which will be shared with the payment provider. A detailed description of
|
|
|
|
|
required fields should be provided by the payment provider. When an object is
|
|
|
|
|
passed, it will be encoded as JSON.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
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:`str`, optional): Photo size.
|
|
|
|
|
photo_width (:obj:`int`, optional): Photo width.
|
|
|
|
|
photo_height (:obj:`int`, optional): Photo height.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
need_name (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's full
|
|
|
|
|
name to complete the order.
|
|
|
|
|
need_phone_number (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's
|
2017-07-23 22:33:08 +02:00
|
|
|
|
phone number to complete the order.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
need_email (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's email
|
|
|
|
|
to complete the order.
|
|
|
|
|
need_shipping_address (:obj:`bool`, optional): Pass :obj:`True`, if you require the
|
|
|
|
|
user's shipping address to complete the order.
|
|
|
|
|
send_phone_number_to_provider (:obj:`bool`, optional): Pass :obj:`True`, if user's
|
|
|
|
|
phone number should be sent to provider.
|
|
|
|
|
send_email_to_provider (:obj:`bool`, optional): Pass :obj:`True`, if user's email
|
|
|
|
|
address should be sent to provider.
|
|
|
|
|
is_flexible (:obj:`bool`, optional): Pass :obj:`True`, if the final price depends on
|
|
|
|
|
the shipping method.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2017-07-23 22:33:08 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for an
|
|
|
|
|
inline keyboard. If empty, one 'Pay total price' button will be
|
2020-04-10 20:05:01 +02:00
|
|
|
|
shown. If not empty, the first button must be a Pay button.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {
|
2017-05-19 19:46:42 +02:00
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"title": title,
|
|
|
|
|
"description": description,
|
|
|
|
|
"payload": payload,
|
|
|
|
|
"provider_token": provider_token,
|
|
|
|
|
"currency": currency,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"prices": prices,
|
2017-05-19 19:46:42 +02:00
|
|
|
|
}
|
2021-04-30 10:09:21 +02:00
|
|
|
|
if max_tip_amount is not None:
|
|
|
|
|
data["max_tip_amount"] = max_tip_amount
|
|
|
|
|
if suggested_tip_amounts is not None:
|
|
|
|
|
data["suggested_tip_amounts"] = suggested_tip_amounts
|
|
|
|
|
if start_parameter is not None:
|
|
|
|
|
data["start_parameter"] = start_parameter
|
2017-12-08 22:38:59 +01:00
|
|
|
|
if provider_data is not None:
|
2022-05-19 12:47:53 +02:00
|
|
|
|
data["provider_data"] = provider_data
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if photo_url is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["photo_url"] = photo_url
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if photo_size is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["photo_size"] = photo_size
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if photo_width is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["photo_width"] = photo_width
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if photo_height is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["photo_height"] = photo_height
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if need_name is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["need_name"] = need_name
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if need_phone_number is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["need_phone_number"] = need_phone_number
|
2017-06-08 03:47:19 +02:00
|
|
|
|
if need_email is not None:
|
2017-05-23 10:21:45 +02:00
|
|
|
|
data["need_email"] = need_email
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if need_shipping_address is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["need_shipping_address"] = need_shipping_address
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if is_flexible is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["is_flexible"] = is_flexible
|
2018-02-10 16:54:09 +01:00
|
|
|
|
if send_phone_number_to_provider is not None:
|
2021-05-16 20:56:28 +02:00
|
|
|
|
data["send_phone_number_to_provider"] = send_phone_number_to_provider
|
2018-02-10 16:54:09 +01:00
|
|
|
|
if send_email_to_provider is not None:
|
|
|
|
|
data["send_email_to_provider"] = send_email_to_provider
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendInvoice",
|
|
|
|
|
data,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-02-13 11:37:13 +01:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def answer_shipping_query( # pylint: disable=invalid-name
|
2017-05-19 19:46:42 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
shipping_query_id: str,
|
|
|
|
|
ok: bool,
|
|
|
|
|
shipping_options: List[ShippingOption] = None,
|
|
|
|
|
error_message: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
"""
|
2022-06-27 18:58:51 +02:00
|
|
|
|
If you sent an invoice requesting a shipping address and the parameter
|
|
|
|
|
:paramref:`send_invoice.is_flexible` was specified, the Bot API will send an
|
|
|
|
|
:class:`telegram.Update` with a :attr:`telegram.Update.shipping_query` field to the bot.
|
|
|
|
|
Use this method to reply to shipping queries.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.ShippingQuery.answer`
|
|
|
|
|
|
2017-05-19 19:46:42 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
shipping_query_id (:obj:`str`): Unique identifier for the query to be answered.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
ok (:obj:`bool`): Specify :obj:`True` if delivery to the specified address is possible
|
|
|
|
|
and :obj:`False` if there are any problems (for example, if delivery to the
|
|
|
|
|
specified address is not possible).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
shipping_options (List[:class:`telegram.ShippingOption`]), optional]: Required if ok is
|
2022-01-03 09:09:03 +01:00
|
|
|
|
:obj:`True`. An array of available shipping options.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
error_message (:obj:`str`, optional): Required if ok is :obj:`False`. Error message in
|
2017-07-23 22:33:08 +02:00
|
|
|
|
human readable form that explains why it is impossible to complete the order (e.g.
|
|
|
|
|
"Sorry, delivery to your desired address is unavailable"). Telegram will display
|
|
|
|
|
this message to the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-05-22 16:47:35 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"shipping_query_id": shipping_query_id, "ok": ok}
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2022-05-12 19:20:24 +02:00
|
|
|
|
if shipping_options is not None:
|
2017-06-10 21:45:48 +02:00
|
|
|
|
data["shipping_options"] = [option.to_dict() for option in shipping_options]
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if error_message is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["error_message"] = error_message
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"answerShippingQuery",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-05-22 16:55:19 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def answer_pre_checkout_query( # pylint: disable=invalid-name
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
pre_checkout_query_id: str,
|
|
|
|
|
ok: bool,
|
|
|
|
|
error_message: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
"""
|
2017-07-23 22:33:08 +02:00
|
|
|
|
Once the user has confirmed their payment and shipping details, the Bot API sends the final
|
2021-04-30 10:47:41 +02:00
|
|
|
|
confirmation in the form of an :class:`telegram.Update` with the field
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:attr:`telegram.Update.pre_checkout_query`. Use this method to respond to such pre-checkout
|
|
|
|
|
queries.
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
|
|
|
|
Note:
|
|
|
|
|
The Bot API must receive an answer within 10 seconds after the pre-checkout
|
|
|
|
|
query was sent.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.PreCheckoutQuery.answer`
|
|
|
|
|
|
2017-05-19 19:46:42 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
pre_checkout_query_id (:obj:`str`): Unique identifier for the query to be answered.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
ok (:obj:`bool`): Specify :obj:`True` if everything is alright
|
|
|
|
|
(goods are available, etc.) and the bot is ready to proceed with the order. Use
|
|
|
|
|
:obj:`False` if there are any problems.
|
|
|
|
|
error_message (:obj:`str`, optional): Required if ok is :obj:`False`. Error message
|
|
|
|
|
in human readable form that explains the reason for failure to proceed with
|
|
|
|
|
the checkout (e.g. "Sorry, somebody just bought the last of our amazing black
|
|
|
|
|
T-shirts while you were busy filling out your payment details. Please choose a
|
|
|
|
|
different color or garment!"). Telegram will display this message to the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-05-22 16:47:35 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"pre_checkout_query_id": pre_checkout_query_id, "ok": ok}
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2017-05-26 19:02:18 +02:00
|
|
|
|
if error_message is not None:
|
2017-05-19 19:46:42 +02:00
|
|
|
|
data["error_message"] = error_message
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"answerPreCheckoutQuery",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-05-22 16:55:19 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-05-19 19:46:42 +02:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
@_log
|
|
|
|
|
async def answer_web_app_query(
|
|
|
|
|
self,
|
|
|
|
|
web_app_query_id: str,
|
|
|
|
|
result: "InlineQueryResult",
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-05-03 18:21:50 +02:00
|
|
|
|
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,
|
|
|
|
|
) -> SentWebAppMessage:
|
|
|
|
|
"""Use this method to set the result of an interaction with a Web App and send a
|
|
|
|
|
corresponding message on behalf of the user to the chat from which the query originated.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
web_app_query_id (:obj:`str`): Unique identifier for the query to be answered.
|
|
|
|
|
result (:class:`telegram.InlineQueryResult`): An object describing the message to be
|
|
|
|
|
sent.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-05-03 18:21:50 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.SentWebAppMessage`: On success, a sent
|
|
|
|
|
:class:`telegram.SentWebAppMessage` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"web_app_query_id": web_app_query_id, "result": result}
|
|
|
|
|
|
|
|
|
|
api_result = await self._post(
|
|
|
|
|
"answerWebAppQuery",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return SentWebAppMessage.de_json(api_result, self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def restrict_chat_member(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
permissions: ChatPermissions,
|
|
|
|
|
until_date: Union[int, datetime] = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to restrict a user in a supergroup. The bot must be an administrator in
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
the supergroup for this to work and must have the appropriate admin rights. Pass
|
2022-04-27 20:17:58 +02:00
|
|
|
|
:obj:`True` for all boolean parameters to lift restrictions from a user.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :meth:`telegram.ChatPermissions.all_permissions`,
|
|
|
|
|
:attr:`telegram.Chat.restrict_member`
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target supergroup (in the format @supergroupusername).
|
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
|
|
|
|
until_date (:obj:`int` | :obj:`datetime.datetime`, optional): Date when restrictions
|
|
|
|
|
will be lifted for the user, unix time. If user is restricted for more than 366
|
|
|
|
|
days or less than 30 seconds from the current time, they are considered to be
|
|
|
|
|
restricted forever.
|
2020-09-27 12:59:48 +02:00
|
|
|
|
For timezone naive :obj:`datetime.datetime` objects, the default timezone of the
|
2022-06-27 18:58:51 +02:00
|
|
|
|
bot will be used, which is UTC unless :attr:`telegram.ext.Defaults.tzinfo` is
|
|
|
|
|
used.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
permissions (:class:`telegram.ChatPermissions`): An object for new user
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
permissions.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"user_id": user_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"permissions": permissions,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
}
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
if until_date is not None:
|
|
|
|
|
data["until_date"] = until_date
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"restrictChatMember",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def promote_chat_member(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
can_change_info: bool = None,
|
|
|
|
|
can_post_messages: bool = None,
|
|
|
|
|
can_edit_messages: bool = None,
|
|
|
|
|
can_delete_messages: bool = None,
|
|
|
|
|
can_invite_users: bool = None,
|
|
|
|
|
can_restrict_members: bool = None,
|
|
|
|
|
can_pin_messages: bool = None,
|
|
|
|
|
can_promote_members: bool = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
is_anonymous: bool = None,
|
|
|
|
|
can_manage_chat: bool = None,
|
|
|
|
|
can_manage_video_chats: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to promote or demote a user in a supergroup or a channel. The bot must be
|
|
|
|
|
an administrator in the chat for this to work and must have the appropriate admin rights.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
Pass :obj:`False` for all boolean parameters to demote a user.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.promote_member`
|
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
The argument ``can_manage_voice_chats`` was renamed to
|
|
|
|
|
:paramref:`can_manage_video_chats` in accordance to Bot API 6.0.
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
is_anonymous (:obj:`bool`, optional): Pass :obj:`True`, if the administrator's presence
|
|
|
|
|
in the chat is hidden.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
can_manage_chat (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
|
|
|
|
access the chat event log, chat statistics, message statistics in channels, see
|
|
|
|
|
channel members, see anonymous administrators in supergroups and ignore slow mode.
|
|
|
|
|
Implied by any other administrator privilege.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.4
|
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
can_manage_video_chats (:obj:`bool`, optional): Pass :obj:`True`, if the administrator
|
|
|
|
|
can manage video chats.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
.. versionadded:: 20.0
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
can_change_info (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
|
|
|
|
change chat title, photo and other settings.
|
|
|
|
|
can_post_messages (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
2017-07-23 22:33:08 +02:00
|
|
|
|
create channel posts, channels only.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
can_edit_messages (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
2021-03-14 16:41:35 +01:00
|
|
|
|
edit messages of other users and can pin messages, channels only.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
can_delete_messages (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
2017-07-23 22:33:08 +02:00
|
|
|
|
delete messages of other users.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
can_invite_users (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
|
|
|
|
invite new users to the chat.
|
|
|
|
|
can_restrict_members (:obj:`bool`, optional): Pass :obj:`True`, if the administrator
|
|
|
|
|
can restrict, ban or unban chat members.
|
|
|
|
|
can_pin_messages (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
|
|
|
|
pin messages, supergroups only.
|
|
|
|
|
can_promote_members (:obj:`bool`, optional): Pass :obj:`True`, if the administrator can
|
|
|
|
|
add new administrators with a subset of his own privileges or demote administrators
|
2017-07-23 22:33:08 +02:00
|
|
|
|
that he has promoted, directly or indirectly (promoted by administrators that were
|
|
|
|
|
appointed by him).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if is_anonymous is not None:
|
|
|
|
|
data["is_anonymous"] = is_anonymous
|
2017-07-01 17:08:45 +02:00
|
|
|
|
if can_change_info is not None:
|
|
|
|
|
data["can_change_info"] = can_change_info
|
|
|
|
|
if can_post_messages is not None:
|
|
|
|
|
data["can_post_messages"] = can_post_messages
|
|
|
|
|
if can_edit_messages is not None:
|
|
|
|
|
data["can_edit_messages"] = can_edit_messages
|
|
|
|
|
if can_delete_messages is not None:
|
|
|
|
|
data["can_delete_messages"] = can_delete_messages
|
|
|
|
|
if can_invite_users is not None:
|
|
|
|
|
data["can_invite_users"] = can_invite_users
|
|
|
|
|
if can_restrict_members is not None:
|
|
|
|
|
data["can_restrict_members"] = can_restrict_members
|
|
|
|
|
if can_pin_messages is not None:
|
|
|
|
|
data["can_pin_messages"] = can_pin_messages
|
|
|
|
|
if can_promote_members is not None:
|
|
|
|
|
data["can_promote_members"] = can_promote_members
|
2021-03-14 16:41:35 +01:00
|
|
|
|
if can_manage_chat is not None:
|
|
|
|
|
data["can_manage_chat"] = can_manage_chat
|
2022-05-03 18:21:50 +02:00
|
|
|
|
if can_manage_video_chats is not None:
|
|
|
|
|
data["can_manage_video_chats"] = can_manage_video_chats
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"promoteChatMember",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_permissions(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
permissions: ChatPermissions,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2019-09-06 21:41:43 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to set default chat permissions for all members. The bot must be an
|
|
|
|
|
administrator in the group or a supergroup for this to work and must have the
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:attr:`telegram.ChatMemberAdministrator.can_restrict_members` admin rights.
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.set_permissions`
|
|
|
|
|
|
2019-09-06 21:41:43 +02:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username of
|
|
|
|
|
the target supergroup (in the format `@supergroupusername`).
|
|
|
|
|
permissions (:class:`telegram.ChatPermissions`): New default chat permissions.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "permissions": permissions}
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatPermissions",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2019-09-06 21:41:43 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_administrator_custom_title(
|
2020-03-28 16:37:26 +01:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
user_id: Union[int, str],
|
|
|
|
|
custom_title: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-03-28 16:37:26 +01:00
|
|
|
|
"""
|
|
|
|
|
Use this method to set a custom title for administrators promoted by the bot in a
|
2020-04-10 20:05:01 +02:00
|
|
|
|
supergroup. The bot must be an administrator for this to work.
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.set_administrator_custom_title`
|
|
|
|
|
|
2020-03-28 16:37:26 +01:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username of
|
|
|
|
|
the target supergroup (in the format `@supergroupusername`).
|
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target administrator.
|
2021-04-30 10:47:41 +02:00
|
|
|
|
custom_title (:obj:`str`): New custom title for the administrator; 0-16 characters,
|
2020-04-10 20:05:01 +02:00
|
|
|
|
emoji are not allowed.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id, "custom_title": custom_title}
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatAdministratorCustomTitle",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
)
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2020-03-28 16:37:26 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def export_chat_invite_link(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> str:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2021-03-14 16:41:35 +01:00
|
|
|
|
Use this method to generate a new primary invite link for a chat; any previously generated
|
|
|
|
|
link is revoked. The bot must be an administrator in the chat for this to work and must
|
|
|
|
|
have the appropriate admin rights.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
Note:
|
|
|
|
|
Each administrator in a chat generates their own invite links. Bots can't use invite
|
|
|
|
|
links generated by other administrators. If you want your bot to work with invite
|
|
|
|
|
links, it will need to generate its own link using :meth:`export_chat_invite_link` or
|
|
|
|
|
by calling the :meth:`get_chat` method. If your bot needs to generate a new primary
|
|
|
|
|
invite link replacing its previous one, use :attr:`export_chat_invite_link` again.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.export_invite_link`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
:obj:`str`: New invite link on success.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"exportChatInviteLink",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def create_chat_invite_link(
|
2021-03-14 16:41:35 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
expire_date: Union[int, datetime] = None,
|
|
|
|
|
member_limit: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
name: str = None,
|
|
|
|
|
creates_join_request: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> ChatInviteLink:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to create an additional invite link for a chat. The bot must be an
|
|
|
|
|
administrator in the chat for this to work and must have the appropriate admin rights.
|
|
|
|
|
The link can be revoked using the method :meth:`revoke_chat_invite_link`.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.create_invite_link`
|
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
.. versionadded:: 13.4
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-03-14 16:41:35 +01:00
|
|
|
|
expire_date (:obj:`int` | :obj:`datetime.datetime`, optional): Date when the link will
|
2021-06-06 12:16:23 +02:00
|
|
|
|
expire. Integer input will be interpreted as Unix timestamp.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
For timezone naive :obj:`datetime.datetime` objects, the default timezone of the
|
2022-06-27 18:58:51 +02:00
|
|
|
|
bot will be used, which is UTC unless :attr:`telegram.ext.Defaults.tzinfo` is
|
|
|
|
|
used.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
member_limit (:obj:`int`, optional): Maximum number of users that can be members of
|
2021-11-29 20:32:26 +01:00
|
|
|
|
the chat simultaneously after joining the chat via this invite link;
|
|
|
|
|
1-:tg-const:`telegram.constants.ChatInviteLinkLimit.MEMBER_LIMIT`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
name (:obj:`str`, optional): Invite link name;
|
|
|
|
|
0-:tg-const:`telegram.constants.ChatInviteLinkLimit.NAME_LENGTH` characters.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
creates_join_request (:obj:`bool`, optional): :obj:`True`, if users joining the chat
|
|
|
|
|
via the link need to be approved by chat administrators.
|
2022-06-27 18:58:51 +02:00
|
|
|
|
If :obj:`True`, :paramref:`member_limit` can't be specified.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.ChatInviteLink`
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
2022-05-12 19:20:24 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
if expire_date is not None:
|
|
|
|
|
data["expire_date"] = expire_date
|
|
|
|
|
|
|
|
|
|
if member_limit is not None:
|
|
|
|
|
data["member_limit"] = member_limit
|
|
|
|
|
|
2021-11-08 19:02:20 +01:00
|
|
|
|
if name is not None:
|
|
|
|
|
data["name"] = name
|
|
|
|
|
|
|
|
|
|
if creates_join_request is not None:
|
|
|
|
|
data["creates_join_request"] = creates_join_request
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"createChatInviteLink",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
return ChatInviteLink.de_json(result, self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def edit_chat_invite_link(
|
2021-03-14 16:41:35 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2021-11-29 20:32:26 +01:00
|
|
|
|
invite_link: Union[str, "ChatInviteLink"],
|
2021-03-14 16:41:35 +01:00
|
|
|
|
expire_date: Union[int, datetime] = None,
|
|
|
|
|
member_limit: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
name: str = None,
|
|
|
|
|
creates_join_request: bool = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> ChatInviteLink:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to edit a non-primary invite link created by the bot. The bot must be an
|
|
|
|
|
administrator in the chat for this to work and must have the appropriate admin rights.
|
|
|
|
|
|
2021-11-08 19:02:20 +01:00
|
|
|
|
Note:
|
|
|
|
|
Though not stated explicitly in the official docs, Telegram changes not only the
|
|
|
|
|
optional parameters that are explicitly passed, but also replaces all other optional
|
|
|
|
|
parameters to the default values. However, since not documented, this behaviour may
|
|
|
|
|
change unbeknown to PTB.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.edit_invite_link`
|
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
.. versionadded:: 13.4
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-11-29 20:32:26 +01:00
|
|
|
|
invite_link (:obj:`str` | :obj:`telegram.ChatInviteLink`): The invite link to edit.
|
|
|
|
|
|
2022-05-06 17:15:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
2021-11-29 20:32:26 +01:00
|
|
|
|
Now also accepts :obj:`telegram.ChatInviteLink` instances.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
expire_date (:obj:`int` | :obj:`datetime.datetime`, optional): Date when the link will
|
|
|
|
|
expire.
|
|
|
|
|
For timezone naive :obj:`datetime.datetime` objects, the default timezone of the
|
2022-06-27 18:58:51 +02:00
|
|
|
|
bot will be used, which is UTC unless :attr:`telegram.ext.Defaults.tzinfo` is
|
|
|
|
|
used.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
member_limit (:obj:`int`, optional): Maximum number of users that can be members of
|
2021-11-29 20:32:26 +01:00
|
|
|
|
the chat simultaneously after joining the chat via this invite link;
|
|
|
|
|
1-:tg-const:`telegram.constants.ChatInviteLinkLimit.MEMBER_LIMIT`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
name (:obj:`str`, optional): Invite link name;
|
|
|
|
|
0-:tg-const:`telegram.constants.ChatInviteLinkLimit.NAME_LENGTH` characters.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
creates_join_request (:obj:`bool`, optional): :obj:`True`, if users joining the chat
|
|
|
|
|
via the link need to be approved by chat administrators.
|
2022-06-27 18:58:51 +02:00
|
|
|
|
If :obj:`True`, :paramref:`member_limit` can't be specified.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.ChatInviteLink`
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
2021-11-29 20:32:26 +01:00
|
|
|
|
link = invite_link.invite_link if isinstance(invite_link, ChatInviteLink) else invite_link
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "invite_link": link}
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
if expire_date is not None:
|
|
|
|
|
data["expire_date"] = expire_date
|
|
|
|
|
|
|
|
|
|
if member_limit is not None:
|
|
|
|
|
data["member_limit"] = member_limit
|
|
|
|
|
|
2021-11-08 19:02:20 +01:00
|
|
|
|
if name is not None:
|
|
|
|
|
data["name"] = name
|
|
|
|
|
|
|
|
|
|
if creates_join_request is not None:
|
|
|
|
|
data["creates_join_request"] = creates_join_request
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"editChatInviteLink",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
return ChatInviteLink.de_json(result, self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def revoke_chat_invite_link(
|
2021-03-14 16:41:35 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2021-11-29 20:32:26 +01:00
|
|
|
|
invite_link: Union[str, "ChatInviteLink"],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> ChatInviteLink:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to revoke an invite link created by the bot. If the primary link is
|
|
|
|
|
revoked, a new link is automatically generated. The bot must be an administrator in the
|
|
|
|
|
chat for this to work and must have the appropriate admin rights.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.revoke_invite_link`
|
|
|
|
|
|
2021-03-14 16:41:35 +01:00
|
|
|
|
.. versionadded:: 13.4
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-11-29 20:32:26 +01:00
|
|
|
|
invite_link (:obj:`str` | :obj:`telegram.ChatInviteLink`): The invite link to revoke.
|
|
|
|
|
|
2022-05-06 17:15:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
2021-11-29 20:32:26 +01:00
|
|
|
|
Now also accepts :obj:`telegram.ChatInviteLink` instances.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.ChatInviteLink`
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
2021-11-29 20:32:26 +01:00
|
|
|
|
link = invite_link.invite_link if isinstance(invite_link, ChatInviteLink) else invite_link
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "invite_link": link}
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"revokeChatInviteLink",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
return ChatInviteLink.de_json(result, self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def approve_chat_join_request(
|
2021-11-08 19:02:20 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-11-08 19:02:20 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""Use this method to approve a chat join request.
|
|
|
|
|
|
|
|
|
|
The bot must be an administrator in the chat for this to work and must have the
|
|
|
|
|
:attr:`telegram.ChatPermissions.can_invite_users` administrator right.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.approve_join_request`,
|
|
|
|
|
:attr:`telegram.ChatJoinRequest.approve`, :attr:`telegram.User.approve_join_request`
|
|
|
|
|
|
2021-11-08 19:02:20 +01:00
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-11-08 19:02:20 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"approveChatJoinRequest",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-11-08 19:02:20 +01:00
|
|
|
|
|
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def decline_chat_join_request(
|
2021-11-08 19:02:20 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
user_id: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-11-08 19:02:20 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""Use this method to decline a chat join request.
|
|
|
|
|
|
|
|
|
|
The bot must be an administrator in the chat for this to work and must have the
|
|
|
|
|
:attr:`telegram.ChatPermissions.can_invite_users` administrator right.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.decline_join_request`,
|
|
|
|
|
:attr:`telegram.ChatJoinRequest.decline`, :attr:`telegram.User.decline_join_request`
|
|
|
|
|
|
2021-11-08 19:02:20 +01:00
|
|
|
|
.. versionadded:: 13.8
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
|
|
|
|
user_id (:obj:`int`): Unique identifier of the target user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-11-08 19:02:20 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "user_id": user_id}
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"declineChatJoinRequest",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-11-08 19:02:20 +01:00
|
|
|
|
|
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_photo(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2020-11-29 16:20:46 +01:00
|
|
|
|
photo: FileInput,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to set a new profile photo for the chat.
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Photos can't be changed for private chats. The bot must be an administrator in the chat
|
|
|
|
|
for this to work and must have the appropriate admin rights.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.set_photo`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-02-09 17:30:16 +01:00
|
|
|
|
photo (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path`): New chat photo.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|uploadinput|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "photo": self._parse_file_input(photo)}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatPhoto",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def delete_chat_photo(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to delete a chat photo. Photos can't be changed for private chats. The bot
|
|
|
|
|
must be an administrator in the chat for this to work and must have the appropriate admin
|
|
|
|
|
rights.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.delete_photo`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"deleteChatPhoto",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_title(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
|
|
|
|
title: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to change the title of a chat. Titles can't be changed for private chats.
|
|
|
|
|
The bot must be an administrator in the chat for this to work and must have the appropriate
|
|
|
|
|
admin rights.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.set_title`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
title (:obj:`str`): New chat title, 1-255 characters.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "title": title}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatTitle",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_chat_description(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2021-08-29 18:17:06 +02:00
|
|
|
|
description: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2019-09-06 21:41:43 +02:00
|
|
|
|
Use this method to change the description of a group, a supergroup or a channel. The bot
|
|
|
|
|
must be an administrator in the chat for this to work and must have the appropriate admin
|
|
|
|
|
rights.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.set_description`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-08-29 18:17:06 +02:00
|
|
|
|
description (:obj:`str`, optional): New chat description, 0-255 characters.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-08-29 18:17:06 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
|
|
|
|
|
|
|
|
|
if description is not None:
|
|
|
|
|
data["description"] = description
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setChatDescription",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def pin_chat_message(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Use this method to add a message to the list of pinned messages in a chat. If the
|
|
|
|
|
chat is not a private chat, the bot must be an administrator in the chat for this to work
|
2022-06-27 18:58:51 +02:00
|
|
|
|
and must have the :paramref:`~telegram.ChatAdministratorRights.can_pin_messages` admin
|
|
|
|
|
right in a supergroup or :attr:`~telegram.ChatMemberAdministrator.can_edit_messages` admin
|
|
|
|
|
right in a channel.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.pin_message`, :attr:`telegram.User.pin_message`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2017-07-23 22:33:08 +02:00
|
|
|
|
message_id (:obj:`int`): Identifier of a message to pin.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Pass :obj:`True`, if it is not necessary
|
2020-11-29 16:20:46 +01:00
|
|
|
|
to send a notification to all chat members about the new pinned message.
|
|
|
|
|
Notifications are always disabled in channels and private chats.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"message_id": message_id,
|
|
|
|
|
"disable_notification": disable_notification,
|
|
|
|
|
}
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"pinChatMessage",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
)
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def unpin_chat_message(
|
2020-11-29 16:20:46 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
message_id: int = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Use this method to remove a message from the list of pinned messages in a chat. If the
|
|
|
|
|
chat is not a private chat, the bot must be an administrator in the chat for this to work
|
2022-06-27 18:58:51 +02:00
|
|
|
|
and must have the :paramref:`~telegram.ChatAdministratorRights.can_pin_messages` admin
|
|
|
|
|
right in a supergroup or :attr:`~telegram.ChatMemberAdministrator.can_edit_messages` admin
|
|
|
|
|
right in a channel.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.unpin_message`, :attr:`telegram.User.unpin_message`
|
|
|
|
|
|
2017-07-01 17:08:45 +02:00
|
|
|
|
Args:
|
2017-07-23 22:33:08 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2020-11-29 16:20:46 +01:00
|
|
|
|
message_id (:obj:`int`, optional): Identifier of a message to unpin. If not specified,
|
|
|
|
|
the most recent pinned message (by sending date) will be unpinned.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-23 22:33:08 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if message_id is not None:
|
|
|
|
|
data["message_id"] = message_id
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"unpinChatMessage",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
)
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def unpin_all_chat_messages(
|
2020-11-29 16:20:46 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[str, int],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to clear the list of pinned messages in a chat. If the
|
|
|
|
|
chat is not a private chat, the bot must be an administrator in the chat for this
|
2022-06-27 18:58:51 +02:00
|
|
|
|
to work and must have the :paramref:`~telegram.ChatAdministratorRights.can_pin_messages`
|
|
|
|
|
admin right in a supergroup or :attr:`~telegram.ChatMemberAdministrator.can_edit_messages`
|
|
|
|
|
admin right in a channel.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Chat.unpin_all_messages`,
|
|
|
|
|
:attr:`telegram.User.unpin_all_messages`
|
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"unpinAllChatMessages",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
)
|
2017-07-01 17:08:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_sticker_set(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
name: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> StickerSet:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to get a sticker set.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
name (:obj:`str`): Name of the sticker set.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.StickerSet`
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"name": name}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getStickerSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return StickerSet.de_json(result, self) # type: ignore[return-value, arg-type]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2022-08-25 19:36:55 +02:00
|
|
|
|
@_log
|
|
|
|
|
async def get_custom_emoji_stickers(
|
|
|
|
|
self,
|
|
|
|
|
custom_emoji_ids: List[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,
|
|
|
|
|
) -> List[Sticker]:
|
|
|
|
|
# skipcq: FLK-D207
|
|
|
|
|
"""
|
|
|
|
|
Use this method to get information about emoji stickers by their identifiers.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
custom_emoji_ids (List[:obj:`str`]): List of custom emoji identifiers.
|
|
|
|
|
At most :tg-const:`telegram.constants.CustomEmojiStickerLimit.\
|
|
|
|
|
CUSTOM_EMOJI_IDENTIFIER_LIMIT` custom emoji identifiers can be specified.
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
List[:class:`telegram.Sticker`]
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"custom_emoji_ids": custom_emoji_ids}
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"getCustomEmojiStickers",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
return Sticker.de_list(result, self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def upload_sticker_file(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
user_id: Union[str, int],
|
2020-11-29 16:20:46 +01:00
|
|
|
|
png_sticker: FileInput,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> File:
|
2017-07-22 13:34:51 +02:00
|
|
|
|
"""
|
2022-02-02 21:05:46 +01:00
|
|
|
|
Use this method to upload a ``.PNG`` file with a sticker for later use in
|
2021-03-14 16:46:37 +01:00
|
|
|
|
:meth:`create_new_sticker_set` and :meth:`add_sticker_to_set` methods (can be used multiple
|
2017-07-22 13:34:51 +02:00
|
|
|
|
times).
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
user_id (:obj:`int`): User identifier of sticker file owner.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
png_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`):
|
2022-02-02 21:05:46 +01:00
|
|
|
|
**PNG** image with the sticker, must be up to 512 kilobytes in size,
|
|
|
|
|
dimensions must not exceed 512px, and either width or height must be exactly 512px.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|uploadinput|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:class:`telegram.File`: On success, the uploaded File is returned.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id, "png_sticker": self._parse_file_input(png_sticker)}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"uploadStickerFile",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return File.de_json(result, self) # type: ignore[return-value, arg-type]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def create_new_sticker_set(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
name: str,
|
|
|
|
|
title: str,
|
|
|
|
|
emojis: str,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
png_sticker: FileInput = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
mask_position: MaskPosition = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
tgs_sticker: FileInput = None,
|
|
|
|
|
webm_sticker: FileInput = None,
|
2022-08-25 19:36:55 +02:00
|
|
|
|
sticker_type: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to create new sticker set owned by a user.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
The bot will be able to edit the created sticker set.
|
2022-08-25 19:36:55 +02:00
|
|
|
|
You must use exactly one of the fields :paramref:`png_sticker`, :paramref:`tgs_sticker`,
|
|
|
|
|
or :paramref:`webm_sticker`.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Warning:
|
2022-05-06 17:15:23 +02:00
|
|
|
|
As of API 4.7 :paramref:`png_sticker` is an optional argument and therefore the order
|
|
|
|
|
of the arguments had to be changed. Use keyword arguments to make sure that the
|
|
|
|
|
arguments are passed correctly.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2022-08-25 19:36:55 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
The parameter ``contains_masks`` has been removed. Use :paramref:`sticker_type`
|
|
|
|
|
instead.
|
|
|
|
|
|
2017-07-22 13:34:51 +02:00
|
|
|
|
Args:
|
|
|
|
|
user_id (:obj:`int`): User identifier of created sticker set owner.
|
|
|
|
|
name (:obj:`str`): Short name of sticker set, to be used in t.me/addstickers/ URLs
|
|
|
|
|
(e.g., animals). Can contain only english letters, digits and underscores.
|
|
|
|
|
Must begin with a letter, can't contain consecutive underscores and
|
|
|
|
|
must end in "_by_<bot username>". <bot_username> is case insensitive.
|
|
|
|
|
1-64 characters.
|
|
|
|
|
title (:obj:`str`): Sticker set title, 1-64 characters.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
png_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`, \
|
2022-02-02 21:05:46 +01:00
|
|
|
|
optional): **PNG** image with the sticker,
|
2020-04-10 19:22:45 +02:00
|
|
|
|
must be up to 512 kilobytes in size, dimensions must not exceed 512px,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
and either width or height must be exactly 512px.
|
|
|
|
|
|fileinput|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
tgs_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`, \
|
2022-09-19 22:31:23 +02:00
|
|
|
|
optional): **TGS** animation with the sticker. |uploadinput|
|
2022-02-02 21:05:46 +01:00
|
|
|
|
See https://core.telegram.org/stickers#animated-sticker-requirements for technical
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
requirements.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2022-02-02 21:05:46 +01:00
|
|
|
|
webm_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`,\
|
2022-09-19 22:31:23 +02:00
|
|
|
|
optional): **WEBM** video with the sticker. |uploadinput|
|
2022-02-02 21:05:46 +01:00
|
|
|
|
See https://core.telegram.org/stickers#video-sticker-requirements for
|
|
|
|
|
technical requirements.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.11
|
|
|
|
|
|
2022-09-19 22:31:23 +02:00
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
|
|
|
|
|
2017-07-22 13:34:51 +02:00
|
|
|
|
emojis (:obj:`str`): One or more emoji corresponding to the sticker.
|
|
|
|
|
mask_position (:class:`telegram.MaskPosition`, optional): Position where the mask
|
|
|
|
|
should be placed on faces.
|
2022-08-25 19:36:55 +02:00
|
|
|
|
sticker_type (:obj:`str`, optional): Type of stickers in the set, pass
|
|
|
|
|
:attr:`telegram.Sticker.REGULAR` or :attr:`telegram.Sticker.MASK`. Custom emoji
|
|
|
|
|
sticker sets can't be created via the Bot API at the moment. By default, a
|
|
|
|
|
regular sticker set is created.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id, "name": name, "title": title, "emojis": emojis}
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
if png_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["png_sticker"] = self._parse_file_input(png_sticker)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
if tgs_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["tgs_sticker"] = self._parse_file_input(tgs_sticker)
|
2022-02-02 21:05:46 +01:00
|
|
|
|
if webm_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["webm_sticker"] = self._parse_file_input(webm_sticker)
|
2017-07-22 13:34:51 +02:00
|
|
|
|
if mask_position is not None:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["mask_position"] = mask_position
|
2022-08-25 19:36:55 +02:00
|
|
|
|
if sticker_type is not None:
|
|
|
|
|
data["sticker_type"] = sticker_type
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"createNewStickerSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def add_sticker_to_set(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
name: str,
|
|
|
|
|
emojis: str,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
png_sticker: FileInput = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
mask_position: MaskPosition = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
tgs_sticker: FileInput = None,
|
|
|
|
|
webm_sticker: FileInput = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = 20,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to add a new sticker to a set created by the bot.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
You **must** use exactly one of the fields :paramref:`png_sticker`, :paramref:`tgs_sticker`
|
|
|
|
|
or :paramref:`webm_sticker`. Animated stickers can be added to animated sticker sets and
|
|
|
|
|
only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can
|
|
|
|
|
have up to 120 stickers.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Warning:
|
2022-05-06 17:15:23 +02:00
|
|
|
|
As of API 4.7 :paramref:`png_sticker` is an optional argument and therefore the order
|
|
|
|
|
of the arguments had to be changed. Use keyword arguments to make sure that the
|
|
|
|
|
arguments are passed correctly.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
user_id (:obj:`int`): User identifier of created sticker set owner.
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2017-07-22 13:34:51 +02:00
|
|
|
|
name (:obj:`str`): Sticker set name.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
png_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`, \
|
2022-02-02 21:05:46 +01:00
|
|
|
|
optional): **PNG** image with the sticker,
|
2020-04-10 19:22:45 +02:00
|
|
|
|
must be up to 512 kilobytes in size, dimensions must not exceed 512px,
|
2022-09-19 22:31:23 +02:00
|
|
|
|
and either width or height must be exactly 512px.
|
|
|
|
|
|fileinput|
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
tgs_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`, \
|
2022-09-19 22:31:23 +02:00
|
|
|
|
optional): **TGS** animation with the sticker. |uploadinput|
|
2022-02-02 21:05:46 +01:00
|
|
|
|
See https://core.telegram.org/stickers#animated-sticker-requirements for technical
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
requirements.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2022-02-02 21:05:46 +01:00
|
|
|
|
webm_sticker (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`,\
|
2022-09-19 22:31:23 +02:00
|
|
|
|
optional): **WEBM** video with the sticker. |uploadinput|
|
2022-02-02 21:05:46 +01:00
|
|
|
|
See https://core.telegram.org/stickers#video-sticker-requirements for
|
|
|
|
|
technical requirements.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.11
|
2022-09-19 22:31:23 +02:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 20.0
|
|
|
|
|
File paths as input is also accepted for bots *not* running in
|
|
|
|
|
:paramref:`~telegram.Bot.local_mode`.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
emojis (:obj:`str`): One or more emoji corresponding to the sticker.
|
|
|
|
|
mask_position (:class:`telegram.MaskPosition`, optional): Position where the mask
|
2020-04-10 20:05:01 +02:00
|
|
|
|
should be placed on faces.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id, "name": name, "emojis": emojis}
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2020-04-10 19:22:45 +02:00
|
|
|
|
if png_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["png_sticker"] = self._parse_file_input(png_sticker)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
if tgs_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["tgs_sticker"] = self._parse_file_input(tgs_sticker)
|
2022-02-02 21:05:46 +01:00
|
|
|
|
if webm_sticker is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["webm_sticker"] = self._parse_file_input(webm_sticker)
|
2017-07-22 13:34:51 +02:00
|
|
|
|
if mask_position is not None:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["mask_position"] = mask_position
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"addStickerToSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_sticker_position_in_set(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
sticker: str,
|
|
|
|
|
position: int,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to move a sticker in a set created by the bot to a specific position.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
sticker (:obj:`str`): File identifier of the sticker.
|
|
|
|
|
position (:obj:`int`): New sticker position in the set, zero-based.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-09-01 08:43:08 +02:00
|
|
|
|
|
2017-07-22 13:34:51 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"sticker": sticker, "position": position}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setStickerPositionInSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def delete_sticker_from_set(
|
2021-02-19 19:07:48 +01:00
|
|
|
|
self,
|
|
|
|
|
sticker: str,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> bool:
|
2017-09-01 08:43:08 +02:00
|
|
|
|
"""Use this method to delete a sticker from a set created by the bot.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
sticker (:obj:`str`): File identifier of the sticker.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2017-09-01 08:43:08 +02:00
|
|
|
|
|
2017-07-22 13:34:51 +02:00
|
|
|
|
"""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"sticker": sticker}
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"deleteStickerFromSet",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2017-07-22 13:34:51 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_sticker_set_thumb(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
name: str,
|
|
|
|
|
user_id: Union[str, int],
|
2020-11-29 16:20:46 +01:00
|
|
|
|
thumb: FileInput = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-04-10 19:22:45 +02:00
|
|
|
|
"""Use this method to set the thumbnail of a sticker set. Animated thumbnails can be set
|
2022-02-02 21:05:46 +01:00
|
|
|
|
for animated sticker sets only. Video thumbnails can be set only for video sticker sets
|
|
|
|
|
only.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
name (:obj:`str`): Sticker set name
|
|
|
|
|
user_id (:obj:`int`): User identifier of created sticker set owner.
|
2022-02-09 17:30:16 +01:00
|
|
|
|
thumb (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path`, \
|
2022-02-02 21:05:46 +01:00
|
|
|
|
optional): A **PNG** image with the thumbnail, must
|
|
|
|
|
be up to 128 kilobytes in size and have width and height exactly 100px, or a
|
|
|
|
|
**TGS** animation with the thumbnail up to 32 kilobytes in size; see
|
|
|
|
|
https://core.telegram.org/stickers#animated-sticker-requirements for animated
|
|
|
|
|
sticker technical requirements, or a **WEBM** video with the thumbnail up to 32
|
|
|
|
|
kilobytes in size; see
|
|
|
|
|
https://core.telegram.org/stickers#video-sticker-requirements for video sticker
|
2022-09-19 22:31:23 +02:00
|
|
|
|
technical requirements.
|
|
|
|
|
|fileinput|
|
2022-02-02 21:05:46 +01:00
|
|
|
|
Animated sticker set thumbnails can't be uploaded via HTTP URL.
|
2020-12-18 11:20:03 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.2
|
|
|
|
|
Accept :obj:`bytes` as input.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
data: JSONDict = {"name": name, "user_id": user_id}
|
|
|
|
|
if thumb is not None:
|
2022-09-19 22:31:23 +02:00
|
|
|
|
data["thumb"] = self._parse_file_input(thumb)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setStickerSetThumb",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_passport_data_errors(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
user_id: Union[str, int],
|
|
|
|
|
errors: List[PassportElementError],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
"""
|
|
|
|
|
Informs a user that some of the Telegram Passport elements they provided contains errors.
|
|
|
|
|
The user will not be able to re-submit their Passport to you until the errors are fixed
|
2020-04-10 20:05:01 +02:00
|
|
|
|
(the contents of the field for which you returned the error must change).
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
Use this if the data submitted by the user doesn't satisfy the standards your service
|
|
|
|
|
requires for any reason. For example, if a birthday date seems invalid, a submitted
|
|
|
|
|
document is blurry, a scan shows evidence of tampering, etc. Supply some details in the
|
|
|
|
|
error message to make sure the user knows how to correct the issues.
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
user_id (:obj:`int`): User identifier
|
2022-01-03 09:09:03 +01:00
|
|
|
|
errors (List[:class:`PassportElementError`]): An array describing the
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
errors.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data: JSONDict = {"user_id": user_id, "errors": errors}
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"setPassportDataErrors",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_poll(
|
2019-08-23 21:20:41 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
question: str,
|
|
|
|
|
options: List[str],
|
2022-05-09 19:30:46 +02:00
|
|
|
|
is_anonymous: bool = None,
|
|
|
|
|
type: str = None, # pylint: disable=redefined-builtin
|
|
|
|
|
allows_multiple_answers: bool = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
correct_option_id: int = None,
|
|
|
|
|
is_closed: bool = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
|
|
|
|
explanation: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
explanation_parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
open_period: int = None,
|
|
|
|
|
close_date: Union[int, datetime] = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
explanation_entities: Union[List["MessageEntity"], Tuple["MessageEntity", ...]] = None,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
|
|
|
|
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,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> Message:
|
2019-08-23 21:20:41 +02:00
|
|
|
|
"""
|
2020-03-29 09:52:30 +02:00
|
|
|
|
Use this method to send a native poll.
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_poll`, :attr:`telegram.Chat.send_poll`,
|
|
|
|
|
:attr:`telegram.User.send_poll`
|
|
|
|
|
|
2019-08-23 21:20:41 +02:00
|
|
|
|
Args:
|
2020-04-10 20:05:01 +02:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2021-10-19 18:28:19 +02:00
|
|
|
|
question (:obj:`str`): Poll question, 1-:tg-const:`telegram.Poll.MAX_QUESTION_LENGTH`
|
|
|
|
|
characters.
|
|
|
|
|
options (List[:obj:`str`]): List of answer options,
|
|
|
|
|
2-:tg-const:`telegram.Poll.MAX_OPTION_NUMBER` strings
|
|
|
|
|
1-:tg-const:`telegram.Poll.MAX_OPTION_LENGTH` characters each.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
is_anonymous (:obj:`bool`, optional): :obj:`True`, if the poll needs to be anonymous,
|
|
|
|
|
defaults to :obj:`True`.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
type (:obj:`str`, optional): Poll type, :tg-const:`telegram.Poll.QUIZ` or
|
|
|
|
|
:tg-const:`telegram.Poll.REGULAR`, defaults to :tg-const:`telegram.Poll.REGULAR`.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
allows_multiple_answers (:obj:`bool`, optional): :obj:`True`, if the poll allows
|
|
|
|
|
multiple answers, ignored for polls in quiz mode, defaults to :obj:`False`.
|
2020-03-29 09:52:30 +02:00
|
|
|
|
correct_option_id (:obj:`int`, optional): 0-based identifier of the correct answer
|
2020-04-10 20:05:01 +02:00
|
|
|
|
option, required for polls in quiz mode.
|
2020-05-02 11:56:52 +02:00
|
|
|
|
explanation (:obj:`str`, optional): Text that is shown when a user chooses an incorrect
|
|
|
|
|
answer or taps on the lamp icon in a quiz-style poll, 0-200 characters with at most
|
|
|
|
|
2 line feeds after entities parsing.
|
|
|
|
|
explanation_parse_mode (:obj:`str`, optional): Mode for parsing entities in the
|
2021-10-19 18:28:19 +02:00
|
|
|
|
explanation. See the constants in :class:`telegram.constants.ParseMode` for the
|
|
|
|
|
available modes.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
explanation_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in message text, which can be specified instead of
|
2022-05-06 17:15:23 +02:00
|
|
|
|
:paramref:`explanation_parse_mode`.
|
2020-05-02 11:56:52 +02:00
|
|
|
|
open_period (:obj:`int`, optional): Amount of time in seconds the poll will be active
|
2022-02-09 17:30:16 +01:00
|
|
|
|
after creation, 5-600. Can't be used together with :paramref:`close_date`.
|
2020-05-02 11:56:52 +02:00
|
|
|
|
close_date (:obj:`int` | :obj:`datetime.datetime`, optional): Point in time (Unix
|
|
|
|
|
timestamp) when the poll will be automatically closed. Must be at least 5 and no
|
|
|
|
|
more than 600 seconds in the future. Can't be used together with
|
2022-02-09 17:30:16 +01:00
|
|
|
|
:paramref:`open_period`.
|
2020-09-27 12:59:48 +02:00
|
|
|
|
For timezone naive :obj:`datetime.datetime` objects, the default timezone of the
|
2022-06-27 18:58:51 +02:00
|
|
|
|
bot will be used, which is UTC unless :attr:`telegram.ext.Defaults.tzinfo` is
|
|
|
|
|
used.
|
Documentation Improvements (#2008)
* Minor doc updates, following official API docs
* Fix spelling in Defaults docstrings
* Clarify Changelog of v12.7 about aware dates
* Fix typo in CHANGES.rst (#2024)
* Fix PicklePersistence.flush() with only bot_data (#2017)
* Update pylint in pre-commit to fix CI (#2018)
* Add Filters.via_bot (#2009)
* feat: via_bot filter
also fixing a small mistake in the empty parameter of the user filter and improve docs slightly
* fix: forgot to set via_bot to None
* fix: redoing subclassing to copy paste solution
* Cosmetic changes
Co-authored-by: Hinrich Mahler <hinrich.mahler@freenet.de>
* Update CHANGES.rst
Fixed Typo
Co-authored-by: Bibo-Joshi <hinrich.mahler@freenet.de>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
* Update downloads badge, add info on IRC Channel to Getting Help section
* Remove RegexHandler from ConversationHandlers Docs (#1973)
Replaced RegexHandler with MessageHandler, since the former is deprecated
* Fix Filters.via_bot docstrings
* Add notes on Markdown v1 being legacy mode
* Fixed typo in the Regex doc.. (#2036)
* Typo: Spelling
* Minor cleanup from #2043
* Document CommandHandler ignoring channel posts
* Doc fixes for a few telegram.ext classes
* Doc fixes for most `telegram` classes.
* pep-8
forgot the hard wrap is at 99 chars, not 100!
fixed a few spelling mistakes too.
* Address review and made rendering of booleans consistent
True, False, None are now rendered with ``bool`` wherever they weren't in telegram and telegram.ext classes.
* Few doc fixes for inline* classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram/files classes
As usual, docs were cross-checked with official tg api docs.
* Doc fixes for telegram.Game
Mostly just added hyperlinks. And fixed message length doc.
As usual, docs were cross-checked with official tg api docs.
* Very minor doc fix for passportfile.py and passportelementerrors.py
Didn't bother changing too much since this seems to be a custom implementation.
* Doc fixes for telegram.payments
As usual, cross-checked with official bot api docs.
* Address review 2
Few tiny other fixes too.
* Changed from ``True/False/None`` to :obj:`True/False/None` project-wide.
Few tiny other doc fixes too.
Co-authored-by: Robert Geislinger <mitachundkrach@gmail.com>
Co-authored-by: Poolitzer <25934244+Poolitzer@users.noreply.github.com>
Co-authored-by: GauthamramRavichandran <30320759+GauthamramRavichandran@users.noreply.github.com>
Co-authored-by: Mahesh19 <maheshvagicherla99438@gmail.com>
Co-authored-by: hoppingturtles <ilovebhagwan@gmail.com>
2020-08-24 19:35:57 +02:00
|
|
|
|
is_closed (:obj:`bool`, optional): Pass :obj:`True`, if the poll needs to be
|
|
|
|
|
immediately closed. This can be useful for poll preview.
|
2019-08-23 21:20:41 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2019-08-23 21:20:41 +02:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2021-02-19 19:07:48 +01:00
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"question": question,
|
|
|
|
|
"options": options,
|
|
|
|
|
"explanation_parse_mode": explanation_parse_mode,
|
|
|
|
|
}
|
2020-05-02 11:56:52 +02:00
|
|
|
|
|
2020-03-29 09:52:30 +02:00
|
|
|
|
if not is_anonymous:
|
|
|
|
|
data["is_anonymous"] = is_anonymous
|
|
|
|
|
if type:
|
|
|
|
|
data["type"] = type
|
|
|
|
|
if allows_multiple_answers:
|
|
|
|
|
data["allows_multiple_answers"] = allows_multiple_answers
|
|
|
|
|
if correct_option_id is not None:
|
|
|
|
|
data["correct_option_id"] = correct_option_id
|
|
|
|
|
if is_closed:
|
|
|
|
|
data["is_closed"] = is_closed
|
2020-05-02 11:56:52 +02:00
|
|
|
|
if explanation:
|
|
|
|
|
data["explanation"] = explanation
|
2020-11-29 16:20:46 +01:00
|
|
|
|
if explanation_entities:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["explanation_entities"] = explanation_entities
|
2020-05-02 11:56:52 +02:00
|
|
|
|
if open_period:
|
|
|
|
|
data["open_period"] = open_period
|
|
|
|
|
if close_date:
|
|
|
|
|
data["close_date"] = close_date
|
2020-03-29 09:52:30 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendPoll",
|
|
|
|
|
data,
|
2019-08-23 21:20:41 +02:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2019-08-23 21:20:41 +02:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def stop_poll(
|
2019-08-23 21:20:41 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int,
|
2020-11-29 16:32:38 +01:00
|
|
|
|
reply_markup: InlineKeyboardMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Poll:
|
2019-08-23 21:20:41 +02:00
|
|
|
|
"""
|
|
|
|
|
Use this method to stop a poll which was sent by the bot.
|
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.stop_poll`
|
|
|
|
|
|
2019-08-23 21:20:41 +02:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2019-08-23 21:20:41 +02:00
|
|
|
|
message_id (:obj:`int`): Identifier of the original message with the poll.
|
2022-01-03 09:09:03 +01:00
|
|
|
|
reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): An object for a new
|
|
|
|
|
message inline keyboard.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-10-01 16:51:03 +02:00
|
|
|
|
:class:`telegram.Poll`: On success, the stopped Poll is returned.
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {"chat_id": chat_id, "message_id": message_id}
|
|
|
|
|
|
|
|
|
|
if reply_markup:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["reply_markup"] = reply_markup
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"stopPoll",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return Poll.de_json(result, self) # type: ignore[return-value, arg-type]
|
2019-08-23 21:20:41 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def send_dice(
|
2020-04-10 19:22:45 +02:00
|
|
|
|
self,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
chat_id: Union[int, str],
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: ODVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
emoji: str = None,
|
|
|
|
|
allow_sending_without_reply: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> Message:
|
2020-04-10 19:22:45 +02:00
|
|
|
|
"""
|
2021-03-14 16:41:35 +01:00
|
|
|
|
Use this method to send an animated emoji that will display a random value.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.reply_dice`, :attr:`telegram.Chat.send_dice`,
|
|
|
|
|
:attr:`telegram.User.send_dice`
|
|
|
|
|
|
2020-04-10 19:22:45 +02:00
|
|
|
|
Args:
|
2021-03-14 16:41:35 +01:00
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2022-08-27 11:46:51 +02:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user
|
2020-05-02 11:56:52 +02:00
|
|
|
|
emoji (:obj:`str`, optional): Emoji on which the dice throw animation is based.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
Currently, must be one of :class:`telegram.constants.DiceEmoji`. Dice can have
|
|
|
|
|
values 1-6 for :tg-const:`telegram.constants.DiceEmoji.DICE`,
|
|
|
|
|
:tg-const:`telegram.constants.DiceEmoji.DARTS` and
|
|
|
|
|
:tg-const:`telegram.constants.DiceEmoji.BOWLING`, values 1-5 for
|
|
|
|
|
:tg-const:`telegram.constants.DiceEmoji.BASKETBALL` and
|
|
|
|
|
:tg-const:`telegram.constants.DiceEmoji.FOOTBALL`, and values 1-64
|
|
|
|
|
for :tg-const:`telegram.constants.DiceEmoji.SLOT_MACHINE`. Defaults to
|
|
|
|
|
:tg-const:`telegram.constants.DiceEmoji.DICE`.
|
2021-03-14 16:41:35 +01:00
|
|
|
|
|
|
|
|
|
.. versionchanged:: 13.4
|
2022-08-27 11:46:51 +02:00
|
|
|
|
Added the :tg-const:`telegram.constants.DiceEmoji.BOWLING` emoji..
|
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.Message`: On success, the sent Message is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2022-01-03 08:13:33 +01:00
|
|
|
|
data: JSONDict = {"chat_id": chat_id}
|
2020-05-02 11:56:52 +02:00
|
|
|
|
if emoji:
|
|
|
|
|
data["emoji"] = emoji
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._send_message( # type: ignore[return-value]
|
2020-10-06 19:28:40 +02:00
|
|
|
|
"sendDice",
|
|
|
|
|
data,
|
2020-04-10 19:22:45 +02:00
|
|
|
|
reply_to_message_id=reply_to_message_id,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
disable_notification=disable_notification,
|
2020-04-10 19:22:45 +02:00
|
|
|
|
reply_markup=reply_markup,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
allow_sending_without_reply=allow_sending_without_reply,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content=protect_content,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
@_log
|
|
|
|
|
async def get_my_default_administrator_rights(
|
|
|
|
|
self,
|
|
|
|
|
for_channels: bool = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-05-03 18:21:50 +02:00
|
|
|
|
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,
|
|
|
|
|
) -> ChatAdministratorRights:
|
|
|
|
|
"""Use this method to get the current default administrator rights of the bot.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`set_my_default_administrator_rights`
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
for_channels (:obj:`bool`, optional): Pass :obj:`True` to get default administrator
|
|
|
|
|
rights of the bot in channels. Otherwise, default administrator rights of the bot
|
|
|
|
|
for groups and supergroups will be returned.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-05-03 18:21:50 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.ChatAdministratorRights`: On success.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {}
|
|
|
|
|
|
|
|
|
|
if for_channels is not None:
|
|
|
|
|
data["for_channels"] = for_channels
|
|
|
|
|
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"getMyDefaultAdministratorRights",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return ChatAdministratorRights.de_json(result, self) # type: ignore[return-value,arg-type]
|
|
|
|
|
|
|
|
|
|
@_log
|
|
|
|
|
async def set_my_default_administrator_rights(
|
|
|
|
|
self,
|
|
|
|
|
rights: ChatAdministratorRights = None,
|
|
|
|
|
for_channels: bool = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-05-03 18:21:50 +02:00
|
|
|
|
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:
|
|
|
|
|
"""Use this method to change the default administrator rights requested by the bot when
|
|
|
|
|
it's added as an administrator to groups or channels. These rights will be suggested to
|
|
|
|
|
users, but they are are free to modify the list before adding the bot.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`get_my_default_administrator_rights`
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
rights (:obj:`telegram.ChatAdministratorRights`, optional): A
|
|
|
|
|
:obj:`telegram.ChatAdministratorRights` object describing new default administrator
|
|
|
|
|
rights. If not specified, the default administrator rights will be cleared.
|
|
|
|
|
for_channels (:obj:`bool`, optional): Pass :obj:`True` to change the default
|
|
|
|
|
administrator rights of the bot in channels. Otherwise, the default administrator
|
|
|
|
|
rights of the bot for groups and supergroups will be changed.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-05-03 18:21:50 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: Returns :obj:`True` on success.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:obj:`telegram.error.TelegramError`
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {}
|
|
|
|
|
|
|
|
|
|
if rights is not None:
|
|
|
|
|
data["rights"] = rights
|
|
|
|
|
|
|
|
|
|
if for_channels is not None:
|
|
|
|
|
data["for_channels"] = for_channels
|
|
|
|
|
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"setMyDefaultAdministratorRights",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def get_my_commands(
|
2021-07-01 17:45:19 +02:00
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
scope: BotCommandScope = None,
|
|
|
|
|
language_code: str = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2021-07-01 17:45:19 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
) -> List[BotCommand]:
|
2020-04-10 19:22:45 +02:00
|
|
|
|
"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
Use this method to get the current list of the bot's commands for the given scope and user
|
|
|
|
|
language.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2022-05-18 17:18:44 +02:00
|
|
|
|
scope (:class:`telegram.BotCommandScope`, optional): An object,
|
|
|
|
|
describing scope of users. Defaults to :class:`telegram.BotCommandScopeDefault`.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
|
|
|
|
language_code (:obj:`str`, optional): A two-letter ISO 639-1 language code or an empty
|
|
|
|
|
string.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-07-01 17:45:19 +02:00
|
|
|
|
List[:class:`telegram.BotCommand`]: On success, the commands set for the bot. An empty
|
|
|
|
|
list is returned if commands are not set.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
data: JSONDict = {}
|
|
|
|
|
|
|
|
|
|
if scope:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["scope"] = scope
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-07-01 17:45:19 +02:00
|
|
|
|
if language_code:
|
|
|
|
|
data["language_code"] = language_code
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"getMyCommands",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-07-01 17:45:19 +02:00
|
|
|
|
|
|
|
|
|
return BotCommand.de_list(result, self) # type: ignore[return-value,arg-type]
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def set_my_commands(
|
2020-10-06 19:28:40 +02:00
|
|
|
|
self,
|
|
|
|
|
commands: List[Union[BotCommand, Tuple[str, str]]],
|
2022-05-18 17:18:44 +02:00
|
|
|
|
scope: BotCommandScope = None,
|
|
|
|
|
language_code: str = None,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-10-06 19:28:40 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
|
|
|
|
) -> bool:
|
2020-04-10 19:22:45 +02:00
|
|
|
|
"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
Use this method to change the list of the bot's commands. See the
|
|
|
|
|
`Telegram docs <https://core.telegram.org/bots#commands>`_ for more details about bot
|
|
|
|
|
commands.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Args:
|
2022-01-03 09:09:03 +01:00
|
|
|
|
commands (List[:class:`BotCommand` | (:obj:`str`, :obj:`str`)]): A list
|
2020-04-10 19:22:45 +02:00
|
|
|
|
of bot commands to be set as the list of the bot's commands. At most 100 commands
|
|
|
|
|
can be specified.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
scope (:class:`telegram.BotCommandScope`, optional): An object,
|
|
|
|
|
describing scope of users for which the commands are relevant. Defaults to
|
|
|
|
|
:class:`telegram.BotCommandScopeDefault`.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
|
|
|
|
language_code (:obj:`str`, optional): A two-letter ISO 639-1 language code. If empty,
|
|
|
|
|
commands will be applied to all users from the given scope, for whose language
|
|
|
|
|
there are no dedicated commands.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-06-30 22:07:38 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Returns:
|
2021-07-01 17:45:19 +02:00
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
cmds = [c if isinstance(c, BotCommand) else BotCommand(c[0], c[1]) for c in commands]
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data: JSONDict = {"commands": cmds}
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-07-01 17:45:19 +02:00
|
|
|
|
if scope:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["scope"] = scope
|
2021-07-01 17:45:19 +02:00
|
|
|
|
|
|
|
|
|
if language_code:
|
|
|
|
|
data["language_code"] = language_code
|
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"setMyCommands",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-07-01 17:45:19 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-07-04 19:33:45 +02:00
|
|
|
|
async def delete_my_commands(
|
2021-07-01 17:45:19 +02:00
|
|
|
|
self,
|
|
|
|
|
scope: BotCommandScope = None,
|
|
|
|
|
language_code: str = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2021-07-01 17:45:19 +02:00
|
|
|
|
) -> bool:
|
|
|
|
|
"""
|
|
|
|
|
Use this method to delete the list of the bot's commands for the given scope and user
|
|
|
|
|
language. After deletion,
|
|
|
|
|
`higher level commands <https://core.telegram.org/bots/api#determining-list-of-commands>`_
|
|
|
|
|
will be shown to affected users.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.7
|
|
|
|
|
|
|
|
|
|
Args:
|
2022-01-03 09:09:03 +01:00
|
|
|
|
scope (:class:`telegram.BotCommandScope`, optional): An object,
|
2021-07-01 17:45:19 +02:00
|
|
|
|
describing scope of users for which the commands are relevant. Defaults to
|
|
|
|
|
:class:`telegram.BotCommandScopeDefault`.
|
|
|
|
|
language_code (:obj:`str`, optional): A two-letter ISO 639-1 language code. If empty,
|
|
|
|
|
commands will be applied to all users from the given scope, for whose language
|
|
|
|
|
there are no dedicated commands.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2021-07-01 17:45:19 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
|
|
|
|
|
|
|
|
|
Raises:
|
|
|
|
|
:class:`telegram.error.TelegramError`
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {}
|
|
|
|
|
|
|
|
|
|
if scope:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["scope"] = scope
|
2021-07-01 17:45:19 +02:00
|
|
|
|
|
|
|
|
|
if language_code:
|
|
|
|
|
data["language_code"] = language_code
|
|
|
|
|
|
2022-07-04 19:33:45 +02:00
|
|
|
|
result = await self._post(
|
2022-04-24 12:38:09 +02:00
|
|
|
|
"deleteMyCommands",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-07-01 17:45:19 +02:00
|
|
|
|
|
2020-10-06 19:28:40 +02:00
|
|
|
|
return result # type: ignore[return-value]
|
2020-04-10 19:22:45 +02:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def log_out(
|
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2022-07-10 15:37:12 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
) -> bool:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
"""
|
|
|
|
|
Use this method to log out from the cloud Bot API server before launching the bot locally.
|
|
|
|
|
You *must* log out the bot before running it locally, otherwise there is no guarantee that
|
|
|
|
|
the bot will receive updates. After a successful call, you can immediately log in on a
|
|
|
|
|
local server, but will not be able to log in back to the cloud Bot API server for 10
|
|
|
|
|
minutes.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-07-10 15:37:12 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Returns:
|
|
|
|
|
:obj:`True`: On success
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"logOut",
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2022-07-10 15:37:12 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
)
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def close(
|
|
|
|
|
self,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
) -> bool:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
"""
|
|
|
|
|
Use this method to close the bot instance before moving it from one local server to
|
|
|
|
|
another. You need to delete the webhook before calling this method to ensure that the bot
|
|
|
|
|
isn't launched again after server restart. The method will return error 429 in the first
|
|
|
|
|
10 minutes after the bot is launched.
|
|
|
|
|
|
2022-05-18 17:18:44 +02:00
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
2021-02-19 19:07:48 +01:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Returns:
|
|
|
|
|
:obj:`True`: On success
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
|
|
|
|
"""
|
2022-04-24 12:38:09 +02:00
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"close",
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
api_kwargs=api_kwargs,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
)
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2021-10-03 20:06:07 +02:00
|
|
|
|
@_log
|
2022-04-24 12:38:09 +02:00
|
|
|
|
async def copy_message(
|
2020-11-29 16:20:46 +01:00
|
|
|
|
self,
|
|
|
|
|
chat_id: Union[int, str],
|
|
|
|
|
from_chat_id: Union[str, int],
|
2021-03-14 16:42:03 +01:00
|
|
|
|
message_id: int,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
caption: str = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
parse_mode: ODVInput[str] = DEFAULT_NONE,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
caption_entities: Union[Tuple["MessageEntity", ...], List["MessageEntity"]] = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
disable_notification: DVInput[bool] = DEFAULT_NONE,
|
2021-03-14 16:42:03 +01:00
|
|
|
|
reply_to_message_id: int = None,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
allow_sending_without_reply: DVInput[bool] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
reply_markup: ReplyMarkup = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
protect_content: ODVInput[bool] = DEFAULT_NONE,
|
|
|
|
|
*,
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
connect_timeout: ODVInput[float] = DEFAULT_NONE,
|
|
|
|
|
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
api_kwargs: JSONDict = None,
|
2020-12-30 13:41:07 +01:00
|
|
|
|
) -> MessageId:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
"""
|
2021-04-30 10:09:21 +02:00
|
|
|
|
Use this method to copy messages of any kind. Service messages and invoice messages can't
|
|
|
|
|
be copied. The method is analogous to the method :meth:`forward_message`, but the copied
|
|
|
|
|
message doesn't have a link to the original message.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2022-08-27 11:46:51 +02:00
|
|
|
|
.. seealso:: :attr:`telegram.Message.copy`, :attr:`telegram.Chat.send_copy`,
|
|
|
|
|
:attr:`telegram.Chat.copy_message`, :attr:`telegram.User.send_copy`,
|
|
|
|
|
:attr:`telegram.User.copy_message`
|
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username
|
2021-04-30 10:47:41 +02:00
|
|
|
|
of the target channel (in the format ``@channelusername``).
|
2020-11-29 16:20:46 +01:00
|
|
|
|
from_chat_id (:obj:`int` | :obj:`str`): Unique identifier for the chat where the
|
2021-04-30 10:47:41 +02:00
|
|
|
|
original message was sent (or channel username in the format ``@channelusername``).
|
2020-11-29 16:20:46 +01:00
|
|
|
|
message_id (:obj:`int`): Message identifier in the chat specified in from_chat_id.
|
2021-10-19 18:28:19 +02:00
|
|
|
|
caption (:obj:`str`, optional): New caption for media,
|
|
|
|
|
0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
|
2020-11-29 16:20:46 +01:00
|
|
|
|
entities parsing. If not specified, the original caption is kept.
|
|
|
|
|
parse_mode (:obj:`str`, optional): Mode for parsing entities in the new caption. See
|
2021-10-19 18:28:19 +02:00
|
|
|
|
the constants in :class:`telegram.constants.ParseMode` for the available modes.
|
2021-09-22 16:49:10 +02:00
|
|
|
|
caption_entities (List[:class:`telegram.MessageEntity`], optional): List of special
|
|
|
|
|
entities that appear in the new caption, which can be specified instead
|
|
|
|
|
of parse_mode.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
disable_notification (:obj:`bool`, optional): Sends the message silently. Users will
|
|
|
|
|
receive a notification with no sound.
|
2022-01-03 08:13:33 +01:00
|
|
|
|
protect_content (:obj:`bool`, optional): Protects the contents of the sent message from
|
|
|
|
|
forwarding and saving.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 13.10
|
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the
|
|
|
|
|
original message.
|
|
|
|
|
allow_sending_without_reply (:obj:`bool`, optional): Pass :obj:`True`, if the message
|
|
|
|
|
should be sent even if the specified replied-to message is not found.
|
2022-01-19 18:00:21 +01:00
|
|
|
|
reply_markup (:class:`InlineKeyboardMarkup` | :class:`ReplyKeyboardMarkup` | \
|
|
|
|
|
:class:`ReplyKeyboardRemove` | :class:`ForceReply`, optional):
|
|
|
|
|
Additional interface options. An object for an inline keyboard, custom reply
|
|
|
|
|
keyboard, instructions to remove reply keyboard or to force a reply from the user.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2022-05-06 17:15:23 +02:00
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
2022-04-24 12:38:09 +02:00
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
2020-11-29 16:20:46 +01:00
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.MessageId`: On success
|
|
|
|
|
|
|
|
|
|
Raises:
|
2021-02-01 17:59:39 +01:00
|
|
|
|
:class:`telegram.error.TelegramError`
|
2022-08-27 11:46:51 +02:00
|
|
|
|
|
2020-11-29 16:20:46 +01:00
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"chat_id": chat_id,
|
|
|
|
|
"from_chat_id": from_chat_id,
|
|
|
|
|
"message_id": message_id,
|
2021-02-19 19:07:48 +01:00
|
|
|
|
"parse_mode": parse_mode,
|
|
|
|
|
"disable_notification": disable_notification,
|
|
|
|
|
"allow_sending_without_reply": allow_sending_without_reply,
|
2022-01-07 17:02:23 +01:00
|
|
|
|
"protect_content": protect_content,
|
2020-11-29 16:20:46 +01:00
|
|
|
|
}
|
2021-09-09 07:50:04 +02:00
|
|
|
|
if caption is not None:
|
2020-11-29 16:20:46 +01:00
|
|
|
|
data["caption"] = caption
|
|
|
|
|
if caption_entities:
|
|
|
|
|
data["caption_entities"] = caption_entities
|
|
|
|
|
if reply_to_message_id:
|
|
|
|
|
data["reply_to_message_id"] = reply_to_message_id
|
|
|
|
|
if reply_markup:
|
2022-04-24 12:38:09 +02:00
|
|
|
|
data["reply_markup"] = reply_markup
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2022-04-24 12:38:09 +02:00
|
|
|
|
result = await self._post(
|
|
|
|
|
"copyMessage",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
2021-03-14 16:41:35 +01:00
|
|
|
|
return MessageId.de_json(result, self) # type: ignore[return-value, arg-type]
|
2020-11-29 16:20:46 +01:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
@_log
|
|
|
|
|
async def set_chat_menu_button(
|
|
|
|
|
self,
|
|
|
|
|
chat_id: int = None,
|
|
|
|
|
menu_button: MenuButton = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-05-03 18:21:50 +02:00
|
|
|
|
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:
|
|
|
|
|
"""Use this method to change the bot's menu button in a private chat, or the default menu
|
|
|
|
|
button.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`get_chat_menu_button`, :meth:`telegram.Chat.set_menu_button`,
|
2022-08-27 11:46:51 +02:00
|
|
|
|
:meth:`telegram.Chat.get_menu_button`, meth:`telegram.User.set_menu_button`,
|
|
|
|
|
:meth:`telegram.User.get_menu_button`
|
2022-05-03 18:21:50 +02:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int`, optional): Unique identifier for the target private chat. If not
|
|
|
|
|
specified, default bot's menu button will be changed
|
|
|
|
|
menu_button (:class:`telegram.MenuButton`, optional): An object for the new bot's menu
|
|
|
|
|
button. Defaults to :class:`telegram.MenuButtonDefault`.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-05-03 18:21:50 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:obj:`bool`: On success, :obj:`True` is returned.
|
2022-08-27 11:46:51 +02:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {}
|
|
|
|
|
if chat_id is not None:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
if menu_button is not None:
|
|
|
|
|
data["menu_button"] = menu_button
|
|
|
|
|
|
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"setChatMenuButton",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@_log
|
|
|
|
|
async def get_chat_menu_button(
|
|
|
|
|
self,
|
|
|
|
|
chat_id: int = None,
|
2022-05-18 17:18:44 +02:00
|
|
|
|
*,
|
2022-05-03 18:21:50 +02:00
|
|
|
|
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,
|
|
|
|
|
) -> MenuButton:
|
|
|
|
|
"""Use this method to get the current value of the bot's menu button in a private chat, or
|
|
|
|
|
the default menu button.
|
|
|
|
|
|
|
|
|
|
.. seealso:: :meth:`set_chat_menu_button`, :meth:`telegram.Chat.get_menu_button`,
|
2022-08-27 11:46:51 +02:00
|
|
|
|
:meth:`telegram.Chat.set_menu_button`, :meth:`telegram.User.get_menu_button`,
|
|
|
|
|
:meth:`telegram.User.set_menu_button`
|
2022-05-03 18:21:50 +02:00
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
chat_id (:obj:`int`, optional): Unique identifier for the target private chat. If not
|
|
|
|
|
specified, default bot's menu button will be returned.
|
2022-05-18 17:18:44 +02:00
|
|
|
|
|
|
|
|
|
Keyword Args:
|
2022-05-03 18:21:50 +02:00
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`telegram.MenuButton`: On success, the current menu button is returned.
|
2022-08-27 11:46:51 +02:00
|
|
|
|
|
2022-05-03 18:21:50 +02:00
|
|
|
|
"""
|
|
|
|
|
data = {}
|
|
|
|
|
if chat_id is not None:
|
|
|
|
|
data["chat_id"] = chat_id
|
|
|
|
|
|
|
|
|
|
result = await self._post(
|
|
|
|
|
"getChatMenuButton",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
return MenuButton.de_json(result, bot=self) # type: ignore[return-value, arg-type]
|
|
|
|
|
|
2022-06-27 18:54:11 +02:00
|
|
|
|
@_log
|
|
|
|
|
async def create_invoice_link(
|
|
|
|
|
self,
|
|
|
|
|
title: str,
|
|
|
|
|
description: str,
|
|
|
|
|
payload: str,
|
|
|
|
|
provider_token: str,
|
|
|
|
|
currency: str,
|
|
|
|
|
prices: List["LabeledPrice"],
|
|
|
|
|
max_tip_amount: int = None,
|
|
|
|
|
suggested_tip_amounts: List[int] = None,
|
|
|
|
|
provider_data: Union[str, object] = None,
|
|
|
|
|
photo_url: str = None,
|
|
|
|
|
photo_size: int = None,
|
|
|
|
|
photo_width: int = None,
|
|
|
|
|
photo_height: int = None,
|
|
|
|
|
need_name: bool = None,
|
|
|
|
|
need_phone_number: bool = None,
|
|
|
|
|
need_email: bool = None,
|
|
|
|
|
need_shipping_address: bool = None,
|
|
|
|
|
send_phone_number_to_provider: bool = None,
|
|
|
|
|
send_email_to_provider: bool = None,
|
|
|
|
|
is_flexible: bool = None,
|
|
|
|
|
*,
|
|
|
|
|
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,
|
|
|
|
|
) -> str:
|
|
|
|
|
"""Use this method to create a link for an invoice.
|
|
|
|
|
|
|
|
|
|
.. versionadded:: 20.0
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
title (:obj:`str`): Product name. :tg-const:`telegram.Invoice.MIN_TITLE_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_TITLE_LENGTH` characters.
|
|
|
|
|
description (:obj:`str`): Product description.
|
|
|
|
|
:tg-const:`telegram.Invoice.MIN_DESCRIPTION_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_DESCRIPTION_LENGTH` characters.
|
|
|
|
|
payload (:obj:`str`): Bot-defined invoice payload.
|
|
|
|
|
:tg-const:`telegram.Invoice.MIN_PAYLOAD_LENGTH`-
|
|
|
|
|
:tg-const:`telegram.Invoice.MAX_PAYLOAD_LENGTH` bytes. This will not be
|
|
|
|
|
displayed to the user, use for your internal processes.
|
|
|
|
|
provider_token (:obj:`str`): Payments provider token, obtained via
|
|
|
|
|
`@BotFather <https://t.me/BotFather>`_.
|
|
|
|
|
currency (:obj:`str`): Three-letter ISO 4217 currency code, see `more on currencies
|
|
|
|
|
<https://core.telegram.org/bots/payments#supported-currencies>`_.
|
|
|
|
|
prices (List[:class:`telegram.LabeledPrice`)]: Price breakdown, a list
|
|
|
|
|
of components (e.g. product price, tax, discount, delivery cost, delivery tax,
|
|
|
|
|
bonus, etc.).
|
|
|
|
|
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 pass ``max_tip_amount = 145``. See the exp parameter in
|
|
|
|
|
`currencies.json <https://core.telegram.org/bots/payments/currencies.json>`_, it
|
|
|
|
|
shows the number of digits past the decimal point for each currency (2 for the
|
|
|
|
|
majority of currencies). Defaults to ``0``.
|
|
|
|
|
suggested_tip_amounts (List[:obj:`int`], optional): An array of
|
|
|
|
|
suggested amounts of tips 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
|
|
|
|
|
:paramref:`max_tip_amount`.
|
|
|
|
|
provider_data (:obj:`str` | :obj:`object`, optional): Data about the
|
|
|
|
|
invoice, which will be shared with the payment provider. A detailed description of
|
|
|
|
|
required fields should be provided by the payment provider. When an object is
|
|
|
|
|
passed, it will be encoded as JSON.
|
|
|
|
|
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.
|
|
|
|
|
photo_size (:obj:`int`, optional): Photo size in bytes.
|
|
|
|
|
photo_width (:obj:`int`, optional): Photo width.
|
|
|
|
|
photo_height (:obj:`int`, optional): Photo height.
|
|
|
|
|
need_name (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's full
|
|
|
|
|
name to complete the order.
|
|
|
|
|
need_phone_number (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's
|
|
|
|
|
phone number to complete the order.
|
|
|
|
|
need_email (:obj:`bool`, optional): Pass :obj:`True`, if you require the user's email
|
|
|
|
|
address to complete the order.
|
|
|
|
|
need_shipping_address (:obj:`bool`, optional): Pass :obj:`True`, if you require the
|
|
|
|
|
user's shipping address to complete the order.
|
|
|
|
|
send_phone_number_to_provider (:obj:`bool`, optional): Pass :obj:`True`, if user's
|
|
|
|
|
phone number should be sent to provider.
|
|
|
|
|
send_email_to_provider (:obj:`bool`, optional): Pass :obj:`True`, if user's email
|
|
|
|
|
address should be sent to provider.
|
|
|
|
|
is_flexible (:obj:`bool`, optional): Pass :obj:`True`, if the final price depends on
|
|
|
|
|
the shipping method.
|
|
|
|
|
|
|
|
|
|
Keyword Args:
|
|
|
|
|
read_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.read_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
write_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.write_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
connect_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.connect_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
pool_timeout (:obj:`float` | :obj:`None`, optional): Value to pass to
|
|
|
|
|
:paramref:`telegram.request.BaseRequest.post.pool_timeout`. Defaults to
|
|
|
|
|
:attr:`~telegram.request.BaseRequest.DEFAULT_NONE`.
|
|
|
|
|
api_kwargs (:obj:`dict`, optional): Arbitrary keyword arguments to be passed to the
|
|
|
|
|
Telegram API.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
:class:`str`: On success, the created invoice link is returned.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
data: JSONDict = {
|
|
|
|
|
"title": title,
|
|
|
|
|
"description": description,
|
|
|
|
|
"payload": payload,
|
|
|
|
|
"provider_token": provider_token,
|
|
|
|
|
"currency": currency,
|
|
|
|
|
"prices": prices,
|
|
|
|
|
}
|
|
|
|
|
if max_tip_amount is not None:
|
|
|
|
|
data["max_tip_amount"] = max_tip_amount
|
|
|
|
|
if suggested_tip_amounts is not None:
|
|
|
|
|
data["suggested_tip_amounts"] = suggested_tip_amounts
|
|
|
|
|
if provider_data is not None:
|
|
|
|
|
data["provider_data"] = provider_data
|
|
|
|
|
if photo_url is not None:
|
|
|
|
|
data["photo_url"] = photo_url
|
|
|
|
|
if photo_size is not None:
|
|
|
|
|
data["photo_size"] = photo_size
|
|
|
|
|
if photo_width is not None:
|
|
|
|
|
data["photo_width"] = photo_width
|
|
|
|
|
if photo_height is not None:
|
|
|
|
|
data["photo_height"] = photo_height
|
|
|
|
|
if need_name is not None:
|
|
|
|
|
data["need_name"] = need_name
|
|
|
|
|
if need_phone_number is not None:
|
|
|
|
|
data["need_phone_number"] = need_phone_number
|
|
|
|
|
if need_email is not None:
|
|
|
|
|
data["need_email"] = need_email
|
|
|
|
|
if need_shipping_address is not None:
|
|
|
|
|
data["need_shipping_address"] = need_shipping_address
|
|
|
|
|
if is_flexible is not None:
|
|
|
|
|
data["is_flexible"] = is_flexible
|
|
|
|
|
if send_phone_number_to_provider is not None:
|
|
|
|
|
data["send_phone_number_to_provider"] = send_phone_number_to_provider
|
|
|
|
|
if send_email_to_provider is not None:
|
|
|
|
|
data["send_email_to_provider"] = send_email_to_provider
|
|
|
|
|
|
|
|
|
|
return await self._post( # type: ignore[return-value]
|
|
|
|
|
"createInvoiceLink",
|
|
|
|
|
data,
|
|
|
|
|
read_timeout=read_timeout,
|
|
|
|
|
write_timeout=write_timeout,
|
|
|
|
|
connect_timeout=connect_timeout,
|
|
|
|
|
pool_timeout=pool_timeout,
|
|
|
|
|
api_kwargs=api_kwargs,
|
|
|
|
|
)
|
|
|
|
|
|
2022-10-19 10:31:55 +02:00
|
|
|
|
def to_dict(self, recursive: bool = True) -> JSONDict: # skipcq: PYL-W0613
|
2021-05-27 09:38:17 +02:00
|
|
|
|
"""See :meth:`telegram.TelegramObject.to_dict`."""
|
2020-10-06 19:28:40 +02:00
|
|
|
|
data: JSONDict = {"id": self.id, "username": self.username, "first_name": self.first_name}
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
2015-07-20 12:53:58 +02:00
|
|
|
|
if self.last_name:
|
|
|
|
|
data["last_name"] = self.last_name
|
2016-04-21 13:15:38 +02:00
|
|
|
|
|
2015-07-20 12:53:58 +02:00
|
|
|
|
return data
|
2015-08-11 17:41:26 +02:00
|
|
|
|
|
2021-01-17 09:23:36 +01:00
|
|
|
|
def __eq__(self, other: object) -> bool:
|
|
|
|
|
return self.bot == other
|
|
|
|
|
|
|
|
|
|
def __hash__(self) -> int:
|
|
|
|
|
return hash(self.bot)
|
|
|
|
|
|
2017-05-07 16:09:58 +02:00
|
|
|
|
# camelCase aliases
|
|
|
|
|
getMe = get_me
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_me`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendMessage = send_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_message`"""
|
2017-05-12 17:40:57 +02:00
|
|
|
|
deleteMessage = delete_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`delete_message`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
forwardMessage = forward_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`forward_message`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendPhoto = send_photo
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_photo`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendAudio = send_audio
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_audio`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendDocument = send_document
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_document`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendSticker = send_sticker
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_sticker`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendVideo = send_video
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_video`"""
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
sendAnimation = send_animation
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_animation`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendVoice = send_voice
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_voice`"""
|
2017-05-20 19:35:55 +02:00
|
|
|
|
sendVideoNote = send_video_note
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_video_note`"""
|
2017-12-08 22:38:59 +01:00
|
|
|
|
sendMediaGroup = send_media_group
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_media_group`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendLocation = send_location
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_location`"""
|
2017-10-14 20:03:02 +02:00
|
|
|
|
editMessageLiveLocation = edit_message_live_location
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`edit_message_live_location`"""
|
2017-10-14 20:03:02 +02:00
|
|
|
|
stopMessageLiveLocation = stop_message_live_location
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`stop_message_live_location`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendVenue = send_venue
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_venue`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendContact = send_contact
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_contact`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendGame = send_game
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_game`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
sendChatAction = send_chat_action
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_chat_action`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
answerInlineQuery = answer_inline_query
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`answer_inline_query`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getUserProfilePhotos = get_user_profile_photos
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_user_profile_photos`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getFile = get_file
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_file`"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
banChatMember = ban_chat_member
|
|
|
|
|
"""Alias for :meth:`ban_chat_member`"""
|
2021-12-11 15:21:56 +01:00
|
|
|
|
banChatSenderChat = ban_chat_sender_chat
|
|
|
|
|
"""Alias for :meth:`ban_chat_sender_chat`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
unbanChatMember = unban_chat_member
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`unban_chat_member`"""
|
2021-12-11 15:21:56 +01:00
|
|
|
|
unbanChatSenderChat = unban_chat_sender_chat
|
|
|
|
|
"""Alias for :meth:`unban_chat_sender_chat`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
answerCallbackQuery = answer_callback_query
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`answer_callback_query`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
editMessageText = edit_message_text
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`edit_message_text`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
editMessageCaption = edit_message_caption
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`edit_message_caption`"""
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
editMessageMedia = edit_message_media
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`edit_message_media`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
editMessageReplyMarkup = edit_message_reply_markup
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`edit_message_reply_markup`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getUpdates = get_updates
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_updates`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
setWebhook = set_webhook
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_webhook`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
deleteWebhook = delete_webhook
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`delete_webhook`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
leaveChat = leave_chat
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`leave_chat`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getChat = get_chat
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_chat`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getChatAdministrators = get_chat_administrators
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_chat_administrators`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getChatMember = get_chat_member
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_chat_member`"""
|
2017-10-14 20:03:02 +02:00
|
|
|
|
setChatStickerSet = set_chat_sticker_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_sticker_set`"""
|
2017-10-14 20:03:02 +02:00
|
|
|
|
deleteChatStickerSet = delete_chat_sticker_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`delete_chat_sticker_set`"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
getChatMemberCount = get_chat_member_count
|
|
|
|
|
"""Alias for :meth:`get_chat_member_count`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getWebhookInfo = get_webhook_info
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_webhook_info`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
setGameScore = set_game_score
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_game_score`"""
|
2017-05-07 16:09:58 +02:00
|
|
|
|
getGameHighScores = get_game_high_scores
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_game_high_scores`"""
|
2017-05-19 19:46:42 +02:00
|
|
|
|
sendInvoice = send_invoice
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_invoice`"""
|
2017-05-19 19:46:42 +02:00
|
|
|
|
answerShippingQuery = answer_shipping_query
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`answer_shipping_query`"""
|
2017-05-19 19:46:42 +02:00
|
|
|
|
answerPreCheckoutQuery = answer_pre_checkout_query
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`answer_pre_checkout_query`"""
|
2022-05-03 18:21:50 +02:00
|
|
|
|
answerWebAppQuery = answer_web_app_query
|
|
|
|
|
"""Alias for :meth:`answer_web_app_query`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
restrictChatMember = restrict_chat_member
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`restrict_chat_member`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
promoteChatMember = promote_chat_member
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`promote_chat_member`"""
|
2019-09-06 21:41:43 +02:00
|
|
|
|
setChatPermissions = set_chat_permissions
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_permissions`"""
|
2020-03-28 16:37:26 +01:00
|
|
|
|
setChatAdministratorCustomTitle = set_chat_administrator_custom_title
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_administrator_custom_title`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
exportChatInviteLink = export_chat_invite_link
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`export_chat_invite_link`"""
|
2021-03-14 16:41:35 +01:00
|
|
|
|
createChatInviteLink = create_chat_invite_link
|
2021-11-08 19:02:20 +01:00
|
|
|
|
"""Alias for :meth:`create_chat_invite_link`"""
|
2021-03-14 16:41:35 +01:00
|
|
|
|
editChatInviteLink = edit_chat_invite_link
|
2021-11-08 19:02:20 +01:00
|
|
|
|
"""Alias for :meth:`edit_chat_invite_link`"""
|
2021-03-14 16:41:35 +01:00
|
|
|
|
revokeChatInviteLink = revoke_chat_invite_link
|
2021-11-08 19:02:20 +01:00
|
|
|
|
"""Alias for :meth:`revoke_chat_invite_link`"""
|
|
|
|
|
approveChatJoinRequest = approve_chat_join_request
|
|
|
|
|
"""Alias for :meth:`approve_chat_join_request`"""
|
|
|
|
|
declineChatJoinRequest = decline_chat_join_request
|
|
|
|
|
"""Alias for :meth:`decline_chat_join_request`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
setChatPhoto = set_chat_photo
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_photo`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
deleteChatPhoto = delete_chat_photo
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`delete_chat_photo`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
setChatTitle = set_chat_title
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_title`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
setChatDescription = set_chat_description
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_chat_description`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
pinChatMessage = pin_chat_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`pin_chat_message`"""
|
2017-07-01 17:08:45 +02:00
|
|
|
|
unpinChatMessage = unpin_chat_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`unpin_chat_message`"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
unpinAllChatMessages = unpin_all_chat_messages
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`unpin_all_chat_messages`"""
|
2022-08-25 19:36:55 +02:00
|
|
|
|
getCustomEmojiStickers = get_custom_emoji_stickers
|
|
|
|
|
"""Alias for :meth:`get_custom_emoji_stickers`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
getStickerSet = get_sticker_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_sticker_set`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
uploadStickerFile = upload_sticker_file
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`upload_sticker_file`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
createNewStickerSet = create_new_sticker_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`create_new_sticker_set`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
addStickerToSet = add_sticker_to_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`add_sticker_to_set`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
setStickerPositionInSet = set_sticker_position_in_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_sticker_position_in_set`"""
|
2017-07-22 13:34:51 +02:00
|
|
|
|
deleteStickerFromSet = delete_sticker_from_set
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`delete_sticker_from_set`"""
|
2020-04-10 19:22:45 +02:00
|
|
|
|
setStickerSetThumb = set_sticker_set_thumb
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_sticker_set_thumb`"""
|
Bot API 4.0 (#1168)
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData is automagically decrypted when you specify your private key when creating Updater or Bot.
- PassportFiles is also automagically decrypted as you download/retrieve them.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency `cryptography`.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Co-authored-by: Jasmin Bom <jsmnbom@gmail.com>
Co-authored-by: code1mountain <32801117+code1mountain@users.noreply.github.com>
Co-authored-by: Eldinnie <pieter.schutz+github@gmail.com>
Co-authored-by: mathefreak1 <mathefreak@hi2.in>
2018-08-29 14:18:58 +02:00
|
|
|
|
setPassportDataErrors = set_passport_data_errors
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_passport_data_errors`"""
|
2019-08-23 21:20:41 +02:00
|
|
|
|
sendPoll = send_poll
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_poll`"""
|
2019-08-23 21:20:41 +02:00
|
|
|
|
stopPoll = stop_poll
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`stop_poll`"""
|
2020-04-10 19:22:45 +02:00
|
|
|
|
sendDice = send_dice
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`send_dice`"""
|
2020-04-10 19:22:45 +02:00
|
|
|
|
getMyCommands = get_my_commands
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`get_my_commands`"""
|
2020-04-10 19:22:45 +02:00
|
|
|
|
setMyCommands = set_my_commands
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`set_my_commands`"""
|
2021-07-01 17:45:19 +02:00
|
|
|
|
deleteMyCommands = delete_my_commands
|
|
|
|
|
"""Alias for :meth:`delete_my_commands`"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
logOut = log_out
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`log_out`"""
|
2020-11-29 16:20:46 +01:00
|
|
|
|
copyMessage = copy_message
|
2021-03-14 16:46:37 +01:00
|
|
|
|
"""Alias for :meth:`copy_message`"""
|
2022-05-03 18:21:50 +02:00
|
|
|
|
getChatMenuButton = get_chat_menu_button
|
|
|
|
|
"""Alias for :meth:`get_chat_menu_button`"""
|
|
|
|
|
setChatMenuButton = set_chat_menu_button
|
|
|
|
|
"""Alias for :meth:`set_chat_menu_button`"""
|
|
|
|
|
getMyDefaultAdministratorRights = get_my_default_administrator_rights
|
|
|
|
|
"""Alias for :meth:`get_my_default_administrator_rights`"""
|
|
|
|
|
setMyDefaultAdministratorRights = set_my_default_administrator_rights
|
|
|
|
|
"""Alias for :meth:`set_my_default_administrator_rights`"""
|
2022-06-27 18:54:11 +02:00
|
|
|
|
createInvoiceLink = create_invoice_link
|
|
|
|
|
"""Alias for :meth:`create_invoice_link`"""
|