From b0386c925091c6858547a20f9d557138c1eeaee6 Mon Sep 17 00:00:00 2001 From: latan Date: Tue, 23 May 2023 13:09:33 +0300 Subject: [PATCH 001/139] Add `auto_resolve_update_types` argument to `start_polling` method. --- aiogram/dispatcher/dispatcher.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 9c61a447..3f0ec2b4 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -451,6 +451,7 @@ class Dispatcher(Router): handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, allowed_updates: Optional[List[str]] = None, + auto_resolve_update_types: Optional[bool] = False, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -463,6 +464,7 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive + :param auto_resolve_update_types: automatically resolve used update types in handlers :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -497,6 +499,15 @@ class Dispatcher(Router): signal.SIGINT, self._signal_stop_polling, signal.SIGINT ) + if auto_resolve_update_types: + if allowed_updates: + loggers.dispatcher.warning( + "auto_resolve_update_types and allowed_updates " + "arguments are mutually exclusive, allowed_updates will be used instead" + ) + else: + allowed_updates = self.resolve_used_update_types() + workflow_data = { "dispatcher": self, "bots": bots, @@ -547,6 +558,7 @@ class Dispatcher(Router): handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, allowed_updates: Optional[List[str]] = None, + auto_resolve_update_types: Optional[bool] = False, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -559,6 +571,7 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive + :param auto_resolve_update_types: auto resolve update types from handlers :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -573,6 +586,7 @@ class Dispatcher(Router): handle_as_tasks=handle_as_tasks, backoff_config=backoff_config, allowed_updates=allowed_updates, + auto_resolve_update_types=auto_resolve_update_types, handle_signals=handle_signals, close_bot_session=close_bot_session, ) From e955d7cb3b85313114a49f3832e4336d3da2669b Mon Sep 17 00:00:00 2001 From: latan Date: Tue, 23 May 2023 13:24:29 +0300 Subject: [PATCH 002/139] add towncrier file for a feature --- CHANGES/1178.feature | 1 + 1 file changed, 1 insertion(+) create mode 100644 CHANGES/1178.feature diff --git a/CHANGES/1178.feature b/CHANGES/1178.feature new file mode 100644 index 00000000..2a600fd8 --- /dev/null +++ b/CHANGES/1178.feature @@ -0,0 +1 @@ +Add auto_resolve_update_types argument to start_polling method to collect the used update types automatically. From a5ffa37b696918afbfbbb7c18fcb08f0bccb564b Mon Sep 17 00:00:00 2001 From: latan Date: Thu, 1 Jun 2023 22:49:04 +0300 Subject: [PATCH 003/139] make resolving update types by default in dispatcher.py --- aiogram/dispatcher/dispatcher.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 3f0ec2b4..32129b80 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -451,7 +451,6 @@ class Dispatcher(Router): handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, allowed_updates: Optional[List[str]] = None, - auto_resolve_update_types: Optional[bool] = False, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -464,7 +463,6 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive - :param auto_resolve_update_types: automatically resolve used update types in handlers :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -499,14 +497,8 @@ class Dispatcher(Router): signal.SIGINT, self._signal_stop_polling, signal.SIGINT ) - if auto_resolve_update_types: - if allowed_updates: - loggers.dispatcher.warning( - "auto_resolve_update_types and allowed_updates " - "arguments are mutually exclusive, allowed_updates will be used instead" - ) - else: - allowed_updates = self.resolve_used_update_types() + if allowed_updates is None: + allowed_updates = self.resolve_used_update_types() workflow_data = { "dispatcher": self, From ce444a90440a101b5724ddba8667074f76bc2fba Mon Sep 17 00:00:00 2001 From: latan Date: Thu, 1 Jun 2023 22:51:55 +0300 Subject: [PATCH 004/139] change the default value for allowed updates to UNSET TYPE --- aiogram/dispatcher/dispatcher.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 32129b80..6457aac6 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -18,6 +18,7 @@ from ..fsm.strategy import FSMStrategy from ..methods import GetUpdates, TelegramMethod from ..methods.base import TelegramType from ..types import Update, User +from ..types.base import UNSET_TYPE from ..types.update import UpdateTypeLookupError from ..utils.backoff import Backoff, BackoffConfig from .event.bases import UNHANDLED, SkipHandler @@ -450,7 +451,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[List[str]] = None, + allowed_updates: Optional[List[str]] = UNSET_TYPE, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -497,7 +498,7 @@ class Dispatcher(Router): signal.SIGINT, self._signal_stop_polling, signal.SIGINT ) - if allowed_updates is None: + if allowed_updates is UNSET_TYPE: allowed_updates = self.resolve_used_update_types() workflow_data = { From 6a3df4d6f33fb439e04460ad59b1ba7398b06ffc Mon Sep 17 00:00:00 2001 From: latan Date: Thu, 1 Jun 2023 22:53:16 +0300 Subject: [PATCH 005/139] removed auto_resolve_update_types from run_polling --- aiogram/dispatcher/dispatcher.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 6457aac6..b348a7da 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -551,7 +551,6 @@ class Dispatcher(Router): handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, allowed_updates: Optional[List[str]] = None, - auto_resolve_update_types: Optional[bool] = False, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -564,7 +563,6 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive - :param auto_resolve_update_types: auto resolve update types from handlers :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -579,7 +577,6 @@ class Dispatcher(Router): handle_as_tasks=handle_as_tasks, backoff_config=backoff_config, allowed_updates=allowed_updates, - auto_resolve_update_types=auto_resolve_update_types, handle_signals=handle_signals, close_bot_session=close_bot_session, ) From 1abbf9a218989faac36da2f407b74c4720076690 Mon Sep 17 00:00:00 2001 From: latand Date: Fri, 2 Jun 2023 10:15:20 +0300 Subject: [PATCH 006/139] fix typehint --- aiogram/dispatcher/dispatcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index b348a7da..41821519 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -451,7 +451,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[List[str]] = UNSET_TYPE, + allowed_updates: Optional[Union[List[str], Literal[UNSET_TYPE]]] = UNSET_TYPE, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, From caba07a529030ca7515ced619b7400c137708aca Mon Sep 17 00:00:00 2001 From: latand Date: Fri, 2 Jun 2023 10:17:39 +0300 Subject: [PATCH 007/139] update changelog --- CHANGES/1178.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES/1178.feature b/CHANGES/1178.feature index 2a600fd8..654e78ae 100644 --- a/CHANGES/1178.feature +++ b/CHANGES/1178.feature @@ -1 +1 @@ -Add auto_resolve_update_types argument to start_polling method to collect the used update types automatically. +Made allowed_updates list to revolve automatically in start_polling method if not set explicitly. From af4b9cc415ef728d1f6815f5ff37446c24132b03 Mon Sep 17 00:00:00 2001 From: latand Date: Fri, 2 Jun 2023 11:12:34 +0300 Subject: [PATCH 008/139] fix typing --- aiogram/dispatcher/dispatcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 41821519..763a9e37 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -451,7 +451,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[Union[List[str], Literal[UNSET_TYPE]]] = UNSET_TYPE, + allowed_updates: Optional[Union[List[str], UNSET_TYPE]] = UNSET_TYPE, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, From 5b20f8165494fb201a29a75db8309f40d30abd3a Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 10 Jun 2023 20:47:45 +0300 Subject: [PATCH 009/139] Formatting tools (#1172) * Added base implementation of formatting utility * Refactored and added docs * Added changelog * Coverage --- CHANGES/1172.feature.rst | 2 + aiogram/exceptions.py | 6 +- aiogram/utils/formatting.py | 577 +++++++++++++++++++++ docs/api/methods/set_sticker_set_thumb.rst | 44 -- docs/utils/formatting.rst | 199 +++++++ docs/utils/index.rst | 1 + tests/test_utils/test_formatting.py | 319 ++++++++++++ tests/test_utils/test_link.py | 2 +- 8 files changed, 1103 insertions(+), 47 deletions(-) create mode 100644 CHANGES/1172.feature.rst create mode 100644 aiogram/utils/formatting.py delete mode 100644 docs/api/methods/set_sticker_set_thumb.rst create mode 100644 docs/utils/formatting.rst create mode 100644 tests/test_utils/test_formatting.py diff --git a/CHANGES/1172.feature.rst b/CHANGES/1172.feature.rst new file mode 100644 index 00000000..5a1005da --- /dev/null +++ b/CHANGES/1172.feature.rst @@ -0,0 +1,2 @@ +Added a tool to make text formatting flexible and easy. +More details on the :ref:`corresponding documentation page ` diff --git a/aiogram/exceptions.py b/aiogram/exceptions.py index 1c1e59fb..7ca7dcdd 100644 --- a/aiogram/exceptions.py +++ b/aiogram/exceptions.py @@ -34,6 +34,8 @@ class UnsupportedKeywordArgument(DetailedAiogramError): class TelegramAPIError(DetailedAiogramError): + label: str = "Telegram server says" + def __init__( self, method: TelegramMethod[TelegramType], @@ -44,11 +46,11 @@ class TelegramAPIError(DetailedAiogramError): def __str__(self) -> str: original_message = super().__str__() - return f"Telegram server says {original_message}" + return f"{self.label} - {original_message}" class TelegramNetworkError(TelegramAPIError): - pass + label = "HTTP Client says" class TelegramRetryAfter(TelegramAPIError): diff --git a/aiogram/utils/formatting.py b/aiogram/utils/formatting.py new file mode 100644 index 00000000..513d27fd --- /dev/null +++ b/aiogram/utils/formatting.py @@ -0,0 +1,577 @@ +import textwrap +from typing import ( + Any, + ClassVar, + Dict, + Generator, + Iterable, + Iterator, + List, + Optional, + Tuple, + Type, +) + +from typing_extensions import Self + +from aiogram.enums import MessageEntityType +from aiogram.types import MessageEntity, User +from aiogram.utils.text_decorations import ( + add_surrogates, + html_decoration, + markdown_decoration, + remove_surrogates, +) + +NodeType = Any + + +def sizeof(value: str) -> int: + return len(value.encode("utf-16-le")) // 2 + + +class Text(Iterable[NodeType]): + """ + Simple text element + """ + + type: ClassVar[Optional[str]] = None + + __slots__ = ("_body", "_params") + + def __init__( + self, + *body: NodeType, + **params: Any, + ) -> None: + self._body: Tuple[NodeType, ...] = body + self._params: Dict[str, Any] = params + + @classmethod + def from_entities(cls, text: str, entities: List[MessageEntity]) -> "Text": + return cls( + *_unparse_entities( + text=add_surrogates(text), + entities=sorted(entities, key=lambda item: item.offset) if entities else [], + ) + ) + + def render( + self, + *, + _offset: int = 0, + _sort: bool = True, + _collect_entities: bool = True, + ) -> Tuple[str, List[MessageEntity]]: + """ + Render elements tree as text with entities list + + :return: + """ + + text = "" + entities = [] + offset = _offset + + for node in self._body: + if not isinstance(node, Text): + node = str(node) + text += node + offset += sizeof(node) + else: + node_text, node_entities = node.render( + _offset=offset, + _sort=False, + _collect_entities=_collect_entities, + ) + text += node_text + offset += sizeof(node_text) + if _collect_entities: + entities.extend(node_entities) + + if _collect_entities and self.type: + entities.append(self._render_entity(offset=_offset, length=offset - _offset)) + + if _collect_entities and _sort: + entities.sort(key=lambda entity: entity.offset) + + return text, entities + + def _render_entity(self, *, offset: int, length: int) -> MessageEntity: + return MessageEntity(type=self.type, offset=offset, length=length, **self._params) + + def as_kwargs( + self, + *, + text_key: str = "text", + entities_key: str = "entities", + replace_parse_mode: bool = True, + parse_mode_key: str = "parse_mode", + ) -> Dict[str, Any]: + """ + Render elements tree as keyword arguments for usage in the API call, for example: + + .. code-block:: python + + entities = Text(...) + await message.answer(**entities.as_kwargs()) + + :param text_key: + :param entities_key: + :param replace_parse_mode: + :param parse_mode_key: + :return: + """ + text_value, entities_value = self.render() + result: Dict[str, Any] = { + text_key: text_value, + entities_key: entities_value, + } + if replace_parse_mode: + result[parse_mode_key] = None + return result + + def as_html(self) -> str: + """ + Render elements tree as HTML markup + """ + text, entities = self.render() + return html_decoration.unparse(text, entities) + + def as_markdown(self) -> str: + """ + Render elements tree as MarkdownV2 markup + """ + text, entities = self.render() + return markdown_decoration.unparse(text, entities) + + def replace(self: Self, *args: Any, **kwargs: Any) -> Self: + return type(self)(*args, **{**self._params, **kwargs}) + + def as_pretty_string(self, indent: bool = False) -> str: + sep = ",\n" if indent else ", " + body = sep.join( + item.as_pretty_string(indent=indent) if isinstance(item, Text) else repr(item) + for item in self._body + ) + params = sep.join(f"{k}={v!r}" for k, v in self._params.items() if v is not None) + + args = [] + if body: + args.append(body) + if params: + args.append(params) + + args_str = sep.join(args) + if indent: + args_str = textwrap.indent("\n" + args_str + "\n", " ") + return f"{type(self).__name__}({args_str})" + + def __add__(self, other: NodeType) -> "Text": + if isinstance(other, Text) and other.type == self.type and self._params == other._params: + return type(self)(*self, *other, **self._params) + if type(self) == Text and isinstance(other, str): + return type(self)(*self, other, **self._params) + return Text(self, other) + + def __iter__(self) -> Iterator[NodeType]: + yield from self._body + + def __len__(self) -> int: + text, _ = self.render(_collect_entities=False) + return sizeof(text) + + def __getitem__(self, item: slice) -> "Text": + if not isinstance(item, slice): + raise TypeError("Can only be sliced") + if (item.start is None or item.start == 0) and item.stop is None: + return self.replace(*self._body) + start = 0 if item.start is None else item.start + stop = len(self) if item.stop is None else item.stop + if start == stop: + return self.replace() + + nodes = [] + position = 0 + + for node in self._body: + node_size = len(node) + current_position = position + position += node_size + if position < start: + continue + if current_position > stop: + break + a = max((0, start - current_position)) + b = min((node_size, stop - current_position)) + new_node = node[a:b] + if not new_node: + continue + nodes.append(new_node) + + return self.replace(*nodes) + + +class HashTag(Text): + """ + Hashtag element. + + .. warning:: + + The value should always start with '#' symbol + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.HASHTAG` + """ + + type = MessageEntityType.HASHTAG + + +class CashTag(Text): + """ + Cashtag element. + + .. warning:: + + The value should always start with '$' symbol + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CASHTAG` + """ + + type = MessageEntityType.CASHTAG + + +class BotCommand(Text): + """ + Bot command element. + + .. warning:: + + The value should always start with '/' symbol + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOT_COMMAND` + """ + + type = MessageEntityType.BOT_COMMAND + + +class Url(Text): + """ + Url element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.URL` + """ + + type = MessageEntityType.URL + + +class Email(Text): + """ + Email element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.EMAIL` + """ + + type = MessageEntityType.EMAIL + + +class PhoneNumber(Text): + """ + Phone number element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PHONE_NUMBER` + """ + + type = MessageEntityType.PHONE_NUMBER + + +class Bold(Text): + """ + Bold element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOLD` + """ + + type = MessageEntityType.BOLD + + +class Italic(Text): + """ + Italic element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.ITALIC` + """ + + type = MessageEntityType.ITALIC + + +class Underline(Text): + """ + Underline element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.UNDERLINE` + """ + + type = MessageEntityType.UNDERLINE + + +class Strikethrough(Text): + """ + Strikethrough element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.STRIKETHROUGH` + """ + + type = MessageEntityType.STRIKETHROUGH + + +class Spoiler(Text): + """ + Spoiler element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.SPOILER` + """ + + type = MessageEntityType.SPOILER + + +class Code(Text): + """ + Code element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CODE` + """ + + type = MessageEntityType.CODE + + +class Pre(Text): + """ + Pre element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PRE` + """ + + type = MessageEntityType.PRE + + def __init__(self, *body: NodeType, language: Optional[str] = None, **params: Any) -> None: + super().__init__(*body, language=language, **params) + + +class TextLink(Text): + """ + Text link element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_LINK` + """ + + type = MessageEntityType.TEXT_LINK + + def __init__(self, *body: NodeType, url: str, **params: Any) -> None: + super().__init__(*body, url=url, **params) + + +class TextMention(Text): + """ + Text mention element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_MENTION` + """ + + type = MessageEntityType.TEXT_MENTION + + def __init__(self, *body: NodeType, user: User, **params: Any) -> None: + super().__init__(*body, user=user, **params) + + +class CustomEmoji(Text): + """ + Custom emoji element. + + Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` + with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI` + """ + + type = MessageEntityType.CUSTOM_EMOJI + + def __init__(self, *body: NodeType, custom_emoji_id: str, **params: Any) -> None: + super().__init__(*body, custom_emoji_id=custom_emoji_id, **params) + + +NODE_TYPES: Dict[Optional[str], Type[Text]] = { + Text.type: Text, + HashTag.type: HashTag, + CashTag.type: CashTag, + BotCommand.type: BotCommand, + Url.type: Url, + Email.type: Email, + PhoneNumber.type: PhoneNumber, + Bold.type: Bold, + Italic.type: Italic, + Underline.type: Underline, + Strikethrough.type: Strikethrough, + Spoiler.type: Spoiler, + Code.type: Code, + Pre.type: Pre, + TextLink.type: TextLink, + TextMention.type: TextMention, +} + + +def _apply_entity(entity: MessageEntity, *nodes: NodeType) -> NodeType: + """ + Apply single entity to text + + :param entity: + :param text: + :return: + """ + node_type = NODE_TYPES.get(entity.type, Text) + return node_type(*nodes, **entity.dict(exclude={"type", "offset", "length"})) + + +def _unparse_entities( + text: bytes, + entities: List[MessageEntity], + offset: Optional[int] = None, + length: Optional[int] = None, +) -> Generator[NodeType, None, None]: + if offset is None: + offset = 0 + length = length or len(text) + + for index, entity in enumerate(entities): + if entity.offset * 2 < offset: + continue + if entity.offset * 2 > offset: + yield remove_surrogates(text[offset : entity.offset * 2]) + start = entity.offset * 2 + offset = entity.offset * 2 + entity.length * 2 + + sub_entities = list(filter(lambda e: e.offset * 2 < (offset or 0), entities[index + 1 :])) + yield _apply_entity( + entity, + *_unparse_entities(text, sub_entities, offset=start, length=offset), + ) + + if offset < length: + yield remove_surrogates(text[offset:length]) + + +def as_line(*items: NodeType, end: str = "\n") -> Text: + """ + Wrap multiple nodes into line with :code:`\\\\n` at the end of line. + + :param items: Text or Any + :param end: ending of the line, by default is :code:`\\\\n` + :return: Text + """ + return Text(*items, end) + + +def as_list(*items: NodeType, sep: str = "\n") -> Text: + """ + Wrap each element to separated lines + + :param items: + :param sep: + :return: + """ + nodes = [] + for item in items[:-1]: + nodes.extend([item, sep]) + nodes.append(items[-1]) + return Text(*nodes) + + +def as_marked_list(*items: NodeType, marker: str = "- ") -> Text: + """ + Wrap elements as marked list + + :param items: + :param marker: line marker, by default is :code:`- ` + :return: Text + """ + return as_list(*(Text(marker, item) for item in items)) + + +def as_numbered_list(*items: NodeType, start: int = 1, fmt: str = "{}. ") -> Text: + """ + Wrap elements as numbered list + + :param items: + :param start: initial number, by default 1 + :param fmt: number format, by default :code:`{}. ` + :return: Text + """ + return as_list(*(Text(fmt.format(index), item) for index, item in enumerate(items, start))) + + +def as_section(title: NodeType, *body: NodeType) -> Text: + """ + Wrap elements as simple section, section has title and body + + :param title: + :param body: + :return: Text + """ + return Text(title, "\n", *body) + + +def as_marked_section( + title: NodeType, + *body: NodeType, + marker: str = "- ", +) -> Text: + """ + Wrap elements as section with marked list + + :param title: + :param body: + :param marker: + :return: + """ + return as_section(title, as_marked_list(*body, marker=marker)) + + +def as_numbered_section( + title: NodeType, + *body: NodeType, + start: int = 1, + fmt: str = "{}. ", +) -> Text: + """ + Wrap elements as section with numbered list + + :param title: + :param body: + :param start: + :param fmt: + :return: + """ + return as_section(title, as_numbered_list(*body, start=start, fmt=fmt)) + + +def as_key_value(key: NodeType, value: NodeType) -> Text: + """ + Wrap elements pair as key-value line. (:code:`{key}: {value}`) + + :param key: + :param value: + :return: Text + """ + return Text(Bold(key, ":"), " ", value) diff --git a/docs/api/methods/set_sticker_set_thumb.rst b/docs/api/methods/set_sticker_set_thumb.rst deleted file mode 100644 index 133fad94..00000000 --- a/docs/api/methods/set_sticker_set_thumb.rst +++ /dev/null @@ -1,44 +0,0 @@ -################## -setStickerSetThumb -################## - -Returns: :obj:`bool` - -.. automodule:: aiogram.methods.set_sticker_set_thumb - :members: - :member-order: bysource - :undoc-members: True - - -Usage -===== - -As bot method -------------- - -.. code-block:: - - result: bool = await bot.set_sticker_set_thumb(...) - - -Method as object ----------------- - -Imports: - -- :code:`from aiogram.methods.set_sticker_set_thumb import SetStickerSetThumb` -- alias: :code:`from aiogram.methods import SetStickerSetThumb` - -With specific bot -~~~~~~~~~~~~~~~~~ - -.. code-block:: python - - result: bool = await bot(SetStickerSetThumb(...)) - -As reply into Webhook in handler -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: python - - return SetStickerSetThumb(...) diff --git a/docs/utils/formatting.rst b/docs/utils/formatting.rst new file mode 100644 index 00000000..96d727f3 --- /dev/null +++ b/docs/utils/formatting.rst @@ -0,0 +1,199 @@ +.. _formatting-tool + +========== +Formatting +========== + +Make your message formatting flexible and simple + +This instrument works on top of Message entities instead of using HTML or Markdown markups, +you can easily construct your message and sent it to the Telegram without the need to +remember tag parity (opening and closing) or escaping user input. + +Usage +===== + +Basic scenario +-------------- + +Construct your message and send it to the Telegram. + +.. code-block:: python + + content = Text("Hello, ", Bold(message.from_user.full_name), "!") + await message.answer(**content.as_kwargs()) + +Is the same as the next example, but without usage markup + +.. code-block:: python + + await message.answer( + text=f"Hello, {html.quote(message.from_user.full_name)}!", + parse_mode=ParseMode.HTML + ) + +Literally when you execute :code:`as_kwargs` method the Text object is converted +into text :code:`Hello, Alex!` with entities list :code:`[MessageEntity(type='bold', offset=7, length=4)]` +and passed into dict which can be used as :code:`**kwargs` in API call. + +The complete list of elements is listed `on this page below <#available-elements>`_. + +Advanced scenario +----------------- + +On top of base elements can be implemented content rendering structures, +so, out of the box aiogram has a few already implemented functions that helps you to format +your messages: + +.. autofunction:: aiogram.utils.formatting.as_line + +.. autofunction:: aiogram.utils.formatting.as_list + +.. autofunction:: aiogram.utils.formatting.as_marked_list + +.. autofunction:: aiogram.utils.formatting.as_numbered_list + +.. autofunction:: aiogram.utils.formatting.as_section + +.. autofunction:: aiogram.utils.formatting.as_marked_section + +.. autofunction:: aiogram.utils.formatting.as_numbered_section + +.. autofunction:: aiogram.utils.formatting.as_key_value + +and lets complete them all: + +.. code-block:: python + + content = as_list( + as_marked_section( + Bold("Success:"), + "Test 1", + "Test 3", + "Test 4", + marker="✅ ", + ), + as_marked_section( + Bold("Failed:"), + "Test 2", + marker="❌ ", + ), + as_marked_section( + Bold("Summary:"), + as_key_value("Total", 4), + as_key_value("Success", 3), + as_key_value("Failed", 1), + marker=" ", + ), + HashTag("#test"), + sep="\n\n", + ) + +Will be rendered into: + + **Success:** + + ✅ Test 1 + + ✅ Test 3 + + ✅ Test 4 + + **Failed:** + + ❌ Test 2 + + **Summary:** + + **Total**: 4 + + **Success**: 3 + + **Failed**: 1 + + #test + + +Or as HTML: + +.. code-block:: html + + Success: + ✅ Test 1 + ✅ Test 3 + ✅ Test 4 + + Failed: + ❌ Test 2 + + Summary: + Total: 4 + Success: 3 + Failed: 1 + + #test + +Available methods +================= + +.. autoclass:: aiogram.utils.formatting.Text + :members: + :show-inheritance: + :member-order: bysource + :special-members: __init__ + + +Available elements +================== + +.. autoclass:: aiogram.utils.formatting.Text + :show-inheritance: + :noindex: + +.. autoclass:: aiogram.utils.formatting.HashTag + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.CashTag + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.BotCommand + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Url + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Email + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.PhoneNumber + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Bold + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Italic + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Underline + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Strikethrough + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Spoiler + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Code + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.Pre + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.TextLink + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.TextMention + :show-inheritance: + +.. autoclass:: aiogram.utils.formatting.CustomEmoji + :show-inheritance: diff --git a/docs/utils/index.rst b/docs/utils/index.rst index cfe5a543..fbab2e4a 100644 --- a/docs/utils/index.rst +++ b/docs/utils/index.rst @@ -9,3 +9,4 @@ Utils chat_action web_app callback_answer + formatting diff --git a/tests/test_utils/test_formatting.py b/tests/test_utils/test_formatting.py new file mode 100644 index 00000000..5e14c4dc --- /dev/null +++ b/tests/test_utils/test_formatting.py @@ -0,0 +1,319 @@ +import pytest + +from aiogram.enums import MessageEntityType +from aiogram.types import MessageEntity, User +from aiogram.utils.formatting import ( + Bold, + BotCommand, + CashTag, + Code, + CustomEmoji, + Email, + HashTag, + Italic, + PhoneNumber, + Pre, + Spoiler, + Strikethrough, + Text, + TextLink, + TextMention, + Underline, + Url, + _apply_entity, + as_key_value, + as_line, + as_list, + as_marked_list, + as_marked_section, + as_numbered_list, + as_numbered_section, + as_section, +) +from aiogram.utils.text_decorations import html_decoration + + +class TestNode: + @pytest.mark.parametrize( + "node,result", + [ + [ + Text("test"), + "test", + ], + [ + HashTag("#test"), + "#test", + ], + [ + CashTag("$TEST"), + "$TEST", + ], + [ + BotCommand("/test"), + "/test", + ], + [ + Url("https://example.com"), + "https://example.com", + ], + [ + Email("test@example.com"), + "test@example.com", + ], + [ + PhoneNumber("test"), + "test", + ], + [ + Bold("test"), + "test", + ], + [ + Italic("test"), + "test", + ], + [ + Underline("test"), + "test", + ], + [ + Strikethrough("test"), + "test", + ], + [ + Spoiler("test"), + "test", + ], + [ + Code("test"), + "test", + ], + [ + Pre("test", language="python"), + '
test
', + ], + [ + TextLink("test", url="https://example.com"), + 'test', + ], + [ + TextMention("test", user=User(id=42, is_bot=False, first_name="Test")), + 'test', + ], + [ + CustomEmoji("test", custom_emoji_id="42"), + 'test', + ], + ], + ) + def test_render_plain_only(self, node: Text, result: str): + text, entities = node.render() + if node.type: + assert len(entities) == 1 + entity = entities[0] + assert entity.type == node.type + + content = html_decoration.unparse(text, entities) + assert content == result + + def test_render_text(self): + node = Text("Hello, ", "World", "!") + text, entities = node.render() + assert text == "Hello, World!" + assert not entities + + def test_render_nested(self): + node = Text( + Text("Hello, ", Bold("World"), "!"), + "\n", + Text(Bold("This ", Underline("is"), " test", Italic("!"))), + "\n", + HashTag("#test"), + ) + text, entities = node.render() + assert text == "Hello, World!\nThis is test!\n#test" + assert entities == [ + MessageEntity(type="bold", offset=7, length=5), + MessageEntity(type="bold", offset=14, length=13), + MessageEntity(type="underline", offset=19, length=2), + MessageEntity(type="italic", offset=26, length=1), + MessageEntity(type="hashtag", offset=28, length=5), + ] + + def test_as_kwargs_default(self): + node = Text("Hello, ", Bold("World"), "!") + result = node.as_kwargs() + assert "text" in result + assert "entities" in result + assert "parse_mode" in result + + def test_as_kwargs_custom(self): + node = Text("Hello, ", Bold("World"), "!") + result = node.as_kwargs( + text_key="caption", + entities_key="custom_entities", + parse_mode_key="custom_parse_mode", + ) + assert "text" not in result + assert "caption" in result + assert "entities" not in result + assert "custom_entities" in result + assert "parse_mode" not in result + assert "custom_parse_mode" in result + + def test_as_html(self): + node = Text("Hello, ", Bold("World"), "!") + assert node.as_html() == "Hello, World!" + + def test_as_markdown(self): + node = Text("Hello, ", Bold("World"), "!") + assert node.as_markdown() == r"Hello, *World*\!" + + def test_replace(self): + node0 = Text("test0", param0="test1") + node1 = node0.replace("test1", "test2", param1="test1") + assert node0._body != node1._body + assert node0._params != node1._params + assert "param1" not in node0._params + assert "param1" in node1._params + + def test_add(self): + node0 = Text("Hello") + node1 = Bold("World") + + node2 = node0 + Text(", ") + node1 + "!" + assert node0 != node2 + assert node1 != node2 + assert len(node0._body) == 1 + assert len(node1._body) == 1 + assert len(node2._body) == 3 + + text, entities = node2.render() + assert text == "Hello, World!" + + def test_getitem_position(self): + node = Text("Hello, ", Bold("World"), "!") + with pytest.raises(TypeError): + node[2] + + def test_getitem_empty_slice(self): + node = Text("Hello, ", Bold("World"), "!") + new_node = node[:] + assert new_node is not node + assert isinstance(new_node, Text) + assert new_node._body == node._body + + def test_getitem_slice_zero(self): + node = Text("Hello, ", Bold("World"), "!") + new_node = node[2:2] + assert node is not new_node + assert isinstance(new_node, Text) + assert not new_node._body + + def test_getitem_slice_simple(self): + node = Text("Hello, ", Bold("World"), "!") + new_node = node[2:10] + assert isinstance(new_node, Text) + text, entities = new_node.render() + assert text == "llo, Wor" + assert len(entities) == 1 + assert entities[0].type == MessageEntityType.BOLD + + def test_getitem_slice_inside_child(self): + node = Text("Hello, ", Bold("World"), "!") + new_node = node[8:10] + assert isinstance(new_node, Text) + text, entities = new_node.render() + assert text == "or" + assert len(entities) == 1 + assert entities[0].type == MessageEntityType.BOLD + + def test_getitem_slice_tail(self): + node = Text("Hello, ", Bold("World"), "!") + new_node = node[12:13] + assert isinstance(new_node, Text) + text, entities = new_node.render() + assert text == "!" + assert not entities + + def test_from_entities(self): + # Most of the cases covered by text_decorations module + + node = Strikethrough.from_entities( + text="test1 test2 test3 test4 test5 test6 test7", + entities=[ + MessageEntity(type="bold", offset=6, length=29), + MessageEntity(type="underline", offset=12, length=5), + MessageEntity(type="italic", offset=24, length=5), + ], + ) + assert len(node._body) == 3 + assert isinstance(node, Strikethrough) + rendered = node.as_html() + assert rendered == "test1 test2 test3 test4 test5 test6 test7" + + def test_pretty_string(self): + node = Strikethrough.from_entities( + text="X", + entities=[ + MessageEntity( + type=MessageEntityType.CUSTOM_EMOJI, + offset=0, + length=1, + custom_emoji_id="42", + ), + ], + ) + assert ( + node.as_pretty_string(indent=True) + == """Strikethrough( + Text( + 'X', + custom_emoji_id='42' + ) +)""" + ) + + +class TestUtils: + def test_apply_entity(self): + node = _apply_entity( + MessageEntity(type=MessageEntityType.BOLD, offset=0, length=4), "test" + ) + assert isinstance(node, Bold) + assert node._body == ("test",) + + def test_as_line(self): + node = as_line("test", "test", "test") + assert isinstance(node, Text) + assert len(node._body) == 4 # 3 + '\n' + + def test_as_list(self): + node = as_list("test", "test", "test") + assert isinstance(node, Text) + assert len(node._body) == 5 # 3 + 2 * '\n' between lines + + def test_as_marked_list(self): + node = as_marked_list("test 1", "test 2", "test 3") + assert node.as_html() == "- test 1\n- test 2\n- test 3" + + def test_as_numbered_list(self): + node = as_numbered_list("test 1", "test 2", "test 3", start=5) + assert node.as_html() == "5. test 1\n6. test 2\n7. test 3" + + def test_as_section(self): + node = as_section("title", "test 1", "test 2", "test 3") + assert node.as_html() == "title\ntest 1test 2test 3" + + def test_as_marked_section(self): + node = as_marked_section("Section", "test 1", "test 2", "test 3") + assert node.as_html() == "Section\n- test 1\n- test 2\n- test 3" + + def test_as_numbered_section(self): + node = as_numbered_section("Section", "test 1", "test 2", "test 3", start=5) + assert node.as_html() == "Section\n5. test 1\n6. test 2\n7. test 3" + + def test_as_key_value(self): + node = as_key_value("key", "test 1") + assert node.as_html() == "key: test 1" diff --git a/tests/test_utils/test_link.py b/tests/test_utils/test_link.py index 77419441..f0276703 100644 --- a/tests/test_utils/test_link.py +++ b/tests/test_utils/test_link.py @@ -6,10 +6,10 @@ import pytest from aiogram.utils.link import ( BRANCH, + create_channel_bot_link, create_telegram_link, create_tg_link, docs_url, - create_channel_bot_link, ) From a890622e40eed5338a106d66ac8340f0ad9eaae8 Mon Sep 17 00:00:00 2001 From: sheldy <85823514+sheldygg@users.noreply.github.com> Date: Sun, 25 Jun 2023 00:40:04 +0300 Subject: [PATCH 010/139] parameter secret_token (#1173) * Added secret token validation --- CHANGES/1173.feature.rst | 1 + aiogram/webhook/aiohttp_server.py | 22 +++++++++++++++++++++- tests/test_webhook/test_aiohtt_server.py | 16 ++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1173.feature.rst diff --git a/CHANGES/1173.feature.rst b/CHANGES/1173.feature.rst new file mode 100644 index 00000000..5a0f4d0c --- /dev/null +++ b/CHANGES/1173.feature.rst @@ -0,0 +1 @@ +Added X-Telegram-Bot-Api-Secret-Token header check diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index 4406f1ff..953f90fe 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -131,6 +131,10 @@ class BaseRequestHandler(ABC): """ pass + @abstractmethod + def verify_secret(self, telegram_secret_token: str, bot: Bot) -> bool: + pass + async def _background_feed_update(self, bot: Bot, update: Dict[str, Any]) -> None: result = await self.dispatcher.feed_raw_update(bot=bot, update=update, **self.data) if isinstance(result, TelegramMethod): @@ -185,6 +189,8 @@ class BaseRequestHandler(ABC): async def handle(self, request: web.Request) -> web.Response: bot = await self.resolve_bot(request) + if not self.verify_secret(request.headers.get("X-Telegram-Bot-Api-Secret-Token", ""), bot): + return web.Response(body="Unauthorized", status=401) if self.handle_in_background: return await self._handle_request_background(bot=bot, request=request) return await self._handle_request(bot=bot, request=request) @@ -198,7 +204,12 @@ class SimpleRequestHandler(BaseRequestHandler): """ def __init__( - self, dispatcher: Dispatcher, bot: Bot, handle_in_background: bool = True, **data: Any + self, + dispatcher: Dispatcher, + bot: Bot, + handle_in_background: bool = True, + secret_token: Optional[str] = None, + **data: Any, ) -> None: """ :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` @@ -208,6 +219,12 @@ class SimpleRequestHandler(BaseRequestHandler): """ super().__init__(dispatcher=dispatcher, handle_in_background=handle_in_background, **data) self.bot = bot + self.secret_token = secret_token + + def verify_secret(self, telegram_secret_token: str, bot: Bot) -> bool: + if self.secret_token: + return secrets.compare_digest(telegram_secret_token, self.secret_token) + return True async def close(self) -> None: """ @@ -244,6 +261,9 @@ class TokenBasedRequestHandler(BaseRequestHandler): self.bot_settings = bot_settings self.bots: Dict[str, Bot] = {} + def verify_secret(self, telegram_secret_token: str, bot: Bot) -> bool: + return True + async def close(self) -> None: for bot in self.bots.values(): await bot.session.close() diff --git a/tests/test_webhook/test_aiohtt_server.py b/tests/test_webhook/test_aiohtt_server.py index 5be8f43e..4e3f6658 100644 --- a/tests/test_webhook/test_aiohtt_server.py +++ b/tests/test_webhook/test_aiohtt_server.py @@ -189,8 +189,24 @@ class TestSimpleRequestHandler: result = await resp.json() assert not result + async def test_verify_secret(self, bot: MockedBot, aiohttp_client): + app = Application() + dp = Dispatcher() + handler = SimpleRequestHandler( + dispatcher=dp, bot=bot, handle_in_background=False, secret_token="vasya228" + ) + handler.register(app, path="/webhook") + client: TestClient = await aiohttp_client(app) + resp = await self.make_reqest(client=client) + assert resp.status == 401 + class TestTokenBasedRequestHandler: + async def test_verify_secret(self, bot: MockedBot): + dispatcher = Dispatcher() + handler = TokenBasedRequestHandler(dispatcher=dispatcher) + assert handler.verify_secret("petro328", bot) + async def test_register(self): dispatcher = Dispatcher() app = Application() From 484a61bdc1b7ea6746c4cccd8b28fa3c06323357 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 25 Jun 2023 01:11:00 +0300 Subject: [PATCH 011/139] Fixed workflow data propagation (#1196) * Coverage * Added changelog --- CHANGES/1196.bugfix.rst | 1 + aiogram/dispatcher/dispatcher.py | 9 ++++----- aiogram/webhook/aiohttp_server.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 CHANGES/1196.bugfix.rst diff --git a/CHANGES/1196.bugfix.rst b/CHANGES/1196.bugfix.rst new file mode 100644 index 00000000..db6594a6 --- /dev/null +++ b/CHANGES/1196.bugfix.rst @@ -0,0 +1 @@ +Fixed workflow data propagation diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 9c61a447..18bd5c73 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -500,11 +500,10 @@ class Dispatcher(Router): workflow_data = { "dispatcher": self, "bots": bots, - "bot": bots[-1], - **kwargs, **self.workflow_data, + **kwargs, } - await self.emit_startup(**workflow_data) + await self.emit_startup(bot=bots[-1], **workflow_data) loggers.dispatcher.info("Start polling") try: tasks: List[asyncio.Task[Any]] = [ @@ -515,7 +514,7 @@ class Dispatcher(Router): polling_timeout=polling_timeout, backoff_config=backoff_config, allowed_updates=allowed_updates, - **kwargs, + **workflow_data, ) ) for bot in bots @@ -534,7 +533,7 @@ class Dispatcher(Router): finally: loggers.dispatcher.info("Polling stopped") try: - await self.emit_shutdown(**workflow_data) + await self.emit_shutdown(bot=bots[-1], **workflow_data) finally: if close_bot_session: await asyncio.gather(*(bot.session.close() for bot in bots)) diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index 953f90fe..0bd5b609 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -28,8 +28,8 @@ def setup_application(app: Application, dispatcher: Dispatcher, /, **kwargs: Any workflow_data = { "app": app, "dispatcher": dispatcher, - **kwargs, **dispatcher.workflow_data, + **kwargs, } async def on_startup(*a: Any, **kw: Any) -> None: # pragma: no cover From d29b18da8cbe36e8deacf63e8425d40433b527b7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 25 Jun 2023 01:39:26 +0300 Subject: [PATCH 012/139] #1191 Added possibility to pass custom headers to URLInputFile object (#1197) --- CHANGES/1191.feature.rst | 1 + aiogram/__init__.py | 4 +--- aiogram/__meta__.py | 2 ++ aiogram/client/session/aiohttp.py | 24 ++++++++++++++++--- aiogram/client/session/base.py | 7 +++++- aiogram/types/input_file.py | 8 ++++++- pyproject.toml | 2 +- scripts/bump_versions.py | 2 +- tests/mocked_bot.py | 9 +++---- .../test_session/test_base_session.py | 10 ++++++-- 10 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 CHANGES/1191.feature.rst create mode 100644 aiogram/__meta__.py diff --git a/CHANGES/1191.feature.rst b/CHANGES/1191.feature.rst new file mode 100644 index 00000000..5bf184f0 --- /dev/null +++ b/CHANGES/1191.feature.rst @@ -0,0 +1 @@ +Added possibility to pass custom headers to URLInputFile object diff --git a/aiogram/__init__.py b/aiogram/__init__.py index 4ed355fc..2ea9f79f 100644 --- a/aiogram/__init__.py +++ b/aiogram/__init__.py @@ -3,6 +3,7 @@ from contextlib import suppress from aiogram.dispatcher.flags import FlagGenerator from . import enums, methods, types +from .__meta__ import __api_version__, __version__ from .client import session from .client.bot import Bot from .dispatcher.dispatcher import Dispatcher @@ -36,6 +37,3 @@ __all__ = ( "md", "flags", ) - -__version__ = "3.0.0b8" -__api_version__ = "6.6" diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py new file mode 100644 index 00000000..72d119e9 --- /dev/null +++ b/aiogram/__meta__.py @@ -0,0 +1,2 @@ +__version__ = "3.0.0b8" +__api_version__ = "6.6" diff --git a/aiogram/client/session/aiohttp.py b/aiogram/client/session/aiohttp.py index 279f61f9..c15faf7a 100644 --- a/aiogram/client/session/aiohttp.py +++ b/aiogram/client/session/aiohttp.py @@ -18,7 +18,10 @@ from typing import ( import certifi from aiohttp import BasicAuth, ClientError, ClientSession, FormData, TCPConnector +from aiohttp.hdrs import USER_AGENT +from aiohttp.http import SERVER_SOFTWARE +from aiogram.__meta__ import __version__ from aiogram.methods import TelegramMethod from ...exceptions import TelegramNetworkError @@ -121,7 +124,12 @@ class AiohttpSession(BaseSession): await self.close() if self._session is None or self._session.closed: - self._session = ClientSession(connector=self._connector_type(**self._connector_init)) + self._session = ClientSession( + connector=self._connector_type(**self._connector_init), + headers={ + USER_AGENT: f"{SERVER_SOFTWARE} aiogram/{__version__}", + }, + ) self._should_reset_connector = False return self._session @@ -163,11 +171,21 @@ class AiohttpSession(BaseSession): return cast(TelegramType, response.result) async def stream_content( - self, url: str, timeout: int, chunk_size: int, raise_for_status: bool + self, + url: str, + headers: Optional[Dict[str, Any]] = None, + timeout: int = 30, + chunk_size: int = 65536, + raise_for_status: bool = True, ) -> AsyncGenerator[bytes, None]: + if headers is None: + headers = {} + session = await self.create_session() - async with session.get(url, timeout=timeout, raise_for_status=raise_for_status) as resp: + async with session.get( + url, timeout=timeout, headers=headers, raise_for_status=raise_for_status + ) as resp: async for chunk in resp.content.iter_chunked(chunk_size): yield chunk diff --git a/aiogram/client/session/base.py b/aiogram/client/session/base.py index a66eb7cc..afbb2edb 100644 --- a/aiogram/client/session/base.py +++ b/aiogram/client/session/base.py @@ -158,7 +158,12 @@ class BaseSession(abc.ABC): @abc.abstractmethod async def stream_content( - self, url: str, timeout: int, chunk_size: int, raise_for_status: bool + self, + url: str, + headers: Optional[Dict[str, Any]] = None, + timeout: int = 30, + chunk_size: int = 65536, + raise_for_status: bool = True, ) -> AsyncGenerator[bytes, None]: # pragma: no cover """ Stream reader diff --git a/aiogram/types/input_file.py b/aiogram/types/input_file.py index c4090505..8b74fe03 100644 --- a/aiogram/types/input_file.py +++ b/aiogram/types/input_file.py @@ -4,7 +4,7 @@ import io import os from abc import ABC, abstractmethod from pathlib import Path -from typing import AsyncGenerator, AsyncIterator, Iterator, Optional, Union +from typing import Any, AsyncGenerator, AsyncIterator, Dict, Iterator, Optional, Union import aiofiles @@ -114,6 +114,7 @@ class URLInputFile(InputFile): def __init__( self, url: str, + headers: Optional[Dict[str, Any]] = None, filename: Optional[str] = None, chunk_size: int = DEFAULT_CHUNK_SIZE, timeout: int = 30, @@ -122,12 +123,16 @@ class URLInputFile(InputFile): Represents object for streaming files from internet :param url: URL in internet + :param headers: HTTP Headers :param filename: Filename to be propagated to telegram. :param chunk_size: Uploading chunk size """ super().__init__(filename=filename, chunk_size=chunk_size) + if headers is None: + headers = {} self.url = url + self.headers = headers self.timeout = timeout async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: @@ -136,6 +141,7 @@ class URLInputFile(InputFile): bot = Bot.get_current(no_error=False) stream = bot.session.stream_content( url=self.url, + headers=self.headers, timeout=self.timeout, chunk_size=self.chunk_size, raise_for_status=True, diff --git a/pyproject.toml b/pyproject.toml index faf6d02c..8c926c6d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,7 +49,7 @@ dependencies = [ dynamic = ["version"] [tool.hatch.version] -path = "aiogram/__init__.py" +path = "aiogram/__meta__.py" [project.optional-dependencies] fast = [ diff --git a/scripts/bump_versions.py b/scripts/bump_versions.py index 7459192a..84f1f788 100644 --- a/scripts/bump_versions.py +++ b/scripts/bump_versions.py @@ -46,7 +46,7 @@ def replace_line(content: str, pattern: re.Pattern, new_value: str) -> str: def write_package_meta(api_version: str) -> None: - path = Path.cwd() / "aiogram" / "__init__.py" + path = Path.cwd() / "aiogram" / "__meta__.py" content = path.read_text() content = replace_line(content, API_VERSION, api_version) diff --git a/tests/mocked_bot.py b/tests/mocked_bot.py index 29c477a0..680e4883 100644 --- a/tests/mocked_bot.py +++ b/tests/mocked_bot.py @@ -1,5 +1,5 @@ from collections import deque -from typing import TYPE_CHECKING, AsyncGenerator, Deque, Optional, Type +from typing import TYPE_CHECKING, Any, AsyncGenerator, Deque, Dict, Optional, Type from aiogram import Bot from aiogram.client.session.base import BaseSession @@ -42,9 +42,10 @@ class MockedSession(BaseSession): async def stream_content( self, url: str, - timeout: int, - chunk_size: int, - raise_for_status: bool, + headers: Optional[Dict[str, Any]] = None, + timeout: int = 30, + chunk_size: int = 65536, + raise_for_status: bool = True, ) -> AsyncGenerator[bytes, None]: # pragma: no cover yield b"" diff --git a/tests/test_api/test_client/test_session/test_base_session.py b/tests/test_api/test_client/test_session/test_base_session.py index 48d43cef..5d1ebef1 100644 --- a/tests/test_api/test_client/test_session/test_base_session.py +++ b/tests/test_api/test_client/test_session/test_base_session.py @@ -1,6 +1,6 @@ import datetime import json -from typing import Any, AsyncContextManager, AsyncGenerator, Optional +from typing import Any, AsyncContextManager, AsyncGenerator, Dict, Optional from unittest.mock import AsyncMock, patch import pytest @@ -44,7 +44,12 @@ class CustomSession(BaseSession): assert isinstance(method, TelegramMethod) async def stream_content( - self, url: str, timeout: int, chunk_size: int, raise_for_status: bool + self, + url: str, + headers: Optional[Dict[str, Any]] = None, + timeout: int = 30, + chunk_size: int = 65536, + raise_for_status: bool = True, ) -> AsyncGenerator[bytes, None]: # pragma: no cover assert isinstance(url, str) assert isinstance(timeout, int) @@ -215,6 +220,7 @@ class TestBaseSession: session = CustomSession() stream = session.stream_content( "https://www.python.org/static/img/python-logo.png", + headers={}, timeout=5, chunk_size=65536, raise_for_status=True, From 066d16b522ec77c5c4a71120fd29b8086044f675 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 1 Jul 2023 21:53:34 +0300 Subject: [PATCH 013/139] #1186 Renamed USER_IN_THREAD to USER_IN_TOPIC --- CHANGES/1161.feature.rst | 2 +- aiogram/fsm/strategy.py | 4 ++-- tests/test_fsm/test_strategy.py | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGES/1161.feature.rst b/CHANGES/1161.feature.rst index 819c697c..5a1e5927 100644 --- a/CHANGES/1161.feature.rst +++ b/CHANGES/1161.feature.rst @@ -7,7 +7,7 @@ The strategy can be changed in dispatcher: from aiogram.fsm.strategy import FSMStrategy ... dispatcher = Dispatcher( - fsm_strategy=FSMStrategy.USER_IN_THREAD, + fsm_strategy=FSMStrategy.USER_IN_TOPIC, storage=..., # Any persistent storage ) diff --git a/aiogram/fsm/strategy.py b/aiogram/fsm/strategy.py index 227924cb..2695d60e 100644 --- a/aiogram/fsm/strategy.py +++ b/aiogram/fsm/strategy.py @@ -6,7 +6,7 @@ class FSMStrategy(Enum): USER_IN_CHAT = auto() CHAT = auto() GLOBAL_USER = auto() - USER_IN_THREAD = auto() + USER_IN_TOPIC = auto() def apply_strategy( @@ -19,6 +19,6 @@ def apply_strategy( return chat_id, chat_id, None if strategy == FSMStrategy.GLOBAL_USER: return user_id, user_id, None - if strategy == FSMStrategy.USER_IN_THREAD: + if strategy == FSMStrategy.USER_IN_TOPIC: return chat_id, user_id, thread_id return chat_id, user_id, None diff --git a/tests/test_fsm/test_strategy.py b/tests/test_fsm/test_strategy.py index 3dab2b3d..782d1eeb 100644 --- a/tests/test_fsm/test_strategy.py +++ b/tests/test_fsm/test_strategy.py @@ -24,9 +24,9 @@ class TestStrategy: [FSMStrategy.GLOBAL_USER, CHAT, PRIVATE], [FSMStrategy.GLOBAL_USER, PRIVATE, PRIVATE], [FSMStrategy.GLOBAL_USER, THREAD, PRIVATE], - [FSMStrategy.USER_IN_THREAD, CHAT, CHAT], - [FSMStrategy.USER_IN_THREAD, PRIVATE, PRIVATE], - [FSMStrategy.USER_IN_THREAD, THREAD, THREAD], + [FSMStrategy.USER_IN_TOPIC, CHAT, CHAT], + [FSMStrategy.USER_IN_TOPIC, PRIVATE, PRIVATE], + [FSMStrategy.USER_IN_TOPIC, THREAD, THREAD], ], ) def test_strategy(self, strategy, case, expected): From 461e59bbdda94896043fce12a578b25d888da7c8 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 2 Jul 2023 15:07:19 +0300 Subject: [PATCH 014/139] Update pydantic to V2 (#1202) * Update pydantic, fix errors and warnings (all?) * Fixed typehints * Reformat code, removed unused imports * Fixed typing extensions version compatibility * Fixed coverage * Describe changes * Regen code --- .butcher/schema/schema.json | 12 +- .../types/InlineKeyboardButton/entity.json | 6 +- .../InlineQueryResultsButton/entity.json | 6 +- CHANGES/1202.misc.rst | 6 + aiogram/client/session/aiohttp.py | 2 +- aiogram/client/session/middlewares/base.py | 30 +++-- aiogram/client/session/middlewares/manager.py | 50 +++----- .../dispatcher/middlewares/user_context.py | 3 +- aiogram/filters/callback_data.py | 6 +- aiogram/methods/add_sticker_to_set.py | 2 - aiogram/methods/answer_callback_query.py | 2 +- aiogram/methods/answer_inline_query.py | 6 +- aiogram/methods/answer_pre_checkout_query.py | 2 +- aiogram/methods/answer_shipping_query.py | 2 +- aiogram/methods/answer_web_app_query.py | 2 - aiogram/methods/approve_chat_join_request.py | 2 +- aiogram/methods/ban_chat_member.py | 2 +- aiogram/methods/ban_chat_sender_chat.py | 2 +- aiogram/methods/base.py | 35 ++---- aiogram/methods/close.py | 2 - aiogram/methods/close_forum_topic.py | 2 +- aiogram/methods/close_general_forum_topic.py | 2 +- aiogram/methods/copy_message.py | 2 +- aiogram/methods/create_chat_invite_link.py | 2 +- aiogram/methods/create_forum_topic.py | 2 +- aiogram/methods/create_invoice_link.py | 2 +- aiogram/methods/create_new_sticker_set.py | 2 +- aiogram/methods/decline_chat_join_request.py | 2 +- aiogram/methods/delete_chat_photo.py | 2 +- aiogram/methods/delete_chat_sticker_set.py | 2 +- aiogram/methods/delete_forum_topic.py | 2 +- aiogram/methods/delete_message.py | 2 +- aiogram/methods/delete_my_commands.py | 2 +- aiogram/methods/delete_sticker_from_set.py | 2 - aiogram/methods/delete_sticker_set.py | 2 - aiogram/methods/delete_webhook.py | 2 +- aiogram/methods/edit_chat_invite_link.py | 2 +- aiogram/methods/edit_forum_topic.py | 2 +- aiogram/methods/edit_general_forum_topic.py | 2 +- aiogram/methods/edit_message_caption.py | 2 +- aiogram/methods/edit_message_live_location.py | 2 +- aiogram/methods/edit_message_media.py | 2 +- aiogram/methods/edit_message_reply_markup.py | 2 +- aiogram/methods/edit_message_text.py | 2 +- aiogram/methods/export_chat_invite_link.py | 2 +- aiogram/methods/forward_message.py | 2 +- aiogram/methods/get_chat.py | 2 +- aiogram/methods/get_chat_administrators.py | 2 +- aiogram/methods/get_chat_member.py | 2 +- aiogram/methods/get_chat_member_count.py | 2 +- aiogram/methods/get_chat_menu_button.py | 2 +- aiogram/methods/get_custom_emoji_stickers.py | 2 +- aiogram/methods/get_file.py | 2 - .../methods/get_forum_topic_icon_stickers.py | 2 +- aiogram/methods/get_game_high_scores.py | 2 +- aiogram/methods/get_me.py | 2 - aiogram/methods/get_my_commands.py | 2 +- .../get_my_default_administrator_rights.py | 2 +- aiogram/methods/get_my_description.py | 2 +- aiogram/methods/get_my_short_description.py | 2 +- aiogram/methods/get_sticker_set.py | 2 - aiogram/methods/get_updates.py | 2 +- aiogram/methods/get_user_profile_photos.py | 2 +- aiogram/methods/get_webhook_info.py | 2 - aiogram/methods/hide_general_forum_topic.py | 2 +- aiogram/methods/leave_chat.py | 2 +- aiogram/methods/log_out.py | 2 - aiogram/methods/pin_chat_message.py | 2 +- aiogram/methods/promote_chat_member.py | 2 +- aiogram/methods/reopen_forum_topic.py | 2 +- aiogram/methods/reopen_general_forum_topic.py | 2 +- aiogram/methods/restrict_chat_member.py | 2 +- aiogram/methods/revoke_chat_invite_link.py | 2 +- aiogram/methods/send_animation.py | 2 +- aiogram/methods/send_audio.py | 2 +- aiogram/methods/send_chat_action.py | 2 +- aiogram/methods/send_contact.py | 2 +- aiogram/methods/send_dice.py | 2 +- aiogram/methods/send_document.py | 2 +- aiogram/methods/send_game.py | 2 +- aiogram/methods/send_invoice.py | 2 +- aiogram/methods/send_location.py | 2 +- aiogram/methods/send_media_group.py | 2 +- aiogram/methods/send_message.py | 2 +- aiogram/methods/send_photo.py | 2 +- aiogram/methods/send_poll.py | 2 +- aiogram/methods/send_sticker.py | 2 +- aiogram/methods/send_venue.py | 2 +- aiogram/methods/send_video.py | 2 +- aiogram/methods/send_video_note.py | 2 +- aiogram/methods/send_voice.py | 2 +- .../set_chat_administrator_custom_title.py | 2 +- aiogram/methods/set_chat_description.py | 2 +- aiogram/methods/set_chat_menu_button.py | 2 +- aiogram/methods/set_chat_permissions.py | 2 +- aiogram/methods/set_chat_photo.py | 2 +- aiogram/methods/set_chat_sticker_set.py | 2 +- aiogram/methods/set_chat_title.py | 2 +- .../set_custom_emoji_sticker_set_thumbnail.py | 2 +- aiogram/methods/set_game_score.py | 2 +- aiogram/methods/set_my_commands.py | 2 +- .../set_my_default_administrator_rights.py | 2 +- aiogram/methods/set_my_description.py | 2 +- aiogram/methods/set_my_short_description.py | 2 +- aiogram/methods/set_passport_data_errors.py | 2 +- aiogram/methods/set_sticker_emoji_list.py | 2 +- aiogram/methods/set_sticker_keywords.py | 2 +- aiogram/methods/set_sticker_mask_position.py | 2 +- .../methods/set_sticker_position_in_set.py | 2 - aiogram/methods/set_sticker_set_thumbnail.py | 2 +- aiogram/methods/set_sticker_set_title.py | 2 - aiogram/methods/set_webhook.py | 2 +- aiogram/methods/stop_message_live_location.py | 2 +- aiogram/methods/stop_poll.py | 2 +- aiogram/methods/unban_chat_member.py | 2 +- aiogram/methods/unban_chat_sender_chat.py | 2 +- aiogram/methods/unhide_general_forum_topic.py | 2 +- aiogram/methods/unpin_all_chat_messages.py | 2 +- .../methods/unpin_all_forum_topic_messages.py | 2 +- aiogram/methods/unpin_chat_message.py | 2 +- aiogram/methods/upload_sticker_file.py | 2 - aiogram/types/__init__.py | 15 ++- aiogram/types/base.py | 24 ++-- ...t_command_scope_all_chat_administrators.py | 6 +- .../bot_command_scope_all_group_chats.py | 4 +- .../bot_command_scope_all_private_chats.py | 4 +- aiogram/types/bot_command_scope_chat.py | 6 +- .../bot_command_scope_chat_administrators.py | 8 +- .../types/bot_command_scope_chat_member.py | 6 +- aiogram/types/bot_command_scope_default.py | 4 +- aiogram/types/chat_member_administrator.py | 6 +- aiogram/types/chat_member_banned.py | 6 +- aiogram/types/chat_member_left.py | 6 +- aiogram/types/chat_member_member.py | 6 +- aiogram/types/chat_member_owner.py | 6 +- aiogram/types/chat_member_restricted.py | 6 +- aiogram/types/error_event.py | 9 +- aiogram/types/force_reply.py | 6 +- aiogram/types/inline_query_result_article.py | 6 +- aiogram/types/inline_query_result_audio.py | 6 +- .../types/inline_query_result_cached_audio.py | 6 +- .../inline_query_result_cached_document.py | 6 +- .../types/inline_query_result_cached_gif.py | 6 +- .../inline_query_result_cached_mpeg4_gif.py | 6 +- .../types/inline_query_result_cached_photo.py | 6 +- .../inline_query_result_cached_sticker.py | 6 +- .../types/inline_query_result_cached_video.py | 6 +- .../types/inline_query_result_cached_voice.py | 6 +- aiogram/types/inline_query_result_contact.py | 6 +- aiogram/types/inline_query_result_document.py | 6 +- aiogram/types/inline_query_result_game.py | 6 +- aiogram/types/inline_query_result_gif.py | 6 +- aiogram/types/inline_query_result_location.py | 6 +- .../types/inline_query_result_mpeg4_gif.py | 6 +- aiogram/types/inline_query_result_photo.py | 6 +- aiogram/types/inline_query_result_venue.py | 6 +- aiogram/types/inline_query_result_video.py | 6 +- aiogram/types/inline_query_result_voice.py | 6 +- aiogram/types/inline_query_results_button.py | 2 +- aiogram/types/input_file.py | 4 - aiogram/types/input_media_animation.py | 6 +- aiogram/types/input_media_audio.py | 6 +- aiogram/types/input_media_document.py | 6 +- aiogram/types/input_media_photo.py | 6 +- aiogram/types/input_media_video.py | 6 +- aiogram/types/menu_button_commands.py | 4 +- aiogram/types/menu_button_default.py | 4 +- aiogram/types/menu_button_web_app.py | 6 +- .../passport_element_error_data_field.py | 4 +- aiogram/types/passport_element_error_file.py | 4 +- aiogram/types/passport_element_error_files.py | 6 +- .../passport_element_error_front_side.py | 4 +- .../passport_element_error_reverse_side.py | 4 +- .../types/passport_element_error_selfie.py | 4 +- ...passport_element_error_translation_file.py | 4 +- ...assport_element_error_translation_files.py | 6 +- .../passport_element_error_unspecified.py | 4 +- aiogram/types/reply_keyboard_remove.py | 6 +- aiogram/utils/i18n/middleware.py | 2 +- pyproject.toml | 18 +-- .../test_methods/test_send_message.py | 8 +- .../test_filters/test_chat_member_updated.py | 116 ++++++++++-------- 182 files changed, 385 insertions(+), 485 deletions(-) create mode 100644 CHANGES/1202.misc.rst diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json index c3638d34..fa7a76d3 100644 --- a/.butcher/schema/schema.json +++ b/.butcher/schema/schema.json @@ -2928,9 +2928,9 @@ }, { "type": "String", - "description": "If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n\nNote: This offers an easy way for users to start using your bot in inline mode when they are currently in a private chat with it. Especially useful when combined with switch_pm… actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.", - "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.
\n
\nNote: This offers an easy way for users to start using your bot in inline mode when they are currently in a private chat with it. Especially useful when combined with switch_pm… actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.", - "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n\n\n\n**Note:** This offers an easy way for users to start using your bot in `inline mode `_ when they are currently in a private chat with it. Especially useful when combined with `https://core.telegram.org/bots/api#answerinlinequery `_ *switch_pm…* actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.\n", + "description": "If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.", + "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.", + "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n", "name": "switch_inline_query", "required": false }, @@ -9629,9 +9629,9 @@ }, { "type": "WebAppInfo", - "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", - "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", - "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.\n", + "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", "name": "web_app", "required": false }, diff --git a/.butcher/types/InlineKeyboardButton/entity.json b/.butcher/types/InlineKeyboardButton/entity.json index c7919e99..9c1baae5 100644 --- a/.butcher/types/InlineKeyboardButton/entity.json +++ b/.butcher/types/InlineKeyboardButton/entity.json @@ -53,9 +53,9 @@ }, { "type": "String", - "description": "If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n\nNote: This offers an easy way for users to start using your bot in inline mode when they are currently in a private chat with it. Especially useful when combined with switch_pm… actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.", - "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.
\n
\nNote: This offers an easy way for users to start using your bot in inline mode when they are currently in a private chat with it. Especially useful when combined with switch_pm… actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.", - "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n\n\n\n**Note:** This offers an easy way for users to start using your bot in `inline mode `_ when they are currently in a private chat with it. Especially useful when combined with `https://core.telegram.org/bots/api#answerinlinequery `_ *switch_pm…* actions - in this case the user will be automatically returned to the chat they switched from, skipping the chat selection screen.\n", + "description": "If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.", + "html_description": "Optional. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.", + "rst_description": "*Optional*. If set, pressing the button will prompt the user to select one of their chats, open that chat and insert the bot's username and the specified inline query in the input field. May be empty, in which case just the bot's username will be inserted.\n", "name": "switch_inline_query", "required": false }, diff --git a/.butcher/types/InlineQueryResultsButton/entity.json b/.butcher/types/InlineQueryResultsButton/entity.json index 169b1c2c..ce4cdf1e 100644 --- a/.butcher/types/InlineQueryResultsButton/entity.json +++ b/.butcher/types/InlineQueryResultsButton/entity.json @@ -21,9 +21,9 @@ }, { "type": "WebAppInfo", - "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", - "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method web_app_switch_inline_query inside the Web App.", - "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.\n", + "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", "name": "web_app", "required": false }, diff --git a/CHANGES/1202.misc.rst b/CHANGES/1202.misc.rst new file mode 100644 index 00000000..9aeb4099 --- /dev/null +++ b/CHANGES/1202.misc.rst @@ -0,0 +1,6 @@ +Updated `Pydantic to V2 `_ + +.. warning:: + + Be careful, not all libraries is already updated to using V2 + (for example at the time, when this warning was added FastAPI still not support V2) diff --git a/aiogram/client/session/aiohttp.py b/aiogram/client/session/aiohttp.py index c15faf7a..b4c791e8 100644 --- a/aiogram/client/session/aiohttp.py +++ b/aiogram/client/session/aiohttp.py @@ -141,7 +141,7 @@ class AiohttpSession(BaseSession): def build_form_data(self, bot: Bot, method: TelegramMethod[TelegramType]) -> FormData: form = FormData(quote_fields=False) files: Dict[str, InputFile] = {} - for key, value in method.dict().items(): + for key, value in method.model_dump(warnings=False).items(): value = self.prepare_value(value, bot=bot, files=files) if not value: continue diff --git a/aiogram/client/session/middlewares/base.py b/aiogram/client/session/middlewares/base.py index 90dcd09f..c5f3e7cf 100644 --- a/aiogram/client/session/middlewares/base.py +++ b/aiogram/client/session/middlewares/base.py @@ -1,7 +1,7 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, Awaitable, Callable, Union +from typing import TYPE_CHECKING, Protocol from aiogram.methods import Response, TelegramMethod from aiogram.methods.base import TelegramType @@ -9,16 +9,24 @@ from aiogram.methods.base import TelegramType if TYPE_CHECKING: from ...bot import Bot -NextRequestMiddlewareType = Callable[ - ["Bot", TelegramMethod[TelegramType]], Awaitable[Response[TelegramType]] -] -RequestMiddlewareType = Union[ - "BaseRequestMiddleware", - Callable[ - [NextRequestMiddlewareType[TelegramType], "Bot", TelegramMethod[TelegramType]], - Awaitable[Response[TelegramType]], - ], -] + +class NextRequestMiddlewareType(Protocol[TelegramType]): # pragma: no cover + async def __call__( + self, + bot: "Bot", + method: TelegramMethod[TelegramType], + ) -> Response[TelegramType]: + pass + + +class RequestMiddlewareType(Protocol): # pragma: no cover + async def __call__( + self, + make_request: NextRequestMiddlewareType[TelegramType], + bot: "Bot", + method: TelegramMethod[TelegramType], + ) -> Response[TelegramType]: + pass class BaseRequestMiddleware(ABC): diff --git a/aiogram/client/session/middlewares/manager.py b/aiogram/client/session/middlewares/manager.py index 0e76801e..78015309 100644 --- a/aiogram/client/session/middlewares/manager.py +++ b/aiogram/client/session/middlewares/manager.py @@ -1,68 +1,48 @@ from __future__ import annotations from functools import partial -from typing import ( - TYPE_CHECKING, - Any, - Awaitable, - Callable, - List, - Optional, - Sequence, - Union, - overload, -) +from typing import Any, Callable, List, Optional, Sequence, Union, cast, overload from aiogram.client.session.middlewares.base import ( NextRequestMiddlewareType, RequestMiddlewareType, ) -from aiogram.methods import Response -from aiogram.methods.base import TelegramMethod, TelegramType -from aiogram.types import TelegramObject - -if TYPE_CHECKING: - from aiogram import Bot +from aiogram.methods.base import TelegramType -class RequestMiddlewareManager(Sequence[RequestMiddlewareType[TelegramObject]]): +class RequestMiddlewareManager(Sequence[RequestMiddlewareType]): def __init__(self) -> None: - self._middlewares: List[RequestMiddlewareType[TelegramObject]] = [] + self._middlewares: List[RequestMiddlewareType] = [] def register( self, - middleware: RequestMiddlewareType[TelegramObject], - ) -> RequestMiddlewareType[TelegramObject]: + middleware: RequestMiddlewareType, + ) -> RequestMiddlewareType: self._middlewares.append(middleware) return middleware - def unregister(self, middleware: RequestMiddlewareType[TelegramObject]) -> None: + def unregister(self, middleware: RequestMiddlewareType) -> None: self._middlewares.remove(middleware) def __call__( self, - middleware: Optional[RequestMiddlewareType[TelegramObject]] = None, - ) -> Union[ - Callable[[RequestMiddlewareType[TelegramObject]], RequestMiddlewareType[TelegramObject]], - RequestMiddlewareType[TelegramObject], - ]: + middleware: Optional[RequestMiddlewareType] = None, + ) -> Union[Callable[[RequestMiddlewareType], RequestMiddlewareType], RequestMiddlewareType,]: if middleware is None: return self.register return self.register(middleware) @overload - def __getitem__(self, item: int) -> RequestMiddlewareType[TelegramObject]: + def __getitem__(self, item: int) -> RequestMiddlewareType: pass @overload - def __getitem__(self, item: slice) -> Sequence[RequestMiddlewareType[TelegramObject]]: + def __getitem__(self, item: slice) -> Sequence[RequestMiddlewareType]: pass def __getitem__( self, item: Union[int, slice] - ) -> Union[ - RequestMiddlewareType[TelegramObject], Sequence[RequestMiddlewareType[TelegramObject]] - ]: + ) -> Union[RequestMiddlewareType, Sequence[RequestMiddlewareType]]: return self._middlewares[item] def __len__(self) -> int: @@ -70,10 +50,10 @@ class RequestMiddlewareManager(Sequence[RequestMiddlewareType[TelegramObject]]): def wrap_middlewares( self, - callback: Callable[[Bot, TelegramMethod[TelegramType]], Awaitable[Response[TelegramType]]], + callback: NextRequestMiddlewareType[TelegramType], **kwargs: Any, ) -> NextRequestMiddlewareType[TelegramType]: middleware = partial(callback, **kwargs) for m in reversed(self._middlewares): - middleware = partial(m, middleware) # type: ignore - return middleware + middleware = partial(m, middleware) + return cast(NextRequestMiddlewareType[TelegramType], middleware) diff --git a/aiogram/dispatcher/middlewares/user_context.py b/aiogram/dispatcher/middlewares/user_context.py index 9ede4334..12bb4864 100644 --- a/aiogram/dispatcher/middlewares/user_context.py +++ b/aiogram/dispatcher/middlewares/user_context.py @@ -1,5 +1,4 @@ -from contextlib import contextmanager -from typing import Any, Awaitable, Callable, Dict, Iterator, Optional, Tuple +from typing import Any, Awaitable, Callable, Dict, Optional, Tuple from aiogram.dispatcher.middlewares.base import BaseMiddleware from aiogram.types import Chat, TelegramObject, Update, User diff --git a/aiogram/filters/callback_data.py b/aiogram/filters/callback_data.py index 05d7783d..96c8f3af 100644 --- a/aiogram/filters/callback_data.py +++ b/aiogram/filters/callback_data.py @@ -110,7 +110,7 @@ class CallbackData(BaseModel): :return: instance of CallbackData """ prefix, *parts = value.split(cls.__separator__) - names = cls.__fields__.keys() + names = cls.model_fields.keys() if len(parts) != len(names): raise TypeError( f"Callback data {cls.__name__!r} takes {len(names)} arguments " @@ -120,8 +120,8 @@ class CallbackData(BaseModel): raise ValueError(f"Bad prefix ({prefix!r} != {cls.__prefix__!r})") payload = {} for k, v in zip(names, parts): # type: str, Optional[str] - if field := cls.__fields__.get(k): - if v == "" and not field.required: + if field := cls.model_fields.get(k): + if v == "" and not field.is_required(): v = None payload[k] = v return cls(**payload) diff --git a/aiogram/methods/add_sticker_to_set.py b/aiogram/methods/add_sticker_to_set.py index 49759b84..2c6502a5 100644 --- a/aiogram/methods/add_sticker_to_set.py +++ b/aiogram/methods/add_sticker_to_set.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import InputSticker from .base import TelegramMethod diff --git a/aiogram/methods/answer_callback_query.py b/aiogram/methods/answer_callback_query.py index 4b3e16fd..067c8b34 100644 --- a/aiogram/methods/answer_callback_query.py +++ b/aiogram/methods/answer_callback_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/answer_inline_query.py b/aiogram/methods/answer_inline_query.py index 7b6b6d88..53eaf5be 100644 --- a/aiogram/methods/answer_inline_query.py +++ b/aiogram/methods/answer_inline_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from pydantic import Field @@ -32,12 +32,12 @@ class AnswerInlineQuery(TelegramMethod[bool]): """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.""" button: Optional[InlineQueryResultsButton] = None """A JSON-serialized object describing a button to be shown above inline query results""" - switch_pm_parameter: Optional[str] = Field(None, deprecated=True) + switch_pm_parameter: Optional[str] = Field(None, json_schema_extra={"deprecated": True}) """`Deep-linking `_ parameter for the /start message sent to the bot when user presses the switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. .. deprecated:: API:6.7 https://core.telegram.org/bots/api-changelog#april-21-2023""" - switch_pm_text: Optional[str] = Field(None, deprecated=True) + switch_pm_text: Optional[str] = Field(None, json_schema_extra={"deprecated": True}) """If passed, clients will display a button with specified text that switches the user to a private chat with the bot and sends the bot a start message with the parameter *switch_pm_parameter* .. deprecated:: API:6.7 diff --git a/aiogram/methods/answer_pre_checkout_query.py b/aiogram/methods/answer_pre_checkout_query.py index a87929fb..8d1679cd 100644 --- a/aiogram/methods/answer_pre_checkout_query.py +++ b/aiogram/methods/answer_pre_checkout_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/answer_shipping_query.py b/aiogram/methods/answer_shipping_query.py index 4e62d0cb..81c1eaa6 100644 --- a/aiogram/methods/answer_shipping_query.py +++ b/aiogram/methods/answer_shipping_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import ShippingOption from .base import TelegramMethod diff --git a/aiogram/methods/answer_web_app_query.py b/aiogram/methods/answer_web_app_query.py index d45e249d..8bb1abc8 100644 --- a/aiogram/methods/answer_web_app_query.py +++ b/aiogram/methods/answer_web_app_query.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import InlineQueryResult, SentWebAppMessage from .base import TelegramMethod diff --git a/aiogram/methods/approve_chat_join_request.py b/aiogram/methods/approve_chat_join_request.py index 83e34599..4e4693f8 100644 --- a/aiogram/methods/approve_chat_join_request.py +++ b/aiogram/methods/approve_chat_join_request.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/ban_chat_member.py b/aiogram/methods/ban_chat_member.py index ecc468ee..f64791fd 100644 --- a/aiogram/methods/ban_chat_member.py +++ b/aiogram/methods/ban_chat_member.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/ban_chat_sender_chat.py b/aiogram/methods/ban_chat_sender_chat.py index e63f2ecc..50d51188 100644 --- a/aiogram/methods/ban_chat_sender_chat.py +++ b/aiogram/methods/ban_chat_sender_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/base.py b/aiogram/methods/base.py index 33045bf0..53175784 100644 --- a/aiogram/methods/base.py +++ b/aiogram/methods/base.py @@ -3,8 +3,8 @@ from __future__ import annotations from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Any, Dict, Generator, Generic, Optional, TypeVar -from pydantic import BaseConfig, BaseModel, Extra, root_validator -from pydantic.generics import GenericModel +from pydantic import BaseModel, ConfigDict +from pydantic.functional_validators import model_validator from ..types import InputFile, ResponseParameters from ..types.base import UNSET_TYPE @@ -16,16 +16,15 @@ TelegramType = TypeVar("TelegramType", bound=Any) class Request(BaseModel): + model_config = ConfigDict(arbitrary_types_allowed=True) + method: str data: Dict[str, Optional[Any]] files: Optional[Dict[str, InputFile]] - class Config(BaseConfig): - arbitrary_types_allowed = True - -class Response(GenericModel, Generic[TelegramType]): +class Response(BaseModel, Generic[TelegramType]): ok: bool result: Optional[TelegramType] = None description: Optional[str] = None @@ -33,16 +32,14 @@ class Response(GenericModel, Generic[TelegramType]): parameters: Optional[ResponseParameters] = None -class TelegramMethod(ABC, BaseModel, Generic[TelegramType]): - class Config(BaseConfig): - # use_enum_values = True - extra = Extra.allow - allow_population_by_field_name = True - arbitrary_types_allowed = True - orm_mode = True - smart_union = True # https://github.com/aiogram/aiogram/issues/901 +class TelegramMethod(BaseModel, Generic[TelegramType], ABC): + model_config = ConfigDict( + extra="allow", + populate_by_name=True, + arbitrary_types_allowed=True, + ) - @root_validator(pre=True) + @model_validator(mode="before") def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]: """ Remove UNSET before fields validation. @@ -64,12 +61,6 @@ class TelegramMethod(ABC, BaseModel, Generic[TelegramType]): def __api_method__(self) -> str: pass - def dict(self, **kwargs: Any) -> Any: - # override dict of pydantic.BaseModel to overcome exporting request_timeout field - exclude = kwargs.pop("exclude", set()) - - return super().dict(exclude=exclude, **kwargs) - def build_response(self, data: Dict[str, Any]) -> Response[TelegramType]: # noinspection PyTypeChecker return Response[self.__returning__](**data) # type: ignore @@ -77,8 +68,6 @@ class TelegramMethod(ABC, BaseModel, Generic[TelegramType]): async def emit(self, bot: Bot) -> TelegramType: return await bot(self) - as_ = emit - def __await__(self) -> Generator[Any, None, TelegramType]: from aiogram.client.bot import Bot diff --git a/aiogram/methods/close.py b/aiogram/methods/close.py index c8e9008d..7c33eca3 100644 --- a/aiogram/methods/close.py +++ b/aiogram/methods/close.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/close_forum_topic.py b/aiogram/methods/close_forum_topic.py index 7ab5a479..3f9f50ea 100644 --- a/aiogram/methods/close_forum_topic.py +++ b/aiogram/methods/close_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/close_general_forum_topic.py b/aiogram/methods/close_general_forum_topic.py index bc44bde5..3c836177 100644 --- a/aiogram/methods/close_general_forum_topic.py +++ b/aiogram/methods/close_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/copy_message.py b/aiogram/methods/copy_message.py index 5e34bb7d..4fc4b5b9 100644 --- a/aiogram/methods/copy_message.py +++ b/aiogram/methods/copy_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/create_chat_invite_link.py b/aiogram/methods/create_chat_invite_link.py index 539115bb..1bdae992 100644 --- a/aiogram/methods/create_chat_invite_link.py +++ b/aiogram/methods/create_chat_invite_link.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ChatInviteLink from .base import TelegramMethod diff --git a/aiogram/methods/create_forum_topic.py b/aiogram/methods/create_forum_topic.py index f4b3f4da..ece98d43 100644 --- a/aiogram/methods/create_forum_topic.py +++ b/aiogram/methods/create_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ForumTopic from .base import TelegramMethod diff --git a/aiogram/methods/create_invoice_link.py b/aiogram/methods/create_invoice_link.py index de6497c1..8b6fc883 100644 --- a/aiogram/methods/create_invoice_link.py +++ b/aiogram/methods/create_invoice_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import LabeledPrice from .base import TelegramMethod diff --git a/aiogram/methods/create_new_sticker_set.py b/aiogram/methods/create_new_sticker_set.py index 6406df81..abf25d79 100644 --- a/aiogram/methods/create_new_sticker_set.py +++ b/aiogram/methods/create_new_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import InputSticker from .base import TelegramMethod diff --git a/aiogram/methods/decline_chat_join_request.py b/aiogram/methods/decline_chat_join_request.py index 7861b7bb..0334c299 100644 --- a/aiogram/methods/decline_chat_join_request.py +++ b/aiogram/methods/decline_chat_join_request.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/delete_chat_photo.py b/aiogram/methods/delete_chat_photo.py index 11a3836e..e146cdac 100644 --- a/aiogram/methods/delete_chat_photo.py +++ b/aiogram/methods/delete_chat_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/delete_chat_sticker_set.py b/aiogram/methods/delete_chat_sticker_set.py index 681293df..2162f860 100644 --- a/aiogram/methods/delete_chat_sticker_set.py +++ b/aiogram/methods/delete_chat_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/delete_forum_topic.py b/aiogram/methods/delete_forum_topic.py index 4733c67d..1e4f9b46 100644 --- a/aiogram/methods/delete_forum_topic.py +++ b/aiogram/methods/delete_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/delete_message.py b/aiogram/methods/delete_message.py index 468411d5..99c972d7 100644 --- a/aiogram/methods/delete_message.py +++ b/aiogram/methods/delete_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/delete_my_commands.py b/aiogram/methods/delete_my_commands.py index d73814db..5fc1044e 100644 --- a/aiogram/methods/delete_my_commands.py +++ b/aiogram/methods/delete_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import BotCommandScope from .base import TelegramMethod diff --git a/aiogram/methods/delete_sticker_from_set.py b/aiogram/methods/delete_sticker_from_set.py index 96219c15..1ab3e3a8 100644 --- a/aiogram/methods/delete_sticker_from_set.py +++ b/aiogram/methods/delete_sticker_from_set.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/delete_sticker_set.py b/aiogram/methods/delete_sticker_set.py index d5a0f67e..27b4cfc2 100644 --- a/aiogram/methods/delete_sticker_set.py +++ b/aiogram/methods/delete_sticker_set.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/delete_webhook.py b/aiogram/methods/delete_webhook.py index b9d6cd7b..ef1bdc88 100644 --- a/aiogram/methods/delete_webhook.py +++ b/aiogram/methods/delete_webhook.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/edit_chat_invite_link.py b/aiogram/methods/edit_chat_invite_link.py index 26f4ccc3..f94111ed 100644 --- a/aiogram/methods/edit_chat_invite_link.py +++ b/aiogram/methods/edit_chat_invite_link.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ChatInviteLink from .base import TelegramMethod diff --git a/aiogram/methods/edit_forum_topic.py b/aiogram/methods/edit_forum_topic.py index f87d0cea..46ef0e58 100644 --- a/aiogram/methods/edit_forum_topic.py +++ b/aiogram/methods/edit_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/edit_general_forum_topic.py b/aiogram/methods/edit_general_forum_topic.py index f35c2048..1de088cf 100644 --- a/aiogram/methods/edit_general_forum_topic.py +++ b/aiogram/methods/edit_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/edit_message_caption.py b/aiogram/methods/edit_message_caption.py index 66cdeac9..ee2f8482 100644 --- a/aiogram/methods/edit_message_caption.py +++ b/aiogram/methods/edit_message_caption.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import UNSET_PARSE_MODE, InlineKeyboardMarkup, Message, MessageEntity from .base import TelegramMethod diff --git a/aiogram/methods/edit_message_live_location.py b/aiogram/methods/edit_message_live_location.py index e35c3225..43ff24e7 100644 --- a/aiogram/methods/edit_message_live_location.py +++ b/aiogram/methods/edit_message_live_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod diff --git a/aiogram/methods/edit_message_media.py b/aiogram/methods/edit_message_media.py index f986a841..f6ab0166 100644 --- a/aiogram/methods/edit_message_media.py +++ b/aiogram/methods/edit_message_media.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InlineKeyboardMarkup, InputMedia, Message from .base import TelegramMethod diff --git a/aiogram/methods/edit_message_reply_markup.py b/aiogram/methods/edit_message_reply_markup.py index a828c9d8..7c8be63f 100644 --- a/aiogram/methods/edit_message_reply_markup.py +++ b/aiogram/methods/edit_message_reply_markup.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod diff --git a/aiogram/methods/edit_message_text.py b/aiogram/methods/edit_message_text.py index 79887c97..357a757b 100644 --- a/aiogram/methods/edit_message_text.py +++ b/aiogram/methods/edit_message_text.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import UNSET_PARSE_MODE, InlineKeyboardMarkup, Message, MessageEntity from ..types.base import UNSET_DISABLE_WEB_PAGE_PREVIEW diff --git a/aiogram/methods/export_chat_invite_link.py b/aiogram/methods/export_chat_invite_link.py index ba4436ed..61642387 100644 --- a/aiogram/methods/export_chat_invite_link.py +++ b/aiogram/methods/export_chat_invite_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/forward_message.py b/aiogram/methods/forward_message.py index 45c084a0..86d33f8d 100644 --- a/aiogram/methods/forward_message.py +++ b/aiogram/methods/forward_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import Message from ..types.base import UNSET_PROTECT_CONTENT diff --git a/aiogram/methods/get_chat.py b/aiogram/methods/get_chat.py index a565529a..d0416238 100644 --- a/aiogram/methods/get_chat.py +++ b/aiogram/methods/get_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from ..types import Chat from .base import TelegramMethod diff --git a/aiogram/methods/get_chat_administrators.py b/aiogram/methods/get_chat_administrators.py index 3e0cac3c..b6479ec8 100644 --- a/aiogram/methods/get_chat_administrators.py +++ b/aiogram/methods/get_chat_administrators.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Union +from typing import List, Union from ..types import ( ChatMemberAdministrator, diff --git a/aiogram/methods/get_chat_member.py b/aiogram/methods/get_chat_member.py index ab308024..9e8ba619 100644 --- a/aiogram/methods/get_chat_member.py +++ b/aiogram/methods/get_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from ..types import ( ChatMemberAdministrator, diff --git a/aiogram/methods/get_chat_member_count.py b/aiogram/methods/get_chat_member_count.py index c1b08e5b..a411d0c9 100644 --- a/aiogram/methods/get_chat_member_count.py +++ b/aiogram/methods/get_chat_member_count.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/get_chat_menu_button.py b/aiogram/methods/get_chat_menu_button.py index 6679d5df..df280b66 100644 --- a/aiogram/methods/get_chat_menu_button.py +++ b/aiogram/methods/get_chat_menu_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp from .base import TelegramMethod diff --git a/aiogram/methods/get_custom_emoji_stickers.py b/aiogram/methods/get_custom_emoji_stickers.py index 3522b539..a98582d9 100644 --- a/aiogram/methods/get_custom_emoji_stickers.py +++ b/aiogram/methods/get_custom_emoji_stickers.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import List from ..types import Sticker from .base import TelegramMethod diff --git a/aiogram/methods/get_file.py b/aiogram/methods/get_file.py index b84ff940..8358e250 100644 --- a/aiogram/methods/get_file.py +++ b/aiogram/methods/get_file.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import File from .base import TelegramMethod diff --git a/aiogram/methods/get_forum_topic_icon_stickers.py b/aiogram/methods/get_forum_topic_icon_stickers.py index 31965661..5c233215 100644 --- a/aiogram/methods/get_forum_topic_icon_stickers.py +++ b/aiogram/methods/get_forum_topic_icon_stickers.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import List from ..types import Sticker from .base import TelegramMethod diff --git a/aiogram/methods/get_game_high_scores.py b/aiogram/methods/get_game_high_scores.py index aff1c56a..1251658c 100644 --- a/aiogram/methods/get_game_high_scores.py +++ b/aiogram/methods/get_game_high_scores.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import GameHighScore from .base import TelegramMethod diff --git a/aiogram/methods/get_me.py b/aiogram/methods/get_me.py index 1a7f1fe1..c2cc52f9 100644 --- a/aiogram/methods/get_me.py +++ b/aiogram/methods/get_me.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import User from .base import TelegramMethod diff --git a/aiogram/methods/get_my_commands.py b/aiogram/methods/get_my_commands.py index d1e5c9c3..9d4a696f 100644 --- a/aiogram/methods/get_my_commands.py +++ b/aiogram/methods/get_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import BotCommand, BotCommandScope from .base import TelegramMethod diff --git a/aiogram/methods/get_my_default_administrator_rights.py b/aiogram/methods/get_my_default_administrator_rights.py index d20e7a15..1c7c0195 100644 --- a/aiogram/methods/get_my_default_administrator_rights.py +++ b/aiogram/methods/get_my_default_administrator_rights.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import ChatAdministratorRights from .base import TelegramMethod diff --git a/aiogram/methods/get_my_description.py b/aiogram/methods/get_my_description.py index 3b0534ff..db002daa 100644 --- a/aiogram/methods/get_my_description.py +++ b/aiogram/methods/get_my_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import BotDescription from .base import TelegramMethod diff --git a/aiogram/methods/get_my_short_description.py b/aiogram/methods/get_my_short_description.py index 81731142..962642e4 100644 --- a/aiogram/methods/get_my_short_description.py +++ b/aiogram/methods/get_my_short_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import BotShortDescription from .base import TelegramMethod diff --git a/aiogram/methods/get_sticker_set.py b/aiogram/methods/get_sticker_set.py index 87041172..43ab5311 100644 --- a/aiogram/methods/get_sticker_set.py +++ b/aiogram/methods/get_sticker_set.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import StickerSet from .base import TelegramMethod diff --git a/aiogram/methods/get_updates.py b/aiogram/methods/get_updates.py index b22c9755..80abf78c 100644 --- a/aiogram/methods/get_updates.py +++ b/aiogram/methods/get_updates.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import Update from .base import TelegramMethod diff --git a/aiogram/methods/get_user_profile_photos.py b/aiogram/methods/get_user_profile_photos.py index 47abc196..e58bd970 100644 --- a/aiogram/methods/get_user_profile_photos.py +++ b/aiogram/methods/get_user_profile_photos.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import UserProfilePhotos from .base import TelegramMethod diff --git a/aiogram/methods/get_webhook_info.py b/aiogram/methods/get_webhook_info.py index 5e4e194c..c9f0e46f 100644 --- a/aiogram/methods/get_webhook_info.py +++ b/aiogram/methods/get_webhook_info.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import WebhookInfo from .base import TelegramMethod diff --git a/aiogram/methods/hide_general_forum_topic.py b/aiogram/methods/hide_general_forum_topic.py index 2587cf9e..25e6421b 100644 --- a/aiogram/methods/hide_general_forum_topic.py +++ b/aiogram/methods/hide_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/leave_chat.py b/aiogram/methods/leave_chat.py index 5b2e15cf..f1784f65 100644 --- a/aiogram/methods/leave_chat.py +++ b/aiogram/methods/leave_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/log_out.py b/aiogram/methods/log_out.py index 3f3ea3de..2a626535 100644 --- a/aiogram/methods/log_out.py +++ b/aiogram/methods/log_out.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/pin_chat_message.py b/aiogram/methods/pin_chat_message.py index d1641eea..24e7a7c1 100644 --- a/aiogram/methods/pin_chat_message.py +++ b/aiogram/methods/pin_chat_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/promote_chat_member.py b/aiogram/methods/promote_chat_member.py index d8f6096f..c74d1de9 100644 --- a/aiogram/methods/promote_chat_member.py +++ b/aiogram/methods/promote_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/reopen_forum_topic.py b/aiogram/methods/reopen_forum_topic.py index efe1c31d..729db37c 100644 --- a/aiogram/methods/reopen_forum_topic.py +++ b/aiogram/methods/reopen_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/reopen_general_forum_topic.py b/aiogram/methods/reopen_general_forum_topic.py index 381278a9..ea3a4a47 100644 --- a/aiogram/methods/reopen_general_forum_topic.py +++ b/aiogram/methods/reopen_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/restrict_chat_member.py b/aiogram/methods/restrict_chat_member.py index efea2f97..9240ea60 100644 --- a/aiogram/methods/restrict_chat_member.py +++ b/aiogram/methods/restrict_chat_member.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ChatPermissions from .base import TelegramMethod diff --git a/aiogram/methods/revoke_chat_invite_link.py b/aiogram/methods/revoke_chat_invite_link.py index ad31e77d..e7d9c50e 100644 --- a/aiogram/methods/revoke_chat_invite_link.py +++ b/aiogram/methods/revoke_chat_invite_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from ..types import ChatInviteLink from .base import TelegramMethod diff --git a/aiogram/methods/send_animation.py b/aiogram/methods/send_animation.py index 14029d25..088ce252 100644 --- a/aiogram/methods/send_animation.py +++ b/aiogram/methods/send_animation.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_audio.py b/aiogram/methods/send_audio.py index e0f4b900..e947cbde 100644 --- a/aiogram/methods/send_audio.py +++ b/aiogram/methods/send_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_chat_action.py b/aiogram/methods/send_chat_action.py index d21dc68c..009fea09 100644 --- a/aiogram/methods/send_chat_action.py +++ b/aiogram/methods/send_chat_action.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/send_contact.py b/aiogram/methods/send_contact.py index 35473338..d0454674 100644 --- a/aiogram/methods/send_contact.py +++ b/aiogram/methods/send_contact.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_dice.py b/aiogram/methods/send_dice.py index 9fa2ce70..bc58d53a 100644 --- a/aiogram/methods/send_dice.py +++ b/aiogram/methods/send_dice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_document.py b/aiogram/methods/send_document.py index 5c83beb3..cacb62a5 100644 --- a/aiogram/methods/send_document.py +++ b/aiogram/methods/send_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_game.py b/aiogram/methods/send_game.py index ab55a459..f713d6a6 100644 --- a/aiogram/methods/send_game.py +++ b/aiogram/methods/send_game.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import InlineKeyboardMarkup, Message from ..types.base import UNSET_PROTECT_CONTENT diff --git a/aiogram/methods/send_invoice.py b/aiogram/methods/send_invoice.py index d08002a9..aca8aa71 100644 --- a/aiogram/methods/send_invoice.py +++ b/aiogram/methods/send_invoice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import InlineKeyboardMarkup, LabeledPrice, Message from ..types.base import UNSET_PROTECT_CONTENT diff --git a/aiogram/methods/send_location.py b/aiogram/methods/send_location.py index 845b4741..ddfb3604 100644 --- a/aiogram/methods/send_location.py +++ b/aiogram/methods/send_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_media_group.py b/aiogram/methods/send_media_group.py index fd8dbb25..a01e4de8 100644 --- a/aiogram/methods/send_media_group.py +++ b/aiogram/methods/send_media_group.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( InputMediaAudio, diff --git a/aiogram/methods/send_message.py b/aiogram/methods/send_message.py index 9b7dae7b..1e460239 100644 --- a/aiogram/methods/send_message.py +++ b/aiogram/methods/send_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_photo.py b/aiogram/methods/send_photo.py index 236d8710..6ce9d928 100644 --- a/aiogram/methods/send_photo.py +++ b/aiogram/methods/send_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_poll.py b/aiogram/methods/send_poll.py index fca3dc58..41d7e4c5 100644 --- a/aiogram/methods/send_poll.py +++ b/aiogram/methods/send_poll.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_sticker.py b/aiogram/methods/send_sticker.py index 8429b105..384a5adb 100644 --- a/aiogram/methods/send_sticker.py +++ b/aiogram/methods/send_sticker.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_venue.py b/aiogram/methods/send_venue.py index d0859770..ac69fdc6 100644 --- a/aiogram/methods/send_venue.py +++ b/aiogram/methods/send_venue.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_video.py b/aiogram/methods/send_video.py index a894e335..1ee7c903 100644 --- a/aiogram/methods/send_video.py +++ b/aiogram/methods/send_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/send_video_note.py b/aiogram/methods/send_video_note.py index 761c91a2..cd270e94 100644 --- a/aiogram/methods/send_video_note.py +++ b/aiogram/methods/send_video_note.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ( ForceReply, diff --git a/aiogram/methods/send_voice.py b/aiogram/methods/send_voice.py index ae692ad6..d9c915f4 100644 --- a/aiogram/methods/send_voice.py +++ b/aiogram/methods/send_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import List, Optional, Union from ..types import ( UNSET_PARSE_MODE, diff --git a/aiogram/methods/set_chat_administrator_custom_title.py b/aiogram/methods/set_chat_administrator_custom_title.py index edf79d8c..5415594f 100644 --- a/aiogram/methods/set_chat_administrator_custom_title.py +++ b/aiogram/methods/set_chat_administrator_custom_title.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_description.py b/aiogram/methods/set_chat_description.py index 05b51a69..81eaf263 100644 --- a/aiogram/methods/set_chat_description.py +++ b/aiogram/methods/set_chat_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_menu_button.py b/aiogram/methods/set_chat_menu_button.py index 6eeb3a10..4fdd086b 100644 --- a/aiogram/methods/set_chat_menu_button.py +++ b/aiogram/methods/set_chat_menu_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_permissions.py b/aiogram/methods/set_chat_permissions.py index af13ddb7..3c3ed008 100644 --- a/aiogram/methods/set_chat_permissions.py +++ b/aiogram/methods/set_chat_permissions.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import ChatPermissions from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_photo.py b/aiogram/methods/set_chat_photo.py index ba7b8de3..dc07a445 100644 --- a/aiogram/methods/set_chat_photo.py +++ b/aiogram/methods/set_chat_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from ..types import InputFile from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_sticker_set.py b/aiogram/methods/set_chat_sticker_set.py index a7f3d216..6df42a0a 100644 --- a/aiogram/methods/set_chat_sticker_set.py +++ b/aiogram/methods/set_chat_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/set_chat_title.py b/aiogram/methods/set_chat_title.py index 07507d0f..b4ce0a4a 100644 --- a/aiogram/methods/set_chat_title.py +++ b/aiogram/methods/set_chat_title.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py b/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py index 10a4a267..8c8fa479 100644 --- a/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py +++ b/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/set_game_score.py b/aiogram/methods/set_game_score.py index 170988ec..590ca59d 100644 --- a/aiogram/methods/set_game_score.py +++ b/aiogram/methods/set_game_score.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import Message from .base import TelegramMethod diff --git a/aiogram/methods/set_my_commands.py b/aiogram/methods/set_my_commands.py index a62e7a84..c668852d 100644 --- a/aiogram/methods/set_my_commands.py +++ b/aiogram/methods/set_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import BotCommand, BotCommandScope from .base import TelegramMethod diff --git a/aiogram/methods/set_my_default_administrator_rights.py b/aiogram/methods/set_my_default_administrator_rights.py index 0b1468bc..8817a9dc 100644 --- a/aiogram/methods/set_my_default_administrator_rights.py +++ b/aiogram/methods/set_my_default_administrator_rights.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import ChatAdministratorRights from .base import TelegramMethod diff --git a/aiogram/methods/set_my_description.py b/aiogram/methods/set_my_description.py index 2af2ed44..fba6b8d3 100644 --- a/aiogram/methods/set_my_description.py +++ b/aiogram/methods/set_my_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/set_my_short_description.py b/aiogram/methods/set_my_short_description.py index 19e5b254..0c697d4b 100644 --- a/aiogram/methods/set_my_short_description.py +++ b/aiogram/methods/set_my_short_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from .base import TelegramMethod diff --git a/aiogram/methods/set_passport_data_errors.py b/aiogram/methods/set_passport_data_errors.py index ae127d2b..f829fa47 100644 --- a/aiogram/methods/set_passport_data_errors.py +++ b/aiogram/methods/set_passport_data_errors.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import List from ..types import PassportElementError from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_emoji_list.py b/aiogram/methods/set_sticker_emoji_list.py index f23033c7..b88f609e 100644 --- a/aiogram/methods/set_sticker_emoji_list.py +++ b/aiogram/methods/set_sticker_emoji_list.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import List from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_keywords.py b/aiogram/methods/set_sticker_keywords.py index 0ebef118..1179613b 100644 --- a/aiogram/methods/set_sticker_keywords.py +++ b/aiogram/methods/set_sticker_keywords.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_mask_position.py b/aiogram/methods/set_sticker_mask_position.py index f3147f2d..7e82b061 100644 --- a/aiogram/methods/set_sticker_mask_position.py +++ b/aiogram/methods/set_sticker_mask_position.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import Optional from ..types import MaskPosition from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_position_in_set.py b/aiogram/methods/set_sticker_position_in_set.py index ed5792ae..395d2e05 100644 --- a/aiogram/methods/set_sticker_position_in_set.py +++ b/aiogram/methods/set_sticker_position_in_set.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_set_thumbnail.py b/aiogram/methods/set_sticker_set_thumbnail.py index 7da1c397..3624bce4 100644 --- a/aiogram/methods/set_sticker_set_thumbnail.py +++ b/aiogram/methods/set_sticker_set_thumbnail.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InputFile from .base import TelegramMethod diff --git a/aiogram/methods/set_sticker_set_title.py b/aiogram/methods/set_sticker_set_title.py index 978432ff..1136353f 100644 --- a/aiogram/methods/set_sticker_set_title.py +++ b/aiogram/methods/set_sticker_set_title.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from .base import TelegramMethod diff --git a/aiogram/methods/set_webhook.py b/aiogram/methods/set_webhook.py index 6e63a75a..66ec86ff 100644 --- a/aiogram/methods/set_webhook.py +++ b/aiogram/methods/set_webhook.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import List, Optional from ..types import InputFile from .base import TelegramMethod diff --git a/aiogram/methods/stop_message_live_location.py b/aiogram/methods/stop_message_live_location.py index 8a16f586..9361dfae 100644 --- a/aiogram/methods/stop_message_live_location.py +++ b/aiogram/methods/stop_message_live_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod diff --git a/aiogram/methods/stop_poll.py b/aiogram/methods/stop_poll.py index 19ef26ac..2e93f087 100644 --- a/aiogram/methods/stop_poll.py +++ b/aiogram/methods/stop_poll.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from ..types import InlineKeyboardMarkup, Poll from .base import TelegramMethod diff --git a/aiogram/methods/unban_chat_member.py b/aiogram/methods/unban_chat_member.py index 768eea22..19ef9ef7 100644 --- a/aiogram/methods/unban_chat_member.py +++ b/aiogram/methods/unban_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/unban_chat_sender_chat.py b/aiogram/methods/unban_chat_sender_chat.py index fbd3f1d3..e81278d3 100644 --- a/aiogram/methods/unban_chat_sender_chat.py +++ b/aiogram/methods/unban_chat_sender_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/unhide_general_forum_topic.py b/aiogram/methods/unhide_general_forum_topic.py index 82524758..cebcec25 100644 --- a/aiogram/methods/unhide_general_forum_topic.py +++ b/aiogram/methods/unhide_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/unpin_all_chat_messages.py b/aiogram/methods/unpin_all_chat_messages.py index f8566e33..76927e63 100644 --- a/aiogram/methods/unpin_all_chat_messages.py +++ b/aiogram/methods/unpin_all_chat_messages.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/unpin_all_forum_topic_messages.py b/aiogram/methods/unpin_all_forum_topic_messages.py index 6b735e98..09729e2c 100644 --- a/aiogram/methods/unpin_all_forum_topic_messages.py +++ b/aiogram/methods/unpin_all_forum_topic_messages.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Union +from typing import Union from .base import TelegramMethod diff --git a/aiogram/methods/unpin_chat_message.py b/aiogram/methods/unpin_chat_message.py index 0d5d2b0a..3fb70154 100644 --- a/aiogram/methods/unpin_chat_message.py +++ b/aiogram/methods/unpin_chat_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import Optional, Union from .base import TelegramMethod diff --git a/aiogram/methods/upload_sticker_file.py b/aiogram/methods/upload_sticker_file.py index 2194e35f..fd1a229e 100644 --- a/aiogram/methods/upload_sticker_file.py +++ b/aiogram/methods/upload_sticker_file.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import TYPE_CHECKING - from ..types import File, InputFile from .base import TelegramMethod diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index 4808f7fe..a669cbe8 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import List, Literal, Optional, Union from .animation import Animation from .audio import Audio @@ -324,11 +324,16 @@ __all__ = ( # Load typing forward refs for every TelegramObject for _entity_name in __all__: _entity = globals()[_entity_name] - if not hasattr(_entity, "update_forward_refs"): + if not hasattr(_entity, "model_rebuild"): continue - _entity.update_forward_refs( - **{k: v for k, v in globals().items() if k in __all__}, - **{"Optional": Optional}, + _entity.model_rebuild( + _types_namespace={ + "List": List, + "Optional": Optional, + "Union": Union, + "Literal": Literal, + **{k: v for k, v in globals().items() if k in __all__}, + } ) del _entity diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 707e328c..a9d3eb1a 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -1,26 +1,26 @@ -import datetime from typing import Any from unittest.mock import sentinel -from pydantic import BaseModel, Extra +from pydantic import BaseModel, ConfigDict from aiogram.utils.mixins import ContextInstanceMixin class TelegramObject(ContextInstanceMixin["TelegramObject"], BaseModel): - class Config: - use_enum_values = True - orm_mode = True - extra = Extra.allow - validate_assignment = True - allow_mutation = False - allow_population_by_field_name = True - json_encoders = {datetime.datetime: lambda dt: int(dt.timestamp())} + model_config = ConfigDict( + use_enum_values=True, + extra="allow", + validate_assignment=True, + frozen=True, + populate_by_name=True, + arbitrary_types_allowed=True, + ) class MutableTelegramObject(TelegramObject): - class Config: - allow_mutation = True + model_config = ConfigDict( + frozen=False, + ) # special sentinel object which used in situation when None might be a useful value diff --git a/aiogram/types/bot_command_scope_all_chat_administrators.py b/aiogram/types/bot_command_scope_all_chat_administrators.py index e9f6a969..ed3dd181 100644 --- a/aiogram/types/bot_command_scope_all_chat_administrators.py +++ b/aiogram/types/bot_command_scope_all_chat_administrators.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -13,5 +13,7 @@ class BotCommandScopeAllChatAdministrators(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopeallchatadministrators """ - type: str = Field(BotCommandScopeType.ALL_CHAT_ADMINISTRATORS, const=True) + type: Literal[ + BotCommandScopeType.ALL_CHAT_ADMINISTRATORS + ] = BotCommandScopeType.ALL_CHAT_ADMINISTRATORS """Scope type, must be *all_chat_administrators*""" diff --git a/aiogram/types/bot_command_scope_all_group_chats.py b/aiogram/types/bot_command_scope_all_group_chats.py index f9675ad6..3393266a 100644 --- a/aiogram/types/bot_command_scope_all_group_chats.py +++ b/aiogram/types/bot_command_scope_all_group_chats.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -13,5 +13,5 @@ class BotCommandScopeAllGroupChats(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopeallgroupchats """ - type: str = Field(BotCommandScopeType.ALL_GROUP_CHATS, const=True) + type: Literal[BotCommandScopeType.ALL_GROUP_CHATS] = BotCommandScopeType.ALL_GROUP_CHATS """Scope type, must be *all_group_chats*""" diff --git a/aiogram/types/bot_command_scope_all_private_chats.py b/aiogram/types/bot_command_scope_all_private_chats.py index f13e2866..c53303d1 100644 --- a/aiogram/types/bot_command_scope_all_private_chats.py +++ b/aiogram/types/bot_command_scope_all_private_chats.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -13,5 +13,5 @@ class BotCommandScopeAllPrivateChats(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopeallprivatechats """ - type: str = Field(BotCommandScopeType.ALL_PRIVATE_CHATS, const=True) + type: Literal[BotCommandScopeType.ALL_PRIVATE_CHATS] = BotCommandScopeType.ALL_PRIVATE_CHATS """Scope type, must be *all_private_chats*""" diff --git a/aiogram/types/bot_command_scope_chat.py b/aiogram/types/bot_command_scope_chat.py index d96bc6f4..f0ef7b58 100644 --- a/aiogram/types/bot_command_scope_chat.py +++ b/aiogram/types/bot_command_scope_chat.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import Union - -from pydantic import Field +from typing import Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,7 +13,7 @@ class BotCommandScopeChat(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopechat """ - type: str = Field(BotCommandScopeType.CHAT, const=True) + type: Literal[BotCommandScopeType.CHAT] = BotCommandScopeType.CHAT """Scope type, must be *chat*""" chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" diff --git a/aiogram/types/bot_command_scope_chat_administrators.py b/aiogram/types/bot_command_scope_chat_administrators.py index 824dc5a1..65513db2 100644 --- a/aiogram/types/bot_command_scope_chat_administrators.py +++ b/aiogram/types/bot_command_scope_chat_administrators.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import Union - -from pydantic import Field +from typing import Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,7 +13,9 @@ class BotCommandScopeChatAdministrators(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopechatadministrators """ - type: str = Field(BotCommandScopeType.CHAT_ADMINISTRATORS, const=True) + type: Literal[ + BotCommandScopeType.CHAT_ADMINISTRATORS + ] = BotCommandScopeType.CHAT_ADMINISTRATORS """Scope type, must be *chat_administrators*""" chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" diff --git a/aiogram/types/bot_command_scope_chat_member.py b/aiogram/types/bot_command_scope_chat_member.py index e9fb0dda..efb97870 100644 --- a/aiogram/types/bot_command_scope_chat_member.py +++ b/aiogram/types/bot_command_scope_chat_member.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import Union - -from pydantic import Field +from typing import Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,7 +13,7 @@ class BotCommandScopeChatMember(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopechatmember """ - type: str = Field(BotCommandScopeType.CHAT_MEMBER, const=True) + type: Literal[BotCommandScopeType.CHAT_MEMBER] = BotCommandScopeType.CHAT_MEMBER """Scope type, must be *chat_member*""" chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" diff --git a/aiogram/types/bot_command_scope_default.py b/aiogram/types/bot_command_scope_default.py index 79825631..449665c9 100644 --- a/aiogram/types/bot_command_scope_default.py +++ b/aiogram/types/bot_command_scope_default.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -13,5 +13,5 @@ class BotCommandScopeDefault(BotCommandScope): Source: https://core.telegram.org/bots/api#botcommandscopedefault """ - type: str = Field(BotCommandScopeType.DEFAULT, const=True) + type: Literal[BotCommandScopeType.DEFAULT] = BotCommandScopeType.DEFAULT """Scope type, must be *default*""" diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py index 94fc76c3..ae98e79d 100644 --- a/aiogram/types/chat_member_administrator.py +++ b/aiogram/types/chat_member_administrator.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -18,7 +16,7 @@ class ChatMemberAdministrator(ChatMember): Source: https://core.telegram.org/bots/api#chatmemberadministrator """ - status: str = Field(ChatMemberStatus.ADMINISTRATOR, const=True) + status: Literal[ChatMemberStatus.ADMINISTRATOR] = ChatMemberStatus.ADMINISTRATOR """The member's status in the chat, always 'administrator'""" user: User """Information about the user""" diff --git a/aiogram/types/chat_member_banned.py b/aiogram/types/chat_member_banned.py index 85c07f51..33e85f45 100644 --- a/aiogram/types/chat_member_banned.py +++ b/aiogram/types/chat_member_banned.py @@ -1,9 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING - -from pydantic import Field +from typing import TYPE_CHECKING, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -19,7 +17,7 @@ class ChatMemberBanned(ChatMember): Source: https://core.telegram.org/bots/api#chatmemberbanned """ - status: str = Field(ChatMemberStatus.KICKED, const=True) + status: Literal[ChatMemberStatus.KICKED] = ChatMemberStatus.KICKED """The member's status in the chat, always 'kicked'""" user: User """Information about the user""" diff --git a/aiogram/types/chat_member_left.py b/aiogram/types/chat_member_left.py index 6d7968c1..af501917 100644 --- a/aiogram/types/chat_member_left.py +++ b/aiogram/types/chat_member_left.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING - -from pydantic import Field +from typing import TYPE_CHECKING, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -18,7 +16,7 @@ class ChatMemberLeft(ChatMember): Source: https://core.telegram.org/bots/api#chatmemberleft """ - status: str = Field(ChatMemberStatus.LEFT, const=True) + status: Literal[ChatMemberStatus.LEFT] = ChatMemberStatus.LEFT """The member's status in the chat, always 'left'""" user: User """Information about the user""" diff --git a/aiogram/types/chat_member_member.py b/aiogram/types/chat_member_member.py index 303a7d9d..e2c7418e 100644 --- a/aiogram/types/chat_member_member.py +++ b/aiogram/types/chat_member_member.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING - -from pydantic import Field +from typing import TYPE_CHECKING, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -18,7 +16,7 @@ class ChatMemberMember(ChatMember): Source: https://core.telegram.org/bots/api#chatmembermember """ - status: str = Field(ChatMemberStatus.MEMBER, const=True) + status: Literal[ChatMemberStatus.MEMBER] = ChatMemberStatus.MEMBER """The member's status in the chat, always 'member'""" user: User """Information about the user""" diff --git a/aiogram/types/chat_member_owner.py b/aiogram/types/chat_member_owner.py index e7c64fc1..66450550 100644 --- a/aiogram/types/chat_member_owner.py +++ b/aiogram/types/chat_member_owner.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -18,7 +16,7 @@ class ChatMemberOwner(ChatMember): Source: https://core.telegram.org/bots/api#chatmemberowner """ - status: str = Field(ChatMemberStatus.CREATOR, const=True) + status: Literal[ChatMemberStatus.CREATOR] = ChatMemberStatus.CREATOR """The member's status in the chat, always 'creator'""" user: User """Information about the user""" diff --git a/aiogram/types/chat_member_restricted.py b/aiogram/types/chat_member_restricted.py index b6f4f556..17db73fb 100644 --- a/aiogram/types/chat_member_restricted.py +++ b/aiogram/types/chat_member_restricted.py @@ -1,9 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING - -from pydantic import Field +from typing import TYPE_CHECKING, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -19,7 +17,7 @@ class ChatMemberRestricted(ChatMember): Source: https://core.telegram.org/bots/api#chatmemberrestricted """ - status: str = Field(ChatMemberStatus.RESTRICTED, const=True) + status: Literal[ChatMemberStatus.RESTRICTED] = ChatMemberStatus.RESTRICTED """The member's status in the chat, always 'restricted'""" user: User """Information about the user""" diff --git a/aiogram/types/error_event.py b/aiogram/types/error_event.py index 1667d9e9..212bee56 100644 --- a/aiogram/types/error_event.py +++ b/aiogram/types/error_event.py @@ -2,18 +2,13 @@ from __future__ import annotations from typing import TYPE_CHECKING -from aiogram.types.base import MutableTelegramObject +from aiogram.types.base import TelegramObject if TYPE_CHECKING: from .update import Update -class _ErrorEvent(MutableTelegramObject): - class Config: - arbitrary_types_allowed = True - - -class ErrorEvent(_ErrorEvent): +class ErrorEvent(TelegramObject): """ Internal event, should be used to receive errors while processing Updates from Telegram diff --git a/aiogram/types/force_reply.py b/aiogram/types/force_reply.py index c27af31e..cd13b658 100644 --- a/aiogram/types/force_reply.py +++ b/aiogram/types/force_reply.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import Optional - -from pydantic import Field +from typing import Literal, Optional from .base import MutableTelegramObject @@ -21,7 +19,7 @@ class ForceReply(MutableTelegramObject): Source: https://core.telegram.org/bots/api#forcereply """ - force_reply: bool = Field(True, const=True) + force_reply: Literal[True] = True """Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'""" input_field_placeholder: Optional[str] = None """*Optional*. The placeholder to be shown in the input field when the reply is active; 1-64 characters""" diff --git a/aiogram/types/inline_query_result_article.py b/aiogram/types/inline_query_result_article.py index dd65b595..be084aed 100644 --- a/aiogram/types/inline_query_result_article.py +++ b/aiogram/types/inline_query_result_article.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -19,7 +17,7 @@ class InlineQueryResultArticle(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultarticle """ - type: str = Field(InlineQueryResultType.ARTICLE, const=True) + type: Literal[InlineQueryResultType.ARTICLE] = InlineQueryResultType.ARTICLE """Type of the result, must be *article*""" id: str """Unique identifier for this result, 1-64 Bytes""" diff --git a/aiogram/types/inline_query_result_audio.py b/aiogram/types/inline_query_result_audio.py index 3b830fc8..74cea130 100644 --- a/aiogram/types/inline_query_result_audio.py +++ b/aiogram/types/inline_query_result_audio.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultAudio(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultaudio """ - type: str = Field(InlineQueryResultType.AUDIO, const=True) + type: Literal[InlineQueryResultType.AUDIO] = InlineQueryResultType.AUDIO """Type of the result, must be *audio*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_audio.py b/aiogram/types/inline_query_result_cached_audio.py index 8358f723..8d4819cc 100644 --- a/aiogram/types/inline_query_result_cached_audio.py +++ b/aiogram/types/inline_query_result_cached_audio.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultCachedAudio(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedaudio """ - type: str = Field(InlineQueryResultType.AUDIO, const=True) + type: Literal[InlineQueryResultType.AUDIO] = InlineQueryResultType.AUDIO """Type of the result, must be *audio*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_document.py b/aiogram/types/inline_query_result_cached_document.py index 5513971f..cedb45a8 100644 --- a/aiogram/types/inline_query_result_cached_document.py +++ b/aiogram/types/inline_query_result_cached_document.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultCachedDocument(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcacheddocument """ - type: str = Field(InlineQueryResultType.DOCUMENT, const=True) + type: Literal[InlineQueryResultType.DOCUMENT] = InlineQueryResultType.DOCUMENT """Type of the result, must be *document*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_gif.py b/aiogram/types/inline_query_result_cached_gif.py index 7aa5c535..acbcb6fa 100644 --- a/aiogram/types/inline_query_result_cached_gif.py +++ b/aiogram/types/inline_query_result_cached_gif.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultCachedGif(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedgif """ - type: str = Field(InlineQueryResultType.GIF, const=True) + type: Literal[InlineQueryResultType.GIF] = InlineQueryResultType.GIF """Type of the result, must be *gif*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_mpeg4_gif.py b/aiogram/types/inline_query_result_cached_mpeg4_gif.py index 539de025..f9605d68 100644 --- a/aiogram/types/inline_query_result_cached_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_cached_mpeg4_gif.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultCachedMpeg4Gif(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedmpeg4gif """ - type: str = Field(InlineQueryResultType.MPEG4_GIF, const=True) + type: Literal[InlineQueryResultType.MPEG4_GIF] = InlineQueryResultType.MPEG4_GIF """Type of the result, must be *mpeg4_gif*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_photo.py b/aiogram/types/inline_query_result_cached_photo.py index fc892826..96b6d208 100644 --- a/aiogram/types/inline_query_result_cached_photo.py +++ b/aiogram/types/inline_query_result_cached_photo.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultCachedPhoto(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedphoto """ - type: str = Field(InlineQueryResultType.PHOTO, const=True) + type: Literal[InlineQueryResultType.PHOTO] = InlineQueryResultType.PHOTO """Type of the result, must be *photo*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_sticker.py b/aiogram/types/inline_query_result_cached_sticker.py index 3d75c29c..27f95c09 100644 --- a/aiogram/types/inline_query_result_cached_sticker.py +++ b/aiogram/types/inline_query_result_cached_sticker.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -20,7 +18,7 @@ class InlineQueryResultCachedSticker(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedsticker """ - type: str = Field(InlineQueryResultType.STICKER, const=True) + type: Literal[InlineQueryResultType.STICKER] = InlineQueryResultType.STICKER """Type of the result, must be *sticker*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_video.py b/aiogram/types/inline_query_result_cached_video.py index acda3962..c1afd26e 100644 --- a/aiogram/types/inline_query_result_cached_video.py +++ b/aiogram/types/inline_query_result_cached_video.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultCachedVideo(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedvideo """ - type: str = Field(InlineQueryResultType.VIDEO, const=True) + type: Literal[InlineQueryResultType.VIDEO] = InlineQueryResultType.VIDEO """Type of the result, must be *video*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_cached_voice.py b/aiogram/types/inline_query_result_cached_voice.py index 3f03b2fe..354b6f39 100644 --- a/aiogram/types/inline_query_result_cached_voice.py +++ b/aiogram/types/inline_query_result_cached_voice.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultCachedVoice(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcachedvoice """ - type: str = Field(InlineQueryResultType.VOICE, const=True) + type: Literal[InlineQueryResultType.VOICE] = InlineQueryResultType.VOICE """Type of the result, must be *voice*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_contact.py b/aiogram/types/inline_query_result_contact.py index 0f88bb9f..121dfba9 100644 --- a/aiogram/types/inline_query_result_contact.py +++ b/aiogram/types/inline_query_result_contact.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -20,7 +18,7 @@ class InlineQueryResultContact(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultcontact """ - type: str = Field(InlineQueryResultType.CONTACT, const=True) + type: Literal[InlineQueryResultType.CONTACT] = InlineQueryResultType.CONTACT """Type of the result, must be *contact*""" id: str """Unique identifier for this result, 1-64 Bytes""" diff --git a/aiogram/types/inline_query_result_document.py b/aiogram/types/inline_query_result_document.py index 7698e4c6..13a4e7c5 100644 --- a/aiogram/types/inline_query_result_document.py +++ b/aiogram/types/inline_query_result_document.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultDocument(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultdocument """ - type: str = Field(InlineQueryResultType.DOCUMENT, const=True) + type: Literal[InlineQueryResultType.DOCUMENT] = InlineQueryResultType.DOCUMENT """Type of the result, must be *document*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_game.py b/aiogram/types/inline_query_result_game.py index e4d92a61..b5ae90fc 100644 --- a/aiogram/types/inline_query_result_game.py +++ b/aiogram/types/inline_query_result_game.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -19,7 +17,7 @@ class InlineQueryResultGame(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultgame """ - type: str = Field(InlineQueryResultType.GAME, const=True) + type: Literal[InlineQueryResultType.GAME] = InlineQueryResultType.GAME """Type of the result, must be *game*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_gif.py b/aiogram/types/inline_query_result_gif.py index b38cfa1a..1120369f 100644 --- a/aiogram/types/inline_query_result_gif.py +++ b/aiogram/types/inline_query_result_gif.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultGif(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultgif """ - type: str = Field(InlineQueryResultType.GIF, const=True) + type: Literal[InlineQueryResultType.GIF] = InlineQueryResultType.GIF """Type of the result, must be *gif*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_location.py b/aiogram/types/inline_query_result_location.py index aa1f6d88..1dbda6a8 100644 --- a/aiogram/types/inline_query_result_location.py +++ b/aiogram/types/inline_query_result_location.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -20,7 +18,7 @@ class InlineQueryResultLocation(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultlocation """ - type: str = Field(InlineQueryResultType.LOCATION, const=True) + type: Literal[InlineQueryResultType.LOCATION] = InlineQueryResultType.LOCATION """Type of the result, must be *location*""" id: str """Unique identifier for this result, 1-64 Bytes""" diff --git a/aiogram/types/inline_query_result_mpeg4_gif.py b/aiogram/types/inline_query_result_mpeg4_gif.py index 06c73620..d14491c6 100644 --- a/aiogram/types/inline_query_result_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_mpeg4_gif.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultmpeg4gif """ - type: str = Field(InlineQueryResultType.MPEG4_GIF, const=True) + type: Literal[InlineQueryResultType.MPEG4_GIF] = InlineQueryResultType.MPEG4_GIF """Type of the result, must be *mpeg4_gif*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_photo.py b/aiogram/types/inline_query_result_photo.py index 6ed85276..086118f0 100644 --- a/aiogram/types/inline_query_result_photo.py +++ b/aiogram/types/inline_query_result_photo.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -21,7 +19,7 @@ class InlineQueryResultPhoto(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultphoto """ - type: str = Field(InlineQueryResultType.PHOTO, const=True) + type: Literal[InlineQueryResultType.PHOTO] = InlineQueryResultType.PHOTO """Type of the result, must be *photo*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_venue.py b/aiogram/types/inline_query_result_venue.py index 0c92a008..6f0aeb66 100644 --- a/aiogram/types/inline_query_result_venue.py +++ b/aiogram/types/inline_query_result_venue.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -20,7 +18,7 @@ class InlineQueryResultVenue(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultvenue """ - type: str = Field(InlineQueryResultType.VENUE, const=True) + type: Literal[InlineQueryResultType.VENUE] = InlineQueryResultType.VENUE """Type of the result, must be *venue*""" id: str """Unique identifier for this result, 1-64 Bytes""" diff --git a/aiogram/types/inline_query_result_video.py b/aiogram/types/inline_query_result_video.py index ba14d066..b1c6775e 100644 --- a/aiogram/types/inline_query_result_video.py +++ b/aiogram/types/inline_query_result_video.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -23,7 +21,7 @@ class InlineQueryResultVideo(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultvideo """ - type: str = Field(InlineQueryResultType.VIDEO, const=True) + type: Literal[InlineQueryResultType.VIDEO] = InlineQueryResultType.VIDEO """Type of the result, must be *video*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_result_voice.py b/aiogram/types/inline_query_result_voice.py index 7de1f6cf..e97a994e 100644 --- a/aiogram/types/inline_query_result_voice.py +++ b/aiogram/types/inline_query_result_voice.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -22,7 +20,7 @@ class InlineQueryResultVoice(InlineQueryResult): Source: https://core.telegram.org/bots/api#inlinequeryresultvoice """ - type: str = Field(InlineQueryResultType.VOICE, const=True) + type: Literal[InlineQueryResultType.VOICE] = InlineQueryResultType.VOICE """Type of the result, must be *voice*""" id: str """Unique identifier for this result, 1-64 bytes""" diff --git a/aiogram/types/inline_query_results_button.py b/aiogram/types/inline_query_results_button.py index 4a8f59df..0a6db30c 100644 --- a/aiogram/types/inline_query_results_button.py +++ b/aiogram/types/inline_query_results_button.py @@ -18,6 +18,6 @@ class InlineQueryResultsButton(TelegramObject): text: str """Label text on the button""" web_app: Optional[WebAppInfo] = None - """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method *web_app_switch_inline_query* inside the Web App.""" + """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.""" start_parameter: Optional[str] = None """*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.""" diff --git a/aiogram/types/input_file.py b/aiogram/types/input_file.py index 8b74fe03..e13c3379 100644 --- a/aiogram/types/input_file.py +++ b/aiogram/types/input_file.py @@ -29,10 +29,6 @@ class InputFile(ABC): self.filename = filename self.chunk_size = chunk_size - @classmethod - def __get_validators__(cls) -> Iterator[None]: - yield None - @abstractmethod async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: # pragma: no cover yield b"" diff --git a/aiogram/types/input_media_animation.py b/aiogram/types/input_media_animation.py index eabc4b5e..f0e1b860 100644 --- a/aiogram/types/input_media_animation.py +++ b/aiogram/types/input_media_animation.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -20,7 +18,7 @@ class InputMediaAnimation(InputMedia): Source: https://core.telegram.org/bots/api#inputmediaanimation """ - type: str = Field(InputMediaType.ANIMATION, const=True) + type: Literal[InputMediaType.ANIMATION] = InputMediaType.ANIMATION """Type of the result, must be *animation*""" media: Union[str, InputFile] """File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass 'attach://' to upload a new one using multipart/form-data under name. :ref:`More information on Sending Files » `""" diff --git a/aiogram/types/input_media_audio.py b/aiogram/types/input_media_audio.py index 8de62a6f..4bfa74c2 100644 --- a/aiogram/types/input_media_audio.py +++ b/aiogram/types/input_media_audio.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -20,7 +18,7 @@ class InputMediaAudio(InputMedia): Source: https://core.telegram.org/bots/api#inputmediaaudio """ - type: str = Field(InputMediaType.AUDIO, const=True) + type: Literal[InputMediaType.AUDIO] = InputMediaType.AUDIO """Type of the result, must be *audio*""" media: Union[str, InputFile] """File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass 'attach://' to upload a new one using multipart/form-data under name. :ref:`More information on Sending Files » `""" diff --git a/aiogram/types/input_media_document.py b/aiogram/types/input_media_document.py index 9ef4d52f..b749cdcb 100644 --- a/aiogram/types/input_media_document.py +++ b/aiogram/types/input_media_document.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -20,7 +18,7 @@ class InputMediaDocument(InputMedia): Source: https://core.telegram.org/bots/api#inputmediadocument """ - type: str = Field(InputMediaType.DOCUMENT, const=True) + type: Literal[InputMediaType.DOCUMENT] = InputMediaType.DOCUMENT """Type of the result, must be *document*""" media: Union[str, InputFile] """File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass 'attach://' to upload a new one using multipart/form-data under name. :ref:`More information on Sending Files » `""" diff --git a/aiogram/types/input_media_photo.py b/aiogram/types/input_media_photo.py index 0f9500e8..9128627b 100644 --- a/aiogram/types/input_media_photo.py +++ b/aiogram/types/input_media_photo.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -20,7 +18,7 @@ class InputMediaPhoto(InputMedia): Source: https://core.telegram.org/bots/api#inputmediaphoto """ - type: str = Field(InputMediaType.PHOTO, const=True) + type: Literal[InputMediaType.PHOTO] = InputMediaType.PHOTO """Type of the result, must be *photo*""" media: Union[str, InputFile] """File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass 'attach://' to upload a new one using multipart/form-data under name. :ref:`More information on Sending Files » `""" diff --git a/aiogram/types/input_media_video.py b/aiogram/types/input_media_video.py index 89d4df91..b7479607 100644 --- a/aiogram/types/input_media_video.py +++ b/aiogram/types/input_media_video.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union - -from pydantic import Field +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -20,7 +18,7 @@ class InputMediaVideo(InputMedia): Source: https://core.telegram.org/bots/api#inputmediavideo """ - type: str = Field(InputMediaType.VIDEO, const=True) + type: Literal[InputMediaType.VIDEO] = InputMediaType.VIDEO """Type of the result, must be *video*""" media: Union[str, InputFile] """File to send. Pass a file_id to send a file that exists on the Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from the Internet, or pass 'attach://' to upload a new one using multipart/form-data under name. :ref:`More information on Sending Files » `""" diff --git a/aiogram/types/menu_button_commands.py b/aiogram/types/menu_button_commands.py index 62a9061c..e37e48cd 100644 --- a/aiogram/types/menu_button_commands.py +++ b/aiogram/types/menu_button_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -13,5 +13,5 @@ class MenuButtonCommands(MenuButton): Source: https://core.telegram.org/bots/api#menubuttoncommands """ - type: str = Field(MenuButtonType.COMMANDS, const=True) + type: Literal[MenuButtonType.COMMANDS] = MenuButtonType.COMMANDS """Type of the button, must be *commands*""" diff --git a/aiogram/types/menu_button_default.py b/aiogram/types/menu_button_default.py index dc754ec0..7b68803e 100644 --- a/aiogram/types/menu_button_default.py +++ b/aiogram/types/menu_button_default.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -13,5 +13,5 @@ class MenuButtonDefault(MenuButton): Source: https://core.telegram.org/bots/api#menubuttondefault """ - type: str = Field(MenuButtonType.DEFAULT, const=True) + type: Literal[MenuButtonType.DEFAULT] = MenuButtonType.DEFAULT """Type of the button, must be *default*""" diff --git a/aiogram/types/menu_button_web_app.py b/aiogram/types/menu_button_web_app.py index f77ed2ea..ab908afe 100644 --- a/aiogram/types/menu_button_web_app.py +++ b/aiogram/types/menu_button_web_app.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING - -from pydantic import Field +from typing import TYPE_CHECKING, Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -18,7 +16,7 @@ class MenuButtonWebApp(MenuButton): Source: https://core.telegram.org/bots/api#menubuttonwebapp """ - type: str = Field(MenuButtonType.WEB_APP, const=True) + type: Literal[MenuButtonType.WEB_APP] = MenuButtonType.WEB_APP """Type of the button, must be *web_app*""" text: str """Text on the button""" diff --git a/aiogram/types/passport_element_error_data_field.py b/aiogram/types/passport_element_error_data_field.py index f5b0b67b..370a100a 100644 --- a/aiogram/types/passport_element_error_data_field.py +++ b/aiogram/types/passport_element_error_data_field.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorDataField(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrordatafield """ - source: str = Field("data", const=True) + source: Literal["data"] = "data" """Error source, must be *data*""" type: str """The section of the user's Telegram Passport which has the error, one of 'personal_details', 'passport', 'driver_license', 'identity_card', 'internal_passport', 'address'""" diff --git a/aiogram/types/passport_element_error_file.py b/aiogram/types/passport_element_error_file.py index 217deaaa..e2016dd9 100644 --- a/aiogram/types/passport_element_error_file.py +++ b/aiogram/types/passport_element_error_file.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorFile(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfile """ - source: str = Field("file", const=True) + source: Literal["file"] = "file" """Error source, must be *file*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_files.py b/aiogram/types/passport_element_error_files.py index 6f42d693..4b97c095 100644 --- a/aiogram/types/passport_element_error_files.py +++ b/aiogram/types/passport_element_error_files.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import List - -from pydantic import Field +from typing import List, Literal from .passport_element_error import PassportElementError @@ -14,7 +12,7 @@ class PassportElementErrorFiles(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfiles """ - source: str = Field("files", const=True) + source: Literal["files"] = "files" """Error source, must be *files*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_front_side.py b/aiogram/types/passport_element_error_front_side.py index 98e60acd..4d46cc94 100644 --- a/aiogram/types/passport_element_error_front_side.py +++ b/aiogram/types/passport_element_error_front_side.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorFrontSide(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfrontside """ - source: str = Field("front_side", const=True) + source: Literal["front_side"] = "front_side" """Error source, must be *front_side*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport'""" diff --git a/aiogram/types/passport_element_error_reverse_side.py b/aiogram/types/passport_element_error_reverse_side.py index 0c6073ba..7584f567 100644 --- a/aiogram/types/passport_element_error_reverse_side.py +++ b/aiogram/types/passport_element_error_reverse_side.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorReverseSide(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorreverseside """ - source: str = Field("reverse_side", const=True) + source: Literal["reverse_side"] = "reverse_side" """Error source, must be *reverse_side*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'driver_license', 'identity_card'""" diff --git a/aiogram/types/passport_element_error_selfie.py b/aiogram/types/passport_element_error_selfie.py index 4a3b2fe1..37cd1c95 100644 --- a/aiogram/types/passport_element_error_selfie.py +++ b/aiogram/types/passport_element_error_selfie.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorSelfie(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorselfie """ - source: str = Field("selfie", const=True) + source: Literal["selfie"] = "selfie" """Error source, must be *selfie*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport'""" diff --git a/aiogram/types/passport_element_error_translation_file.py b/aiogram/types/passport_element_error_translation_file.py index d4106453..92b82ad6 100644 --- a/aiogram/types/passport_element_error_translation_file.py +++ b/aiogram/types/passport_element_error_translation_file.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorTranslationFile(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrortranslationfile """ - source: str = Field("translation_file", const=True) + source: Literal["translation_file"] = "translation_file" """Error source, must be *translation_file*""" type: str """Type of element of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_translation_files.py b/aiogram/types/passport_element_error_translation_files.py index df0db64f..a9dbece8 100644 --- a/aiogram/types/passport_element_error_translation_files.py +++ b/aiogram/types/passport_element_error_translation_files.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import List - -from pydantic import Field +from typing import List, Literal from .passport_element_error import PassportElementError @@ -14,7 +12,7 @@ class PassportElementErrorTranslationFiles(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrortranslationfiles """ - source: str = Field("translation_files", const=True) + source: Literal["translation_files"] = "translation_files" """Error source, must be *translation_files*""" type: str """Type of element of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_unspecified.py b/aiogram/types/passport_element_error_unspecified.py index 39d0c417..c287f96c 100644 --- a/aiogram/types/passport_element_error_unspecified.py +++ b/aiogram/types/passport_element_error_unspecified.py @@ -1,6 +1,6 @@ from __future__ import annotations -from pydantic import Field +from typing import Literal from .passport_element_error import PassportElementError @@ -12,7 +12,7 @@ class PassportElementErrorUnspecified(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorunspecified """ - source: str = Field("unspecified", const=True) + source: Literal["unspecified"] = "unspecified" """Error source, must be *unspecified*""" type: str """Type of element of the user's Telegram Passport which has the issue""" diff --git a/aiogram/types/reply_keyboard_remove.py b/aiogram/types/reply_keyboard_remove.py index 1e2c2da9..0260ab6c 100644 --- a/aiogram/types/reply_keyboard_remove.py +++ b/aiogram/types/reply_keyboard_remove.py @@ -1,8 +1,6 @@ from __future__ import annotations -from typing import Optional - -from pydantic import Field +from typing import Literal, Optional from .base import MutableTelegramObject @@ -14,7 +12,7 @@ class ReplyKeyboardRemove(MutableTelegramObject): Source: https://core.telegram.org/bots/api#replykeyboardremove """ - remove_keyboard: bool = Field(True, const=True) + remove_keyboard: Literal[True] = True """Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide the keyboard from sight but keep it accessible, use *one_time_keyboard* in :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup`)""" selective: Optional[bool] = None """*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.""" diff --git a/aiogram/utils/i18n/middleware.py b/aiogram/utils/i18n/middleware.py index 5968cf8a..68be22bc 100644 --- a/aiogram/utils/i18n/middleware.py +++ b/aiogram/utils/i18n/middleware.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from typing import Any, Awaitable, Callable, Dict, Optional, Set, cast +from typing import Any, Awaitable, Callable, Dict, Optional, Set try: from babel import Locale, UnknownLocaleError diff --git a/pyproject.toml b/pyproject.toml index 8c926c6d..c0642a0a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,9 +42,9 @@ classifiers = [ dependencies = [ "magic-filter~=1.0.9", "aiohttp~=3.8.4", - "pydantic~=1.10.7", + "pydantic~=2.0.0", "aiofiles~=23.1.0", - "certifi>=2022.9.24", + "certifi>=2023.5.7", ] dynamic = ["version"] @@ -65,7 +65,7 @@ i18n = [ "Babel~=2.12.1", ] test = [ - "pytest~=7.3.1", + "pytest~=7.4.0", "pytest-html~=3.2.0", "pytest-asyncio~=0.21.0", "pytest-lazy-fixture~=0.6.3", @@ -94,13 +94,13 @@ docs = [ dev = [ "black~=23.3.0", "isort~=5.11", - "ruff~=0.0.262", - "mypy~=1.2.0", + "ruff~=0.0.275", + "mypy~=1.4.1", "toml~=0.10.2", - "pre-commit~=3.2.2", - "towncrier~=22.12.0", + "pre-commit~=3.3.3", + "towncrier~=23.6.0", "packaging~=23.0", - "typing-extensions~=4.5.0", + "typing-extensions~=4.6.0", ] [project.urls] @@ -149,7 +149,7 @@ features = [ "test", ] extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.14" + "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.15" ] [tool.hatch.envs.dev.scripts] diff --git a/tests/test_api/test_methods/test_send_message.py b/tests/test_api/test_methods/test_send_message.py index 0210d73f..1458ed4e 100644 --- a/tests/test_api/test_methods/test_send_message.py +++ b/tests/test_api/test_methods/test_send_message.py @@ -1,7 +1,7 @@ import datetime from aiogram.methods import Request, SendMessage -from aiogram.types import Chat, ForceReply, Message +from aiogram.types import Chat, ForceReply, Message, ReplyKeyboardRemove from tests.mocked_bot import MockedBot @@ -24,5 +24,11 @@ class TestSendMessage: async def test_force_reply(self): # https://github.com/aiogram/aiogram/issues/901 + print("::::", SendMessage.__pydantic_core_schema__) method = SendMessage(text="test", chat_id=42, reply_markup=ForceReply()) assert isinstance(method.reply_markup, ForceReply) + + async def test_reply_keyboard_remove(self): + # https://github.com/aiogram/aiogram/issues/901 + method = SendMessage(text="test", chat_id=42, reply_markup=ReplyKeyboardRemove()) + assert isinstance(method.reply_markup, ReplyKeyboardRemove) diff --git a/tests/test_filters/test_chat_member_updated.py b/tests/test_filters/test_chat_member_updated.py index f3fdce66..8592792c 100644 --- a/tests/test_filters/test_chat_member_updated.py +++ b/tests/test_filters/test_chat_member_updated.py @@ -12,7 +12,16 @@ from aiogram.filters.chat_member_updated import ( _MemberStatusMarker, _MemberStatusTransition, ) -from aiogram.types import Chat, ChatMember, ChatMemberUpdated, User +from aiogram.types import ( + Chat, + ChatMember, + ChatMemberAdministrator, + ChatMemberLeft, + ChatMemberMember, + ChatMemberRestricted, + ChatMemberUpdated, + User, +) class TestMemberStatusMarker: @@ -267,84 +276,91 @@ class TestMemberStatusTransition: class TestChatMemberUpdatedStatusFilter: + USER = User(id=42, first_name="Test", is_bot=False) + PARAMS = { + "user": USER, + "until_date": datetime.now(), + "is_anonymous": True, + "custom_title": "title", + "can_be_edited": True, + "can_manage_chat": True, + "can_delete_messages": True, + "can_manage_video_chats": True, + "can_restrict_members": True, + "can_promote_members": True, + "can_change_info": True, + "can_invite_users": True, + "can_post_messages": True, + "can_edit_messages": True, + "can_pin_messages": True, + "can_manage_topics": True, + "can_send_messages": True, + "can_send_audios": True, + "can_send_documents": True, + "can_send_photos": True, + "can_send_videos": True, + "can_send_video_notes": True, + "can_send_voice_notes": True, + "can_send_polls": True, + "can_send_other_messages": True, + "can_add_web_page_previews": True, + } + @pytest.mark.parametrize( "transition,old,new,result", [ - [JOIN_TRANSITION, ChatMember(status="left"), ChatMember(status="member"), True], [ JOIN_TRANSITION, - ChatMember(status="restricted", is_member=True), - ChatMember(status="member"), - False, - ], - [ - JOIN_TRANSITION, - ChatMember(status="restricted", is_member=False), - ChatMember(status="member"), + ChatMemberLeft(status="left", **PARAMS), + ChatMemberMember(status="member", **PARAMS), True, ], [ JOIN_TRANSITION, - ChatMember(status="member"), - ChatMember(status="restricted", is_member=False), + ChatMemberRestricted(status="restricted", is_member=True, **PARAMS), + ChatMemberMember(status="member", **PARAMS), + False, + ], + [ + JOIN_TRANSITION, + ChatMemberRestricted(status="restricted", is_member=False, **PARAMS), + ChatMemberMember(status="member", **PARAMS), + True, + ], + [ + JOIN_TRANSITION, + ChatMemberMember(status="member", **PARAMS), + ChatMemberRestricted(status="restricted", is_member=False, **PARAMS), False, ], [ LEAVE_TRANSITION, - ChatMember(status="member"), - ChatMember(status="restricted", is_member=False), + ChatMemberMember(status="member", **PARAMS), + ChatMemberRestricted(status="restricted", is_member=False, **PARAMS), True, ], [ ADMINISTRATOR, - ChatMember(status="member"), - ChatMember(status="administrator"), + ChatMemberMember(status="member", **PARAMS), + ChatMemberAdministrator(status="administrator", **PARAMS), True, ], [ IS_MEMBER, - ChatMember(status="restricted", is_member=False), - ChatMember(status="member"), + ChatMemberRestricted(status="restricted", is_member=False, **PARAMS), + ChatMemberMember(status="member", **PARAMS), True, ], ], ) async def test_call(self, transition, old, new, result): updated_filter = ChatMemberUpdatedFilter(member_status_changed=transition) - user = User(id=42, first_name="Test", is_bot=False) - update = { - "user": user, - "until_date": datetime.now(), - "is_anonymous": True, - "custom_title": True, - "can_be_edited": True, - "can_manage_chat": True, - "can_delete_messages": True, - "can_manage_video_chats": True, - "can_restrict_members": True, - "can_promote_members": True, - "can_change_info": True, - "can_invite_users": True, - "can_post_messages": True, - "can_edit_messages": True, - "can_pin_messages": True, - "can_manage_topics": True, - "can_send_messages": True, - "can_send_audios": True, - "can_send_documents": True, - "can_send_photos": True, - "can_send_videos": True, - "can_send_video_notes": True, - "can_send_voice_notes": True, - "can_send_polls": True, - "can_send_other_messages": True, - "can_add_web_page_previews": True, - } + event = ChatMemberUpdated( chat=Chat(id=42, type="test"), - from_user=user, - old_chat_member=old.copy(update=update), - new_chat_member=new.copy(update=update), + from_user=self.USER, + old_chat_member=old, + new_chat_member=new, date=datetime.now(), ) From 298b4f0e0dfd256450ccfc195b8aa222ccbbe008 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 2 Jul 2023 15:12:42 +0300 Subject: [PATCH 015/139] Update texts --- docs/locale/en/LC_MESSAGES/api/bot.po | 18 +- .../api/methods/answer_inline_query.po | 36 +- .../en/LC_MESSAGES/api/methods/get_my_name.po | 68 +++ .../en/LC_MESSAGES/api/methods/get_updates.po | 24 +- .../en/LC_MESSAGES/api/methods/set_my_name.po | 78 ++++ .../locale/en/LC_MESSAGES/api/session/base.po | 11 +- .../en/LC_MESSAGES/api/types/bot_name.po | 34 ++ .../api/types/chat_member_updated.po | 12 +- docs/locale/en/LC_MESSAGES/api/types/index.po | 23 +- .../api/types/inline_keyboard_button.po | 13 +- .../en/LC_MESSAGES/api/types/inline_query.po | 29 +- .../api/types/inline_query_results_button.po | 59 +++ .../en/LC_MESSAGES/api/types/input_sticker.po | 26 +- .../api/types/keyboard_button_request_chat.po | 15 +- .../api/types/keyboard_button_request_user.po | 15 +- .../types/switch_inline_query_chosen_chat.po | 66 +++ .../api/types/write_access_allowed.po | 23 +- docs/locale/en/LC_MESSAGES/api/upload_file.po | 12 +- docs/locale/en/LC_MESSAGES/changelog.po | 220 +++++++-- .../finite_state_machine/storages.po | 34 +- .../locale/en/LC_MESSAGES/utils/formatting.po | 439 ++++++++++++++++++ docs/locale/uk_UA/LC_MESSAGES/api/bot.po | 18 +- .../api/methods/answer_inline_query.po | 36 +- .../LC_MESSAGES/api/methods/get_my_name.po | 68 +++ .../LC_MESSAGES/api/methods/get_updates.po | 24 +- .../LC_MESSAGES/api/methods/set_my_name.po | 78 ++++ .../uk_UA/LC_MESSAGES/api/session/base.po | 11 +- .../uk_UA/LC_MESSAGES/api/types/bot_name.po | 34 ++ .../api/types/chat_member_updated.po | 12 +- .../uk_UA/LC_MESSAGES/api/types/index.po | 23 +- .../api/types/inline_keyboard_button.po | 13 +- .../LC_MESSAGES/api/types/inline_query.po | 29 +- .../api/types/inline_query_results_button.po | 59 +++ .../LC_MESSAGES/api/types/input_sticker.po | 26 +- .../api/types/keyboard_button_request_chat.po | 14 +- .../api/types/keyboard_button_request_user.po | 14 +- .../types/switch_inline_query_chosen_chat.po | 66 +++ .../api/types/write_access_allowed.po | 23 +- .../uk_UA/LC_MESSAGES/api/upload_file.po | 6 +- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 220 +++++++-- .../LC_MESSAGES/dispatcher/filters/text.po | 130 ++++++ .../finite_state_machine/storages.po | 34 +- .../uk_UA/LC_MESSAGES/utils/formatting.po | 439 ++++++++++++++++++ 43 files changed, 2416 insertions(+), 216 deletions(-) create mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po create mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po create mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_name.po create mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po create mode 100644 docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po create mode 100644 docs/locale/en/LC_MESSAGES/utils/formatting.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/methods/get_my_name.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/methods/set_my_name.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/types/bot_name.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po diff --git a/docs/locale/en/LC_MESSAGES/api/bot.po b/docs/locale/en/LC_MESSAGES/api/bot.po index 0a7dbcc9..96a78215 100644 --- a/docs/locale/en/LC_MESSAGES/api/bot.po +++ b/docs/locale/en/LC_MESSAGES/api/bot.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:01+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/bot.rst:3 msgid "Bot" @@ -77,11 +77,23 @@ msgid "" "methods at runtime." msgstr "" +#: aiogram.client.bot.Bot.__init__:8 of +msgid "" +"Default disable_web_page_preview mode. If specified it will be propagated" +" into the API methods at runtime." +msgstr "" + +#: aiogram.client.bot.Bot.__init__:10 of +msgid "" +"Default protect_content mode. If specified it will be propagated into the" +" API methods at runtime." +msgstr "" + #: aiogram.client.bot.Bot.__init__ of msgid "Raises" msgstr "" -#: aiogram.client.bot.Bot.__init__:8 of +#: aiogram.client.bot.Bot.__init__:12 of msgid "When token has invalid format this exception will be raised" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po index 22834a67..329640c8 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_inline_query.rst:3 msgid "answerInlineQuery" @@ -61,7 +61,7 @@ msgstr "" msgid "" "Pass :code:`True` if results may be cached on the server side only for " "the user that sent the query. By default, results may be returned to any " -"user who sends the same query" +"user who sends the same query." msgstr "" #: ../../docstring @@ -74,11 +74,10 @@ msgid "" msgstr "" #: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:1 of +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.button:1 of msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" +"A JSON-serialized object describing a button to be shown above inline " +"query results" msgstr "" #: ../../docstring @@ -91,6 +90,20 @@ msgid "" ":code:`0-9`, :code:`_` and :code:`-` are allowed." msgstr "" +#: ../../docstring +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_parameter:3 +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:3 of +msgid "https://core.telegram.org/bots/api-changelog#april-21-2023" +msgstr "" + +#: ../../docstring +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:1 of +msgid "" +"If passed, clients will display a button with specified text that " +"switches the user to a private chat with the bot and sends the bot a " +"start message with the parameter *switch_pm_parameter*" +msgstr "" + #: ../../api/methods/answer_inline_query.rst:14 msgid "Usage" msgstr "" @@ -140,3 +153,12 @@ msgstr "" #~ ":code:`0-9`, :code:`_` and :code:`-` are " #~ "allowed." #~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if results may be " +#~ "cached on the server side only for" +#~ " the user that sent the query. " +#~ "By default, results may be returned " +#~ "to any user who sends the same " +#~ "query" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po new file mode 100644 index 00000000..0437b444 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/get_my_name.rst:3 +msgid "getMyName" +msgstr "" + +#: ../../api/methods/get_my_name.rst:5 +msgid "Returns: :obj:`BotName`" +msgstr "" + +#: aiogram.methods.get_my_name.GetMyName:1 of +msgid "" +"Use this method to get the current bot name for the given user language. " +"Returns :class:`aiogram.types.bot_name.BotName` on success." +msgstr "" + +#: aiogram.methods.get_my_name.GetMyName:3 of +msgid "Source: https://core.telegram.org/bots/api#getmyname" +msgstr "" + +#: ../../docstring aiogram.methods.get_my_name.GetMyName.language_code:1 of +msgid "A two-letter ISO 639-1 language code or an empty string" +msgstr "" + +#: ../../api/methods/get_my_name.rst:14 +msgid "Usage" +msgstr "" + +#: ../../api/methods/get_my_name.rst:17 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/get_my_name.rst:25 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/get_my_name.rst:27 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/get_my_name.rst:29 +msgid ":code:`from aiogram.methods.get_my_name import GetMyName`" +msgstr "" + +#: ../../api/methods/get_my_name.rst:30 +msgid "alias: :code:`from aiogram.methods import GetMyName`" +msgstr "" + +#: ../../api/methods/get_my_name.rst:33 +msgid "With specific bot" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po b/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po index e64a0df6..39a54f54 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/get_updates.rst:3 msgid "getUpdates" @@ -59,7 +59,7 @@ msgid "" ":class:`aiogram.methods.get_updates.GetUpdates` is called with an " "*offset* higher than its *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." +" of the updates queue. All previous updates will be forgotten." msgstr "" #: ../../docstring aiogram.methods.get_updates.GetUpdates.limit:1 of @@ -113,3 +113,21 @@ msgstr "" #: ../../api/methods/get_updates.rst:33 msgid "With specific bot" msgstr "" + +#~ msgid "" +#~ "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 " +#~ "returned. An update is considered " +#~ "confirmed as soon as " +#~ ":class:`aiogram.methods.get_updates.GetUpdates` is called" +#~ " with an *offset* higher than its " +#~ "*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." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po new file mode 100644 index 00000000..b5befc8d --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/set_my_name.rst:3 +msgid "setMyName" +msgstr "" + +#: ../../api/methods/set_my_name.rst:5 +msgid "Returns: :obj:`bool`" +msgstr "" + +#: aiogram.methods.set_my_name.SetMyName:1 of +msgid "Use this method to change the bot's name. Returns :code:`True` on success." +msgstr "" + +#: aiogram.methods.set_my_name.SetMyName:3 of +msgid "Source: https://core.telegram.org/bots/api#setmyname" +msgstr "" + +#: ../../docstring aiogram.methods.set_my_name.SetMyName.name:1 of +msgid "" +"New bot name; 0-64 characters. Pass an empty string to remove the " +"dedicated name for the given language." +msgstr "" + +#: ../../docstring aiogram.methods.set_my_name.SetMyName.language_code:1 of +msgid "" +"A two-letter ISO 639-1 language code. If empty, the name will be shown to" +" all users for whose language there is no dedicated name." +msgstr "" + +#: ../../api/methods/set_my_name.rst:14 +msgid "Usage" +msgstr "" + +#: ../../api/methods/set_my_name.rst:17 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/set_my_name.rst:25 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/set_my_name.rst:27 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/set_my_name.rst:29 +msgid ":code:`from aiogram.methods.set_my_name import SetMyName`" +msgstr "" + +#: ../../api/methods/set_my_name.rst:30 +msgid "alias: :code:`from aiogram.methods import SetMyName`" +msgstr "" + +#: ../../api/methods/set_my_name.rst:33 +msgid "With specific bot" +msgstr "" + +#: ../../api/methods/set_my_name.rst:40 +msgid "As reply into Webhook in handler" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/base.po b/docs/locale/en/LC_MESSAGES/api/session/base.po index 3587676e..413eafd2 100644 --- a/docs/locale/en/LC_MESSAGES/api/session/base.po +++ b/docs/locale/en/LC_MESSAGES/api/session/base.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/session/base.rst:3 msgid "Base" @@ -29,10 +29,6 @@ msgstr "" msgid "Check response status" msgstr "" -#: aiogram.client.session.base.BaseSession.clean_json:1 of -msgid "Clean data before send" -msgstr "" - #: aiogram.client.session.base.BaseSession.close:1 of msgid "Close client session" msgstr "" @@ -72,3 +68,6 @@ msgstr "" #: aiogram.client.session.base.BaseSession.stream_content:1 of msgid "Stream reader" msgstr "" + +#~ msgid "Clean data before send" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_name.po b/docs/locale/en/LC_MESSAGES/api/types/bot_name.po new file mode 100644 index 00000000..64e89253 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/types/bot_name.po @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/bot_name.rst:3 +msgid "BotName" +msgstr "" + +#: aiogram.types.bot_name.BotName:1 of +msgid "This object represents the bot's name." +msgstr "" + +#: aiogram.types.bot_name.BotName:3 of +msgid "Source: https://core.telegram.org/bots/api#botname" +msgstr "" + +#: ../../docstring aiogram.types.bot_name.BotName.name:1 of +msgid "The bot's name" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po index a362821e..756e5b94 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po +++ b/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member_updated.rst:3 msgid "ChatMemberUpdated" @@ -60,3 +60,11 @@ msgid "" "*Optional*. Chat invite link, which was used by the user to join the " "chat; for joining by invite link events only." msgstr "" + +#: ../../docstring +#: aiogram.types.chat_member_updated.ChatMemberUpdated.via_chat_folder_invite_link:1 +#: of +msgid "" +"*Optional*. True, if the user joined the chat via a chat folder invite " +"link" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/index.po b/docs/locale/en/LC_MESSAGES/api/types/index.po index 8ee34c1a..dd347157 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/index.po +++ b/docs/locale/en/LC_MESSAGES/api/types/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/index.rst:3 msgid "Types" @@ -29,33 +29,32 @@ msgstr "" msgid "Inline mode" msgstr "" -#: ../../api/types/index.rst:46 +#: ../../api/types/index.rst:47 msgid "Available types" msgstr "" -#: ../../api/types/index.rst:134 +#: ../../api/types/index.rst:143 msgid "Telegram Passport" msgstr "" -#: ../../api/types/index.rst:155 +#: ../../api/types/index.rst:164 msgid "Getting updates" msgstr "" -#: ../../api/types/index.rst:164 +#: ../../api/types/index.rst:173 msgid "Stickers" msgstr "" -#: ../../api/types/index.rst:174 +#: ../../api/types/index.rst:184 msgid "Payments" msgstr "" -#: ../../api/types/index.rst:189 -msgid "Games" -msgstr "" - #: ../../api/types/index.rst:199 -msgid "Internals" +msgid "Games" msgstr "" #~ msgid "Internal events" #~ msgstr "" + +#~ msgid "Internals" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po b/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po index 7e6bedbe..3db47e31 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po +++ b/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/inline_keyboard_button.rst:3 msgid "InlineKeyboardButton" @@ -91,6 +91,15 @@ msgid "" "empty, in which case only the bot's username will be inserted." msgstr "" +#: ../../docstring +#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.switch_inline_query_chosen_chat:1 +#: of +msgid "" +"*Optional*. If set, pressing the button will prompt the user to select " +"one of their chats of the specified type, open that chat and insert the " +"bot's username and the specified inline query in the input field" +msgstr "" + #: ../../docstring #: aiogram.types.inline_keyboard_button.InlineKeyboardButton.callback_game:1 of msgid "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query.po index 4146b049..f848f5d0 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query.po +++ b/docs/locale/en/LC_MESSAGES/api/types/inline_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/inline_query.rst:3 msgid "InlineQuery" @@ -103,7 +103,7 @@ msgstr "" msgid "" "Pass :code:`True` if results may be cached on the server side only for " "the user that sent the query. By default, results may be returned to any " -"user who sends the same query" +"user who sends the same query." msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:15 of @@ -116,9 +116,8 @@ msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:16 of msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" +"A JSON-serialized object describing a button to be shown above inline " +"query results" msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:17 of @@ -129,12 +128,28 @@ msgid "" ":code:`0-9`, :code:`_` and :code:`-` are allowed." msgstr "" +#: aiogram.types.inline_query.InlineQuery.answer:18 of +msgid "" +"If passed, clients will display a button with specified text that " +"switches the user to a private chat with the bot and sends the bot a " +"start message with the parameter *switch_pm_parameter*" +msgstr "" + #: aiogram.types.inline_query.InlineQuery.answer of msgid "Returns" msgstr "" -#: aiogram.types.inline_query.InlineQuery.answer:18 of +#: aiogram.types.inline_query.InlineQuery.answer:19 of msgid "" "instance of method " ":class:`aiogram.methods.answer_inline_query.AnswerInlineQuery`" msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if results may be " +#~ "cached on the server side only for" +#~ " the user that sent the query. " +#~ "By default, results may be returned " +#~ "to any user who sends the same " +#~ "query" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po new file mode 100644 index 00000000..3dcf4f0f --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po @@ -0,0 +1,59 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/inline_query_results_button.rst:3 +msgid "InlineQueryResultsButton" +msgstr "" + +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:1 of +msgid "" +"This object represents a button to be shown above inline query results. " +"You **must** use exactly one of the optional fields." +msgstr "" + +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:3 of +msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultsbutton" +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.text:1 of +msgid "Label text on the button" +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.web_app:1 +#: of +msgid "" +"*Optional*. Description of the `Web App " +"`_ that will be launched when the" +" user presses the button. The Web App will be able to switch back to the " +"inline mode using the method `switchInlineQuery " +"`_ inside " +"the Web App." +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.start_parameter:1 +#: of +msgid "" +"*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user " +"presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " +":code:`0-9`, :code:`_` and :code:`-` are allowed." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po b/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po index 3bbc8b33..fb2433c4 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po +++ b/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/input_sticker.rst:3 msgid "InputSticker" @@ -33,9 +33,11 @@ msgstr "" msgid "" "The added sticker. Pass a *file_id* as a String to send a file that " "already exists on the Telegram servers, pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. Animated and video stickers can't be uploaded via " -"HTTP URL. :ref:`More information on Sending Files » `" +"Telegram to get a file from the Internet, upload a new one using " +"multipart/form-data, or pass 'attach://' to upload a " +"new one using multipart/form-data under name. Animated" +" and video stickers can't be uploaded via HTTP URL. :ref:`More " +"information on Sending Files » `" msgstr "" #: ../../docstring aiogram.types.input_sticker.InputSticker.emoji_list:1 of @@ -54,3 +56,17 @@ msgid "" "length of up to 64 characters. For 'regular' and 'custom_emoji' stickers " "only." msgstr "" + +#~ msgid "" +#~ "The added sticker. Pass a *file_id* " +#~ "as a String to send a file " +#~ "that already exists on the Telegram " +#~ "servers, pass an HTTP URL as a " +#~ "String for Telegram to get a file" +#~ " from the Internet, or upload a " +#~ "new one using multipart/form-data. " +#~ "Animated and video stickers can't be " +#~ "uploaded via HTTP URL. :ref:`More " +#~ "information on Sending Files » " +#~ "`" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po index 69f4736f..2912a3f0 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po +++ b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/keyboard_button_request_chat.rst:3 msgid "KeyboardButtonRequestChat" @@ -25,7 +25,8 @@ msgstr "" msgid "" "This object defines the criteria used to request a suitable chat. The " "identifier of the selected chat will be shared with the bot when the " -"corresponding button is pressed." +"corresponding button is pressed. `More about requesting chats » " +"`_" msgstr "" #: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat:3 of @@ -102,3 +103,11 @@ msgid "" "*Optional*. Pass :code:`True` to request a chat with the bot as a member." " Otherwise, no additional restrictions are applied." msgstr "" + +#~ msgid "" +#~ "This object defines the criteria used" +#~ " to request a suitable chat. The " +#~ "identifier of the selected chat will " +#~ "be shared with the bot when the" +#~ " corresponding button is pressed." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po index faf737b0..1e0bca68 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po +++ b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/keyboard_button_request_user.rst:3 msgid "KeyboardButtonRequestUser" @@ -25,7 +25,8 @@ msgstr "" msgid "" "This object defines the criteria used to request a suitable user. The " "identifier of the selected user will be shared with the bot when the " -"corresponding button is pressed." +"corresponding button is pressed. `More about requesting users » " +"`_" msgstr "" #: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser:3 of @@ -58,3 +59,11 @@ msgid "" ":code:`False` to request a non-premium user. If not specified, no " "additional restrictions are applied." msgstr "" + +#~ msgid "" +#~ "This object defines the criteria used" +#~ " to request a suitable user. The " +#~ "identifier of the selected user will " +#~ "be shared with the bot when the" +#~ " corresponding button is pressed." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po b/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po new file mode 100644 index 00000000..3b8f431d --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/switch_inline_query_chosen_chat.rst:3 +msgid "SwitchInlineQueryChosenChat" +msgstr "" + +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:1 +#: of +msgid "" +"This object represents an inline button that switches the current user to" +" inline mode in a chosen chat, with an optional default inline query." +msgstr "" + +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:3 +#: of +msgid "Source: https://core.telegram.org/bots/api#switchinlinequerychosenchat" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.query:1 +#: of +msgid "" +"*Optional*. The default inline query to be inserted in the input field. " +"If left empty, only the bot's username will be inserted" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_user_chats:1 +#: of +msgid "*Optional*. True, if private chats with users can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_bot_chats:1 +#: of +msgid "*Optional*. True, if private chats with bots can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_group_chats:1 +#: of +msgid "*Optional*. True, if group and supergroup chats can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_channel_chats:1 +#: of +msgid "*Optional*. True, if channel chats can be chosen" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po b/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po index e2754dd2..4fee2157 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po +++ b/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/write_access_allowed.rst:3 msgid "WriteAccessAllowed" @@ -23,11 +23,24 @@ msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:1 of msgid "" -"This object represents a service message about a user allowing a bot " -"added to the attachment menu to write messages. Currently holds no " -"information." +"This object represents a service message about a user allowing a bot to " +"write messages after adding the bot to the attachment menu or launching a" +" Web App from a link." msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:3 of msgid "Source: https://core.telegram.org/bots/api#writeaccessallowed" msgstr "" + +#: ../../docstring +#: aiogram.types.write_access_allowed.WriteAccessAllowed.web_app_name:1 of +msgid "*Optional*. Name of the Web App which was launched from a link" +msgstr "" + +#~ msgid "" +#~ "This object represents a service message" +#~ " about a user allowing a bot " +#~ "added to the attachment menu to " +#~ "write messages. Currently holds no " +#~ "information." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/upload_file.po b/docs/locale/en/LC_MESSAGES/api/upload_file.po index 8e01cf9e..a7ff966a 100644 --- a/docs/locale/en/LC_MESSAGES/api/upload_file.po +++ b/docs/locale/en/LC_MESSAGES/api/upload_file.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/upload_file.rst:5 msgid "How to upload file?" @@ -37,7 +37,7 @@ msgstr "" #: ../../api/upload_file.rst:13 msgid "" "But if you need to upload a new file just use subclasses of `InputFile " -"`__." +"`__." msgstr "" #: ../../api/upload_file.rst:15 @@ -187,3 +187,9 @@ msgstr "" #~ "want's to sent it to the " #~ "Telegram):" #~ msgstr "" + +#~ msgid "" +#~ "But if you need to upload a " +#~ "new file just use subclasses of " +#~ "`InputFile `__." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po index ec08c2fa..25d6a145 100644 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ b/docs/locale/en/LC_MESSAGES/changelog.po @@ -8,59 +8,240 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../../CHANGES.rst:3 msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" msgstr "" -#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 +#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 +#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 +#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 +#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 #: ../../[towncrier-fragments]:5 -msgid "Improved Documentation" +msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 msgid "" +"If router does not support custom event it does not break and passes it " +"to included routers `#1147 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:9 +msgid "Added support for FSM in Forum topics." +msgstr "" + +#: ../../[towncrier-fragments]:11 +msgid "The strategy can be changed in dispatcher:" +msgstr "" + +#: ../../[towncrier-fragments]:24 +msgid "" +"If you have implemented you own storages you should extend record key " +"generation with new one attribute - `thread_id`" +msgstr "" + +#: ../../[towncrier-fragments]:26 +msgid "`#1161 `_" +msgstr "" + +#: ../../[towncrier-fragments]:27 +msgid "Improved CallbackData serialization." +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "Minimized UUID (hex without dashes)" +msgstr "" + +#: ../../[towncrier-fragments]:30 +msgid "Replaced bool values with int (true=1, false=0)" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "`#1163 `_" +msgstr "" + +#: ../../[towncrier-fragments]:32 +msgid "" +"Added a tool to make text formatting flexible and easy. More details on " +"the :ref:`corresponding documentation page ` `#1172 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "" +"Added X-Telegram-Bot-Api-Secret-Token header check `#1173 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:37 +msgid "" +"Added possibility to pass custom headers to URLInputFile object `#1191 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 +#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 +#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:616 ../../[towncrier-fragments]:42 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:44 +msgid "" +"Change type of result in InlineQueryResult enum for " +"`InlineQueryResultCachedMpeg4Gif` and `InlineQueryResultMpeg4Gif` to more" +" correct according to documentation." +msgstr "" + +#: ../../[towncrier-fragments]:47 +msgid "" +"Change regexp for entities parsing to more correct " +"(`InlineQueryResultType.yml`). `#1146 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:49 +msgid "" +"Fixed signature of startup/shutdown events to include the " +"**dispatcher.workflow_data as the handler arguments. `#1155 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:51 +msgid "" +"Added missing FORUM_TOPIC_EDITED value to content_type property `#1160 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:53 +msgid "" +"Fixed compatibility with Python 3.8-3.9 `#1162 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:55 +msgid "" +"Fixed the markdown spoiler parser. `#1176 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:57 +msgid "" +"Fixed workflow data propagation `#1196 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 +#: ../../[towncrier-fragments]:62 +msgid "Improved Documentation" +msgstr "" + +#: ../../[towncrier-fragments]:64 +msgid "" "Changed small grammar typos for `upload_file` `#1133 " "`_" msgstr "" +#: ../../../CHANGES.rst:250 ../../[towncrier-fragments]:69 +msgid "Deprecations and Removals" +msgstr "" + +#: ../../[towncrier-fragments]:71 +msgid "" +"Removed text filter in due to is planned to remove this filter few " +"versions ago." +msgstr "" + +#: ../../[towncrier-fragments]:73 +msgid "" +"Use :code:`F.text` instead `#1170 " +"`_" +msgstr "" + #: ../../../CHANGES.rst:127 ../../../CHANGES.rst:204 ../../../CHANGES.rst:257 #: ../../../CHANGES.rst:308 ../../../CHANGES.rst:362 ../../../CHANGES.rst:404 #: ../../../CHANGES.rst:450 ../../../CHANGES.rst:510 ../../../CHANGES.rst:531 #: ../../../CHANGES.rst:554 ../../../CHANGES.rst:591 ../../../CHANGES.rst:630 -#: ../../[towncrier-fragments]:12 +#: ../../[towncrier-fragments]:78 msgid "Misc" msgstr "" -#: ../../[towncrier-fragments]:14 +#: ../../[towncrier-fragments]:80 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../[towncrier-fragments]:18 +#: ../../[towncrier-fragments]:84 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../[towncrier-fragments]:21 +#: ../../[towncrier-fragments]:87 msgid "`#1139 `_" msgstr "" +#: ../../[towncrier-fragments]:88 +msgid "" +"Added global defaults `disable_web_page_preview` and `protect_content` in" +" addition to `parse_mode` to the Bot instance, reworked internal request " +"builder mechanism. `#1142 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:91 +msgid "" +"Removed bot parameters from storages `#1144 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:93 +msgid "" +"Added full support of `Bot API 6.7 `_" +msgstr "" + +#: ../../[towncrier-fragments]:97 +msgid "" +"Note that arguments *switch_pm_parameter* and *switch_pm_text* was " +"deprecated and should be changed to *button* argument as described in API" +" docs." +msgstr "" + +#: ../../[towncrier-fragments]:99 +msgid "`#1168 `_" +msgstr "" + +#: ../../[towncrier-fragments]:100 +msgid "Updated `Pydantic to V2 `_" +msgstr "" + +#: ../../[towncrier-fragments]:104 +msgid "" +"Be careful, not all libraries is already updated to using V2 (for example" +" at the time, when this warning was added FastAPI still not support V2)" +msgstr "" + +#: ../../[towncrier-fragments]:106 +msgid "`#1202 `_" +msgstr "" + #: ../../../CHANGES.rst:20 msgid "3.0.0b7 (2023-02-18)" msgstr "" @@ -83,13 +264,6 @@ msgstr "" msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 -#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 -#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 -#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 -msgid "Features" -msgstr "" - #: ../../../CHANGES.rst:58 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" @@ -189,13 +363,6 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 -#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 -#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 -#: ../../../CHANGES.rst:616 -msgid "Bugfixes" -msgstr "" - #: ../../../CHANGES.rst:120 msgid "" "Check status code when downloading file `#816 " @@ -459,10 +626,6 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:250 -msgid "Deprecations and Removals" -msgstr "" - #: ../../../CHANGES.rst:252 msgid "" "Removed filters factory as described in corresponding issue. `#942 " @@ -2618,3 +2781,6 @@ msgstr "" #~ ":class:`aiogram.enums.topic_icon_color.TopicIconColor`, " #~ ":class:`aiogram.enums.update_type.UpdateType`," #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po b/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po index 271fd8e1..f8669452 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-02 22:41+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/finite_state_machine/storages.rst:3 msgid "Storages" @@ -79,10 +79,6 @@ msgstr "" msgid "TTL for data records" msgstr "" -#: aiogram.fsm.storage.redis.RedisStorage.__init__:5 of -msgid "Custom arguments for Redis lock" -msgstr "" - #: aiogram.fsm.storage.redis.RedisStorage.from_url:1 of msgid "" "Create an instance of :class:`RedisStorage` with specifying the " @@ -169,18 +165,10 @@ msgstr "" #: aiogram.fsm.storage.base.BaseStorage.set_data:3 #: aiogram.fsm.storage.base.BaseStorage.set_state:3 #: aiogram.fsm.storage.base.BaseStorage.update_data:3 of -msgid "instance of the current bot" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data:4 -#: aiogram.fsm.storage.base.BaseStorage.get_state:4 -#: aiogram.fsm.storage.base.BaseStorage.set_data:4 -#: aiogram.fsm.storage.base.BaseStorage.set_state:4 -#: aiogram.fsm.storage.base.BaseStorage.update_data:4 of msgid "storage key" msgstr "" -#: aiogram.fsm.storage.base.BaseStorage.set_state:5 of +#: aiogram.fsm.storage.base.BaseStorage.set_state:4 of msgid "new state" msgstr "" @@ -188,7 +176,7 @@ msgstr "" msgid "Get key state" msgstr "" -#: aiogram.fsm.storage.base.BaseStorage.get_state:5 of +#: aiogram.fsm.storage.base.BaseStorage.get_state:4 of msgid "current state" msgstr "" @@ -196,8 +184,8 @@ msgstr "" msgid "Write data (replace)" msgstr "" -#: aiogram.fsm.storage.base.BaseStorage.set_data:5 -#: aiogram.fsm.storage.base.BaseStorage.update_data:6 of +#: aiogram.fsm.storage.base.BaseStorage.set_data:4 +#: aiogram.fsm.storage.base.BaseStorage.update_data:5 of msgid "new data" msgstr "" @@ -205,7 +193,7 @@ msgstr "" msgid "Get current data for key" msgstr "" -#: aiogram.fsm.storage.base.BaseStorage.get_data:5 of +#: aiogram.fsm.storage.base.BaseStorage.get_data:4 of msgid "current data" msgstr "" @@ -213,7 +201,7 @@ msgstr "" msgid "Update date in the storage for key (like dict.update)" msgstr "" -#: aiogram.fsm.storage.base.BaseStorage.update_data:5 of +#: aiogram.fsm.storage.base.BaseStorage.update_data:4 of msgid "partial data" msgstr "" @@ -229,3 +217,9 @@ msgstr "" #~ msgid "see :code:`aioredis` docs" #~ msgstr "" + +#~ msgid "Custom arguments for Redis lock" +#~ msgstr "" + +#~ msgid "instance of the current bot" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/formatting.po b/docs/locale/en/LC_MESSAGES/utils/formatting.po new file mode 100644 index 00000000..49966ca8 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/utils/formatting.po @@ -0,0 +1,439 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../utils/formatting.rst:5 +msgid "Formatting" +msgstr "" + +#: ../../utils/formatting.rst:7 +msgid "Make your message formatting flexible and simple" +msgstr "" + +#: ../../utils/formatting.rst:9 +msgid "" +"This instrument works on top of Message entities instead of using HTML or" +" Markdown markups, you can easily construct your message and sent it to " +"the Telegram without the need to remember tag parity (opening and " +"closing) or escaping user input." +msgstr "" + +#: ../../utils/formatting.rst:14 +msgid "Usage" +msgstr "" + +#: ../../utils/formatting.rst:17 +msgid "Basic scenario" +msgstr "" + +#: ../../utils/formatting.rst:19 +msgid "Construct your message and send it to the Telegram." +msgstr "" + +#: ../../utils/formatting.rst:26 +msgid "Is the same as the next example, but without usage markup" +msgstr "" + +#: ../../utils/formatting.rst:35 +msgid "" +"Literally when you execute :code:`as_kwargs` method the Text object is " +"converted into text :code:`Hello, Alex!` with entities list " +":code:`[MessageEntity(type='bold', offset=7, length=4)]` and passed into " +"dict which can be used as :code:`**kwargs` in API call." +msgstr "" + +#: ../../utils/formatting.rst:39 +msgid "" +"The complete list of elements is listed `on this page below <#available-" +"elements>`_." +msgstr "" + +#: ../../utils/formatting.rst:42 +msgid "Advanced scenario" +msgstr "" + +#: ../../utils/formatting.rst:44 +msgid "" +"On top of base elements can be implemented content rendering structures, " +"so, out of the box aiogram has a few already implemented functions that " +"helps you to format your messages:" +msgstr "" + +#: aiogram.utils.formatting.as_line:1 of +msgid "Wrap multiple nodes into line with :code:`\\\\n` at the end of line." +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs +#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line +#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list +#: aiogram.utils.formatting.as_marked_section +#: aiogram.utils.formatting.as_numbered_list +#: aiogram.utils.formatting.as_numbered_section +#: aiogram.utils.formatting.as_section of +msgid "Parameters" +msgstr "" + +#: aiogram.utils.formatting.as_line:3 of +msgid "Text or Any" +msgstr "" + +#: aiogram.utils.formatting.as_line:4 of +msgid "ending of the line, by default is :code:`\\\\n`" +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs aiogram.utils.formatting.Text.render +#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line +#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list +#: aiogram.utils.formatting.as_marked_section +#: aiogram.utils.formatting.as_numbered_list +#: aiogram.utils.formatting.as_numbered_section +#: aiogram.utils.formatting.as_section of +msgid "Returns" +msgstr "" + +#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:5 +#: aiogram.utils.formatting.as_marked_list:5 +#: aiogram.utils.formatting.as_numbered_list:6 +#: aiogram.utils.formatting.as_section:5 of +msgid "Text" +msgstr "" + +#: aiogram.utils.formatting.as_list:1 of +msgid "Wrap each element to separated lines" +msgstr "" + +#: aiogram.utils.formatting.as_marked_list:1 of +msgid "Wrap elements as marked list" +msgstr "" + +#: aiogram.utils.formatting.as_marked_list:4 of +msgid "line marker, by default is :code:`- `" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:1 of +msgid "Wrap elements as numbered list" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:4 of +msgid "initial number, by default 1" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:5 of +msgid "number format, by default :code:`{}. `" +msgstr "" + +#: aiogram.utils.formatting.as_section:1 of +msgid "Wrap elements as simple section, section has title and body" +msgstr "" + +#: aiogram.utils.formatting.as_marked_section:1 of +msgid "Wrap elements as section with marked list" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_section:1 of +msgid "Wrap elements as section with numbered list" +msgstr "" + +#: aiogram.utils.formatting.as_key_value:1 of +msgid "Wrap elements pair as key-value line. (:code:`{key}: {value}`)" +msgstr "" + +#: ../../utils/formatting.rst:64 +msgid "and lets complete them all:" +msgstr "" + +#: ../../utils/formatting.rst:92 +msgid "Will be rendered into:" +msgstr "" + +#: ../../utils/formatting.rst:94 +msgid "**Success:**" +msgstr "" + +#: ../../utils/formatting.rst:96 +msgid "✅ Test 1" +msgstr "" + +#: ../../utils/formatting.rst:98 +msgid "✅ Test 3" +msgstr "" + +#: ../../utils/formatting.rst:100 +msgid "✅ Test 4" +msgstr "" + +#: ../../utils/formatting.rst:102 +msgid "**Failed:**" +msgstr "" + +#: ../../utils/formatting.rst:104 +msgid "❌ Test 2" +msgstr "" + +#: ../../utils/formatting.rst:106 +msgid "**Summary:**" +msgstr "" + +#: ../../utils/formatting.rst:108 +msgid "**Total**: 4" +msgstr "" + +#: ../../utils/formatting.rst:110 +msgid "**Success**: 3" +msgstr "" + +#: ../../utils/formatting.rst:112 +msgid "**Failed**: 1" +msgstr "" + +#: ../../utils/formatting.rst:114 +msgid "#test" +msgstr "" + +#: ../../utils/formatting.rst:117 +msgid "Or as HTML:" +msgstr "" + +#: ../../utils/formatting.rst:137 +msgid "Available methods" +msgstr "" + +#: aiogram.utils.formatting.Text:1 of +msgid "Bases: :py:class:`~typing.Iterable`\\ [:py:obj:`~typing.Any`]" +msgstr "" + +#: aiogram.utils.formatting.Text:1 of +msgid "Simple text element" +msgstr "" + +#: aiogram.utils.formatting.Text.render:1 of +msgid "Render elements tree as text with entities list" +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs:1 of +msgid "" +"Render elements tree as keyword arguments for usage in the API call, for " +"example:" +msgstr "" + +#: aiogram.utils.formatting.Text.as_html:1 of +msgid "Render elements tree as HTML markup" +msgstr "" + +#: aiogram.utils.formatting.Text.as_markdown:1 of +msgid "Render elements tree as MarkdownV2 markup" +msgstr "" + +#: ../../utils/formatting.rst:147 +msgid "Available elements" +msgstr "" + +#: aiogram.utils.formatting.Bold:1 aiogram.utils.formatting.BotCommand:1 +#: aiogram.utils.formatting.CashTag:1 aiogram.utils.formatting.Code:1 +#: aiogram.utils.formatting.CustomEmoji:1 aiogram.utils.formatting.Email:1 +#: aiogram.utils.formatting.HashTag:1 aiogram.utils.formatting.Italic:1 +#: aiogram.utils.formatting.PhoneNumber:1 aiogram.utils.formatting.Pre:1 +#: aiogram.utils.formatting.Spoiler:1 aiogram.utils.formatting.Strikethrough:1 +#: aiogram.utils.formatting.TextLink:1 aiogram.utils.formatting.TextMention:1 +#: aiogram.utils.formatting.Underline:1 aiogram.utils.formatting.Url:1 of +msgid "Bases: :py:class:`~aiogram.utils.formatting.Text`" +msgstr "" + +#: aiogram.utils.formatting.HashTag:1 of +msgid "Hashtag element." +msgstr "" + +#: aiogram.utils.formatting.HashTag:5 of +msgid "The value should always start with '#' symbol" +msgstr "" + +#: aiogram.utils.formatting.HashTag:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.HASHTAG`" +msgstr "" + +#: aiogram.utils.formatting.CashTag:1 of +msgid "Cashtag element." +msgstr "" + +#: aiogram.utils.formatting.CashTag:5 of +msgid "The value should always start with '$' symbol" +msgstr "" + +#: aiogram.utils.formatting.CashTag:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.CASHTAG`" +msgstr "" + +#: aiogram.utils.formatting.BotCommand:1 of +msgid "Bot command element." +msgstr "" + +#: aiogram.utils.formatting.BotCommand:5 of +msgid "The value should always start with '/' symbol" +msgstr "" + +#: aiogram.utils.formatting.BotCommand:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.BOT_COMMAND`" +msgstr "" + +#: aiogram.utils.formatting.Url:1 of +msgid "Url element." +msgstr "" + +#: aiogram.utils.formatting.Url:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.URL`" +msgstr "" + +#: aiogram.utils.formatting.Email:1 of +msgid "Email element." +msgstr "" + +#: aiogram.utils.formatting.Email:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.EMAIL`" +msgstr "" + +#: aiogram.utils.formatting.PhoneNumber:1 of +msgid "Phone number element." +msgstr "" + +#: aiogram.utils.formatting.PhoneNumber:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.PHONE_NUMBER`" +msgstr "" + +#: aiogram.utils.formatting.Bold:1 of +msgid "Bold element." +msgstr "" + +#: aiogram.utils.formatting.Bold:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOLD`" +msgstr "" + +#: aiogram.utils.formatting.Italic:1 of +msgid "Italic element." +msgstr "" + +#: aiogram.utils.formatting.Italic:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.ITALIC`" +msgstr "" + +#: aiogram.utils.formatting.Underline:1 of +msgid "Underline element." +msgstr "" + +#: aiogram.utils.formatting.Underline:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.UNDERLINE`" +msgstr "" + +#: aiogram.utils.formatting.Strikethrough:1 of +msgid "Strikethrough element." +msgstr "" + +#: aiogram.utils.formatting.Strikethrough:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.STRIKETHROUGH`" +msgstr "" + +#: aiogram.utils.formatting.Spoiler:1 of +msgid "Spoiler element." +msgstr "" + +#: aiogram.utils.formatting.Spoiler:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.SPOILER`" +msgstr "" + +#: aiogram.utils.formatting.Code:1 of +msgid "Code element." +msgstr "" + +#: aiogram.utils.formatting.Code:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CODE`" +msgstr "" + +#: aiogram.utils.formatting.Pre:1 of +msgid "Pre element." +msgstr "" + +#: aiogram.utils.formatting.Pre:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PRE`" +msgstr "" + +#: aiogram.utils.formatting.TextLink:1 of +msgid "Text link element." +msgstr "" + +#: aiogram.utils.formatting.TextLink:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_LINK`" +msgstr "" + +#: aiogram.utils.formatting.TextMention:1 of +msgid "Text mention element." +msgstr "" + +#: aiogram.utils.formatting.TextMention:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_MENTION`" +msgstr "" + +#: aiogram.utils.formatting.CustomEmoji:1 of +msgid "Custom emoji element." +msgstr "" + +#: aiogram.utils.formatting.CustomEmoji:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po index 0a7dbcc9..96a78215 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:01+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/bot.rst:3 msgid "Bot" @@ -77,11 +77,23 @@ msgid "" "methods at runtime." msgstr "" +#: aiogram.client.bot.Bot.__init__:8 of +msgid "" +"Default disable_web_page_preview mode. If specified it will be propagated" +" into the API methods at runtime." +msgstr "" + +#: aiogram.client.bot.Bot.__init__:10 of +msgid "" +"Default protect_content mode. If specified it will be propagated into the" +" API methods at runtime." +msgstr "" + #: aiogram.client.bot.Bot.__init__ of msgid "Raises" msgstr "" -#: aiogram.client.bot.Bot.__init__:8 of +#: aiogram.client.bot.Bot.__init__:12 of msgid "When token has invalid format this exception will be raised" msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_inline_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_inline_query.po index 22834a67..329640c8 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_inline_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_inline_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_inline_query.rst:3 msgid "answerInlineQuery" @@ -61,7 +61,7 @@ msgstr "" msgid "" "Pass :code:`True` if results may be cached on the server side only for " "the user that sent the query. By default, results may be returned to any " -"user who sends the same query" +"user who sends the same query." msgstr "" #: ../../docstring @@ -74,11 +74,10 @@ msgid "" msgstr "" #: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:1 of +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.button:1 of msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" +"A JSON-serialized object describing a button to be shown above inline " +"query results" msgstr "" #: ../../docstring @@ -91,6 +90,20 @@ msgid "" ":code:`0-9`, :code:`_` and :code:`-` are allowed." msgstr "" +#: ../../docstring +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_parameter:3 +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:3 of +msgid "https://core.telegram.org/bots/api-changelog#april-21-2023" +msgstr "" + +#: ../../docstring +#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:1 of +msgid "" +"If passed, clients will display a button with specified text that " +"switches the user to a private chat with the bot and sends the bot a " +"start message with the parameter *switch_pm_parameter*" +msgstr "" + #: ../../api/methods/answer_inline_query.rst:14 msgid "Usage" msgstr "" @@ -140,3 +153,12 @@ msgstr "" #~ ":code:`0-9`, :code:`_` and :code:`-` are " #~ "allowed." #~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if results may be " +#~ "cached on the server side only for" +#~ " the user that sent the query. " +#~ "By default, results may be returned " +#~ "to any user who sends the same " +#~ "query" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_my_name.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_my_name.po new file mode 100644 index 00000000..0437b444 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_my_name.po @@ -0,0 +1,68 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/get_my_name.rst:3 +msgid "getMyName" +msgstr "" + +#: ../../api/methods/get_my_name.rst:5 +msgid "Returns: :obj:`BotName`" +msgstr "" + +#: aiogram.methods.get_my_name.GetMyName:1 of +msgid "" +"Use this method to get the current bot name for the given user language. " +"Returns :class:`aiogram.types.bot_name.BotName` on success." +msgstr "" + +#: aiogram.methods.get_my_name.GetMyName:3 of +msgid "Source: https://core.telegram.org/bots/api#getmyname" +msgstr "" + +#: ../../docstring aiogram.methods.get_my_name.GetMyName.language_code:1 of +msgid "A two-letter ISO 639-1 language code or an empty string" +msgstr "" + +#: ../../api/methods/get_my_name.rst:14 +msgid "Usage" +msgstr "" + +#: ../../api/methods/get_my_name.rst:17 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/get_my_name.rst:25 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/get_my_name.rst:27 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/get_my_name.rst:29 +msgid ":code:`from aiogram.methods.get_my_name import GetMyName`" +msgstr "" + +#: ../../api/methods/get_my_name.rst:30 +msgid "alias: :code:`from aiogram.methods import GetMyName`" +msgstr "" + +#: ../../api/methods/get_my_name.rst:33 +msgid "With specific bot" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po index e64a0df6..39a54f54 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/get_updates.rst:3 msgid "getUpdates" @@ -59,7 +59,7 @@ msgid "" ":class:`aiogram.methods.get_updates.GetUpdates` is called with an " "*offset* higher than its *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." +" of the updates queue. All previous updates will be forgotten." msgstr "" #: ../../docstring aiogram.methods.get_updates.GetUpdates.limit:1 of @@ -113,3 +113,21 @@ msgstr "" #: ../../api/methods/get_updates.rst:33 msgid "With specific bot" msgstr "" + +#~ msgid "" +#~ "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 " +#~ "returned. An update is considered " +#~ "confirmed as soon as " +#~ ":class:`aiogram.methods.get_updates.GetUpdates` is called" +#~ " with an *offset* higher than its " +#~ "*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." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_my_name.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_my_name.po new file mode 100644 index 00000000..b5befc8d --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_my_name.po @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/set_my_name.rst:3 +msgid "setMyName" +msgstr "" + +#: ../../api/methods/set_my_name.rst:5 +msgid "Returns: :obj:`bool`" +msgstr "" + +#: aiogram.methods.set_my_name.SetMyName:1 of +msgid "Use this method to change the bot's name. Returns :code:`True` on success." +msgstr "" + +#: aiogram.methods.set_my_name.SetMyName:3 of +msgid "Source: https://core.telegram.org/bots/api#setmyname" +msgstr "" + +#: ../../docstring aiogram.methods.set_my_name.SetMyName.name:1 of +msgid "" +"New bot name; 0-64 characters. Pass an empty string to remove the " +"dedicated name for the given language." +msgstr "" + +#: ../../docstring aiogram.methods.set_my_name.SetMyName.language_code:1 of +msgid "" +"A two-letter ISO 639-1 language code. If empty, the name will be shown to" +" all users for whose language there is no dedicated name." +msgstr "" + +#: ../../api/methods/set_my_name.rst:14 +msgid "Usage" +msgstr "" + +#: ../../api/methods/set_my_name.rst:17 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/set_my_name.rst:25 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/set_my_name.rst:27 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/set_my_name.rst:29 +msgid ":code:`from aiogram.methods.set_my_name import SetMyName`" +msgstr "" + +#: ../../api/methods/set_my_name.rst:30 +msgid "alias: :code:`from aiogram.methods import SetMyName`" +msgstr "" + +#: ../../api/methods/set_my_name.rst:33 +msgid "With specific bot" +msgstr "" + +#: ../../api/methods/set_my_name.rst:40 +msgid "As reply into Webhook in handler" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po index 3587676e..413eafd2 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/session/base.rst:3 msgid "Base" @@ -29,10 +29,6 @@ msgstr "" msgid "Check response status" msgstr "" -#: aiogram.client.session.base.BaseSession.clean_json:1 of -msgid "Clean data before send" -msgstr "" - #: aiogram.client.session.base.BaseSession.close:1 of msgid "Close client session" msgstr "" @@ -72,3 +68,6 @@ msgstr "" #: aiogram.client.session.base.BaseSession.stream_content:1 of msgid "Stream reader" msgstr "" + +#~ msgid "Clean data before send" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/bot_name.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/bot_name.po new file mode 100644 index 00000000..64e89253 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/bot_name.po @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/bot_name.rst:3 +msgid "BotName" +msgstr "" + +#: aiogram.types.bot_name.BotName:1 of +msgid "This object represents the bot's name." +msgstr "" + +#: aiogram.types.bot_name.BotName:3 of +msgid "Source: https://core.telegram.org/bots/api#botname" +msgstr "" + +#: ../../docstring aiogram.types.bot_name.BotName.name:1 of +msgid "The bot's name" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po index a362821e..756e5b94 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member_updated.rst:3 msgid "ChatMemberUpdated" @@ -60,3 +60,11 @@ msgid "" "*Optional*. Chat invite link, which was used by the user to join the " "chat; for joining by invite link events only." msgstr "" + +#: ../../docstring +#: aiogram.types.chat_member_updated.ChatMemberUpdated.via_chat_folder_invite_link:1 +#: of +msgid "" +"*Optional*. True, if the user joined the chat via a chat folder invite " +"link" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/index.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/index.po index 8ee34c1a..dd347157 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/index.rst:3 msgid "Types" @@ -29,33 +29,32 @@ msgstr "" msgid "Inline mode" msgstr "" -#: ../../api/types/index.rst:46 +#: ../../api/types/index.rst:47 msgid "Available types" msgstr "" -#: ../../api/types/index.rst:134 +#: ../../api/types/index.rst:143 msgid "Telegram Passport" msgstr "" -#: ../../api/types/index.rst:155 +#: ../../api/types/index.rst:164 msgid "Getting updates" msgstr "" -#: ../../api/types/index.rst:164 +#: ../../api/types/index.rst:173 msgid "Stickers" msgstr "" -#: ../../api/types/index.rst:174 +#: ../../api/types/index.rst:184 msgid "Payments" msgstr "" -#: ../../api/types/index.rst:189 -msgid "Games" -msgstr "" - #: ../../api/types/index.rst:199 -msgid "Internals" +msgid "Games" msgstr "" #~ msgid "Internal events" #~ msgstr "" + +#~ msgid "Internals" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_keyboard_button.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_keyboard_button.po index 7e6bedbe..3db47e31 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_keyboard_button.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_keyboard_button.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/inline_keyboard_button.rst:3 msgid "InlineKeyboardButton" @@ -91,6 +91,15 @@ msgid "" "empty, in which case only the bot's username will be inserted." msgstr "" +#: ../../docstring +#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.switch_inline_query_chosen_chat:1 +#: of +msgid "" +"*Optional*. If set, pressing the button will prompt the user to select " +"one of their chats of the specified type, open that chat and insert the " +"bot's username and the specified inline query in the input field" +msgstr "" + #: ../../docstring #: aiogram.types.inline_keyboard_button.InlineKeyboardButton.callback_game:1 of msgid "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query.po index 4146b049..f848f5d0 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/inline_query.rst:3 msgid "InlineQuery" @@ -103,7 +103,7 @@ msgstr "" msgid "" "Pass :code:`True` if results may be cached on the server side only for " "the user that sent the query. By default, results may be returned to any " -"user who sends the same query" +"user who sends the same query." msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:15 of @@ -116,9 +116,8 @@ msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:16 of msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" +"A JSON-serialized object describing a button to be shown above inline " +"query results" msgstr "" #: aiogram.types.inline_query.InlineQuery.answer:17 of @@ -129,12 +128,28 @@ msgid "" ":code:`0-9`, :code:`_` and :code:`-` are allowed." msgstr "" +#: aiogram.types.inline_query.InlineQuery.answer:18 of +msgid "" +"If passed, clients will display a button with specified text that " +"switches the user to a private chat with the bot and sends the bot a " +"start message with the parameter *switch_pm_parameter*" +msgstr "" + #: aiogram.types.inline_query.InlineQuery.answer of msgid "Returns" msgstr "" -#: aiogram.types.inline_query.InlineQuery.answer:18 of +#: aiogram.types.inline_query.InlineQuery.answer:19 of msgid "" "instance of method " ":class:`aiogram.methods.answer_inline_query.AnswerInlineQuery`" msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if results may be " +#~ "cached on the server side only for" +#~ " the user that sent the query. " +#~ "By default, results may be returned " +#~ "to any user who sends the same " +#~ "query" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po new file mode 100644 index 00000000..3dcf4f0f --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po @@ -0,0 +1,59 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/inline_query_results_button.rst:3 +msgid "InlineQueryResultsButton" +msgstr "" + +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:1 of +msgid "" +"This object represents a button to be shown above inline query results. " +"You **must** use exactly one of the optional fields." +msgstr "" + +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:3 of +msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultsbutton" +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.text:1 of +msgid "Label text on the button" +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.web_app:1 +#: of +msgid "" +"*Optional*. Description of the `Web App " +"`_ that will be launched when the" +" user presses the button. The Web App will be able to switch back to the " +"inline mode using the method `switchInlineQuery " +"`_ inside " +"the Web App." +msgstr "" + +#: ../../docstring +#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.start_parameter:1 +#: of +msgid "" +"*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user " +"presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " +":code:`0-9`, :code:`_` and :code:`-` are allowed." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/input_sticker.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/input_sticker.po index 3bbc8b33..fb2433c4 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/input_sticker.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/input_sticker.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/input_sticker.rst:3 msgid "InputSticker" @@ -33,9 +33,11 @@ msgstr "" msgid "" "The added sticker. Pass a *file_id* as a String to send a file that " "already exists on the Telegram servers, pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. Animated and video stickers can't be uploaded via " -"HTTP URL. :ref:`More information on Sending Files » `" +"Telegram to get a file from the Internet, upload a new one using " +"multipart/form-data, or pass 'attach://' to upload a " +"new one using multipart/form-data under name. Animated" +" and video stickers can't be uploaded via HTTP URL. :ref:`More " +"information on Sending Files » `" msgstr "" #: ../../docstring aiogram.types.input_sticker.InputSticker.emoji_list:1 of @@ -54,3 +56,17 @@ msgid "" "length of up to 64 characters. For 'regular' and 'custom_emoji' stickers " "only." msgstr "" + +#~ msgid "" +#~ "The added sticker. Pass a *file_id* " +#~ "as a String to send a file " +#~ "that already exists on the Telegram " +#~ "servers, pass an HTTP URL as a " +#~ "String for Telegram to get a file" +#~ " from the Internet, or upload a " +#~ "new one using multipart/form-data. " +#~ "Animated and video stickers can't be " +#~ "uploaded via HTTP URL. :ref:`More " +#~ "information on Sending Files » " +#~ "`" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_chat.po index 392f3b2e..2912a3f0 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_chat.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_chat.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/keyboard_button_request_chat.rst:3 msgid "KeyboardButtonRequestChat" @@ -25,7 +25,8 @@ msgstr "" msgid "" "This object defines the criteria used to request a suitable chat. The " "identifier of the selected chat will be shared with the bot when the " -"corresponding button is pressed." +"corresponding button is pressed. `More about requesting chats » " +"`_" msgstr "" #: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat:3 of @@ -103,3 +104,10 @@ msgid "" " Otherwise, no additional restrictions are applied." msgstr "" +#~ msgid "" +#~ "This object defines the criteria used" +#~ " to request a suitable chat. The " +#~ "identifier of the selected chat will " +#~ "be shared with the bot when the" +#~ " corresponding button is pressed." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_user.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_user.po index a6b317ec..1e0bca68 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_user.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/keyboard_button_request_user.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/keyboard_button_request_user.rst:3 msgid "KeyboardButtonRequestUser" @@ -25,7 +25,8 @@ msgstr "" msgid "" "This object defines the criteria used to request a suitable user. The " "identifier of the selected user will be shared with the bot when the " -"corresponding button is pressed." +"corresponding button is pressed. `More about requesting users » " +"`_" msgstr "" #: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser:3 of @@ -59,3 +60,10 @@ msgid "" "additional restrictions are applied." msgstr "" +#~ msgid "" +#~ "This object defines the criteria used" +#~ " to request a suitable user. The " +#~ "identifier of the selected user will " +#~ "be shared with the bot when the" +#~ " corresponding button is pressed." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po new file mode 100644 index 00000000..3b8f431d --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po @@ -0,0 +1,66 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/switch_inline_query_chosen_chat.rst:3 +msgid "SwitchInlineQueryChosenChat" +msgstr "" + +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:1 +#: of +msgid "" +"This object represents an inline button that switches the current user to" +" inline mode in a chosen chat, with an optional default inline query." +msgstr "" + +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:3 +#: of +msgid "Source: https://core.telegram.org/bots/api#switchinlinequerychosenchat" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.query:1 +#: of +msgid "" +"*Optional*. The default inline query to be inserted in the input field. " +"If left empty, only the bot's username will be inserted" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_user_chats:1 +#: of +msgid "*Optional*. True, if private chats with users can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_bot_chats:1 +#: of +msgid "*Optional*. True, if private chats with bots can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_group_chats:1 +#: of +msgid "*Optional*. True, if group and supergroup chats can be chosen" +msgstr "" + +#: ../../docstring +#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_channel_chats:1 +#: of +msgid "*Optional*. True, if channel chats can be chosen" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po index e2754dd2..4fee2157 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/write_access_allowed.rst:3 msgid "WriteAccessAllowed" @@ -23,11 +23,24 @@ msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:1 of msgid "" -"This object represents a service message about a user allowing a bot " -"added to the attachment menu to write messages. Currently holds no " -"information." +"This object represents a service message about a user allowing a bot to " +"write messages after adding the bot to the attachment menu or launching a" +" Web App from a link." msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:3 of msgid "Source: https://core.telegram.org/bots/api#writeaccessallowed" msgstr "" + +#: ../../docstring +#: aiogram.types.write_access_allowed.WriteAccessAllowed.web_app_name:1 of +msgid "*Optional*. Name of the Web App which was launched from a link" +msgstr "" + +#~ msgid "" +#~ "This object represents a service message" +#~ " about a user allowing a bot " +#~ "added to the attachment menu to " +#~ "write messages. Currently holds no " +#~ "information." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/upload_file.po b/docs/locale/uk_UA/LC_MESSAGES/api/upload_file.po index 0506fffc..693fc1ea 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/upload_file.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/upload_file.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: 2022-12-13 21:40+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/upload_file.rst:5 msgid "How to upload file?" @@ -42,7 +42,7 @@ msgstr "" #, fuzzy msgid "" "But if you need to upload a new file just use subclasses of `InputFile " -"`__." +"`__." msgstr "" "Але якщо вам потрібно завантажити новий файл, просто використовуйте " "підкласи `InputFile `__." diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index eb5c4ffc..8c342278 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,59 +8,240 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../../CHANGES.rst:3 msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" msgstr "" -#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 +#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 +#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 +#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 +#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 #: ../../[towncrier-fragments]:5 -msgid "Improved Documentation" +msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 msgid "" +"If router does not support custom event it does not break and passes it " +"to included routers `#1147 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:9 +msgid "Added support for FSM in Forum topics." +msgstr "" + +#: ../../[towncrier-fragments]:11 +msgid "The strategy can be changed in dispatcher:" +msgstr "" + +#: ../../[towncrier-fragments]:24 +msgid "" +"If you have implemented you own storages you should extend record key " +"generation with new one attribute - `thread_id`" +msgstr "" + +#: ../../[towncrier-fragments]:26 +msgid "`#1161 `_" +msgstr "" + +#: ../../[towncrier-fragments]:27 +msgid "Improved CallbackData serialization." +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "Minimized UUID (hex without dashes)" +msgstr "" + +#: ../../[towncrier-fragments]:30 +msgid "Replaced bool values with int (true=1, false=0)" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "`#1163 `_" +msgstr "" + +#: ../../[towncrier-fragments]:32 +msgid "" +"Added a tool to make text formatting flexible and easy. More details on " +"the :ref:`corresponding documentation page ` `#1172 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "" +"Added X-Telegram-Bot-Api-Secret-Token header check `#1173 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:37 +msgid "" +"Added possibility to pass custom headers to URLInputFile object `#1191 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 +#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 +#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:616 ../../[towncrier-fragments]:42 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:44 +msgid "" +"Change type of result in InlineQueryResult enum for " +"`InlineQueryResultCachedMpeg4Gif` and `InlineQueryResultMpeg4Gif` to more" +" correct according to documentation." +msgstr "" + +#: ../../[towncrier-fragments]:47 +msgid "" +"Change regexp for entities parsing to more correct " +"(`InlineQueryResultType.yml`). `#1146 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:49 +msgid "" +"Fixed signature of startup/shutdown events to include the " +"**dispatcher.workflow_data as the handler arguments. `#1155 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:51 +msgid "" +"Added missing FORUM_TOPIC_EDITED value to content_type property `#1160 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:53 +msgid "" +"Fixed compatibility with Python 3.8-3.9 `#1162 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:55 +msgid "" +"Fixed the markdown spoiler parser. `#1176 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:57 +msgid "" +"Fixed workflow data propagation `#1196 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 +#: ../../[towncrier-fragments]:62 +msgid "Improved Documentation" +msgstr "" + +#: ../../[towncrier-fragments]:64 +msgid "" "Changed small grammar typos for `upload_file` `#1133 " "`_" msgstr "" +#: ../../../CHANGES.rst:250 ../../[towncrier-fragments]:69 +msgid "Deprecations and Removals" +msgstr "" + +#: ../../[towncrier-fragments]:71 +msgid "" +"Removed text filter in due to is planned to remove this filter few " +"versions ago." +msgstr "" + +#: ../../[towncrier-fragments]:73 +msgid "" +"Use :code:`F.text` instead `#1170 " +"`_" +msgstr "" + #: ../../../CHANGES.rst:127 ../../../CHANGES.rst:204 ../../../CHANGES.rst:257 #: ../../../CHANGES.rst:308 ../../../CHANGES.rst:362 ../../../CHANGES.rst:404 #: ../../../CHANGES.rst:450 ../../../CHANGES.rst:510 ../../../CHANGES.rst:531 #: ../../../CHANGES.rst:554 ../../../CHANGES.rst:591 ../../../CHANGES.rst:630 -#: ../../[towncrier-fragments]:12 +#: ../../[towncrier-fragments]:78 msgid "Misc" msgstr "" -#: ../../[towncrier-fragments]:14 +#: ../../[towncrier-fragments]:80 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../[towncrier-fragments]:18 +#: ../../[towncrier-fragments]:84 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../[towncrier-fragments]:21 +#: ../../[towncrier-fragments]:87 msgid "`#1139 `_" msgstr "" +#: ../../[towncrier-fragments]:88 +msgid "" +"Added global defaults `disable_web_page_preview` and `protect_content` in" +" addition to `parse_mode` to the Bot instance, reworked internal request " +"builder mechanism. `#1142 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:91 +msgid "" +"Removed bot parameters from storages `#1144 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:93 +msgid "" +"Added full support of `Bot API 6.7 `_" +msgstr "" + +#: ../../[towncrier-fragments]:97 +msgid "" +"Note that arguments *switch_pm_parameter* and *switch_pm_text* was " +"deprecated and should be changed to *button* argument as described in API" +" docs." +msgstr "" + +#: ../../[towncrier-fragments]:99 +msgid "`#1168 `_" +msgstr "" + +#: ../../[towncrier-fragments]:100 +msgid "Updated `Pydantic to V2 `_" +msgstr "" + +#: ../../[towncrier-fragments]:104 +msgid "" +"Be careful, not all libraries is already updated to using V2 (for example" +" at the time, when this warning was added FastAPI still not support V2)" +msgstr "" + +#: ../../[towncrier-fragments]:106 +msgid "`#1202 `_" +msgstr "" + #: ../../../CHANGES.rst:20 msgid "3.0.0b7 (2023-02-18)" msgstr "" @@ -83,13 +264,6 @@ msgstr "" msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 -#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 -#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 -#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 -msgid "Features" -msgstr "" - #: ../../../CHANGES.rst:58 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" @@ -189,13 +363,6 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 -#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 -#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 -#: ../../../CHANGES.rst:616 -msgid "Bugfixes" -msgstr "" - #: ../../../CHANGES.rst:120 msgid "" "Check status code when downloading file `#816 " @@ -459,10 +626,6 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:250 -msgid "Deprecations and Removals" -msgstr "" - #: ../../../CHANGES.rst:252 msgid "" "Removed filters factory as described in corresponding issue. `#942 " @@ -2621,3 +2784,6 @@ msgstr "" #~ ":class:`aiogram.enums.topic_icon_color.TopicIconColor`, " #~ ":class:`aiogram.enums.update_type.UpdateType`," #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po new file mode 100644 index 00000000..b5b6c91d --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-07 23:01+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/filters/text.rst:3 +msgid "Text" +msgstr "" + +#: aiogram.filters.text.Text:1 of +msgid "" +"Is useful for filtering text :class:`aiogram.types.message.Message`, any " +":class:`aiogram.types.callback_query.CallbackQuery` with `data`, " +":class:`aiogram.types.inline_query.InlineQuery` or " +":class:`aiogram.types.poll.Poll` question." +msgstr "" + +#: aiogram.filters.text.Text:7 of +msgid "" +"Only one of `text`, `contains`, `startswith` or `endswith` argument can " +"be used at once. Any of that arguments can be string, list, set or tuple " +"of strings." +msgstr "" + +#: aiogram.filters.text.Text:12 of +msgid "" +"use :ref:`magic-filter `. For example do :pycode:`F.text " +"== \"text\"` instead" +msgstr "" + +#: ../../dispatcher/filters/text.rst:10 +msgid "Can be imported:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:12 +msgid ":code:`from aiogram.filters.text import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:13 +msgid ":code:`from aiogram.filters import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:16 +msgid "Usage" +msgstr "" + +#: ../../dispatcher/filters/text.rst:18 +msgid "" +"Text equals with the specified value: :code:`Text(text=\"text\") # value" +" == 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:19 +msgid "" +"Text starts with the specified value: :code:`Text(startswith=\"text\") #" +" value.startswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:20 +msgid "" +"Text ends with the specified value: :code:`Text(endswith=\"text\") # " +"value.endswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:21 +msgid "" +"Text contains the specified value: :code:`Text(contains=\"text\") # " +"value in 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:22 +msgid "" +"Any of previous listed filters can be list, set or tuple of strings " +"that's mean any of listed value should be " +"equals/startswith/endswith/contains: :code:`Text(text=[\"text\", " +"\"spam\"])`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:23 +msgid "" +"Ignore case can be combined with any previous listed filter: " +":code:`Text(text=\"Text\", ignore_case=True) # value.lower() == " +"'text'.lower()`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:26 +msgid "Allowed handlers" +msgstr "" + +#: ../../dispatcher/filters/text.rst:28 +msgid "Allowed update types for this filter:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:30 +msgid ":code:`message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:31 +msgid ":code:`edited_message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:32 +msgid ":code:`channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:33 +msgid ":code:`edited_channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:34 +msgid ":code:`inline_query`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:35 +msgid ":code:`callback_query`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/finite_state_machine/storages.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/finite_state_machine/storages.po index 48a899f8..dd8a43f3 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/finite_state_machine/storages.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/finite_state_machine/storages.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-02 22:41+0200\n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" "PO-Revision-Date: 2022-10-20 22:00+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/finite_state_machine/storages.rst:3 msgid "Storages" @@ -83,10 +83,6 @@ msgstr "" msgid "TTL for data records" msgstr "" -#: aiogram.fsm.storage.redis.RedisStorage.__init__:5 of -msgid "Custom arguments for Redis lock" -msgstr "" - #: aiogram.fsm.storage.redis.RedisStorage.from_url:1 of msgid "" "Create an instance of :class:`RedisStorage` with specifying the " @@ -175,18 +171,10 @@ msgstr "Установити стан для вказаного ключа" #: aiogram.fsm.storage.base.BaseStorage.set_data:3 #: aiogram.fsm.storage.base.BaseStorage.set_state:3 #: aiogram.fsm.storage.base.BaseStorage.update_data:3 of -msgid "instance of the current bot" -msgstr "екземпляр поточного бота" - -#: aiogram.fsm.storage.base.BaseStorage.get_data:4 -#: aiogram.fsm.storage.base.BaseStorage.get_state:4 -#: aiogram.fsm.storage.base.BaseStorage.set_data:4 -#: aiogram.fsm.storage.base.BaseStorage.set_state:4 -#: aiogram.fsm.storage.base.BaseStorage.update_data:4 of msgid "storage key" msgstr "ключ сховища" -#: aiogram.fsm.storage.base.BaseStorage.set_state:5 of +#: aiogram.fsm.storage.base.BaseStorage.set_state:4 of msgid "new state" msgstr "новий стан" @@ -194,7 +182,7 @@ msgstr "новий стан" msgid "Get key state" msgstr "Отримання стану ключа" -#: aiogram.fsm.storage.base.BaseStorage.get_state:5 of +#: aiogram.fsm.storage.base.BaseStorage.get_state:4 of msgid "current state" msgstr "поточний стан" @@ -202,8 +190,8 @@ msgstr "поточний стан" msgid "Write data (replace)" msgstr "Запис даних (заміна)" -#: aiogram.fsm.storage.base.BaseStorage.set_data:5 -#: aiogram.fsm.storage.base.BaseStorage.update_data:6 of +#: aiogram.fsm.storage.base.BaseStorage.set_data:4 +#: aiogram.fsm.storage.base.BaseStorage.update_data:5 of msgid "new data" msgstr "нові дані" @@ -211,7 +199,7 @@ msgstr "нові дані" msgid "Get current data for key" msgstr "Отримання поточних даних для ключа" -#: aiogram.fsm.storage.base.BaseStorage.get_data:5 of +#: aiogram.fsm.storage.base.BaseStorage.get_data:4 of msgid "current data" msgstr "нинішні дані" @@ -219,10 +207,16 @@ msgstr "нинішні дані" msgid "Update date in the storage for key (like dict.update)" msgstr "Дата оновлення в сховищі для ключа (наприклад, dict.update)" -#: aiogram.fsm.storage.base.BaseStorage.update_data:5 of +#: aiogram.fsm.storage.base.BaseStorage.update_data:4 of msgid "partial data" msgstr "неповні дані" #: aiogram.fsm.storage.base.BaseStorage.close:1 of msgid "Close storage (database connection, file or etc.)" msgstr "Закриття сховища (підключення до бази даних, файлу тощо)" + +#~ msgid "Custom arguments for Redis lock" +#~ msgstr "" + +#~ msgid "instance of the current bot" +#~ msgstr "екземпляр поточного бота" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po new file mode 100644 index 00000000..49966ca8 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po @@ -0,0 +1,439 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../utils/formatting.rst:5 +msgid "Formatting" +msgstr "" + +#: ../../utils/formatting.rst:7 +msgid "Make your message formatting flexible and simple" +msgstr "" + +#: ../../utils/formatting.rst:9 +msgid "" +"This instrument works on top of Message entities instead of using HTML or" +" Markdown markups, you can easily construct your message and sent it to " +"the Telegram without the need to remember tag parity (opening and " +"closing) or escaping user input." +msgstr "" + +#: ../../utils/formatting.rst:14 +msgid "Usage" +msgstr "" + +#: ../../utils/formatting.rst:17 +msgid "Basic scenario" +msgstr "" + +#: ../../utils/formatting.rst:19 +msgid "Construct your message and send it to the Telegram." +msgstr "" + +#: ../../utils/formatting.rst:26 +msgid "Is the same as the next example, but without usage markup" +msgstr "" + +#: ../../utils/formatting.rst:35 +msgid "" +"Literally when you execute :code:`as_kwargs` method the Text object is " +"converted into text :code:`Hello, Alex!` with entities list " +":code:`[MessageEntity(type='bold', offset=7, length=4)]` and passed into " +"dict which can be used as :code:`**kwargs` in API call." +msgstr "" + +#: ../../utils/formatting.rst:39 +msgid "" +"The complete list of elements is listed `on this page below <#available-" +"elements>`_." +msgstr "" + +#: ../../utils/formatting.rst:42 +msgid "Advanced scenario" +msgstr "" + +#: ../../utils/formatting.rst:44 +msgid "" +"On top of base elements can be implemented content rendering structures, " +"so, out of the box aiogram has a few already implemented functions that " +"helps you to format your messages:" +msgstr "" + +#: aiogram.utils.formatting.as_line:1 of +msgid "Wrap multiple nodes into line with :code:`\\\\n` at the end of line." +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs +#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line +#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list +#: aiogram.utils.formatting.as_marked_section +#: aiogram.utils.formatting.as_numbered_list +#: aiogram.utils.formatting.as_numbered_section +#: aiogram.utils.formatting.as_section of +msgid "Parameters" +msgstr "" + +#: aiogram.utils.formatting.as_line:3 of +msgid "Text or Any" +msgstr "" + +#: aiogram.utils.formatting.as_line:4 of +msgid "ending of the line, by default is :code:`\\\\n`" +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs aiogram.utils.formatting.Text.render +#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line +#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list +#: aiogram.utils.formatting.as_marked_section +#: aiogram.utils.formatting.as_numbered_list +#: aiogram.utils.formatting.as_numbered_section +#: aiogram.utils.formatting.as_section of +msgid "Returns" +msgstr "" + +#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:5 +#: aiogram.utils.formatting.as_marked_list:5 +#: aiogram.utils.formatting.as_numbered_list:6 +#: aiogram.utils.formatting.as_section:5 of +msgid "Text" +msgstr "" + +#: aiogram.utils.formatting.as_list:1 of +msgid "Wrap each element to separated lines" +msgstr "" + +#: aiogram.utils.formatting.as_marked_list:1 of +msgid "Wrap elements as marked list" +msgstr "" + +#: aiogram.utils.formatting.as_marked_list:4 of +msgid "line marker, by default is :code:`- `" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:1 of +msgid "Wrap elements as numbered list" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:4 of +msgid "initial number, by default 1" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_list:5 of +msgid "number format, by default :code:`{}. `" +msgstr "" + +#: aiogram.utils.formatting.as_section:1 of +msgid "Wrap elements as simple section, section has title and body" +msgstr "" + +#: aiogram.utils.formatting.as_marked_section:1 of +msgid "Wrap elements as section with marked list" +msgstr "" + +#: aiogram.utils.formatting.as_numbered_section:1 of +msgid "Wrap elements as section with numbered list" +msgstr "" + +#: aiogram.utils.formatting.as_key_value:1 of +msgid "Wrap elements pair as key-value line. (:code:`{key}: {value}`)" +msgstr "" + +#: ../../utils/formatting.rst:64 +msgid "and lets complete them all:" +msgstr "" + +#: ../../utils/formatting.rst:92 +msgid "Will be rendered into:" +msgstr "" + +#: ../../utils/formatting.rst:94 +msgid "**Success:**" +msgstr "" + +#: ../../utils/formatting.rst:96 +msgid "✅ Test 1" +msgstr "" + +#: ../../utils/formatting.rst:98 +msgid "✅ Test 3" +msgstr "" + +#: ../../utils/formatting.rst:100 +msgid "✅ Test 4" +msgstr "" + +#: ../../utils/formatting.rst:102 +msgid "**Failed:**" +msgstr "" + +#: ../../utils/formatting.rst:104 +msgid "❌ Test 2" +msgstr "" + +#: ../../utils/formatting.rst:106 +msgid "**Summary:**" +msgstr "" + +#: ../../utils/formatting.rst:108 +msgid "**Total**: 4" +msgstr "" + +#: ../../utils/formatting.rst:110 +msgid "**Success**: 3" +msgstr "" + +#: ../../utils/formatting.rst:112 +msgid "**Failed**: 1" +msgstr "" + +#: ../../utils/formatting.rst:114 +msgid "#test" +msgstr "" + +#: ../../utils/formatting.rst:117 +msgid "Or as HTML:" +msgstr "" + +#: ../../utils/formatting.rst:137 +msgid "Available methods" +msgstr "" + +#: aiogram.utils.formatting.Text:1 of +msgid "Bases: :py:class:`~typing.Iterable`\\ [:py:obj:`~typing.Any`]" +msgstr "" + +#: aiogram.utils.formatting.Text:1 of +msgid "Simple text element" +msgstr "" + +#: aiogram.utils.formatting.Text.render:1 of +msgid "Render elements tree as text with entities list" +msgstr "" + +#: aiogram.utils.formatting.Text.as_kwargs:1 of +msgid "" +"Render elements tree as keyword arguments for usage in the API call, for " +"example:" +msgstr "" + +#: aiogram.utils.formatting.Text.as_html:1 of +msgid "Render elements tree as HTML markup" +msgstr "" + +#: aiogram.utils.formatting.Text.as_markdown:1 of +msgid "Render elements tree as MarkdownV2 markup" +msgstr "" + +#: ../../utils/formatting.rst:147 +msgid "Available elements" +msgstr "" + +#: aiogram.utils.formatting.Bold:1 aiogram.utils.formatting.BotCommand:1 +#: aiogram.utils.formatting.CashTag:1 aiogram.utils.formatting.Code:1 +#: aiogram.utils.formatting.CustomEmoji:1 aiogram.utils.formatting.Email:1 +#: aiogram.utils.formatting.HashTag:1 aiogram.utils.formatting.Italic:1 +#: aiogram.utils.formatting.PhoneNumber:1 aiogram.utils.formatting.Pre:1 +#: aiogram.utils.formatting.Spoiler:1 aiogram.utils.formatting.Strikethrough:1 +#: aiogram.utils.formatting.TextLink:1 aiogram.utils.formatting.TextMention:1 +#: aiogram.utils.formatting.Underline:1 aiogram.utils.formatting.Url:1 of +msgid "Bases: :py:class:`~aiogram.utils.formatting.Text`" +msgstr "" + +#: aiogram.utils.formatting.HashTag:1 of +msgid "Hashtag element." +msgstr "" + +#: aiogram.utils.formatting.HashTag:5 of +msgid "The value should always start with '#' symbol" +msgstr "" + +#: aiogram.utils.formatting.HashTag:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.HASHTAG`" +msgstr "" + +#: aiogram.utils.formatting.CashTag:1 of +msgid "Cashtag element." +msgstr "" + +#: aiogram.utils.formatting.CashTag:5 of +msgid "The value should always start with '$' symbol" +msgstr "" + +#: aiogram.utils.formatting.CashTag:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.CASHTAG`" +msgstr "" + +#: aiogram.utils.formatting.BotCommand:1 of +msgid "Bot command element." +msgstr "" + +#: aiogram.utils.formatting.BotCommand:5 of +msgid "The value should always start with '/' symbol" +msgstr "" + +#: aiogram.utils.formatting.BotCommand:7 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.BOT_COMMAND`" +msgstr "" + +#: aiogram.utils.formatting.Url:1 of +msgid "Url element." +msgstr "" + +#: aiogram.utils.formatting.Url:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.URL`" +msgstr "" + +#: aiogram.utils.formatting.Email:1 of +msgid "Email element." +msgstr "" + +#: aiogram.utils.formatting.Email:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.EMAIL`" +msgstr "" + +#: aiogram.utils.formatting.PhoneNumber:1 of +msgid "Phone number element." +msgstr "" + +#: aiogram.utils.formatting.PhoneNumber:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.PHONE_NUMBER`" +msgstr "" + +#: aiogram.utils.formatting.Bold:1 of +msgid "Bold element." +msgstr "" + +#: aiogram.utils.formatting.Bold:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOLD`" +msgstr "" + +#: aiogram.utils.formatting.Italic:1 of +msgid "Italic element." +msgstr "" + +#: aiogram.utils.formatting.Italic:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.ITALIC`" +msgstr "" + +#: aiogram.utils.formatting.Underline:1 of +msgid "Underline element." +msgstr "" + +#: aiogram.utils.formatting.Underline:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.UNDERLINE`" +msgstr "" + +#: aiogram.utils.formatting.Strikethrough:1 of +msgid "Strikethrough element." +msgstr "" + +#: aiogram.utils.formatting.Strikethrough:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.STRIKETHROUGH`" +msgstr "" + +#: aiogram.utils.formatting.Spoiler:1 of +msgid "Spoiler element." +msgstr "" + +#: aiogram.utils.formatting.Spoiler:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.SPOILER`" +msgstr "" + +#: aiogram.utils.formatting.Code:1 of +msgid "Code element." +msgstr "" + +#: aiogram.utils.formatting.Code:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CODE`" +msgstr "" + +#: aiogram.utils.formatting.Pre:1 of +msgid "Pre element." +msgstr "" + +#: aiogram.utils.formatting.Pre:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PRE`" +msgstr "" + +#: aiogram.utils.formatting.TextLink:1 of +msgid "Text link element." +msgstr "" + +#: aiogram.utils.formatting.TextLink:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_LINK`" +msgstr "" + +#: aiogram.utils.formatting.TextMention:1 of +msgid "Text mention element." +msgstr "" + +#: aiogram.utils.formatting.TextMention:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_MENTION`" +msgstr "" + +#: aiogram.utils.formatting.CustomEmoji:1 of +msgid "Custom emoji element." +msgstr "" + +#: aiogram.utils.formatting.CustomEmoji:3 of +msgid "" +"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " +"with type " +":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" +msgstr "" From 3e3e8d3961470d16a9a45f825ee168e469725278 Mon Sep 17 00:00:00 2001 From: Andrey <75641601+a-n-d-r@users.noreply.github.com> Date: Mon, 3 Jul 2023 18:43:22 +0000 Subject: [PATCH 016/139] Remove patreon from contributing.rst (#1204) --- docs/contributing.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/contributing.rst b/docs/contributing.rst index 3feda269..a0a80181 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -209,5 +209,4 @@ it is my personal initiative (`@JRootJunior `_) and I am engaged in the development of the project in my free time. So, if you want to financially support the project, or, for example, give me a pizza or a beer, -you can do it on `OpenCollective `_ -or `Patreon `_. +you can do it on `OpenCollective `_. From 333f376ad1f81a55e3f760411f2917e6960412c2 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 4 Jul 2023 00:33:57 +0300 Subject: [PATCH 017/139] Fixed pydantic deprecation warnings --- aiogram/filters/callback_data.py | 2 +- aiogram/utils/formatting.py | 4 +++- aiogram/webhook/aiohttp_server.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/aiogram/filters/callback_data.py b/aiogram/filters/callback_data.py index 96c8f3af..7a09dedb 100644 --- a/aiogram/filters/callback_data.py +++ b/aiogram/filters/callback_data.py @@ -85,7 +85,7 @@ class CallbackData(BaseModel): :return: valid callback data for Telegram Bot API """ result = [self.__prefix__] - for key, value in self.dict().items(): + for key, value in self.model_dump(mode="json").items(): encoded = self._encode_value(key, value) if self.__separator__ in encoded: raise ValueError( diff --git a/aiogram/utils/formatting.py b/aiogram/utils/formatting.py index 513d27fd..049db003 100644 --- a/aiogram/utils/formatting.py +++ b/aiogram/utils/formatting.py @@ -441,7 +441,9 @@ def _apply_entity(entity: MessageEntity, *nodes: NodeType) -> NodeType: :return: """ node_type = NODE_TYPES.get(entity.type, Text) - return node_type(*nodes, **entity.dict(exclude={"type", "offset", "length"})) + return node_type( + *nodes, **entity.model_dump(exclude={"type", "offset", "length"}, warnings=False) + ) def _unparse_entities( diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index 0bd5b609..f623484f 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -162,7 +162,7 @@ class BaseRequestHandler(ABC): payload.set_content_disposition("form-data", name="method") files: Dict[str, InputFile] = {} - for key, value in result.dict().items(): + for key, value in result.model_dump(warnings=False).items(): value = bot.session.prepare_value(value, bot=bot, files=files) if not value: continue From 2a143edf56fad940b45f089cbabb6ecf7477ed6a Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 4 Jul 2023 00:39:02 +0300 Subject: [PATCH 018/139] Hide pydantic service attributes from models --- .butcher/templates/methods/entity.rst.jinja2 | 1 + .butcher/templates/types/entity.rst.jinja2 | 1 + docs/api/methods/add_sticker_to_set.rst | 1 + docs/api/methods/answer_callback_query.rst | 1 + docs/api/methods/answer_inline_query.rst | 1 + docs/api/methods/answer_pre_checkout_query.rst | 1 + docs/api/methods/answer_shipping_query.rst | 1 + docs/api/methods/answer_web_app_query.rst | 1 + docs/api/methods/approve_chat_join_request.rst | 1 + docs/api/methods/ban_chat_member.rst | 1 + docs/api/methods/ban_chat_sender_chat.rst | 1 + docs/api/methods/close.rst | 1 + docs/api/methods/close_forum_topic.rst | 1 + docs/api/methods/close_general_forum_topic.rst | 1 + docs/api/methods/copy_message.rst | 1 + docs/api/methods/create_chat_invite_link.rst | 1 + docs/api/methods/create_forum_topic.rst | 1 + docs/api/methods/create_invoice_link.rst | 1 + docs/api/methods/create_new_sticker_set.rst | 1 + docs/api/methods/decline_chat_join_request.rst | 1 + docs/api/methods/delete_chat_photo.rst | 1 + docs/api/methods/delete_chat_sticker_set.rst | 1 + docs/api/methods/delete_forum_topic.rst | 1 + docs/api/methods/delete_message.rst | 1 + docs/api/methods/delete_my_commands.rst | 1 + docs/api/methods/delete_sticker_from_set.rst | 1 + docs/api/methods/delete_sticker_set.rst | 1 + docs/api/methods/delete_webhook.rst | 1 + docs/api/methods/edit_chat_invite_link.rst | 1 + docs/api/methods/edit_forum_topic.rst | 1 + docs/api/methods/edit_general_forum_topic.rst | 1 + docs/api/methods/edit_message_caption.rst | 1 + docs/api/methods/edit_message_live_location.rst | 1 + docs/api/methods/edit_message_media.rst | 1 + docs/api/methods/edit_message_reply_markup.rst | 1 + docs/api/methods/edit_message_text.rst | 1 + docs/api/methods/export_chat_invite_link.rst | 1 + docs/api/methods/forward_message.rst | 1 + docs/api/methods/get_chat.rst | 1 + docs/api/methods/get_chat_administrators.rst | 1 + docs/api/methods/get_chat_member.rst | 1 + docs/api/methods/get_chat_member_count.rst | 1 + docs/api/methods/get_chat_menu_button.rst | 1 + docs/api/methods/get_custom_emoji_stickers.rst | 1 + docs/api/methods/get_file.rst | 1 + docs/api/methods/get_forum_topic_icon_stickers.rst | 1 + docs/api/methods/get_game_high_scores.rst | 1 + docs/api/methods/get_me.rst | 1 + docs/api/methods/get_my_commands.rst | 1 + docs/api/methods/get_my_default_administrator_rights.rst | 1 + docs/api/methods/get_my_description.rst | 1 + docs/api/methods/get_my_name.rst | 1 + docs/api/methods/get_my_short_description.rst | 1 + docs/api/methods/get_sticker_set.rst | 1 + docs/api/methods/get_updates.rst | 1 + docs/api/methods/get_user_profile_photos.rst | 1 + docs/api/methods/get_webhook_info.rst | 1 + docs/api/methods/hide_general_forum_topic.rst | 1 + docs/api/methods/leave_chat.rst | 1 + docs/api/methods/log_out.rst | 1 + docs/api/methods/pin_chat_message.rst | 1 + docs/api/methods/promote_chat_member.rst | 1 + docs/api/methods/reopen_forum_topic.rst | 1 + docs/api/methods/reopen_general_forum_topic.rst | 1 + docs/api/methods/restrict_chat_member.rst | 1 + docs/api/methods/revoke_chat_invite_link.rst | 1 + docs/api/methods/send_animation.rst | 1 + docs/api/methods/send_audio.rst | 1 + docs/api/methods/send_chat_action.rst | 1 + docs/api/methods/send_contact.rst | 1 + docs/api/methods/send_dice.rst | 1 + docs/api/methods/send_document.rst | 1 + docs/api/methods/send_game.rst | 1 + docs/api/methods/send_invoice.rst | 1 + docs/api/methods/send_location.rst | 1 + docs/api/methods/send_media_group.rst | 1 + docs/api/methods/send_message.rst | 1 + docs/api/methods/send_photo.rst | 1 + docs/api/methods/send_poll.rst | 1 + docs/api/methods/send_sticker.rst | 1 + docs/api/methods/send_venue.rst | 1 + docs/api/methods/send_video.rst | 1 + docs/api/methods/send_video_note.rst | 1 + docs/api/methods/send_voice.rst | 1 + docs/api/methods/set_chat_administrator_custom_title.rst | 1 + docs/api/methods/set_chat_description.rst | 1 + docs/api/methods/set_chat_menu_button.rst | 1 + docs/api/methods/set_chat_permissions.rst | 1 + docs/api/methods/set_chat_photo.rst | 1 + docs/api/methods/set_chat_sticker_set.rst | 1 + docs/api/methods/set_chat_title.rst | 1 + docs/api/methods/set_custom_emoji_sticker_set_thumbnail.rst | 1 + docs/api/methods/set_game_score.rst | 1 + docs/api/methods/set_my_commands.rst | 1 + docs/api/methods/set_my_default_administrator_rights.rst | 1 + docs/api/methods/set_my_description.rst | 1 + docs/api/methods/set_my_name.rst | 1 + docs/api/methods/set_my_short_description.rst | 1 + docs/api/methods/set_passport_data_errors.rst | 1 + docs/api/methods/set_sticker_emoji_list.rst | 1 + docs/api/methods/set_sticker_keywords.rst | 1 + docs/api/methods/set_sticker_mask_position.rst | 1 + docs/api/methods/set_sticker_position_in_set.rst | 1 + docs/api/methods/set_sticker_set_thumbnail.rst | 1 + docs/api/methods/set_sticker_set_title.rst | 1 + docs/api/methods/set_webhook.rst | 1 + docs/api/methods/stop_message_live_location.rst | 1 + docs/api/methods/stop_poll.rst | 1 + docs/api/methods/unban_chat_member.rst | 1 + docs/api/methods/unban_chat_sender_chat.rst | 1 + docs/api/methods/unhide_general_forum_topic.rst | 1 + docs/api/methods/unpin_all_chat_messages.rst | 1 + docs/api/methods/unpin_all_forum_topic_messages.rst | 1 + docs/api/methods/unpin_chat_message.rst | 1 + docs/api/methods/upload_sticker_file.rst | 1 + docs/api/types/animation.rst | 1 + docs/api/types/audio.rst | 1 + docs/api/types/bot_command.rst | 1 + docs/api/types/bot_command_scope.rst | 1 + docs/api/types/bot_command_scope_all_chat_administrators.rst | 1 + docs/api/types/bot_command_scope_all_group_chats.rst | 1 + docs/api/types/bot_command_scope_all_private_chats.rst | 1 + docs/api/types/bot_command_scope_chat.rst | 1 + docs/api/types/bot_command_scope_chat_administrators.rst | 1 + docs/api/types/bot_command_scope_chat_member.rst | 1 + docs/api/types/bot_command_scope_default.rst | 1 + docs/api/types/bot_description.rst | 1 + docs/api/types/bot_name.rst | 1 + docs/api/types/bot_short_description.rst | 1 + docs/api/types/callback_game.rst | 1 + docs/api/types/callback_query.rst | 1 + docs/api/types/chat.rst | 1 + docs/api/types/chat_administrator_rights.rst | 1 + docs/api/types/chat_invite_link.rst | 1 + docs/api/types/chat_join_request.rst | 1 + docs/api/types/chat_location.rst | 1 + docs/api/types/chat_member.rst | 1 + docs/api/types/chat_member_administrator.rst | 1 + docs/api/types/chat_member_banned.rst | 1 + docs/api/types/chat_member_left.rst | 1 + docs/api/types/chat_member_member.rst | 1 + docs/api/types/chat_member_owner.rst | 1 + docs/api/types/chat_member_restricted.rst | 1 + docs/api/types/chat_member_updated.rst | 1 + docs/api/types/chat_permissions.rst | 1 + docs/api/types/chat_photo.rst | 1 + docs/api/types/chat_shared.rst | 1 + docs/api/types/chosen_inline_result.rst | 1 + docs/api/types/contact.rst | 1 + docs/api/types/dice.rst | 1 + docs/api/types/document.rst | 1 + docs/api/types/encrypted_credentials.rst | 1 + docs/api/types/encrypted_passport_element.rst | 1 + docs/api/types/file.rst | 1 + docs/api/types/force_reply.rst | 1 + docs/api/types/forum_topic.rst | 1 + docs/api/types/forum_topic_closed.rst | 1 + docs/api/types/forum_topic_created.rst | 1 + docs/api/types/forum_topic_edited.rst | 1 + docs/api/types/forum_topic_reopened.rst | 1 + docs/api/types/game.rst | 1 + docs/api/types/game_high_score.rst | 1 + docs/api/types/general_forum_topic_hidden.rst | 1 + docs/api/types/general_forum_topic_unhidden.rst | 1 + docs/api/types/inline_keyboard_button.rst | 1 + docs/api/types/inline_keyboard_markup.rst | 1 + docs/api/types/inline_query.rst | 1 + docs/api/types/inline_query_result.rst | 1 + docs/api/types/inline_query_result_article.rst | 1 + docs/api/types/inline_query_result_audio.rst | 1 + docs/api/types/inline_query_result_cached_audio.rst | 1 + docs/api/types/inline_query_result_cached_document.rst | 1 + docs/api/types/inline_query_result_cached_gif.rst | 1 + docs/api/types/inline_query_result_cached_mpeg4_gif.rst | 1 + docs/api/types/inline_query_result_cached_photo.rst | 1 + docs/api/types/inline_query_result_cached_sticker.rst | 1 + docs/api/types/inline_query_result_cached_video.rst | 1 + docs/api/types/inline_query_result_cached_voice.rst | 1 + docs/api/types/inline_query_result_contact.rst | 1 + docs/api/types/inline_query_result_document.rst | 1 + docs/api/types/inline_query_result_game.rst | 1 + docs/api/types/inline_query_result_gif.rst | 1 + docs/api/types/inline_query_result_location.rst | 1 + docs/api/types/inline_query_result_mpeg4_gif.rst | 1 + docs/api/types/inline_query_result_photo.rst | 1 + docs/api/types/inline_query_result_venue.rst | 1 + docs/api/types/inline_query_result_video.rst | 1 + docs/api/types/inline_query_result_voice.rst | 1 + docs/api/types/inline_query_results_button.rst | 1 + docs/api/types/input_contact_message_content.rst | 1 + docs/api/types/input_file.rst | 1 + docs/api/types/input_invoice_message_content.rst | 1 + docs/api/types/input_location_message_content.rst | 1 + docs/api/types/input_media.rst | 1 + docs/api/types/input_media_animation.rst | 1 + docs/api/types/input_media_audio.rst | 1 + docs/api/types/input_media_document.rst | 1 + docs/api/types/input_media_photo.rst | 1 + docs/api/types/input_media_video.rst | 1 + docs/api/types/input_message_content.rst | 1 + docs/api/types/input_sticker.rst | 1 + docs/api/types/input_text_message_content.rst | 1 + docs/api/types/input_venue_message_content.rst | 1 + docs/api/types/invoice.rst | 1 + docs/api/types/keyboard_button.rst | 1 + docs/api/types/keyboard_button_poll_type.rst | 1 + docs/api/types/keyboard_button_request_chat.rst | 1 + docs/api/types/keyboard_button_request_user.rst | 1 + docs/api/types/labeled_price.rst | 1 + docs/api/types/location.rst | 1 + docs/api/types/login_url.rst | 1 + docs/api/types/mask_position.rst | 1 + docs/api/types/menu_button.rst | 1 + docs/api/types/menu_button_commands.rst | 1 + docs/api/types/menu_button_default.rst | 1 + docs/api/types/menu_button_web_app.rst | 1 + docs/api/types/message.rst | 1 + docs/api/types/message_auto_delete_timer_changed.rst | 1 + docs/api/types/message_entity.rst | 1 + docs/api/types/message_id.rst | 1 + docs/api/types/order_info.rst | 1 + docs/api/types/passport_data.rst | 1 + docs/api/types/passport_element_error.rst | 1 + docs/api/types/passport_element_error_data_field.rst | 1 + docs/api/types/passport_element_error_file.rst | 1 + docs/api/types/passport_element_error_files.rst | 1 + docs/api/types/passport_element_error_front_side.rst | 1 + docs/api/types/passport_element_error_reverse_side.rst | 1 + docs/api/types/passport_element_error_selfie.rst | 1 + docs/api/types/passport_element_error_translation_file.rst | 1 + docs/api/types/passport_element_error_translation_files.rst | 1 + docs/api/types/passport_element_error_unspecified.rst | 1 + docs/api/types/passport_file.rst | 1 + docs/api/types/photo_size.rst | 1 + docs/api/types/poll.rst | 1 + docs/api/types/poll_answer.rst | 1 + docs/api/types/poll_option.rst | 1 + docs/api/types/pre_checkout_query.rst | 1 + docs/api/types/proximity_alert_triggered.rst | 1 + docs/api/types/reply_keyboard_markup.rst | 1 + docs/api/types/reply_keyboard_remove.rst | 1 + docs/api/types/response_parameters.rst | 1 + docs/api/types/sent_web_app_message.rst | 1 + docs/api/types/shipping_address.rst | 1 + docs/api/types/shipping_option.rst | 1 + docs/api/types/shipping_query.rst | 1 + docs/api/types/sticker.rst | 1 + docs/api/types/sticker_set.rst | 1 + docs/api/types/successful_payment.rst | 1 + docs/api/types/switch_inline_query_chosen_chat.rst | 1 + docs/api/types/update.rst | 1 + docs/api/types/user.rst | 1 + docs/api/types/user_profile_photos.rst | 1 + docs/api/types/user_shared.rst | 1 + docs/api/types/venue.rst | 1 + docs/api/types/video.rst | 1 + docs/api/types/video_chat_ended.rst | 1 + docs/api/types/video_chat_participants_invited.rst | 1 + docs/api/types/video_chat_scheduled.rst | 1 + docs/api/types/video_chat_started.rst | 1 + docs/api/types/video_note.rst | 1 + docs/api/types/voice.rst | 1 + docs/api/types/web_app_data.rst | 1 + docs/api/types/web_app_info.rst | 1 + docs/api/types/webhook_info.rst | 1 + docs/api/types/write_access_allowed.rst | 1 + 266 files changed, 266 insertions(+) diff --git a/.butcher/templates/methods/entity.rst.jinja2 b/.butcher/templates/methods/entity.rst.jinja2 index d2843b17..59fa61e2 100755 --- a/.butcher/templates/methods/entity.rst.jinja2 +++ b/.butcher/templates/methods/entity.rst.jinja2 @@ -8,6 +8,7 @@ Returns: :obj:`{{ object.returning.parsed_type|type }}` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/.butcher/templates/types/entity.rst.jinja2 b/.butcher/templates/types/entity.rst.jinja2 index 6b9907c3..2fd2b06e 100644 --- a/.butcher/templates/types/entity.rst.jinja2 +++ b/.butcher/templates/types/entity.rst.jinja2 @@ -7,3 +7,4 @@ :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/methods/add_sticker_to_set.rst b/docs/api/methods/add_sticker_to_set.rst index 8c86d09a..8168a20e 100644 --- a/docs/api/methods/add_sticker_to_set.rst +++ b/docs/api/methods/add_sticker_to_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/answer_callback_query.rst b/docs/api/methods/answer_callback_query.rst index aadbc1fa..42c016ec 100644 --- a/docs/api/methods/answer_callback_query.rst +++ b/docs/api/methods/answer_callback_query.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/answer_inline_query.rst b/docs/api/methods/answer_inline_query.rst index 79b46888..3d4b7948 100644 --- a/docs/api/methods/answer_inline_query.rst +++ b/docs/api/methods/answer_inline_query.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/answer_pre_checkout_query.rst b/docs/api/methods/answer_pre_checkout_query.rst index 82157af2..e0ae9694 100644 --- a/docs/api/methods/answer_pre_checkout_query.rst +++ b/docs/api/methods/answer_pre_checkout_query.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/answer_shipping_query.rst b/docs/api/methods/answer_shipping_query.rst index b9ddc36c..d1854376 100644 --- a/docs/api/methods/answer_shipping_query.rst +++ b/docs/api/methods/answer_shipping_query.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/answer_web_app_query.rst b/docs/api/methods/answer_web_app_query.rst index 884366ee..3a38dab0 100644 --- a/docs/api/methods/answer_web_app_query.rst +++ b/docs/api/methods/answer_web_app_query.rst @@ -8,6 +8,7 @@ Returns: :obj:`SentWebAppMessage` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/approve_chat_join_request.rst b/docs/api/methods/approve_chat_join_request.rst index 0f54f2a8..d87335dc 100644 --- a/docs/api/methods/approve_chat_join_request.rst +++ b/docs/api/methods/approve_chat_join_request.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/ban_chat_member.rst b/docs/api/methods/ban_chat_member.rst index a28db5df..1197408e 100644 --- a/docs/api/methods/ban_chat_member.rst +++ b/docs/api/methods/ban_chat_member.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/ban_chat_sender_chat.rst b/docs/api/methods/ban_chat_sender_chat.rst index 68b2fba5..8e237cab 100644 --- a/docs/api/methods/ban_chat_sender_chat.rst +++ b/docs/api/methods/ban_chat_sender_chat.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/close.rst b/docs/api/methods/close.rst index 6c315eb4..a3f509cf 100644 --- a/docs/api/methods/close.rst +++ b/docs/api/methods/close.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/close_forum_topic.rst b/docs/api/methods/close_forum_topic.rst index 127813d0..416fae77 100644 --- a/docs/api/methods/close_forum_topic.rst +++ b/docs/api/methods/close_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/close_general_forum_topic.rst b/docs/api/methods/close_general_forum_topic.rst index 1f2bfe2c..b316c264 100644 --- a/docs/api/methods/close_general_forum_topic.rst +++ b/docs/api/methods/close_general_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/copy_message.rst b/docs/api/methods/copy_message.rst index 92edcb1a..ae1e5dd1 100644 --- a/docs/api/methods/copy_message.rst +++ b/docs/api/methods/copy_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`MessageId` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/create_chat_invite_link.rst b/docs/api/methods/create_chat_invite_link.rst index 1543a40f..67b2e5c8 100644 --- a/docs/api/methods/create_chat_invite_link.rst +++ b/docs/api/methods/create_chat_invite_link.rst @@ -8,6 +8,7 @@ Returns: :obj:`ChatInviteLink` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/create_forum_topic.rst b/docs/api/methods/create_forum_topic.rst index 0c46afeb..4663049c 100644 --- a/docs/api/methods/create_forum_topic.rst +++ b/docs/api/methods/create_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`ForumTopic` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/create_invoice_link.rst b/docs/api/methods/create_invoice_link.rst index 5d25aae9..ace5b729 100644 --- a/docs/api/methods/create_invoice_link.rst +++ b/docs/api/methods/create_invoice_link.rst @@ -8,6 +8,7 @@ Returns: :obj:`str` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/create_new_sticker_set.rst b/docs/api/methods/create_new_sticker_set.rst index a118200b..e59e1b14 100644 --- a/docs/api/methods/create_new_sticker_set.rst +++ b/docs/api/methods/create_new_sticker_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/decline_chat_join_request.rst b/docs/api/methods/decline_chat_join_request.rst index b0ba4a24..5cee1a7e 100644 --- a/docs/api/methods/decline_chat_join_request.rst +++ b/docs/api/methods/decline_chat_join_request.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_chat_photo.rst b/docs/api/methods/delete_chat_photo.rst index c218a1c0..4757aa75 100644 --- a/docs/api/methods/delete_chat_photo.rst +++ b/docs/api/methods/delete_chat_photo.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_chat_sticker_set.rst b/docs/api/methods/delete_chat_sticker_set.rst index f8472556..6af3c840 100644 --- a/docs/api/methods/delete_chat_sticker_set.rst +++ b/docs/api/methods/delete_chat_sticker_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_forum_topic.rst b/docs/api/methods/delete_forum_topic.rst index f17a204c..3966c7d8 100644 --- a/docs/api/methods/delete_forum_topic.rst +++ b/docs/api/methods/delete_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_message.rst b/docs/api/methods/delete_message.rst index 4e6ee2ef..dade9117 100644 --- a/docs/api/methods/delete_message.rst +++ b/docs/api/methods/delete_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_my_commands.rst b/docs/api/methods/delete_my_commands.rst index 58cfce2b..cc11d818 100644 --- a/docs/api/methods/delete_my_commands.rst +++ b/docs/api/methods/delete_my_commands.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_sticker_from_set.rst b/docs/api/methods/delete_sticker_from_set.rst index f00d3a9d..7821ef0e 100644 --- a/docs/api/methods/delete_sticker_from_set.rst +++ b/docs/api/methods/delete_sticker_from_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_sticker_set.rst b/docs/api/methods/delete_sticker_set.rst index dc9be624..cc2dbdd2 100644 --- a/docs/api/methods/delete_sticker_set.rst +++ b/docs/api/methods/delete_sticker_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/delete_webhook.rst b/docs/api/methods/delete_webhook.rst index b903296a..1c3ad04d 100644 --- a/docs/api/methods/delete_webhook.rst +++ b/docs/api/methods/delete_webhook.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_chat_invite_link.rst b/docs/api/methods/edit_chat_invite_link.rst index a1543b3e..709d26b8 100644 --- a/docs/api/methods/edit_chat_invite_link.rst +++ b/docs/api/methods/edit_chat_invite_link.rst @@ -8,6 +8,7 @@ Returns: :obj:`ChatInviteLink` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_forum_topic.rst b/docs/api/methods/edit_forum_topic.rst index daa6ff0e..a190d534 100644 --- a/docs/api/methods/edit_forum_topic.rst +++ b/docs/api/methods/edit_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_general_forum_topic.rst b/docs/api/methods/edit_general_forum_topic.rst index b038c9d3..a06021d5 100644 --- a/docs/api/methods/edit_general_forum_topic.rst +++ b/docs/api/methods/edit_general_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_message_caption.rst b/docs/api/methods/edit_message_caption.rst index cb90bba3..a37c17a5 100644 --- a/docs/api/methods/edit_message_caption.rst +++ b/docs/api/methods/edit_message_caption.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_message_live_location.rst b/docs/api/methods/edit_message_live_location.rst index edeb5353..f2f0b3df 100644 --- a/docs/api/methods/edit_message_live_location.rst +++ b/docs/api/methods/edit_message_live_location.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_message_media.rst b/docs/api/methods/edit_message_media.rst index faa4c6c2..aae7d89b 100644 --- a/docs/api/methods/edit_message_media.rst +++ b/docs/api/methods/edit_message_media.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_message_reply_markup.rst b/docs/api/methods/edit_message_reply_markup.rst index d8db9a2b..6f814c2e 100644 --- a/docs/api/methods/edit_message_reply_markup.rst +++ b/docs/api/methods/edit_message_reply_markup.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/edit_message_text.rst b/docs/api/methods/edit_message_text.rst index 0098e9a1..b707de73 100644 --- a/docs/api/methods/edit_message_text.rst +++ b/docs/api/methods/edit_message_text.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/export_chat_invite_link.rst b/docs/api/methods/export_chat_invite_link.rst index c9bd9945..c8aa1b6b 100644 --- a/docs/api/methods/export_chat_invite_link.rst +++ b/docs/api/methods/export_chat_invite_link.rst @@ -8,6 +8,7 @@ Returns: :obj:`str` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/forward_message.rst b/docs/api/methods/forward_message.rst index 38465cf5..516442ad 100644 --- a/docs/api/methods/forward_message.rst +++ b/docs/api/methods/forward_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_chat.rst b/docs/api/methods/get_chat.rst index dbc1143c..c0c95236 100644 --- a/docs/api/methods/get_chat.rst +++ b/docs/api/methods/get_chat.rst @@ -8,6 +8,7 @@ Returns: :obj:`Chat` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_chat_administrators.rst b/docs/api/methods/get_chat_administrators.rst index f56966d2..9a1784b5 100644 --- a/docs/api/methods/get_chat_administrators.rst +++ b/docs/api/methods/get_chat_administrators.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMe :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_chat_member.rst b/docs/api/methods/get_chat_member.rst index 6155fb24..60742bf6 100644 --- a/docs/api/methods/get_chat_member.rst +++ b/docs/api/methods/get_chat_member.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[ChatMemberOwner, ChatMemberAdministrator, ChatMemberMember, :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_chat_member_count.rst b/docs/api/methods/get_chat_member_count.rst index ec4497b6..73177a1a 100644 --- a/docs/api/methods/get_chat_member_count.rst +++ b/docs/api/methods/get_chat_member_count.rst @@ -8,6 +8,7 @@ Returns: :obj:`int` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_chat_menu_button.rst b/docs/api/methods/get_chat_menu_button.rst index 5a3f5a6f..e70fddb0 100644 --- a/docs/api/methods/get_chat_menu_button.rst +++ b/docs/api/methods/get_chat_menu_button.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_custom_emoji_stickers.rst b/docs/api/methods/get_custom_emoji_stickers.rst index 9c7455fd..c7b4dbc5 100644 --- a/docs/api/methods/get_custom_emoji_stickers.rst +++ b/docs/api/methods/get_custom_emoji_stickers.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[Sticker]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_file.rst b/docs/api/methods/get_file.rst index eb9f3b7d..5eda2ebf 100644 --- a/docs/api/methods/get_file.rst +++ b/docs/api/methods/get_file.rst @@ -8,6 +8,7 @@ Returns: :obj:`File` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_forum_topic_icon_stickers.rst b/docs/api/methods/get_forum_topic_icon_stickers.rst index ef3887e4..5e6680a7 100644 --- a/docs/api/methods/get_forum_topic_icon_stickers.rst +++ b/docs/api/methods/get_forum_topic_icon_stickers.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[Sticker]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_game_high_scores.rst b/docs/api/methods/get_game_high_scores.rst index d57d781d..67b40ef3 100644 --- a/docs/api/methods/get_game_high_scores.rst +++ b/docs/api/methods/get_game_high_scores.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[GameHighScore]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_me.rst b/docs/api/methods/get_me.rst index cf883046..96117b9e 100644 --- a/docs/api/methods/get_me.rst +++ b/docs/api/methods/get_me.rst @@ -8,6 +8,7 @@ Returns: :obj:`User` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_my_commands.rst b/docs/api/methods/get_my_commands.rst index a67f1d88..9ca3a907 100644 --- a/docs/api/methods/get_my_commands.rst +++ b/docs/api/methods/get_my_commands.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[BotCommand]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_my_default_administrator_rights.rst b/docs/api/methods/get_my_default_administrator_rights.rst index 5d28e41f..360f482a 100644 --- a/docs/api/methods/get_my_default_administrator_rights.rst +++ b/docs/api/methods/get_my_default_administrator_rights.rst @@ -8,6 +8,7 @@ Returns: :obj:`ChatAdministratorRights` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_my_description.rst b/docs/api/methods/get_my_description.rst index c68bda0d..d8846821 100644 --- a/docs/api/methods/get_my_description.rst +++ b/docs/api/methods/get_my_description.rst @@ -8,6 +8,7 @@ Returns: :obj:`BotDescription` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_my_name.rst b/docs/api/methods/get_my_name.rst index 656c41ed..5bf9c10d 100644 --- a/docs/api/methods/get_my_name.rst +++ b/docs/api/methods/get_my_name.rst @@ -8,6 +8,7 @@ Returns: :obj:`BotName` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_my_short_description.rst b/docs/api/methods/get_my_short_description.rst index 967d3318..3acac53a 100644 --- a/docs/api/methods/get_my_short_description.rst +++ b/docs/api/methods/get_my_short_description.rst @@ -8,6 +8,7 @@ Returns: :obj:`BotShortDescription` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_sticker_set.rst b/docs/api/methods/get_sticker_set.rst index 2b131b21..e30f9110 100644 --- a/docs/api/methods/get_sticker_set.rst +++ b/docs/api/methods/get_sticker_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`StickerSet` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_updates.rst b/docs/api/methods/get_updates.rst index 7d14ee1e..f774aef1 100644 --- a/docs/api/methods/get_updates.rst +++ b/docs/api/methods/get_updates.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[Update]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_user_profile_photos.rst b/docs/api/methods/get_user_profile_photos.rst index f0c36a61..7b165bae 100644 --- a/docs/api/methods/get_user_profile_photos.rst +++ b/docs/api/methods/get_user_profile_photos.rst @@ -8,6 +8,7 @@ Returns: :obj:`UserProfilePhotos` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/get_webhook_info.rst b/docs/api/methods/get_webhook_info.rst index d038a261..a2e2dc08 100644 --- a/docs/api/methods/get_webhook_info.rst +++ b/docs/api/methods/get_webhook_info.rst @@ -8,6 +8,7 @@ Returns: :obj:`WebhookInfo` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/hide_general_forum_topic.rst b/docs/api/methods/hide_general_forum_topic.rst index df36474e..619e5233 100644 --- a/docs/api/methods/hide_general_forum_topic.rst +++ b/docs/api/methods/hide_general_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/leave_chat.rst b/docs/api/methods/leave_chat.rst index 8c84e324..fd829a1a 100644 --- a/docs/api/methods/leave_chat.rst +++ b/docs/api/methods/leave_chat.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/log_out.rst b/docs/api/methods/log_out.rst index 683cf19a..d1545da8 100644 --- a/docs/api/methods/log_out.rst +++ b/docs/api/methods/log_out.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/pin_chat_message.rst b/docs/api/methods/pin_chat_message.rst index 11de4e53..6c6756bd 100644 --- a/docs/api/methods/pin_chat_message.rst +++ b/docs/api/methods/pin_chat_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/promote_chat_member.rst b/docs/api/methods/promote_chat_member.rst index aada3f05..19bcd5be 100644 --- a/docs/api/methods/promote_chat_member.rst +++ b/docs/api/methods/promote_chat_member.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/reopen_forum_topic.rst b/docs/api/methods/reopen_forum_topic.rst index c76b7adc..9838d934 100644 --- a/docs/api/methods/reopen_forum_topic.rst +++ b/docs/api/methods/reopen_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/reopen_general_forum_topic.rst b/docs/api/methods/reopen_general_forum_topic.rst index ec217d9c..5d89f7cc 100644 --- a/docs/api/methods/reopen_general_forum_topic.rst +++ b/docs/api/methods/reopen_general_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/restrict_chat_member.rst b/docs/api/methods/restrict_chat_member.rst index b063b8b1..da10bbd9 100644 --- a/docs/api/methods/restrict_chat_member.rst +++ b/docs/api/methods/restrict_chat_member.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/revoke_chat_invite_link.rst b/docs/api/methods/revoke_chat_invite_link.rst index f8293be2..5d88c4ce 100644 --- a/docs/api/methods/revoke_chat_invite_link.rst +++ b/docs/api/methods/revoke_chat_invite_link.rst @@ -8,6 +8,7 @@ Returns: :obj:`ChatInviteLink` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_animation.rst b/docs/api/methods/send_animation.rst index 220bf5ba..cc4e727a 100644 --- a/docs/api/methods/send_animation.rst +++ b/docs/api/methods/send_animation.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_audio.rst b/docs/api/methods/send_audio.rst index 877478ba..0c332cbd 100644 --- a/docs/api/methods/send_audio.rst +++ b/docs/api/methods/send_audio.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_chat_action.rst b/docs/api/methods/send_chat_action.rst index c1ad9e61..efff1e27 100644 --- a/docs/api/methods/send_chat_action.rst +++ b/docs/api/methods/send_chat_action.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_contact.rst b/docs/api/methods/send_contact.rst index 05af5b1e..d7f13cba 100644 --- a/docs/api/methods/send_contact.rst +++ b/docs/api/methods/send_contact.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_dice.rst b/docs/api/methods/send_dice.rst index 5e1548f7..4a106c04 100644 --- a/docs/api/methods/send_dice.rst +++ b/docs/api/methods/send_dice.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_document.rst b/docs/api/methods/send_document.rst index 60d9d0b0..b0121109 100644 --- a/docs/api/methods/send_document.rst +++ b/docs/api/methods/send_document.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_game.rst b/docs/api/methods/send_game.rst index d145c430..18d299cf 100644 --- a/docs/api/methods/send_game.rst +++ b/docs/api/methods/send_game.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_invoice.rst b/docs/api/methods/send_invoice.rst index 1e5ce258..bd5070fd 100644 --- a/docs/api/methods/send_invoice.rst +++ b/docs/api/methods/send_invoice.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_location.rst b/docs/api/methods/send_location.rst index 3c52df75..c8dc9f56 100644 --- a/docs/api/methods/send_location.rst +++ b/docs/api/methods/send_location.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_media_group.rst b/docs/api/methods/send_media_group.rst index fe0f8e03..9d9de9e9 100644 --- a/docs/api/methods/send_media_group.rst +++ b/docs/api/methods/send_media_group.rst @@ -8,6 +8,7 @@ Returns: :obj:`List[Message]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_message.rst b/docs/api/methods/send_message.rst index 9edb4bf3..594ef99c 100644 --- a/docs/api/methods/send_message.rst +++ b/docs/api/methods/send_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_photo.rst b/docs/api/methods/send_photo.rst index 85fb0921..b622f6cc 100644 --- a/docs/api/methods/send_photo.rst +++ b/docs/api/methods/send_photo.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_poll.rst b/docs/api/methods/send_poll.rst index 14e10d19..36100c36 100644 --- a/docs/api/methods/send_poll.rst +++ b/docs/api/methods/send_poll.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_sticker.rst b/docs/api/methods/send_sticker.rst index 395fb12b..4c67047a 100644 --- a/docs/api/methods/send_sticker.rst +++ b/docs/api/methods/send_sticker.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_venue.rst b/docs/api/methods/send_venue.rst index 4985cbc1..79cfc8ca 100644 --- a/docs/api/methods/send_venue.rst +++ b/docs/api/methods/send_venue.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_video.rst b/docs/api/methods/send_video.rst index a8e6e1b4..c8446369 100644 --- a/docs/api/methods/send_video.rst +++ b/docs/api/methods/send_video.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_video_note.rst b/docs/api/methods/send_video_note.rst index aa27c198..089f9e66 100644 --- a/docs/api/methods/send_video_note.rst +++ b/docs/api/methods/send_video_note.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/send_voice.rst b/docs/api/methods/send_voice.rst index 3742cdb3..3f19e9e9 100644 --- a/docs/api/methods/send_voice.rst +++ b/docs/api/methods/send_voice.rst @@ -8,6 +8,7 @@ Returns: :obj:`Message` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_administrator_custom_title.rst b/docs/api/methods/set_chat_administrator_custom_title.rst index 60d8df84..560185f1 100644 --- a/docs/api/methods/set_chat_administrator_custom_title.rst +++ b/docs/api/methods/set_chat_administrator_custom_title.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_description.rst b/docs/api/methods/set_chat_description.rst index 85cd7d48..7cd242b7 100644 --- a/docs/api/methods/set_chat_description.rst +++ b/docs/api/methods/set_chat_description.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_menu_button.rst b/docs/api/methods/set_chat_menu_button.rst index 671313fe..2262dca7 100644 --- a/docs/api/methods/set_chat_menu_button.rst +++ b/docs/api/methods/set_chat_menu_button.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_permissions.rst b/docs/api/methods/set_chat_permissions.rst index 7867065c..0636fede 100644 --- a/docs/api/methods/set_chat_permissions.rst +++ b/docs/api/methods/set_chat_permissions.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_photo.rst b/docs/api/methods/set_chat_photo.rst index ee7434f9..6a5edccd 100644 --- a/docs/api/methods/set_chat_photo.rst +++ b/docs/api/methods/set_chat_photo.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_sticker_set.rst b/docs/api/methods/set_chat_sticker_set.rst index eccd0da3..f42c7b2e 100644 --- a/docs/api/methods/set_chat_sticker_set.rst +++ b/docs/api/methods/set_chat_sticker_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_chat_title.rst b/docs/api/methods/set_chat_title.rst index ffac0b6e..657283a4 100644 --- a/docs/api/methods/set_chat_title.rst +++ b/docs/api/methods/set_chat_title.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_custom_emoji_sticker_set_thumbnail.rst b/docs/api/methods/set_custom_emoji_sticker_set_thumbnail.rst index 093e30c9..16cce30f 100644 --- a/docs/api/methods/set_custom_emoji_sticker_set_thumbnail.rst +++ b/docs/api/methods/set_custom_emoji_sticker_set_thumbnail.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_game_score.rst b/docs/api/methods/set_game_score.rst index ef484655..6a227095 100644 --- a/docs/api/methods/set_game_score.rst +++ b/docs/api/methods/set_game_score.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_my_commands.rst b/docs/api/methods/set_my_commands.rst index 191f30e1..b8491102 100644 --- a/docs/api/methods/set_my_commands.rst +++ b/docs/api/methods/set_my_commands.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_my_default_administrator_rights.rst b/docs/api/methods/set_my_default_administrator_rights.rst index 1caabdfd..db381aea 100644 --- a/docs/api/methods/set_my_default_administrator_rights.rst +++ b/docs/api/methods/set_my_default_administrator_rights.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_my_description.rst b/docs/api/methods/set_my_description.rst index 126199ee..a3032799 100644 --- a/docs/api/methods/set_my_description.rst +++ b/docs/api/methods/set_my_description.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_my_name.rst b/docs/api/methods/set_my_name.rst index f08f6fee..2a536ff4 100644 --- a/docs/api/methods/set_my_name.rst +++ b/docs/api/methods/set_my_name.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_my_short_description.rst b/docs/api/methods/set_my_short_description.rst index f7f250d7..e2bf6f7a 100644 --- a/docs/api/methods/set_my_short_description.rst +++ b/docs/api/methods/set_my_short_description.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_passport_data_errors.rst b/docs/api/methods/set_passport_data_errors.rst index ac49f78c..b05fe1b2 100644 --- a/docs/api/methods/set_passport_data_errors.rst +++ b/docs/api/methods/set_passport_data_errors.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_emoji_list.rst b/docs/api/methods/set_sticker_emoji_list.rst index c8602f0f..5856fbc5 100644 --- a/docs/api/methods/set_sticker_emoji_list.rst +++ b/docs/api/methods/set_sticker_emoji_list.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_keywords.rst b/docs/api/methods/set_sticker_keywords.rst index d15c11ac..5e263d39 100644 --- a/docs/api/methods/set_sticker_keywords.rst +++ b/docs/api/methods/set_sticker_keywords.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_mask_position.rst b/docs/api/methods/set_sticker_mask_position.rst index 48041877..dc0d0eb9 100644 --- a/docs/api/methods/set_sticker_mask_position.rst +++ b/docs/api/methods/set_sticker_mask_position.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_position_in_set.rst b/docs/api/methods/set_sticker_position_in_set.rst index 04a8a9cf..82915f41 100644 --- a/docs/api/methods/set_sticker_position_in_set.rst +++ b/docs/api/methods/set_sticker_position_in_set.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_set_thumbnail.rst b/docs/api/methods/set_sticker_set_thumbnail.rst index 218c1012..3a72fab0 100644 --- a/docs/api/methods/set_sticker_set_thumbnail.rst +++ b/docs/api/methods/set_sticker_set_thumbnail.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_sticker_set_title.rst b/docs/api/methods/set_sticker_set_title.rst index f6924dd4..74d487b2 100644 --- a/docs/api/methods/set_sticker_set_title.rst +++ b/docs/api/methods/set_sticker_set_title.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/set_webhook.rst b/docs/api/methods/set_webhook.rst index 8e7d78d5..52def7c0 100644 --- a/docs/api/methods/set_webhook.rst +++ b/docs/api/methods/set_webhook.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/stop_message_live_location.rst b/docs/api/methods/stop_message_live_location.rst index 74f105d1..568d41cc 100644 --- a/docs/api/methods/stop_message_live_location.rst +++ b/docs/api/methods/stop_message_live_location.rst @@ -8,6 +8,7 @@ Returns: :obj:`Union[Message, bool]` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/stop_poll.rst b/docs/api/methods/stop_poll.rst index c51afc90..83c14574 100644 --- a/docs/api/methods/stop_poll.rst +++ b/docs/api/methods/stop_poll.rst @@ -8,6 +8,7 @@ Returns: :obj:`Poll` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unban_chat_member.rst b/docs/api/methods/unban_chat_member.rst index 0b588b70..4b76a602 100644 --- a/docs/api/methods/unban_chat_member.rst +++ b/docs/api/methods/unban_chat_member.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unban_chat_sender_chat.rst b/docs/api/methods/unban_chat_sender_chat.rst index 1fdfd5a3..88b00b90 100644 --- a/docs/api/methods/unban_chat_sender_chat.rst +++ b/docs/api/methods/unban_chat_sender_chat.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unhide_general_forum_topic.rst b/docs/api/methods/unhide_general_forum_topic.rst index e2601df8..6e6be61b 100644 --- a/docs/api/methods/unhide_general_forum_topic.rst +++ b/docs/api/methods/unhide_general_forum_topic.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unpin_all_chat_messages.rst b/docs/api/methods/unpin_all_chat_messages.rst index 854091e5..571be7f0 100644 --- a/docs/api/methods/unpin_all_chat_messages.rst +++ b/docs/api/methods/unpin_all_chat_messages.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unpin_all_forum_topic_messages.rst b/docs/api/methods/unpin_all_forum_topic_messages.rst index 7ae521f4..60b03070 100644 --- a/docs/api/methods/unpin_all_forum_topic_messages.rst +++ b/docs/api/methods/unpin_all_forum_topic_messages.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/unpin_chat_message.rst b/docs/api/methods/unpin_chat_message.rst index 9a03c08b..003c83b8 100644 --- a/docs/api/methods/unpin_chat_message.rst +++ b/docs/api/methods/unpin_chat_message.rst @@ -8,6 +8,7 @@ Returns: :obj:`bool` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/methods/upload_sticker_file.rst b/docs/api/methods/upload_sticker_file.rst index c542515d..88cc8859 100644 --- a/docs/api/methods/upload_sticker_file.rst +++ b/docs/api/methods/upload_sticker_file.rst @@ -8,6 +8,7 @@ Returns: :obj:`File` :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields Usage diff --git a/docs/api/types/animation.rst b/docs/api/types/animation.rst index 1d111c20..ee4f4875 100644 --- a/docs/api/types/animation.rst +++ b/docs/api/types/animation.rst @@ -7,3 +7,4 @@ Animation :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/audio.rst b/docs/api/types/audio.rst index e29b246c..a4f5a42a 100644 --- a/docs/api/types/audio.rst +++ b/docs/api/types/audio.rst @@ -7,3 +7,4 @@ Audio :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command.rst b/docs/api/types/bot_command.rst index 4b8c60ab..5b3307c8 100644 --- a/docs/api/types/bot_command.rst +++ b/docs/api/types/bot_command.rst @@ -7,3 +7,4 @@ BotCommand :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope.rst b/docs/api/types/bot_command_scope.rst index fa89f3ab..82c404c6 100644 --- a/docs/api/types/bot_command_scope.rst +++ b/docs/api/types/bot_command_scope.rst @@ -7,3 +7,4 @@ BotCommandScope :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_all_chat_administrators.rst b/docs/api/types/bot_command_scope_all_chat_administrators.rst index cfde1f73..46110136 100644 --- a/docs/api/types/bot_command_scope_all_chat_administrators.rst +++ b/docs/api/types/bot_command_scope_all_chat_administrators.rst @@ -7,3 +7,4 @@ BotCommandScopeAllChatAdministrators :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_all_group_chats.rst b/docs/api/types/bot_command_scope_all_group_chats.rst index 2fe3ec7a..e191c5db 100644 --- a/docs/api/types/bot_command_scope_all_group_chats.rst +++ b/docs/api/types/bot_command_scope_all_group_chats.rst @@ -7,3 +7,4 @@ BotCommandScopeAllGroupChats :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_all_private_chats.rst b/docs/api/types/bot_command_scope_all_private_chats.rst index 4c018322..41cf2ff2 100644 --- a/docs/api/types/bot_command_scope_all_private_chats.rst +++ b/docs/api/types/bot_command_scope_all_private_chats.rst @@ -7,3 +7,4 @@ BotCommandScopeAllPrivateChats :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_chat.rst b/docs/api/types/bot_command_scope_chat.rst index ee7900fc..4f098f9e 100644 --- a/docs/api/types/bot_command_scope_chat.rst +++ b/docs/api/types/bot_command_scope_chat.rst @@ -7,3 +7,4 @@ BotCommandScopeChat :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_chat_administrators.rst b/docs/api/types/bot_command_scope_chat_administrators.rst index 76e72c45..b3cd9aa7 100644 --- a/docs/api/types/bot_command_scope_chat_administrators.rst +++ b/docs/api/types/bot_command_scope_chat_administrators.rst @@ -7,3 +7,4 @@ BotCommandScopeChatAdministrators :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_chat_member.rst b/docs/api/types/bot_command_scope_chat_member.rst index 60a76fa1..4e953111 100644 --- a/docs/api/types/bot_command_scope_chat_member.rst +++ b/docs/api/types/bot_command_scope_chat_member.rst @@ -7,3 +7,4 @@ BotCommandScopeChatMember :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_command_scope_default.rst b/docs/api/types/bot_command_scope_default.rst index fe97331b..9a45c243 100644 --- a/docs/api/types/bot_command_scope_default.rst +++ b/docs/api/types/bot_command_scope_default.rst @@ -7,3 +7,4 @@ BotCommandScopeDefault :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_description.rst b/docs/api/types/bot_description.rst index f3ea6d7a..16409cf3 100644 --- a/docs/api/types/bot_description.rst +++ b/docs/api/types/bot_description.rst @@ -7,3 +7,4 @@ BotDescription :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_name.rst b/docs/api/types/bot_name.rst index 794667fa..2eb8fbf4 100644 --- a/docs/api/types/bot_name.rst +++ b/docs/api/types/bot_name.rst @@ -7,3 +7,4 @@ BotName :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/bot_short_description.rst b/docs/api/types/bot_short_description.rst index e9812e64..61dbbaea 100644 --- a/docs/api/types/bot_short_description.rst +++ b/docs/api/types/bot_short_description.rst @@ -7,3 +7,4 @@ BotShortDescription :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/callback_game.rst b/docs/api/types/callback_game.rst index 789519f3..8e5f32f1 100644 --- a/docs/api/types/callback_game.rst +++ b/docs/api/types/callback_game.rst @@ -7,3 +7,4 @@ CallbackGame :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/callback_query.rst b/docs/api/types/callback_query.rst index 22ddc99b..dee49c20 100644 --- a/docs/api/types/callback_query.rst +++ b/docs/api/types/callback_query.rst @@ -7,3 +7,4 @@ CallbackQuery :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat.rst b/docs/api/types/chat.rst index 5b506b1b..e473f6be 100644 --- a/docs/api/types/chat.rst +++ b/docs/api/types/chat.rst @@ -7,3 +7,4 @@ Chat :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_administrator_rights.rst b/docs/api/types/chat_administrator_rights.rst index ef86eede..c728cc83 100644 --- a/docs/api/types/chat_administrator_rights.rst +++ b/docs/api/types/chat_administrator_rights.rst @@ -7,3 +7,4 @@ ChatAdministratorRights :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_invite_link.rst b/docs/api/types/chat_invite_link.rst index d64e28ae..3ee3f9ea 100644 --- a/docs/api/types/chat_invite_link.rst +++ b/docs/api/types/chat_invite_link.rst @@ -7,3 +7,4 @@ ChatInviteLink :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_join_request.rst b/docs/api/types/chat_join_request.rst index 236a472a..3ff695a8 100644 --- a/docs/api/types/chat_join_request.rst +++ b/docs/api/types/chat_join_request.rst @@ -7,3 +7,4 @@ ChatJoinRequest :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_location.rst b/docs/api/types/chat_location.rst index 5d528095..74dff084 100644 --- a/docs/api/types/chat_location.rst +++ b/docs/api/types/chat_location.rst @@ -7,3 +7,4 @@ ChatLocation :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member.rst b/docs/api/types/chat_member.rst index bd357f7c..7cf71744 100644 --- a/docs/api/types/chat_member.rst +++ b/docs/api/types/chat_member.rst @@ -7,3 +7,4 @@ ChatMember :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_administrator.rst b/docs/api/types/chat_member_administrator.rst index 55302054..f8c98c7b 100644 --- a/docs/api/types/chat_member_administrator.rst +++ b/docs/api/types/chat_member_administrator.rst @@ -7,3 +7,4 @@ ChatMemberAdministrator :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_banned.rst b/docs/api/types/chat_member_banned.rst index 31570bec..95085cfc 100644 --- a/docs/api/types/chat_member_banned.rst +++ b/docs/api/types/chat_member_banned.rst @@ -7,3 +7,4 @@ ChatMemberBanned :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_left.rst b/docs/api/types/chat_member_left.rst index 52a4dd9d..6f6d7e0d 100644 --- a/docs/api/types/chat_member_left.rst +++ b/docs/api/types/chat_member_left.rst @@ -7,3 +7,4 @@ ChatMemberLeft :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_member.rst b/docs/api/types/chat_member_member.rst index 8f884af9..ec014bd2 100644 --- a/docs/api/types/chat_member_member.rst +++ b/docs/api/types/chat_member_member.rst @@ -7,3 +7,4 @@ ChatMemberMember :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_owner.rst b/docs/api/types/chat_member_owner.rst index 09eee65c..3319823b 100644 --- a/docs/api/types/chat_member_owner.rst +++ b/docs/api/types/chat_member_owner.rst @@ -7,3 +7,4 @@ ChatMemberOwner :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_restricted.rst b/docs/api/types/chat_member_restricted.rst index dcc3db58..65fdffa5 100644 --- a/docs/api/types/chat_member_restricted.rst +++ b/docs/api/types/chat_member_restricted.rst @@ -7,3 +7,4 @@ ChatMemberRestricted :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_member_updated.rst b/docs/api/types/chat_member_updated.rst index e02ddd8b..f1ae6dd8 100644 --- a/docs/api/types/chat_member_updated.rst +++ b/docs/api/types/chat_member_updated.rst @@ -7,3 +7,4 @@ ChatMemberUpdated :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_permissions.rst b/docs/api/types/chat_permissions.rst index 6eedb23b..934eb1c5 100644 --- a/docs/api/types/chat_permissions.rst +++ b/docs/api/types/chat_permissions.rst @@ -7,3 +7,4 @@ ChatPermissions :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_photo.rst b/docs/api/types/chat_photo.rst index 7821d5ba..e1284cc1 100644 --- a/docs/api/types/chat_photo.rst +++ b/docs/api/types/chat_photo.rst @@ -7,3 +7,4 @@ ChatPhoto :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chat_shared.rst b/docs/api/types/chat_shared.rst index fe6c4c4a..c180f114 100644 --- a/docs/api/types/chat_shared.rst +++ b/docs/api/types/chat_shared.rst @@ -7,3 +7,4 @@ ChatShared :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/chosen_inline_result.rst b/docs/api/types/chosen_inline_result.rst index 3f86a983..0519b88a 100644 --- a/docs/api/types/chosen_inline_result.rst +++ b/docs/api/types/chosen_inline_result.rst @@ -7,3 +7,4 @@ ChosenInlineResult :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/contact.rst b/docs/api/types/contact.rst index f99e1d27..152a6efc 100644 --- a/docs/api/types/contact.rst +++ b/docs/api/types/contact.rst @@ -7,3 +7,4 @@ Contact :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/dice.rst b/docs/api/types/dice.rst index 41ddf6c4..ba6309f4 100644 --- a/docs/api/types/dice.rst +++ b/docs/api/types/dice.rst @@ -7,3 +7,4 @@ Dice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/document.rst b/docs/api/types/document.rst index 48799778..1d9a34d7 100644 --- a/docs/api/types/document.rst +++ b/docs/api/types/document.rst @@ -7,3 +7,4 @@ Document :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/encrypted_credentials.rst b/docs/api/types/encrypted_credentials.rst index 41425c95..7bce1366 100644 --- a/docs/api/types/encrypted_credentials.rst +++ b/docs/api/types/encrypted_credentials.rst @@ -7,3 +7,4 @@ EncryptedCredentials :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/encrypted_passport_element.rst b/docs/api/types/encrypted_passport_element.rst index 0acf7a8e..b5634dc5 100644 --- a/docs/api/types/encrypted_passport_element.rst +++ b/docs/api/types/encrypted_passport_element.rst @@ -7,3 +7,4 @@ EncryptedPassportElement :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/file.rst b/docs/api/types/file.rst index 5a9d920e..ab525e80 100644 --- a/docs/api/types/file.rst +++ b/docs/api/types/file.rst @@ -7,3 +7,4 @@ File :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/force_reply.rst b/docs/api/types/force_reply.rst index 326cd91f..a5f5d93c 100644 --- a/docs/api/types/force_reply.rst +++ b/docs/api/types/force_reply.rst @@ -7,3 +7,4 @@ ForceReply :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/forum_topic.rst b/docs/api/types/forum_topic.rst index fa5e99a6..ee38ae7b 100644 --- a/docs/api/types/forum_topic.rst +++ b/docs/api/types/forum_topic.rst @@ -7,3 +7,4 @@ ForumTopic :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/forum_topic_closed.rst b/docs/api/types/forum_topic_closed.rst index 200b19a5..97e8afde 100644 --- a/docs/api/types/forum_topic_closed.rst +++ b/docs/api/types/forum_topic_closed.rst @@ -7,3 +7,4 @@ ForumTopicClosed :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/forum_topic_created.rst b/docs/api/types/forum_topic_created.rst index 5eeb2382..63fc4a8f 100644 --- a/docs/api/types/forum_topic_created.rst +++ b/docs/api/types/forum_topic_created.rst @@ -7,3 +7,4 @@ ForumTopicCreated :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/forum_topic_edited.rst b/docs/api/types/forum_topic_edited.rst index 6909332f..d3d41960 100644 --- a/docs/api/types/forum_topic_edited.rst +++ b/docs/api/types/forum_topic_edited.rst @@ -7,3 +7,4 @@ ForumTopicEdited :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/forum_topic_reopened.rst b/docs/api/types/forum_topic_reopened.rst index 8803cf1f..a14b3877 100644 --- a/docs/api/types/forum_topic_reopened.rst +++ b/docs/api/types/forum_topic_reopened.rst @@ -7,3 +7,4 @@ ForumTopicReopened :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/game.rst b/docs/api/types/game.rst index 62a7f390..8ee3f03d 100644 --- a/docs/api/types/game.rst +++ b/docs/api/types/game.rst @@ -7,3 +7,4 @@ Game :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/game_high_score.rst b/docs/api/types/game_high_score.rst index 6f8d8194..64a2a751 100644 --- a/docs/api/types/game_high_score.rst +++ b/docs/api/types/game_high_score.rst @@ -7,3 +7,4 @@ GameHighScore :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/general_forum_topic_hidden.rst b/docs/api/types/general_forum_topic_hidden.rst index f83b143a..032d190a 100644 --- a/docs/api/types/general_forum_topic_hidden.rst +++ b/docs/api/types/general_forum_topic_hidden.rst @@ -7,3 +7,4 @@ GeneralForumTopicHidden :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/general_forum_topic_unhidden.rst b/docs/api/types/general_forum_topic_unhidden.rst index 9dee46cb..55764d2c 100644 --- a/docs/api/types/general_forum_topic_unhidden.rst +++ b/docs/api/types/general_forum_topic_unhidden.rst @@ -7,3 +7,4 @@ GeneralForumTopicUnhidden :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_keyboard_button.rst b/docs/api/types/inline_keyboard_button.rst index 1075ad01..43ca6325 100644 --- a/docs/api/types/inline_keyboard_button.rst +++ b/docs/api/types/inline_keyboard_button.rst @@ -7,3 +7,4 @@ InlineKeyboardButton :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_keyboard_markup.rst b/docs/api/types/inline_keyboard_markup.rst index b7c5108f..ff47ff06 100644 --- a/docs/api/types/inline_keyboard_markup.rst +++ b/docs/api/types/inline_keyboard_markup.rst @@ -7,3 +7,4 @@ InlineKeyboardMarkup :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query.rst b/docs/api/types/inline_query.rst index 7577b29c..437f0880 100644 --- a/docs/api/types/inline_query.rst +++ b/docs/api/types/inline_query.rst @@ -7,3 +7,4 @@ InlineQuery :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result.rst b/docs/api/types/inline_query_result.rst index ba3e265f..0caa7246 100644 --- a/docs/api/types/inline_query_result.rst +++ b/docs/api/types/inline_query_result.rst @@ -7,3 +7,4 @@ InlineQueryResult :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_article.rst b/docs/api/types/inline_query_result_article.rst index 8ffb1db9..59c1c085 100644 --- a/docs/api/types/inline_query_result_article.rst +++ b/docs/api/types/inline_query_result_article.rst @@ -7,3 +7,4 @@ InlineQueryResultArticle :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_audio.rst b/docs/api/types/inline_query_result_audio.rst index 50858460..58d5b640 100644 --- a/docs/api/types/inline_query_result_audio.rst +++ b/docs/api/types/inline_query_result_audio.rst @@ -7,3 +7,4 @@ InlineQueryResultAudio :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_audio.rst b/docs/api/types/inline_query_result_cached_audio.rst index bcce043d..9c9e83dd 100644 --- a/docs/api/types/inline_query_result_cached_audio.rst +++ b/docs/api/types/inline_query_result_cached_audio.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedAudio :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_document.rst b/docs/api/types/inline_query_result_cached_document.rst index 0813734d..d6081dc9 100644 --- a/docs/api/types/inline_query_result_cached_document.rst +++ b/docs/api/types/inline_query_result_cached_document.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedDocument :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_gif.rst b/docs/api/types/inline_query_result_cached_gif.rst index d1103a55..e38a0305 100644 --- a/docs/api/types/inline_query_result_cached_gif.rst +++ b/docs/api/types/inline_query_result_cached_gif.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedGif :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_mpeg4_gif.rst b/docs/api/types/inline_query_result_cached_mpeg4_gif.rst index 022ce1ca..f073b73e 100644 --- a/docs/api/types/inline_query_result_cached_mpeg4_gif.rst +++ b/docs/api/types/inline_query_result_cached_mpeg4_gif.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedMpeg4Gif :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_photo.rst b/docs/api/types/inline_query_result_cached_photo.rst index 3fcd27bc..c75f6d34 100644 --- a/docs/api/types/inline_query_result_cached_photo.rst +++ b/docs/api/types/inline_query_result_cached_photo.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedPhoto :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_sticker.rst b/docs/api/types/inline_query_result_cached_sticker.rst index 30a5d5b3..d0e965a8 100644 --- a/docs/api/types/inline_query_result_cached_sticker.rst +++ b/docs/api/types/inline_query_result_cached_sticker.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedSticker :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_video.rst b/docs/api/types/inline_query_result_cached_video.rst index 0c5acbe9..a7a7b130 100644 --- a/docs/api/types/inline_query_result_cached_video.rst +++ b/docs/api/types/inline_query_result_cached_video.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedVideo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_cached_voice.rst b/docs/api/types/inline_query_result_cached_voice.rst index 5b4f0d8e..95dbe44a 100644 --- a/docs/api/types/inline_query_result_cached_voice.rst +++ b/docs/api/types/inline_query_result_cached_voice.rst @@ -7,3 +7,4 @@ InlineQueryResultCachedVoice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_contact.rst b/docs/api/types/inline_query_result_contact.rst index 123b4d61..ca3f74bc 100644 --- a/docs/api/types/inline_query_result_contact.rst +++ b/docs/api/types/inline_query_result_contact.rst @@ -7,3 +7,4 @@ InlineQueryResultContact :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_document.rst b/docs/api/types/inline_query_result_document.rst index 6352c6c3..d5e03940 100644 --- a/docs/api/types/inline_query_result_document.rst +++ b/docs/api/types/inline_query_result_document.rst @@ -7,3 +7,4 @@ InlineQueryResultDocument :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_game.rst b/docs/api/types/inline_query_result_game.rst index 562c1974..4f57d322 100644 --- a/docs/api/types/inline_query_result_game.rst +++ b/docs/api/types/inline_query_result_game.rst @@ -7,3 +7,4 @@ InlineQueryResultGame :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_gif.rst b/docs/api/types/inline_query_result_gif.rst index 552252de..54628ab6 100644 --- a/docs/api/types/inline_query_result_gif.rst +++ b/docs/api/types/inline_query_result_gif.rst @@ -7,3 +7,4 @@ InlineQueryResultGif :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_location.rst b/docs/api/types/inline_query_result_location.rst index fcde9fb2..7f637827 100644 --- a/docs/api/types/inline_query_result_location.rst +++ b/docs/api/types/inline_query_result_location.rst @@ -7,3 +7,4 @@ InlineQueryResultLocation :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_mpeg4_gif.rst b/docs/api/types/inline_query_result_mpeg4_gif.rst index ccdfb06f..80144e82 100644 --- a/docs/api/types/inline_query_result_mpeg4_gif.rst +++ b/docs/api/types/inline_query_result_mpeg4_gif.rst @@ -7,3 +7,4 @@ InlineQueryResultMpeg4Gif :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_photo.rst b/docs/api/types/inline_query_result_photo.rst index 4af41c8e..e36c6b01 100644 --- a/docs/api/types/inline_query_result_photo.rst +++ b/docs/api/types/inline_query_result_photo.rst @@ -7,3 +7,4 @@ InlineQueryResultPhoto :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_venue.rst b/docs/api/types/inline_query_result_venue.rst index b3c40c01..ea0b5331 100644 --- a/docs/api/types/inline_query_result_venue.rst +++ b/docs/api/types/inline_query_result_venue.rst @@ -7,3 +7,4 @@ InlineQueryResultVenue :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_video.rst b/docs/api/types/inline_query_result_video.rst index e27f6be3..b767f746 100644 --- a/docs/api/types/inline_query_result_video.rst +++ b/docs/api/types/inline_query_result_video.rst @@ -7,3 +7,4 @@ InlineQueryResultVideo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_result_voice.rst b/docs/api/types/inline_query_result_voice.rst index 4496c4fe..fc648e0a 100644 --- a/docs/api/types/inline_query_result_voice.rst +++ b/docs/api/types/inline_query_result_voice.rst @@ -7,3 +7,4 @@ InlineQueryResultVoice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/inline_query_results_button.rst b/docs/api/types/inline_query_results_button.rst index c4b1fc05..75903af3 100644 --- a/docs/api/types/inline_query_results_button.rst +++ b/docs/api/types/inline_query_results_button.rst @@ -7,3 +7,4 @@ InlineQueryResultsButton :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_contact_message_content.rst b/docs/api/types/input_contact_message_content.rst index a3100b83..ea3ae3f0 100644 --- a/docs/api/types/input_contact_message_content.rst +++ b/docs/api/types/input_contact_message_content.rst @@ -7,3 +7,4 @@ InputContactMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_file.rst b/docs/api/types/input_file.rst index 4197e6cd..1cb8fa16 100644 --- a/docs/api/types/input_file.rst +++ b/docs/api/types/input_file.rst @@ -7,3 +7,4 @@ InputFile :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_invoice_message_content.rst b/docs/api/types/input_invoice_message_content.rst index f5d7a0ab..f08e8fff 100644 --- a/docs/api/types/input_invoice_message_content.rst +++ b/docs/api/types/input_invoice_message_content.rst @@ -7,3 +7,4 @@ InputInvoiceMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_location_message_content.rst b/docs/api/types/input_location_message_content.rst index 6ca59b0b..8c79a76c 100644 --- a/docs/api/types/input_location_message_content.rst +++ b/docs/api/types/input_location_message_content.rst @@ -7,3 +7,4 @@ InputLocationMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media.rst b/docs/api/types/input_media.rst index 9b3f386b..f2bbb471 100644 --- a/docs/api/types/input_media.rst +++ b/docs/api/types/input_media.rst @@ -7,3 +7,4 @@ InputMedia :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media_animation.rst b/docs/api/types/input_media_animation.rst index 9c00494b..eb6b2754 100644 --- a/docs/api/types/input_media_animation.rst +++ b/docs/api/types/input_media_animation.rst @@ -7,3 +7,4 @@ InputMediaAnimation :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media_audio.rst b/docs/api/types/input_media_audio.rst index c12d307c..f44b52c7 100644 --- a/docs/api/types/input_media_audio.rst +++ b/docs/api/types/input_media_audio.rst @@ -7,3 +7,4 @@ InputMediaAudio :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media_document.rst b/docs/api/types/input_media_document.rst index 645b78e7..4dc1eca0 100644 --- a/docs/api/types/input_media_document.rst +++ b/docs/api/types/input_media_document.rst @@ -7,3 +7,4 @@ InputMediaDocument :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media_photo.rst b/docs/api/types/input_media_photo.rst index 32656e29..d78d91ef 100644 --- a/docs/api/types/input_media_photo.rst +++ b/docs/api/types/input_media_photo.rst @@ -7,3 +7,4 @@ InputMediaPhoto :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_media_video.rst b/docs/api/types/input_media_video.rst index 57099c51..c6b84be0 100644 --- a/docs/api/types/input_media_video.rst +++ b/docs/api/types/input_media_video.rst @@ -7,3 +7,4 @@ InputMediaVideo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_message_content.rst b/docs/api/types/input_message_content.rst index 84040fb7..c79c4c6c 100644 --- a/docs/api/types/input_message_content.rst +++ b/docs/api/types/input_message_content.rst @@ -7,3 +7,4 @@ InputMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_sticker.rst b/docs/api/types/input_sticker.rst index 176a0e15..e235697d 100644 --- a/docs/api/types/input_sticker.rst +++ b/docs/api/types/input_sticker.rst @@ -7,3 +7,4 @@ InputSticker :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_text_message_content.rst b/docs/api/types/input_text_message_content.rst index 1eb83e54..b019fb5d 100644 --- a/docs/api/types/input_text_message_content.rst +++ b/docs/api/types/input_text_message_content.rst @@ -7,3 +7,4 @@ InputTextMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/input_venue_message_content.rst b/docs/api/types/input_venue_message_content.rst index 479a99a0..6288d78a 100644 --- a/docs/api/types/input_venue_message_content.rst +++ b/docs/api/types/input_venue_message_content.rst @@ -7,3 +7,4 @@ InputVenueMessageContent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/invoice.rst b/docs/api/types/invoice.rst index 24ecc961..e5582e52 100644 --- a/docs/api/types/invoice.rst +++ b/docs/api/types/invoice.rst @@ -7,3 +7,4 @@ Invoice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/keyboard_button.rst b/docs/api/types/keyboard_button.rst index 9faca06d..b67d22fa 100644 --- a/docs/api/types/keyboard_button.rst +++ b/docs/api/types/keyboard_button.rst @@ -7,3 +7,4 @@ KeyboardButton :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/keyboard_button_poll_type.rst b/docs/api/types/keyboard_button_poll_type.rst index 9a4974a5..c15f6e1f 100644 --- a/docs/api/types/keyboard_button_poll_type.rst +++ b/docs/api/types/keyboard_button_poll_type.rst @@ -7,3 +7,4 @@ KeyboardButtonPollType :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/keyboard_button_request_chat.rst b/docs/api/types/keyboard_button_request_chat.rst index b47f1a8b..083bbd55 100644 --- a/docs/api/types/keyboard_button_request_chat.rst +++ b/docs/api/types/keyboard_button_request_chat.rst @@ -7,3 +7,4 @@ KeyboardButtonRequestChat :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/keyboard_button_request_user.rst b/docs/api/types/keyboard_button_request_user.rst index f216668a..fe5be538 100644 --- a/docs/api/types/keyboard_button_request_user.rst +++ b/docs/api/types/keyboard_button_request_user.rst @@ -7,3 +7,4 @@ KeyboardButtonRequestUser :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/labeled_price.rst b/docs/api/types/labeled_price.rst index a76b28f3..da5ccabb 100644 --- a/docs/api/types/labeled_price.rst +++ b/docs/api/types/labeled_price.rst @@ -7,3 +7,4 @@ LabeledPrice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/location.rst b/docs/api/types/location.rst index 2957683a..e6fa6bf0 100644 --- a/docs/api/types/location.rst +++ b/docs/api/types/location.rst @@ -7,3 +7,4 @@ Location :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/login_url.rst b/docs/api/types/login_url.rst index f72b28b6..3caae33d 100644 --- a/docs/api/types/login_url.rst +++ b/docs/api/types/login_url.rst @@ -7,3 +7,4 @@ LoginUrl :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/mask_position.rst b/docs/api/types/mask_position.rst index 74c28494..d53f7598 100644 --- a/docs/api/types/mask_position.rst +++ b/docs/api/types/mask_position.rst @@ -7,3 +7,4 @@ MaskPosition :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/menu_button.rst b/docs/api/types/menu_button.rst index 44eeb4c3..a1ab0d8b 100644 --- a/docs/api/types/menu_button.rst +++ b/docs/api/types/menu_button.rst @@ -7,3 +7,4 @@ MenuButton :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/menu_button_commands.rst b/docs/api/types/menu_button_commands.rst index 66614b04..f5662136 100644 --- a/docs/api/types/menu_button_commands.rst +++ b/docs/api/types/menu_button_commands.rst @@ -7,3 +7,4 @@ MenuButtonCommands :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/menu_button_default.rst b/docs/api/types/menu_button_default.rst index f114387c..6594f436 100644 --- a/docs/api/types/menu_button_default.rst +++ b/docs/api/types/menu_button_default.rst @@ -7,3 +7,4 @@ MenuButtonDefault :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/menu_button_web_app.rst b/docs/api/types/menu_button_web_app.rst index bf5c0806..f65948fd 100644 --- a/docs/api/types/menu_button_web_app.rst +++ b/docs/api/types/menu_button_web_app.rst @@ -7,3 +7,4 @@ MenuButtonWebApp :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/message.rst b/docs/api/types/message.rst index 5e1be4f7..90ce74ca 100644 --- a/docs/api/types/message.rst +++ b/docs/api/types/message.rst @@ -7,3 +7,4 @@ Message :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/message_auto_delete_timer_changed.rst b/docs/api/types/message_auto_delete_timer_changed.rst index 102caacc..80d3f7db 100644 --- a/docs/api/types/message_auto_delete_timer_changed.rst +++ b/docs/api/types/message_auto_delete_timer_changed.rst @@ -7,3 +7,4 @@ MessageAutoDeleteTimerChanged :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/message_entity.rst b/docs/api/types/message_entity.rst index 38ee737d..15d9e15c 100644 --- a/docs/api/types/message_entity.rst +++ b/docs/api/types/message_entity.rst @@ -7,3 +7,4 @@ MessageEntity :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/message_id.rst b/docs/api/types/message_id.rst index 2ed2adc6..55f15959 100644 --- a/docs/api/types/message_id.rst +++ b/docs/api/types/message_id.rst @@ -7,3 +7,4 @@ MessageId :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/order_info.rst b/docs/api/types/order_info.rst index 6180f709..5529a607 100644 --- a/docs/api/types/order_info.rst +++ b/docs/api/types/order_info.rst @@ -7,3 +7,4 @@ OrderInfo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_data.rst b/docs/api/types/passport_data.rst index 9a3de684..eea326bb 100644 --- a/docs/api/types/passport_data.rst +++ b/docs/api/types/passport_data.rst @@ -7,3 +7,4 @@ PassportData :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error.rst b/docs/api/types/passport_element_error.rst index 8fc30e86..24e16dd0 100644 --- a/docs/api/types/passport_element_error.rst +++ b/docs/api/types/passport_element_error.rst @@ -7,3 +7,4 @@ PassportElementError :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_data_field.rst b/docs/api/types/passport_element_error_data_field.rst index b9382471..08e75bc1 100644 --- a/docs/api/types/passport_element_error_data_field.rst +++ b/docs/api/types/passport_element_error_data_field.rst @@ -7,3 +7,4 @@ PassportElementErrorDataField :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_file.rst b/docs/api/types/passport_element_error_file.rst index 877def6a..7d209266 100644 --- a/docs/api/types/passport_element_error_file.rst +++ b/docs/api/types/passport_element_error_file.rst @@ -7,3 +7,4 @@ PassportElementErrorFile :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_files.rst b/docs/api/types/passport_element_error_files.rst index 922b4ffb..9d9f5585 100644 --- a/docs/api/types/passport_element_error_files.rst +++ b/docs/api/types/passport_element_error_files.rst @@ -7,3 +7,4 @@ PassportElementErrorFiles :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_front_side.rst b/docs/api/types/passport_element_error_front_side.rst index 3f7dfe81..c72e9b87 100644 --- a/docs/api/types/passport_element_error_front_side.rst +++ b/docs/api/types/passport_element_error_front_side.rst @@ -7,3 +7,4 @@ PassportElementErrorFrontSide :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_reverse_side.rst b/docs/api/types/passport_element_error_reverse_side.rst index dd61c9a1..a9147a70 100644 --- a/docs/api/types/passport_element_error_reverse_side.rst +++ b/docs/api/types/passport_element_error_reverse_side.rst @@ -7,3 +7,4 @@ PassportElementErrorReverseSide :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_selfie.rst b/docs/api/types/passport_element_error_selfie.rst index d3463191..ed452899 100644 --- a/docs/api/types/passport_element_error_selfie.rst +++ b/docs/api/types/passport_element_error_selfie.rst @@ -7,3 +7,4 @@ PassportElementErrorSelfie :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_translation_file.rst b/docs/api/types/passport_element_error_translation_file.rst index 3a0e16aa..68e3417b 100644 --- a/docs/api/types/passport_element_error_translation_file.rst +++ b/docs/api/types/passport_element_error_translation_file.rst @@ -7,3 +7,4 @@ PassportElementErrorTranslationFile :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_translation_files.rst b/docs/api/types/passport_element_error_translation_files.rst index 9ac03422..5102b071 100644 --- a/docs/api/types/passport_element_error_translation_files.rst +++ b/docs/api/types/passport_element_error_translation_files.rst @@ -7,3 +7,4 @@ PassportElementErrorTranslationFiles :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_element_error_unspecified.rst b/docs/api/types/passport_element_error_unspecified.rst index ec90bed9..6510d51e 100644 --- a/docs/api/types/passport_element_error_unspecified.rst +++ b/docs/api/types/passport_element_error_unspecified.rst @@ -7,3 +7,4 @@ PassportElementErrorUnspecified :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/passport_file.rst b/docs/api/types/passport_file.rst index 4c737fff..1a2dcd56 100644 --- a/docs/api/types/passport_file.rst +++ b/docs/api/types/passport_file.rst @@ -7,3 +7,4 @@ PassportFile :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/photo_size.rst b/docs/api/types/photo_size.rst index 1086588c..3605b912 100644 --- a/docs/api/types/photo_size.rst +++ b/docs/api/types/photo_size.rst @@ -7,3 +7,4 @@ PhotoSize :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/poll.rst b/docs/api/types/poll.rst index fd11bc88..294b323b 100644 --- a/docs/api/types/poll.rst +++ b/docs/api/types/poll.rst @@ -7,3 +7,4 @@ Poll :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/poll_answer.rst b/docs/api/types/poll_answer.rst index fe92fb6a..680cc75e 100644 --- a/docs/api/types/poll_answer.rst +++ b/docs/api/types/poll_answer.rst @@ -7,3 +7,4 @@ PollAnswer :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/poll_option.rst b/docs/api/types/poll_option.rst index 72ebfbd2..b85634e0 100644 --- a/docs/api/types/poll_option.rst +++ b/docs/api/types/poll_option.rst @@ -7,3 +7,4 @@ PollOption :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/pre_checkout_query.rst b/docs/api/types/pre_checkout_query.rst index 418c11b9..8f330051 100644 --- a/docs/api/types/pre_checkout_query.rst +++ b/docs/api/types/pre_checkout_query.rst @@ -7,3 +7,4 @@ PreCheckoutQuery :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/proximity_alert_triggered.rst b/docs/api/types/proximity_alert_triggered.rst index 98ac7d2f..16a47c11 100644 --- a/docs/api/types/proximity_alert_triggered.rst +++ b/docs/api/types/proximity_alert_triggered.rst @@ -7,3 +7,4 @@ ProximityAlertTriggered :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/reply_keyboard_markup.rst b/docs/api/types/reply_keyboard_markup.rst index a5c5ae85..01c040ee 100644 --- a/docs/api/types/reply_keyboard_markup.rst +++ b/docs/api/types/reply_keyboard_markup.rst @@ -7,3 +7,4 @@ ReplyKeyboardMarkup :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/reply_keyboard_remove.rst b/docs/api/types/reply_keyboard_remove.rst index 799ad3a9..b54b06f7 100644 --- a/docs/api/types/reply_keyboard_remove.rst +++ b/docs/api/types/reply_keyboard_remove.rst @@ -7,3 +7,4 @@ ReplyKeyboardRemove :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/response_parameters.rst b/docs/api/types/response_parameters.rst index 5b7056b8..31ae0c34 100644 --- a/docs/api/types/response_parameters.rst +++ b/docs/api/types/response_parameters.rst @@ -7,3 +7,4 @@ ResponseParameters :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/sent_web_app_message.rst b/docs/api/types/sent_web_app_message.rst index 1a7d2084..a8563b8d 100644 --- a/docs/api/types/sent_web_app_message.rst +++ b/docs/api/types/sent_web_app_message.rst @@ -7,3 +7,4 @@ SentWebAppMessage :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/shipping_address.rst b/docs/api/types/shipping_address.rst index 0421c58e..6eb704f8 100644 --- a/docs/api/types/shipping_address.rst +++ b/docs/api/types/shipping_address.rst @@ -7,3 +7,4 @@ ShippingAddress :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/shipping_option.rst b/docs/api/types/shipping_option.rst index 28e13897..e5f57874 100644 --- a/docs/api/types/shipping_option.rst +++ b/docs/api/types/shipping_option.rst @@ -7,3 +7,4 @@ ShippingOption :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/shipping_query.rst b/docs/api/types/shipping_query.rst index c4ccdf70..761a2f52 100644 --- a/docs/api/types/shipping_query.rst +++ b/docs/api/types/shipping_query.rst @@ -7,3 +7,4 @@ ShippingQuery :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/sticker.rst b/docs/api/types/sticker.rst index f15dd9ef..3f69a389 100644 --- a/docs/api/types/sticker.rst +++ b/docs/api/types/sticker.rst @@ -7,3 +7,4 @@ Sticker :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/sticker_set.rst b/docs/api/types/sticker_set.rst index a25e064f..9f50ef1d 100644 --- a/docs/api/types/sticker_set.rst +++ b/docs/api/types/sticker_set.rst @@ -7,3 +7,4 @@ StickerSet :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/successful_payment.rst b/docs/api/types/successful_payment.rst index f21f860b..ed882b60 100644 --- a/docs/api/types/successful_payment.rst +++ b/docs/api/types/successful_payment.rst @@ -7,3 +7,4 @@ SuccessfulPayment :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/switch_inline_query_chosen_chat.rst b/docs/api/types/switch_inline_query_chosen_chat.rst index 961534d6..0934367d 100644 --- a/docs/api/types/switch_inline_query_chosen_chat.rst +++ b/docs/api/types/switch_inline_query_chosen_chat.rst @@ -7,3 +7,4 @@ SwitchInlineQueryChosenChat :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/update.rst b/docs/api/types/update.rst index 5419da6e..b789cb3d 100644 --- a/docs/api/types/update.rst +++ b/docs/api/types/update.rst @@ -7,3 +7,4 @@ Update :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/user.rst b/docs/api/types/user.rst index b13f8808..92a0bf32 100644 --- a/docs/api/types/user.rst +++ b/docs/api/types/user.rst @@ -7,3 +7,4 @@ User :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/user_profile_photos.rst b/docs/api/types/user_profile_photos.rst index b6cce934..29bf9a88 100644 --- a/docs/api/types/user_profile_photos.rst +++ b/docs/api/types/user_profile_photos.rst @@ -7,3 +7,4 @@ UserProfilePhotos :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/user_shared.rst b/docs/api/types/user_shared.rst index 55713049..6a485188 100644 --- a/docs/api/types/user_shared.rst +++ b/docs/api/types/user_shared.rst @@ -7,3 +7,4 @@ UserShared :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/venue.rst b/docs/api/types/venue.rst index 75a71fff..1827dd18 100644 --- a/docs/api/types/venue.rst +++ b/docs/api/types/venue.rst @@ -7,3 +7,4 @@ Venue :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video.rst b/docs/api/types/video.rst index 0478b3f7..a2a2c032 100644 --- a/docs/api/types/video.rst +++ b/docs/api/types/video.rst @@ -7,3 +7,4 @@ Video :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video_chat_ended.rst b/docs/api/types/video_chat_ended.rst index aed8b7a9..6edfb158 100644 --- a/docs/api/types/video_chat_ended.rst +++ b/docs/api/types/video_chat_ended.rst @@ -7,3 +7,4 @@ VideoChatEnded :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video_chat_participants_invited.rst b/docs/api/types/video_chat_participants_invited.rst index 9ca905bd..8812311f 100644 --- a/docs/api/types/video_chat_participants_invited.rst +++ b/docs/api/types/video_chat_participants_invited.rst @@ -7,3 +7,4 @@ VideoChatParticipantsInvited :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video_chat_scheduled.rst b/docs/api/types/video_chat_scheduled.rst index 0d5f8c45..e612af51 100644 --- a/docs/api/types/video_chat_scheduled.rst +++ b/docs/api/types/video_chat_scheduled.rst @@ -7,3 +7,4 @@ VideoChatScheduled :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video_chat_started.rst b/docs/api/types/video_chat_started.rst index 5d59a22e..a58fb47e 100644 --- a/docs/api/types/video_chat_started.rst +++ b/docs/api/types/video_chat_started.rst @@ -7,3 +7,4 @@ VideoChatStarted :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/video_note.rst b/docs/api/types/video_note.rst index b9d308e5..ad0912a6 100644 --- a/docs/api/types/video_note.rst +++ b/docs/api/types/video_note.rst @@ -7,3 +7,4 @@ VideoNote :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/voice.rst b/docs/api/types/voice.rst index 7d58722d..c963205a 100644 --- a/docs/api/types/voice.rst +++ b/docs/api/types/voice.rst @@ -7,3 +7,4 @@ Voice :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/web_app_data.rst b/docs/api/types/web_app_data.rst index 1a94573f..e4369a88 100644 --- a/docs/api/types/web_app_data.rst +++ b/docs/api/types/web_app_data.rst @@ -7,3 +7,4 @@ WebAppData :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/web_app_info.rst b/docs/api/types/web_app_info.rst index b21f0aea..6ebfad64 100644 --- a/docs/api/types/web_app_info.rst +++ b/docs/api/types/web_app_info.rst @@ -7,3 +7,4 @@ WebAppInfo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/webhook_info.rst b/docs/api/types/webhook_info.rst index 259a01bc..7194b726 100644 --- a/docs/api/types/webhook_info.rst +++ b/docs/api/types/webhook_info.rst @@ -7,3 +7,4 @@ WebhookInfo :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/api/types/write_access_allowed.rst b/docs/api/types/write_access_allowed.rst index d2afa3bc..62fa76d6 100644 --- a/docs/api/types/write_access_allowed.rst +++ b/docs/api/types/write_access_allowed.rst @@ -7,3 +7,4 @@ WriteAccessAllowed :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields From a7b92bb050f10606d729a764fb78881a3bbede0b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 11 Jul 2023 23:17:26 +0300 Subject: [PATCH 019/139] PoC: Bot instance inside method shortcuts using pydantic Validation Context (#1210) * PoC: Mount objects to the Bot instance, bind shortcuts to configured instance * Fixe docstring of the bind method * Pass Bot instance explicitly to the URLInputFile * Added tests * Added changelog * Refactor aiogram client and update tests Refactored base.py to improve code readability by separating response_type operation from model_validate(). Also, adjusted the parameters in URLInputFile() within test_input_file.py for better test coverage. Updated input_file.py to streamline read method and avoid unnecessary instantiation of Bot class. Lastly, adjusted typing in methods/base.py to enhance code clarity. * Update changelog --- CHANGES/1210.misc.rst | 6 ++ aiogram/client/context_controller.py | 27 ++++++ aiogram/client/session/aiohttp.py | 4 +- aiogram/client/session/base.py | 5 +- aiogram/methods/base.py | 50 +++++++---- aiogram/types/base.py | 4 +- aiogram/types/callback_query.py | 2 +- aiogram/types/chat.py | 54 +++++------ aiogram/types/chat_join_request.py | 4 +- aiogram/types/inline_query.py | 2 +- aiogram/types/input_file.py | 23 +++-- aiogram/types/message.py | 90 +++++++++---------- aiogram/types/sticker.py | 4 +- aiogram/types/user.py | 2 +- tests/mocked_bot.py | 2 +- .../test_client/test_context_controller.py | 36 ++++++++ .../test_session/test_base_session.py | 7 ++ tests/test_api/test_methods/test_base.py | 10 ++- tests/test_api/test_types/test_input_file.py | 7 +- 19 files changed, 228 insertions(+), 111 deletions(-) create mode 100644 CHANGES/1210.misc.rst create mode 100644 aiogram/client/context_controller.py create mode 100644 tests/test_api/test_client/test_context_controller.py diff --git a/CHANGES/1210.misc.rst b/CHANGES/1210.misc.rst new file mode 100644 index 00000000..e4d3589c --- /dev/null +++ b/CHANGES/1210.misc.rst @@ -0,0 +1,6 @@ +Replaced ContextVar's with a new feature called `Validation Context `_ +in Pydantic to improve the clarity, usability, and versatility of handling the Bot instance within method shortcuts. + +.. danger:: + + **Breaking**: The 'bot' argument now is required in `URLInputFile` diff --git a/aiogram/client/context_controller.py b/aiogram/client/context_controller.py new file mode 100644 index 00000000..d2402018 --- /dev/null +++ b/aiogram/client/context_controller.py @@ -0,0 +1,27 @@ +from typing import TYPE_CHECKING, Any, Optional + +from pydantic import BaseModel, PrivateAttr +from typing_extensions import Self + +if TYPE_CHECKING: + from aiogram.client.bot import Bot + + +class BotContextController(BaseModel): + _bot: Optional["Bot"] = PrivateAttr() + + def model_post_init(self, __context: Any) -> None: + if not __context: + self._bot = None + else: + self._bot = __context.get("bot") + + def as_(self, bot: Optional["Bot"]) -> Self: + """ + Bind object to a bot instance. + + :param bot: Bot instance + :return: self + """ + self._bot = bot + return self diff --git a/aiogram/client/session/aiohttp.py b/aiogram/client/session/aiohttp.py index b4c791e8..79e2fa4f 100644 --- a/aiogram/client/session/aiohttp.py +++ b/aiogram/client/session/aiohttp.py @@ -167,7 +167,9 @@ class AiohttpSession(BaseSession): raise TelegramNetworkError(method=method, message="Request timeout error") except ClientError as e: raise TelegramNetworkError(method=method, message=f"{type(e).__name__}: {e}") - response = self.check_response(method=method, status_code=resp.status, content=raw_result) + response = self.check_response( + bot=bot, method=method, status_code=resp.status, content=raw_result + ) return cast(TelegramType, response.result) async def stream_content( diff --git a/aiogram/client/session/base.py b/aiogram/client/session/base.py index afbb2edb..9342cbcc 100644 --- a/aiogram/client/session/base.py +++ b/aiogram/client/session/base.py @@ -75,7 +75,7 @@ class BaseSession(abc.ABC): self.middleware = RequestMiddlewareManager() def check_response( - self, method: TelegramMethod[TelegramType], status_code: int, content: str + self, bot: Bot, method: TelegramMethod[TelegramType], status_code: int, content: str ) -> Response[TelegramType]: """ Check response status @@ -89,7 +89,8 @@ class BaseSession(abc.ABC): raise ClientDecodeError("Failed to decode object", e, content) try: - response = method.build_response(json_data) + response_type = Response[method.__returning__] # type: ignore + response = response_type.model_validate(json_data, context={"bot": bot}) except ValidationError as e: raise ClientDecodeError("Failed to deserialize object", e, json_data) diff --git a/aiogram/methods/base.py b/aiogram/methods/base.py index 53175784..221ad9c0 100644 --- a/aiogram/methods/base.py +++ b/aiogram/methods/base.py @@ -1,11 +1,22 @@ from __future__ import annotations from abc import ABC, abstractmethod -from typing import TYPE_CHECKING, Any, Dict, Generator, Generic, Optional, TypeVar +from typing import ( + TYPE_CHECKING, + Any, + ClassVar, + Dict, + Generator, + Generic, + Optional, + TypeVar, +) from pydantic import BaseModel, ConfigDict from pydantic.functional_validators import model_validator +from aiogram.client.context_controller import BotContextController + from ..types import InputFile, ResponseParameters from ..types.base import UNSET_TYPE @@ -32,7 +43,7 @@ class Response(BaseModel, Generic[TelegramType]): parameters: Optional[ResponseParameters] = None -class TelegramMethod(BaseModel, Generic[TelegramType], ABC): +class TelegramMethod(BotContextController, BaseModel, Generic[TelegramType], ABC): model_config = ConfigDict( extra="allow", populate_by_name=True, @@ -40,6 +51,7 @@ class TelegramMethod(BaseModel, Generic[TelegramType], ABC): ) @model_validator(mode="before") + @classmethod def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]: """ Remove UNSET before fields validation. @@ -51,25 +63,31 @@ class TelegramMethod(BaseModel, Generic[TelegramType], ABC): """ return {k: v for k, v in values.items() if not isinstance(v, UNSET_TYPE)} - @property - @abstractmethod - def __returning__(self) -> type: # pragma: no cover - pass + if TYPE_CHECKING: + __returning__: ClassVar[type] + __api_method__: ClassVar[str] + else: - @property - @abstractmethod - def __api_method__(self) -> str: - pass + @property + @abstractmethod + def __returning__(self) -> type: + pass - def build_response(self, data: Dict[str, Any]) -> Response[TelegramType]: - # noinspection PyTypeChecker - return Response[self.__returning__](**data) # type: ignore + @property + @abstractmethod + def __api_method__(self) -> str: + pass async def emit(self, bot: Bot) -> TelegramType: return await bot(self) def __await__(self) -> Generator[Any, None, TelegramType]: - from aiogram.client.bot import Bot - - bot = Bot.get_current(no_error=False) + bot = self._bot + if not bot: + raise RuntimeError( + "This method is not mounted to a any bot instance, please call it explicilty " + "with bot instance `await bot(method)`\n" + "or mount method to a bot instance `method.as_(bot)` " + "and then call it `await method()`" + ) return self.emit(bot).__await__() diff --git a/aiogram/types/base.py b/aiogram/types/base.py index a9d3eb1a..9d24b51e 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -3,10 +3,10 @@ from unittest.mock import sentinel from pydantic import BaseModel, ConfigDict -from aiogram.utils.mixins import ContextInstanceMixin +from aiogram.client.context_controller import BotContextController -class TelegramObject(ContextInstanceMixin["TelegramObject"], BaseModel): +class TelegramObject(BotContextController, BaseModel): model_config = ConfigDict( use_enum_values=True, extra="allow", diff --git a/aiogram/types/callback_query.py b/aiogram/types/callback_query.py index 5812bb13..59f9ea66 100644 --- a/aiogram/types/callback_query.py +++ b/aiogram/types/callback_query.py @@ -74,4 +74,4 @@ class CallbackQuery(TelegramObject): url=url, cache_time=cache_time, **kwargs, - ) + ).as_(self._bot) diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 4bb6d688..d5d0dfcc 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -164,7 +164,7 @@ class Chat(TelegramObject): chat_id=self.id, sender_chat_id=sender_chat_id, **kwargs, - ) + ).as_(self._bot) def unban_sender_chat( self, @@ -193,7 +193,7 @@ class Chat(TelegramObject): chat_id=self.id, sender_chat_id=sender_chat_id, **kwargs, - ) + ).as_(self._bot) def get_administrators( self, @@ -219,7 +219,7 @@ class Chat(TelegramObject): return GetChatAdministrators( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def delete_message( self, @@ -266,7 +266,7 @@ class Chat(TelegramObject): chat_id=self.id, message_id=message_id, **kwargs, - ) + ).as_(self._bot) def revoke_invite_link( self, @@ -295,7 +295,7 @@ class Chat(TelegramObject): chat_id=self.id, invite_link=invite_link, **kwargs, - ) + ).as_(self._bot) def edit_invite_link( self, @@ -336,7 +336,7 @@ class Chat(TelegramObject): member_limit=member_limit, creates_join_request=creates_join_request, **kwargs, - ) + ).as_(self._bot) def create_invite_link( self, @@ -374,7 +374,7 @@ class Chat(TelegramObject): member_limit=member_limit, creates_join_request=creates_join_request, **kwargs, - ) + ).as_(self._bot) def export_invite_link( self, @@ -402,7 +402,7 @@ class Chat(TelegramObject): return ExportChatInviteLink( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def do( self, @@ -438,7 +438,7 @@ class Chat(TelegramObject): action=action, message_thread_id=message_thread_id, **kwargs, - ) + ).as_(self._bot) def delete_sticker_set( self, @@ -464,7 +464,7 @@ class Chat(TelegramObject): return DeleteChatStickerSet( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def set_sticker_set( self, @@ -493,7 +493,7 @@ class Chat(TelegramObject): chat_id=self.id, sticker_set_name=sticker_set_name, **kwargs, - ) + ).as_(self._bot) def get_member( self, @@ -522,7 +522,7 @@ class Chat(TelegramObject): chat_id=self.id, user_id=user_id, **kwargs, - ) + ).as_(self._bot) def get_member_count( self, @@ -548,7 +548,7 @@ class Chat(TelegramObject): return GetChatMemberCount( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def leave( self, @@ -574,7 +574,7 @@ class Chat(TelegramObject): return LeaveChat( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def unpin_all_messages( self, @@ -600,7 +600,7 @@ class Chat(TelegramObject): return UnpinAllChatMessages( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def unpin_message( self, @@ -629,7 +629,7 @@ class Chat(TelegramObject): chat_id=self.id, message_id=message_id, **kwargs, - ) + ).as_(self._bot) def pin_message( self, @@ -661,7 +661,7 @@ class Chat(TelegramObject): message_id=message_id, disable_notification=disable_notification, **kwargs, - ) + ).as_(self._bot) def set_administrator_custom_title( self, @@ -693,7 +693,7 @@ class Chat(TelegramObject): user_id=user_id, custom_title=custom_title, **kwargs, - ) + ).as_(self._bot) def set_permissions( self, @@ -725,7 +725,7 @@ class Chat(TelegramObject): permissions=permissions, use_independent_chat_permissions=use_independent_chat_permissions, **kwargs, - ) + ).as_(self._bot) def promote( self, @@ -790,7 +790,7 @@ class Chat(TelegramObject): can_pin_messages=can_pin_messages, can_manage_topics=can_manage_topics, **kwargs, - ) + ).as_(self._bot) def restrict( self, @@ -828,7 +828,7 @@ class Chat(TelegramObject): use_independent_chat_permissions=use_independent_chat_permissions, until_date=until_date, **kwargs, - ) + ).as_(self._bot) def unban( self, @@ -860,7 +860,7 @@ class Chat(TelegramObject): user_id=user_id, only_if_banned=only_if_banned, **kwargs, - ) + ).as_(self._bot) def ban( self, @@ -895,7 +895,7 @@ class Chat(TelegramObject): until_date=until_date, revoke_messages=revoke_messages, **kwargs, - ) + ).as_(self._bot) def set_description( self, @@ -924,7 +924,7 @@ class Chat(TelegramObject): chat_id=self.id, description=description, **kwargs, - ) + ).as_(self._bot) def set_title( self, @@ -953,7 +953,7 @@ class Chat(TelegramObject): chat_id=self.id, title=title, **kwargs, - ) + ).as_(self._bot) def delete_photo( self, @@ -979,7 +979,7 @@ class Chat(TelegramObject): return DeleteChatPhoto( chat_id=self.id, **kwargs, - ) + ).as_(self._bot) def set_photo( self, @@ -1008,4 +1008,4 @@ class Chat(TelegramObject): chat_id=self.id, photo=photo, **kwargs, - ) + ).as_(self._bot) diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index ca4f8bb7..94ef61ba 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -62,7 +62,7 @@ class ChatJoinRequest(TelegramObject): chat_id=self.chat.id, user_id=self.from_user.id, **kwargs, - ) + ).as_(self._bot) def decline( self, @@ -90,4 +90,4 @@ class ChatJoinRequest(TelegramObject): chat_id=self.chat.id, user_id=self.from_user.id, **kwargs, - ) + ).as_(self._bot) diff --git a/aiogram/types/inline_query.py b/aiogram/types/inline_query.py index 55eab72f..afb76a8b 100644 --- a/aiogram/types/inline_query.py +++ b/aiogram/types/inline_query.py @@ -81,4 +81,4 @@ class InlineQuery(TelegramObject): switch_pm_parameter=switch_pm_parameter, switch_pm_text=switch_pm_text, **kwargs, - ) + ).as_(self._bot) diff --git a/aiogram/types/input_file.py b/aiogram/types/input_file.py index e13c3379..ed0a2433 100644 --- a/aiogram/types/input_file.py +++ b/aiogram/types/input_file.py @@ -4,10 +4,21 @@ import io import os from abc import ABC, abstractmethod from pathlib import Path -from typing import Any, AsyncGenerator, AsyncIterator, Dict, Iterator, Optional, Union +from typing import ( + TYPE_CHECKING, + Any, + AsyncGenerator, + AsyncIterator, + Dict, + Optional, + Union, +) import aiofiles +if TYPE_CHECKING: + from aiogram.client.bot import Bot + DEFAULT_CHUNK_SIZE = 64 * 1024 # 64 kb @@ -110,6 +121,7 @@ class URLInputFile(InputFile): def __init__( self, url: str, + bot: "Bot", headers: Optional[Dict[str, Any]] = None, filename: Optional[str] = None, chunk_size: int = DEFAULT_CHUNK_SIZE, @@ -122,6 +134,9 @@ class URLInputFile(InputFile): :param headers: HTTP Headers :param filename: Filename to be propagated to telegram. :param chunk_size: Uploading chunk size + :param timeout: Timeout for downloading + :param bot: Bot instance to use HTTP session from. + If not specified, will be used current bot from context. """ super().__init__(filename=filename, chunk_size=chunk_size) if headers is None: @@ -130,12 +145,10 @@ class URLInputFile(InputFile): self.url = url self.headers = headers self.timeout = timeout + self.bot = bot async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: - from aiogram.client.bot import Bot - - bot = Bot.get_current(no_error=False) - stream = bot.session.stream_content( + stream = self.bot.session.stream_content( url=self.url, headers=self.headers, timeout=self.timeout, diff --git a/aiogram/types/message.py b/aiogram/types/message.py index a057ef97..9339fe7f 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -418,7 +418,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_animation( self, @@ -490,7 +490,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_audio( self, @@ -559,7 +559,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_audio( self, @@ -629,7 +629,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_contact( self, @@ -685,7 +685,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_contact( self, @@ -742,7 +742,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_document( self, @@ -804,7 +804,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_document( self, @@ -867,7 +867,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_game( self, @@ -912,7 +912,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_game( self, @@ -958,7 +958,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_invoice( self, @@ -1063,7 +1063,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_invoice( self, @@ -1169,7 +1169,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_location( self, @@ -1231,7 +1231,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_location( self, @@ -1294,7 +1294,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_media_group( self, @@ -1336,7 +1336,7 @@ class Message(TelegramObject): protect_content=protect_content, allow_sending_without_reply=allow_sending_without_reply, **kwargs, - ) + ).as_(self._bot) def answer_media_group( self, @@ -1379,7 +1379,7 @@ class Message(TelegramObject): reply_to_message_id=reply_to_message_id, allow_sending_without_reply=allow_sending_without_reply, **kwargs, - ) + ).as_(self._bot) def reply( self, @@ -1435,7 +1435,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer( self, @@ -1492,7 +1492,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_photo( self, @@ -1551,7 +1551,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_photo( self, @@ -1611,7 +1611,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_poll( self, @@ -1691,7 +1691,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_poll( self, @@ -1772,7 +1772,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_dice( self, @@ -1819,7 +1819,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_dice( self, @@ -1867,7 +1867,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_sticker( self, @@ -1917,7 +1917,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_sticker( self, @@ -1968,7 +1968,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_venue( self, @@ -2036,7 +2036,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_venue( self, @@ -2105,7 +2105,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_video( self, @@ -2179,7 +2179,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_video( self, @@ -2254,7 +2254,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_video_note( self, @@ -2310,7 +2310,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_video_note( self, @@ -2367,7 +2367,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def reply_voice( self, @@ -2426,7 +2426,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def answer_voice( self, @@ -2486,7 +2486,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def send_copy( # noqa: C901 self: Message, @@ -2684,7 +2684,7 @@ class Message(TelegramObject): allow_sending_without_reply=allow_sending_without_reply, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def edit_text( self, @@ -2730,7 +2730,7 @@ class Message(TelegramObject): disable_web_page_preview=disable_web_page_preview, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def forward( self, @@ -2770,7 +2770,7 @@ class Message(TelegramObject): disable_notification=disable_notification, protect_content=protect_content, **kwargs, - ) + ).as_(self._bot) def edit_media( self, @@ -2807,7 +2807,7 @@ class Message(TelegramObject): inline_message_id=inline_message_id, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def edit_reply_markup( self, @@ -2841,7 +2841,7 @@ class Message(TelegramObject): inline_message_id=inline_message_id, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def delete_reply_markup(self) -> EditMessageReplyMarkup: return self.edit_reply_markup(reply_markup=None) @@ -2893,7 +2893,7 @@ class Message(TelegramObject): proximity_alert_radius=proximity_alert_radius, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def stop_live_location( self, @@ -2927,7 +2927,7 @@ class Message(TelegramObject): inline_message_id=inline_message_id, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def edit_caption( self, @@ -2970,7 +2970,7 @@ class Message(TelegramObject): caption_entities=caption_entities, reply_markup=reply_markup, **kwargs, - ) + ).as_(self._bot) def delete( self, @@ -3016,7 +3016,7 @@ class Message(TelegramObject): chat_id=self.chat.id, message_id=self.message_id, **kwargs, - ) + ).as_(self._bot) def pin( self, @@ -3047,7 +3047,7 @@ class Message(TelegramObject): message_id=self.message_id, disable_notification=disable_notification, **kwargs, - ) + ).as_(self._bot) def unpin( self, @@ -3075,7 +3075,7 @@ class Message(TelegramObject): chat_id=self.chat.id, message_id=self.message_id, **kwargs, - ) + ).as_(self._bot) def get_url(self, force_private: bool = False) -> Optional[str]: """ diff --git a/aiogram/types/sticker.py b/aiogram/types/sticker.py index 1bac276f..cb453b32 100644 --- a/aiogram/types/sticker.py +++ b/aiogram/types/sticker.py @@ -76,7 +76,7 @@ class Sticker(TelegramObject): sticker=self.file_id, position=position, **kwargs, - ) + ).as_(self._bot) def delete_from_set( self, @@ -102,4 +102,4 @@ class Sticker(TelegramObject): return DeleteStickerFromSet( sticker=self.file_id, **kwargs, - ) + ).as_(self._bot) diff --git a/aiogram/types/user.py b/aiogram/types/user.py index 3b71af19..de1941fb 100644 --- a/aiogram/types/user.py +++ b/aiogram/types/user.py @@ -90,4 +90,4 @@ class User(TelegramObject): offset=offset, limit=limit, **kwargs, - ) + ).as_(self._bot) diff --git a/tests/mocked_bot.py b/tests/mocked_bot.py index 680e4883..af86098f 100644 --- a/tests/mocked_bot.py +++ b/tests/mocked_bot.py @@ -35,7 +35,7 @@ class MockedSession(BaseSession): self.requests.append(method) response: Response[TelegramType] = self.responses.pop() self.check_response( - method=method, status_code=response.error_code, content=response.json() + bot=bot, method=method, status_code=response.error_code, content=response.json() ) return response.result # type: ignore diff --git a/tests/test_api/test_client/test_context_controller.py b/tests/test_api/test_client/test_context_controller.py new file mode 100644 index 00000000..25643b27 --- /dev/null +++ b/tests/test_api/test_client/test_context_controller.py @@ -0,0 +1,36 @@ +from aiogram.client.context_controller import BotContextController +from tests.mocked_bot import MockedBot + + +class MyModel(BotContextController): + id: int + + +class TestBotContextController: + def test_via_model_validate(self, bot: MockedBot): + my_model = MyModel.model_validate({"id": 1}, context={"bot": bot}) + assert my_model.id == 1 + assert my_model._bot == bot + + def test_via_model_validate_none(self): + my_model = MyModel.model_validate({"id": 1}, context={}) + assert my_model.id == 1 + assert my_model._bot is None + + def test_as(self, bot: MockedBot): + my_model = MyModel(id=1).as_(bot) + assert my_model.id == 1 + assert my_model._bot == bot + + def test_as_none(self): + my_model = MyModel(id=1).as_(None) + assert my_model.id == 1 + assert my_model._bot is None + + def test_replacement(self, bot: MockedBot): + my_model = MyModel(id=1).as_(bot) + assert my_model.id == 1 + assert my_model._bot == bot + my_model = my_model.as_(None) + assert my_model.id == 1 + assert my_model._bot is None diff --git a/tests/test_api/test_client/test_session/test_base_session.py b/tests/test_api/test_client/test_session/test_base_session.py index 5d1ebef1..3793f22a 100644 --- a/tests/test_api/test_client/test_session/test_base_session.py +++ b/tests/test_api/test_client/test_session/test_base_session.py @@ -170,9 +170,11 @@ class TestBaseSession: ) def test_check_response(self, status_code, content, error): session = CustomSession() + bot = MockedBot() method = DeleteMessage(chat_id=42, message_id=42) if error is None: session.check_response( + bot=bot, method=method, status_code=status_code, content=content, @@ -180,6 +182,7 @@ class TestBaseSession: else: with pytest.raises(error) as exc_info: session.check_response( + bot=bot, method=method, status_code=status_code, content=content, @@ -191,10 +194,12 @@ class TestBaseSession: def test_check_response_json_decode_error(self): session = CustomSession() + bot = MockedBot() method = DeleteMessage(chat_id=42, message_id=42) with pytest.raises(ClientDecodeError, match="JSONDecodeError"): session.check_response( + bot=bot, method=method, status_code=200, content="is not a JSON object", @@ -202,10 +207,12 @@ class TestBaseSession: def test_check_response_validation_error(self): session = CustomSession() + bot = MockedBot() method = DeleteMessage(chat_id=42, message_id=42) with pytest.raises(ClientDecodeError, match="ValidationError"): session.check_response( + bot=bot, method=method, status_code=200, content='{"ok": "test"}', diff --git a/tests/test_api/test_methods/test_base.py b/tests/test_api/test_methods/test_base.py index f2351d40..9626c9b7 100644 --- a/tests/test_api/test_methods/test_base.py +++ b/tests/test_api/test_methods/test_base.py @@ -22,6 +22,14 @@ class TestTelegramMethodRemoveUnset: class TestTelegramMethodCall: + async def test_async_emit_unsuccessful(self, bot: MockedBot): + with pytest.raises( + RuntimeError, + match="This method is not mounted to a any bot instance.+", + ): + await GetMe() + async def test_async_emit(self, bot: MockedBot): bot.add_result_for(GetMe, ok=True, result=User(id=42, is_bot=True, first_name="Test")) - assert isinstance(await GetMe(), User) + method = GetMe().as_(bot) + assert isinstance(await method, User) diff --git a/tests/test_api/test_types/test_input_file.py b/tests/test_api/test_types/test_input_file.py index 05391a8e..81e80ad5 100644 --- a/tests/test_api/test_types/test_input_file.py +++ b/tests/test_api/test_types/test_input_file.py @@ -4,6 +4,7 @@ from aresponses import ResponsesMockServer from aiogram import Bot from aiogram.types import BufferedInputFile, FSInputFile, InputFile, URLInputFile +from tests.mocked_bot import MockedBot class TestInputFile: @@ -72,10 +73,8 @@ class TestInputFile: aresponses.add( aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) ) - - Bot.set_current(Bot("42:TEST")) - - file = URLInputFile("https://test.org/", chunk_size=1) + bot = Bot(token="42:TEST") + file = URLInputFile("https://test.org/", bot, chunk_size=1) size = 0 async for chunk in file: From 31c11c31e0856d5e6b336dcdf9f5923cbeccd71b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 11 Jul 2023 23:39:54 +0300 Subject: [PATCH 020/139] Fixed subtypes and union types generation, new enums added (#1213) * Fixed subtypes and union types generation, new enums added * Added changes description --- .butcher/enums/EncryptedPassportElement.yml | 10 ++ .butcher/enums/PassportElementErrorType.yml | 18 ++++ .butcher/types/BotCommandScope/subtypes.yml | 1 + .../replace.yml | 2 - .../BotCommandScopeAllGroupChats/replace.yml | 2 - .../replace.yml | 2 - .../types/BotCommandScopeChat/replace.yml | 2 - .../replace.yml | 2 - .../BotCommandScopeChatMember/replace.yml | 2 - .../types/BotCommandScopeDefault/replace.yml | 2 - .butcher/types/ChatMember/extend.yml | 27 ------ .butcher/types/ChatMember/subtypes.yml | 1 + .../types/ChatMemberAdministrator/replace.yml | 2 - .butcher/types/ChatMemberBanned/replace.yml | 2 - .butcher/types/ChatMemberLeft/replace.yml | 2 - .butcher/types/ChatMemberMember/replace.yml | 2 - .butcher/types/ChatMemberOwner/replace.yml | 2 - .../types/ChatMemberRestricted/replace.yml | 2 - .butcher/types/ChatMemberUpdated/replace.yml | 29 ------ .butcher/types/InlineQueryResult/subtypes.yml | 1 + .../InlineQueryResultArticle/replace.yml | 2 - .../types/InlineQueryResultAudio/replace.yml | 3 - .../InlineQueryResultCachedAudio/replace.yml | 3 - .../replace.yml | 3 - .../InlineQueryResultCachedGif/replace.yml | 3 - .../replace.yml | 3 - .../InlineQueryResultCachedPhoto/replace.yml | 3 - .../replace.yml | 2 - .../InlineQueryResultCachedVideo/replace.yml | 3 - .../InlineQueryResultCachedVoice/replace.yml | 3 - .../InlineQueryResultContact/replace.yml | 2 - .../InlineQueryResultDocument/replace.yml | 3 - .../types/InlineQueryResultGame/replace.yml | 2 - .../types/InlineQueryResultGif/replace.yml | 3 - .../InlineQueryResultLocation/replace.yml | 2 - .../InlineQueryResultMpeg4Gif/replace.yml | 3 - .../types/InlineQueryResultPhoto/replace.yml | 3 - .../types/InlineQueryResultVenue/replace.yml | 2 - .../types/InlineQueryResultVideo/replace.yml | 3 - .../types/InlineQueryResultVoice/replace.yml | 2 - .../InputContactMessageContent/replace.yml | 2 - .../InputInvoiceMessageContent/replace.yml | 2 - .../InputLocationMessageContent/replace.yml | 2 - .butcher/types/InputMedia/subtypes.yml | 1 + .../types/InputMediaAnimation/replace.yml | 2 - .butcher/types/InputMediaAudio/replace.yml | 2 - .butcher/types/InputMediaDocument/replace.yml | 2 - .butcher/types/InputMediaPhoto/replace.yml | 2 - .butcher/types/InputMediaVideo/replace.yml | 2 - .../types/InputMessageContent/subtypes.yml | 1 + .../types/InputTextMessageContent/replace.yml | 3 - .../InputVenueMessageContent/replace.yml | 2 - .butcher/types/MenuButton/subtypes.yml | 1 + .butcher/types/MenuButtonCommands/replace.yml | 2 - .butcher/types/MenuButtonDefault/replace.yml | 2 - .butcher/types/MenuButtonWebApp/replace.yml | 2 - .../types/PassportElementError/subtypes.yml | 1 + .../PassportElementErrorDataField/replace.yml | 2 - .../PassportElementErrorFile/replace.yml | 2 - .../PassportElementErrorFiles/replace.yml | 2 - .../PassportElementErrorFrontSide/replace.yml | 2 - .../replace.yml | 2 - .../PassportElementErrorSelfie/replace.yml | 2 - .../replace.yml | 2 - .../replace.yml | 2 - .../replace.yml | 2 - CHANGES/1213.bugfix.rst | 7 ++ aiogram/client/bot.py | 97 +++++++++++++++++-- aiogram/client/context_controller.py | 5 +- aiogram/enums/__init__.py | 4 + aiogram/enums/encrypted_passport_element.py | 23 +++++ aiogram/enums/passport_element_error_type.py | 19 ++++ aiogram/filters/chat_member_updated.py | 7 +- aiogram/methods/answer_web_app_query.py | 49 +++++++++- aiogram/methods/delete_my_commands.py | 24 ++++- aiogram/methods/edit_message_media.py | 14 ++- aiogram/methods/get_my_commands.py | 25 ++++- aiogram/methods/set_chat_menu_button.py | 2 +- aiogram/methods/set_my_commands.py | 25 ++++- aiogram/types/chat_member.py | 63 ------------ aiogram/types/inline_query_result_article.py | 16 ++- aiogram/types/inline_query_result_audio.py | 18 +++- .../types/inline_query_result_cached_audio.py | 18 +++- .../inline_query_result_cached_document.py | 18 +++- .../types/inline_query_result_cached_gif.py | 18 +++- .../inline_query_result_cached_mpeg4_gif.py | 18 +++- .../types/inline_query_result_cached_photo.py | 18 +++- .../inline_query_result_cached_sticker.py | 18 +++- .../types/inline_query_result_cached_video.py | 18 +++- .../types/inline_query_result_cached_voice.py | 18 +++- aiogram/types/inline_query_result_contact.py | 18 +++- aiogram/types/inline_query_result_document.py | 18 +++- aiogram/types/inline_query_result_gif.py | 18 +++- aiogram/types/inline_query_result_location.py | 18 +++- .../types/inline_query_result_mpeg4_gif.py | 18 +++- aiogram/types/inline_query_result_photo.py | 18 +++- aiogram/types/inline_query_result_venue.py | 18 +++- aiogram/types/inline_query_result_video.py | 18 +++- aiogram/types/inline_query_result_voice.py | 18 +++- aiogram/types/message.py | 10 +- .../passport_element_error_data_field.py | 3 +- aiogram/types/passport_element_error_file.py | 3 +- aiogram/types/passport_element_error_files.py | 3 +- .../passport_element_error_front_side.py | 3 +- .../passport_element_error_reverse_side.py | 3 +- .../types/passport_element_error_selfie.py | 3 +- ...passport_element_error_translation_file.py | 5 +- ...assport_element_error_translation_files.py | 5 +- .../passport_element_error_unspecified.py | 3 +- docs/api/enums/encrypted_passport_element.rst | 9 ++ docs/api/enums/index.rst | 2 + .../api/enums/passport_element_error_type.rst | 9 ++ pyproject.toml | 2 +- .../test_methods/test_answer_web_app_query.py | 10 +- .../test_filters/test_chat_member_updated.py | 47 +++++---- 115 files changed, 680 insertions(+), 359 deletions(-) create mode 100644 .butcher/enums/EncryptedPassportElement.yml create mode 100644 .butcher/enums/PassportElementErrorType.yml create mode 100644 .butcher/types/BotCommandScope/subtypes.yml delete mode 100644 .butcher/types/BotCommandScopeAllChatAdministrators/replace.yml delete mode 100644 .butcher/types/BotCommandScopeAllGroupChats/replace.yml delete mode 100644 .butcher/types/BotCommandScopeAllPrivateChats/replace.yml delete mode 100644 .butcher/types/BotCommandScopeChat/replace.yml delete mode 100644 .butcher/types/BotCommandScopeChatAdministrators/replace.yml delete mode 100644 .butcher/types/BotCommandScopeChatMember/replace.yml delete mode 100644 .butcher/types/BotCommandScopeDefault/replace.yml delete mode 100644 .butcher/types/ChatMember/extend.yml create mode 100644 .butcher/types/ChatMember/subtypes.yml delete mode 100644 .butcher/types/ChatMemberAdministrator/replace.yml delete mode 100644 .butcher/types/ChatMemberLeft/replace.yml delete mode 100644 .butcher/types/ChatMemberMember/replace.yml delete mode 100644 .butcher/types/ChatMemberOwner/replace.yml create mode 100644 .butcher/types/InlineQueryResult/subtypes.yml delete mode 100644 .butcher/types/InlineQueryResultArticle/replace.yml delete mode 100644 .butcher/types/InlineQueryResultCachedSticker/replace.yml delete mode 100644 .butcher/types/InlineQueryResultContact/replace.yml delete mode 100644 .butcher/types/InlineQueryResultGame/replace.yml delete mode 100644 .butcher/types/InlineQueryResultLocation/replace.yml delete mode 100644 .butcher/types/InlineQueryResultVenue/replace.yml delete mode 100644 .butcher/types/InputContactMessageContent/replace.yml delete mode 100644 .butcher/types/InputInvoiceMessageContent/replace.yml delete mode 100644 .butcher/types/InputLocationMessageContent/replace.yml create mode 100644 .butcher/types/InputMedia/subtypes.yml create mode 100644 .butcher/types/InputMessageContent/subtypes.yml delete mode 100644 .butcher/types/InputVenueMessageContent/replace.yml create mode 100644 .butcher/types/MenuButton/subtypes.yml delete mode 100644 .butcher/types/MenuButtonCommands/replace.yml delete mode 100644 .butcher/types/MenuButtonDefault/replace.yml delete mode 100644 .butcher/types/MenuButtonWebApp/replace.yml create mode 100644 .butcher/types/PassportElementError/subtypes.yml delete mode 100644 .butcher/types/PassportElementErrorDataField/replace.yml delete mode 100644 .butcher/types/PassportElementErrorFile/replace.yml delete mode 100644 .butcher/types/PassportElementErrorFiles/replace.yml delete mode 100644 .butcher/types/PassportElementErrorFrontSide/replace.yml delete mode 100644 .butcher/types/PassportElementErrorReverseSide/replace.yml delete mode 100644 .butcher/types/PassportElementErrorSelfie/replace.yml delete mode 100644 .butcher/types/PassportElementErrorTranslationFile/replace.yml delete mode 100644 .butcher/types/PassportElementErrorTranslationFiles/replace.yml delete mode 100644 .butcher/types/PassportElementErrorUnspecified/replace.yml create mode 100644 CHANGES/1213.bugfix.rst create mode 100644 aiogram/enums/encrypted_passport_element.py create mode 100644 aiogram/enums/passport_element_error_type.py create mode 100644 docs/api/enums/encrypted_passport_element.rst create mode 100644 docs/api/enums/passport_element_error_type.rst diff --git a/.butcher/enums/EncryptedPassportElement.yml b/.butcher/enums/EncryptedPassportElement.yml new file mode 100644 index 00000000..e0540d7f --- /dev/null +++ b/.butcher/enums/EncryptedPassportElement.yml @@ -0,0 +1,10 @@ +name: EncryptedPassportElement +description: | + This object represents type of encrypted passport element. + + Source: https://core.telegram.org/bots/api#encryptedpassportelement +parse: + entity: EncryptedPassportElement + category: types + attribute: type + regexp: "'([a-z_]+)'" diff --git a/.butcher/enums/PassportElementErrorType.yml b/.butcher/enums/PassportElementErrorType.yml new file mode 100644 index 00000000..d5d52aeb --- /dev/null +++ b/.butcher/enums/PassportElementErrorType.yml @@ -0,0 +1,18 @@ +name: PassportElementErrorType +description: | + This object represents a passport element error type. + + Source: https://core.telegram.org/bots/api#passportelementerror +multi_parse: + attribute: source + regexp: 'must be ([a-z_]+)' + entities: + - PassportElementErrorDataField + - PassportElementErrorFrontSide + - PassportElementErrorReverseSide + - PassportElementErrorSelfie + - PassportElementErrorFile + - PassportElementErrorFiles + - PassportElementErrorTranslationFile + - PassportElementErrorTranslationFiles + - PassportElementErrorUnspecified diff --git a/.butcher/types/BotCommandScope/subtypes.yml b/.butcher/types/BotCommandScope/subtypes.yml new file mode 100644 index 00000000..6756ad51 --- /dev/null +++ b/.butcher/types/BotCommandScope/subtypes.yml @@ -0,0 +1 @@ +discriminator: "type" diff --git a/.butcher/types/BotCommandScopeAllChatAdministrators/replace.yml b/.butcher/types/BotCommandScopeAllChatAdministrators/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeAllChatAdministrators/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeAllGroupChats/replace.yml b/.butcher/types/BotCommandScopeAllGroupChats/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeAllGroupChats/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeAllPrivateChats/replace.yml b/.butcher/types/BotCommandScopeAllPrivateChats/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeAllPrivateChats/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeChat/replace.yml b/.butcher/types/BotCommandScopeChat/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeChat/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeChatAdministrators/replace.yml b/.butcher/types/BotCommandScopeChatAdministrators/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeChatAdministrators/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeChatMember/replace.yml b/.butcher/types/BotCommandScopeChatMember/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeChatMember/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/BotCommandScopeDefault/replace.yml b/.butcher/types/BotCommandScopeDefault/replace.yml deleted file mode 100644 index ddb65490..00000000 --- a/.butcher/types/BotCommandScopeDefault/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - BotCommandScope diff --git a/.butcher/types/ChatMember/extend.yml b/.butcher/types/ChatMember/extend.yml deleted file mode 100644 index 01ef4960..00000000 --- a/.butcher/types/ChatMember/extend.yml +++ /dev/null @@ -1,27 +0,0 @@ -define: - - type: "String" - description: "The member's status in the chat" - html_description: "The member's status in the chat" - rst_description: "The member's status in the chat" - name: "status" - required: true - -clone: - - ChatMemberOwner: - exclude: - - status - - ChatMemberAdministrator: - exclude: - - status - - ChatMemberMember: - exclude: - - status - - ChatMemberRestricted: - exclude: - - status - - ChatMemberLeft: - exclude: - - status - - ChatMemberBanned: - exclude: - - status diff --git a/.butcher/types/ChatMember/subtypes.yml b/.butcher/types/ChatMember/subtypes.yml new file mode 100644 index 00000000..95832398 --- /dev/null +++ b/.butcher/types/ChatMember/subtypes.yml @@ -0,0 +1 @@ +discriminator: "status" diff --git a/.butcher/types/ChatMemberAdministrator/replace.yml b/.butcher/types/ChatMemberAdministrator/replace.yml deleted file mode 100644 index 619942cd..00000000 --- a/.butcher/types/ChatMemberAdministrator/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - ChatMember diff --git a/.butcher/types/ChatMemberBanned/replace.yml b/.butcher/types/ChatMemberBanned/replace.yml index 6a3882af..0af85473 100644 --- a/.butcher/types/ChatMemberBanned/replace.yml +++ b/.butcher/types/ChatMemberBanned/replace.yml @@ -1,5 +1,3 @@ -bases: - - ChatMember annotations: until_date: parsed_type: diff --git a/.butcher/types/ChatMemberLeft/replace.yml b/.butcher/types/ChatMemberLeft/replace.yml deleted file mode 100644 index 619942cd..00000000 --- a/.butcher/types/ChatMemberLeft/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - ChatMember diff --git a/.butcher/types/ChatMemberMember/replace.yml b/.butcher/types/ChatMemberMember/replace.yml deleted file mode 100644 index 619942cd..00000000 --- a/.butcher/types/ChatMemberMember/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - ChatMember diff --git a/.butcher/types/ChatMemberOwner/replace.yml b/.butcher/types/ChatMemberOwner/replace.yml deleted file mode 100644 index 619942cd..00000000 --- a/.butcher/types/ChatMemberOwner/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - ChatMember diff --git a/.butcher/types/ChatMemberRestricted/replace.yml b/.butcher/types/ChatMemberRestricted/replace.yml index 6a3882af..0af85473 100644 --- a/.butcher/types/ChatMemberRestricted/replace.yml +++ b/.butcher/types/ChatMemberRestricted/replace.yml @@ -1,5 +1,3 @@ -bases: - - ChatMember annotations: until_date: parsed_type: diff --git a/.butcher/types/ChatMemberUpdated/replace.yml b/.butcher/types/ChatMemberUpdated/replace.yml index 66c1b64c..9a3a2842 100644 --- a/.butcher/types/ChatMemberUpdated/replace.yml +++ b/.butcher/types/ChatMemberUpdated/replace.yml @@ -3,32 +3,3 @@ annotations: parsed_type: type: std name: datetime.datetime - old_chat_member: &chat-member-type - parsed_type: - type: union - items: - - type: entity - references: - category: types - name: ChatMemberOwner - - type: entity - references: - category: types - name: ChatMemberAdministrator - - type: entity - references: - category: types - name: ChatMemberMember - - type: entity - references: - category: types - name: ChatMemberRestricted - - type: entity - references: - category: types - name: ChatMemberLeft - - type: entity - references: - category: types - name: ChatMemberBanned - new_chat_member: *chat-member-type diff --git a/.butcher/types/InlineQueryResult/subtypes.yml b/.butcher/types/InlineQueryResult/subtypes.yml new file mode 100644 index 00000000..6756ad51 --- /dev/null +++ b/.butcher/types/InlineQueryResult/subtypes.yml @@ -0,0 +1 @@ +discriminator: "type" diff --git a/.butcher/types/InlineQueryResultArticle/replace.yml b/.butcher/types/InlineQueryResultArticle/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultArticle/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultAudio/replace.yml b/.butcher/types/InlineQueryResultAudio/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultAudio/replace.yml +++ b/.butcher/types/InlineQueryResultAudio/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedAudio/replace.yml b/.butcher/types/InlineQueryResultCachedAudio/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedAudio/replace.yml +++ b/.butcher/types/InlineQueryResultCachedAudio/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedDocument/replace.yml b/.butcher/types/InlineQueryResultCachedDocument/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedDocument/replace.yml +++ b/.butcher/types/InlineQueryResultCachedDocument/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedGif/replace.yml b/.butcher/types/InlineQueryResultCachedGif/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedGif/replace.yml +++ b/.butcher/types/InlineQueryResultCachedGif/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedMpeg4Gif/replace.yml b/.butcher/types/InlineQueryResultCachedMpeg4Gif/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedMpeg4Gif/replace.yml +++ b/.butcher/types/InlineQueryResultCachedMpeg4Gif/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedPhoto/replace.yml b/.butcher/types/InlineQueryResultCachedPhoto/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedPhoto/replace.yml +++ b/.butcher/types/InlineQueryResultCachedPhoto/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedSticker/replace.yml b/.butcher/types/InlineQueryResultCachedSticker/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultCachedSticker/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultCachedVideo/replace.yml b/.butcher/types/InlineQueryResultCachedVideo/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedVideo/replace.yml +++ b/.butcher/types/InlineQueryResultCachedVideo/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultCachedVoice/replace.yml b/.butcher/types/InlineQueryResultCachedVoice/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultCachedVoice/replace.yml +++ b/.butcher/types/InlineQueryResultCachedVoice/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultContact/replace.yml b/.butcher/types/InlineQueryResultContact/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultContact/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultDocument/replace.yml b/.butcher/types/InlineQueryResultDocument/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultDocument/replace.yml +++ b/.butcher/types/InlineQueryResultDocument/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultGame/replace.yml b/.butcher/types/InlineQueryResultGame/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultGame/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultGif/replace.yml b/.butcher/types/InlineQueryResultGif/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultGif/replace.yml +++ b/.butcher/types/InlineQueryResultGif/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultLocation/replace.yml b/.butcher/types/InlineQueryResultLocation/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultLocation/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultMpeg4Gif/replace.yml b/.butcher/types/InlineQueryResultMpeg4Gif/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultMpeg4Gif/replace.yml +++ b/.butcher/types/InlineQueryResultMpeg4Gif/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultPhoto/replace.yml b/.butcher/types/InlineQueryResultPhoto/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultPhoto/replace.yml +++ b/.butcher/types/InlineQueryResultPhoto/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultVenue/replace.yml b/.butcher/types/InlineQueryResultVenue/replace.yml deleted file mode 100644 index cbe6bc26..00000000 --- a/.butcher/types/InlineQueryResultVenue/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InlineQueryResult diff --git a/.butcher/types/InlineQueryResultVideo/replace.yml b/.butcher/types/InlineQueryResultVideo/replace.yml index cd89306d..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultVideo/replace.yml +++ b/.butcher/types/InlineQueryResultVideo/replace.yml @@ -1,6 +1,3 @@ -bases: - - InlineQueryResult - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InlineQueryResultVoice/replace.yml b/.butcher/types/InlineQueryResultVoice/replace.yml index 6c32c60f..e87fb9b3 100644 --- a/.butcher/types/InlineQueryResultVoice/replace.yml +++ b/.butcher/types/InlineQueryResultVoice/replace.yml @@ -1,5 +1,3 @@ -bases: - - InlineQueryResult annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InputContactMessageContent/replace.yml b/.butcher/types/InputContactMessageContent/replace.yml deleted file mode 100644 index 29166299..00000000 --- a/.butcher/types/InputContactMessageContent/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InputMessageContent diff --git a/.butcher/types/InputInvoiceMessageContent/replace.yml b/.butcher/types/InputInvoiceMessageContent/replace.yml deleted file mode 100644 index 29166299..00000000 --- a/.butcher/types/InputInvoiceMessageContent/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InputMessageContent diff --git a/.butcher/types/InputLocationMessageContent/replace.yml b/.butcher/types/InputLocationMessageContent/replace.yml deleted file mode 100644 index 29166299..00000000 --- a/.butcher/types/InputLocationMessageContent/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InputMessageContent diff --git a/.butcher/types/InputMedia/subtypes.yml b/.butcher/types/InputMedia/subtypes.yml new file mode 100644 index 00000000..6756ad51 --- /dev/null +++ b/.butcher/types/InputMedia/subtypes.yml @@ -0,0 +1 @@ +discriminator: "type" diff --git a/.butcher/types/InputMediaAnimation/replace.yml b/.butcher/types/InputMediaAnimation/replace.yml index a2756429..be3f441b 100644 --- a/.butcher/types/InputMediaAnimation/replace.yml +++ b/.butcher/types/InputMediaAnimation/replace.yml @@ -1,5 +1,3 @@ -bases: - - InputMedia annotations: media: parsed_type: diff --git a/.butcher/types/InputMediaAudio/replace.yml b/.butcher/types/InputMediaAudio/replace.yml index a2756429..be3f441b 100644 --- a/.butcher/types/InputMediaAudio/replace.yml +++ b/.butcher/types/InputMediaAudio/replace.yml @@ -1,5 +1,3 @@ -bases: - - InputMedia annotations: media: parsed_type: diff --git a/.butcher/types/InputMediaDocument/replace.yml b/.butcher/types/InputMediaDocument/replace.yml index a2756429..be3f441b 100644 --- a/.butcher/types/InputMediaDocument/replace.yml +++ b/.butcher/types/InputMediaDocument/replace.yml @@ -1,5 +1,3 @@ -bases: - - InputMedia annotations: media: parsed_type: diff --git a/.butcher/types/InputMediaPhoto/replace.yml b/.butcher/types/InputMediaPhoto/replace.yml index a2756429..be3f441b 100644 --- a/.butcher/types/InputMediaPhoto/replace.yml +++ b/.butcher/types/InputMediaPhoto/replace.yml @@ -1,5 +1,3 @@ -bases: - - InputMedia annotations: media: parsed_type: diff --git a/.butcher/types/InputMediaVideo/replace.yml b/.butcher/types/InputMediaVideo/replace.yml index a2756429..be3f441b 100644 --- a/.butcher/types/InputMediaVideo/replace.yml +++ b/.butcher/types/InputMediaVideo/replace.yml @@ -1,5 +1,3 @@ -bases: - - InputMedia annotations: media: parsed_type: diff --git a/.butcher/types/InputMessageContent/subtypes.yml b/.butcher/types/InputMessageContent/subtypes.yml new file mode 100644 index 00000000..ffcd4415 --- /dev/null +++ b/.butcher/types/InputMessageContent/subtypes.yml @@ -0,0 +1 @@ +{ } diff --git a/.butcher/types/InputTextMessageContent/replace.yml b/.butcher/types/InputTextMessageContent/replace.yml index 63741e83..ebc1d7e9 100644 --- a/.butcher/types/InputTextMessageContent/replace.yml +++ b/.butcher/types/InputTextMessageContent/replace.yml @@ -1,6 +1,3 @@ -bases: - - InputMessageContent - annotations: parse_mode: value: UNSET_PARSE_MODE diff --git a/.butcher/types/InputVenueMessageContent/replace.yml b/.butcher/types/InputVenueMessageContent/replace.yml deleted file mode 100644 index 29166299..00000000 --- a/.butcher/types/InputVenueMessageContent/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - InputMessageContent diff --git a/.butcher/types/MenuButton/subtypes.yml b/.butcher/types/MenuButton/subtypes.yml new file mode 100644 index 00000000..6756ad51 --- /dev/null +++ b/.butcher/types/MenuButton/subtypes.yml @@ -0,0 +1 @@ +discriminator: "type" diff --git a/.butcher/types/MenuButtonCommands/replace.yml b/.butcher/types/MenuButtonCommands/replace.yml deleted file mode 100644 index cc566462..00000000 --- a/.butcher/types/MenuButtonCommands/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - MenuButton diff --git a/.butcher/types/MenuButtonDefault/replace.yml b/.butcher/types/MenuButtonDefault/replace.yml deleted file mode 100644 index cc566462..00000000 --- a/.butcher/types/MenuButtonDefault/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - MenuButton diff --git a/.butcher/types/MenuButtonWebApp/replace.yml b/.butcher/types/MenuButtonWebApp/replace.yml deleted file mode 100644 index cc566462..00000000 --- a/.butcher/types/MenuButtonWebApp/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - MenuButton diff --git a/.butcher/types/PassportElementError/subtypes.yml b/.butcher/types/PassportElementError/subtypes.yml new file mode 100644 index 00000000..fd3f58ea --- /dev/null +++ b/.butcher/types/PassportElementError/subtypes.yml @@ -0,0 +1 @@ +discriminator: "source" diff --git a/.butcher/types/PassportElementErrorDataField/replace.yml b/.butcher/types/PassportElementErrorDataField/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorDataField/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorFile/replace.yml b/.butcher/types/PassportElementErrorFile/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorFile/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorFiles/replace.yml b/.butcher/types/PassportElementErrorFiles/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorFiles/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorFrontSide/replace.yml b/.butcher/types/PassportElementErrorFrontSide/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorFrontSide/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorReverseSide/replace.yml b/.butcher/types/PassportElementErrorReverseSide/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorReverseSide/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorSelfie/replace.yml b/.butcher/types/PassportElementErrorSelfie/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorSelfie/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorTranslationFile/replace.yml b/.butcher/types/PassportElementErrorTranslationFile/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorTranslationFile/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorTranslationFiles/replace.yml b/.butcher/types/PassportElementErrorTranslationFiles/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorTranslationFiles/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/.butcher/types/PassportElementErrorUnspecified/replace.yml b/.butcher/types/PassportElementErrorUnspecified/replace.yml deleted file mode 100644 index 105b390f..00000000 --- a/.butcher/types/PassportElementErrorUnspecified/replace.yml +++ /dev/null @@ -1,2 +0,0 @@ -bases: - - PassportElementError diff --git a/CHANGES/1213.bugfix.rst b/CHANGES/1213.bugfix.rst new file mode 100644 index 00000000..a9787889 --- /dev/null +++ b/CHANGES/1213.bugfix.rst @@ -0,0 +1,7 @@ +Fixed the serialization error associated with nested subtypes +like InputMedia, ChatMember, etc. + +The previously generated code resulted in an invalid schema under pydantic v2, +which has stricter type parsing. +Hence, subtypes without the specification of all subtype unions were generating +an empty object. This has been rectified now. diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index a5258eaa..b7604390 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -141,6 +141,13 @@ from ..types import ( UNSET_PARSE_MODE, BotCommand, BotCommandScope, + BotCommandScopeAllChatAdministrators, + BotCommandScopeAllGroupChats, + BotCommandScopeAllPrivateChats, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + BotCommandScopeDefault, BotDescription, BotName, BotShortDescription, @@ -161,9 +168,30 @@ from ..types import ( GameHighScore, InlineKeyboardMarkup, InlineQueryResult, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultContact, + InlineQueryResultDocument, + InlineQueryResultGame, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, InlineQueryResultsButton, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, InputFile, InputMedia, + InputMediaAnimation, InputMediaAudio, InputMediaDocument, InputMediaPhoto, @@ -579,7 +607,28 @@ class Bot(ContextInstanceMixin["Bot"]): async def answer_web_app_query( self, web_app_query_id: str, - result: InlineQueryResult, + result: Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ], request_timeout: Optional[int] = None, ) -> SentWebAppMessage: """ @@ -1073,7 +1122,17 @@ class Bot(ContextInstanceMixin["Bot"]): async def delete_my_commands( self, - scope: Optional[BotCommandScope] = None, + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, language_code: Optional[str] = None, request_timeout: Optional[int] = None, ) -> bool: @@ -1282,7 +1341,13 @@ class Bot(ContextInstanceMixin["Bot"]): async def edit_message_media( self, - media: InputMedia, + media: Union[ + InputMediaAnimation, + InputMediaDocument, + InputMediaAudio, + InputMediaPhoto, + InputMediaVideo, + ], chat_id: Optional[Union[int, str]] = None, message_id: Optional[int] = None, inline_message_id: Optional[str] = None, @@ -1664,7 +1729,17 @@ class Bot(ContextInstanceMixin["Bot"]): async def get_my_commands( self, - scope: Optional[BotCommandScope] = None, + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, language_code: Optional[str] = None, request_timeout: Optional[int] = None, ) -> List[BotCommand]: @@ -3077,7 +3152,7 @@ class Bot(ContextInstanceMixin["Bot"]): self, chat_id: Optional[int] = None, menu_button: Optional[ - Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands] + Union[MenuButtonCommands, MenuButtonWebApp, MenuButtonDefault] ] = None, request_timeout: Optional[int] = None, ) -> bool: @@ -3234,7 +3309,17 @@ class Bot(ContextInstanceMixin["Bot"]): async def set_my_commands( self, commands: List[BotCommand], - scope: Optional[BotCommandScope] = None, + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, language_code: Optional[str] = None, request_timeout: Optional[int] = None, ) -> bool: diff --git a/aiogram/client/context_controller.py b/aiogram/client/context_controller.py index d2402018..530c1555 100644 --- a/aiogram/client/context_controller.py +++ b/aiogram/client/context_controller.py @@ -11,10 +11,7 @@ class BotContextController(BaseModel): _bot: Optional["Bot"] = PrivateAttr() def model_post_init(self, __context: Any) -> None: - if not __context: - self._bot = None - else: - self._bot = __context.get("bot") + self._bot = __context.get("bot") if __context else None def as_(self, bot: Optional["Bot"]) -> Self: """ diff --git a/aiogram/enums/__init__.py b/aiogram/enums/__init__.py index 73422378..ab49c599 100644 --- a/aiogram/enums/__init__.py +++ b/aiogram/enums/__init__.py @@ -4,12 +4,14 @@ from .chat_member_status import ChatMemberStatus from .chat_type import ChatType from .content_type import ContentType from .dice_emoji import DiceEmoji +from .encrypted_passport_element import EncryptedPassportElement from .inline_query_result_type import InlineQueryResultType from .input_media_type import InputMediaType from .mask_position_point import MaskPositionPoint from .menu_button_type import MenuButtonType from .message_entity_type import MessageEntityType from .parse_mode import ParseMode +from .passport_element_error_type import PassportElementErrorType from .poll_type import PollType from .sticker_format import StickerFormat from .sticker_type import StickerType @@ -23,12 +25,14 @@ __all__ = ( "ChatType", "ContentType", "DiceEmoji", + "EncryptedPassportElement", "InlineQueryResultType", "InputMediaType", "MaskPositionPoint", "MenuButtonType", "MessageEntityType", "ParseMode", + "PassportElementErrorType", "PollType", "StickerFormat", "StickerType", diff --git a/aiogram/enums/encrypted_passport_element.py b/aiogram/enums/encrypted_passport_element.py new file mode 100644 index 00000000..ebb4b2e6 --- /dev/null +++ b/aiogram/enums/encrypted_passport_element.py @@ -0,0 +1,23 @@ +from enum import Enum + + +class EncryptedPassportElement(str, Enum): + """ + This object represents type of encrypted passport element. + + Source: https://core.telegram.org/bots/api#encryptedpassportelement + """ + + PERSONAL_DETAILS = "personal_details" + PASSPORT = "passport" + DRIVER_LICENSE = "driver_license" + IDENTITY_CARD = "identity_card" + INTERNAL_PASSPORT = "internal_passport" + ADDRESS = "address" + UTILITY_BILL = "utility_bill" + BANK_STATEMENT = "bank_statement" + RENTAL_AGREEMENT = "rental_agreement" + PASSPORT_REGISTRATION = "passport_registration" + TEMPORARY_REGISTRATION = "temporary_registration" + PHONE_NUMBER = "phone_number" + EMAIL = "email" diff --git a/aiogram/enums/passport_element_error_type.py b/aiogram/enums/passport_element_error_type.py new file mode 100644 index 00000000..cdcb4806 --- /dev/null +++ b/aiogram/enums/passport_element_error_type.py @@ -0,0 +1,19 @@ +from enum import Enum + + +class PassportElementErrorType(str, Enum): + """ + This object represents a passport element error type. + + Source: https://core.telegram.org/bots/api#passportelementerror + """ + + DATA = "data" + FRONT_SIDE = "front_side" + REVERSE_SIDE = "reverse_side" + SELFIE = "selfie" + FILE = "file" + FILES = "files" + TRANSLATION_FILE = "translation_file" + TRANSLATION_FILES = "translation_files" + UNSPECIFIED = "unspecified" diff --git a/aiogram/filters/chat_member_updated.py b/aiogram/filters/chat_member_updated.py index 7671ba4e..23cf0e9c 100644 --- a/aiogram/filters/chat_member_updated.py +++ b/aiogram/filters/chat_member_updated.py @@ -74,9 +74,12 @@ class _MemberStatusMarker: return hash((self.name, self.is_member)) def check(self, *, member: ChatMember) -> bool: - if self.is_member is not None and member.is_member != self.is_member: + # Not all member types have `is_member` attribute + is_member = getattr(member, "is_member", None) + status = getattr(member, "status", None) + if self.is_member is not None and is_member != self.is_member: return False - return self.name == member.status + return self.name == status class _MemberStatusGroupMarker: diff --git a/aiogram/methods/answer_web_app_query.py b/aiogram/methods/answer_web_app_query.py index 8bb1abc8..23def3e4 100644 --- a/aiogram/methods/answer_web_app_query.py +++ b/aiogram/methods/answer_web_app_query.py @@ -1,6 +1,30 @@ from __future__ import annotations -from ..types import InlineQueryResult, SentWebAppMessage +from typing import Union + +from ..types import ( + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultContact, + InlineQueryResultDocument, + InlineQueryResultGame, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + SentWebAppMessage, +) from .base import TelegramMethod @@ -16,5 +40,26 @@ class AnswerWebAppQuery(TelegramMethod[SentWebAppMessage]): web_app_query_id: str """Unique identifier for the query to be answered""" - result: InlineQueryResult + result: Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ] """A JSON-serialized object describing the message to be sent""" diff --git a/aiogram/methods/delete_my_commands.py b/aiogram/methods/delete_my_commands.py index 5fc1044e..cd91b7e7 100644 --- a/aiogram/methods/delete_my_commands.py +++ b/aiogram/methods/delete_my_commands.py @@ -1,8 +1,16 @@ from __future__ import annotations -from typing import Optional +from typing import Optional, Union -from ..types import BotCommandScope +from ..types import ( + BotCommandScopeAllChatAdministrators, + BotCommandScopeAllGroupChats, + BotCommandScopeAllPrivateChats, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + BotCommandScopeDefault, +) from .base import TelegramMethod @@ -16,7 +24,17 @@ class DeleteMyCommands(TelegramMethod[bool]): __returning__ = bool __api_method__ = "deleteMyCommands" - scope: Optional[BotCommandScope] = None + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None """A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """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""" diff --git a/aiogram/methods/edit_message_media.py b/aiogram/methods/edit_message_media.py index f6ab0166..5d006146 100644 --- a/aiogram/methods/edit_message_media.py +++ b/aiogram/methods/edit_message_media.py @@ -2,7 +2,15 @@ from __future__ import annotations from typing import Optional, Union -from ..types import InlineKeyboardMarkup, InputMedia, Message +from ..types import ( + InlineKeyboardMarkup, + InputMediaAnimation, + InputMediaAudio, + InputMediaDocument, + InputMediaPhoto, + InputMediaVideo, + Message, +) from .base import TelegramMethod @@ -16,7 +24,9 @@ class EditMessageMedia(TelegramMethod[Union[Message, bool]]): __returning__ = Union[Message, bool] __api_method__ = "editMessageMedia" - media: InputMedia + media: Union[ + InputMediaAnimation, InputMediaDocument, InputMediaAudio, InputMediaPhoto, InputMediaVideo + ] """A JSON-serialized object for a new media content of the message""" chat_id: Optional[Union[int, str]] = None """Required if *inline_message_id* is not specified. Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" diff --git a/aiogram/methods/get_my_commands.py b/aiogram/methods/get_my_commands.py index 9d4a696f..4be74e21 100644 --- a/aiogram/methods/get_my_commands.py +++ b/aiogram/methods/get_my_commands.py @@ -1,8 +1,17 @@ from __future__ import annotations -from typing import List, Optional +from typing import List, Optional, Union -from ..types import BotCommand, BotCommandScope +from ..types import ( + BotCommand, + BotCommandScopeAllChatAdministrators, + BotCommandScopeAllGroupChats, + BotCommandScopeAllPrivateChats, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + BotCommandScopeDefault, +) from .base import TelegramMethod @@ -16,7 +25,17 @@ class GetMyCommands(TelegramMethod[List[BotCommand]]): __returning__ = List[BotCommand] __api_method__ = "getMyCommands" - scope: Optional[BotCommandScope] = None + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None """A JSON-serialized object, describing scope of users. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """A two-letter ISO 639-1 language code or an empty string""" diff --git a/aiogram/methods/set_chat_menu_button.py b/aiogram/methods/set_chat_menu_button.py index 4fdd086b..9cbd019b 100644 --- a/aiogram/methods/set_chat_menu_button.py +++ b/aiogram/methods/set_chat_menu_button.py @@ -18,5 +18,5 @@ class SetChatMenuButton(TelegramMethod[bool]): chat_id: Optional[int] = None """Unique identifier for the target private chat. If not specified, default bot's menu button will be changed""" - menu_button: Optional[Union[MenuButtonDefault, MenuButtonWebApp, MenuButtonCommands]] = None + menu_button: Optional[Union[MenuButtonCommands, MenuButtonWebApp, MenuButtonDefault]] = None """A JSON-serialized object for the bot's new menu button. Defaults to :class:`aiogram.types.menu_button_default.MenuButtonDefault`""" diff --git a/aiogram/methods/set_my_commands.py b/aiogram/methods/set_my_commands.py index c668852d..3aff027f 100644 --- a/aiogram/methods/set_my_commands.py +++ b/aiogram/methods/set_my_commands.py @@ -1,8 +1,17 @@ from __future__ import annotations -from typing import List, Optional +from typing import List, Optional, Union -from ..types import BotCommand, BotCommandScope +from ..types import ( + BotCommand, + BotCommandScopeAllChatAdministrators, + BotCommandScopeAllGroupChats, + BotCommandScopeAllPrivateChats, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + BotCommandScopeDefault, +) from .base import TelegramMethod @@ -18,7 +27,17 @@ class SetMyCommands(TelegramMethod[bool]): commands: List[BotCommand] """A JSON-serialized list of bot commands to be set as the list of the bot's commands. At most 100 commands can be specified.""" - scope: Optional[BotCommandScope] = None + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None """A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """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""" diff --git a/aiogram/types/chat_member.py b/aiogram/types/chat_member.py index 6bf5b79e..018bebda 100644 --- a/aiogram/types/chat_member.py +++ b/aiogram/types/chat_member.py @@ -1,13 +1,7 @@ from __future__ import annotations -import datetime -from typing import TYPE_CHECKING, Optional - from .base import TelegramObject -if TYPE_CHECKING: - from .user import User - class ChatMember(TelegramObject): """ @@ -22,60 +16,3 @@ class ChatMember(TelegramObject): Source: https://core.telegram.org/bots/api#chatmember """ - - status: str - """The member's status in the chat""" - user: Optional[User] = None - """*Optional*. Information about the user""" - is_anonymous: Optional[bool] = None - """*Optional*. :code:`True`, if the user's presence in the chat is hidden""" - custom_title: Optional[str] = None - """*Optional*. Custom title for this user""" - can_be_edited: Optional[bool] = None - """*Optional*. :code:`True`, if the bot is allowed to edit administrator privileges of that user""" - can_manage_chat: Optional[bool] = None - """*Optional*. :code:`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""" - can_delete_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can delete messages of other users""" - can_manage_video_chats: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can manage video chats""" - can_restrict_members: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can restrict, ban or unban chat members""" - can_promote_members: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by the user)""" - can_change_info: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to change the chat title, photo and other settings""" - can_invite_users: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to invite new users to the chat""" - can_post_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can post in the channel; channels only""" - can_edit_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only""" - can_pin_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only""" - can_manage_topics: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" - is_member: Optional[bool] = None - """*Optional*. :code:`True`, if the user is a member of the chat at the moment of the request""" - can_send_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send text messages, contacts, invoices, locations and venues""" - can_send_audios: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send audios""" - can_send_documents: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send documents""" - can_send_photos: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send photos""" - can_send_videos: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send videos""" - can_send_video_notes: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send video notes""" - can_send_voice_notes: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send voice notes""" - can_send_polls: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send polls""" - can_send_other_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to send animations, games, stickers and use inline bots""" - can_add_web_page_previews: Optional[bool] = None - """*Optional*. :code:`True`, if the user is allowed to add web page previews to their messages""" - until_date: Optional[datetime.datetime] = None - """*Optional*. Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever""" diff --git a/aiogram/types/inline_query_result_article.py b/aiogram/types/inline_query_result_article.py index be084aed..42c11782 100644 --- a/aiogram/types/inline_query_result_article.py +++ b/aiogram/types/inline_query_result_article.py @@ -1,13 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent class InlineQueryResultArticle(InlineQueryResult): @@ -23,7 +27,13 @@ class InlineQueryResultArticle(InlineQueryResult): """Unique identifier for this result, 1-64 Bytes""" title: str """Title of the result""" - input_message_content: InputMessageContent + input_message_content: Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] """Content of the message to be sent""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" diff --git a/aiogram/types/inline_query_result_audio.py b/aiogram/types/inline_query_result_audio.py index 74cea130..c57b0b72 100644 --- a/aiogram/types/inline_query_result_audio.py +++ b/aiogram/types/inline_query_result_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -40,5 +44,13 @@ class InlineQueryResultAudio(InlineQueryResult): """*Optional*. Audio duration in seconds""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the audio""" diff --git a/aiogram/types/inline_query_result_cached_audio.py b/aiogram/types/inline_query_result_cached_audio.py index 8d4819cc..6f0a73f1 100644 --- a/aiogram/types/inline_query_result_cached_audio.py +++ b/aiogram/types/inline_query_result_cached_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -34,5 +38,13 @@ class InlineQueryResultCachedAudio(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the audio""" diff --git a/aiogram/types/inline_query_result_cached_document.py b/aiogram/types/inline_query_result_cached_document.py index cedb45a8..ccb28196 100644 --- a/aiogram/types/inline_query_result_cached_document.py +++ b/aiogram/types/inline_query_result_cached_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -38,5 +42,13 @@ class InlineQueryResultCachedDocument(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the file""" diff --git a/aiogram/types/inline_query_result_cached_gif.py b/aiogram/types/inline_query_result_cached_gif.py index acbcb6fa..f8ef40a6 100644 --- a/aiogram/types/inline_query_result_cached_gif.py +++ b/aiogram/types/inline_query_result_cached_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -35,5 +39,13 @@ class InlineQueryResultCachedGif(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the GIF animation""" diff --git a/aiogram/types/inline_query_result_cached_mpeg4_gif.py b/aiogram/types/inline_query_result_cached_mpeg4_gif.py index f9605d68..09cc0db8 100644 --- a/aiogram/types/inline_query_result_cached_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_cached_mpeg4_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -35,5 +39,13 @@ class InlineQueryResultCachedMpeg4Gif(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the video animation""" diff --git a/aiogram/types/inline_query_result_cached_photo.py b/aiogram/types/inline_query_result_cached_photo.py index 96b6d208..b72ac656 100644 --- a/aiogram/types/inline_query_result_cached_photo.py +++ b/aiogram/types/inline_query_result_cached_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -37,5 +41,13 @@ class InlineQueryResultCachedPhoto(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the photo""" diff --git a/aiogram/types/inline_query_result_cached_sticker.py b/aiogram/types/inline_query_result_cached_sticker.py index 27f95c09..beaab093 100644 --- a/aiogram/types/inline_query_result_cached_sticker.py +++ b/aiogram/types/inline_query_result_cached_sticker.py @@ -1,13 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent class InlineQueryResultCachedSticker(InlineQueryResult): @@ -26,5 +30,13 @@ class InlineQueryResultCachedSticker(InlineQueryResult): """A valid file identifier of the sticker""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the sticker""" diff --git a/aiogram/types/inline_query_result_cached_video.py b/aiogram/types/inline_query_result_cached_video.py index c1afd26e..f522bc24 100644 --- a/aiogram/types/inline_query_result_cached_video.py +++ b/aiogram/types/inline_query_result_cached_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -37,5 +41,13 @@ class InlineQueryResultCachedVideo(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the video""" diff --git a/aiogram/types/inline_query_result_cached_voice.py b/aiogram/types/inline_query_result_cached_voice.py index 354b6f39..7c2b0a44 100644 --- a/aiogram/types/inline_query_result_cached_voice.py +++ b/aiogram/types/inline_query_result_cached_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -36,5 +40,13 @@ class InlineQueryResultCachedVoice(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the voice message""" diff --git a/aiogram/types/inline_query_result_contact.py b/aiogram/types/inline_query_result_contact.py index 121dfba9..aa2fc8c5 100644 --- a/aiogram/types/inline_query_result_contact.py +++ b/aiogram/types/inline_query_result_contact.py @@ -1,13 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent class InlineQueryResultContact(InlineQueryResult): @@ -32,7 +36,15 @@ class InlineQueryResultContact(InlineQueryResult): """*Optional*. Additional data about the contact in the form of a `vCard `_, 0-2048 bytes""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the contact""" thumbnail_url: Optional[str] = None """*Optional*. Url of the thumbnail for the result""" diff --git a/aiogram/types/inline_query_result_document.py b/aiogram/types/inline_query_result_document.py index 13a4e7c5..102aaf24 100644 --- a/aiogram/types/inline_query_result_document.py +++ b/aiogram/types/inline_query_result_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -40,7 +44,15 @@ class InlineQueryResultDocument(InlineQueryResult): """*Optional*. Short description of the result""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. Inline keyboard attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the file""" thumbnail_url: Optional[str] = None """*Optional*. URL of the thumbnail (JPEG only) for the file""" diff --git a/aiogram/types/inline_query_result_gif.py b/aiogram/types/inline_query_result_gif.py index 1120369f..e3b85fe2 100644 --- a/aiogram/types/inline_query_result_gif.py +++ b/aiogram/types/inline_query_result_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -45,5 +49,13 @@ class InlineQueryResultGif(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the GIF animation""" diff --git a/aiogram/types/inline_query_result_location.py b/aiogram/types/inline_query_result_location.py index 1dbda6a8..4948a67c 100644 --- a/aiogram/types/inline_query_result_location.py +++ b/aiogram/types/inline_query_result_location.py @@ -1,13 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent class InlineQueryResultLocation(InlineQueryResult): @@ -38,7 +42,15 @@ class InlineQueryResultLocation(InlineQueryResult): """*Optional*. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the location""" thumbnail_url: Optional[str] = None """*Optional*. Url of the thumbnail for the result""" diff --git a/aiogram/types/inline_query_result_mpeg4_gif.py b/aiogram/types/inline_query_result_mpeg4_gif.py index d14491c6..9d475af3 100644 --- a/aiogram/types/inline_query_result_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_mpeg4_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -45,5 +49,13 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the video animation""" diff --git a/aiogram/types/inline_query_result_photo.py b/aiogram/types/inline_query_result_photo.py index 086118f0..35a9d996 100644 --- a/aiogram/types/inline_query_result_photo.py +++ b/aiogram/types/inline_query_result_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -43,5 +47,13 @@ class InlineQueryResultPhoto(InlineQueryResult): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the photo""" diff --git a/aiogram/types/inline_query_result_venue.py b/aiogram/types/inline_query_result_venue.py index 6f0aeb66..65841255 100644 --- a/aiogram/types/inline_query_result_venue.py +++ b/aiogram/types/inline_query_result_venue.py @@ -1,13 +1,17 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent class InlineQueryResultVenue(InlineQueryResult): @@ -40,7 +44,15 @@ class InlineQueryResultVenue(InlineQueryResult): """*Optional*. Google Places type of the venue. (See `supported types `_.)""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the venue""" thumbnail_url: Optional[str] = None """*Optional*. Url of the thumbnail for the result""" diff --git a/aiogram/types/inline_query_result_video.py b/aiogram/types/inline_query_result_video.py index b1c6775e..0968dda1 100644 --- a/aiogram/types/inline_query_result_video.py +++ b/aiogram/types/inline_query_result_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -49,5 +53,13 @@ class InlineQueryResultVideo(InlineQueryResult): """*Optional*. Short description of the result""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the video. This field is **required** if InlineQueryResultVideo is used to send an HTML-page as a result (e.g., a YouTube video).""" diff --git a/aiogram/types/inline_query_result_voice.py b/aiogram/types/inline_query_result_voice.py index e97a994e..995950ef 100644 --- a/aiogram/types/inline_query_result_voice.py +++ b/aiogram/types/inline_query_result_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -8,7 +8,11 @@ from .inline_query_result import InlineQueryResult if TYPE_CHECKING: from .inline_keyboard_markup import InlineKeyboardMarkup - from .input_message_content import InputMessageContent + from .input_contact_message_content import InputContactMessageContent + from .input_invoice_message_content import InputInvoiceMessageContent + from .input_location_message_content import InputLocationMessageContent + from .input_text_message_content import InputTextMessageContent + from .input_venue_message_content import InputVenueMessageContent from .message_entity import MessageEntity @@ -38,5 +42,13 @@ class InlineQueryResultVoice(InlineQueryResult): """*Optional*. Recording duration in seconds""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" - input_message_content: Optional[InputMessageContent] = None + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None """*Optional*. Content of the message to be sent instead of the voice recording""" diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 9339fe7f..6d022960 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -67,7 +67,7 @@ if TYPE_CHECKING: from .general_forum_topic_unhidden import GeneralForumTopicUnhidden from .inline_keyboard_markup import InlineKeyboardMarkup from .input_file import InputFile - from .input_media import InputMedia + from .input_media_animation import InputMediaAnimation from .input_media_audio import InputMediaAudio from .input_media_document import InputMediaDocument from .input_media_photo import InputMediaPhoto @@ -2774,7 +2774,13 @@ class Message(TelegramObject): def edit_media( self, - media: InputMedia, + media: Union[ + InputMediaAnimation, + InputMediaDocument, + InputMediaAudio, + InputMediaPhoto, + InputMediaVideo, + ], inline_message_id: Optional[str] = None, reply_markup: Optional[InlineKeyboardMarkup] = None, **kwargs: Any, diff --git a/aiogram/types/passport_element_error_data_field.py b/aiogram/types/passport_element_error_data_field.py index 370a100a..76a6d93a 100644 --- a/aiogram/types/passport_element_error_data_field.py +++ b/aiogram/types/passport_element_error_data_field.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorDataField(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrordatafield """ - source: Literal["data"] = "data" + source: Literal[PassportElementErrorType.DATA] = PassportElementErrorType.DATA """Error source, must be *data*""" type: str """The section of the user's Telegram Passport which has the error, one of 'personal_details', 'passport', 'driver_license', 'identity_card', 'internal_passport', 'address'""" diff --git a/aiogram/types/passport_element_error_file.py b/aiogram/types/passport_element_error_file.py index e2016dd9..74512eea 100644 --- a/aiogram/types/passport_element_error_file.py +++ b/aiogram/types/passport_element_error_file.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorFile(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfile """ - source: Literal["file"] = "file" + source: Literal[PassportElementErrorType.FILE] = PassportElementErrorType.FILE """Error source, must be *file*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_files.py b/aiogram/types/passport_element_error_files.py index 4b97c095..020f7a99 100644 --- a/aiogram/types/passport_element_error_files.py +++ b/aiogram/types/passport_element_error_files.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import List, Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorFiles(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfiles """ - source: Literal["files"] = "files" + source: Literal[PassportElementErrorType.FILES] = PassportElementErrorType.FILES """Error source, must be *files*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_front_side.py b/aiogram/types/passport_element_error_front_side.py index 4d46cc94..f3b4dd2f 100644 --- a/aiogram/types/passport_element_error_front_side.py +++ b/aiogram/types/passport_element_error_front_side.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorFrontSide(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorfrontside """ - source: Literal["front_side"] = "front_side" + source: Literal[PassportElementErrorType.FRONT_SIDE] = PassportElementErrorType.FRONT_SIDE """Error source, must be *front_side*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport'""" diff --git a/aiogram/types/passport_element_error_reverse_side.py b/aiogram/types/passport_element_error_reverse_side.py index 7584f567..18929df6 100644 --- a/aiogram/types/passport_element_error_reverse_side.py +++ b/aiogram/types/passport_element_error_reverse_side.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorReverseSide(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorreverseside """ - source: Literal["reverse_side"] = "reverse_side" + source: Literal[PassportElementErrorType.REVERSE_SIDE] = PassportElementErrorType.REVERSE_SIDE """Error source, must be *reverse_side*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'driver_license', 'identity_card'""" diff --git a/aiogram/types/passport_element_error_selfie.py b/aiogram/types/passport_element_error_selfie.py index 37cd1c95..003bfec6 100644 --- a/aiogram/types/passport_element_error_selfie.py +++ b/aiogram/types/passport_element_error_selfie.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorSelfie(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorselfie """ - source: Literal["selfie"] = "selfie" + source: Literal[PassportElementErrorType.SELFIE] = PassportElementErrorType.SELFIE """Error source, must be *selfie*""" type: str """The section of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport'""" diff --git a/aiogram/types/passport_element_error_translation_file.py b/aiogram/types/passport_element_error_translation_file.py index 92b82ad6..aac4268e 100644 --- a/aiogram/types/passport_element_error_translation_file.py +++ b/aiogram/types/passport_element_error_translation_file.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,9 @@ class PassportElementErrorTranslationFile(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrortranslationfile """ - source: Literal["translation_file"] = "translation_file" + source: Literal[ + PassportElementErrorType.TRANSLATION_FILE + ] = PassportElementErrorType.TRANSLATION_FILE """Error source, must be *translation_file*""" type: str """Type of element of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_translation_files.py b/aiogram/types/passport_element_error_translation_files.py index a9dbece8..427c6468 100644 --- a/aiogram/types/passport_element_error_translation_files.py +++ b/aiogram/types/passport_element_error_translation_files.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import List, Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,9 @@ class PassportElementErrorTranslationFiles(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrortranslationfiles """ - source: Literal["translation_files"] = "translation_files" + source: Literal[ + PassportElementErrorType.TRANSLATION_FILES + ] = PassportElementErrorType.TRANSLATION_FILES """Error source, must be *translation_files*""" type: str """Type of element of the user's Telegram Passport which has the issue, one of 'passport', 'driver_license', 'identity_card', 'internal_passport', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration', 'temporary_registration'""" diff --git a/aiogram/types/passport_element_error_unspecified.py b/aiogram/types/passport_element_error_unspecified.py index c287f96c..5e8d88e7 100644 --- a/aiogram/types/passport_element_error_unspecified.py +++ b/aiogram/types/passport_element_error_unspecified.py @@ -2,6 +2,7 @@ from __future__ import annotations from typing import Literal +from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -12,7 +13,7 @@ class PassportElementErrorUnspecified(PassportElementError): Source: https://core.telegram.org/bots/api#passportelementerrorunspecified """ - source: Literal["unspecified"] = "unspecified" + source: Literal[PassportElementErrorType.UNSPECIFIED] = PassportElementErrorType.UNSPECIFIED """Error source, must be *unspecified*""" type: str """Type of element of the user's Telegram Passport which has the issue""" diff --git a/docs/api/enums/encrypted_passport_element.rst b/docs/api/enums/encrypted_passport_element.rst new file mode 100644 index 00000000..9d79b162 --- /dev/null +++ b/docs/api/enums/encrypted_passport_element.rst @@ -0,0 +1,9 @@ +######################## +EncryptedPassportElement +######################## + + +.. automodule:: aiogram.enums.encrypted_passport_element + :members: + :member-order: bysource + :undoc-members: True diff --git a/docs/api/enums/index.rst b/docs/api/enums/index.rst index 84a4b837..e496f5b4 100644 --- a/docs/api/enums/index.rst +++ b/docs/api/enums/index.rst @@ -14,12 +14,14 @@ Here is list of all available enums: chat_type content_type dice_emoji + encrypted_passport_element inline_query_result_type input_media_type mask_position_point menu_button_type message_entity_type parse_mode + passport_element_error_type poll_type sticker_format sticker_type diff --git a/docs/api/enums/passport_element_error_type.rst b/docs/api/enums/passport_element_error_type.rst new file mode 100644 index 00000000..c79d9b11 --- /dev/null +++ b/docs/api/enums/passport_element_error_type.rst @@ -0,0 +1,9 @@ +######################## +PassportElementErrorType +######################## + + +.. automodule:: aiogram.enums.passport_element_error_type + :members: + :member-order: bysource + :undoc-members: True diff --git a/pyproject.toml b/pyproject.toml index c0642a0a..31e4e968 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -149,7 +149,7 @@ features = [ "test", ] extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.15" + "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.16" ] [tool.hatch.envs.dev.scripts] diff --git a/tests/test_api/test_methods/test_answer_web_app_query.py b/tests/test_api/test_methods/test_answer_web_app_query.py index 6948bead..a42640a8 100644 --- a/tests/test_api/test_methods/test_answer_web_app_query.py +++ b/tests/test_api/test_methods/test_answer_web_app_query.py @@ -1,5 +1,5 @@ -from aiogram.methods import AnswerWebAppQuery, Request -from aiogram.types import InlineQueryResult, SentWebAppMessage +from aiogram.methods import AnswerWebAppQuery +from aiogram.types import InlineQueryResultPhoto, SentWebAppMessage from tests.mocked_bot import MockedBot @@ -9,7 +9,11 @@ class TestAnswerWebAppQuery: response: SentWebAppMessage = await bot.answer_web_app_query( web_app_query_id="test", - result=InlineQueryResult(), + result=InlineQueryResultPhoto( + id="test", + photo_url="test", + thumbnail_url="test", + ), ) request = bot.get_request() assert response == prepare_result.result diff --git a/tests/test_filters/test_chat_member_updated.py b/tests/test_filters/test_chat_member_updated.py index 8592792c..46da8b8e 100644 --- a/tests/test_filters/test_chat_member_updated.py +++ b/tests/test_filters/test_chat_member_updated.py @@ -1,4 +1,5 @@ from datetime import datetime +from typing import Optional import pytest @@ -24,6 +25,11 @@ from aiogram.types import ( ) +class ChatMemberCustom(ChatMember): + status: str + is_member: Optional[bool] = None + + class TestMemberStatusMarker: def test_str(self): marker = _MemberStatusMarker("test") @@ -113,11 +119,11 @@ class TestMemberStatusMarker: @pytest.mark.parametrize( "name,is_member,member,result", [ - ["test", None, ChatMember(status="member"), False], - ["test", None, ChatMember(status="test"), True], - ["test", True, ChatMember(status="test"), False], - ["test", True, ChatMember(status="test", is_member=True), True], - ["test", True, ChatMember(status="test", is_member=False), False], + ["test", None, ChatMemberCustom(status="member"), False], + ["test", None, ChatMemberCustom(status="test"), True], + ["test", True, ChatMemberCustom(status="test"), False], + ["test", True, ChatMemberCustom(status="test", is_member=True), True], + ["test", True, ChatMemberCustom(status="test", is_member=False), False], ], ) def test_check(self, name, is_member, member, result): @@ -244,29 +250,34 @@ class TestMemberStatusTransition: @pytest.mark.parametrize( "transition,old,new,result", [ - [JOIN_TRANSITION, ChatMember(status="left"), ChatMember(status="member"), True], [ JOIN_TRANSITION, - ChatMember(status="restricted", is_member=True), - ChatMember(status="member"), - False, - ], - [ - JOIN_TRANSITION, - ChatMember(status="restricted", is_member=False), - ChatMember(status="member"), + ChatMemberCustom(status="left"), + ChatMemberCustom(status="member"), True, ], [ JOIN_TRANSITION, - ChatMember(status="member"), - ChatMember(status="restricted", is_member=False), + ChatMemberCustom(status="restricted", is_member=True), + ChatMemberCustom(status="member"), + False, + ], + [ + JOIN_TRANSITION, + ChatMemberCustom(status="restricted", is_member=False), + ChatMemberCustom(status="member"), + True, + ], + [ + JOIN_TRANSITION, + ChatMemberCustom(status="member"), + ChatMemberCustom(status="restricted", is_member=False), False, ], [ LEAVE_TRANSITION, - ChatMember(status="member"), - ChatMember(status="restricted", is_member=False), + ChatMemberCustom(status="member"), + ChatMemberCustom(status="restricted", is_member=False), True, ], ], From 74e00a30b12a2adb47237079bb554f15755ec604 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 16 Jul 2023 22:46:45 +0300 Subject: [PATCH 021/139] "Add get_mounted_bot function and improve model comparison in tests" In this commit, a new function `get_mounted_bot` was added to `context_controller.py` that returns the bot mounted in context. This function was needed to bypass the limitation in pydantic BaseModel's properties, which neither support computed fields nor serialization/validation. Various tests were also updated to compare models using `model_dump_json()` method rather than comparing the models directly. This change provides more accurate comparisons by considering default values in the models. Further, the dispatcher was adjusted to enforce update re-mounting if the mounted bot differs from the current update. This allows shortcuts to be used in the bot's current instance and ensures the correct propagation of the context to all the nested objects and attributes of Updates. --- aiogram/client/context_controller.py | 7 +++++++ aiogram/dispatcher/dispatcher.py | 14 +++++++++++--- tests/mocked_bot.py | 5 ++++- tests/test_dispatcher/test_dispatcher.py | 12 +++++++++--- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/aiogram/client/context_controller.py b/aiogram/client/context_controller.py index 530c1555..f998252f 100644 --- a/aiogram/client/context_controller.py +++ b/aiogram/client/context_controller.py @@ -13,6 +13,13 @@ class BotContextController(BaseModel): def model_post_init(self, __context: Any) -> None: self._bot = __context.get("bot") if __context else None + def get_mounted_bot(self) -> Optional["Bot"]: + # Properties are not supported in pydantic BaseModel + # @computed_field decorator is not a solution for this case in due to + # it produces an additional field in model with validation and serialization that + # we don't need here + return self._bot + def as_(self, bot: Optional["Bot"]) -> Self: """ Bind object to a bot instance. diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 18bd5c73..107a17b5 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -142,7 +142,16 @@ class Dispatcher(Router): handled = False start_time = loop.time() - token = Bot.set_current(bot) + if update.get_mounted_bot() != bot: + # Re-mounting update to the current bot instance for making possible to + # use it in shortcuts. + # Here is update is re-created because we need to propagate context to + # all nested objects and attributes of the Update, but it + # is impossible without roundtrip to JSON :( + # The preferred way is that pass already mounted Bot instance to this update + # before call feed_update method + update = Update.model_validate(update.model_dump(), context={"bot": bot}) + try: response = await self.update.wrap_outer_middleware( self.update.trigger, @@ -165,7 +174,6 @@ class Dispatcher(Router): duration, bot.id, ) - Bot.reset_current(token) async def feed_raw_update(self, bot: Bot, update: Dict[str, Any], **kwargs: Any) -> Any: """ @@ -367,7 +375,7 @@ class Dispatcher(Router): self, bot: Bot, update: Union[Update, Dict[str, Any]], _timeout: float = 55, **kwargs: Any ) -> Optional[TelegramMethod[TelegramType]]: if not isinstance(update, Update): # Allow to use raw updates - update = Update(**update) + update = Update.model_validate(update, context={"bot": bot}) ctx = contextvars.copy_context() loop = asyncio.get_running_loop() diff --git a/tests/mocked_bot.py b/tests/mocked_bot.py index af86098f..cd137aee 100644 --- a/tests/mocked_bot.py +++ b/tests/mocked_bot.py @@ -35,7 +35,10 @@ class MockedSession(BaseSession): self.requests.append(method) response: Response[TelegramType] = self.responses.pop() self.check_response( - bot=bot, method=method, status_code=response.error_code, content=response.json() + bot=bot, + method=method, + status_code=response.error_code, + content=response.model_dump_json(), ) return response.result # type: ignore diff --git a/tests/test_dispatcher/test_dispatcher.py b/tests/test_dispatcher/test_dispatcher.py index 41ecef1b..69aece69 100644 --- a/tests/test_dispatcher/test_dispatcher.py +++ b/tests/test_dispatcher/test_dispatcher.py @@ -460,7 +460,9 @@ class TestDispatcher: @observer() async def my_handler(event: Any, **kwargs: Any): - assert event == getattr(update, event_type) + assert event.model_dump(exclude_defaults=True) == getattr( + update, event_type + ).model_dump(exclude_defaults=True) if has_chat: assert kwargs["event_chat"] if has_user: @@ -469,7 +471,9 @@ class TestDispatcher: result = await router.feed_update(bot, update, test="PASS") assert isinstance(result, dict) - assert result["event_update"] == update + assert result["event_update"].model_dump(exclude_defaults=True) == update.model_dump( + exclude_defaults=True + ) assert result["event_router"] == router assert result["test"] == "PASS" @@ -532,7 +536,9 @@ class TestDispatcher: ) result = await dp.feed_update(bot, update, test="PASS") assert isinstance(result, dict) - assert result["event_update"] == update + assert result["event_update"].model_dump(exclude_defaults=True) == update.model_dump( + exclude_defaults=True + ) assert result["event_router"] == router1 assert result["test"] == "PASS" From afeb659b8202e88ba872e8b3764045b36880a46b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 16 Jul 2023 22:49:18 +0300 Subject: [PATCH 022/139] Added test that prove previous fix --- tests/test_issues/__init__.py | 0 .../test_issues/test_bot_context_is_usable.py | 27 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/test_issues/__init__.py create mode 100644 tests/test_issues/test_bot_context_is_usable.py diff --git a/tests/test_issues/__init__.py b/tests/test_issues/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_issues/test_bot_context_is_usable.py b/tests/test_issues/test_bot_context_is_usable.py new file mode 100644 index 00000000..f3db6b99 --- /dev/null +++ b/tests/test_issues/test_bot_context_is_usable.py @@ -0,0 +1,27 @@ +from datetime import datetime + +from aiogram import Dispatcher, Router +from aiogram.enums import ChatType +from aiogram.filters import Command +from aiogram.methods import SendMessage +from aiogram.types import Chat, Message, Update, User +from tests.mocked_bot import MockedBot + +issue_router = Router() + + +@issue_router.message(Command("test")) +async def my_handler(message: Message): + await message.answer("PASS") + return True + + +async def test_something(bot: MockedBot): + dp = Dispatcher() + dp.include_router(issue_router) + bot.add_result_for(method=SendMessage, ok=True) + chat = Chat(id=666, type=ChatType.PRIVATE) + user = User(id=666, is_bot=False, first_name="User") + msg = Message(message_id=1, date=datetime.now(), from_user=user, chat=chat, text="/test") + result = await dp.feed_update(bot, Update(message=msg, update_id=1)) + assert result is True From 853b72f38d284c9af61fbda80f8a2952752b1a4d Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 16 Jul 2023 23:04:06 +0300 Subject: [PATCH 023/139] Added possibility to use HashTag/CashTag elements without prefixing content, added `sep: str` argument to the `as_line` function. --- aiogram/utils/formatting.py | 31 +++++++++++++++++-- tests/test_utils/test_formatting.py | 46 +++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/aiogram/utils/formatting.py b/aiogram/utils/formatting.py index 049db003..132e04f2 100644 --- a/aiogram/utils/formatting.py +++ b/aiogram/utils/formatting.py @@ -226,6 +226,15 @@ class HashTag(Text): type = MessageEntityType.HASHTAG + def __init__(self, *body: NodeType, **params: Any) -> None: + if len(body) != 1: + raise ValueError("Hashtag can contain only one element") + if not isinstance(body[0], str): + raise ValueError("Hashtag can contain only string") + if not body[0].startswith("#"): + body = ("#" + body[0],) + super().__init__(*body, **params) + class CashTag(Text): """ @@ -241,6 +250,15 @@ class CashTag(Text): type = MessageEntityType.CASHTAG + def __init__(self, *body: NodeType, **params: Any) -> None: + if len(body) != 1: + raise ValueError("Cashtag can contain only one element") + if not isinstance(body[0], str): + raise ValueError("Cashtag can contain only string") + if not body[0].startswith("$"): + body = ("$" + body[0],) + super().__init__(*body, **params) + class BotCommand(Text): """ @@ -474,15 +492,24 @@ def _unparse_entities( yield remove_surrogates(text[offset:length]) -def as_line(*items: NodeType, end: str = "\n") -> Text: +def as_line(*items: NodeType, end: str = "\n", sep: str = "") -> Text: """ Wrap multiple nodes into line with :code:`\\\\n` at the end of line. :param items: Text or Any :param end: ending of the line, by default is :code:`\\\\n` + :param sep: separator between items, by default is empty string :return: Text """ - return Text(*items, end) + if sep: + nodes = [] + for item in items[:-1]: + nodes.extend([item, sep]) + nodes.append(items[-1]) + nodes.append(end) + else: + nodes = [*items, end] + return Text(*nodes) def as_list(*items: NodeType, sep: str = "\n") -> Text: diff --git a/tests/test_utils/test_formatting.py b/tests/test_utils/test_formatting.py index 5e14c4dc..f135aca6 100644 --- a/tests/test_utils/test_formatting.py +++ b/tests/test_utils/test_formatting.py @@ -276,6 +276,42 @@ class TestNode: ) +class TestHashTag: + def test_only_one_element_in_body(self): + with pytest.raises(ValueError): + HashTag("test", "test") + + def test_body_is_not_str(self): + with pytest.raises(ValueError): + HashTag(Text("test")) + + def test_with_no_prefix(self): + node = HashTag("test") + assert node._body == ("#test",) + + def test_with_prefix(self): + node = HashTag("#test") + assert node._body == ("#test",) + + +class TestCashTag: + def test_only_one_element_in_body(self): + with pytest.raises(ValueError): + CashTag("test", "test") + + def test_body_is_not_str(self): + with pytest.raises(ValueError): + CashTag(Text("test")) + + def test_with_no_prefix(self): + node = CashTag("USD") + assert node._body == ("$USD",) + + def test_with_prefix(self): + node = CashTag("$USD") + assert node._body == ("$USD",) + + class TestUtils: def test_apply_entity(self): node = _apply_entity( @@ -289,6 +325,16 @@ class TestUtils: assert isinstance(node, Text) assert len(node._body) == 4 # 3 + '\n' + def test_line_with_sep(self): + node = as_line("test", "test", "test", sep=" ") + assert isinstance(node, Text) + assert len(node._body) == 6 # 3 + 2 * ' ' + '\n' + + def test_as_line_single_element_with_sep(self): + node = as_line("test", sep=" ") + assert isinstance(node, Text) + assert len(node._body) == 2 # 1 + '\n' + def test_as_list(self): node = as_list("test", "test", "test") assert isinstance(node, Text) From 0ed62bcadfd4f1cea405b44d9c6f124c529c7156 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 16 Jul 2023 23:16:43 +0300 Subject: [PATCH 024/139] Removed pydantic base fields from docs --- docs/api/types/error_event.rst | 1 + docs/dispatcher/filters/callback_data.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/api/types/error_event.rst b/docs/api/types/error_event.rst index 77fae204..562ea15b 100644 --- a/docs/api/types/error_event.rst +++ b/docs/api/types/error_event.rst @@ -7,3 +7,4 @@ ErrorEvent :members: :member-order: bysource :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/docs/dispatcher/filters/callback_data.rst b/docs/dispatcher/filters/callback_data.rst index 9ba67331..ccfc019f 100644 --- a/docs/dispatcher/filters/callback_data.rst +++ b/docs/dispatcher/filters/callback_data.rst @@ -6,6 +6,7 @@ Callback Data Factory & Filter :members: :member-order: bysource :undoc-members: False + :exclude-members: model_config,model_fields Usage ===== From 21351de335f13bd27174e49b40c6a8156690e708 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 00:10:47 +0300 Subject: [PATCH 025/139] Fixed #1217: Fixed union subtypes generation inside arrays of elements --- aiogram/client/bot.py | 52 ++++++++++++++++--- aiogram/methods/answer_inline_query.py | 51 ++++++++++++++++-- aiogram/methods/set_passport_data_errors.py | 28 ++++++++-- aiogram/types/inline_query.py | 48 +++++++++++++++-- pyproject.toml | 2 +- .../test_methods/test_answer_inline_query.py | 10 +++- .../test_set_passport_data_errors.py | 11 +++- 7 files changed, 183 insertions(+), 19 deletions(-) diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index b7604390..c6721c6f 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -140,7 +140,6 @@ from ..methods import ( from ..types import ( UNSET_PARSE_MODE, BotCommand, - BotCommandScope, BotCommandScopeAllChatAdministrators, BotCommandScopeAllGroupChats, BotCommandScopeAllPrivateChats, @@ -167,7 +166,6 @@ from ..types import ( ForumTopic, GameHighScore, InlineKeyboardMarkup, - InlineQueryResult, InlineQueryResultArticle, InlineQueryResultAudio, InlineQueryResultCachedAudio, @@ -190,7 +188,6 @@ from ..types import ( InlineQueryResultVideo, InlineQueryResultVoice, InputFile, - InputMedia, InputMediaAnimation, InputMediaAudio, InputMediaDocument, @@ -205,7 +202,15 @@ from ..types import ( Message, MessageEntity, MessageId, - PassportElementError, + PassportElementErrorDataField, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, + PassportElementErrorTranslationFile, + PassportElementErrorTranslationFiles, + PassportElementErrorUnspecified, Poll, ReplyKeyboardMarkup, ReplyKeyboardRemove, @@ -509,7 +514,30 @@ class Bot(ContextInstanceMixin["Bot"]): async def answer_inline_query( self, inline_query_id: str, - results: List[InlineQueryResult], + results: List[ + Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ] + ], cache_time: Optional[int] = None, is_personal: Optional[bool] = None, next_offset: Optional[str] = None, @@ -3368,7 +3396,19 @@ class Bot(ContextInstanceMixin["Bot"]): async def set_passport_data_errors( self, user_id: int, - errors: List[PassportElementError], + errors: List[ + Union[ + PassportElementErrorDataField, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorTranslationFile, + PassportElementErrorTranslationFiles, + PassportElementErrorUnspecified, + ] + ], request_timeout: Optional[int] = None, ) -> bool: """ diff --git a/aiogram/methods/answer_inline_query.py b/aiogram/methods/answer_inline_query.py index 53eaf5be..70dc1169 100644 --- a/aiogram/methods/answer_inline_query.py +++ b/aiogram/methods/answer_inline_query.py @@ -1,10 +1,32 @@ from __future__ import annotations -from typing import List, Optional +from typing import List, Optional, Union from pydantic import Field -from ..types import InlineQueryResult, InlineQueryResultsButton +from ..types import ( + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultContact, + InlineQueryResultDocument, + InlineQueryResultGame, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultsButton, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, +) from .base import TelegramMethod @@ -22,7 +44,30 @@ class AnswerInlineQuery(TelegramMethod[bool]): inline_query_id: str """Unique identifier for the answered query""" - results: List[InlineQueryResult] + results: List[ + Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ] + ] """A JSON-serialized array of results for the inline query""" cache_time: Optional[int] = None """The maximum amount of time in seconds that the result of the inline query may be cached on the server. Defaults to 300.""" diff --git a/aiogram/methods/set_passport_data_errors.py b/aiogram/methods/set_passport_data_errors.py index f829fa47..8dbd52b2 100644 --- a/aiogram/methods/set_passport_data_errors.py +++ b/aiogram/methods/set_passport_data_errors.py @@ -1,8 +1,18 @@ from __future__ import annotations -from typing import List +from typing import List, Union -from ..types import PassportElementError +from ..types import ( + PassportElementErrorDataField, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, + PassportElementErrorTranslationFile, + PassportElementErrorTranslationFiles, + PassportElementErrorUnspecified, +) from .base import TelegramMethod @@ -19,5 +29,17 @@ class SetPassportDataErrors(TelegramMethod[bool]): user_id: int """User identifier""" - errors: List[PassportElementError] + errors: List[ + Union[ + PassportElementErrorDataField, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorTranslationFile, + PassportElementErrorTranslationFiles, + PassportElementErrorUnspecified, + ] + ] """A JSON-serialized array describing the errors""" diff --git a/aiogram/types/inline_query.py b/aiogram/types/inline_query.py index afb76a8b..e9fb644e 100644 --- a/aiogram/types/inline_query.py +++ b/aiogram/types/inline_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional, Union from pydantic import Field @@ -8,7 +8,26 @@ from .base import TelegramObject if TYPE_CHECKING: from ..methods import AnswerInlineQuery - from .inline_query_result import InlineQueryResult + from .inline_query_result_article import InlineQueryResultArticle + from .inline_query_result_audio import InlineQueryResultAudio + from .inline_query_result_cached_audio import InlineQueryResultCachedAudio + from .inline_query_result_cached_document import InlineQueryResultCachedDocument + from .inline_query_result_cached_gif import InlineQueryResultCachedGif + from .inline_query_result_cached_mpeg4_gif import InlineQueryResultCachedMpeg4Gif + from .inline_query_result_cached_photo import InlineQueryResultCachedPhoto + from .inline_query_result_cached_sticker import InlineQueryResultCachedSticker + from .inline_query_result_cached_video import InlineQueryResultCachedVideo + from .inline_query_result_cached_voice import InlineQueryResultCachedVoice + from .inline_query_result_contact import InlineQueryResultContact + from .inline_query_result_document import InlineQueryResultDocument + from .inline_query_result_game import InlineQueryResultGame + from .inline_query_result_gif import InlineQueryResultGif + from .inline_query_result_location import InlineQueryResultLocation + from .inline_query_result_mpeg4_gif import InlineQueryResultMpeg4Gif + from .inline_query_result_photo import InlineQueryResultPhoto + from .inline_query_result_venue import InlineQueryResultVenue + from .inline_query_result_video import InlineQueryResultVideo + from .inline_query_result_voice import InlineQueryResultVoice from .inline_query_results_button import InlineQueryResultsButton from .location import Location from .user import User @@ -36,7 +55,30 @@ class InlineQuery(TelegramObject): def answer( self, - results: List[InlineQueryResult], + results: List[ + Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ] + ], cache_time: Optional[int] = None, is_personal: Optional[bool] = None, next_offset: Optional[str] = None, diff --git a/pyproject.toml b/pyproject.toml index 31e4e968..cffd123b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -149,7 +149,7 @@ features = [ "test", ] extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.16" + "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.17" ] [tool.hatch.envs.dev.scripts] diff --git a/tests/test_api/test_methods/test_answer_inline_query.py b/tests/test_api/test_methods/test_answer_inline_query.py index a0cec362..cd8ba266 100644 --- a/tests/test_api/test_methods/test_answer_inline_query.py +++ b/tests/test_api/test_methods/test_answer_inline_query.py @@ -2,6 +2,7 @@ from aiogram import Bot from aiogram.methods import AnswerInlineQuery, Request from aiogram.types import ( InlineQueryResult, + InlineQueryResultArticle, InlineQueryResultPhoto, InputTextMessageContent, ) @@ -13,7 +14,14 @@ class TestAnswerInlineQuery: prepare_result = bot.add_result_for(AnswerInlineQuery, ok=True, result=True) response: bool = await bot.answer_inline_query( - inline_query_id="query id", results=[InlineQueryResult()] + inline_query_id="query id", + results=[ + InlineQueryResultArticle( + id="1", + title="title", + input_message_content=InputTextMessageContent(message_text="text"), + ) + ], ) request = bot.get_request() assert response == prepare_result.result diff --git a/tests/test_api/test_methods/test_set_passport_data_errors.py b/tests/test_api/test_methods/test_set_passport_data_errors.py index ecc2425b..0e5647fb 100644 --- a/tests/test_api/test_methods/test_set_passport_data_errors.py +++ b/tests/test_api/test_methods/test_set_passport_data_errors.py @@ -1,5 +1,5 @@ from aiogram.methods import Request, SetPassportDataErrors -from aiogram.types import PassportElementError +from aiogram.types import PassportElementError, PassportElementErrorFile from tests.mocked_bot import MockedBot @@ -8,7 +8,14 @@ class TestSetPassportDataErrors: prepare_result = bot.add_result_for(SetPassportDataErrors, ok=True, result=True) response: bool = await bot.set_passport_data_errors( - user_id=42, errors=[PassportElementError()] + user_id=42, + errors=[ + PassportElementErrorFile( + type="type", + file_hash="hash", + message="message", + ) + ], ) request = bot.get_request() assert response == prepare_result.result From 7f472eff423d37310078cf96e17487c243034600 Mon Sep 17 00:00:00 2001 From: SM CheeseNick <96052157+mak7ko@users.noreply.github.com> Date: Mon, 17 Jul 2023 00:28:30 +0300 Subject: [PATCH 026/139] Update dispatcher.py (#1220) In line 469 corrected a typo in the word "more" (was "mre") --- aiogram/dispatcher/dispatcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 107a17b5..7c6acc7f 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -466,7 +466,7 @@ class Dispatcher(Router): """ Polling runner - :param bots: Bot instances (one or mre) + :param bots: Bot instances (one or more) :param polling_timeout: Long-polling wait time :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config From 710c7669c4fd72b477c5a30fc7c9b9c7305e0734 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 02:48:27 +0300 Subject: [PATCH 027/139] Bump magic-filter to 1.0.10 (#1221) * Bump magic-filter to 1.0.10 * Added changelog * Fixed compatibility --- CHANGES/1221.misc.rst | 4 ++++ aiogram/filters/command.py | 2 +- pyproject.toml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1221.misc.rst diff --git a/CHANGES/1221.misc.rst b/CHANGES/1221.misc.rst new file mode 100644 index 00000000..8f591f9f --- /dev/null +++ b/CHANGES/1221.misc.rst @@ -0,0 +1,4 @@ +Updated magic-filter with new features + +- Added hint for len(F) error +- Added not in operation diff --git a/aiogram/filters/command.py b/aiogram/filters/command.py index 85ff4de6..6e654531 100644 --- a/aiogram/filters/command.py +++ b/aiogram/filters/command.py @@ -191,7 +191,7 @@ class Command(Filter): return command # noqa: RET504 def do_magic(self, command: CommandObject) -> Any: - if not self.magic: + if self.magic is None: return command result = self.magic.resolve(command) if not result: diff --git a/pyproject.toml b/pyproject.toml index cffd123b..a80c182a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ classifiers = [ "Topic :: Communications :: Chat", ] dependencies = [ - "magic-filter~=1.0.9", + "magic-filter~=1.0.10", "aiohttp~=3.8.4", "pydantic~=2.0.0", "aiofiles~=23.1.0", From ac27b997518e6afbc36f61a1c18bdb1a333a2aaf Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 02:49:29 +0300 Subject: [PATCH 028/139] Bump API version --- .apiversion | 2 +- README.rst | 2 +- aiogram/__meta__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.apiversion b/.apiversion index 4074fe20..341291e5 100644 --- a/.apiversion +++ b/.apiversion @@ -1 +1 @@ -6.6 +6.7 diff --git a/README.rst b/README.rst index 3c2297a8..c7505fce 100644 --- a/README.rst +++ b/README.rst @@ -63,7 +63,7 @@ Features - Asynchronous (`asyncio docs `_, :pep:`492`) - Has type hints (:pep:`484`) and can be used with `mypy `_ - Supports `PyPy `_ -- Supports `Telegram Bot API 6.6 `_ and gets fast updates to the latest versions of the Bot API +- Supports `Telegram Bot API 6.7 `_ and gets fast updates to the latest versions of the Bot API - Telegram Bot API integration code was `autogenerated `_ and can be easily re-generated when API gets updated - Updates router (Blueprints) - Has Finite State Machine diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 72d119e9..6cd7e1ad 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ __version__ = "3.0.0b8" -__api_version__ = "6.6" +__api_version__ = "6.7" From 6044a73e552fbcba8e977cde2f724a9fbaaa25bf Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 02:56:35 +0300 Subject: [PATCH 029/139] Small changes in the changelog --- CHANGES/1133.doc.rst | 2 +- CHANGES/1142.misc.rst | 2 +- CHANGES/1146.bugfix.rst | 6 +++--- CHANGES/{1147.feature => 1147.feature.rst} | 2 +- CHANGES/1155.bugfix.rst | 2 +- CHANGES/1160.bugfix | 1 - CHANGES/1160.bugfix.rst | 1 + CHANGES/1161.feature.rst | 2 +- CHANGES/1173.feature.rst | 2 +- CHANGES/1191.feature.rst | 2 +- CHANGES/1221.misc.rst | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) rename CHANGES/{1147.feature => 1147.feature.rst} (69%) delete mode 100644 CHANGES/1160.bugfix create mode 100644 CHANGES/1160.bugfix.rst diff --git a/CHANGES/1133.doc.rst b/CHANGES/1133.doc.rst index a5ab681d..247f0c66 100644 --- a/CHANGES/1133.doc.rst +++ b/CHANGES/1133.doc.rst @@ -1 +1 @@ -Changed small grammar typos for `upload_file` +Changed small grammar typos for :code:`upload_file` diff --git a/CHANGES/1142.misc.rst b/CHANGES/1142.misc.rst index c17fb588..01e3ee72 100644 --- a/CHANGES/1142.misc.rst +++ b/CHANGES/1142.misc.rst @@ -1,2 +1,2 @@ -Added global defaults `disable_web_page_preview` and `protect_content` in addition to `parse_mode` to the Bot instance, +Added global defaults :code:`disable_web_page_preview` and :code:`protect_content` in addition to :code:`parse_mode` to the Bot instance, reworked internal request builder mechanism. diff --git a/CHANGES/1146.bugfix.rst b/CHANGES/1146.bugfix.rst index fbe88e4c..736df86d 100644 --- a/CHANGES/1146.bugfix.rst +++ b/CHANGES/1146.bugfix.rst @@ -1,4 +1,4 @@ -Change type of result in InlineQueryResult enum for `InlineQueryResultCachedMpeg4Gif` -and `InlineQueryResultMpeg4Gif` to more correct according to documentation. +Change type of result in InlineQueryResult enum for :code:`InlineQueryResultCachedMpeg4Gif` +and :code:`InlineQueryResultMpeg4Gif` to more correct according to documentation. -Change regexp for entities parsing to more correct (`InlineQueryResultType.yml`). +Change regexp for entities parsing to more correct (:code:`InlineQueryResultType.yml`). diff --git a/CHANGES/1147.feature b/CHANGES/1147.feature.rst similarity index 69% rename from CHANGES/1147.feature rename to CHANGES/1147.feature.rst index fa34e703..81cf8173 100644 --- a/CHANGES/1147.feature +++ b/CHANGES/1147.feature.rst @@ -1 +1 @@ -If router does not support custom event it does not break and passes it to included routers \ No newline at end of file +If router does not support custom event it does not break and passes it to included routers diff --git a/CHANGES/1155.bugfix.rst b/CHANGES/1155.bugfix.rst index 753ffc96..8d264dcf 100644 --- a/CHANGES/1155.bugfix.rst +++ b/CHANGES/1155.bugfix.rst @@ -1 +1 @@ -Fixed signature of startup/shutdown events to include the **dispatcher.workflow_data as the handler arguments. +Fixed signature of startup/shutdown events to include the :code:`**dispatcher.workflow_data` as the handler arguments. diff --git a/CHANGES/1160.bugfix b/CHANGES/1160.bugfix deleted file mode 100644 index 68e82835..00000000 --- a/CHANGES/1160.bugfix +++ /dev/null @@ -1 +0,0 @@ -Added missing FORUM_TOPIC_EDITED value to content_type property diff --git a/CHANGES/1160.bugfix.rst b/CHANGES/1160.bugfix.rst new file mode 100644 index 00000000..6c5fa45b --- /dev/null +++ b/CHANGES/1160.bugfix.rst @@ -0,0 +1 @@ +Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property diff --git a/CHANGES/1161.feature.rst b/CHANGES/1161.feature.rst index 5a1e5927..e19a1125 100644 --- a/CHANGES/1161.feature.rst +++ b/CHANGES/1161.feature.rst @@ -14,4 +14,4 @@ The strategy can be changed in dispatcher: .. note:: If you have implemented you own storages you should extend record key generation - with new one attribute - `thread_id` + with new one attribute - :code:`thread_id` diff --git a/CHANGES/1173.feature.rst b/CHANGES/1173.feature.rst index 5a0f4d0c..03ee7422 100644 --- a/CHANGES/1173.feature.rst +++ b/CHANGES/1173.feature.rst @@ -1 +1 @@ -Added X-Telegram-Bot-Api-Secret-Token header check +Added :code:`X-Telegram-Bot-Api-Secret-Token` header check diff --git a/CHANGES/1191.feature.rst b/CHANGES/1191.feature.rst index 5bf184f0..2fb3bb1f 100644 --- a/CHANGES/1191.feature.rst +++ b/CHANGES/1191.feature.rst @@ -1 +1 @@ -Added possibility to pass custom headers to URLInputFile object +Added possibility to pass custom headers to :class:`URLInputFile` object diff --git a/CHANGES/1221.misc.rst b/CHANGES/1221.misc.rst index 8f591f9f..583ae46a 100644 --- a/CHANGES/1221.misc.rst +++ b/CHANGES/1221.misc.rst @@ -1,4 +1,4 @@ Updated magic-filter with new features -- Added hint for len(F) error +- Added hint for :code:`len(F)` error - Added not in operation From 5236329521fedc246e04cc283b47c74a4f8e8dab Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 03:09:36 +0300 Subject: [PATCH 030/139] Update hints --- aiogram/dispatcher/dispatcher.py | 11 ++++++----- aiogram/types/base.py | 7 ++++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 763a9e37..7de7960c 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -18,7 +18,7 @@ from ..fsm.strategy import FSMStrategy from ..methods import GetUpdates, TelegramMethod from ..methods.base import TelegramType from ..types import Update, User -from ..types.base import UNSET_TYPE +from ..types.base import UNSET_TYPE, UNSET from ..types.update import UpdateTypeLookupError from ..utils.backoff import Backoff, BackoffConfig from .event.bases import UNHANDLED, SkipHandler @@ -451,7 +451,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[Union[List[str], UNSET_TYPE]] = UNSET_TYPE, + allowed_updates: Optional[Union[List[str], UNSET_TYPE]] = UNSET, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, @@ -464,6 +464,7 @@ class Dispatcher(Router): :param handle_as_tasks: Run task for each event and no wait result :param backoff_config: backoff-retry config :param allowed_updates: List of the update types you want your bot to receive + By default, all used update types are enabled (resolved from handlers) :param handle_signals: handle signals (SIGINT/SIGTERM) :param close_bot_session: close bot sessions on shutdown :param kwargs: contextual data @@ -483,6 +484,9 @@ class Dispatcher(Router): if self._stopped_signal is None: self._stopped_signal = Event() + if allowed_updates is UNSET: + allowed_updates = self.resolve_used_update_types() + self._stop_signal.clear() self._stopped_signal.clear() @@ -498,9 +502,6 @@ class Dispatcher(Router): signal.SIGINT, self._signal_stop_polling, signal.SIGINT ) - if allowed_updates is UNSET_TYPE: - allowed_updates = self.resolve_used_update_types() - workflow_data = { "dispatcher": self, "bots": bots, diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 707e328c..21c5bceb 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -24,7 +24,8 @@ class MutableTelegramObject(TelegramObject): # special sentinel object which used in situation when None might be a useful value +UNSET: Any = sentinel.UNSET UNSET_PARSE_MODE: Any = sentinel.UNSET_PARSE_MODE -UNSET_DISABLE_WEB_PAGE_PREVIEW = sentinel.UNSET_DISABLE_WEB_PAGE_PREVIEW -UNSET_PROTECT_CONTENT = sentinel.UNSET_PROTECT_CONTENT -UNSET_TYPE = type(sentinel.DEFAULT) +UNSET_DISABLE_WEB_PAGE_PREVIEW: Any = sentinel.UNSET_DISABLE_WEB_PAGE_PREVIEW +UNSET_PROTECT_CONTENT: Any = sentinel.UNSET_PROTECT_CONTENT +UNSET_TYPE: Any = type(UNSET) From 71e7e62e36b4487399c17386eafac5fb3c8b78ce Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 22:57:31 +0300 Subject: [PATCH 031/139] Update publish pipeline --- .github/workflows/pypi-release.yml | 33 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index 1cfe82b1..c78a89ac 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -12,13 +12,20 @@ jobs: steps: - uses: actions/checkout@master - - name: Set up Python 3.10 + - name: Set up Python 3.11 uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.11" - name: Install build dependencies - run: python -m pip install --upgrade build + run: python -m pip install --upgrade build hatch + + - name: Resolve version + id: package-version + run: echo "value=$(echo ${{ github.ref }} | sed -e 's/refs\/tags\/v//')" >> $GITHUB_OUTPUT + + - name: Bump version + run: hatch version ${{ steps.package-version.outputs.value }} - name: Build source distribution run: python -m build . @@ -40,8 +47,12 @@ jobs: publish: name: Publish needs: build - if: "success() && startsWith(github.ref, 'refs/tags/')" runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/project/aiogram/${{ steps.package-version.outputs.value }}/ + permissions: + id-token: write steps: - name: Download artifacts uses: actions/download-artifact@v1 @@ -49,17 +60,5 @@ jobs: name: dist path: dist - # - name: Publish a Python distribution to Test PyPI - # uses: pypa/gh-action-pypi-publish@master - ## if: github.event.action != 'published' - # with: - # user: __token__ - # password: ${{ secrets.PYPI_TEST_TOKEN }} - # repository_url: https://test.pypi.org/legacy/ - - name: Publish a Python distribution to PyPI - uses: pypa/gh-action-pypi-publish@master - # if: github.event.action == 'published' - with: - user: __token__ - password: ${{ secrets.PYPI_TOKEN }} + uses: pypa/gh-action-pypi-publish@release/v1 From ea0ecbcd50414748bfcbf8951c3731924bf1fdf4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 23:02:10 +0300 Subject: [PATCH 032/139] Render changelog --- CHANGES.rst | 130 +++++++++++++++++++++++++++++++++++++++ CHANGES/1133.doc.rst | 1 - CHANGES/1139.misc.rst | 7 --- CHANGES/1142.misc.rst | 2 - CHANGES/1144.misc.rst | 1 - CHANGES/1146.bugfix.rst | 4 -- CHANGES/1147.feature.rst | 1 - CHANGES/1155.bugfix.rst | 1 - CHANGES/1160.bugfix.rst | 1 - CHANGES/1161.feature.rst | 17 ----- CHANGES/1162.bugfix.rst | 1 - CHANGES/1163.feature.rst | 4 -- CHANGES/1168.misc.rst | 6 -- CHANGES/1170.removal.rst | 3 - CHANGES/1172.feature.rst | 2 - CHANGES/1173.feature.rst | 1 - CHANGES/1176.bugfix.rst | 1 - CHANGES/1178.feature | 1 - CHANGES/1191.feature.rst | 1 - CHANGES/1196.bugfix.rst | 1 - CHANGES/1202.misc.rst | 6 -- CHANGES/1210.misc.rst | 6 -- CHANGES/1213.bugfix.rst | 7 --- CHANGES/1221.misc.rst | 4 -- 24 files changed, 130 insertions(+), 79 deletions(-) delete mode 100644 CHANGES/1133.doc.rst delete mode 100644 CHANGES/1139.misc.rst delete mode 100644 CHANGES/1142.misc.rst delete mode 100644 CHANGES/1144.misc.rst delete mode 100644 CHANGES/1146.bugfix.rst delete mode 100644 CHANGES/1147.feature.rst delete mode 100644 CHANGES/1155.bugfix.rst delete mode 100644 CHANGES/1160.bugfix.rst delete mode 100644 CHANGES/1161.feature.rst delete mode 100644 CHANGES/1162.bugfix.rst delete mode 100644 CHANGES/1163.feature.rst delete mode 100644 CHANGES/1168.misc.rst delete mode 100644 CHANGES/1170.removal.rst delete mode 100644 CHANGES/1172.feature.rst delete mode 100644 CHANGES/1173.feature.rst delete mode 100644 CHANGES/1176.bugfix.rst delete mode 100644 CHANGES/1178.feature delete mode 100644 CHANGES/1191.feature.rst delete mode 100644 CHANGES/1196.bugfix.rst delete mode 100644 CHANGES/1202.misc.rst delete mode 100644 CHANGES/1210.misc.rst delete mode 100644 CHANGES/1213.bugfix.rst delete mode 100644 CHANGES/1221.misc.rst diff --git a/CHANGES.rst b/CHANGES.rst index afbb2d4a..a778b4b5 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,136 @@ Changelog .. towncrier release notes start +3.0.0b8 (2023-07-17) +===================== + +Features +-------- + +- Added possibility to use custom events in routers (If router does not support custom event it does not break and passes it to included routers). + `#1147 `_ +- Added support for FSM in Forum topics. + + The strategy can be changed in dispatcher: + + .. code-block:: python + + from aiogram.fsm.strategy import FSMStrategy + ... + dispatcher = Dispatcher( + fsm_strategy=FSMStrategy.USER_IN_TOPIC, + storage=..., # Any persistent storage + ) + + .. note:: + + If you have implemented you own storages you should extend record key generation + with new one attribute - :code:`thread_id` + `#1161 `_ +- Improved CallbackData serialization. + + - Minimized UUID (hex without dashes) + - Replaced bool values with int (true=1, false=0) + `#1163 `_ +- Added a tool to make text formatting flexible and easy. + More details on the :ref:`corresponding documentation page ` + `#1172 `_ +- Added :code:`X-Telegram-Bot-Api-Secret-Token` header check + `#1173 `_ +- Made :code:`allowed_updates` list to revolve automatically in start_polling method if not set explicitly. + `#1178 `_ +- Added possibility to pass custom headers to :class:`URLInputFile` object + `#1191 `_ + + +Bugfixes +-------- + +- Change type of result in InlineQueryResult enum for :code:`InlineQueryResultCachedMpeg4Gif` + and :code:`InlineQueryResultMpeg4Gif` to more correct according to documentation. + + Change regexp for entities parsing to more correct (:code:`InlineQueryResultType.yml`). + `#1146 `_ +- Fixed signature of startup/shutdown events to include the :code:`**dispatcher.workflow_data` as the handler arguments. + `#1155 `_ +- Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property + `#1160 `_ +- Fixed compatibility with Python 3.8-3.9 (from previous release) + `#1162 `_ +- Fixed the markdown spoiler parser. + `#1176 `_ +- Fixed workflow data propagation + `#1196 `_ +- Fixed the serialization error associated with nested subtypes + like InputMedia, ChatMember, etc. + + The previously generated code resulted in an invalid schema under pydantic v2, + which has stricter type parsing. + Hence, subtypes without the specification of all subtype unions were generating + an empty object. This has been rectified now. + `#1213 `_ + + +Improved Documentation +---------------------- + +- Changed small grammar typos for :code:`upload_file` + `#1133 `_ + + +Deprecations and Removals +------------------------- + +- Removed text filter in due to is planned to remove this filter few versions ago. + + Use :code:`F.text` instead + `#1170 `_ + + +Misc +---- + +- Added full support of `Bot API 6.6 `_ + + .. danger:: + + Note that this issue has breaking changes described in in the Bot API changelog, + this changes is not breaking in the API but breaking inside aiogram because + Beta stage is not finished. + `#1139 `_ +- Added full support of `Bot API 6.7 `_ + + .. warning:: + + Note that arguments *switch_pm_parameter* and *switch_pm_text* was deprecated + and should be changed to *button* argument as described in API docs. + `#1168 `_ +- Updated `Pydantic to V2 `_ + + .. warning:: + + Be careful, not all libraries is already updated to using V2 + `#1202 `_ +- Added global defaults :code:`disable_web_page_preview` and :code:`protect_content` in addition to :code:`parse_mode` to the Bot instance, + reworked internal request builder mechanism. + `#1142 `_ +- Removed bot parameters from storages + `#1144 `_ + +- Replaced ContextVar's with a new feature called `Validation Context `_ + in Pydantic to improve the clarity, usability, and versatility of handling the Bot instance within method shortcuts. + + .. danger:: + + **Breaking**: The 'bot' argument now is required in `URLInputFile` + `#1210 `_ +- Updated magic-filter with new features + + - Added hint for :code:`len(F)` error + - Added not in operation + `#1221 `_ + + 3.0.0b7 (2023-02-18) ===================== diff --git a/CHANGES/1133.doc.rst b/CHANGES/1133.doc.rst deleted file mode 100644 index 247f0c66..00000000 --- a/CHANGES/1133.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Changed small grammar typos for :code:`upload_file` diff --git a/CHANGES/1139.misc.rst b/CHANGES/1139.misc.rst deleted file mode 100644 index 432607e0..00000000 --- a/CHANGES/1139.misc.rst +++ /dev/null @@ -1,7 +0,0 @@ -Added full support of `Bot API 6.6 `_ - -.. danger:: - - Note that this issue has breaking changes described in in the Bot API changelog, - this changes is not breaking in the API but breaking inside aiogram because - Beta stage is not finished. diff --git a/CHANGES/1142.misc.rst b/CHANGES/1142.misc.rst deleted file mode 100644 index 01e3ee72..00000000 --- a/CHANGES/1142.misc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added global defaults :code:`disable_web_page_preview` and :code:`protect_content` in addition to :code:`parse_mode` to the Bot instance, -reworked internal request builder mechanism. diff --git a/CHANGES/1144.misc.rst b/CHANGES/1144.misc.rst deleted file mode 100644 index 8b3109f0..00000000 --- a/CHANGES/1144.misc.rst +++ /dev/null @@ -1 +0,0 @@ -Removed bot parameters from storages diff --git a/CHANGES/1146.bugfix.rst b/CHANGES/1146.bugfix.rst deleted file mode 100644 index 736df86d..00000000 --- a/CHANGES/1146.bugfix.rst +++ /dev/null @@ -1,4 +0,0 @@ -Change type of result in InlineQueryResult enum for :code:`InlineQueryResultCachedMpeg4Gif` -and :code:`InlineQueryResultMpeg4Gif` to more correct according to documentation. - -Change regexp for entities parsing to more correct (:code:`InlineQueryResultType.yml`). diff --git a/CHANGES/1147.feature.rst b/CHANGES/1147.feature.rst deleted file mode 100644 index 81cf8173..00000000 --- a/CHANGES/1147.feature.rst +++ /dev/null @@ -1 +0,0 @@ -If router does not support custom event it does not break and passes it to included routers diff --git a/CHANGES/1155.bugfix.rst b/CHANGES/1155.bugfix.rst deleted file mode 100644 index 8d264dcf..00000000 --- a/CHANGES/1155.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed signature of startup/shutdown events to include the :code:`**dispatcher.workflow_data` as the handler arguments. diff --git a/CHANGES/1160.bugfix.rst b/CHANGES/1160.bugfix.rst deleted file mode 100644 index 6c5fa45b..00000000 --- a/CHANGES/1160.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property diff --git a/CHANGES/1161.feature.rst b/CHANGES/1161.feature.rst deleted file mode 100644 index e19a1125..00000000 --- a/CHANGES/1161.feature.rst +++ /dev/null @@ -1,17 +0,0 @@ -Added support for FSM in Forum topics. - -The strategy can be changed in dispatcher: - -.. code-block:: python - - from aiogram.fsm.strategy import FSMStrategy - ... - dispatcher = Dispatcher( - fsm_strategy=FSMStrategy.USER_IN_TOPIC, - storage=..., # Any persistent storage - ) - -.. note:: - - If you have implemented you own storages you should extend record key generation - with new one attribute - :code:`thread_id` diff --git a/CHANGES/1162.bugfix.rst b/CHANGES/1162.bugfix.rst deleted file mode 100644 index 16d5be16..00000000 --- a/CHANGES/1162.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed compatibility with Python 3.8-3.9 diff --git a/CHANGES/1163.feature.rst b/CHANGES/1163.feature.rst deleted file mode 100644 index 06e97c3d..00000000 --- a/CHANGES/1163.feature.rst +++ /dev/null @@ -1,4 +0,0 @@ -Improved CallbackData serialization. - -- Minimized UUID (hex without dashes) -- Replaced bool values with int (true=1, false=0) diff --git a/CHANGES/1168.misc.rst b/CHANGES/1168.misc.rst deleted file mode 100644 index 0bce876f..00000000 --- a/CHANGES/1168.misc.rst +++ /dev/null @@ -1,6 +0,0 @@ -Added full support of `Bot API 6.7 `_ - -.. warning:: - - Note that arguments *switch_pm_parameter* and *switch_pm_text* was deprecated - and should be changed to *button* argument as described in API docs. diff --git a/CHANGES/1170.removal.rst b/CHANGES/1170.removal.rst deleted file mode 100644 index c2a06444..00000000 --- a/CHANGES/1170.removal.rst +++ /dev/null @@ -1,3 +0,0 @@ -Removed text filter in due to is planned to remove this filter few versions ago. - -Use :code:`F.text` instead diff --git a/CHANGES/1172.feature.rst b/CHANGES/1172.feature.rst deleted file mode 100644 index 5a1005da..00000000 --- a/CHANGES/1172.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added a tool to make text formatting flexible and easy. -More details on the :ref:`corresponding documentation page ` diff --git a/CHANGES/1173.feature.rst b/CHANGES/1173.feature.rst deleted file mode 100644 index 03ee7422..00000000 --- a/CHANGES/1173.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added :code:`X-Telegram-Bot-Api-Secret-Token` header check diff --git a/CHANGES/1176.bugfix.rst b/CHANGES/1176.bugfix.rst deleted file mode 100644 index 57f67202..00000000 --- a/CHANGES/1176.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed the markdown spoiler parser. diff --git a/CHANGES/1178.feature b/CHANGES/1178.feature deleted file mode 100644 index 654e78ae..00000000 --- a/CHANGES/1178.feature +++ /dev/null @@ -1 +0,0 @@ -Made allowed_updates list to revolve automatically in start_polling method if not set explicitly. diff --git a/CHANGES/1191.feature.rst b/CHANGES/1191.feature.rst deleted file mode 100644 index 2fb3bb1f..00000000 --- a/CHANGES/1191.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added possibility to pass custom headers to :class:`URLInputFile` object diff --git a/CHANGES/1196.bugfix.rst b/CHANGES/1196.bugfix.rst deleted file mode 100644 index db6594a6..00000000 --- a/CHANGES/1196.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed workflow data propagation diff --git a/CHANGES/1202.misc.rst b/CHANGES/1202.misc.rst deleted file mode 100644 index 9aeb4099..00000000 --- a/CHANGES/1202.misc.rst +++ /dev/null @@ -1,6 +0,0 @@ -Updated `Pydantic to V2 `_ - -.. warning:: - - Be careful, not all libraries is already updated to using V2 - (for example at the time, when this warning was added FastAPI still not support V2) diff --git a/CHANGES/1210.misc.rst b/CHANGES/1210.misc.rst deleted file mode 100644 index e4d3589c..00000000 --- a/CHANGES/1210.misc.rst +++ /dev/null @@ -1,6 +0,0 @@ -Replaced ContextVar's with a new feature called `Validation Context `_ -in Pydantic to improve the clarity, usability, and versatility of handling the Bot instance within method shortcuts. - -.. danger:: - - **Breaking**: The 'bot' argument now is required in `URLInputFile` diff --git a/CHANGES/1213.bugfix.rst b/CHANGES/1213.bugfix.rst deleted file mode 100644 index a9787889..00000000 --- a/CHANGES/1213.bugfix.rst +++ /dev/null @@ -1,7 +0,0 @@ -Fixed the serialization error associated with nested subtypes -like InputMedia, ChatMember, etc. - -The previously generated code resulted in an invalid schema under pydantic v2, -which has stricter type parsing. -Hence, subtypes without the specification of all subtype unions were generating -an empty object. This has been rectified now. diff --git a/CHANGES/1221.misc.rst b/CHANGES/1221.misc.rst deleted file mode 100644 index 583ae46a..00000000 --- a/CHANGES/1221.misc.rst +++ /dev/null @@ -1,4 +0,0 @@ -Updated magic-filter with new features - -- Added hint for :code:`len(F)` error -- Added not in operation From 27f48c60de86b5e5d73e86b15ca5c48c6e6453d2 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 17 Jul 2023 23:07:21 +0300 Subject: [PATCH 033/139] Disable hatch bump --- .github/workflows/pypi-release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index c78a89ac..6991e206 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -18,14 +18,14 @@ jobs: python-version: "3.11" - name: Install build dependencies - run: python -m pip install --upgrade build hatch + run: python -m pip install --upgrade build - name: Resolve version id: package-version run: echo "value=$(echo ${{ github.ref }} | sed -e 's/refs\/tags\/v//')" >> $GITHUB_OUTPUT - - name: Bump version - run: hatch version ${{ steps.package-version.outputs.value }} + # - name: Bump version + # run: hatch version ${{ steps.package-version.outputs.value }} - name: Build source distribution run: python -m build . From 479e302cbab556b5ab488e6c0a478f5ab9eb4e10 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 28 Jul 2023 21:54:09 +0300 Subject: [PATCH 034/139] Bump dependencies and own version --- aiogram/__meta__.py | 2 +- pyproject.toml | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 6cd7e1ad..f2a9528b 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.0b8" +__version__ = "3.0.0b9" __api_version__ = "6.7" diff --git a/pyproject.toml b/pyproject.toml index a80c182a..a9d32f1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,11 +40,11 @@ classifiers = [ "Topic :: Communications :: Chat", ] dependencies = [ - "magic-filter~=1.0.10", - "aiohttp~=3.8.4", - "pydantic~=2.0.0", + "magic-filter~=1.0", + "aiohttp~=3.8.5", + "pydantic~=2.1.1", "aiofiles~=23.1.0", - "certifi>=2023.5.7", + "certifi>=2023.7.22", ] dynamic = ["version"] @@ -56,7 +56,7 @@ fast = [ "uvloop>=0.17.0; (sys_platform == 'darwin' or sys_platform == 'linux') and platform_python_implementation != 'PyPy'", ] redis = [ - "redis~=4.5.4", + "redis~=4.6.0", ] proxy = [ "aiohttp-socks~=0.8.0", @@ -77,30 +77,30 @@ test = [ "pytz~=2022.7.1" ] docs = [ - "Sphinx~=5.2.3", + "Sphinx~=7.1.1", "sphinx-intl~=2.0.1", "sphinx-autobuild~=2021.3.14", - "sphinx-copybutton~=0.5.0", - "furo~=2022.9.29", - "sphinx-prompt~=1.5.0", + "sphinx-copybutton~=0.5.2", + "furo~=2023.7.26", + "sphinx-prompt~=1.7.0", "Sphinx-Substitution-Extensions~=2022.2.16", - "towncrier~=22.8.0", - "pygments~=2.4", - "pymdown-extensions~=9.6", - "markdown-include~=0.7.0", - "Pygments~=2.13.0", - "sphinxcontrib-towncrier~=0.3.1a3", + "towncrier~=23.6.0", + "pygments~=2.15.1", + "pymdown-extensions~=10.1", + "markdown-include~=0.8.1", + "Pygments~=2.15.1", + "sphinxcontrib-towncrier~=0.3.2a0", ] dev = [ - "black~=23.3.0", + "black~=23.7.0", "isort~=5.11", - "ruff~=0.0.275", + "ruff~=0.0.280", "mypy~=1.4.1", "toml~=0.10.2", "pre-commit~=3.3.3", "towncrier~=23.6.0", "packaging~=23.0", - "typing-extensions~=4.6.0", + "typing-extensions~=4.7.1", ] [project.urls] From 2ecf9cefd7011621398db4ec48cf894273f0c9d6 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 28 Jul 2023 22:23:32 +0300 Subject: [PATCH 035/139] Removed the use of the context instance (Bot.get_current) from all placements that were used previously. (#1230) * Removed the use of the context instance (Bot.get_current) from all placements that were used previously. * Fixed tests * Added changelog * Change category --- CHANGES/1230.removal.rst | 2 ++ aiogram/client/bot.py | 6 ++---- aiogram/client/context_controller.py | 16 ++++++++------- aiogram/dispatcher/dispatcher.py | 8 ++++---- aiogram/filters/state.py | 2 +- aiogram/handlers/base.py | 2 +- aiogram/types/base.py | 1 + aiogram/utils/chat_action.py | 29 +++++++++++++--------------- tests/conftest.py | 9 ++------- tests/test_handler/test_base.py | 14 ++++++++------ tests/test_utils/test_chat_action.py | 5 ++--- 11 files changed, 45 insertions(+), 49 deletions(-) create mode 100644 CHANGES/1230.removal.rst diff --git a/CHANGES/1230.removal.rst b/CHANGES/1230.removal.rst new file mode 100644 index 00000000..bc1bc5b8 --- /dev/null +++ b/CHANGES/1230.removal.rst @@ -0,0 +1,2 @@ +Removed the use of the context instance (Bot.get_current) from all placements that were used previously. +This is to avoid the use of the context instance in the wrong place. diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index c6721c6f..b7cda3ea 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -230,7 +230,7 @@ from .session.base import BaseSession T = TypeVar("T") -class Bot(ContextInstanceMixin["Bot"]): +class Bot: def __init__( self, token: str, @@ -284,16 +284,14 @@ class Bot(ContextInstanceMixin["Bot"]): """ Generate bot context - :param auto_close: + :param auto_close: close session on exit :return: """ - token = self.set_current(self) try: yield self finally: if auto_close: await self.session.close() - self.reset_current(token) async def me(self) -> User: """ diff --git a/aiogram/client/context_controller.py b/aiogram/client/context_controller.py index f998252f..97795a73 100644 --- a/aiogram/client/context_controller.py +++ b/aiogram/client/context_controller.py @@ -13,13 +13,6 @@ class BotContextController(BaseModel): def model_post_init(self, __context: Any) -> None: self._bot = __context.get("bot") if __context else None - def get_mounted_bot(self) -> Optional["Bot"]: - # Properties are not supported in pydantic BaseModel - # @computed_field decorator is not a solution for this case in due to - # it produces an additional field in model with validation and serialization that - # we don't need here - return self._bot - def as_(self, bot: Optional["Bot"]) -> Self: """ Bind object to a bot instance. @@ -29,3 +22,12 @@ class BotContextController(BaseModel): """ self._bot = bot return self + + @property + def bot(self) -> Optional["Bot"]: + """ + Get bot instance. + + :return: Bot instance + """ + return self._bot diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 64dfac72..eb2d55f2 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -18,7 +18,7 @@ from ..fsm.strategy import FSMStrategy from ..methods import GetUpdates, TelegramMethod from ..methods.base import TelegramType from ..types import Update, User -from ..types.base import UNSET_TYPE, UNSET +from ..types.base import UNSET, UNSET_TYPE from ..types.update import UpdateTypeLookupError from ..utils.backoff import Backoff, BackoffConfig from .event.bases import UNHANDLED, SkipHandler @@ -143,7 +143,7 @@ class Dispatcher(Router): handled = False start_time = loop.time() - if update.get_mounted_bot() != bot: + if update.bot != bot: # Re-mounting update to the current bot instance for making possible to # use it in shortcuts. # Here is update is re-created because we need to propagate context to @@ -184,7 +184,7 @@ class Dispatcher(Router): :param update: :param kwargs: """ - parsed_update = Update(**update) + parsed_update = Update.model_validate(update, context={"bot": bot}) return await self.feed_update(bot=bot, update=parsed_update, **kwargs) @classmethod @@ -558,7 +558,7 @@ class Dispatcher(Router): polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = DEFAULT_BACKOFF_CONFIG, - allowed_updates: Optional[List[str]] = None, + allowed_updates: Optional[Union[List[str], UNSET_TYPE]] = UNSET, handle_signals: bool = True, close_bot_session: bool = True, **kwargs: Any, diff --git a/aiogram/filters/state.py b/aiogram/filters/state.py index 5ad65ae5..82a141c9 100644 --- a/aiogram/filters/state.py +++ b/aiogram/filters/state.py @@ -27,7 +27,7 @@ class StateFilter(Filter): ) async def __call__( - self, obj: Union[TelegramObject], raw_state: Optional[str] = None + self, obj: TelegramObject, raw_state: Optional[str] = None ) -> Union[bool, Dict[str, Any]]: allowed_states = cast(Sequence[StateType], self.states) for allowed_state in allowed_states: diff --git a/aiogram/handlers/base.py b/aiogram/handlers/base.py index 076016fa..0eb1b420 100644 --- a/aiogram/handlers/base.py +++ b/aiogram/handlers/base.py @@ -32,7 +32,7 @@ class BaseHandler(BaseHandlerMixin[T], ABC): if "bot" in self.data: return cast(Bot, self.data["bot"]) - return Bot.get_current(no_error=False) + raise RuntimeError("Bot instance not found in the context") @property def update(self) -> Update: diff --git a/aiogram/types/base.py b/aiogram/types/base.py index b057f59a..641b16df 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -14,6 +14,7 @@ class TelegramObject(BotContextController, BaseModel): frozen=True, populate_by_name=True, arbitrary_types_allowed=True, + defer_build=True, ) diff --git a/aiogram/utils/chat_action.py b/aiogram/utils/chat_action.py index b6bda916..d4778443 100644 --- a/aiogram/utils/chat_action.py +++ b/aiogram/utils/chat_action.py @@ -31,22 +31,19 @@ class ChatActionSender: def __init__( self, *, + bot: Bot, chat_id: Union[str, int], action: str = "typing", interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, - bot: Optional[Bot] = None, ) -> None: """ + :param bot: instance of the bot :param chat_id: target chat id :param action: chat action type :param interval: interval between iterations :param initial_sleep: sleep before first iteration - :param bot: instance of the bot, can be omitted from the context """ - if bot is None: - bot = Bot.get_current(False) - self.chat_id = chat_id self.action = action self.interval = interval @@ -132,7 +129,7 @@ class ChatActionSender: def typing( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -149,7 +146,7 @@ class ChatActionSender: def upload_photo( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -166,7 +163,7 @@ class ChatActionSender: def record_video( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -183,7 +180,7 @@ class ChatActionSender: def upload_video( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -200,7 +197,7 @@ class ChatActionSender: def record_voice( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -217,7 +214,7 @@ class ChatActionSender: def upload_voice( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -234,7 +231,7 @@ class ChatActionSender: def upload_document( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -251,7 +248,7 @@ class ChatActionSender: def choose_sticker( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -268,7 +265,7 @@ class ChatActionSender: def find_location( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -285,7 +282,7 @@ class ChatActionSender: def record_video_note( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": @@ -302,7 +299,7 @@ class ChatActionSender: def upload_video_note( cls, chat_id: Union[int, str], - bot: Optional[Bot] = None, + bot: Bot, interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, ) -> "ChatActionSender": diff --git a/tests/conftest.py b/tests/conftest.py index b7b7774a..1c72f386 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,7 +4,7 @@ import pytest from _pytest.config import UsageError from redis.asyncio.connection import parse_url as parse_redis_url -from aiogram import Bot, Dispatcher +from aiogram import Dispatcher from aiogram.fsm.storage.memory import ( DisabledEventIsolation, MemoryStorage, @@ -109,12 +109,7 @@ async def disabled_isolation(): @pytest.fixture() def bot(): - bot = MockedBot() - token = Bot.set_current(bot) - try: - yield bot - finally: - Bot.reset_current(token) + return MockedBot() @pytest.fixture() diff --git a/tests/test_handler/test_base.py b/tests/test_handler/test_base.py index f79a6a6b..5f3b1225 100644 --- a/tests/test_handler/test_base.py +++ b/tests/test_handler/test_base.py @@ -29,15 +29,17 @@ class TestBaseClassBasedHandler: async def test_bot_from_context(self): event = Update(update_id=42) - handler = MyHandler(event=event, key=42) bot = Bot("42:TEST") - - with pytest.raises(LookupError): - handler.bot - - Bot.set_current(bot) + handler = MyHandler(event=event, key=42, bot=bot) assert handler.bot == bot + async def test_bot_from_context_missing(self): + event = Update(update_id=42) + handler = MyHandler(event=event, key=42) + + with pytest.raises(RuntimeError): + handler.bot + async def test_bot_from_data(self): event = Update(update_id=42) bot = Bot("42:TEST") diff --git a/tests/test_utils/test_chat_action.py b/tests/test_utils/test_chat_action.py index 517b8e90..84cb8abb 100644 --- a/tests/test_utils/test_chat_action.py +++ b/tests/test_utils/test_chat_action.py @@ -36,10 +36,9 @@ class TestChatActionSender: "upload_video_note", ], ) - @pytest.mark.parametrize("pass_bot", [True, False]) - async def test_factory(self, action: str, bot: MockedBot, pass_bot: bool): + async def test_factory(self, action: str, bot: MockedBot): sender_factory = getattr(ChatActionSender, action) - sender = sender_factory(chat_id=42, bot=bot if pass_bot else None) + sender = sender_factory(chat_id=42, bot=bot) assert isinstance(sender, ChatActionSender) assert sender.action == action assert sender.chat_id == 42 From 56f0d9d220f0e15b4a48e0947448587c438b2b81 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 29 Jul 2023 22:36:12 +0300 Subject: [PATCH 036/139] Migration guide 2.x -> 3.0 (#1143) * Initial commit for docs cleanup * Update migration guide * More docs * Added changes description * Small fixes --- .butcher/templates/enums/index.rst.jinja2 | 2 + CHANGES/1143.doc.rst | 1 + aiogram/client/session/base.py | 6 ++ aiogram/dispatcher/router.py | 8 +- aiogram/exceptions.py | 74 ++++++++++++-- aiogram/utils/formatting.py | 4 +- docs/api/enums/index.rst | 2 + docs/api/session/custom_server.rst | 8 +- docs/api/session/index.rst | 1 + docs/api/session/middleware.rst | 75 ++++++++++++++ docs/api/types/error_event.rst | 10 -- docs/conf.py | 3 +- docs/dispatcher/errors.rst | 49 ++++++++++ docs/dispatcher/filters/callback_data.rst | 2 + docs/dispatcher/index.rst | 2 +- docs/dispatcher/middlewares.rst | 2 + docs/dispatcher/observer.rst | 26 ----- docs/dispatcher/router.rst | 44 +++++---- docs/index.rst | 1 + docs/install.rst | 10 -- docs/migration_2_to_3.rst | 114 ++++++++++++++++++++++ docs/utils/formatting.rst | 2 +- docs/utils/keyboard.rst | 1 + pyproject.toml | 1 - 24 files changed, 363 insertions(+), 85 deletions(-) create mode 100644 CHANGES/1143.doc.rst create mode 100644 docs/api/session/middleware.rst delete mode 100644 docs/api/types/error_event.rst create mode 100644 docs/dispatcher/errors.rst delete mode 100644 docs/dispatcher/observer.rst create mode 100644 docs/migration_2_to_3.rst diff --git a/.butcher/templates/enums/index.rst.jinja2 b/.butcher/templates/enums/index.rst.jinja2 index 9cbf463a..23af1de3 100644 --- a/.butcher/templates/enums/index.rst.jinja2 +++ b/.butcher/templates/enums/index.rst.jinja2 @@ -1,3 +1,5 @@ +.. _enums: + ##### Enums ##### diff --git a/CHANGES/1143.doc.rst b/CHANGES/1143.doc.rst new file mode 100644 index 00000000..5c4fea5b --- /dev/null +++ b/CHANGES/1143.doc.rst @@ -0,0 +1 @@ +Improved docs, added basic migration guide (will be expanded later) diff --git a/aiogram/client/session/base.py b/aiogram/client/session/base.py index 9342cbcc..650b44bc 100644 --- a/aiogram/client/session/base.py +++ b/aiogram/client/session/base.py @@ -53,6 +53,12 @@ DEFAULT_TIMEOUT: Final[float] = 60.0 class BaseSession(abc.ABC): + """ + This is base class for all HTTP sessions in aiogram. + + If you want to create your own session, you must inherit from this class. + """ + def __init__( self, api: TelegramAPIServer = PRODUCTION, diff --git a/aiogram/dispatcher/router.py b/aiogram/dispatcher/router.py index 85c41ae8..423b7173 100644 --- a/aiogram/dispatcher/router.py +++ b/aiogram/dispatcher/router.py @@ -53,7 +53,7 @@ class Router: self.chat_member = TelegramEventObserver(router=self, event_name="chat_member") self.chat_join_request = TelegramEventObserver(router=self, event_name="chat_join_request") - self.errors = TelegramEventObserver(router=self, event_name="error") + self.errors = self.error = TelegramEventObserver(router=self, event_name="error") self.startup = EventObserver() self.shutdown = EventObserver() @@ -184,6 +184,12 @@ class Router: router.sub_routers.append(self) def include_routers(self, *routers: Router) -> None: + """ + Attach multiple routers. + + :param routers: + :return: + """ if not routers: raise ValueError("At least one router must be provided") for router in routers: diff --git a/aiogram/exceptions.py b/aiogram/exceptions.py index 7ca7dcdd..2632fcdc 100644 --- a/aiogram/exceptions.py +++ b/aiogram/exceptions.py @@ -6,10 +6,16 @@ from aiogram.utils.link import docs_url class AiogramError(Exception): - pass + """ + Base exception for all aiogram errors. + """ class DetailedAiogramError(AiogramError): + """ + Base exception for all aiogram errors with detailed message. + """ + url: Optional[str] = None def __init__(self, message: str) -> None: @@ -26,14 +32,24 @@ class DetailedAiogramError(AiogramError): class CallbackAnswerException(AiogramError): - pass + """ + Exception for callback answer. + """ class UnsupportedKeywordArgument(DetailedAiogramError): + """ + Exception raised when a keyword argument is passed as filter. + """ + url = docs_url("migration_2_to_3.html", fragment_="filtering-events") class TelegramAPIError(DetailedAiogramError): + """ + Base exception for all Telegram API errors. + """ + label: str = "Telegram server says" def __init__( @@ -50,10 +66,18 @@ class TelegramAPIError(DetailedAiogramError): class TelegramNetworkError(TelegramAPIError): + """ + Base exception for all Telegram network errors. + """ + label = "HTTP Client says" class TelegramRetryAfter(TelegramAPIError): + """ + Exception raised when flood control exceeds. + """ + url = "https://core.telegram.org/bots/faq#my-bot-is-hitting-limits-how-do-i-avoid-this" def __init__( @@ -73,6 +97,10 @@ class TelegramRetryAfter(TelegramAPIError): class TelegramMigrateToChat(TelegramAPIError): + """ + Exception raised when chat has been migrated to a supergroup. + """ + url = "https://core.telegram.org/bots/api#responseparameters" def __init__( @@ -90,38 +118,66 @@ class TelegramMigrateToChat(TelegramAPIError): class TelegramBadRequest(TelegramAPIError): - pass + """ + Exception raised when request is malformed. + """ class TelegramNotFound(TelegramAPIError): - pass + """ + Exception raised when chat, message, user, etc. not found. + """ class TelegramConflictError(TelegramAPIError): - pass + """ + Exception raised when bot token is already used by another application in polling mode. + """ class TelegramUnauthorizedError(TelegramAPIError): - pass + """ + Exception raised when bot token is invalid. + """ class TelegramForbiddenError(TelegramAPIError): - pass + """ + Exception raised when bot is kicked from chat or etc. + """ class TelegramServerError(TelegramAPIError): - pass + """ + Exception raised when Telegram server returns 5xx error. + """ class RestartingTelegram(TelegramServerError): - pass + """ + Exception raised when Telegram server is restarting. + + It seems like this error is not used by Telegram anymore, + but it's still here for backward compatibility. + + Currently, you should expect that Telegram can raise RetryAfter (with timeout 5 seconds) + error instead of this one. + """ class TelegramEntityTooLarge(TelegramNetworkError): + """ + Exception raised when you are trying to send a file that is too large. + """ + url = "https://core.telegram.org/bots/api#sending-files" class ClientDecodeError(AiogramError): + """ + Exception raised when client can't decode response. (Malformed response, etc.) + """ + def __init__(self, message: str, original: Exception, data: Any) -> None: self.message = message self.original = original diff --git a/aiogram/utils/formatting.py b/aiogram/utils/formatting.py index 132e04f2..da00f423 100644 --- a/aiogram/utils/formatting.py +++ b/aiogram/utils/formatting.py @@ -532,7 +532,7 @@ def as_marked_list(*items: NodeType, marker: str = "- ") -> Text: Wrap elements as marked list :param items: - :param marker: line marker, by default is :code:`- ` + :param marker: line marker, by default is '- ' :return: Text """ return as_list(*(Text(marker, item) for item in items)) @@ -544,7 +544,7 @@ def as_numbered_list(*items: NodeType, start: int = 1, fmt: str = "{}. ") -> Tex :param items: :param start: initial number, by default 1 - :param fmt: number format, by default :code:`{}. ` + :param fmt: number format, by default '{}. ' :return: Text """ return as_list(*(Text(fmt.format(index), item) for index, item in enumerate(items, start))) diff --git a/docs/api/enums/index.rst b/docs/api/enums/index.rst index e496f5b4..9b60d606 100644 --- a/docs/api/enums/index.rst +++ b/docs/api/enums/index.rst @@ -1,3 +1,5 @@ +.. _enums: + ##### Enums ##### diff --git a/docs/api/session/custom_server.rst b/docs/api/session/custom_server.rst index 23126551..22c5b6bd 100644 --- a/docs/api/session/custom_server.rst +++ b/docs/api/session/custom_server.rst @@ -1,14 +1,14 @@ Use Custom API server ===================== -.. autoclass:: aiogram.client.telegram.TelegramAPIServer - :members: - For example, if you want to use self-hosted API server: -.. code-block:: python3 +.. code-block:: python session = AiohttpSession( api=TelegramAPIServer.from_base('http://localhost:8082') ) bot = Bot(..., session=session) + +.. autoclass:: aiogram.client.telegram.TelegramAPIServer + :members: diff --git a/docs/api/session/index.rst b/docs/api/session/index.rst index dff24e7a..da92bd4d 100644 --- a/docs/api/session/index.rst +++ b/docs/api/session/index.rst @@ -8,3 +8,4 @@ Client sessions is used for interacting with API server. custom_server base aiohttp + middleware diff --git a/docs/api/session/middleware.rst b/docs/api/session/middleware.rst new file mode 100644 index 00000000..fb06daca --- /dev/null +++ b/docs/api/session/middleware.rst @@ -0,0 +1,75 @@ +########################## +Client session middlewares +########################## + +In some cases you may want to add some middlewares to the client session to customize the behavior of the client. + +Some useful cases that is: + +- Log the outgoing requests +- Customize the request parameters +- Handle rate limiting errors and retry the request +- others ... + +So, you can do it using client session middlewares. +A client session middleware is a function (or callable class) that receives the request and the next middleware to call. +The middleware can modify the request and then call the next middleware to continue the request processing. + +How to register client session middleware? +========================================== + +Register using register method +------------------------------ + +.. code-block:: python + + bot.session.middleware(RequestLogging(ignore_methods=[GetUpdates])) + +Register using decorator +------------------------ + +.. code-block:: python + + @bot.session.middleware() + async def my_middleware( + make_request: NextRequestMiddlewareType[TelegramType], + bot: "Bot", + method: TelegramMethod[TelegramType], + ) -> Response[TelegramType]: + # do something with request + return await make_request(bot, method) + + +Example +======= + +Class based session middleware +------------------------------ + +.. literalinclude:: ../../../aiogram/client/session/middlewares/request_logging.py + :lines: 16- + :language: python + :linenos: + +.. note:: + + this middlewware is already implemented inside aiogram, so, if you want to use it you can + just import it :code:`from aiogram.client.session.middlewares.request_logging import RequestLogging` + + +Function based session middleware +--------------------------------- + +.. code-block:: python + + async def __call__( + self, + make_request: NextRequestMiddlewareType[TelegramType], + bot: "Bot", + method: TelegramMethod[TelegramType], + ) -> Response[TelegramType]: + try: + # do something with request + return await make_request(bot, method) + finally: + # do something after request diff --git a/docs/api/types/error_event.rst b/docs/api/types/error_event.rst deleted file mode 100644 index 562ea15b..00000000 --- a/docs/api/types/error_event.rst +++ /dev/null @@ -1,10 +0,0 @@ -########## -ErrorEvent -########## - - -.. automodule:: aiogram.types.error_event - :members: - :member-order: bysource - :undoc-members: True - :exclude-members: model_config,model_fields diff --git a/docs/conf.py b/docs/conf.py index 1c89245d..583a1922 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,7 +28,6 @@ extensions = [ "sphinx.ext.autodoc", "sphinx.ext.ifconfig", "sphinx.ext.intersphinx", - "sphinx-prompt", "sphinx_substitution_extensions", "sphinx_copybutton", "sphinxcontrib.towncrier.ext", @@ -67,6 +66,6 @@ texinfo_documents = [ # add_module_names = False -towncrier_draft_autoversion_mode = 'draft' +towncrier_draft_autoversion_mode = "draft" towncrier_draft_include_empty = False towncrier_draft_working_directory = Path(__file__).parent.parent diff --git a/docs/dispatcher/errors.rst b/docs/dispatcher/errors.rst new file mode 100644 index 00000000..ace9a81b --- /dev/null +++ b/docs/dispatcher/errors.rst @@ -0,0 +1,49 @@ +###### +Errors +###### + + +Handling errors +=============== + +Is recommended way that you should use errors inside handlers using try-except block, +but in common cases you can use global errors handler at router or dispatcher level. + +If you specify errors handler for router - it will be used for all handlers inside this router. + +If you specify errors handler for dispatcher - it will be used for all handlers inside all routers. + +.. code-block:: python + + @router.error(ExceptionTypeFilter(MyCustomException), F.update.message.as_("message")) + async def handle_my_custom_exception(event: ErrorEvent, message: Message): + # do something with error + await message.answer("Oops, something went wrong!") + + + @router.error() + async def error_handler(event: ErrorEvent): + logger.critical("Critical error caused by %s", event.exception, exc_info=True) + # do something with error + ... + + +.. _error-event: + +ErrorEvent +========== + +.. automodule:: aiogram.types.error_event + :members: + :member-order: bysource + :undoc-members: True + :exclude-members: model_config,model_fields + +.. _error-types: + +Error types +=========== + +.. automodule:: aiogram.exceptions + :members: + :member-order: bysource diff --git a/docs/dispatcher/filters/callback_data.rst b/docs/dispatcher/filters/callback_data.rst index ccfc019f..61d7a40a 100644 --- a/docs/dispatcher/filters/callback_data.rst +++ b/docs/dispatcher/filters/callback_data.rst @@ -1,3 +1,5 @@ +.. _callback-data-factory + ============================== Callback Data Factory & Filter ============================== diff --git a/docs/dispatcher/index.rst b/docs/dispatcher/index.rst index c684ba36..b7299ea9 100644 --- a/docs/dispatcher/index.rst +++ b/docs/dispatcher/index.rst @@ -17,7 +17,6 @@ Dispatcher is subclass of router and should be always is root router. .. toctree:: - observer router dispatcher class_based_handlers/index @@ -25,3 +24,4 @@ Dispatcher is subclass of router and should be always is root router. middlewares finite_state_machine/index flags + errors diff --git a/docs/dispatcher/middlewares.rst b/docs/dispatcher/middlewares.rst index 55875eb2..56d07ef1 100644 --- a/docs/dispatcher/middlewares.rst +++ b/docs/dispatcher/middlewares.rst @@ -1,3 +1,5 @@ +.. _middlewares: + =========== Middlewares =========== diff --git a/docs/dispatcher/observer.rst b/docs/dispatcher/observer.rst deleted file mode 100644 index 9276dcc4..00000000 --- a/docs/dispatcher/observer.rst +++ /dev/null @@ -1,26 +0,0 @@ -######## -Observer -######## - -Observer is used for filtering and handling different events. That is part of internal API with some public methods and is recommended to don't use methods is not listed here. - -In `aiogram` framework is available two variants of observer: - -- `EventObserver <#eventobserver>`__ -- `TelegramEventObserver <#telegrameventobserver>`__ - - -EventObserver -============= - -.. autoclass:: aiogram.dispatcher.event.event.EventObserver - :members: register, trigger, __call__ - :member-order: bysource - - -TelegramEventObserver -===================== - -.. autoclass:: aiogram.dispatcher.event.telegram.TelegramEventObserver - :members: register, trigger, __call__, bind_filter, middleware, outer_middleware - :member-order: bysource diff --git a/docs/dispatcher/router.rst b/docs/dispatcher/router.rst index 40d91769..13555ec9 100644 --- a/docs/dispatcher/router.rst +++ b/docs/dispatcher/router.rst @@ -3,10 +3,12 @@ Router ###### .. autoclass:: aiogram.dispatcher.router.Router - :members: __init__, include_router + :members: __init__, include_router, include_routers, resolve_used_update_types :show-inheritance: +.. _Event observers: + Event observers =============== @@ -19,19 +21,6 @@ Here is the list of available observers and examples of how to register handlers In these examples only decorator-style registering handlers are used, but if you don't like @decorators just use :obj:`.register(...)` method instead. -Update ------- - -.. code-block:: python - - @router.update() - async def message_handler(update: types.Update) -> Any: pass - -.. note:: - - By default Router already has an update handler which route all event types to another observers. - - Message ------- @@ -143,9 +132,12 @@ Errors @router.errors() async def error_handler(exception: ErrorEvent) -> Any: pass -Is useful for handling errors from other handlers +Is useful for handling errors from other handlers, error event described :ref:`here ` + +.. _Nested routers: + Nested routers ============== @@ -159,8 +151,8 @@ Nested routers Example: .. code-block:: python - :caption: module_2.py - :name: module_2 + :caption: module_1.py + :name: module_1 router2 = Router() @@ -170,7 +162,7 @@ Example: .. code-block:: python :caption: module_2.py - :name: module_1 + :name: module_2 from module_2 import router2 @@ -179,6 +171,22 @@ Example: router1.include_router(router2) +Update +------ + +.. code-block:: python + + @dispatcher.update() + async def message_handler(update: types.Update) -> Any: pass + +.. warning:: + + The only root Router (Dispatcher) can handle this type of event. + +.. note:: + + Dispatcher already has default handler for this event type, so you can use it for handling all updates that are not handled by any other handlers. + How it works? ------------- diff --git a/docs/index.rst b/docs/index.rst index d6ffb067..6be454e7 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,6 +12,7 @@ Contents :maxdepth: 3 install + migration_2_to_3 api/index dispatcher/index utils/index diff --git a/docs/install.rst b/docs/install.rst index 7dbf3cf8..7a3b8218 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -2,9 +2,6 @@ Installation ############ -Stable (2.x) -============ - From PyPI --------- @@ -35,10 +32,3 @@ From GitHub .. code-block:: bash pip install https://github.com/aiogram/aiogram/archive/refs/heads/dev-3.x.zip - -From AUR --------- - -.. code-block:: bash - - yay -S python-aiogram3 diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst new file mode 100644 index 00000000..c407ce8b --- /dev/null +++ b/docs/migration_2_to_3.rst @@ -0,0 +1,114 @@ +========================== +Migration FAQ (2.x -> 3.0) +========================== + +.. danger:: + + This guide is still in progress. + +This version introduces much many breaking changes and architectural improvements, +helping to reduce global variables count in your code, provides useful mechanisms +to separate your code to modules or just make sharable modules via packages on the PyPi, +makes middlewares and filters more controllable and others. + +On this page you can read about points that changed corresponding to last stable 2.x version. + +.. note:: + + This page is most like a detailed changelog than a migration guide, + but it will be updated in the future. + + Feel free to contribute to this page, if you find something that is not mentioned here. + + +Dispatcher +========== + +- :class:`Dispatcher` class no longer accepts the `Bot` instance into the initializer, + it should be passed to dispatcher only for starting polling or handling event from webhook. + Also this way adds possibility to use multiple bot instances at the same time ("multibot") +- :class:`Dispatcher` now can be extended with another Dispatcher-like + thing named :class:`Router` (:ref:`Read more » `). + With routes you can easily separate your code to multiple modules + and may be share this modules between projects. +- Removed the **_handler** suffix from all event handler decorators and registering methods. + (:ref:`Read more » `) +- Executor entirely removed, now you can use Dispatcher directly to start polling or webhook. + +Filtering events +================ + +- Keyword filters can no more be used, use filters explicitly. (`Read more » `_) +- In due to keyword filters was removed all enabled by default filters (state and content_type now is not enabled), + so you should specify them explicitly if you want to use. + For example instead of using :code:`@dp.message_handler(content_types=ContentType.PHOTO)` + you should use :code:`@router.message(F.photo)` +- Most of common filters is replaced by "magic filter". (:ref:`Read more » `) +- Now by default message handler receives any content type, + if you want specific one just add the filters (Magic or any other) +- State filter now is not enabled by default, that's mean if you using :code:`state="*"` in v2 + then you should not pass any state filter in v3, and vice versa, + if the state in v2 is not specified now you should specify the state. +- Added possibility to register per-router global filters, that helps to reduces + the number of repetitions in the code and makes easily way to control + for what each router will be used. + +Bot API +======= + +- Now all API methods is classes with validation (via `pydantic `_) + (all API calls is also available as methods in the Bot class). +- Added more pre-defined Enums and moved into `aiogram.enums` sub-package. For example chat type enum now is + :class:`aiogram.enums.ChatType` instead of :class:`aiogram.types.chat.ChatType`. + (:ref:`Read more » `) +- Separated HTTP client session into container that can be reused between different + Bot instances in the application. +- API Exceptions is no more classified by specific message in due to Telegram has no documented error codes. + But all errors is classified by HTTP status code and for each method only one case can be caused with the same code, + so in most cases you should check that only error type (by status-code) without checking error message. + (:ref:`Read more » `) + +Middlewares +=========== + +- Middlewares can now control a execution context, e.g. using context managers (:ref:`Read more » `) +- All contextual data now is shared between middlewares, filters and handlers to end-to-end use. + For example now you can easily pass some data into context inside middleware and + get it in the filters layer as the same way as in the handlers via keyword arguments. +- Added mechanism named **flags**, that helps to customize handler behavior + in conjunction with middlewares. (:ref:`Read more » `) + +Keyboard Markup +=============== + +- Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` + and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has no methods to extend it, + instead you have to use markup builders :class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` + and :class:`aiogram.utils.keyboard.KeyboardBuilder` respectively + (:ref:`Read more » `) + + +Callbacks data +============== + +- Callback data factory now is strictly typed via `pydantic `_ models + (:ref:`Read more » `) + +Finite State machine +==================== + +- State filter will no more added to all handlers, you will need to specify state if you want +- Added possibility to change FSM strategy, for example if you want to control state + for each user in chat topics instead of user in chat you can specify it in the Dispatcher. + +Sending Files +============= + +- From now you should wrap sending files into InputFile object before send instead of passing + IO object directly to the API method. (:ref:`Read more » `) + +Webhook +======= + +- Simplified aiohttp web app configuration +- By default added possibility to upload files when you use reply into webhook diff --git a/docs/utils/formatting.rst b/docs/utils/formatting.rst index 96d727f3..898c1d13 100644 --- a/docs/utils/formatting.rst +++ b/docs/utils/formatting.rst @@ -1,4 +1,4 @@ -.. _formatting-tool +.. _formatting-tool: ========== Formatting diff --git a/docs/utils/keyboard.rst b/docs/utils/keyboard.rst index 752ffb0e..8988244e 100644 --- a/docs/utils/keyboard.rst +++ b/docs/utils/keyboard.rst @@ -1,3 +1,4 @@ +.. _keyboard-builder ================ Keyboard builder ================ diff --git a/pyproject.toml b/pyproject.toml index a9d32f1d..d4471685 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,7 +82,6 @@ docs = [ "sphinx-autobuild~=2021.3.14", "sphinx-copybutton~=0.5.2", "furo~=2023.7.26", - "sphinx-prompt~=1.7.0", "Sphinx-Substitution-Extensions~=2022.2.16", "towncrier~=23.6.0", "pygments~=2.15.1", From 8ad0a1efb745ee53fc3e68f18da464b7e2cf15b7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 29 Jul 2023 22:59:43 +0300 Subject: [PATCH 037/139] Ensure all message types are assigned to the correct bot. (#1232) * Ensure all message types are assigned to the correct bot. * Added changelog --- CHANGES/1232.bugfix.rst | 1 + aiogram/types/message.py | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 CHANGES/1232.bugfix.rst diff --git a/CHANGES/1232.bugfix.rst b/CHANGES/1232.bugfix.rst new file mode 100644 index 00000000..ad5957c2 --- /dev/null +++ b/CHANGES/1232.bugfix.rst @@ -0,0 +1 @@ +Fixed bot assignment in the :code:`Message.send_copy` shortcut diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 6d022960..0e539042 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -2560,7 +2560,7 @@ class Message(TelegramObject): entities = self.entities or self.caption_entities if self.text: - return SendMessage(text=text, entities=entities, **kwargs) + return SendMessage(text=text, entities=entities, **kwargs).as_(self._bot) if self.audio: return SendAudio( audio=self.audio.file_id, @@ -2570,29 +2570,29 @@ class Message(TelegramObject): duration=self.audio.duration, caption_entities=entities, **kwargs, - ) + ).as_(self._bot) if self.animation: return SendAnimation( animation=self.animation.file_id, caption=text, caption_entities=entities, **kwargs - ) + ).as_(self._bot) if self.document: return SendDocument( document=self.document.file_id, caption=text, caption_entities=entities, **kwargs - ) + ).as_(self._bot) if self.photo: return SendPhoto( photo=self.photo[-1].file_id, caption=text, caption_entities=entities, **kwargs - ) + ).as_(self._bot) if self.sticker: return SendSticker(sticker=self.sticker.file_id, **kwargs) if self.video: return SendVideo( video=self.video.file_id, caption=text, caption_entities=entities, **kwargs - ) + ).as_(self._bot) if self.video_note: - return SendVideoNote(video_note=self.video_note.file_id, **kwargs) + return SendVideoNote(video_note=self.video_note.file_id, **kwargs).as_(self._bot) if self.voice: - return SendVoice(voice=self.voice.file_id, **kwargs) + return SendVoice(voice=self.voice.file_id, **kwargs).as_(self._bot) if self.contact: return SendContact( phone_number=self.contact.phone_number, @@ -2600,7 +2600,7 @@ class Message(TelegramObject): last_name=self.contact.last_name, vcard=self.contact.vcard, **kwargs, - ) + ).as_(self._bot) if self.venue: return SendVenue( latitude=self.venue.location.latitude, @@ -2610,19 +2610,19 @@ class Message(TelegramObject): foursquare_id=self.venue.foursquare_id, foursquare_type=self.venue.foursquare_type, **kwargs, - ) + ).as_(self._bot) if self.location: return SendLocation( latitude=self.location.latitude, longitude=self.location.longitude, **kwargs - ) + ).as_(self._bot) if self.poll: return SendPoll( question=self.poll.question, options=[option.text for option in self.poll.options], **kwargs, - ) + ).as_(self._bot) if self.dice: # Dice value can't be controlled - return SendDice(**kwargs) + return SendDice(**kwargs).as_(self._bot) raise TypeError("This type of message can't be copied.") From 98a03faf77a33777ae1d952d8f3aa58990ffed02 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 29 Jul 2023 23:06:37 +0300 Subject: [PATCH 038/139] Added a few words about throttling --- docs/migration_2_to_3.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index c407ce8b..c21cd158 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -34,6 +34,9 @@ Dispatcher - Removed the **_handler** suffix from all event handler decorators and registering methods. (:ref:`Read more » `) - Executor entirely removed, now you can use Dispatcher directly to start polling or webhook. +- Throttling method is completely removed, now you can use middlewares to control + the execution context and use any throttling mechanism you want. + Filtering events ================ @@ -53,6 +56,7 @@ Filtering events the number of repetitions in the code and makes easily way to control for what each router will be used. + Bot API ======= @@ -68,6 +72,7 @@ Bot API so in most cases you should check that only error type (by status-code) without checking error message. (:ref:`Read more » `) + Middlewares =========== @@ -78,6 +83,7 @@ Middlewares - Added mechanism named **flags**, that helps to customize handler behavior in conjunction with middlewares. (:ref:`Read more » `) + Keyboard Markup =============== @@ -94,6 +100,7 @@ Callbacks data - Callback data factory now is strictly typed via `pydantic `_ models (:ref:`Read more » `) + Finite State machine ==================== @@ -101,12 +108,14 @@ Finite State machine - Added possibility to change FSM strategy, for example if you want to control state for each user in chat topics instead of user in chat you can specify it in the Dispatcher. + Sending Files ============= - From now you should wrap sending files into InputFile object before send instead of passing IO object directly to the API method. (:ref:`Read more » `) + Webhook ======= From 98780dfb49b3208a92d2922198e7412fddf5439d Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 00:01:23 +0300 Subject: [PATCH 039/139] Added model validation to remove UNSET before field validation (#1233) * Add model validation to remove UNSET before field validation Updated aiogram/types/base.py to include a model validator which removes any 'UNSET' before field validation. This change was necessary to correctly handle `parse_mode` where 'UNSET' is used as a sentinel value. Without the removal of 'UNSET', it would create issues when passed to model initialization from `Bot.method_name`. 'UNSET' was also added to typing. Tiny documentation fix was made. * Added changelog --- CHANGES/1233.bugfix.rst | 4 ++++ aiogram/types/base.py | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 CHANGES/1233.bugfix.rst diff --git a/CHANGES/1233.bugfix.rst b/CHANGES/1233.bugfix.rst new file mode 100644 index 00000000..17aa8fbc --- /dev/null +++ b/CHANGES/1233.bugfix.rst @@ -0,0 +1,4 @@ +Added model validation to remove UNSET before field validation. +This change was necessary to correctly handle parse_mode where 'UNSET' is used as a sentinel value. +Without the removal of 'UNSET', it would create issues when passed to model initialization from Bot.method_name. +'UNSET' was also added to typing. diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 641b16df..9c24c703 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -1,7 +1,7 @@ -from typing import Any +from typing import Any, Dict from unittest.mock import sentinel -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, model_validator from aiogram.client.context_controller import BotContextController @@ -17,6 +17,19 @@ class TelegramObject(BotContextController, BaseModel): defer_build=True, ) + @model_validator(mode="before") + @classmethod + def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]: + """ + Remove UNSET before fields validation. + + We use UNSET as a sentinel value for `parse_mode` and replace it to real value later. + It isn't a problem when it's just default value for a model field, + but UNSET might be passed to a model initialization from `Bot.method_name`, + so we must take care of it and remove it before fields validation. + """ + return {k: v for k, v in values.items() if not isinstance(v, UNSET_TYPE)} + class MutableTelegramObject(TelegramObject): model_config = ConfigDict( @@ -24,7 +37,7 @@ class MutableTelegramObject(TelegramObject): ) -# special sentinel object which used in situation when None might be a useful value +# special sentinel object which used in a situation when None might be a useful value UNSET: Any = sentinel.UNSET UNSET_PARSE_MODE: Any = sentinel.UNSET_PARSE_MODE UNSET_DISABLE_WEB_PAGE_PREVIEW: Any = sentinel.UNSET_DISABLE_WEB_PAGE_PREVIEW From 72ff444a2c769b6d5e8e7f3637d96d25e379b9fc Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 00:07:42 +0300 Subject: [PATCH 040/139] Update a migration guide --- docs/migration_2_to_3.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index c21cd158..6fc90f7c 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -36,6 +36,10 @@ Dispatcher - Executor entirely removed, now you can use Dispatcher directly to start polling or webhook. - Throttling method is completely removed, now you can use middlewares to control the execution context and use any throttling mechanism you want. +- Removed global context variables from the API types, Bot and Dispatcher object, + from now if you want to get current bot instance inside handlers or filters you should + accept the argument :code:`bot: Bot` and use it instead of :code:`Bot.get_current()` + Inside middlewares it can be accessed via :code:`data["bot"]`. Filtering events From a1513ddb2d13d17bc9d29d646e4ed95e0a37dd1e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 17:29:45 +0300 Subject: [PATCH 041/139] Added shortcuts for ChatMemberUpdate event (#1234) * Added shortcuts for ChatMemberUpdate event * Added changelog --- .butcher/types/ChatMemberUpdated/aliases.yml | 68 + CHANGES/1234.feature.rst | 2 + aiogram/types/chat_member_updated.py | 1134 ++++++++++++++++- docs/api/methods/send_animation.rst | 1 + docs/api/methods/send_audio.rst | 1 + docs/api/methods/send_contact.rst | 1 + docs/api/methods/send_dice.rst | 1 + docs/api/methods/send_document.rst | 1 + docs/api/methods/send_game.rst | 1 + docs/api/methods/send_invoice.rst | 1 + docs/api/methods/send_location.rst | 1 + docs/api/methods/send_media_group.rst | 1 + docs/api/methods/send_message.rst | 1 + docs/api/methods/send_photo.rst | 1 + docs/api/methods/send_poll.rst | 1 + docs/api/methods/send_sticker.rst | 1 + docs/api/methods/send_venue.rst | 1 + docs/api/methods/send_video.rst | 1 + docs/api/methods/send_video_note.rst | 1 + docs/api/methods/send_voice.rst | 1 + .../test_methods/test_send_message.py | 1 - .../test_types/test_chat_member_updated.py | 124 ++ 22 files changed, 1343 insertions(+), 3 deletions(-) create mode 100644 .butcher/types/ChatMemberUpdated/aliases.yml create mode 100644 CHANGES/1234.feature.rst create mode 100644 tests/test_api/test_types/test_chat_member_updated.py diff --git a/.butcher/types/ChatMemberUpdated/aliases.yml b/.butcher/types/ChatMemberUpdated/aliases.yml new file mode 100644 index 00000000..ee220974 --- /dev/null +++ b/.butcher/types/ChatMemberUpdated/aliases.yml @@ -0,0 +1,68 @@ +answer: + method: sendMessage + fill: &fill-answer + chat_id: self.chat.id + +answer_animation: + method: sendAnimation + fill: *fill-answer + +answer_audio: + method: sendAudio + fill: *fill-answer + +answer_contact: + method: sendContact + fill: *fill-answer + +answer_document: + method: sendDocument + fill: *fill-answer + +answer_game: + method: sendGame + fill: *fill-answer + +answer_invoice: + method: sendInvoice + fill: *fill-answer + +answer_location: + method: sendLocation + fill: *fill-answer + +answer_media_group: + method: sendMediaGroup + fill: *fill-answer + +answer_photo: + method: sendPhoto + fill: *fill-answer + +answer_poll: + method: sendPoll + fill: *fill-answer + +answer_dice: + method: sendDice + fill: *fill-answer + +answer_sticker: + method: sendSticker + fill: *fill-answer + +answer_venue: + method: sendVenue + fill: *fill-answer + +answer_video: + method: sendVideo + fill: *fill-answer + +answer_video_note: + method: sendVideoNote + fill: *fill-answer + +answer_voice: + method: sendVoice + fill: *fill-answer diff --git a/CHANGES/1234.feature.rst b/CHANGES/1234.feature.rst new file mode 100644 index 00000000..90bfb72f --- /dev/null +++ b/CHANGES/1234.feature.rst @@ -0,0 +1,2 @@ +Added new shortcuts for :class:`aiogram.types.chat_member_updated.aiogramChatMemberUpdated` +to send message to chat that member joined/left. diff --git a/aiogram/types/chat_member_updated.py b/aiogram/types/chat_member_updated.py index 5931da6f..7e15dab5 100644 --- a/aiogram/types/chat_member_updated.py +++ b/aiogram/types/chat_member_updated.py @@ -1,13 +1,37 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from pydantic import Field -from .base import TelegramObject +from .base import ( + UNSET_DISABLE_WEB_PAGE_PREVIEW, + UNSET_PARSE_MODE, + UNSET_PROTECT_CONTENT, + TelegramObject, +) if TYPE_CHECKING: + from ..methods import ( + SendAnimation, + SendAudio, + SendContact, + SendDice, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, + ) from .chat import Chat from .chat_invite_link import ChatInviteLink from .chat_member_administrator import ChatMemberAdministrator @@ -16,6 +40,17 @@ if TYPE_CHECKING: from .chat_member_member import ChatMemberMember from .chat_member_owner import ChatMemberOwner from .chat_member_restricted import ChatMemberRestricted + from .force_reply import ForceReply + from .inline_keyboard_markup import InlineKeyboardMarkup + from .input_file import InputFile + from .input_media_audio import InputMediaAudio + from .input_media_document import InputMediaDocument + from .input_media_photo import InputMediaPhoto + from .input_media_video import InputMediaVideo + from .labeled_price import LabeledPrice + from .message_entity import MessageEntity + from .reply_keyboard_markup import ReplyKeyboardMarkup + from .reply_keyboard_remove import ReplyKeyboardRemove from .user import User @@ -54,3 +89,1098 @@ class ChatMemberUpdated(TelegramObject): """*Optional*. Chat invite link, which was used by the user to join the chat; for joining by invite link events only.""" via_chat_folder_invite_link: Optional[bool] = None """*Optional*. True, if the user joined the chat via a chat folder invite link""" + + def answer( + self, + text: str, + message_thread_id: Optional[int] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendMessage: + """ + Shortcut for method :class:`aiogram.methods.send_message.SendMessage` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send text messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendmessage + + :param text: Text of the message to be sent, 1-4096 characters after entities parsing + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param parse_mode: Mode for parsing entities in the message text. See `formatting options `_ for more details. + :param entities: A JSON-serialized list of special entities that appear in message text, which can be specified instead of *parse_mode* + :param disable_web_page_preview: Disables link previews for links in this message + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_message.SendMessage` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMessage + + return SendMessage( + chat_id=self.chat.id, + text=text, + message_thread_id=message_thread_id, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_animation( + self, + animation: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAnimation: + """ + Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendanimation + + :param animation: Animation to send. Pass a file_id as String to send an animation that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation from the Internet, or upload a new animation using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent animation in seconds + :param width: Animation width + :param height: Animation height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the animation caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_animation.SendAnimation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAnimation + + return SendAnimation( + chat_id=self.chat.id, + animation=animation, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_audio( + self, + audio: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAudio: + """ + Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .MP3 or .M4A format. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future. + For sending voice messages, use the :class:`aiogram.methods.send_voice.SendVoice` method instead. + + Source: https://core.telegram.org/bots/api#sendaudio + + :param audio: Audio file to send. Pass a file_id as String to send an audio file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Audio caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the audio caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the audio in seconds + :param performer: Performer + :param title: Track name + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_audio.SendAudio` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAudio + + return SendAudio( + chat_id=self.chat.id, + audio=audio, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_contact( + self, + phone_number: str, + first_name: str, + message_thread_id: Optional[int] = None, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendContact: + """ + Shortcut for method :class:`aiogram.methods.send_contact.SendContact` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send phone contacts. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendcontact + + :param phone_number: Contact's phone number + :param first_name: Contact's first name + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param last_name: Contact's last name + :param vcard: Additional data about the contact in the form of a `vCard `_, 0-2048 bytes + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_contact.SendContact` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendContact + + return SendContact( + chat_id=self.chat.id, + phone_number=phone_number, + first_name=first_name, + message_thread_id=message_thread_id, + last_name=last_name, + vcard=vcard, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_document( + self, + document: Union[InputFile, str], + message_thread_id: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDocument: + """ + Shortcut for method :class:`aiogram.methods.send_document.SendDocument` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send general files. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#senddocument + + :param document: File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Document caption (may also be used when resending documents by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the document caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param disable_content_type_detection: Disables automatic server-side content type detection for files uploaded using multipart/form-data + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_document.SendDocument` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDocument + + return SendDocument( + chat_id=self.chat.id, + document=document, + message_thread_id=message_thread_id, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_game( + self, + game_short_name: str, + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendGame: + """ + Shortcut for method :class:`aiogram.methods.send_game.SendGame` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a game. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendgame + + :param game_short_name: Short name of the game, serves as the unique identifier for the game. Set up your games via `@BotFather `_. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game. + :return: instance of method :class:`aiogram.methods.send_game.SendGame` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendGame + + return SendGame( + chat_id=self.chat.id, + game_short_name=game_short_name, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_invoice( + self, + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + message_thread_id: Optional[int] = None, + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + start_parameter: Optional[str] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendInvoice: + """ + Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send invoices. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendinvoice + + :param title: Product name, 1-32 characters + :param description: Product description, 1-255 characters + :param payload: Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes. + :param provider_token: Payment provider token, obtained via `@BotFather `_ + :param currency: Three-letter ISO 4217 currency code, see `more on currencies `_ + :param prices: Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.) + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param max_tip_amount: The maximum accepted amount for tips in the *smallest units* of the currency (integer, **not** float/double). For example, for a maximum tip of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* parameter in `currencies.json `_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0 + :param suggested_tip_amounts: A JSON-serialized 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 *max_tip_amount*. + :param start_parameter: 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 + :param provider_data: JSON-serialized 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. + :param photo_url: 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. + :param photo_size: Photo size in bytes + :param photo_width: Photo width + :param photo_height: Photo height + :param need_name: Pass :code:`True` if you require the user's full name to complete the order + :param need_phone_number: Pass :code:`True` if you require the user's phone number to complete the order + :param need_email: Pass :code:`True` if you require the user's email address to complete the order + :param need_shipping_address: Pass :code:`True` if you require the user's shipping address to complete the order + :param send_phone_number_to_provider: Pass :code:`True` if the user's phone number should be sent to provider + :param send_email_to_provider: Pass :code:`True` if the user's email address should be sent to provider + :param is_flexible: Pass :code:`True` if the final price depends on the shipping method + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Pay :code:`total price`' button will be shown. If not empty, the first button must be a Pay button. + :return: instance of method :class:`aiogram.methods.send_invoice.SendInvoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendInvoice + + return SendInvoice( + chat_id=self.chat.id, + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + message_thread_id=message_thread_id, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + start_parameter=start_parameter, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_location( + self, + latitude: float, + longitude: float, + message_thread_id: Optional[int] = None, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendLocation: + """ + Shortcut for method :class:`aiogram.methods.send_location.SendLocation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send point on the map. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendlocation + + :param latitude: Latitude of the location + :param longitude: Longitude of the location + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param horizontal_accuracy: The radius of uncertainty for the location, measured in meters; 0-1500 + :param live_period: Period in seconds for which the location will be updated (see `Live Locations `_, should be between 60 and 86400. + :param heading: For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified. + :param proximity_alert_radius: For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_location.SendLocation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendLocation + + return SendLocation( + chat_id=self.chat.id, + latitude=latitude, + longitude=longitude, + message_thread_id=message_thread_id, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_media_group( + self, + media: List[Union[InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo]], + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + **kwargs: Any, + ) -> SendMediaGroup: + """ + Shortcut for method :class:`aiogram.methods.send_media_group.SendMediaGroup` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a group of photos, videos, documents or audios as an album. Documents and audio files can be only grouped in an album with messages of the same type. On success, an array of `Messages `_ that were sent is returned. + + Source: https://core.telegram.org/bots/api#sendmediagroup + + :param media: A JSON-serialized array describing messages to be sent, must include 2-10 items + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends messages `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent messages from forwarding and saving + :param reply_to_message_id: If the messages are a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :return: instance of method :class:`aiogram.methods.send_media_group.SendMediaGroup` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMediaGroup + + return SendMediaGroup( + chat_id=self.chat.id, + media=media, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + **kwargs, + ).as_(self._bot) + + def answer_photo( + self, + photo: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPhoto: + """ + Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send photos. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendphoto + + :param photo: Photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the photo caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_photo.SendPhoto` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPhoto + + return SendPhoto( + chat_id=self.chat.id, + photo=photo, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_poll( + self, + question: str, + options: List[str], + message_thread_id: Optional[int] = None, + is_anonymous: Optional[bool] = None, + type: Optional[str] = None, + allows_multiple_answers: Optional[bool] = None, + correct_option_id: Optional[int] = None, + explanation: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET_PARSE_MODE, + explanation_entities: Optional[List[MessageEntity]] = None, + open_period: Optional[int] = None, + close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + is_closed: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPoll: + """ + Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a native poll. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendpoll + + :param question: Poll question, 1-300 characters + :param options: A JSON-serialized list of answer options, 2-10 strings 1-100 characters each + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True` + :param type: Poll type, 'quiz' or 'regular', defaults to 'regular' + :param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False` + :param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode + :param explanation: 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 + :param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options `_ for more details. + :param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation, which can be specified instead of *parse_mode* + :param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*. + :param close_date: 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 *open_period*. + :param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_poll.SendPoll` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPoll + + return SendPoll( + chat_id=self.chat.id, + question=question, + options=options, + message_thread_id=message_thread_id, + is_anonymous=is_anonymous, + type=type, + allows_multiple_answers=allows_multiple_answers, + correct_option_id=correct_option_id, + explanation=explanation, + explanation_parse_mode=explanation_parse_mode, + explanation_entities=explanation_entities, + open_period=open_period, + close_date=close_date, + is_closed=is_closed, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_dice( + self, + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDice: + """ + Shortcut for method :class:`aiogram.methods.send_dice.SendDice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send an animated emoji that will display a random value. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#senddice + + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji on which the dice throw animation is based. Currently, must be one of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯' and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults to '🎲' + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_dice.SendDice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDice + + return SendDice( + chat_id=self.chat.id, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_sticker( + self, + sticker: Union[InputFile, str], + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendSticker: + """ + Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send static .WEBP, `animated `_ .TGS, or `video `_ .WEBM stickers. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendsticker + + :param sticker: Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP or .TGS sticker using multipart/form-data. :ref:`More information on Sending Files » `. Video stickers can only be sent by a file_id. Animated stickers can't be sent via an HTTP URL. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji associated with the sticker; only for just uploaded stickers + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_sticker.SendSticker` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendSticker + + return SendSticker( + chat_id=self.chat.id, + sticker=sticker, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_venue( + self, + latitude: float, + longitude: float, + title: str, + address: str, + message_thread_id: Optional[int] = None, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVenue: + """ + Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send information about a venue. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvenue + + :param latitude: Latitude of the venue + :param longitude: Longitude of the venue + :param title: Name of the venue + :param address: Address of the venue + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param foursquare_id: Foursquare identifier of the venue + :param foursquare_type: Foursquare type of the venue, if known. (For example, 'arts_entertainment/default', 'arts_entertainment/aquarium' or 'food/icecream'.) + :param google_place_id: Google Places identifier of the venue + :param google_place_type: Google Places type of the venue. (See `supported types `_.) + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_venue.SendVenue` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVenue + + return SendVenue( + chat_id=self.chat.id, + latitude=latitude, + longitude=longitude, + title=title, + address=address, + message_thread_id=message_thread_id, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video( + self, + video: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + supports_streaming: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideo: + """ + Shortcut for method :class:`aiogram.methods.send_video.SendVideo` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send video files, Telegram clients support MPEG4 videos (other formats may be sent as :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvideo + + :param video: Video to send. Pass a file_id as String to send a video that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from the Internet, or upload a new video using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param width: Video width + :param height: Video height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the video caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation + :param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video.SendVideo` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideo + + return SendVideo( + chat_id=self.chat.id, + video=video, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + supports_streaming=supports_streaming, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video_note( + self, + video_note: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + length: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideoNote: + """ + Shortcut for method :class:`aiogram.methods.send_video_note.SendVideoNote` + will automatically fill method attributes: + + - :code:`chat_id` + + As of `v.4.0 `_, Telegram clients support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvideonote + + :param video_note: 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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param length: Video width and height, i.e. diameter of the video message + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video_note.SendVideoNote` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideoNote + + return SendVideoNote( + chat_id=self.chat.id, + video_note=video_note, + message_thread_id=message_thread_id, + duration=duration, + length=length, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_voice( + self, + voice: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVoice: + """ + Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS (other formats may be sent as :class:`aiogram.types.audio.Audio` or :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvoice + + :param voice: Audio file to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Voice message caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the voice message caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the voice message in seconds + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_voice.SendVoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVoice + + return SendVoice( + chat_id=self.chat.id, + voice=voice, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) diff --git a/docs/api/methods/send_animation.rst b/docs/api/methods/send_animation.rst index cc4e727a..93483206 100644 --- a/docs/api/methods/send_animation.rst +++ b/docs/api/methods/send_animation.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_animation` - :meth:`aiogram.types.message.Message.reply_animation` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation` diff --git a/docs/api/methods/send_audio.rst b/docs/api/methods/send_audio.rst index 0c332cbd..36e0a4e8 100644 --- a/docs/api/methods/send_audio.rst +++ b/docs/api/methods/send_audio.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_audio` - :meth:`aiogram.types.message.Message.reply_audio` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio` diff --git a/docs/api/methods/send_contact.rst b/docs/api/methods/send_contact.rst index d7f13cba..648a2c08 100644 --- a/docs/api/methods/send_contact.rst +++ b/docs/api/methods/send_contact.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_contact` - :meth:`aiogram.types.message.Message.reply_contact` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact` diff --git a/docs/api/methods/send_dice.rst b/docs/api/methods/send_dice.rst index 4a106c04..7d06cbd4 100644 --- a/docs/api/methods/send_dice.rst +++ b/docs/api/methods/send_dice.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_dice` - :meth:`aiogram.types.message.Message.reply_dice` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice` diff --git a/docs/api/methods/send_document.rst b/docs/api/methods/send_document.rst index b0121109..f10327ca 100644 --- a/docs/api/methods/send_document.rst +++ b/docs/api/methods/send_document.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_document` - :meth:`aiogram.types.message.Message.reply_document` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document` diff --git a/docs/api/methods/send_game.rst b/docs/api/methods/send_game.rst index 18d299cf..c9057703 100644 --- a/docs/api/methods/send_game.rst +++ b/docs/api/methods/send_game.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_game` - :meth:`aiogram.types.message.Message.reply_game` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game` diff --git a/docs/api/methods/send_invoice.rst b/docs/api/methods/send_invoice.rst index bd5070fd..4361773e 100644 --- a/docs/api/methods/send_invoice.rst +++ b/docs/api/methods/send_invoice.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_invoice` - :meth:`aiogram.types.message.Message.reply_invoice` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice` diff --git a/docs/api/methods/send_location.rst b/docs/api/methods/send_location.rst index c8dc9f56..4b34692a 100644 --- a/docs/api/methods/send_location.rst +++ b/docs/api/methods/send_location.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_location` - :meth:`aiogram.types.message.Message.reply_location` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location` diff --git a/docs/api/methods/send_media_group.rst b/docs/api/methods/send_media_group.rst index 9d9de9e9..88d66d12 100644 --- a/docs/api/methods/send_media_group.rst +++ b/docs/api/methods/send_media_group.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_media_group` - :meth:`aiogram.types.message.Message.reply_media_group` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group` diff --git a/docs/api/methods/send_message.rst b/docs/api/methods/send_message.rst index 594ef99c..45065edc 100644 --- a/docs/api/methods/send_message.rst +++ b/docs/api/methods/send_message.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer` - :meth:`aiogram.types.message.Message.reply` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer` diff --git a/docs/api/methods/send_photo.rst b/docs/api/methods/send_photo.rst index b622f6cc..6acd0be8 100644 --- a/docs/api/methods/send_photo.rst +++ b/docs/api/methods/send_photo.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_photo` - :meth:`aiogram.types.message.Message.reply_photo` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo` diff --git a/docs/api/methods/send_poll.rst b/docs/api/methods/send_poll.rst index 36100c36..eb3a26e2 100644 --- a/docs/api/methods/send_poll.rst +++ b/docs/api/methods/send_poll.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_poll` - :meth:`aiogram.types.message.Message.reply_poll` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll` diff --git a/docs/api/methods/send_sticker.rst b/docs/api/methods/send_sticker.rst index 4c67047a..8ed37460 100644 --- a/docs/api/methods/send_sticker.rst +++ b/docs/api/methods/send_sticker.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_sticker` - :meth:`aiogram.types.message.Message.reply_sticker` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker` diff --git a/docs/api/methods/send_venue.rst b/docs/api/methods/send_venue.rst index 79cfc8ca..38673f92 100644 --- a/docs/api/methods/send_venue.rst +++ b/docs/api/methods/send_venue.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_venue` - :meth:`aiogram.types.message.Message.reply_venue` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue` diff --git a/docs/api/methods/send_video.rst b/docs/api/methods/send_video.rst index c8446369..f3307dd6 100644 --- a/docs/api/methods/send_video.rst +++ b/docs/api/methods/send_video.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_video` - :meth:`aiogram.types.message.Message.reply_video` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video` diff --git a/docs/api/methods/send_video_note.rst b/docs/api/methods/send_video_note.rst index 089f9e66..6f3d5fc3 100644 --- a/docs/api/methods/send_video_note.rst +++ b/docs/api/methods/send_video_note.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_video_note` - :meth:`aiogram.types.message.Message.reply_video_note` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note` diff --git a/docs/api/methods/send_voice.rst b/docs/api/methods/send_voice.rst index 3f19e9e9..ff4506a4 100644 --- a/docs/api/methods/send_voice.rst +++ b/docs/api/methods/send_voice.rst @@ -50,3 +50,4 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_voice` - :meth:`aiogram.types.message.Message.reply_voice` +- :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice` diff --git a/tests/test_api/test_methods/test_send_message.py b/tests/test_api/test_methods/test_send_message.py index 1458ed4e..99242ca2 100644 --- a/tests/test_api/test_methods/test_send_message.py +++ b/tests/test_api/test_methods/test_send_message.py @@ -24,7 +24,6 @@ class TestSendMessage: async def test_force_reply(self): # https://github.com/aiogram/aiogram/issues/901 - print("::::", SendMessage.__pydantic_core_schema__) method = SendMessage(text="test", chat_id=42, reply_markup=ForceReply()) assert isinstance(method.reply_markup, ForceReply) diff --git a/tests/test_api/test_types/test_chat_member_updated.py b/tests/test_api/test_types/test_chat_member_updated.py new file mode 100644 index 00000000..5de700b7 --- /dev/null +++ b/tests/test_api/test_types/test_chat_member_updated.py @@ -0,0 +1,124 @@ +import datetime +from typing import Any, Dict, Type, Union + +import pytest + +from aiogram.methods import ( + SendAnimation, + SendAudio, + SendContact, + SendDice, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, +) +from aiogram.types import ( + Chat, + ChatMemberLeft, + ChatMemberMember, + ChatMemberUpdated, + User, +) +from aiogram.types.message import Message + + +class TestChatMemberUpdated: + @pytest.mark.parametrize( + "alias_for_method,kwargs,method_class", + [ + ["answer_animation", dict(animation="animation"), SendAnimation], + ["answer_audio", dict(audio="audio"), SendAudio], + ["answer_contact", dict(phone_number="+000000000000", first_name="Test"), SendContact], + ["answer_document", dict(document="document"), SendDocument], + ["answer_game", dict(game_short_name="game"), SendGame], + [ + "answer_invoice", + dict( + title="title", + description="description", + payload="payload", + provider_token="provider_token", + start_parameter="start_parameter", + currency="currency", + prices=[], + ), + SendInvoice, + ], + ["answer_location", dict(latitude=0.42, longitude=0.42), SendLocation], + ["answer_media_group", dict(media=[]), SendMediaGroup], + ["answer", dict(text="test"), SendMessage], + ["answer_photo", dict(photo="photo"), SendPhoto], + ["answer_poll", dict(question="Q?", options=[]), SendPoll], + ["answer_dice", dict(), SendDice], + ["answer_sticker", dict(sticker="sticker"), SendSticker], + ["answer_sticker", dict(sticker="sticker"), SendSticker], + [ + "answer_venue", + dict( + latitude=0.42, + longitude=0.42, + title="title", + address="address", + ), + SendVenue, + ], + ["answer_video", dict(video="video"), SendVideo], + ["answer_video_note", dict(video_note="video_note"), SendVideoNote], + ["answer_voice", dict(voice="voice"), SendVoice], + ], + ) + def test_answer_aliases( + self, + alias_for_method: str, + kwargs: Dict[str, Any], + method_class: Type[ + Union[ + SendAnimation, + SendAudio, + SendContact, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, + ] + ], + ): + user = User(id=42, is_bot=False, first_name="Test") + event = ChatMemberUpdated( + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test"), + date=datetime.datetime.now(), + old_chat_member=ChatMemberLeft(user=user), + new_chat_member=ChatMemberMember(user=user), + ) + + alias = getattr(event, alias_for_method) + assert callable(alias) + + api_method = alias(**kwargs) + assert isinstance(api_method, method_class) + + assert api_method.chat_id == event.chat.id + + for key, value in kwargs.items(): + assert getattr(api_method, key) == value From faadc8046032d64350c03eebe6f88a36cc4a2d23 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 18:12:06 +0300 Subject: [PATCH 042/139] Chat join request shortcuts (#1235) * Add additional API message methods to ChatJoinRequest class ChatJoinRequest now includes additional message methods including SendAnimation, SendAudio, SendContact, and many more. The changes are useful for sending various types of messages during chat join requests. * Added changelog --- .butcher/types/ChatJoinRequest/aliases.yml | 139 + CHANGES/1234.feature.rst | 2 +- CHANGES/1235.feature.rst | 2 + aiogram/types/chat_join_request.py | 2234 ++++++++++++++++- docs/api/methods/send_animation.rst | 2 + docs/api/methods/send_audio.rst | 2 + docs/api/methods/send_contact.rst | 2 + docs/api/methods/send_dice.rst | 2 + docs/api/methods/send_document.rst | 2 + docs/api/methods/send_game.rst | 2 + docs/api/methods/send_invoice.rst | 2 + docs/api/methods/send_location.rst | 2 + docs/api/methods/send_media_group.rst | 2 + docs/api/methods/send_message.rst | 2 + docs/api/methods/send_photo.rst | 2 + docs/api/methods/send_poll.rst | 2 + docs/api/methods/send_sticker.rst | 2 + docs/api/methods/send_venue.rst | 2 + docs/api/methods/send_video.rst | 2 + docs/api/methods/send_video_note.rst | 2 + docs/api/methods/send_voice.rst | 2 + .../test_types/test_chat_join_request.py | 124 +- .../test_types/test_chat_member_updated.py | 1 - 23 files changed, 2527 insertions(+), 9 deletions(-) create mode 100644 CHANGES/1235.feature.rst diff --git a/.butcher/types/ChatJoinRequest/aliases.yml b/.butcher/types/ChatJoinRequest/aliases.yml index aa88cebd..630c65ef 100644 --- a/.butcher/types/ChatJoinRequest/aliases.yml +++ b/.butcher/types/ChatJoinRequest/aliases.yml @@ -3,6 +3,145 @@ approve: fill: &request-target chat_id: self.chat.id user_id: self.from_user.id + decline: method: declineChatJoinRequest fill: *request-target + +answer: + method: sendMessage + fill: &fill-answer-chat + chat_id: self.chat.id + +answer_pm: + method: sendMessage + fill: &fill-answer-user + chat_id: self.user_chat_id + +answer_animation: + method: sendAnimation + fill: *fill-answer-chat + +answer_animation_pm: + method: sendAnimation + fill: *fill-answer-user + +answer_audio: + method: sendAudio + fill: *fill-answer-chat + +answer_audio_pm: + method: sendAudio + fill: *fill-answer-user + +answer_contact: + method: sendContact + fill: *fill-answer-chat + +answer_contact_pm: + method: sendContact + fill: *fill-answer-user + +answer_document: + method: sendDocument + fill: *fill-answer-chat + +answer_document_pm: + method: sendDocument + fill: *fill-answer-user + +answer_game: + method: sendGame + fill: *fill-answer-chat + +answer_game_pm: + method: sendGame + fill: *fill-answer-user + +answer_invoice: + method: sendInvoice + fill: *fill-answer-chat + +answer_invoice_pm: + method: sendInvoice + fill: *fill-answer-user + +answer_location: + method: sendLocation + fill: *fill-answer-chat + +answer_location_pm: + method: sendLocation + fill: *fill-answer-user + +answer_media_group: + method: sendMediaGroup + fill: *fill-answer-chat + +answer_media_group_pm: + method: sendMediaGroup + fill: *fill-answer-user + +answer_photo: + method: sendPhoto + fill: *fill-answer-chat + +answer_photo_pm: + method: sendPhoto + fill: *fill-answer-user + +answer_poll: + method: sendPoll + fill: *fill-answer-chat + +answer_poll_pm: + method: sendPoll + fill: *fill-answer-user + +answer_dice: + method: sendDice + fill: *fill-answer-chat + +answer_dice_pm: + method: sendDice + fill: *fill-answer-user + +answer_sticker: + method: sendSticker + fill: *fill-answer-chat + +answer_sticker_pm: + method: sendSticker + fill: *fill-answer-user + +answer_venue: + method: sendVenue + fill: *fill-answer-chat + +answer_venue_pm: + method: sendVenue + fill: *fill-answer-user + +answer_video: + method: sendVideo + fill: *fill-answer-chat + +answer_video_pm: + method: sendVideo + fill: *fill-answer-user + +answer_video_note: + method: sendVideoNote + fill: *fill-answer-chat + +answer_video_note_pm: + method: sendVideoNote + fill: *fill-answer-user + +answer_voice: + method: sendVoice + fill: *fill-answer-chat + +answer_voice_pm: + method: sendVoice + fill: *fill-answer-user diff --git a/CHANGES/1234.feature.rst b/CHANGES/1234.feature.rst index 90bfb72f..fe68e765 100644 --- a/CHANGES/1234.feature.rst +++ b/CHANGES/1234.feature.rst @@ -1,2 +1,2 @@ -Added new shortcuts for :class:`aiogram.types.chat_member_updated.aiogramChatMemberUpdated` +Added new shortcuts for :class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send message to chat that member joined/left. diff --git a/CHANGES/1235.feature.rst b/CHANGES/1235.feature.rst new file mode 100644 index 00000000..98cce77f --- /dev/null +++ b/CHANGES/1235.feature.rst @@ -0,0 +1,2 @@ +Added new shortcuts for :class:`aiogram.types.chat_join_request.ChatJoinRequest` +to make easier access to sending messages to users who wants to join to chat. diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index 94ef61ba..e622c863 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -1,18 +1,52 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Any, Optional +from typing import TYPE_CHECKING, Any, List, Optional, Union from pydantic import Field -from .base import TelegramObject - -if TYPE_CHECKING: - from ..methods import ApproveChatJoinRequest, DeclineChatJoinRequest +from .base import ( + UNSET_DISABLE_WEB_PAGE_PREVIEW, + UNSET_PARSE_MODE, + UNSET_PROTECT_CONTENT, + TelegramObject, +) if TYPE_CHECKING: + from ..methods import ( + ApproveChatJoinRequest, + DeclineChatJoinRequest, + SendAnimation, + SendAudio, + SendContact, + SendDice, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, + ) from .chat import Chat from .chat_invite_link import ChatInviteLink + from .force_reply import ForceReply + from .inline_keyboard_markup import InlineKeyboardMarkup + from .input_file import InputFile + from .input_media_audio import InputMediaAudio + from .input_media_document import InputMediaDocument + from .input_media_photo import InputMediaPhoto + from .input_media_video import InputMediaVideo + from .labeled_price import LabeledPrice + from .message_entity import MessageEntity + from .reply_keyboard_markup import ReplyKeyboardMarkup + from .reply_keyboard_remove import ReplyKeyboardRemove from .user import User @@ -91,3 +125,2193 @@ class ChatJoinRequest(TelegramObject): user_id=self.from_user.id, **kwargs, ).as_(self._bot) + + def answer( + self, + text: str, + message_thread_id: Optional[int] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendMessage: + """ + Shortcut for method :class:`aiogram.methods.send_message.SendMessage` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send text messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendmessage + + :param text: Text of the message to be sent, 1-4096 characters after entities parsing + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param parse_mode: Mode for parsing entities in the message text. See `formatting options `_ for more details. + :param entities: A JSON-serialized list of special entities that appear in message text, which can be specified instead of *parse_mode* + :param disable_web_page_preview: Disables link previews for links in this message + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_message.SendMessage` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMessage + + return SendMessage( + chat_id=self.chat.id, + text=text, + message_thread_id=message_thread_id, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_pm( + self, + text: str, + message_thread_id: Optional[int] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendMessage: + """ + Shortcut for method :class:`aiogram.methods.send_message.SendMessage` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send text messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendmessage + + :param text: Text of the message to be sent, 1-4096 characters after entities parsing + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param parse_mode: Mode for parsing entities in the message text. See `formatting options `_ for more details. + :param entities: A JSON-serialized list of special entities that appear in message text, which can be specified instead of *parse_mode* + :param disable_web_page_preview: Disables link previews for links in this message + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_message.SendMessage` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMessage + + return SendMessage( + chat_id=self.user_chat_id, + text=text, + message_thread_id=message_thread_id, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_animation( + self, + animation: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAnimation: + """ + Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendanimation + + :param animation: Animation to send. Pass a file_id as String to send an animation that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation from the Internet, or upload a new animation using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent animation in seconds + :param width: Animation width + :param height: Animation height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the animation caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_animation.SendAnimation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAnimation + + return SendAnimation( + chat_id=self.chat.id, + animation=animation, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_animation_pm( + self, + animation: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAnimation: + """ + Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send animation files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendanimation + + :param animation: Animation to send. Pass a file_id as String to send an animation that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an animation from the Internet, or upload a new animation using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent animation in seconds + :param width: Animation width + :param height: Animation height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Animation caption (may also be used when resending animation by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the animation caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the animation needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_animation.SendAnimation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAnimation + + return SendAnimation( + chat_id=self.user_chat_id, + animation=animation, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_audio( + self, + audio: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAudio: + """ + Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .MP3 or .M4A format. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future. + For sending voice messages, use the :class:`aiogram.methods.send_voice.SendVoice` method instead. + + Source: https://core.telegram.org/bots/api#sendaudio + + :param audio: Audio file to send. Pass a file_id as String to send an audio file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Audio caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the audio caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the audio in seconds + :param performer: Performer + :param title: Track name + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_audio.SendAudio` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAudio + + return SendAudio( + chat_id=self.chat.id, + audio=audio, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_audio_pm( + self, + audio: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendAudio: + """ + Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .MP3 or .M4A format. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send audio files of up to 50 MB in size, this limit may be changed in the future. + For sending voice messages, use the :class:`aiogram.methods.send_voice.SendVoice` method instead. + + Source: https://core.telegram.org/bots/api#sendaudio + + :param audio: Audio file to send. Pass a file_id as String to send an audio file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Audio caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the audio caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the audio in seconds + :param performer: Performer + :param title: Track name + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_audio.SendAudio` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendAudio + + return SendAudio( + chat_id=self.user_chat_id, + audio=audio, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_contact( + self, + phone_number: str, + first_name: str, + message_thread_id: Optional[int] = None, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendContact: + """ + Shortcut for method :class:`aiogram.methods.send_contact.SendContact` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send phone contacts. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendcontact + + :param phone_number: Contact's phone number + :param first_name: Contact's first name + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param last_name: Contact's last name + :param vcard: Additional data about the contact in the form of a `vCard `_, 0-2048 bytes + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_contact.SendContact` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendContact + + return SendContact( + chat_id=self.chat.id, + phone_number=phone_number, + first_name=first_name, + message_thread_id=message_thread_id, + last_name=last_name, + vcard=vcard, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_contact_pm( + self, + phone_number: str, + first_name: str, + message_thread_id: Optional[int] = None, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendContact: + """ + Shortcut for method :class:`aiogram.methods.send_contact.SendContact` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send phone contacts. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendcontact + + :param phone_number: Contact's phone number + :param first_name: Contact's first name + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param last_name: Contact's last name + :param vcard: Additional data about the contact in the form of a `vCard `_, 0-2048 bytes + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_contact.SendContact` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendContact + + return SendContact( + chat_id=self.user_chat_id, + phone_number=phone_number, + first_name=first_name, + message_thread_id=message_thread_id, + last_name=last_name, + vcard=vcard, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_document( + self, + document: Union[InputFile, str], + message_thread_id: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDocument: + """ + Shortcut for method :class:`aiogram.methods.send_document.SendDocument` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send general files. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#senddocument + + :param document: File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Document caption (may also be used when resending documents by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the document caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param disable_content_type_detection: Disables automatic server-side content type detection for files uploaded using multipart/form-data + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_document.SendDocument` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDocument + + return SendDocument( + chat_id=self.chat.id, + document=document, + message_thread_id=message_thread_id, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_document_pm( + self, + document: Union[InputFile, str], + message_thread_id: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDocument: + """ + Shortcut for method :class:`aiogram.methods.send_document.SendDocument` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send general files. On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#senddocument + + :param document: File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Document caption (may also be used when resending documents by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the document caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param disable_content_type_detection: Disables automatic server-side content type detection for files uploaded using multipart/form-data + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_document.SendDocument` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDocument + + return SendDocument( + chat_id=self.user_chat_id, + document=document, + message_thread_id=message_thread_id, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_game( + self, + game_short_name: str, + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendGame: + """ + Shortcut for method :class:`aiogram.methods.send_game.SendGame` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a game. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendgame + + :param game_short_name: Short name of the game, serves as the unique identifier for the game. Set up your games via `@BotFather `_. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game. + :return: instance of method :class:`aiogram.methods.send_game.SendGame` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendGame + + return SendGame( + chat_id=self.chat.id, + game_short_name=game_short_name, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_game_pm( + self, + game_short_name: str, + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendGame: + """ + Shortcut for method :class:`aiogram.methods.send_game.SendGame` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a game. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendgame + + :param game_short_name: Short name of the game, serves as the unique identifier for the game. Set up your games via `@BotFather `_. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game. + :return: instance of method :class:`aiogram.methods.send_game.SendGame` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendGame + + return SendGame( + chat_id=self.user_chat_id, + game_short_name=game_short_name, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_invoice( + self, + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + message_thread_id: Optional[int] = None, + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + start_parameter: Optional[str] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendInvoice: + """ + Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send invoices. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendinvoice + + :param title: Product name, 1-32 characters + :param description: Product description, 1-255 characters + :param payload: Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes. + :param provider_token: Payment provider token, obtained via `@BotFather `_ + :param currency: Three-letter ISO 4217 currency code, see `more on currencies `_ + :param prices: Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.) + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param max_tip_amount: The maximum accepted amount for tips in the *smallest units* of the currency (integer, **not** float/double). For example, for a maximum tip of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* parameter in `currencies.json `_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0 + :param suggested_tip_amounts: A JSON-serialized 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 *max_tip_amount*. + :param start_parameter: 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 + :param provider_data: JSON-serialized 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. + :param photo_url: 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. + :param photo_size: Photo size in bytes + :param photo_width: Photo width + :param photo_height: Photo height + :param need_name: Pass :code:`True` if you require the user's full name to complete the order + :param need_phone_number: Pass :code:`True` if you require the user's phone number to complete the order + :param need_email: Pass :code:`True` if you require the user's email address to complete the order + :param need_shipping_address: Pass :code:`True` if you require the user's shipping address to complete the order + :param send_phone_number_to_provider: Pass :code:`True` if the user's phone number should be sent to provider + :param send_email_to_provider: Pass :code:`True` if the user's email address should be sent to provider + :param is_flexible: Pass :code:`True` if the final price depends on the shipping method + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Pay :code:`total price`' button will be shown. If not empty, the first button must be a Pay button. + :return: instance of method :class:`aiogram.methods.send_invoice.SendInvoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendInvoice + + return SendInvoice( + chat_id=self.chat.id, + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + message_thread_id=message_thread_id, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + start_parameter=start_parameter, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_invoice_pm( + self, + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + message_thread_id: Optional[int] = None, + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + start_parameter: Optional[str] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **kwargs: Any, + ) -> SendInvoice: + """ + Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send invoices. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendinvoice + + :param title: Product name, 1-32 characters + :param description: Product description, 1-255 characters + :param payload: Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes. + :param provider_token: Payment provider token, obtained via `@BotFather `_ + :param currency: Three-letter ISO 4217 currency code, see `more on currencies `_ + :param prices: Price breakdown, a JSON-serialized list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.) + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param max_tip_amount: The maximum accepted amount for tips in the *smallest units* of the currency (integer, **not** float/double). For example, for a maximum tip of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* parameter in `currencies.json `_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies). Defaults to 0 + :param suggested_tip_amounts: A JSON-serialized 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 *max_tip_amount*. + :param start_parameter: 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 + :param provider_data: JSON-serialized 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. + :param photo_url: 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. + :param photo_size: Photo size in bytes + :param photo_width: Photo width + :param photo_height: Photo height + :param need_name: Pass :code:`True` if you require the user's full name to complete the order + :param need_phone_number: Pass :code:`True` if you require the user's phone number to complete the order + :param need_email: Pass :code:`True` if you require the user's email address to complete the order + :param need_shipping_address: Pass :code:`True` if you require the user's shipping address to complete the order + :param send_phone_number_to_provider: Pass :code:`True` if the user's phone number should be sent to provider + :param send_email_to_provider: Pass :code:`True` if the user's email address should be sent to provider + :param is_flexible: Pass :code:`True` if the final price depends on the shipping method + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: A JSON-serialized object for an `inline keyboard `_. If empty, one 'Pay :code:`total price`' button will be shown. If not empty, the first button must be a Pay button. + :return: instance of method :class:`aiogram.methods.send_invoice.SendInvoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendInvoice + + return SendInvoice( + chat_id=self.user_chat_id, + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + message_thread_id=message_thread_id, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + start_parameter=start_parameter, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_location( + self, + latitude: float, + longitude: float, + message_thread_id: Optional[int] = None, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendLocation: + """ + Shortcut for method :class:`aiogram.methods.send_location.SendLocation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send point on the map. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendlocation + + :param latitude: Latitude of the location + :param longitude: Longitude of the location + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param horizontal_accuracy: The radius of uncertainty for the location, measured in meters; 0-1500 + :param live_period: Period in seconds for which the location will be updated (see `Live Locations `_, should be between 60 and 86400. + :param heading: For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified. + :param proximity_alert_radius: For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_location.SendLocation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendLocation + + return SendLocation( + chat_id=self.chat.id, + latitude=latitude, + longitude=longitude, + message_thread_id=message_thread_id, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_location_pm( + self, + latitude: float, + longitude: float, + message_thread_id: Optional[int] = None, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendLocation: + """ + Shortcut for method :class:`aiogram.methods.send_location.SendLocation` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send point on the map. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendlocation + + :param latitude: Latitude of the location + :param longitude: Longitude of the location + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param horizontal_accuracy: The radius of uncertainty for the location, measured in meters; 0-1500 + :param live_period: Period in seconds for which the location will be updated (see `Live Locations `_, should be between 60 and 86400. + :param heading: For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified. + :param proximity_alert_radius: For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_location.SendLocation` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendLocation + + return SendLocation( + chat_id=self.user_chat_id, + latitude=latitude, + longitude=longitude, + message_thread_id=message_thread_id, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_media_group( + self, + media: List[Union[InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo]], + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + **kwargs: Any, + ) -> SendMediaGroup: + """ + Shortcut for method :class:`aiogram.methods.send_media_group.SendMediaGroup` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a group of photos, videos, documents or audios as an album. Documents and audio files can be only grouped in an album with messages of the same type. On success, an array of `Messages `_ that were sent is returned. + + Source: https://core.telegram.org/bots/api#sendmediagroup + + :param media: A JSON-serialized array describing messages to be sent, must include 2-10 items + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends messages `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent messages from forwarding and saving + :param reply_to_message_id: If the messages are a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :return: instance of method :class:`aiogram.methods.send_media_group.SendMediaGroup` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMediaGroup + + return SendMediaGroup( + chat_id=self.chat.id, + media=media, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + **kwargs, + ).as_(self._bot) + + def answer_media_group_pm( + self, + media: List[Union[InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo]], + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + **kwargs: Any, + ) -> SendMediaGroup: + """ + Shortcut for method :class:`aiogram.methods.send_media_group.SendMediaGroup` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a group of photos, videos, documents or audios as an album. Documents and audio files can be only grouped in an album with messages of the same type. On success, an array of `Messages `_ that were sent is returned. + + Source: https://core.telegram.org/bots/api#sendmediagroup + + :param media: A JSON-serialized array describing messages to be sent, must include 2-10 items + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param disable_notification: Sends messages `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent messages from forwarding and saving + :param reply_to_message_id: If the messages are a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :return: instance of method :class:`aiogram.methods.send_media_group.SendMediaGroup` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendMediaGroup + + return SendMediaGroup( + chat_id=self.user_chat_id, + media=media, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + **kwargs, + ).as_(self._bot) + + def answer_photo( + self, + photo: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPhoto: + """ + Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send photos. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendphoto + + :param photo: Photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the photo caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_photo.SendPhoto` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPhoto + + return SendPhoto( + chat_id=self.chat.id, + photo=photo, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_photo_pm( + self, + photo: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPhoto: + """ + Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send photos. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendphoto + + :param photo: Photo to send. Pass a file_id as String to send a photo that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Photo caption (may also be used when resending photos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the photo caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the photo needs to be covered with a spoiler animation + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_photo.SendPhoto` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPhoto + + return SendPhoto( + chat_id=self.user_chat_id, + photo=photo, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_poll( + self, + question: str, + options: List[str], + message_thread_id: Optional[int] = None, + is_anonymous: Optional[bool] = None, + type: Optional[str] = None, + allows_multiple_answers: Optional[bool] = None, + correct_option_id: Optional[int] = None, + explanation: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET_PARSE_MODE, + explanation_entities: Optional[List[MessageEntity]] = None, + open_period: Optional[int] = None, + close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + is_closed: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPoll: + """ + Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a native poll. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendpoll + + :param question: Poll question, 1-300 characters + :param options: A JSON-serialized list of answer options, 2-10 strings 1-100 characters each + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True` + :param type: Poll type, 'quiz' or 'regular', defaults to 'regular' + :param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False` + :param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode + :param explanation: 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 + :param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options `_ for more details. + :param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation, which can be specified instead of *parse_mode* + :param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*. + :param close_date: 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 *open_period*. + :param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_poll.SendPoll` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPoll + + return SendPoll( + chat_id=self.chat.id, + question=question, + options=options, + message_thread_id=message_thread_id, + is_anonymous=is_anonymous, + type=type, + allows_multiple_answers=allows_multiple_answers, + correct_option_id=correct_option_id, + explanation=explanation, + explanation_parse_mode=explanation_parse_mode, + explanation_entities=explanation_entities, + open_period=open_period, + close_date=close_date, + is_closed=is_closed, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_poll_pm( + self, + question: str, + options: List[str], + message_thread_id: Optional[int] = None, + is_anonymous: Optional[bool] = None, + type: Optional[str] = None, + allows_multiple_answers: Optional[bool] = None, + correct_option_id: Optional[int] = None, + explanation: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET_PARSE_MODE, + explanation_entities: Optional[List[MessageEntity]] = None, + open_period: Optional[int] = None, + close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + is_closed: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendPoll: + """ + Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send a native poll. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendpoll + + :param question: Poll question, 1-300 characters + :param options: A JSON-serialized list of answer options, 2-10 strings 1-100 characters each + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param is_anonymous: :code:`True`, if the poll needs to be anonymous, defaults to :code:`True` + :param type: Poll type, 'quiz' or 'regular', defaults to 'regular' + :param allows_multiple_answers: :code:`True`, if the poll allows multiple answers, ignored for polls in quiz mode, defaults to :code:`False` + :param correct_option_id: 0-based identifier of the correct answer option, required for polls in quiz mode + :param explanation: 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 + :param explanation_parse_mode: Mode for parsing entities in the explanation. See `formatting options `_ for more details. + :param explanation_entities: A JSON-serialized list of special entities that appear in the poll explanation, which can be specified instead of *parse_mode* + :param open_period: Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with *close_date*. + :param close_date: 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 *open_period*. + :param is_closed: Pass :code:`True` if the poll needs to be immediately closed. This can be useful for poll preview. + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_poll.SendPoll` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendPoll + + return SendPoll( + chat_id=self.user_chat_id, + question=question, + options=options, + message_thread_id=message_thread_id, + is_anonymous=is_anonymous, + type=type, + allows_multiple_answers=allows_multiple_answers, + correct_option_id=correct_option_id, + explanation=explanation, + explanation_parse_mode=explanation_parse_mode, + explanation_entities=explanation_entities, + open_period=open_period, + close_date=close_date, + is_closed=is_closed, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_dice( + self, + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDice: + """ + Shortcut for method :class:`aiogram.methods.send_dice.SendDice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send an animated emoji that will display a random value. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#senddice + + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji on which the dice throw animation is based. Currently, must be one of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯' and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults to '🎲' + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_dice.SendDice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDice + + return SendDice( + chat_id=self.chat.id, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_dice_pm( + self, + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendDice: + """ + Shortcut for method :class:`aiogram.methods.send_dice.SendDice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send an animated emoji that will display a random value. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#senddice + + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji on which the dice throw animation is based. Currently, must be one of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯' and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults to '🎲' + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_dice.SendDice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendDice + + return SendDice( + chat_id=self.user_chat_id, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_sticker( + self, + sticker: Union[InputFile, str], + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendSticker: + """ + Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send static .WEBP, `animated `_ .TGS, or `video `_ .WEBM stickers. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendsticker + + :param sticker: Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP or .TGS sticker using multipart/form-data. :ref:`More information on Sending Files » `. Video stickers can only be sent by a file_id. Animated stickers can't be sent via an HTTP URL. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji associated with the sticker; only for just uploaded stickers + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_sticker.SendSticker` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendSticker + + return SendSticker( + chat_id=self.chat.id, + sticker=sticker, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_sticker_pm( + self, + sticker: Union[InputFile, str], + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendSticker: + """ + Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send static .WEBP, `animated `_ .TGS, or `video `_ .WEBM stickers. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendsticker + + :param sticker: Sticker to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP or .TGS sticker using multipart/form-data. :ref:`More information on Sending Files » `. Video stickers can only be sent by a file_id. Animated stickers can't be sent via an HTTP URL. + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param emoji: Emoji associated with the sticker; only for just uploaded stickers + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_sticker.SendSticker` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendSticker + + return SendSticker( + chat_id=self.user_chat_id, + sticker=sticker, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_venue( + self, + latitude: float, + longitude: float, + title: str, + address: str, + message_thread_id: Optional[int] = None, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVenue: + """ + Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send information about a venue. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvenue + + :param latitude: Latitude of the venue + :param longitude: Longitude of the venue + :param title: Name of the venue + :param address: Address of the venue + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param foursquare_id: Foursquare identifier of the venue + :param foursquare_type: Foursquare type of the venue, if known. (For example, 'arts_entertainment/default', 'arts_entertainment/aquarium' or 'food/icecream'.) + :param google_place_id: Google Places identifier of the venue + :param google_place_type: Google Places type of the venue. (See `supported types `_.) + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_venue.SendVenue` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVenue + + return SendVenue( + chat_id=self.chat.id, + latitude=latitude, + longitude=longitude, + title=title, + address=address, + message_thread_id=message_thread_id, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_venue_pm( + self, + latitude: float, + longitude: float, + title: str, + address: str, + message_thread_id: Optional[int] = None, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVenue: + """ + Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send information about a venue. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvenue + + :param latitude: Latitude of the venue + :param longitude: Longitude of the venue + :param title: Name of the venue + :param address: Address of the venue + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param foursquare_id: Foursquare identifier of the venue + :param foursquare_type: Foursquare type of the venue, if known. (For example, 'arts_entertainment/default', 'arts_entertainment/aquarium' or 'food/icecream'.) + :param google_place_id: Google Places identifier of the venue + :param google_place_type: Google Places type of the venue. (See `supported types `_.) + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_venue.SendVenue` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVenue + + return SendVenue( + chat_id=self.user_chat_id, + latitude=latitude, + longitude=longitude, + title=title, + address=address, + message_thread_id=message_thread_id, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video( + self, + video: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + supports_streaming: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideo: + """ + Shortcut for method :class:`aiogram.methods.send_video.SendVideo` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send video files, Telegram clients support MPEG4 videos (other formats may be sent as :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvideo + + :param video: Video to send. Pass a file_id as String to send a video that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from the Internet, or upload a new video using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param width: Video width + :param height: Video height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the video caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation + :param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video.SendVideo` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideo + + return SendVideo( + chat_id=self.chat.id, + video=video, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + supports_streaming=supports_streaming, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video_pm( + self, + video: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + supports_streaming: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideo: + """ + Shortcut for method :class:`aiogram.methods.send_video.SendVideo` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send video files, Telegram clients support MPEG4 videos (other formats may be sent as :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send video files of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvideo + + :param video: Video to send. Pass a file_id as String to send a video that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from the Internet, or upload a new video using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param width: Video width + :param height: Video height + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param caption: Video caption (may also be used when resending videos by *file_id*), 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the video caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param has_spoiler: Pass :code:`True` if the video needs to be covered with a spoiler animation + :param supports_streaming: Pass :code:`True` if the uploaded video is suitable for streaming + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video.SendVideo` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideo + + return SendVideo( + chat_id=self.user_chat_id, + video=video, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + supports_streaming=supports_streaming, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video_note( + self, + video_note: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + length: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideoNote: + """ + Shortcut for method :class:`aiogram.methods.send_video_note.SendVideoNote` + will automatically fill method attributes: + + - :code:`chat_id` + + As of `v.4.0 `_, Telegram clients support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvideonote + + :param video_note: 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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param length: Video width and height, i.e. diameter of the video message + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video_note.SendVideoNote` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideoNote + + return SendVideoNote( + chat_id=self.chat.id, + video_note=video_note, + message_thread_id=message_thread_id, + duration=duration, + length=length, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_video_note_pm( + self, + video_note: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + length: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVideoNote: + """ + Shortcut for method :class:`aiogram.methods.send_video_note.SendVideoNote` + will automatically fill method attributes: + + - :code:`chat_id` + + As of `v.4.0 `_, Telegram clients support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video messages. On success, the sent :class:`aiogram.types.message.Message` is returned. + + Source: https://core.telegram.org/bots/api#sendvideonote + + :param video_note: 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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param duration: Duration of sent video in seconds + :param length: Video width and height, i.e. diameter of the video message + :param thumbnail: Thumbnail of the file sent; can be ignored if thumbnail generation for the file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so you can pass 'attach://' if the thumbnail was uploaded using multipart/form-data under . :ref:`More information on Sending Files » ` + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_video_note.SendVideoNote` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVideoNote + + return SendVideoNote( + chat_id=self.user_chat_id, + video_note=video_note, + message_thread_id=message_thread_id, + duration=duration, + length=length, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_voice( + self, + voice: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVoice: + """ + Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS (other formats may be sent as :class:`aiogram.types.audio.Audio` or :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvoice + + :param voice: Audio file to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Voice message caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the voice message caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the voice message in seconds + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_voice.SendVoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVoice + + return SendVoice( + chat_id=self.chat.id, + voice=voice, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) + + def answer_voice_pm( + self, + voice: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **kwargs: Any, + ) -> SendVoice: + """ + Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS (other formats may be sent as :class:`aiogram.types.audio.Audio` or :class:`aiogram.types.document.Document`). On success, the sent :class:`aiogram.types.message.Message` is returned. Bots can currently send voice messages of up to 50 MB in size, this limit may be changed in the future. + + Source: https://core.telegram.org/bots/api#sendvoice + + :param voice: Audio file to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » ` + :param message_thread_id: Unique identifier for the target message thread (topic) of the forum; for forum supergroups only + :param caption: Voice message caption, 0-1024 characters after entities parsing + :param parse_mode: Mode for parsing entities in the voice message caption. See `formatting options `_ for more details. + :param caption_entities: A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode* + :param duration: Duration of the voice message in seconds + :param disable_notification: Sends the message `silently `_. Users will receive a notification with no sound. + :param protect_content: Protects the contents of the sent message from forwarding and saving + :param reply_to_message_id: If the message is a reply, ID of the original message + :param allow_sending_without_reply: Pass :code:`True` if the message should be sent even if the specified replied-to message is not found + :param reply_markup: Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user. + :return: instance of method :class:`aiogram.methods.send_voice.SendVoice` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import SendVoice + + return SendVoice( + chat_id=self.user_chat_id, + voice=voice, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **kwargs, + ).as_(self._bot) diff --git a/docs/api/methods/send_animation.rst b/docs/api/methods/send_animation.rst index 93483206..2bc2d9a5 100644 --- a/docs/api/methods/send_animation.rst +++ b/docs/api/methods/send_animation.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_animation` - :meth:`aiogram.types.message.Message.reply_animation` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm` diff --git a/docs/api/methods/send_audio.rst b/docs/api/methods/send_audio.rst index 36e0a4e8..569e7e2b 100644 --- a/docs/api/methods/send_audio.rst +++ b/docs/api/methods/send_audio.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_audio` - :meth:`aiogram.types.message.Message.reply_audio` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm` diff --git a/docs/api/methods/send_contact.rst b/docs/api/methods/send_contact.rst index 648a2c08..c39f5186 100644 --- a/docs/api/methods/send_contact.rst +++ b/docs/api/methods/send_contact.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_contact` - :meth:`aiogram.types.message.Message.reply_contact` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm` diff --git a/docs/api/methods/send_dice.rst b/docs/api/methods/send_dice.rst index 7d06cbd4..3624a0e9 100644 --- a/docs/api/methods/send_dice.rst +++ b/docs/api/methods/send_dice.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_dice` - :meth:`aiogram.types.message.Message.reply_dice` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm` diff --git a/docs/api/methods/send_document.rst b/docs/api/methods/send_document.rst index f10327ca..3a5af639 100644 --- a/docs/api/methods/send_document.rst +++ b/docs/api/methods/send_document.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_document` - :meth:`aiogram.types.message.Message.reply_document` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm` diff --git a/docs/api/methods/send_game.rst b/docs/api/methods/send_game.rst index c9057703..4bf86c7a 100644 --- a/docs/api/methods/send_game.rst +++ b/docs/api/methods/send_game.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_game` - :meth:`aiogram.types.message.Message.reply_game` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm` diff --git a/docs/api/methods/send_invoice.rst b/docs/api/methods/send_invoice.rst index 4361773e..fcd7818c 100644 --- a/docs/api/methods/send_invoice.rst +++ b/docs/api/methods/send_invoice.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_invoice` - :meth:`aiogram.types.message.Message.reply_invoice` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm` diff --git a/docs/api/methods/send_location.rst b/docs/api/methods/send_location.rst index 4b34692a..db9acffe 100644 --- a/docs/api/methods/send_location.rst +++ b/docs/api/methods/send_location.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_location` - :meth:`aiogram.types.message.Message.reply_location` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm` diff --git a/docs/api/methods/send_media_group.rst b/docs/api/methods/send_media_group.rst index 88d66d12..ec43022c 100644 --- a/docs/api/methods/send_media_group.rst +++ b/docs/api/methods/send_media_group.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_media_group` - :meth:`aiogram.types.message.Message.reply_media_group` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm` diff --git a/docs/api/methods/send_message.rst b/docs/api/methods/send_message.rst index 45065edc..d3157f50 100644 --- a/docs/api/methods/send_message.rst +++ b/docs/api/methods/send_message.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer` - :meth:`aiogram.types.message.Message.reply` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_pm` diff --git a/docs/api/methods/send_photo.rst b/docs/api/methods/send_photo.rst index 6acd0be8..d7ce9653 100644 --- a/docs/api/methods/send_photo.rst +++ b/docs/api/methods/send_photo.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_photo` - :meth:`aiogram.types.message.Message.reply_photo` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm` diff --git a/docs/api/methods/send_poll.rst b/docs/api/methods/send_poll.rst index eb3a26e2..e92e15b5 100644 --- a/docs/api/methods/send_poll.rst +++ b/docs/api/methods/send_poll.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_poll` - :meth:`aiogram.types.message.Message.reply_poll` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm` diff --git a/docs/api/methods/send_sticker.rst b/docs/api/methods/send_sticker.rst index 8ed37460..ea5334af 100644 --- a/docs/api/methods/send_sticker.rst +++ b/docs/api/methods/send_sticker.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_sticker` - :meth:`aiogram.types.message.Message.reply_sticker` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm` diff --git a/docs/api/methods/send_venue.rst b/docs/api/methods/send_venue.rst index 38673f92..d7a09910 100644 --- a/docs/api/methods/send_venue.rst +++ b/docs/api/methods/send_venue.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_venue` - :meth:`aiogram.types.message.Message.reply_venue` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm` diff --git a/docs/api/methods/send_video.rst b/docs/api/methods/send_video.rst index f3307dd6..899779da 100644 --- a/docs/api/methods/send_video.rst +++ b/docs/api/methods/send_video.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_video` - :meth:`aiogram.types.message.Message.reply_video` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm` diff --git a/docs/api/methods/send_video_note.rst b/docs/api/methods/send_video_note.rst index 6f3d5fc3..80dbe859 100644 --- a/docs/api/methods/send_video_note.rst +++ b/docs/api/methods/send_video_note.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_video_note` - :meth:`aiogram.types.message.Message.reply_video_note` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm` diff --git a/docs/api/methods/send_voice.rst b/docs/api/methods/send_voice.rst index ff4506a4..8d81b707 100644 --- a/docs/api/methods/send_voice.rst +++ b/docs/api/methods/send_voice.rst @@ -51,3 +51,5 @@ As shortcut from received object - :meth:`aiogram.types.message.Message.answer_voice` - :meth:`aiogram.types.message.Message.reply_voice` - :meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice` +- :meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm` diff --git a/tests/test_api/test_types/test_chat_join_request.py b/tests/test_api/test_types/test_chat_join_request.py index 089520e4..a36dd935 100644 --- a/tests/test_api/test_types/test_chat_join_request.py +++ b/tests/test_api/test_types/test_chat_join_request.py @@ -1,7 +1,34 @@ import datetime +from typing import Any, Dict, Type, Union -from aiogram.methods import ApproveChatJoinRequest, DeclineChatJoinRequest -from aiogram.types import Chat, ChatJoinRequest, User +import pytest + +from aiogram.methods import ( + ApproveChatJoinRequest, + DeclineChatJoinRequest, + SendAnimation, + SendAudio, + SendContact, + SendDice, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, +) +from aiogram.types import ( + Chat, + ChatJoinRequest, + User, +) class TestChatJoinRequest: @@ -32,3 +59,96 @@ class TestChatJoinRequest: assert isinstance(api_method, DeclineChatJoinRequest) assert api_method.chat_id == chat_join_request.chat.id assert api_method.user_id == chat_join_request.from_user.id + + @pytest.mark.parametrize( + "alias_for_method,kwargs,method_class", + [ + ["answer_animation", dict(animation="animation"), SendAnimation], + ["answer_audio", dict(audio="audio"), SendAudio], + ["answer_contact", dict(phone_number="+000000000000", first_name="Test"), SendContact], + ["answer_document", dict(document="document"), SendDocument], + ["answer_game", dict(game_short_name="game"), SendGame], + [ + "answer_invoice", + dict( + title="title", + description="description", + payload="payload", + provider_token="provider_token", + start_parameter="start_parameter", + currency="currency", + prices=[], + ), + SendInvoice, + ], + ["answer_location", dict(latitude=0.42, longitude=0.42), SendLocation], + ["answer_media_group", dict(media=[]), SendMediaGroup], + ["answer", dict(text="test"), SendMessage], + ["answer_photo", dict(photo="photo"), SendPhoto], + ["answer_poll", dict(question="Q?", options=[]), SendPoll], + ["answer_dice", dict(), SendDice], + ["answer_sticker", dict(sticker="sticker"), SendSticker], + ["answer_sticker", dict(sticker="sticker"), SendSticker], + [ + "answer_venue", + dict( + latitude=0.42, + longitude=0.42, + title="title", + address="address", + ), + SendVenue, + ], + ["answer_video", dict(video="video"), SendVideo], + ["answer_video_note", dict(video_note="video_note"), SendVideoNote], + ["answer_voice", dict(voice="voice"), SendVoice], + ], + ) + @pytest.mark.parametrize("suffix", ["", "_pm"]) + def test_answer_aliases( + self, + alias_for_method: str, + suffix: str, + kwargs: Dict[str, Any], + method_class: Type[ + Union[ + SendAnimation, + SendAudio, + SendContact, + SendDocument, + SendGame, + SendInvoice, + SendLocation, + SendMediaGroup, + SendMessage, + SendPhoto, + SendPoll, + SendSticker, + SendSticker, + SendVenue, + SendVideo, + SendVideoNote, + SendVoice, + ] + ], + ): + event = ChatJoinRequest( + chat=Chat(id=-42, type="channel"), + from_user=User(id=42, is_bot=False, first_name="Test"), + user_chat_id=42, + date=datetime.datetime.now(), + ) + + alias = getattr(event, alias_for_method + suffix) + assert callable(alias) + + api_method = alias(**kwargs) + assert isinstance(api_method, method_class) + + if suffix == "_pm": + assert api_method.chat_id == event.user_chat_id + else: + assert api_method.chat_id == event.chat.id + + for key, value in kwargs.items(): + assert getattr(api_method, key) == value diff --git a/tests/test_api/test_types/test_chat_member_updated.py b/tests/test_api/test_types/test_chat_member_updated.py index 5de700b7..2d9c9a94 100644 --- a/tests/test_api/test_types/test_chat_member_updated.py +++ b/tests/test_api/test_types/test_chat_member_updated.py @@ -29,7 +29,6 @@ from aiogram.types import ( ChatMemberUpdated, User, ) -from aiogram.types.message import Message class TestChatMemberUpdated: From 54134c68fe147a7303acfaf49efb5bdbd6b419c7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 18:32:37 +0300 Subject: [PATCH 043/139] Bump texts translation files --- Makefile | 4 +- docs/locale/en/LC_MESSAGES/api/bot.po | 15 +- .../api/enums/encrypted_passport_element.po | 30 + .../api/enums/passport_element_error_type.po | 30 + .../LC_MESSAGES/api/methods/send_animation.po | 40 +- .../en/LC_MESSAGES/api/methods/send_audio.po | 40 +- .../LC_MESSAGES/api/methods/send_contact.po | 38 +- .../en/LC_MESSAGES/api/methods/send_dice.po | 38 +- .../LC_MESSAGES/api/methods/send_document.po | 40 +- .../en/LC_MESSAGES/api/methods/send_game.po | 38 +- .../LC_MESSAGES/api/methods/send_invoice.po | 38 +- .../LC_MESSAGES/api/methods/send_location.po | 38 +- .../api/methods/send_media_group.po | 38 +- .../LC_MESSAGES/api/methods/send_message.po | 38 +- .../en/LC_MESSAGES/api/methods/send_photo.po | 38 +- .../en/LC_MESSAGES/api/methods/send_poll.po | 38 +- .../LC_MESSAGES/api/methods/send_sticker.po | 38 +- .../en/LC_MESSAGES/api/methods/send_venue.po | 38 +- .../en/LC_MESSAGES/api/methods/send_video.po | 40 +- .../api/methods/send_video_note.po | 40 +- .../en/LC_MESSAGES/api/methods/send_voice.po | 38 +- .../locale/en/LC_MESSAGES/api/session/base.po | 10 +- .../en/LC_MESSAGES/api/session/middleware.po | 87 + .../api/types/chat_join_request.po | 1487 +++++++++++++++- .../en/LC_MESSAGES/api/types/chat_member.po | 301 ++-- .../api/types/chat_member_updated.po | 1164 ++++++++++++- docs/locale/en/LC_MESSAGES/changelog.po | 726 +++++--- docs/locale/en/LC_MESSAGES/contributing.po | 16 +- .../en/LC_MESSAGES/dispatcher/dispatcher.po | 26 +- .../en/LC_MESSAGES/dispatcher/errors.po | 159 ++ .../en/LC_MESSAGES/dispatcher/router.po | 132 +- docs/locale/en/LC_MESSAGES/index.po | 13 +- docs/locale/en/LC_MESSAGES/install.po | 24 +- .../locale/en/LC_MESSAGES/migration_2_to_3.po | 271 +++ .../en/LC_MESSAGES/utils/chat_action.po | 17 +- .../locale/en/LC_MESSAGES/utils/formatting.po | 18 +- docs/locale/en/LC_MESSAGES/utils/web_app.po | 25 +- docs/locale/uk_UA/LC_MESSAGES/api/bot.po | 15 +- .../api/enums/encrypted_passport_element.po | 30 + .../api/enums/passport_element_error_type.po | 30 + .../LC_MESSAGES/api/methods/send_animation.po | 40 +- .../LC_MESSAGES/api/methods/send_audio.po | 40 +- .../LC_MESSAGES/api/methods/send_contact.po | 38 +- .../LC_MESSAGES/api/methods/send_dice.po | 38 +- .../LC_MESSAGES/api/methods/send_document.po | 40 +- .../LC_MESSAGES/api/methods/send_game.po | 38 +- .../LC_MESSAGES/api/methods/send_invoice.po | 38 +- .../LC_MESSAGES/api/methods/send_location.po | 38 +- .../api/methods/send_media_group.po | 38 +- .../LC_MESSAGES/api/methods/send_message.po | 38 +- .../LC_MESSAGES/api/methods/send_photo.po | 38 +- .../LC_MESSAGES/api/methods/send_poll.po | 38 +- .../LC_MESSAGES/api/methods/send_sticker.po | 38 +- .../LC_MESSAGES/api/methods/send_venue.po | 38 +- .../LC_MESSAGES/api/methods/send_video.po | 40 +- .../api/methods/send_video_note.po | 40 +- .../LC_MESSAGES/api/methods/send_voice.po | 38 +- .../uk_UA/LC_MESSAGES/api/session/base.po | 10 +- .../LC_MESSAGES/api/session/middleware.po | 87 + .../api/types/chat_join_request.po | 1488 ++++++++++++++++- .../LC_MESSAGES/api/types/chat_member.po | 300 ++-- .../api/types/chat_member_updated.po | 1164 ++++++++++++- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 726 +++++--- docs/locale/uk_UA/LC_MESSAGES/contributing.po | 15 +- .../LC_MESSAGES/dispatcher/dispatcher.po | 27 +- .../uk_UA/LC_MESSAGES/dispatcher/errors.po | 159 ++ .../uk_UA/LC_MESSAGES/dispatcher/router.po | 194 ++- docs/locale/uk_UA/LC_MESSAGES/index.po | 6 +- docs/locale/uk_UA/LC_MESSAGES/install.po | 31 +- .../uk_UA/LC_MESSAGES/migration_2_to_3.po | 271 +++ .../uk_UA/LC_MESSAGES/utils/chat_action.po | 46 +- .../uk_UA/LC_MESSAGES/utils/formatting.po | 18 +- .../locale/uk_UA/LC_MESSAGES/utils/web_app.po | 111 +- 73 files changed, 9002 insertions(+), 1593 deletions(-) create mode 100644 docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po create mode 100644 docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po create mode 100644 docs/locale/en/LC_MESSAGES/api/session/middleware.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/errors.po create mode 100644 docs/locale/en/LC_MESSAGES/migration_2_to_3.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/enums/encrypted_passport_element.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/enums/passport_element_error_type.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/session/middleware.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/errors.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po diff --git a/Makefile b/Makefile index 66dd4eba..f1557451 100644 --- a/Makefile +++ b/Makefile @@ -73,8 +73,8 @@ locales_pot := _build/gettext docs_dir := docs docs-gettext: - cd $(docs_dir) && make gettext - cd $(docs_dir) && sphinx-intl update -p $(locales_pot) $(addprefix -l , $(locales)) + hatch run docs:bash -c 'cd $(docs_dir) && make gettext' + hatch run docs:bash -c 'cd $(docs_dir) && sphinx-intl update -p $(locales_pot) $(addprefix -l , $(locales))' .PHONY: docs-gettext docs-serve: diff --git a/docs/locale/en/LC_MESSAGES/api/bot.po b/docs/locale/en/LC_MESSAGES/api/bot.po index 96a78215..d14cbae4 100644 --- a/docs/locale/en/LC_MESSAGES/api/bot.po +++ b/docs/locale/en/LC_MESSAGES/api/bot.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,9 +47,7 @@ msgid "" msgstr "" #: aiogram.client.bot.Bot:1 of -msgid "" -"Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\ " -"[:py:class:`Bot`]" +msgid "Bases: :py:class:`object`" msgstr "" #: aiogram.client.bot.Bot.__init__:1 of @@ -110,6 +108,10 @@ msgstr "" msgid "Generate bot context" msgstr "" +#: aiogram.client.bot.Bot.context:3 of +msgid "close session on exit" +msgstr "" + #: aiogram.client.bot.Bot.me:1 of msgid "Cached alias for getMe method" msgstr "" @@ -158,3 +160,8 @@ msgstr "" #: aiogram.client.bot.Bot.download:6 of msgid "file_id or Downloadable object" msgstr "" + +#~ msgid "" +#~ "Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\" +#~ " [:py:class:`Bot`]" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po b/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po new file mode 100644 index 00000000..c9fd2760 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/encrypted_passport_element.rst:3 +msgid "EncryptedPassportElement" +msgstr "" + +#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:1 of +msgid "This object represents type of encrypted passport element." +msgstr "" + +#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:3 of +msgid "Source: https://core.telegram.org/bots/api#encryptedpassportelement" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po b/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po new file mode 100644 index 00000000..285d6c8a --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/passport_element_error_type.rst:3 +msgid "PassportElementErrorType" +msgstr "" + +#: aiogram.enums.passport_element_error_type.PassportElementErrorType:1 of +msgid "This object represents a passport element error type." +msgstr "" + +#: aiogram.enums.passport_element_error_type.PassportElementErrorType:3 of +msgid "Source: https://core.telegram.org/bots/api#passportelementerror" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po b/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po index 57619de4..a67de7cf 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_animation.rst:3 msgid "sendAnimation" @@ -72,7 +72,7 @@ msgstr "" msgid "Animation height" msgstr "" -#: ../../docstring aiogram.methods.send_animation.SendAnimation.thumb:1 of +#: ../../docstring aiogram.methods.send_animation.SendAnimation.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -146,50 +146,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_animation.rst:14 +#: ../../api/methods/send_animation.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_animation.rst:17 +#: ../../api/methods/send_animation.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_animation.rst:25 +#: ../../api/methods/send_animation.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_animation.rst:27 +#: ../../api/methods/send_animation.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_animation.rst:29 +#: ../../api/methods/send_animation.rst:30 msgid ":code:`from aiogram.methods.send_animation import SendAnimation`" msgstr "" -#: ../../api/methods/send_animation.rst:30 +#: ../../api/methods/send_animation.rst:31 msgid "alias: :code:`from aiogram.methods import SendAnimation`" msgstr "" -#: ../../api/methods/send_animation.rst:33 +#: ../../api/methods/send_animation.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_animation.rst:40 +#: ../../api/methods/send_animation.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_animation.rst:48 +#: ../../api/methods/send_animation.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_animation.rst:50 +#: ../../api/methods/send_animation.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_animation`" msgstr "" -#: ../../api/methods/send_animation.rst:51 +#: ../../api/methods/send_animation.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_animation`" msgstr "" +#: ../../api/methods/send_animation.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation`" +msgstr "" + +#: ../../api/methods/send_animation.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation`" +msgstr "" + +#: ../../api/methods/send_animation.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po b/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po index 46d06181..63d6e0fc 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_audio.rst:3 msgid "sendAudio" @@ -89,7 +89,7 @@ msgstr "" msgid "Track name" msgstr "" -#: ../../docstring aiogram.methods.send_audio.SendAudio.thumb:1 of +#: ../../docstring aiogram.methods.send_audio.SendAudio.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -133,50 +133,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_audio.rst:14 +#: ../../api/methods/send_audio.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_audio.rst:17 +#: ../../api/methods/send_audio.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_audio.rst:25 +#: ../../api/methods/send_audio.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_audio.rst:27 +#: ../../api/methods/send_audio.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_audio.rst:29 +#: ../../api/methods/send_audio.rst:30 msgid ":code:`from aiogram.methods.send_audio import SendAudio`" msgstr "" -#: ../../api/methods/send_audio.rst:30 +#: ../../api/methods/send_audio.rst:31 msgid "alias: :code:`from aiogram.methods import SendAudio`" msgstr "" -#: ../../api/methods/send_audio.rst:33 +#: ../../api/methods/send_audio.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_audio.rst:40 +#: ../../api/methods/send_audio.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_audio.rst:48 +#: ../../api/methods/send_audio.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_audio.rst:50 +#: ../../api/methods/send_audio.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_audio`" msgstr "" -#: ../../api/methods/send_audio.rst:51 +#: ../../api/methods/send_audio.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_audio`" msgstr "" +#: ../../api/methods/send_audio.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio`" +msgstr "" + +#: ../../api/methods/send_audio.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio`" +msgstr "" + +#: ../../api/methods/send_audio.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po b/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po index 8ada4c7b..927d96ba 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_contact.rst:3 msgid "sendContact" @@ -99,50 +99,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_contact.rst:14 +#: ../../api/methods/send_contact.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_contact.rst:17 +#: ../../api/methods/send_contact.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_contact.rst:25 +#: ../../api/methods/send_contact.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_contact.rst:27 +#: ../../api/methods/send_contact.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_contact.rst:29 +#: ../../api/methods/send_contact.rst:30 msgid ":code:`from aiogram.methods.send_contact import SendContact`" msgstr "" -#: ../../api/methods/send_contact.rst:30 +#: ../../api/methods/send_contact.rst:31 msgid "alias: :code:`from aiogram.methods import SendContact`" msgstr "" -#: ../../api/methods/send_contact.rst:33 +#: ../../api/methods/send_contact.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_contact.rst:40 +#: ../../api/methods/send_contact.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_contact.rst:48 +#: ../../api/methods/send_contact.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_contact.rst:50 +#: ../../api/methods/send_contact.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_contact`" msgstr "" -#: ../../api/methods/send_contact.rst:51 +#: ../../api/methods/send_contact.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_contact`" msgstr "" +#: ../../api/methods/send_contact.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact`" +msgstr "" + +#: ../../api/methods/send_contact.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact`" +msgstr "" + +#: ../../api/methods/send_contact.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po b/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po index 19a52d2f..9e9cdd1f 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_dice.rst:3 msgid "sendDice" @@ -86,50 +86,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_dice.rst:14 +#: ../../api/methods/send_dice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_dice.rst:17 +#: ../../api/methods/send_dice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_dice.rst:25 +#: ../../api/methods/send_dice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_dice.rst:27 +#: ../../api/methods/send_dice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_dice.rst:29 +#: ../../api/methods/send_dice.rst:30 msgid ":code:`from aiogram.methods.send_dice import SendDice`" msgstr "" -#: ../../api/methods/send_dice.rst:30 +#: ../../api/methods/send_dice.rst:31 msgid "alias: :code:`from aiogram.methods import SendDice`" msgstr "" -#: ../../api/methods/send_dice.rst:33 +#: ../../api/methods/send_dice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_dice.rst:40 +#: ../../api/methods/send_dice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_dice.rst:48 +#: ../../api/methods/send_dice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_dice.rst:50 +#: ../../api/methods/send_dice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_dice`" msgstr "" -#: ../../api/methods/send_dice.rst:51 +#: ../../api/methods/send_dice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_dice`" msgstr "" +#: ../../api/methods/send_dice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice`" +msgstr "" + +#: ../../api/methods/send_dice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice`" +msgstr "" + +#: ../../api/methods/send_dice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_document.po b/docs/locale/en/LC_MESSAGES/api/methods/send_document.po index 2b2e658f..b5b89591 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_document.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_document.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_document.rst:3 msgid "sendDocument" @@ -58,7 +58,7 @@ msgid "" " forum supergroups only" msgstr "" -#: ../../docstring aiogram.methods.send_document.SendDocument.thumb:1 of +#: ../../docstring aiogram.methods.send_document.SendDocument.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -131,50 +131,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_document.rst:14 +#: ../../api/methods/send_document.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_document.rst:17 +#: ../../api/methods/send_document.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_document.rst:25 +#: ../../api/methods/send_document.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_document.rst:27 +#: ../../api/methods/send_document.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_document.rst:29 +#: ../../api/methods/send_document.rst:30 msgid ":code:`from aiogram.methods.send_document import SendDocument`" msgstr "" -#: ../../api/methods/send_document.rst:30 +#: ../../api/methods/send_document.rst:31 msgid "alias: :code:`from aiogram.methods import SendDocument`" msgstr "" -#: ../../api/methods/send_document.rst:33 +#: ../../api/methods/send_document.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_document.rst:40 +#: ../../api/methods/send_document.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_document.rst:48 +#: ../../api/methods/send_document.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_document.rst:50 +#: ../../api/methods/send_document.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_document`" msgstr "" -#: ../../api/methods/send_document.rst:51 +#: ../../api/methods/send_document.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_document`" msgstr "" +#: ../../api/methods/send_document.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document`" +msgstr "" + +#: ../../api/methods/send_document.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document`" +msgstr "" + +#: ../../api/methods/send_document.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_game.po b/docs/locale/en/LC_MESSAGES/api/methods/send_game.po index a46e72a0..17feaa58 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_game.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_game.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_game.rst:3 msgid "sendGame" @@ -80,50 +80,62 @@ msgid "" "button must launch the game." msgstr "" -#: ../../api/methods/send_game.rst:14 +#: ../../api/methods/send_game.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_game.rst:17 +#: ../../api/methods/send_game.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_game.rst:25 +#: ../../api/methods/send_game.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_game.rst:27 +#: ../../api/methods/send_game.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_game.rst:29 +#: ../../api/methods/send_game.rst:30 msgid ":code:`from aiogram.methods.send_game import SendGame`" msgstr "" -#: ../../api/methods/send_game.rst:30 +#: ../../api/methods/send_game.rst:31 msgid "alias: :code:`from aiogram.methods import SendGame`" msgstr "" -#: ../../api/methods/send_game.rst:33 +#: ../../api/methods/send_game.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_game.rst:40 +#: ../../api/methods/send_game.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_game.rst:48 +#: ../../api/methods/send_game.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_game.rst:50 +#: ../../api/methods/send_game.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_game`" msgstr "" -#: ../../api/methods/send_game.rst:51 +#: ../../api/methods/send_game.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_game`" msgstr "" +#: ../../api/methods/send_game.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game`" +msgstr "" + +#: ../../api/methods/send_game.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game`" +msgstr "" + +#: ../../api/methods/send_game.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_invoice.rst:3 msgid "sendInvoice" @@ -210,50 +210,62 @@ msgid "" "first button must be a Pay button." msgstr "" -#: ../../api/methods/send_invoice.rst:14 +#: ../../api/methods/send_invoice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_invoice.rst:17 +#: ../../api/methods/send_invoice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_invoice.rst:25 +#: ../../api/methods/send_invoice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_invoice.rst:27 +#: ../../api/methods/send_invoice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_invoice.rst:29 +#: ../../api/methods/send_invoice.rst:30 msgid ":code:`from aiogram.methods.send_invoice import SendInvoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:30 +#: ../../api/methods/send_invoice.rst:31 msgid "alias: :code:`from aiogram.methods import SendInvoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:33 +#: ../../api/methods/send_invoice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_invoice.rst:40 +#: ../../api/methods/send_invoice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_invoice.rst:48 +#: ../../api/methods/send_invoice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_invoice.rst:50 +#: ../../api/methods/send_invoice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_invoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:51 +#: ../../api/methods/send_invoice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_invoice`" msgstr "" +#: ../../api/methods/send_invoice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice`" +msgstr "" + +#: ../../api/methods/send_invoice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice`" +msgstr "" + +#: ../../api/methods/send_invoice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_location.rst:3 msgid "sendLocation" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_location.rst:14 +#: ../../api/methods/send_location.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_location.rst:17 +#: ../../api/methods/send_location.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_location.rst:25 +#: ../../api/methods/send_location.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_location.rst:27 +#: ../../api/methods/send_location.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_location.rst:29 +#: ../../api/methods/send_location.rst:30 msgid ":code:`from aiogram.methods.send_location import SendLocation`" msgstr "" -#: ../../api/methods/send_location.rst:30 +#: ../../api/methods/send_location.rst:31 msgid "alias: :code:`from aiogram.methods import SendLocation`" msgstr "" -#: ../../api/methods/send_location.rst:33 +#: ../../api/methods/send_location.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_location.rst:40 +#: ../../api/methods/send_location.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_location.rst:48 +#: ../../api/methods/send_location.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_location.rst:50 +#: ../../api/methods/send_location.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_location`" msgstr "" -#: ../../api/methods/send_location.rst:51 +#: ../../api/methods/send_location.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_location`" msgstr "" +#: ../../api/methods/send_location.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location`" +msgstr "" + +#: ../../api/methods/send_location.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location`" +msgstr "" + +#: ../../api/methods/send_location.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po b/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po index e3d5b3db..8d271fef 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_media_group.rst:3 msgid "sendMediaGroup" @@ -82,46 +82,58 @@ msgid "" "replied-to message is not found" msgstr "" -#: ../../api/methods/send_media_group.rst:14 +#: ../../api/methods/send_media_group.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_media_group.rst:17 +#: ../../api/methods/send_media_group.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_media_group.rst:25 +#: ../../api/methods/send_media_group.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_media_group.rst:27 +#: ../../api/methods/send_media_group.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_media_group.rst:29 +#: ../../api/methods/send_media_group.rst:30 msgid ":code:`from aiogram.methods.send_media_group import SendMediaGroup`" msgstr "" -#: ../../api/methods/send_media_group.rst:30 +#: ../../api/methods/send_media_group.rst:31 msgid "alias: :code:`from aiogram.methods import SendMediaGroup`" msgstr "" -#: ../../api/methods/send_media_group.rst:33 +#: ../../api/methods/send_media_group.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_media_group.rst:40 +#: ../../api/methods/send_media_group.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_media_group.rst:48 +#: ../../api/methods/send_media_group.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_media_group.rst:50 +#: ../../api/methods/send_media_group.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_media_group`" msgstr "" -#: ../../api/methods/send_media_group.rst:51 +#: ../../api/methods/send_media_group.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_media_group`" msgstr "" + +#: ../../api/methods/send_media_group.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group`" +msgstr "" + +#: ../../api/methods/send_media_group.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group`" +msgstr "" + +#: ../../api/methods/send_media_group.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_message.po b/docs/locale/en/LC_MESSAGES/api/methods/send_message.po index e0a83b6d..fb028b0d 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_message.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_message.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_message.rst:3 msgid "sendMessage" @@ -103,50 +103,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_message.rst:14 +#: ../../api/methods/send_message.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_message.rst:17 +#: ../../api/methods/send_message.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_message.rst:25 +#: ../../api/methods/send_message.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_message.rst:27 +#: ../../api/methods/send_message.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_message.rst:29 +#: ../../api/methods/send_message.rst:30 msgid ":code:`from aiogram.methods.send_message import SendMessage`" msgstr "" -#: ../../api/methods/send_message.rst:30 +#: ../../api/methods/send_message.rst:31 msgid "alias: :code:`from aiogram.methods import SendMessage`" msgstr "" -#: ../../api/methods/send_message.rst:33 +#: ../../api/methods/send_message.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_message.rst:40 +#: ../../api/methods/send_message.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_message.rst:48 +#: ../../api/methods/send_message.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_message.rst:50 +#: ../../api/methods/send_message.rst:51 msgid ":meth:`aiogram.types.message.Message.answer`" msgstr "" -#: ../../api/methods/send_message.rst:51 +#: ../../api/methods/send_message.rst:52 msgid ":meth:`aiogram.types.message.Message.reply`" msgstr "" +#: ../../api/methods/send_message.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer`" +msgstr "" + +#: ../../api/methods/send_message.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer`" +msgstr "" + +#: ../../api/methods/send_message.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po b/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po index 440f3fb0..f733d653 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_photo.rst:3 msgid "sendPhoto" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_photo.rst:14 +#: ../../api/methods/send_photo.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_photo.rst:17 +#: ../../api/methods/send_photo.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_photo.rst:25 +#: ../../api/methods/send_photo.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_photo.rst:27 +#: ../../api/methods/send_photo.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_photo.rst:29 +#: ../../api/methods/send_photo.rst:30 msgid ":code:`from aiogram.methods.send_photo import SendPhoto`" msgstr "" -#: ../../api/methods/send_photo.rst:30 +#: ../../api/methods/send_photo.rst:31 msgid "alias: :code:`from aiogram.methods import SendPhoto`" msgstr "" -#: ../../api/methods/send_photo.rst:33 +#: ../../api/methods/send_photo.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_photo.rst:40 +#: ../../api/methods/send_photo.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_photo.rst:48 +#: ../../api/methods/send_photo.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_photo.rst:50 +#: ../../api/methods/send_photo.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_photo`" msgstr "" -#: ../../api/methods/send_photo.rst:51 +#: ../../api/methods/send_photo.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_photo`" msgstr "" +#: ../../api/methods/send_photo.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo`" +msgstr "" + +#: ../../api/methods/send_photo.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo`" +msgstr "" + +#: ../../api/methods/send_photo.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po b/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po index 9222d2c3..f7a0573a 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_poll.rst:3 msgid "sendPoll" @@ -148,50 +148,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_poll.rst:14 +#: ../../api/methods/send_poll.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_poll.rst:17 +#: ../../api/methods/send_poll.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_poll.rst:25 +#: ../../api/methods/send_poll.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_poll.rst:27 +#: ../../api/methods/send_poll.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_poll.rst:29 +#: ../../api/methods/send_poll.rst:30 msgid ":code:`from aiogram.methods.send_poll import SendPoll`" msgstr "" -#: ../../api/methods/send_poll.rst:30 +#: ../../api/methods/send_poll.rst:31 msgid "alias: :code:`from aiogram.methods import SendPoll`" msgstr "" -#: ../../api/methods/send_poll.rst:33 +#: ../../api/methods/send_poll.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_poll.rst:40 +#: ../../api/methods/send_poll.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_poll.rst:48 +#: ../../api/methods/send_poll.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_poll.rst:50 +#: ../../api/methods/send_poll.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_poll`" msgstr "" -#: ../../api/methods/send_poll.rst:51 +#: ../../api/methods/send_poll.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_poll`" msgstr "" +#: ../../api/methods/send_poll.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll`" +msgstr "" + +#: ../../api/methods/send_poll.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll`" +msgstr "" + +#: ../../api/methods/send_poll.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po b/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po index 24650fbd..96a8c342 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_sticker.rst:3 msgid "sendSticker" @@ -98,50 +98,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_sticker.rst:14 +#: ../../api/methods/send_sticker.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_sticker.rst:17 +#: ../../api/methods/send_sticker.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_sticker.rst:25 +#: ../../api/methods/send_sticker.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_sticker.rst:27 +#: ../../api/methods/send_sticker.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_sticker.rst:29 +#: ../../api/methods/send_sticker.rst:30 msgid ":code:`from aiogram.methods.send_sticker import SendSticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:30 +#: ../../api/methods/send_sticker.rst:31 msgid "alias: :code:`from aiogram.methods import SendSticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:33 +#: ../../api/methods/send_sticker.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_sticker.rst:40 +#: ../../api/methods/send_sticker.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_sticker.rst:48 +#: ../../api/methods/send_sticker.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_sticker.rst:50 +#: ../../api/methods/send_sticker.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_sticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:51 +#: ../../api/methods/send_sticker.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_sticker`" msgstr "" +#: ../../api/methods/send_sticker.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker`" +msgstr "" + +#: ../../api/methods/send_sticker.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker`" +msgstr "" + +#: ../../api/methods/send_sticker.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po b/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po index 848d6898..ea79ba2d 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_venue.rst:3 msgid "sendVenue" @@ -116,50 +116,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_venue.rst:14 +#: ../../api/methods/send_venue.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_venue.rst:17 +#: ../../api/methods/send_venue.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_venue.rst:25 +#: ../../api/methods/send_venue.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_venue.rst:27 +#: ../../api/methods/send_venue.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_venue.rst:29 +#: ../../api/methods/send_venue.rst:30 msgid ":code:`from aiogram.methods.send_venue import SendVenue`" msgstr "" -#: ../../api/methods/send_venue.rst:30 +#: ../../api/methods/send_venue.rst:31 msgid "alias: :code:`from aiogram.methods import SendVenue`" msgstr "" -#: ../../api/methods/send_venue.rst:33 +#: ../../api/methods/send_venue.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_venue.rst:40 +#: ../../api/methods/send_venue.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_venue.rst:48 +#: ../../api/methods/send_venue.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_venue.rst:50 +#: ../../api/methods/send_venue.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_venue`" msgstr "" -#: ../../api/methods/send_venue.rst:51 +#: ../../api/methods/send_venue.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_venue`" msgstr "" +#: ../../api/methods/send_venue.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue`" +msgstr "" + +#: ../../api/methods/send_venue.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue`" +msgstr "" + +#: ../../api/methods/send_venue.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_video.po b/docs/locale/en/LC_MESSAGES/api/methods/send_video.po index 5a575db2..2e2b836f 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_video.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_video.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_video.rst:3 msgid "sendVideo" @@ -72,7 +72,7 @@ msgstr "" msgid "Video height" msgstr "" -#: ../../docstring aiogram.methods.send_video.SendVideo.thumb:1 of +#: ../../docstring aiogram.methods.send_video.SendVideo.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -145,50 +145,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_video.rst:14 +#: ../../api/methods/send_video.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_video.rst:17 +#: ../../api/methods/send_video.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_video.rst:25 +#: ../../api/methods/send_video.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_video.rst:27 +#: ../../api/methods/send_video.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_video.rst:29 +#: ../../api/methods/send_video.rst:30 msgid ":code:`from aiogram.methods.send_video import SendVideo`" msgstr "" -#: ../../api/methods/send_video.rst:30 +#: ../../api/methods/send_video.rst:31 msgid "alias: :code:`from aiogram.methods import SendVideo`" msgstr "" -#: ../../api/methods/send_video.rst:33 +#: ../../api/methods/send_video.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_video.rst:40 +#: ../../api/methods/send_video.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_video.rst:48 +#: ../../api/methods/send_video.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_video.rst:50 +#: ../../api/methods/send_video.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_video`" msgstr "" -#: ../../api/methods/send_video.rst:51 +#: ../../api/methods/send_video.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_video`" msgstr "" +#: ../../api/methods/send_video.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video`" +msgstr "" + +#: ../../api/methods/send_video.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video`" +msgstr "" + +#: ../../api/methods/send_video.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po b/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po index 959a0407..f9c80a5e 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_video_note.rst:3 msgid "sendVideoNote" @@ -67,7 +67,7 @@ msgstr "" msgid "Video width and height, i.e. diameter of the video message" msgstr "" -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.thumb:1 of +#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -114,50 +114,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_video_note.rst:14 +#: ../../api/methods/send_video_note.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_video_note.rst:17 +#: ../../api/methods/send_video_note.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_video_note.rst:25 +#: ../../api/methods/send_video_note.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_video_note.rst:27 +#: ../../api/methods/send_video_note.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_video_note.rst:29 +#: ../../api/methods/send_video_note.rst:30 msgid ":code:`from aiogram.methods.send_video_note import SendVideoNote`" msgstr "" -#: ../../api/methods/send_video_note.rst:30 +#: ../../api/methods/send_video_note.rst:31 msgid "alias: :code:`from aiogram.methods import SendVideoNote`" msgstr "" -#: ../../api/methods/send_video_note.rst:33 +#: ../../api/methods/send_video_note.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_video_note.rst:40 +#: ../../api/methods/send_video_note.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_video_note.rst:48 +#: ../../api/methods/send_video_note.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_video_note.rst:50 +#: ../../api/methods/send_video_note.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_video_note`" msgstr "" -#: ../../api/methods/send_video_note.rst:51 +#: ../../api/methods/send_video_note.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_video_note`" msgstr "" +#: ../../api/methods/send_video_note.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note`" +msgstr "" + +#: ../../api/methods/send_video_note.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note`" +msgstr "" + +#: ../../api/methods/send_video_note.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po b/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po index 553a3265..d46ac20e 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_voice.rst:3 msgid "sendVoice" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_voice.rst:14 +#: ../../api/methods/send_voice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_voice.rst:17 +#: ../../api/methods/send_voice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_voice.rst:25 +#: ../../api/methods/send_voice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_voice.rst:27 +#: ../../api/methods/send_voice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_voice.rst:29 +#: ../../api/methods/send_voice.rst:30 msgid ":code:`from aiogram.methods.send_voice import SendVoice`" msgstr "" -#: ../../api/methods/send_voice.rst:30 +#: ../../api/methods/send_voice.rst:31 msgid "alias: :code:`from aiogram.methods import SendVoice`" msgstr "" -#: ../../api/methods/send_voice.rst:33 +#: ../../api/methods/send_voice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_voice.rst:40 +#: ../../api/methods/send_voice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_voice.rst:48 +#: ../../api/methods/send_voice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_voice.rst:50 +#: ../../api/methods/send_voice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_voice`" msgstr "" -#: ../../api/methods/send_voice.rst:51 +#: ../../api/methods/send_voice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_voice`" msgstr "" +#: ../../api/methods/send_voice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice`" +msgstr "" + +#: ../../api/methods/send_voice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice`" +msgstr "" + +#: ../../api/methods/send_voice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/en/LC_MESSAGES/api/session/base.po b/docs/locale/en/LC_MESSAGES/api/session/base.po index 413eafd2..6466c397 100644 --- a/docs/locale/en/LC_MESSAGES/api/session/base.po +++ b/docs/locale/en/LC_MESSAGES/api/session/base.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,6 +25,14 @@ msgstr "" msgid "Abstract session for all client sessions" msgstr "" +#: aiogram.client.session.base.BaseSession:1 of +msgid "This is base class for all HTTP sessions in aiogram." +msgstr "" + +#: aiogram.client.session.base.BaseSession:3 of +msgid "If you want to create your own session, you must inherit from this class." +msgstr "" + #: aiogram.client.session.base.BaseSession.check_response:1 of msgid "Check response status" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/middleware.po b/docs/locale/en/LC_MESSAGES/api/session/middleware.po new file mode 100644 index 00000000..137d74ca --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/session/middleware.po @@ -0,0 +1,87 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/session/middleware.rst:3 +msgid "Client session middlewares" +msgstr "" + +#: ../../api/session/middleware.rst:5 +msgid "" +"In some cases you may want to add some middlewares to the client session " +"to customize the behavior of the client." +msgstr "" + +#: ../../api/session/middleware.rst:7 +msgid "Some useful cases that is:" +msgstr "" + +#: ../../api/session/middleware.rst:9 +msgid "Log the outgoing requests" +msgstr "" + +#: ../../api/session/middleware.rst:10 +msgid "Customize the request parameters" +msgstr "" + +#: ../../api/session/middleware.rst:11 +msgid "Handle rate limiting errors and retry the request" +msgstr "" + +#: ../../api/session/middleware.rst:12 +msgid "others ..." +msgstr "" + +#: ../../api/session/middleware.rst:14 +msgid "" +"So, you can do it using client session middlewares. A client session " +"middleware is a function (or callable class) that receives the request " +"and the next middleware to call. The middleware can modify the request " +"and then call the next middleware to continue the request processing." +msgstr "" + +#: ../../api/session/middleware.rst:19 +msgid "How to register client session middleware?" +msgstr "" + +#: ../../api/session/middleware.rst:22 +msgid "Register using register method" +msgstr "" + +#: ../../api/session/middleware.rst:29 +msgid "Register using decorator" +msgstr "" + +#: ../../api/session/middleware.rst:44 +msgid "Example" +msgstr "" + +#: ../../api/session/middleware.rst:47 +msgid "Class based session middleware" +msgstr "" + +#: ../../api/session/middleware.rst:56 +msgid "" +"this middlewware is already implemented inside aiogram, so, if you want " +"to use it you can just import it :code:`from " +"aiogram.client.session.middlewares.request_logging import RequestLogging`" +msgstr "" + +#: ../../api/session/middleware.rst:61 +msgid "Function based session middleware" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po b/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po index f1035f20..c6884b77 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po +++ b/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_join_request.rst:3 msgid "ChatJoinRequest" @@ -72,6 +72,40 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:4 #: aiogram.types.chat_join_request.ChatJoinRequest.approve:4 #: aiogram.types.chat_join_request.ChatJoinRequest.decline:4 of msgid ":code:`chat_id`" @@ -93,6 +127,40 @@ msgstr "" msgid "Source: https://core.telegram.org/bots/api#approvechatjoinrequest" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm #: aiogram.types.chat_join_request.ChatJoinRequest.approve #: aiogram.types.chat_join_request.ChatJoinRequest.decline of msgid "Returns" @@ -128,6 +196,1421 @@ msgid "" ":class:`aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest`" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:6 of +msgid "" +"Use this method to send text messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmessage" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm of +msgid "Parameters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:10 of +msgid "Text of the message to be sent, 1-4096 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:11 of +msgid "" +"Unique identifier for the target message thread (topic) of the forum; for" +" forum supergroups only" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:12 of +msgid "" +"Mode for parsing entities in the message text. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:13 of +msgid "" +"A JSON-serialized list of special entities that appear in message text, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:14 of +msgid "Disables link previews for links in this message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:32 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:32 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:16 of +msgid "" +"Sends the message `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:33 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:33 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:17 of +msgid "Protects the contents of the sent message from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:34 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:34 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:18 of +msgid "If the message is a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:35 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:35 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:19 of +msgid "" +"Pass :code:`True` if the message should be sent even if the specified " +"replied-to message is not found" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:20 of +msgid "" +"Additional interface options. A JSON-serialized object for an `inline " +"keyboard `_, " +"`custom reply keyboard " +"`_, instructions to " +"remove reply keyboard or to force a reply from the user." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:6 of +msgid "" +"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " +"without sound). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send animation files of up to 50 MB in size, this limit may be changed in" +" the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendanimation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:10 of +msgid "" +"Animation to send. Pass a file_id as String to send an animation that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an animation from the Internet, or upload a " +"new animation using multipart/form-data. :ref:`More information on " +"Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:12 of +msgid "Duration of sent animation in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:13 of +msgid "Animation width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:14 of +msgid "Animation height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:15 of +msgid "" +"Thumbnail of the file sent; can be ignored if thumbnail generation for " +"the file is supported server-side. The thumbnail should be in JPEG format" +" and less than 200 kB in size. A thumbnail's width and height should not " +"exceed 320. Ignored if the file is not uploaded using multipart/form-" +"data. Thumbnails can't be reused and can be only uploaded as a new file, " +"so you can pass 'attach://' if the thumbnail was " +"uploaded using multipart/form-data under . :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:16 of +msgid "" +"Animation caption (may also be used when resending animation by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:17 of +msgid "" +"Mode for parsing entities in the animation caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:14 of +msgid "" +"A JSON-serialized list of special entities that appear in the caption, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:19 of +msgid "" +"Pass :code:`True` if the animation needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:25 of +msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display them in the music player. Your audio must be in the .MP3 or .M4A " +"format. On success, the sent :class:`aiogram.types.message.Message` is " +"returned. Bots can currently send audio files of up to 50 MB in size, " +"this limit may be changed in the future. For sending voice messages, use " +"the :class:`aiogram.methods.send_voice.SendVoice` method instead." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:9 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:9 of +msgid "Source: https://core.telegram.org/bots/api#sendaudio" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:11 of +msgid "" +"Audio file to send. Pass a file_id as String to send an audio file that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an audio file from the Internet, or upload a " +"new one using multipart/form-data. :ref:`More information on Sending " +"Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:13 of +msgid "Audio caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:14 of +msgid "" +"Mode for parsing entities in the audio caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:16 of +msgid "Duration of the audio in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:17 of +msgid "Performer" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:18 of +msgid "Track name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:25 of +msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:6 of +msgid "" +"Use this method to send phone contacts. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendcontact" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:10 of +msgid "Contact's phone number" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:11 of +msgid "Contact's first name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:13 of +msgid "Contact's last name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:14 of +msgid "" +"Additional data about the contact in the form of a `vCard " +"`_, 0-2048 bytes" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:6 of +msgid "" +"Use this method to send general files. On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send files of any type of up to 50 MB in size, this limit may be changed " +"in the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#senddocument" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:10 of +msgid "" +"File to send. Pass a file_id as String to send a file that exists on the " +"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" +" to get a file from the Internet, or upload a new one using multipart" +"/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:13 of +msgid "" +"Document caption (may also be used when resending documents by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:14 of +msgid "" +"Mode for parsing entities in the document caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:16 of +msgid "" +"Disables automatic server-side content type detection for files uploaded " +"using multipart/form-data" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:22 of +msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:6 of +msgid "" +"Use this method to send a game. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendgame" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:10 of +msgid "" +"Short name of the game, serves as the unique identifier for the game. Set" +" up your games via `@BotFather `_." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:16 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Play game_title' button will be shown. If not empty, the first " +"button must launch the game." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:17 of +msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:6 of +msgid "" +"Use this method to send invoices. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendinvoice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:10 of +msgid "Product name, 1-32 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:11 of +msgid "Product description, 1-255 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:12 of +msgid "" +"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " +"the user, use for your internal processes." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:13 of +msgid "" +"Payment provider token, obtained via `@BotFather " +"`_" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:14 of +msgid "" +"Three-letter ISO 4217 currency code, see `more on currencies " +"`_" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:15 of +msgid "" +"Price breakdown, a JSON-serialized list of components (e.g. product " +"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:17 of +msgid "" +"The maximum accepted amount for tips in the *smallest units* of the " +"currency (integer, **not** float/double). For example, for a maximum tip " +"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " +"parameter in `currencies.json " +"`_, it shows the" +" number of digits past the decimal point for each currency (2 for the " +"majority of currencies). Defaults to 0" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:18 of +msgid "" +"A JSON-serialized 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 " +"*max_tip_amount*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:19 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:20 of +msgid "" +"JSON-serialized 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." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:21 of +msgid "" +"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." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:22 of +msgid "Photo size in bytes" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:23 of +msgid "Photo width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:24 of +msgid "Photo height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:25 of +msgid "" +"Pass :code:`True` if you require the user's full name to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:26 of +msgid "" +"Pass :code:`True` if you require the user's phone number to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:27 of +msgid "" +"Pass :code:`True` if you require the user's email address to complete the" +" order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:28 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:28 of +msgid "" +"Pass :code:`True` if you require the user's shipping address to complete " +"the order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:29 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:29 of +msgid "Pass :code:`True` if the user's phone number should be sent to provider" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:30 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:30 of +msgid "Pass :code:`True` if the user's email address should be sent to provider" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:31 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:31 of +msgid "Pass :code:`True` if the final price depends on the shipping method" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:36 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:36 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Pay :code:`total price`' button will be shown. If not empty, the " +"first button must be a Pay button." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:37 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:37 of +msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:6 of +msgid "" +"Use this method to send point on the map. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendlocation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:10 of +msgid "Latitude of the location" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:11 of +msgid "Longitude of the location" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:13 of +msgid "The radius of uncertainty for the location, measured in meters; 0-1500" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:14 of +msgid "" +"Period in seconds for which the location will be updated (see `Live " +"Locations `_, should be between" +" 60 and 86400." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:15 of +msgid "" +"For live locations, a direction in which the user is moving, in degrees. " +"Must be between 1 and 360 if specified." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:16 of +msgid "" +"For live locations, a maximum distance for proximity alerts about " +"approaching another chat member, in meters. Must be between 1 and 100000 " +"if specified." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:22 of +msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_media_group.SendMediaGroup` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:6 of +msgid "" +"Use this method to send a group of photos, videos, documents or audios as" +" an album. Documents and audio files can be only grouped in an album with" +" messages of the same type. On success, an array of `Messages " +"`_ that were sent is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:10 of +msgid "" +"A JSON-serialized array describing messages to be sent, must include 2-10" +" items" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:12 of +msgid "" +"Sends messages `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:13 of +msgid "Protects the contents of the sent messages from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:14 of +msgid "If the messages are a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:16 of +msgid "" +"instance of method " +":class:`aiogram.methods.send_media_group.SendMediaGroup`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:6 of +msgid "" +"Use this method to send photos. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendphoto" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:10 of +msgid "" +"Photo to send. Pass a file_id as String to send a photo that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a photo from the Internet, or upload a new photo using " +"multipart/form-data. The photo must be at most 10 MB in size. The photo's" +" width and height must not exceed 10000 in total. Width and height ratio " +"must be at most 20. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:12 of +msgid "" +"Photo caption (may also be used when resending photos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:13 of +msgid "" +"Mode for parsing entities in the photo caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:15 of +msgid "" +"Pass :code:`True` if the photo needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:21 of +msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:6 of +msgid "" +"Use this method to send a native poll. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendpoll" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:10 of +msgid "Poll question, 1-300 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:11 of +msgid "" +"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " +"each" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:13 of +msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:14 of +msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:15 of +msgid "" +":code:`True`, if the poll allows multiple answers, ignored for polls in " +"quiz mode, defaults to :code:`False`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:16 of +msgid "" +"0-based identifier of the correct answer option, required for polls in " +"quiz mode" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:17 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:18 of +msgid "" +"Mode for parsing entities in the explanation. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:19 of +msgid "" +"A JSON-serialized list of special entities that appear in the poll " +"explanation, which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:20 of +msgid "" +"Amount of time in seconds the poll will be active after creation, 5-600. " +"Can't be used together with *close_date*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:21 of +msgid "" +"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 *open_period*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:22 of +msgid "" +"Pass :code:`True` if the poll needs to be immediately closed. This can be" +" useful for poll preview." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:28 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:28 of +msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:6 of +msgid "" +"Use this method to send an animated emoji that will display a random " +"value. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#senddice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:11 of +msgid "" +"Emoji on which the dice throw animation is based. Currently, must be one " +"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" +" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " +"to '🎲'" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:13 of +msgid "Protects the contents of the sent message from forwarding" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:17 of +msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:6 of +msgid "" +"Use this method to send static .WEBP, `animated " +"`_ .TGS, or `video " +"`_ .WEBM " +"stickers. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendsticker" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:10 of +msgid "" +"Sticker to send. Pass a file_id as String to send a file that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " +"or .TGS sticker using multipart/form-data. :ref:`More information on " +"Sending Files » `. Video stickers can only be sent by a " +"file_id. Animated stickers can't be sent via an HTTP URL." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:12 of +msgid "Emoji associated with the sticker; only for just uploaded stickers" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:18 of +msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:6 of +msgid "" +"Use this method to send information about a venue. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvenue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:10 of +msgid "Latitude of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:11 of +msgid "Longitude of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:12 of +msgid "Name of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:13 of +msgid "Address of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:15 of +msgid "Foursquare identifier of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:16 of +msgid "" +"Foursquare type of the venue, if known. (For example, " +"'arts_entertainment/default', 'arts_entertainment/aquarium' or " +"'food/icecream'.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:17 of +msgid "Google Places identifier of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:18 of +msgid "" +"Google Places type of the venue. (See `supported types " +"`_.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:24 of +msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:6 of +msgid "" +"Use this method to send video files, Telegram clients support MPEG4 " +"videos (other formats may be sent as " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send video files of up to 50 MB in size, this limit may be changed in the" +" future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideo" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:10 of +msgid "" +"Video to send. Pass a file_id as String to send a video that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a video from the Internet, or upload a new video using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:12 of +msgid "Duration of sent video in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:13 of +msgid "Video width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:14 of +msgid "Video height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:16 of +msgid "" +"Video caption (may also be used when resending videos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:17 of +msgid "" +"Mode for parsing entities in the video caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:19 of +msgid "" +"Pass :code:`True` if the video needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:20 of +msgid "Pass :code:`True` if the uploaded video is suitable for streaming" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:26 of +msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" +" fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:6 of +msgid "" +"As of `v.4.0 `_, " +"Telegram clients support rounded square MPEG4 videos of up to 1 minute " +"long. Use this method to send video messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideonote" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:10 of +msgid "" +"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:13 of +msgid "Video width and height, i.e. diameter of the video message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display the file as a playable voice message. For this to work, your " +"audio must be in an .OGG file encoded with OPUS (other formats may be " +"sent as :class:`aiogram.types.audio.Audio` or " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send voice messages of up to 50 MB in size, this limit may be changed in " +"the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvoice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:10 of +msgid "" +"Audio file to send. Pass a file_id as String to send a file that exists " +"on the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a file from the Internet, or upload a new one using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:12 of +msgid "Voice message caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:13 of +msgid "" +"Mode for parsing entities in the voice message caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:15 of +msgid "Duration of the voice message in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:21 of +msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" +msgstr "" + #~ msgid "Use this method to approve a chat join request." #~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member.po index 6c775a80..49bf21a4 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member.po +++ b/docs/locale/en/LC_MESSAGES/api/types/chat_member.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member.rst:3 msgid "ChatMember" @@ -55,162 +55,6 @@ msgstr "" msgid "Source: https://core.telegram.org/bots/api#chatmember" msgstr "" -#: ../../docstring aiogram.types.chat_member.ChatMember.status:1 of -msgid "The member's status in the chat" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.user:1 of -msgid "*Optional*. Information about the user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.is_anonymous:1 of -msgid "*Optional*. :code:`True`, if the user's presence in the chat is hidden" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.custom_title:1 of -msgid "*Optional*. Custom title for this user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_be_edited:1 of -msgid "" -"*Optional*. :code:`True`, if the bot is allowed to edit administrator " -"privileges of that user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_manage_chat:1 of -msgid "" -"*Optional*. :code:`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" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_delete_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can delete messages of " -"other users" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_manage_video_chats:1 of -msgid "*Optional*. :code:`True`, if the administrator can manage video chats" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_restrict_members:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can restrict, ban or unban" -" chat members" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_promote_members:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can add new administrators" -" with a subset of their own privileges or demote administrators that they" -" have promoted, directly or indirectly (promoted by administrators that " -"were appointed by the user)" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_change_info:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to change the chat " -"title, photo and other settings" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_invite_users:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to invite new users to " -"the chat" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_post_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_edit_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the administrator can edit messages of other" -" users and can pin messages; channels only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_pin_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to pin messages; groups " -"and supergroups only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_manage_topics:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to create, rename, " -"close, and reopen forum topics; supergroups only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.is_member:1 of -msgid "" -"*Optional*. :code:`True`, if the user is a member of the chat at the " -"moment of the request" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send text messages, " -"contacts, invoices, locations and venues" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_audios:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send audios" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_documents:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send documents" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_photos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send photos" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_videos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send videos" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_video_notes:1 -#: of -msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_voice_notes:1 -#: of -msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_polls:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send polls" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_send_other_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send animations, " -"games, stickers and use inline bots" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_add_web_page_previews:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to add web page previews" -" to their messages" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.until_date:1 of -msgid "" -"*Optional*. Date when restrictions will be lifted for this user; unix " -"time. If 0, then the user is restricted forever" -msgstr "" - #~ msgid "..." #~ msgstr "" @@ -236,3 +80,144 @@ msgstr "" #~ "photos, videos, video notes and voice" #~ " notes" #~ msgstr "" + +#~ msgid "The member's status in the chat" +#~ msgstr "" + +#~ msgid "*Optional*. Information about the user" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user's presence in the chat is hidden" +#~ msgstr "" + +#~ msgid "*Optional*. Custom title for this user" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the bot is" +#~ " allowed to edit administrator privileges" +#~ " of that user" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can delete messages of other users" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the administrator can manage video chats" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can restrict, ban or unban chat " +#~ "members" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can add new administrators with a" +#~ " subset of their own privileges or" +#~ " demote administrators that they have " +#~ "promoted, directly or indirectly (promoted " +#~ "by administrators that were appointed by" +#~ " the user)" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to change the chat title," +#~ " photo and other settings" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to invite new users to " +#~ "the chat" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post in the channel; channels" +#~ " only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can edit messages of other users " +#~ "and can pin messages; channels only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to pin messages; groups and" +#~ " supergroups only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to create, rename, close, " +#~ "and reopen forum topics; supergroups " +#~ "only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " a member of the chat at the" +#~ " moment of the request" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to send text messages, " +#~ "contacts, invoices, locations and venues" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send audios" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send documents" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send photos" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send videos" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send polls" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to send animations, games, " +#~ "stickers and use inline bots" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to add web page previews " +#~ "to their messages" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. Date when restrictions will " +#~ "be lifted for this user; unix " +#~ "time. If 0, then the user is " +#~ "restricted forever" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po index 756e5b94..dec952fe 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po +++ b/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,3 +68,1165 @@ msgid "" "*Optional*. True, if the user joined the chat via a chat folder invite " "link" msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:4 of +msgid ":code:`chat_id`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:6 of +msgid "" +"Use this method to send text messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmessage" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of +msgid "Parameters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:10 of +msgid "Text of the message to be sent, 1-4096 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:10 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:11 of +msgid "" +"Unique identifier for the target message thread (topic) of the forum; for" +" forum supergroups only" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:12 of +msgid "" +"Mode for parsing entities in the message text. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:13 of +msgid "" +"A JSON-serialized list of special entities that appear in message text, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:14 of +msgid "Disables link previews for links in this message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:32 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:13 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:16 of +msgid "" +"Sends the message `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:13 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:33 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:17 of +msgid "Protects the contents of the sent message from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:34 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:25 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:18 of +msgid "If the message is a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:35 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:26 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:19 of +msgid "" +"Pass :code:`True` if the message should be sent even if the specified " +"replied-to message is not found" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:27 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:25 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:20 of +msgid "" +"Additional interface options. A JSON-serialized object for an `inline " +"keyboard `_, " +"`custom reply keyboard " +"`_, instructions to " +"remove reply keyboard or to force a reply from the user." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of +msgid "Returns" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:20 of +msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:6 of +msgid "" +"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " +"without sound). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send animation files of up to 50 MB in size, this limit may be changed in" +" the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:8 of +msgid "Source: https://core.telegram.org/bots/api#sendanimation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:10 of +msgid "" +"Animation to send. Pass a file_id as String to send an animation that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an animation from the Internet, or upload a " +"new animation using multipart/form-data. :ref:`More information on " +"Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:12 of +msgid "Duration of sent animation in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:13 of +msgid "Animation width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:14 of +msgid "Animation height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:14 of +msgid "" +"Thumbnail of the file sent; can be ignored if thumbnail generation for " +"the file is supported server-side. The thumbnail should be in JPEG format" +" and less than 200 kB in size. A thumbnail's width and height should not " +"exceed 320. Ignored if the file is not uploaded using multipart/form-" +"data. Thumbnails can't be reused and can be only uploaded as a new file, " +"so you can pass 'attach://' if the thumbnail was " +"uploaded using multipart/form-data under . :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:16 of +msgid "" +"Animation caption (may also be used when resending animation by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:17 of +msgid "" +"Mode for parsing entities in the animation caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:14 of +msgid "" +"A JSON-serialized list of special entities that appear in the caption, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:19 of +msgid "" +"Pass :code:`True` if the animation needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:25 of +msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display them in the music player. Your audio must be in the .MP3 or .M4A " +"format. On success, the sent :class:`aiogram.types.message.Message` is " +"returned. Bots can currently send audio files of up to 50 MB in size, " +"this limit may be changed in the future. For sending voice messages, use " +"the :class:`aiogram.methods.send_voice.SendVoice` method instead." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:9 of +msgid "Source: https://core.telegram.org/bots/api#sendaudio" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:11 of +msgid "" +"Audio file to send. Pass a file_id as String to send an audio file that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an audio file from the Internet, or upload a " +"new one using multipart/form-data. :ref:`More information on Sending " +"Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:13 of +msgid "Audio caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:14 of +msgid "" +"Mode for parsing entities in the audio caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:16 of +msgid "Duration of the audio in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:17 of +msgid "Performer" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:18 of +msgid "Track name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:25 of +msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:6 of +msgid "" +"Use this method to send phone contacts. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:8 of +msgid "Source: https://core.telegram.org/bots/api#sendcontact" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:10 of +msgid "Contact's phone number" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:11 of +msgid "Contact's first name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:13 of +msgid "Contact's last name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:14 of +msgid "" +"Additional data about the contact in the form of a `vCard " +"`_, 0-2048 bytes" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:20 of +msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:6 of +msgid "" +"Use this method to send general files. On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send files of any type of up to 50 MB in size, this limit may be changed " +"in the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:8 of +msgid "Source: https://core.telegram.org/bots/api#senddocument" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:10 of +msgid "" +"File to send. Pass a file_id as String to send a file that exists on the " +"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" +" to get a file from the Internet, or upload a new one using multipart" +"/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:13 of +msgid "" +"Document caption (may also be used when resending documents by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:14 of +msgid "" +"Mode for parsing entities in the document caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:16 of +msgid "" +"Disables automatic server-side content type detection for files uploaded " +"using multipart/form-data" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:22 of +msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:6 of +msgid "" +"Use this method to send a game. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:8 of +msgid "Source: https://core.telegram.org/bots/api#sendgame" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:10 of +msgid "" +"Short name of the game, serves as the unique identifier for the game. Set" +" up your games via `@BotFather `_." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:16 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Play game_title' button will be shown. If not empty, the first " +"button must launch the game." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:17 of +msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:6 of +msgid "" +"Use this method to send invoices. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:8 of +msgid "Source: https://core.telegram.org/bots/api#sendinvoice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:10 of +msgid "Product name, 1-32 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:11 of +msgid "Product description, 1-255 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:12 of +msgid "" +"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " +"the user, use for your internal processes." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:13 of +msgid "" +"Payment provider token, obtained via `@BotFather " +"`_" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:14 of +msgid "" +"Three-letter ISO 4217 currency code, see `more on currencies " +"`_" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:15 of +msgid "" +"Price breakdown, a JSON-serialized list of components (e.g. product " +"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:17 of +msgid "" +"The maximum accepted amount for tips in the *smallest units* of the " +"currency (integer, **not** float/double). For example, for a maximum tip " +"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " +"parameter in `currencies.json " +"`_, it shows the" +" number of digits past the decimal point for each currency (2 for the " +"majority of currencies). Defaults to 0" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:18 of +msgid "" +"A JSON-serialized 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 " +"*max_tip_amount*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:19 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:20 of +msgid "" +"JSON-serialized 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." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:21 of +msgid "" +"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." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:22 of +msgid "Photo size in bytes" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:23 of +msgid "Photo width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:24 of +msgid "Photo height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:25 of +msgid "" +"Pass :code:`True` if you require the user's full name to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:26 of +msgid "" +"Pass :code:`True` if you require the user's phone number to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:27 of +msgid "" +"Pass :code:`True` if you require the user's email address to complete the" +" order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:28 of +msgid "" +"Pass :code:`True` if you require the user's shipping address to complete " +"the order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:29 of +msgid "Pass :code:`True` if the user's phone number should be sent to provider" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:30 of +msgid "Pass :code:`True` if the user's email address should be sent to provider" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:31 of +msgid "Pass :code:`True` if the final price depends on the shipping method" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:36 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Pay :code:`total price`' button will be shown. If not empty, the " +"first button must be a Pay button." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:37 of +msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:6 of +msgid "" +"Use this method to send point on the map. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:8 of +msgid "Source: https://core.telegram.org/bots/api#sendlocation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:10 of +msgid "Latitude of the location" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:11 of +msgid "Longitude of the location" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:13 of +msgid "The radius of uncertainty for the location, measured in meters; 0-1500" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:14 of +msgid "" +"Period in seconds for which the location will be updated (see `Live " +"Locations `_, should be between" +" 60 and 86400." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:15 of +msgid "" +"For live locations, a direction in which the user is moving, in degrees. " +"Must be between 1 and 360 if specified." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:16 of +msgid "" +"For live locations, a maximum distance for proximity alerts about " +"approaching another chat member, in meters. Must be between 1 and 100000 " +"if specified." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:22 of +msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_media_group.SendMediaGroup` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:6 of +msgid "" +"Use this method to send a group of photos, videos, documents or audios as" +" an album. Documents and audio files can be only grouped in an album with" +" messages of the same type. On success, an array of `Messages " +"`_ that were sent is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:10 of +msgid "" +"A JSON-serialized array describing messages to be sent, must include 2-10" +" items" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:12 of +msgid "" +"Sends messages `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:13 of +msgid "Protects the contents of the sent messages from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:14 of +msgid "If the messages are a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:16 of +msgid "" +"instance of method " +":class:`aiogram.methods.send_media_group.SendMediaGroup`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:6 of +msgid "" +"Use this method to send photos. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:8 of +msgid "Source: https://core.telegram.org/bots/api#sendphoto" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:10 of +msgid "" +"Photo to send. Pass a file_id as String to send a photo that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a photo from the Internet, or upload a new photo using " +"multipart/form-data. The photo must be at most 10 MB in size. The photo's" +" width and height must not exceed 10000 in total. Width and height ratio " +"must be at most 20. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:12 of +msgid "" +"Photo caption (may also be used when resending photos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:13 of +msgid "" +"Mode for parsing entities in the photo caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:15 of +msgid "" +"Pass :code:`True` if the photo needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:21 of +msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:6 of +msgid "" +"Use this method to send a native poll. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:8 of +msgid "Source: https://core.telegram.org/bots/api#sendpoll" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:10 of +msgid "Poll question, 1-300 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:11 of +msgid "" +"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " +"each" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:13 of +msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:14 of +msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:15 of +msgid "" +":code:`True`, if the poll allows multiple answers, ignored for polls in " +"quiz mode, defaults to :code:`False`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:16 of +msgid "" +"0-based identifier of the correct answer option, required for polls in " +"quiz mode" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:17 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:18 of +msgid "" +"Mode for parsing entities in the explanation. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:19 of +msgid "" +"A JSON-serialized list of special entities that appear in the poll " +"explanation, which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:20 of +msgid "" +"Amount of time in seconds the poll will be active after creation, 5-600. " +"Can't be used together with *close_date*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:21 of +msgid "" +"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 *open_period*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:22 of +msgid "" +"Pass :code:`True` if the poll needs to be immediately closed. This can be" +" useful for poll preview." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:28 of +msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:6 of +msgid "" +"Use this method to send an animated emoji that will display a random " +"value. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:8 of +msgid "Source: https://core.telegram.org/bots/api#senddice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:11 of +msgid "" +"Emoji on which the dice throw animation is based. Currently, must be one " +"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" +" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " +"to '🎲'" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:13 of +msgid "Protects the contents of the sent message from forwarding" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:17 of +msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:6 of +msgid "" +"Use this method to send static .WEBP, `animated " +"`_ .TGS, or `video " +"`_ .WEBM " +"stickers. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:8 of +msgid "Source: https://core.telegram.org/bots/api#sendsticker" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:10 of +msgid "" +"Sticker to send. Pass a file_id as String to send a file that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " +"or .TGS sticker using multipart/form-data. :ref:`More information on " +"Sending Files » `. Video stickers can only be sent by a " +"file_id. Animated stickers can't be sent via an HTTP URL." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:12 of +msgid "Emoji associated with the sticker; only for just uploaded stickers" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:18 of +msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:6 of +msgid "" +"Use this method to send information about a venue. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvenue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:10 of +msgid "Latitude of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:11 of +msgid "Longitude of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:12 of +msgid "Name of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:13 of +msgid "Address of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:15 of +msgid "Foursquare identifier of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:16 of +msgid "" +"Foursquare type of the venue, if known. (For example, " +"'arts_entertainment/default', 'arts_entertainment/aquarium' or " +"'food/icecream'.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:17 of +msgid "Google Places identifier of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:18 of +msgid "" +"Google Places type of the venue. (See `supported types " +"`_.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:24 of +msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:6 of +msgid "" +"Use this method to send video files, Telegram clients support MPEG4 " +"videos (other formats may be sent as " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send video files of up to 50 MB in size, this limit may be changed in the" +" future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideo" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:10 of +msgid "" +"Video to send. Pass a file_id as String to send a video that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a video from the Internet, or upload a new video using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:12 of +msgid "Duration of sent video in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:13 of +msgid "Video width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:14 of +msgid "Video height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:16 of +msgid "" +"Video caption (may also be used when resending videos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:17 of +msgid "" +"Mode for parsing entities in the video caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:19 of +msgid "" +"Pass :code:`True` if the video needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:20 of +msgid "Pass :code:`True` if the uploaded video is suitable for streaming" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:26 of +msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" +" fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:6 of +msgid "" +"As of `v.4.0 `_, " +"Telegram clients support rounded square MPEG4 videos of up to 1 minute " +"long. Use this method to send video messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideonote" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:10 of +msgid "" +"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:13 of +msgid "Video width and height, i.e. diameter of the video message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:20 of +msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display the file as a playable voice message. For this to work, your " +"audio must be in an .OGG file encoded with OPUS (other formats may be " +"sent as :class:`aiogram.types.audio.Audio` or " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send voice messages of up to 50 MB in size, this limit may be changed in " +"the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvoice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:10 of +msgid "" +"Audio file to send. Pass a file_id as String to send a file that exists " +"on the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a file from the Internet, or upload a new one using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:12 of +msgid "Voice message caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:13 of +msgid "" +"Mode for parsing entities in the voice message caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:15 of +msgid "Duration of the voice message in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:21 of +msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po index 25d6a145..995b93c1 100644 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ b/docs/locale/en/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,265 +22,370 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" msgstr "" -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 -#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 -#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 -#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 +#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 +#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 +#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 #: ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 msgid "" -"If router does not support custom event it does not break and passes it " -"to included routers `#1147 " -"`_" +"Added new shortcuts for " +":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " +"message to chat that member joined/left. `#1234 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:9 -msgid "Added support for FSM in Forum topics." -msgstr "" - -#: ../../[towncrier-fragments]:11 -msgid "The strategy can be changed in dispatcher:" -msgstr "" - -#: ../../[towncrier-fragments]:24 +#: ../../[towncrier-fragments]:10 msgid "" -"If you have implemented you own storages you should extend record key " -"generation with new one attribute - `thread_id`" +"Added new shortcuts for " +":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " +"access to sending messages to users who wants to join to chat. `#1235 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:26 -msgid "`#1161 `_" +#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 +#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 +#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 +#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 +#: ../../[towncrier-fragments]:16 +msgid "Bugfixes" msgstr "" -#: ../../[towncrier-fragments]:27 -msgid "Improved CallbackData serialization." +#: ../../[towncrier-fragments]:18 +msgid "" +"Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:29 -msgid "Minimized UUID (hex without dashes)" +#: ../../[towncrier-fragments]:20 +msgid "" +"Added model validation to remove UNSET before field validation. This " +"change was necessary to correctly handle parse_mode where 'UNSET' is used" +" as a sentinel value. Without the removal of 'UNSET', it would create " +"issues when passed to model initialization from Bot.method_name. 'UNSET' " +"was also added to typing. `#1233 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 +#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +msgid "Improved Documentation" msgstr "" #: ../../[towncrier-fragments]:30 +msgid "" +"Improved docs, added basic migration guide (will be expanded later) " +"`#1143 `_" +msgstr "" + +#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 +#: ../../[towncrier-fragments]:35 +msgid "Deprecations and Removals" +msgstr "" + +#: ../../[towncrier-fragments]:37 +msgid "" +"Removed the use of the context instance (Bot.get_current) from all " +"placements that were used previously. This is to avoid the use of the " +"context instance in the wrong place. `#1230 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:20 +msgid "3.0.0b8 (2023-07-17)" +msgstr "" + +#: ../../../CHANGES.rst:25 +msgid "" +"Added possibility to use custom events in routers (If router does not " +"support custom event it does not break and passes it to included " +"routers). `#1147 `_" +msgstr "" + +#: ../../../CHANGES.rst:27 +msgid "Added support for FSM in Forum topics." +msgstr "" + +#: ../../../CHANGES.rst:29 +msgid "The strategy can be changed in dispatcher:" +msgstr "" + +#: ../../../CHANGES.rst:42 +msgid "" +"If you have implemented you own storages you should extend record key " +"generation with new one attribute - :code:`thread_id`" +msgstr "" + +#: ../../../CHANGES.rst:44 +msgid "`#1161 `_" +msgstr "" + +#: ../../../CHANGES.rst:45 +msgid "Improved CallbackData serialization." +msgstr "" + +#: ../../../CHANGES.rst:47 +msgid "Minimized UUID (hex without dashes)" +msgstr "" + +#: ../../../CHANGES.rst:48 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../[towncrier-fragments]:31 +#: ../../../CHANGES.rst:49 msgid "`#1163 `_" msgstr "" -#: ../../[towncrier-fragments]:32 +#: ../../../CHANGES.rst:50 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:53 msgid "" -"Added X-Telegram-Bot-Api-Secret-Token header check `#1173 " +"Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:55 msgid "" -"Added possibility to pass custom headers to URLInputFile object `#1191 " -"`_" +"Made :code:`allowed_updates` list to revolve automatically in " +"start_polling method if not set explicitly. `#1178 " +"`_" msgstr "" -#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 -#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 -#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 -#: ../../../CHANGES.rst:616 ../../[towncrier-fragments]:42 -msgid "Bugfixes" +#: ../../../CHANGES.rst:57 +msgid "" +"Added possibility to pass custom headers to :class:`URLInputFile` object " +"`#1191 `_" msgstr "" -#: ../../[towncrier-fragments]:44 +#: ../../../CHANGES.rst:64 msgid "" "Change type of result in InlineQueryResult enum for " -"`InlineQueryResultCachedMpeg4Gif` and `InlineQueryResultMpeg4Gif` to more" -" correct according to documentation." +":code:`InlineQueryResultCachedMpeg4Gif` and " +":code:`InlineQueryResultMpeg4Gif` to more correct according to " +"documentation." msgstr "" -#: ../../[towncrier-fragments]:47 +#: ../../../CHANGES.rst:67 msgid "" "Change regexp for entities parsing to more correct " -"(`InlineQueryResultType.yml`). `#1146 " +"(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../[towncrier-fragments]:49 +#: ../../../CHANGES.rst:69 msgid "" "Fixed signature of startup/shutdown events to include the " -"**dispatcher.workflow_data as the handler arguments. `#1155 " +":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../[towncrier-fragments]:51 +#: ../../../CHANGES.rst:71 msgid "" -"Added missing FORUM_TOPIC_EDITED value to content_type property `#1160 " -"`_" +"Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " +"`#1160 `_" msgstr "" -#: ../../[towncrier-fragments]:53 +#: ../../../CHANGES.rst:73 msgid "" -"Fixed compatibility with Python 3.8-3.9 `#1162 " +"Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../[towncrier-fragments]:55 +#: ../../../CHANGES.rst:75 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../[towncrier-fragments]:57 +#: ../../../CHANGES.rst:77 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 -#: ../../[towncrier-fragments]:62 -msgid "Improved Documentation" +#: ../../../CHANGES.rst:79 +msgid "" +"Fixed the serialization error associated with nested subtypes like " +"InputMedia, ChatMember, etc." msgstr "" -#: ../../[towncrier-fragments]:64 +#: ../../../CHANGES.rst:82 msgid "" -"Changed small grammar typos for `upload_file` `#1133 " +"The previously generated code resulted in an invalid schema under " +"pydantic v2, which has stricter type parsing. Hence, subtypes without the" +" specification of all subtype unions were generating an empty object. " +"This has been rectified now. `#1213 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:92 +msgid "" +"Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 ../../[towncrier-fragments]:69 -msgid "Deprecations and Removals" -msgstr "" - -#: ../../[towncrier-fragments]:71 +#: ../../../CHANGES.rst:99 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../[towncrier-fragments]:73 +#: ../../../CHANGES.rst:101 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:127 ../../../CHANGES.rst:204 ../../../CHANGES.rst:257 -#: ../../../CHANGES.rst:308 ../../../CHANGES.rst:362 ../../../CHANGES.rst:404 -#: ../../../CHANGES.rst:450 ../../../CHANGES.rst:510 ../../../CHANGES.rst:531 -#: ../../../CHANGES.rst:554 ../../../CHANGES.rst:591 ../../../CHANGES.rst:630 -#: ../../[towncrier-fragments]:78 +#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 +#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 +#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 +#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 +#: ../../../CHANGES.rst:760 msgid "Misc" msgstr "" -#: ../../[towncrier-fragments]:80 +#: ../../../CHANGES.rst:108 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../[towncrier-fragments]:84 +#: ../../../CHANGES.rst:112 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../[towncrier-fragments]:87 +#: ../../../CHANGES.rst:115 msgid "`#1139 `_" msgstr "" -#: ../../[towncrier-fragments]:88 -msgid "" -"Added global defaults `disable_web_page_preview` and `protect_content` in" -" addition to `parse_mode` to the Bot instance, reworked internal request " -"builder mechanism. `#1142 " -"`_" -msgstr "" - -#: ../../[towncrier-fragments]:91 -msgid "" -"Removed bot parameters from storages `#1144 " -"`_" -msgstr "" - -#: ../../[towncrier-fragments]:93 +#: ../../../CHANGES.rst:116 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../[towncrier-fragments]:97 +#: ../../../CHANGES.rst:120 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../[towncrier-fragments]:99 +#: ../../../CHANGES.rst:122 msgid "`#1168 `_" msgstr "" -#: ../../[towncrier-fragments]:100 +#: ../../../CHANGES.rst:123 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../[towncrier-fragments]:104 -msgid "" -"Be careful, not all libraries is already updated to using V2 (for example" -" at the time, when this warning was added FastAPI still not support V2)" +#: ../../../CHANGES.rst:127 +msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../[towncrier-fragments]:106 +#: ../../../CHANGES.rst:128 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:129 +msgid "" +"Added global defaults :code:`disable_web_page_preview` and " +":code:`protect_content` in addition to :code:`parse_mode` to the Bot " +"instance, reworked internal request builder mechanism. `#1142 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:132 +msgid "" +"Removed bot parameters from storages `#1144 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:135 +msgid "" +"Replaced ContextVar's with a new feature called `Validation Context " +"`_" +" in Pydantic to improve the clarity, usability, and versatility of " +"handling the Bot instance within method shortcuts." +msgstr "" + +#: ../../../CHANGES.rst:140 +msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" +msgstr "" + +#: ../../../CHANGES.rst:141 +msgid "`#1210 `_" +msgstr "" + +#: ../../../CHANGES.rst:142 +msgid "Updated magic-filter with new features" +msgstr "" + +#: ../../../CHANGES.rst:144 +msgid "Added hint for :code:`len(F)` error" +msgstr "" + +#: ../../../CHANGES.rst:145 +msgid "Added not in operation" +msgstr "" + +#: ../../../CHANGES.rst:146 +msgid "`#1221 `_" +msgstr "" + +#: ../../../CHANGES.rst:150 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:24 +#: ../../../CHANGES.rst:154 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:26 +#: ../../../CHANGES.rst:156 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:28 +#: ../../../CHANGES.rst:158 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:40 +#: ../../../CHANGES.rst:170 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:58 +#: ../../../CHANGES.rst:188 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:60 +#: ../../../CHANGES.rst:190 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:78 +#: ../../../CHANGES.rst:208 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:194 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -299,15 +404,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:80 +#: ../../../CHANGES.rst:210 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:105 +#: ../../../CHANGES.rst:235 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:83 +#: ../../../CHANGES.rst:213 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -335,85 +440,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:107 +#: ../../../CHANGES.rst:237 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:238 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:109 +#: ../../../CHANGES.rst:239 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:110 +#: ../../../CHANGES.rst:240 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:111 +#: ../../../CHANGES.rst:241 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:113 +#: ../../../CHANGES.rst:243 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:250 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:252 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:259 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:131 +#: ../../../CHANGES.rst:261 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:133 +#: ../../../CHANGES.rst:263 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:265 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:139 +#: ../../../CHANGES.rst:269 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:271 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:272 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -421,13 +526,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:275 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:147 +#: ../../../CHANGES.rst:277 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -435,127 +540,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:153 +#: ../../../CHANGES.rst:283 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:288 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:160 +#: ../../../CHANGES.rst:290 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:162 +#: ../../../CHANGES.rst:292 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:164 +#: ../../../CHANGES.rst:294 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:165 +#: ../../../CHANGES.rst:295 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:166 +#: ../../../CHANGES.rst:296 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:167 +#: ../../../CHANGES.rst:297 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:168 +#: ../../../CHANGES.rst:298 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:169 +#: ../../../CHANGES.rst:299 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:300 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:171 +#: ../../../CHANGES.rst:301 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:173 +#: ../../../CHANGES.rst:303 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:174 +#: ../../../CHANGES.rst:304 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:175 +#: ../../../CHANGES.rst:305 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:176 +#: ../../../CHANGES.rst:306 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:183 +#: ../../../CHANGES.rst:313 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:185 +#: ../../../CHANGES.rst:315 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:187 +#: ../../../CHANGES.rst:317 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:318 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:189 +#: ../../../CHANGES.rst:319 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:195 +#: ../../../CHANGES.rst:325 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:197 +#: ../../../CHANGES.rst:327 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:199 +#: ../../../CHANGES.rst:329 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:206 +#: ../../../CHANGES.rst:336 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:338 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -564,23 +669,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:343 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:218 +#: ../../../CHANGES.rst:348 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:220 +#: ../../../CHANGES.rst:350 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:222 +#: ../../../CHANGES.rst:352 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -588,61 +693,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:225 +#: ../../../CHANGES.rst:355 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:232 +#: ../../../CHANGES.rst:362 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:234 +#: ../../../CHANGES.rst:364 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:236 +#: ../../../CHANGES.rst:366 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:368 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:245 +#: ../../../CHANGES.rst:375 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:382 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:389 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:264 +#: ../../../CHANGES.rst:394 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:399 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -650,198 +755,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:273 +#: ../../../CHANGES.rst:403 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:405 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:413 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:284 +#: ../../../CHANGES.rst:414 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:416 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:293 +#: ../../../CHANGES.rst:423 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:425 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:427 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:428 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:429 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:430 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:431 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:433 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:310 +#: ../../../CHANGES.rst:440 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:312 +#: ../../../CHANGES.rst:442 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:314 +#: ../../../CHANGES.rst:444 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:316 +#: ../../../CHANGES.rst:446 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:448 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:320 +#: ../../../CHANGES.rst:450 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:321 +#: ../../../CHANGES.rst:451 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:322 +#: ../../../CHANGES.rst:452 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:323 +#: ../../../CHANGES.rst:453 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:324 +#: ../../../CHANGES.rst:454 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:455 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:326 +#: ../../../CHANGES.rst:456 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:328 +#: ../../../CHANGES.rst:458 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:330 +#: ../../../CHANGES.rst:460 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:332 +#: ../../../CHANGES.rst:462 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:337 +#: ../../../CHANGES.rst:467 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:342 +#: ../../../CHANGES.rst:472 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:344 +#: ../../../CHANGES.rst:474 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:351 +#: ../../../CHANGES.rst:481 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:353 +#: ../../../CHANGES.rst:483 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:485 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:357 +#: ../../../CHANGES.rst:487 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:494 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:496 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -849,14 +954,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:369 +#: ../../../CHANGES.rst:499 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:371 +#: ../../../CHANGES.rst:501 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -865,113 +970,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:378 +#: ../../../CHANGES.rst:508 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:383 +#: ../../../CHANGES.rst:513 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:386 +#: ../../../CHANGES.rst:516 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:388 +#: ../../../CHANGES.rst:518 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:390 +#: ../../../CHANGES.rst:520 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:397 +#: ../../../CHANGES.rst:527 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:529 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:406 +#: ../../../CHANGES.rst:536 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:408 +#: ../../../CHANGES.rst:538 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:410 +#: ../../../CHANGES.rst:540 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:546 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:421 +#: ../../../CHANGES.rst:551 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:553 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:439 +#: ../../../CHANGES.rst:569 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:445 +#: ../../../CHANGES.rst:575 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:582 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:584 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:586 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:588 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -979,11 +1084,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:594 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:469 +#: ../../../CHANGES.rst:599 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -991,258 +1096,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:473 +#: ../../../CHANGES.rst:603 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:613 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:484 +#: ../../../CHANGES.rst:614 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:617 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:489 +#: ../../../CHANGES.rst:619 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:495 +#: ../../../CHANGES.rst:625 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:631 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:503 +#: ../../../CHANGES.rst:633 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:505 +#: ../../../CHANGES.rst:635 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:512 +#: ../../../CHANGES.rst:642 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:515 +#: ../../../CHANGES.rst:645 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:517 +#: ../../../CHANGES.rst:647 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:519 +#: ../../../CHANGES.rst:649 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:650 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:521 +#: ../../../CHANGES.rst:651 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:522 +#: ../../../CHANGES.rst:652 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:528 +#: ../../../CHANGES.rst:658 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:533 +#: ../../../CHANGES.rst:663 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:665 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:670 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:545 +#: ../../../CHANGES.rst:675 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:547 +#: ../../../CHANGES.rst:677 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:549 +#: ../../../CHANGES.rst:679 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:556 +#: ../../../CHANGES.rst:686 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:558 +#: ../../../CHANGES.rst:688 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:560 +#: ../../../CHANGES.rst:690 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:561 +#: ../../../CHANGES.rst:691 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:562 +#: ../../../CHANGES.rst:692 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:563 +#: ../../../CHANGES.rst:693 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:565 +#: ../../../CHANGES.rst:695 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:567 +#: ../../../CHANGES.rst:697 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:573 +#: ../../../CHANGES.rst:703 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:578 +#: ../../../CHANGES.rst:708 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:716 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:593 +#: ../../../CHANGES.rst:723 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:595 +#: ../../../CHANGES.rst:725 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:597 +#: ../../../CHANGES.rst:727 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:729 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:604 +#: ../../../CHANGES.rst:734 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:609 +#: ../../../CHANGES.rst:739 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:611 +#: ../../../CHANGES.rst:741 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:618 +#: ../../../CHANGES.rst:748 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:755 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:632 +#: ../../../CHANGES.rst:762 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:634 +#: ../../../CHANGES.rst:764 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:636 +#: ../../../CHANGES.rst:766 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2784,3 +2889,86 @@ msgstr "" #~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" +#~ msgstr "" + +#~ msgid "" +#~ "If router does not support custom " +#~ "event it does not break and passes" +#~ " it to included routers `#1147 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "If you have implemented you own " +#~ "storages you should extend record key" +#~ " generation with new one attribute -" +#~ " `thread_id`" +#~ msgstr "" + +#~ msgid "" +#~ "Added X-Telegram-Bot-Api-Secret-Token" +#~ " header check `#1173 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added possibility to pass custom headers" +#~ " to URLInputFile object `#1191 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Change type of result in " +#~ "InlineQueryResult enum for " +#~ "`InlineQueryResultCachedMpeg4Gif` and " +#~ "`InlineQueryResultMpeg4Gif` to more correct " +#~ "according to documentation." +#~ msgstr "" + +#~ msgid "" +#~ "Change regexp for entities parsing to" +#~ " more correct (`InlineQueryResultType.yml`). " +#~ "`#1146 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Fixed signature of startup/shutdown events " +#~ "to include the **dispatcher.workflow_data as" +#~ " the handler arguments. `#1155 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added missing FORUM_TOPIC_EDITED value to " +#~ "content_type property `#1160 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Fixed compatibility with Python 3.8-3.9 " +#~ "`#1162 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Changed small grammar typos for " +#~ "`upload_file` `#1133 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added global defaults `disable_web_page_preview` " +#~ "and `protect_content` in addition to " +#~ "`parse_mode` to the Bot instance, " +#~ "reworked internal request builder mechanism." +#~ " `#1142 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Be careful, not all libraries is " +#~ "already updated to using V2 (for " +#~ "example at the time, when this " +#~ "warning was added FastAPI still not " +#~ "support V2)" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/contributing.po b/docs/locale/en/LC_MESSAGES/contributing.po index 2a7fe459..40354edd 100644 --- a/docs/locale/en/LC_MESSAGES/contributing.po +++ b/docs/locale/en/LC_MESSAGES/contributing.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../contributing.rst:3 msgid "Contributing" @@ -317,6 +317,14 @@ msgstr "" msgid "" "So, if you want to financially support the project, or, for example, give" " me a pizza or a beer, you can do it on `OpenCollective " -"`_ or `Patreon " -"`_." +"`_." msgstr "" + +#~ msgid "" +#~ "So, if you want to financially " +#~ "support the project, or, for example," +#~ " give me a pizza or a beer, " +#~ "you can do it on `OpenCollective " +#~ "`_ or `Patreon " +#~ "`_." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po index d21aea70..51222dc3 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/dispatcher.rst:3 msgid "Dispatcher" @@ -92,8 +92,7 @@ msgstr "" msgid "Run many bots with polling" msgstr "" -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:3 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:3 of +#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:3 of msgid "Bot instances (one or mre)" msgstr "" @@ -112,23 +111,22 @@ msgstr "" msgid "backoff-retry config" msgstr "" -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:7 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:7 of +#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:7 of msgid "List of the update types you want your bot to receive" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:8 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:8 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:9 of msgid "handle signals (SIGINT/SIGTERM)" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:9 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:9 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:10 of msgid "close bot sessions on shutdown" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:10 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:10 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:11 of msgid "contextual data" msgstr "" @@ -141,6 +139,16 @@ msgstr "" msgid "Polling runner" msgstr "" +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:3 of +msgid "Bot instances (one or more)" +msgstr "" + +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:7 of +msgid "" +"List of the update types you want your bot to receive By default, all " +"used update types are enabled (resolved from handlers)" +msgstr "" + #: ../../dispatcher/dispatcher.rst:18 msgid "Simple usage" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/errors.po b/docs/locale/en/LC_MESSAGES/dispatcher/errors.po new file mode 100644 index 00000000..d9f28e0a --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/errors.po @@ -0,0 +1,159 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/errors.rst:3 +msgid "Errors" +msgstr "" + +#: ../../dispatcher/errors.rst:7 +msgid "Handling errors" +msgstr "" + +#: ../../dispatcher/errors.rst:9 +msgid "" +"Is recommended way that you should use errors inside handlers using try-" +"except block, but in common cases you can use global errors handler at " +"router or dispatcher level." +msgstr "" + +#: ../../dispatcher/errors.rst:12 +msgid "" +"If you specify errors handler for router - it will be used for all " +"handlers inside this router." +msgstr "" + +#: ../../dispatcher/errors.rst:14 +msgid "" +"If you specify errors handler for dispatcher - it will be used for all " +"handlers inside all routers." +msgstr "" + +#: ../../dispatcher/errors.rst:34 +msgid "ErrorEvent" +msgstr "" + +#: aiogram.types.error_event.ErrorEvent:1 of +msgid "" +"Internal event, should be used to receive errors while processing Updates" +" from Telegram" +msgstr "" + +#: aiogram.types.error_event.ErrorEvent:3 of +msgid "Source: https://core.telegram.org/bots/api#error-event" +msgstr "" + +#: ../../docstring aiogram.types.error_event.ErrorEvent.update:1 of +msgid "Received update" +msgstr "" + +#: ../../docstring aiogram.types.error_event.ErrorEvent.exception:1 of +msgid "Exception" +msgstr "" + +#: ../../dispatcher/errors.rst:45 +msgid "Error types" +msgstr "" + +#: aiogram.exceptions.AiogramError:1 of +msgid "Base exception for all aiogram errors." +msgstr "" + +#: aiogram.exceptions.DetailedAiogramError:1 of +msgid "Base exception for all aiogram errors with detailed message." +msgstr "" + +#: aiogram.exceptions.CallbackAnswerException:1 of +msgid "Exception for callback answer." +msgstr "" + +#: aiogram.exceptions.UnsupportedKeywordArgument:1 of +msgid "Exception raised when a keyword argument is passed as filter." +msgstr "" + +#: aiogram.exceptions.TelegramAPIError:1 of +msgid "Base exception for all Telegram API errors." +msgstr "" + +#: aiogram.exceptions.TelegramNetworkError:1 of +msgid "Base exception for all Telegram network errors." +msgstr "" + +#: aiogram.exceptions.TelegramRetryAfter:1 of +msgid "Exception raised when flood control exceeds." +msgstr "" + +#: aiogram.exceptions.TelegramMigrateToChat:1 of +msgid "Exception raised when chat has been migrated to a supergroup." +msgstr "" + +#: aiogram.exceptions.TelegramBadRequest:1 of +msgid "Exception raised when request is malformed." +msgstr "" + +#: aiogram.exceptions.TelegramNotFound:1 of +msgid "Exception raised when chat, message, user, etc. not found." +msgstr "" + +#: aiogram.exceptions.TelegramConflictError:1 of +msgid "" +"Exception raised when bot token is already used by another application in" +" polling mode." +msgstr "" + +#: aiogram.exceptions.TelegramUnauthorizedError:1 of +msgid "Exception raised when bot token is invalid." +msgstr "" + +#: aiogram.exceptions.TelegramForbiddenError:1 of +msgid "Exception raised when bot is kicked from chat or etc." +msgstr "" + +#: aiogram.exceptions.TelegramServerError:1 of +msgid "Exception raised when Telegram server returns 5xx error." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:1 of +msgid "Exception raised when Telegram server is restarting." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:3 of +msgid "" +"It seems like this error is not used by Telegram anymore, but it's still " +"here for backward compatibility." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:6 of +msgid "" +"Currently, you should expect that Telegram can raise RetryAfter (with " +"timeout 5 seconds)" +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:7 of +msgid "error instead of this one." +msgstr "" + +#: aiogram.exceptions.TelegramEntityTooLarge:1 of +msgid "Exception raised when you are trying to send a file that is too large." +msgstr "" + +#: aiogram.exceptions.ClientDecodeError:1 of +msgid "" +"Exception raised when client can't decode response. (Malformed response, " +"etc.)" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/router.po b/docs/locale/en/LC_MESSAGES/dispatcher/router.po index 1d194ac3..450b5360 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/router.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/router.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/router.rst:3 msgid "Router" @@ -46,7 +46,9 @@ msgid "By decorator - :obj:`@router.()`" msgstr "" #: aiogram.dispatcher.router.Router.__init__ -#: aiogram.dispatcher.router.Router.include_router of +#: aiogram.dispatcher.router.Router.include_router +#: aiogram.dispatcher.router.Router.include_routers +#: aiogram.dispatcher.router.Router.resolve_used_update_types of msgid "Parameters" msgstr "" @@ -58,15 +60,37 @@ msgstr "" msgid "Attach another router." msgstr "" -#: aiogram.dispatcher.router.Router.include_router of +#: aiogram.dispatcher.router.Router.include_router +#: aiogram.dispatcher.router.Router.include_routers +#: aiogram.dispatcher.router.Router.resolve_used_update_types of msgid "Returns" msgstr "" -#: ../../dispatcher/router.rst:11 +#: aiogram.dispatcher.router.Router.include_routers:1 of +msgid "Attach multiple routers." +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:1 of +msgid "Resolve registered event names" +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:3 of +msgid "Is useful for getting updates only for registered event types." +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:5 of +msgid "skip specified event names" +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:6 of +msgid "set of registered names" +msgstr "" + +#: ../../dispatcher/router.rst:13 msgid "Event observers" msgstr "" -#: ../../dispatcher/router.rst:15 +#: ../../dispatcher/router.rst:17 msgid "" "All handlers always should be asynchronous. The name of the handler " "function is not important. The event argument name is also not important " @@ -74,134 +98,145 @@ msgid "" " to function can not accept two arguments with the same name." msgstr "" -#: ../../dispatcher/router.rst:18 +#: ../../dispatcher/router.rst:20 msgid "" "Here is the list of available observers and examples of how to register " "handlers" msgstr "" -#: ../../dispatcher/router.rst:20 +#: ../../dispatcher/router.rst:22 msgid "" "In these examples only decorator-style registering handlers are used, but" " if you don't like @decorators just use :obj:`.register(...)`" " method instead." msgstr "" -#: ../../dispatcher/router.rst:23 -msgid "Update" -msgstr "" - -#: ../../dispatcher/router.rst:32 -msgid "" -"By default Router already has an update handler which route all event " -"types to another observers." -msgstr "" - -#: ../../dispatcher/router.rst:36 +#: ../../dispatcher/router.rst:25 msgid "Message" msgstr "" -#: ../../dispatcher/router.rst:41 +#: ../../dispatcher/router.rst:30 msgid "Be attentive with filtering this event" msgstr "" -#: ../../dispatcher/router.rst:43 +#: ../../dispatcher/router.rst:32 msgid "" "You should expect that this event can be with different sets of " "attributes in different cases" msgstr "" -#: ../../dispatcher/router.rst:45 +#: ../../dispatcher/router.rst:34 msgid "" "(For example text, sticker and document are always of different content " "types of message)" msgstr "" -#: ../../dispatcher/router.rst:47 +#: ../../dispatcher/router.rst:36 msgid "" "Recommended way to check field availability before usage, for example via" " :ref:`magic filter `: :code:`F.text` to handle text, " ":code:`F.sticker` to handle stickers only and etc." msgstr "" -#: ../../dispatcher/router.rst:58 +#: ../../dispatcher/router.rst:47 msgid "Edited message" msgstr "" -#: ../../dispatcher/router.rst:66 +#: ../../dispatcher/router.rst:55 msgid "Channel post" msgstr "" -#: ../../dispatcher/router.rst:74 +#: ../../dispatcher/router.rst:63 msgid "Edited channel post" msgstr "" -#: ../../dispatcher/router.rst:83 +#: ../../dispatcher/router.rst:72 msgid "Inline query" msgstr "" -#: ../../dispatcher/router.rst:91 +#: ../../dispatcher/router.rst:80 msgid "Chosen inline query" msgstr "" -#: ../../dispatcher/router.rst:99 +#: ../../dispatcher/router.rst:88 msgid "Callback query" msgstr "" -#: ../../dispatcher/router.rst:107 +#: ../../dispatcher/router.rst:96 msgid "Shipping query" msgstr "" -#: ../../dispatcher/router.rst:115 +#: ../../dispatcher/router.rst:104 msgid "Pre checkout query" msgstr "" -#: ../../dispatcher/router.rst:123 +#: ../../dispatcher/router.rst:112 msgid "Poll" msgstr "" -#: ../../dispatcher/router.rst:131 +#: ../../dispatcher/router.rst:120 msgid "Poll answer" msgstr "" -#: ../../dispatcher/router.rst:139 +#: ../../dispatcher/router.rst:128 msgid "Errors" msgstr "" -#: ../../dispatcher/router.rst:146 -msgid "Is useful for handling errors from other handlers" +#: ../../dispatcher/router.rst:135 +msgid "" +"Is useful for handling errors from other handlers, error event described " +":ref:`here `" msgstr "" -#: ../../dispatcher/router.rst:150 +#: ../../dispatcher/router.rst:142 msgid "Nested routers" msgstr "" -#: ../../dispatcher/router.rst:155 +#: ../../dispatcher/router.rst:147 msgid "" "Routers by the way can be nested to an another routers with some " "limitations:" msgstr "" -#: ../../dispatcher/router.rst:155 +#: ../../dispatcher/router.rst:147 msgid "" "1. Router **CAN NOT** include itself 1. Routers **CAN NOT** be used for " "circular including (router 1 include router 2, router 2 include router 3," " router 3 include router 1)" msgstr "" -#: ../../dispatcher/router.rst:159 +#: ../../dispatcher/router.rst:151 msgid "Example:" msgstr "" -#: ../../dispatcher/router.rst:161 ../../dispatcher/router.rst:171 +#: ../../dispatcher/router.rst:153 +msgid "module_1.py" +msgstr "" + +#: ../../dispatcher/router.rst:163 msgid "module_2.py" msgstr "" -#: ../../dispatcher/router.rst:183 +#: ../../dispatcher/router.rst:175 +msgid "Update" +msgstr "" + +#: ../../dispatcher/router.rst:184 +msgid "The only root Router (Dispatcher) can handle this type of event." +msgstr "" + +#: ../../dispatcher/router.rst:188 +msgid "" +"Dispatcher already has default handler for this event type, so you can " +"use it for handling all updates that are not handled by any other " +"handlers." +msgstr "" + +#: ../../dispatcher/router.rst:191 msgid "How it works?" msgstr "" -#: ../../dispatcher/router.rst:185 +#: ../../dispatcher/router.rst:193 msgid "" "For example, dispatcher has 2 routers, the last router also has one " "nested router:" @@ -211,7 +246,7 @@ msgstr "" msgid "Nested routers example" msgstr "" -#: ../../dispatcher/router.rst:190 +#: ../../dispatcher/router.rst:198 msgid "In this case update propagation flow will have form:" msgstr "" @@ -220,3 +255,12 @@ msgstr "" #~ "import string in format " #~ "\":\"" #~ msgstr "" + +#~ msgid "" +#~ "By default Router already has an " +#~ "update handler which route all event " +#~ "types to another observers." +#~ msgstr "" + +#~ msgid "Is useful for handling errors from other handlers" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/index.po b/docs/locale/en/LC_MESSAGES/index.po index beb8f6d9..37f8acde 100644 --- a/docs/locale/en/LC_MESSAGES/index.po +++ b/docs/locale/en/LC_MESSAGES/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../../README.rst:3 msgid "aiogram |beta badge|" @@ -119,7 +119,7 @@ msgstr "" #: ../../../README.rst:66 msgid "" -"Supports `Telegram Bot API 6.6 `_ and" +"Supports `Telegram Bot API 6.7 `_ and" " gets fast updates to the latest versions of the Bot API" msgstr "" @@ -229,3 +229,10 @@ msgstr "" #~ " updates to the latest versions of" #~ " the Bot API" #~ msgstr "" + +#~ msgid "" +#~ "Supports `Telegram Bot API 6.6 " +#~ "`_ and gets fast" +#~ " updates to the latest versions of" +#~ " the Bot API" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/install.po b/docs/locale/en/LC_MESSAGES/install.po index b0178fb7..bc4ae706 100644 --- a/docs/locale/en/LC_MESSAGES/install.po +++ b/docs/locale/en/LC_MESSAGES/install.po @@ -8,39 +8,37 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../install.rst:3 msgid "Installation" msgstr "" -#: ../../install.rst:6 -msgid "Stable (2.x)" -msgstr "" - -#: ../../install.rst:9 ../../install.rst:26 +#: ../../install.rst:6 ../../install.rst:23 msgid "From PyPI" msgstr "" -#: ../../install.rst:16 +#: ../../install.rst:13 msgid "From Arch Linux Repository" msgstr "" -#: ../../install.rst:23 +#: ../../install.rst:20 msgid "Development build (3.x)" msgstr "" -#: ../../install.rst:33 +#: ../../install.rst:30 msgid "From GitHub" msgstr "" -#: ../../install.rst:40 -msgid "From AUR" -msgstr "" +#~ msgid "Stable (2.x)" +#~ msgstr "" + +#~ msgid "From AUR" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/migration_2_to_3.po b/docs/locale/en/LC_MESSAGES/migration_2_to_3.po new file mode 100644 index 00000000..9035b8b8 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/migration_2_to_3.po @@ -0,0 +1,271 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../migration_2_to_3.rst:3 +msgid "Migration FAQ (2.x -> 3.0)" +msgstr "" + +#: ../../migration_2_to_3.rst:7 +msgid "This guide is still in progress." +msgstr "" + +#: ../../migration_2_to_3.rst:9 +msgid "" +"This version introduces much many breaking changes and architectural " +"improvements, helping to reduce global variables count in your code, " +"provides useful mechanisms to separate your code to modules or just make " +"sharable modules via packages on the PyPi, makes middlewares and filters " +"more controllable and others." +msgstr "" + +#: ../../migration_2_to_3.rst:14 +msgid "" +"On this page you can read about points that changed corresponding to last" +" stable 2.x version." +msgstr "" + +#: ../../migration_2_to_3.rst:18 +msgid "" +"This page is most like a detailed changelog than a migration guide, but " +"it will be updated in the future." +msgstr "" + +#: ../../migration_2_to_3.rst:21 +msgid "" +"Feel free to contribute to this page, if you find something that is not " +"mentioned here." +msgstr "" + +#: ../../migration_2_to_3.rst:25 +msgid "Dispatcher" +msgstr "" + +#: ../../migration_2_to_3.rst:27 +msgid "" +":class:`Dispatcher` class no longer accepts the `Bot` instance into the " +"initializer, it should be passed to dispatcher only for starting polling " +"or handling event from webhook. Also this way adds possibility to use " +"multiple bot instances at the same time (\"multibot\")" +msgstr "" + +#: ../../migration_2_to_3.rst:30 +msgid "" +":class:`Dispatcher` now can be extended with another Dispatcher-like " +"thing named :class:`Router` (:ref:`Read more » `). With " +"routes you can easily separate your code to multiple modules and may be " +"share this modules between projects." +msgstr "" + +#: ../../migration_2_to_3.rst:34 +msgid "" +"Removed the **_handler** suffix from all event handler decorators and " +"registering methods. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:36 +msgid "" +"Executor entirely removed, now you can use Dispatcher directly to start " +"polling or webhook." +msgstr "" + +#: ../../migration_2_to_3.rst:37 +msgid "" +"Throttling method is completely removed, now you can use middlewares to " +"control the execution context and use any throttling mechanism you want." +msgstr "" + +#: ../../migration_2_to_3.rst:39 +msgid "" +"Removed global context variables from the API types, Bot and Dispatcher " +"object, from now if you want to get current bot instance inside handlers " +"or filters you should accept the argument :code:`bot: Bot` and use it " +"instead of :code:`Bot.get_current()` Inside middlewares it can be " +"accessed via :code:`data[\"bot\"]`." +msgstr "" + +#: ../../migration_2_to_3.rst:46 +msgid "Filtering events" +msgstr "" + +#: ../../migration_2_to_3.rst:48 +msgid "" +"Keyword filters can no more be used, use filters explicitly. (`Read more " +"» `_)" +msgstr "" + +#: ../../migration_2_to_3.rst:49 +msgid "" +"In due to keyword filters was removed all enabled by default filters " +"(state and content_type now is not enabled), so you should specify them " +"explicitly if you want to use. For example instead of using " +":code:`@dp.message_handler(content_types=ContentType.PHOTO)` you should " +"use :code:`@router.message(F.photo)`" +msgstr "" + +#: ../../migration_2_to_3.rst:53 +msgid "" +"Most of common filters is replaced by \"magic filter\". (:ref:`Read more " +"» `)" +msgstr "" + +#: ../../migration_2_to_3.rst:54 +msgid "" +"Now by default message handler receives any content type, if you want " +"specific one just add the filters (Magic or any other)" +msgstr "" + +#: ../../migration_2_to_3.rst:56 +msgid "" +"State filter now is not enabled by default, that's mean if you using " +":code:`state=\"*\"` in v2 then you should not pass any state filter in " +"v3, and vice versa, if the state in v2 is not specified now you should " +"specify the state." +msgstr "" + +#: ../../migration_2_to_3.rst:59 +msgid "" +"Added possibility to register per-router global filters, that helps to " +"reduces the number of repetitions in the code and makes easily way to " +"control for what each router will be used." +msgstr "" + +#: ../../migration_2_to_3.rst:65 +msgid "Bot API" +msgstr "" + +#: ../../migration_2_to_3.rst:67 +msgid "" +"Now all API methods is classes with validation (via `pydantic " +"`_) (all API calls is also available as " +"methods in the Bot class)." +msgstr "" + +#: ../../migration_2_to_3.rst:69 +msgid "" +"Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " +"For example chat type enum now is :class:`aiogram.enums.ChatType` instead" +" of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:72 +msgid "" +"Separated HTTP client session into container that can be reused between " +"different Bot instances in the application." +msgstr "" + +#: ../../migration_2_to_3.rst:74 +msgid "" +"API Exceptions is no more classified by specific message in due to " +"Telegram has no documented error codes. But all errors is classified by " +"HTTP status code and for each method only one case can be caused with the" +" same code, so in most cases you should check that only error type (by " +"status-code) without checking error message. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:81 +msgid "Middlewares" +msgstr "" + +#: ../../migration_2_to_3.rst:83 +msgid "" +"Middlewares can now control a execution context, e.g. using context " +"managers (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:84 +msgid "" +"All contextual data now is shared between middlewares, filters and " +"handlers to end-to-end use. For example now you can easily pass some data" +" into context inside middleware and get it in the filters layer as the " +"same way as in the handlers via keyword arguments." +msgstr "" + +#: ../../migration_2_to_3.rst:87 +msgid "" +"Added mechanism named **flags**, that helps to customize handler behavior" +" in conjunction with middlewares. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:92 +msgid "Keyboard Markup" +msgstr "" + +#: ../../migration_2_to_3.rst:94 +msgid "" +"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " +"and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " +"no methods to extend it, instead you have to use markup builders " +":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " +":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " +"more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:102 +msgid "Callbacks data" +msgstr "" + +#: ../../migration_2_to_3.rst:104 +msgid "" +"Callback data factory now is strictly typed via `pydantic " +"`_ models (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:109 +msgid "Finite State machine" +msgstr "" + +#: ../../migration_2_to_3.rst:111 +msgid "" +"State filter will no more added to all handlers, you will need to specify" +" state if you want" +msgstr "" + +#: ../../migration_2_to_3.rst:112 +msgid "" +"Added possibility to change FSM strategy, for example if you want to " +"control state for each user in chat topics instead of user in chat you " +"can specify it in the Dispatcher." +msgstr "" + +#: ../../migration_2_to_3.rst:117 +msgid "Sending Files" +msgstr "" + +#: ../../migration_2_to_3.rst:119 +msgid "" +"From now you should wrap sending files into InputFile object before send " +"instead of passing IO object directly to the API method. (:ref:`Read more" +" » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:124 +msgid "Webhook" +msgstr "" + +#: ../../migration_2_to_3.rst:126 +msgid "Simplified aiohttp web app configuration" +msgstr "" + +#: ../../migration_2_to_3.rst:127 +msgid "" +"By default added possibility to upload files when you use reply into " +"webhook" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/chat_action.po b/docs/locale/en/LC_MESSAGES/utils/chat_action.po index acbd8188..abc33c56 100644 --- a/docs/locale/en/LC_MESSAGES/utils/chat_action.po +++ b/docs/locale/en/LC_MESSAGES/utils/chat_action.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../utils/chat_action.rst:3 msgid "Chat action sender" @@ -48,23 +48,23 @@ msgid "Parameters" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.__init__:1 of -msgid "target chat id" +msgid "instance of the bot" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.__init__:2 of -msgid "chat action type" +msgid "target chat id" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.__init__:3 of -msgid "interval between iterations" +msgid "chat action type" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.__init__:4 of -msgid "sleep before first iteration" +msgid "interval between iterations" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.__init__:5 of -msgid "instance of the bot, can be omitted from the context" +msgid "sleep before first iteration" msgstr "" #: aiogram.utils.chat_action.ChatActionSender.choose_sticker:1 of @@ -144,3 +144,6 @@ msgstr "" #: ../../utils/chat_action.rst:50 msgid "Change sender configuration:" msgstr "" + +#~ msgid "instance of the bot, can be omitted from the context" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/formatting.po b/docs/locale/en/LC_MESSAGES/utils/formatting.po index 49966ca8..bb92b9f9 100644 --- a/docs/locale/en/LC_MESSAGES/utils/formatting.po +++ b/docs/locale/en/LC_MESSAGES/utils/formatting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -96,6 +96,10 @@ msgstr "" msgid "ending of the line, by default is :code:`\\\\n`" msgstr "" +#: aiogram.utils.formatting.as_line:5 of +msgid "separator between items, by default is empty string" +msgstr "" + #: aiogram.utils.formatting.Text.as_kwargs aiogram.utils.formatting.Text.render #: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line #: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list @@ -106,7 +110,7 @@ msgstr "" msgid "Returns" msgstr "" -#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:5 +#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:6 #: aiogram.utils.formatting.as_marked_list:5 #: aiogram.utils.formatting.as_numbered_list:6 #: aiogram.utils.formatting.as_section:5 of @@ -122,7 +126,7 @@ msgid "Wrap elements as marked list" msgstr "" #: aiogram.utils.formatting.as_marked_list:4 of -msgid "line marker, by default is :code:`- `" +msgid "line marker, by default is '- '" msgstr "" #: aiogram.utils.formatting.as_numbered_list:1 of @@ -134,7 +138,7 @@ msgid "initial number, by default 1" msgstr "" #: aiogram.utils.formatting.as_numbered_list:5 of -msgid "number format, by default :code:`{}. `" +msgid "number format, by default '{}. '" msgstr "" #: aiogram.utils.formatting.as_section:1 of @@ -437,3 +441,9 @@ msgid "" "with type " ":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" msgstr "" + +#~ msgid "line marker, by default is :code:`- `" +#~ msgstr "" + +#~ msgid "number format, by default :code:`{}. `" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/web_app.po b/docs/locale/en/LC_MESSAGES/utils/web_app.po index b4732c62..617dd687 100644 --- a/docs/locale/en/LC_MESSAGES/utils/web_app.po +++ b/docs/locale/en/LC_MESSAGES/utils/web_app.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../utils/web_app.rst:3 msgid "WebApp" @@ -125,7 +125,7 @@ msgid "" "opened. It is empty if the Web App was launched from a keyboard button." msgstr "" -#: aiogram.utils.web_app.WebAppInitData:3 of +#: aiogram.utils.web_app.WebAppInitData:4 of msgid "Source: https://core.telegram.org/bots/webapps#webappinitdata" msgstr "" @@ -135,6 +135,25 @@ msgid "" "messages via the answerWebAppQuery method." msgstr "" +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_config:1 +#: aiogram.utils.web_app.WebAppUser.model_config:1 of +msgid "" +"Configuration for the model, should be a dictionary conforming to " +"[`ConfigDict`][pydantic.config.ConfigDict]." +msgstr "" + +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:1 +#: aiogram.utils.web_app.WebAppUser.model_fields:1 of +msgid "" +"Metadata about the fields defined on the model, mapping of field names to" +" [`FieldInfo`][pydantic.fields.FieldInfo]." +msgstr "" + +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:4 +#: aiogram.utils.web_app.WebAppUser.model_fields:4 of +msgid "This replaces `Model.__fields__` from Pydantic V1." +msgstr "" + #: ../../docstring aiogram.utils.web_app.WebAppInitData.user:1 of msgid "An object containing data about the current user." msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po index 96a78215..d14cbae4 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,9 +47,7 @@ msgid "" msgstr "" #: aiogram.client.bot.Bot:1 of -msgid "" -"Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\ " -"[:py:class:`Bot`]" +msgid "Bases: :py:class:`object`" msgstr "" #: aiogram.client.bot.Bot.__init__:1 of @@ -110,6 +108,10 @@ msgstr "" msgid "Generate bot context" msgstr "" +#: aiogram.client.bot.Bot.context:3 of +msgid "close session on exit" +msgstr "" + #: aiogram.client.bot.Bot.me:1 of msgid "Cached alias for getMe method" msgstr "" @@ -158,3 +160,8 @@ msgstr "" #: aiogram.client.bot.Bot.download:6 of msgid "file_id or Downloadable object" msgstr "" + +#~ msgid "" +#~ "Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\" +#~ " [:py:class:`Bot`]" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/encrypted_passport_element.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/encrypted_passport_element.po new file mode 100644 index 00000000..c9fd2760 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/encrypted_passport_element.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/encrypted_passport_element.rst:3 +msgid "EncryptedPassportElement" +msgstr "" + +#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:1 of +msgid "This object represents type of encrypted passport element." +msgstr "" + +#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:3 of +msgid "Source: https://core.telegram.org/bots/api#encryptedpassportelement" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/passport_element_error_type.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/passport_element_error_type.po new file mode 100644 index 00000000..285d6c8a --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/passport_element_error_type.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/passport_element_error_type.rst:3 +msgid "PassportElementErrorType" +msgstr "" + +#: aiogram.enums.passport_element_error_type.PassportElementErrorType:1 of +msgid "This object represents a passport element error type." +msgstr "" + +#: aiogram.enums.passport_element_error_type.PassportElementErrorType:3 of +msgid "Source: https://core.telegram.org/bots/api#passportelementerror" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_animation.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_animation.po index 57619de4..a67de7cf 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_animation.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_animation.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_animation.rst:3 msgid "sendAnimation" @@ -72,7 +72,7 @@ msgstr "" msgid "Animation height" msgstr "" -#: ../../docstring aiogram.methods.send_animation.SendAnimation.thumb:1 of +#: ../../docstring aiogram.methods.send_animation.SendAnimation.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -146,50 +146,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_animation.rst:14 +#: ../../api/methods/send_animation.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_animation.rst:17 +#: ../../api/methods/send_animation.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_animation.rst:25 +#: ../../api/methods/send_animation.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_animation.rst:27 +#: ../../api/methods/send_animation.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_animation.rst:29 +#: ../../api/methods/send_animation.rst:30 msgid ":code:`from aiogram.methods.send_animation import SendAnimation`" msgstr "" -#: ../../api/methods/send_animation.rst:30 +#: ../../api/methods/send_animation.rst:31 msgid "alias: :code:`from aiogram.methods import SendAnimation`" msgstr "" -#: ../../api/methods/send_animation.rst:33 +#: ../../api/methods/send_animation.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_animation.rst:40 +#: ../../api/methods/send_animation.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_animation.rst:48 +#: ../../api/methods/send_animation.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_animation.rst:50 +#: ../../api/methods/send_animation.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_animation`" msgstr "" -#: ../../api/methods/send_animation.rst:51 +#: ../../api/methods/send_animation.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_animation`" msgstr "" +#: ../../api/methods/send_animation.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation`" +msgstr "" + +#: ../../api/methods/send_animation.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation`" +msgstr "" + +#: ../../api/methods/send_animation.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_audio.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_audio.po index 46d06181..63d6e0fc 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_audio.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_audio.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_audio.rst:3 msgid "sendAudio" @@ -89,7 +89,7 @@ msgstr "" msgid "Track name" msgstr "" -#: ../../docstring aiogram.methods.send_audio.SendAudio.thumb:1 of +#: ../../docstring aiogram.methods.send_audio.SendAudio.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -133,50 +133,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_audio.rst:14 +#: ../../api/methods/send_audio.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_audio.rst:17 +#: ../../api/methods/send_audio.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_audio.rst:25 +#: ../../api/methods/send_audio.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_audio.rst:27 +#: ../../api/methods/send_audio.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_audio.rst:29 +#: ../../api/methods/send_audio.rst:30 msgid ":code:`from aiogram.methods.send_audio import SendAudio`" msgstr "" -#: ../../api/methods/send_audio.rst:30 +#: ../../api/methods/send_audio.rst:31 msgid "alias: :code:`from aiogram.methods import SendAudio`" msgstr "" -#: ../../api/methods/send_audio.rst:33 +#: ../../api/methods/send_audio.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_audio.rst:40 +#: ../../api/methods/send_audio.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_audio.rst:48 +#: ../../api/methods/send_audio.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_audio.rst:50 +#: ../../api/methods/send_audio.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_audio`" msgstr "" -#: ../../api/methods/send_audio.rst:51 +#: ../../api/methods/send_audio.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_audio`" msgstr "" +#: ../../api/methods/send_audio.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio`" +msgstr "" + +#: ../../api/methods/send_audio.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio`" +msgstr "" + +#: ../../api/methods/send_audio.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_contact.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_contact.po index 8ada4c7b..927d96ba 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_contact.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_contact.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_contact.rst:3 msgid "sendContact" @@ -99,50 +99,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_contact.rst:14 +#: ../../api/methods/send_contact.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_contact.rst:17 +#: ../../api/methods/send_contact.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_contact.rst:25 +#: ../../api/methods/send_contact.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_contact.rst:27 +#: ../../api/methods/send_contact.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_contact.rst:29 +#: ../../api/methods/send_contact.rst:30 msgid ":code:`from aiogram.methods.send_contact import SendContact`" msgstr "" -#: ../../api/methods/send_contact.rst:30 +#: ../../api/methods/send_contact.rst:31 msgid "alias: :code:`from aiogram.methods import SendContact`" msgstr "" -#: ../../api/methods/send_contact.rst:33 +#: ../../api/methods/send_contact.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_contact.rst:40 +#: ../../api/methods/send_contact.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_contact.rst:48 +#: ../../api/methods/send_contact.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_contact.rst:50 +#: ../../api/methods/send_contact.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_contact`" msgstr "" -#: ../../api/methods/send_contact.rst:51 +#: ../../api/methods/send_contact.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_contact`" msgstr "" +#: ../../api/methods/send_contact.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact`" +msgstr "" + +#: ../../api/methods/send_contact.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact`" +msgstr "" + +#: ../../api/methods/send_contact.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po index 19a52d2f..9e9cdd1f 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_dice.rst:3 msgid "sendDice" @@ -86,50 +86,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_dice.rst:14 +#: ../../api/methods/send_dice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_dice.rst:17 +#: ../../api/methods/send_dice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_dice.rst:25 +#: ../../api/methods/send_dice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_dice.rst:27 +#: ../../api/methods/send_dice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_dice.rst:29 +#: ../../api/methods/send_dice.rst:30 msgid ":code:`from aiogram.methods.send_dice import SendDice`" msgstr "" -#: ../../api/methods/send_dice.rst:30 +#: ../../api/methods/send_dice.rst:31 msgid "alias: :code:`from aiogram.methods import SendDice`" msgstr "" -#: ../../api/methods/send_dice.rst:33 +#: ../../api/methods/send_dice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_dice.rst:40 +#: ../../api/methods/send_dice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_dice.rst:48 +#: ../../api/methods/send_dice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_dice.rst:50 +#: ../../api/methods/send_dice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_dice`" msgstr "" -#: ../../api/methods/send_dice.rst:51 +#: ../../api/methods/send_dice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_dice`" msgstr "" +#: ../../api/methods/send_dice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice`" +msgstr "" + +#: ../../api/methods/send_dice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice`" +msgstr "" + +#: ../../api/methods/send_dice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_document.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_document.po index 2b2e658f..b5b89591 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_document.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_document.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_document.rst:3 msgid "sendDocument" @@ -58,7 +58,7 @@ msgid "" " forum supergroups only" msgstr "" -#: ../../docstring aiogram.methods.send_document.SendDocument.thumb:1 of +#: ../../docstring aiogram.methods.send_document.SendDocument.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -131,50 +131,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_document.rst:14 +#: ../../api/methods/send_document.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_document.rst:17 +#: ../../api/methods/send_document.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_document.rst:25 +#: ../../api/methods/send_document.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_document.rst:27 +#: ../../api/methods/send_document.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_document.rst:29 +#: ../../api/methods/send_document.rst:30 msgid ":code:`from aiogram.methods.send_document import SendDocument`" msgstr "" -#: ../../api/methods/send_document.rst:30 +#: ../../api/methods/send_document.rst:31 msgid "alias: :code:`from aiogram.methods import SendDocument`" msgstr "" -#: ../../api/methods/send_document.rst:33 +#: ../../api/methods/send_document.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_document.rst:40 +#: ../../api/methods/send_document.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_document.rst:48 +#: ../../api/methods/send_document.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_document.rst:50 +#: ../../api/methods/send_document.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_document`" msgstr "" -#: ../../api/methods/send_document.rst:51 +#: ../../api/methods/send_document.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_document`" msgstr "" +#: ../../api/methods/send_document.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document`" +msgstr "" + +#: ../../api/methods/send_document.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document`" +msgstr "" + +#: ../../api/methods/send_document.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_game.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_game.po index a46e72a0..17feaa58 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_game.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_game.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_game.rst:3 msgid "sendGame" @@ -80,50 +80,62 @@ msgid "" "button must launch the game." msgstr "" -#: ../../api/methods/send_game.rst:14 +#: ../../api/methods/send_game.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_game.rst:17 +#: ../../api/methods/send_game.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_game.rst:25 +#: ../../api/methods/send_game.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_game.rst:27 +#: ../../api/methods/send_game.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_game.rst:29 +#: ../../api/methods/send_game.rst:30 msgid ":code:`from aiogram.methods.send_game import SendGame`" msgstr "" -#: ../../api/methods/send_game.rst:30 +#: ../../api/methods/send_game.rst:31 msgid "alias: :code:`from aiogram.methods import SendGame`" msgstr "" -#: ../../api/methods/send_game.rst:33 +#: ../../api/methods/send_game.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_game.rst:40 +#: ../../api/methods/send_game.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_game.rst:48 +#: ../../api/methods/send_game.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_game.rst:50 +#: ../../api/methods/send_game.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_game`" msgstr "" -#: ../../api/methods/send_game.rst:51 +#: ../../api/methods/send_game.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_game`" msgstr "" +#: ../../api/methods/send_game.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game`" +msgstr "" + +#: ../../api/methods/send_game.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game`" +msgstr "" + +#: ../../api/methods/send_game.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_invoice.rst:3 msgid "sendInvoice" @@ -210,50 +210,62 @@ msgid "" "first button must be a Pay button." msgstr "" -#: ../../api/methods/send_invoice.rst:14 +#: ../../api/methods/send_invoice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_invoice.rst:17 +#: ../../api/methods/send_invoice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_invoice.rst:25 +#: ../../api/methods/send_invoice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_invoice.rst:27 +#: ../../api/methods/send_invoice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_invoice.rst:29 +#: ../../api/methods/send_invoice.rst:30 msgid ":code:`from aiogram.methods.send_invoice import SendInvoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:30 +#: ../../api/methods/send_invoice.rst:31 msgid "alias: :code:`from aiogram.methods import SendInvoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:33 +#: ../../api/methods/send_invoice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_invoice.rst:40 +#: ../../api/methods/send_invoice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_invoice.rst:48 +#: ../../api/methods/send_invoice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_invoice.rst:50 +#: ../../api/methods/send_invoice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_invoice`" msgstr "" -#: ../../api/methods/send_invoice.rst:51 +#: ../../api/methods/send_invoice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_invoice`" msgstr "" +#: ../../api/methods/send_invoice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice`" +msgstr "" + +#: ../../api/methods/send_invoice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice`" +msgstr "" + +#: ../../api/methods/send_invoice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_location.rst:3 msgid "sendLocation" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_location.rst:14 +#: ../../api/methods/send_location.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_location.rst:17 +#: ../../api/methods/send_location.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_location.rst:25 +#: ../../api/methods/send_location.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_location.rst:27 +#: ../../api/methods/send_location.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_location.rst:29 +#: ../../api/methods/send_location.rst:30 msgid ":code:`from aiogram.methods.send_location import SendLocation`" msgstr "" -#: ../../api/methods/send_location.rst:30 +#: ../../api/methods/send_location.rst:31 msgid "alias: :code:`from aiogram.methods import SendLocation`" msgstr "" -#: ../../api/methods/send_location.rst:33 +#: ../../api/methods/send_location.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_location.rst:40 +#: ../../api/methods/send_location.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_location.rst:48 +#: ../../api/methods/send_location.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_location.rst:50 +#: ../../api/methods/send_location.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_location`" msgstr "" -#: ../../api/methods/send_location.rst:51 +#: ../../api/methods/send_location.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_location`" msgstr "" +#: ../../api/methods/send_location.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location`" +msgstr "" + +#: ../../api/methods/send_location.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location`" +msgstr "" + +#: ../../api/methods/send_location.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_media_group.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_media_group.po index e3d5b3db..8d271fef 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_media_group.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_media_group.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_media_group.rst:3 msgid "sendMediaGroup" @@ -82,46 +82,58 @@ msgid "" "replied-to message is not found" msgstr "" -#: ../../api/methods/send_media_group.rst:14 +#: ../../api/methods/send_media_group.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_media_group.rst:17 +#: ../../api/methods/send_media_group.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_media_group.rst:25 +#: ../../api/methods/send_media_group.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_media_group.rst:27 +#: ../../api/methods/send_media_group.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_media_group.rst:29 +#: ../../api/methods/send_media_group.rst:30 msgid ":code:`from aiogram.methods.send_media_group import SendMediaGroup`" msgstr "" -#: ../../api/methods/send_media_group.rst:30 +#: ../../api/methods/send_media_group.rst:31 msgid "alias: :code:`from aiogram.methods import SendMediaGroup`" msgstr "" -#: ../../api/methods/send_media_group.rst:33 +#: ../../api/methods/send_media_group.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_media_group.rst:40 +#: ../../api/methods/send_media_group.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_media_group.rst:48 +#: ../../api/methods/send_media_group.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_media_group.rst:50 +#: ../../api/methods/send_media_group.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_media_group`" msgstr "" -#: ../../api/methods/send_media_group.rst:51 +#: ../../api/methods/send_media_group.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_media_group`" msgstr "" + +#: ../../api/methods/send_media_group.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group`" +msgstr "" + +#: ../../api/methods/send_media_group.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group`" +msgstr "" + +#: ../../api/methods/send_media_group.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_message.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_message.po index e0a83b6d..fb028b0d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_message.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_message.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_message.rst:3 msgid "sendMessage" @@ -103,50 +103,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_message.rst:14 +#: ../../api/methods/send_message.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_message.rst:17 +#: ../../api/methods/send_message.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_message.rst:25 +#: ../../api/methods/send_message.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_message.rst:27 +#: ../../api/methods/send_message.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_message.rst:29 +#: ../../api/methods/send_message.rst:30 msgid ":code:`from aiogram.methods.send_message import SendMessage`" msgstr "" -#: ../../api/methods/send_message.rst:30 +#: ../../api/methods/send_message.rst:31 msgid "alias: :code:`from aiogram.methods import SendMessage`" msgstr "" -#: ../../api/methods/send_message.rst:33 +#: ../../api/methods/send_message.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_message.rst:40 +#: ../../api/methods/send_message.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_message.rst:48 +#: ../../api/methods/send_message.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_message.rst:50 +#: ../../api/methods/send_message.rst:51 msgid ":meth:`aiogram.types.message.Message.answer`" msgstr "" -#: ../../api/methods/send_message.rst:51 +#: ../../api/methods/send_message.rst:52 msgid ":meth:`aiogram.types.message.Message.reply`" msgstr "" +#: ../../api/methods/send_message.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer`" +msgstr "" + +#: ../../api/methods/send_message.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer`" +msgstr "" + +#: ../../api/methods/send_message.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po index 440f3fb0..f733d653 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_photo.rst:3 msgid "sendPhoto" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_photo.rst:14 +#: ../../api/methods/send_photo.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_photo.rst:17 +#: ../../api/methods/send_photo.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_photo.rst:25 +#: ../../api/methods/send_photo.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_photo.rst:27 +#: ../../api/methods/send_photo.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_photo.rst:29 +#: ../../api/methods/send_photo.rst:30 msgid ":code:`from aiogram.methods.send_photo import SendPhoto`" msgstr "" -#: ../../api/methods/send_photo.rst:30 +#: ../../api/methods/send_photo.rst:31 msgid "alias: :code:`from aiogram.methods import SendPhoto`" msgstr "" -#: ../../api/methods/send_photo.rst:33 +#: ../../api/methods/send_photo.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_photo.rst:40 +#: ../../api/methods/send_photo.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_photo.rst:48 +#: ../../api/methods/send_photo.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_photo.rst:50 +#: ../../api/methods/send_photo.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_photo`" msgstr "" -#: ../../api/methods/send_photo.rst:51 +#: ../../api/methods/send_photo.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_photo`" msgstr "" +#: ../../api/methods/send_photo.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo`" +msgstr "" + +#: ../../api/methods/send_photo.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo`" +msgstr "" + +#: ../../api/methods/send_photo.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_poll.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_poll.po index 9222d2c3..f7a0573a 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_poll.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_poll.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_poll.rst:3 msgid "sendPoll" @@ -148,50 +148,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_poll.rst:14 +#: ../../api/methods/send_poll.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_poll.rst:17 +#: ../../api/methods/send_poll.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_poll.rst:25 +#: ../../api/methods/send_poll.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_poll.rst:27 +#: ../../api/methods/send_poll.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_poll.rst:29 +#: ../../api/methods/send_poll.rst:30 msgid ":code:`from aiogram.methods.send_poll import SendPoll`" msgstr "" -#: ../../api/methods/send_poll.rst:30 +#: ../../api/methods/send_poll.rst:31 msgid "alias: :code:`from aiogram.methods import SendPoll`" msgstr "" -#: ../../api/methods/send_poll.rst:33 +#: ../../api/methods/send_poll.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_poll.rst:40 +#: ../../api/methods/send_poll.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_poll.rst:48 +#: ../../api/methods/send_poll.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_poll.rst:50 +#: ../../api/methods/send_poll.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_poll`" msgstr "" -#: ../../api/methods/send_poll.rst:51 +#: ../../api/methods/send_poll.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_poll`" msgstr "" +#: ../../api/methods/send_poll.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll`" +msgstr "" + +#: ../../api/methods/send_poll.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll`" +msgstr "" + +#: ../../api/methods/send_poll.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_sticker.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_sticker.po index 24650fbd..96a8c342 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_sticker.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_sticker.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_sticker.rst:3 msgid "sendSticker" @@ -98,50 +98,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_sticker.rst:14 +#: ../../api/methods/send_sticker.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_sticker.rst:17 +#: ../../api/methods/send_sticker.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_sticker.rst:25 +#: ../../api/methods/send_sticker.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_sticker.rst:27 +#: ../../api/methods/send_sticker.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_sticker.rst:29 +#: ../../api/methods/send_sticker.rst:30 msgid ":code:`from aiogram.methods.send_sticker import SendSticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:30 +#: ../../api/methods/send_sticker.rst:31 msgid "alias: :code:`from aiogram.methods import SendSticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:33 +#: ../../api/methods/send_sticker.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_sticker.rst:40 +#: ../../api/methods/send_sticker.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_sticker.rst:48 +#: ../../api/methods/send_sticker.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_sticker.rst:50 +#: ../../api/methods/send_sticker.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_sticker`" msgstr "" -#: ../../api/methods/send_sticker.rst:51 +#: ../../api/methods/send_sticker.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_sticker`" msgstr "" +#: ../../api/methods/send_sticker.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker`" +msgstr "" + +#: ../../api/methods/send_sticker.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker`" +msgstr "" + +#: ../../api/methods/send_sticker.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_venue.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_venue.po index 848d6898..ea79ba2d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_venue.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_venue.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_venue.rst:3 msgid "sendVenue" @@ -116,50 +116,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_venue.rst:14 +#: ../../api/methods/send_venue.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_venue.rst:17 +#: ../../api/methods/send_venue.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_venue.rst:25 +#: ../../api/methods/send_venue.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_venue.rst:27 +#: ../../api/methods/send_venue.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_venue.rst:29 +#: ../../api/methods/send_venue.rst:30 msgid ":code:`from aiogram.methods.send_venue import SendVenue`" msgstr "" -#: ../../api/methods/send_venue.rst:30 +#: ../../api/methods/send_venue.rst:31 msgid "alias: :code:`from aiogram.methods import SendVenue`" msgstr "" -#: ../../api/methods/send_venue.rst:33 +#: ../../api/methods/send_venue.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_venue.rst:40 +#: ../../api/methods/send_venue.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_venue.rst:48 +#: ../../api/methods/send_venue.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_venue.rst:50 +#: ../../api/methods/send_venue.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_venue`" msgstr "" -#: ../../api/methods/send_venue.rst:51 +#: ../../api/methods/send_venue.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_venue`" msgstr "" +#: ../../api/methods/send_venue.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue`" +msgstr "" + +#: ../../api/methods/send_venue.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue`" +msgstr "" + +#: ../../api/methods/send_venue.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video.po index 5a575db2..2e2b836f 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_video.rst:3 msgid "sendVideo" @@ -72,7 +72,7 @@ msgstr "" msgid "Video height" msgstr "" -#: ../../docstring aiogram.methods.send_video.SendVideo.thumb:1 of +#: ../../docstring aiogram.methods.send_video.SendVideo.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -145,50 +145,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_video.rst:14 +#: ../../api/methods/send_video.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_video.rst:17 +#: ../../api/methods/send_video.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_video.rst:25 +#: ../../api/methods/send_video.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_video.rst:27 +#: ../../api/methods/send_video.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_video.rst:29 +#: ../../api/methods/send_video.rst:30 msgid ":code:`from aiogram.methods.send_video import SendVideo`" msgstr "" -#: ../../api/methods/send_video.rst:30 +#: ../../api/methods/send_video.rst:31 msgid "alias: :code:`from aiogram.methods import SendVideo`" msgstr "" -#: ../../api/methods/send_video.rst:33 +#: ../../api/methods/send_video.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_video.rst:40 +#: ../../api/methods/send_video.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_video.rst:48 +#: ../../api/methods/send_video.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_video.rst:50 +#: ../../api/methods/send_video.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_video`" msgstr "" -#: ../../api/methods/send_video.rst:51 +#: ../../api/methods/send_video.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_video`" msgstr "" +#: ../../api/methods/send_video.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video`" +msgstr "" + +#: ../../api/methods/send_video.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video`" +msgstr "" + +#: ../../api/methods/send_video.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video_note.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video_note.po index 959a0407..f9c80a5e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video_note.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_video_note.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_video_note.rst:3 msgid "sendVideoNote" @@ -67,7 +67,7 @@ msgstr "" msgid "Video width and height, i.e. diameter of the video message" msgstr "" -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.thumb:1 of +#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.thumbnail:1 of msgid "" "Thumbnail of the file sent; can be ignored if thumbnail generation for " "the file is supported server-side. The thumbnail should be in JPEG format" @@ -114,50 +114,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_video_note.rst:14 +#: ../../api/methods/send_video_note.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_video_note.rst:17 +#: ../../api/methods/send_video_note.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_video_note.rst:25 +#: ../../api/methods/send_video_note.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_video_note.rst:27 +#: ../../api/methods/send_video_note.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_video_note.rst:29 +#: ../../api/methods/send_video_note.rst:30 msgid ":code:`from aiogram.methods.send_video_note import SendVideoNote`" msgstr "" -#: ../../api/methods/send_video_note.rst:30 +#: ../../api/methods/send_video_note.rst:31 msgid "alias: :code:`from aiogram.methods import SendVideoNote`" msgstr "" -#: ../../api/methods/send_video_note.rst:33 +#: ../../api/methods/send_video_note.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_video_note.rst:40 +#: ../../api/methods/send_video_note.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_video_note.rst:48 +#: ../../api/methods/send_video_note.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_video_note.rst:50 +#: ../../api/methods/send_video_note.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_video_note`" msgstr "" -#: ../../api/methods/send_video_note.rst:51 +#: ../../api/methods/send_video_note.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_video_note`" msgstr "" +#: ../../api/methods/send_video_note.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note`" +msgstr "" + +#: ../../api/methods/send_video_note.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note`" +msgstr "" + +#: ../../api/methods/send_video_note.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_voice.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_voice.po index 553a3265..d46ac20e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_voice.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_voice.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/send_voice.rst:3 msgid "sendVoice" @@ -115,50 +115,62 @@ msgid "" "remove reply keyboard or to force a reply from the user." msgstr "" -#: ../../api/methods/send_voice.rst:14 +#: ../../api/methods/send_voice.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/send_voice.rst:17 +#: ../../api/methods/send_voice.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/send_voice.rst:25 +#: ../../api/methods/send_voice.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/send_voice.rst:27 +#: ../../api/methods/send_voice.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/send_voice.rst:29 +#: ../../api/methods/send_voice.rst:30 msgid ":code:`from aiogram.methods.send_voice import SendVoice`" msgstr "" -#: ../../api/methods/send_voice.rst:30 +#: ../../api/methods/send_voice.rst:31 msgid "alias: :code:`from aiogram.methods import SendVoice`" msgstr "" -#: ../../api/methods/send_voice.rst:33 +#: ../../api/methods/send_voice.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/send_voice.rst:40 +#: ../../api/methods/send_voice.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/send_voice.rst:48 +#: ../../api/methods/send_voice.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/send_voice.rst:50 +#: ../../api/methods/send_voice.rst:51 msgid ":meth:`aiogram.types.message.Message.answer_voice`" msgstr "" -#: ../../api/methods/send_voice.rst:51 +#: ../../api/methods/send_voice.rst:52 msgid ":meth:`aiogram.types.message.Message.reply_voice`" msgstr "" +#: ../../api/methods/send_voice.rst:53 +msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice`" +msgstr "" + +#: ../../api/methods/send_voice.rst:54 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice`" +msgstr "" + +#: ../../api/methods/send_voice.rst:55 +msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm`" +msgstr "" + #~ msgid "" #~ "Additional interface options. A JSON-" #~ "serialized object for an `inline " diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po index 413eafd2..6466c397 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,6 +25,14 @@ msgstr "" msgid "Abstract session for all client sessions" msgstr "" +#: aiogram.client.session.base.BaseSession:1 of +msgid "This is base class for all HTTP sessions in aiogram." +msgstr "" + +#: aiogram.client.session.base.BaseSession:3 of +msgid "If you want to create your own session, you must inherit from this class." +msgstr "" + #: aiogram.client.session.base.BaseSession.check_response:1 of msgid "Check response status" msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/session/middleware.po b/docs/locale/uk_UA/LC_MESSAGES/api/session/middleware.po new file mode 100644 index 00000000..137d74ca --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/session/middleware.po @@ -0,0 +1,87 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/session/middleware.rst:3 +msgid "Client session middlewares" +msgstr "" + +#: ../../api/session/middleware.rst:5 +msgid "" +"In some cases you may want to add some middlewares to the client session " +"to customize the behavior of the client." +msgstr "" + +#: ../../api/session/middleware.rst:7 +msgid "Some useful cases that is:" +msgstr "" + +#: ../../api/session/middleware.rst:9 +msgid "Log the outgoing requests" +msgstr "" + +#: ../../api/session/middleware.rst:10 +msgid "Customize the request parameters" +msgstr "" + +#: ../../api/session/middleware.rst:11 +msgid "Handle rate limiting errors and retry the request" +msgstr "" + +#: ../../api/session/middleware.rst:12 +msgid "others ..." +msgstr "" + +#: ../../api/session/middleware.rst:14 +msgid "" +"So, you can do it using client session middlewares. A client session " +"middleware is a function (or callable class) that receives the request " +"and the next middleware to call. The middleware can modify the request " +"and then call the next middleware to continue the request processing." +msgstr "" + +#: ../../api/session/middleware.rst:19 +msgid "How to register client session middleware?" +msgstr "" + +#: ../../api/session/middleware.rst:22 +msgid "Register using register method" +msgstr "" + +#: ../../api/session/middleware.rst:29 +msgid "Register using decorator" +msgstr "" + +#: ../../api/session/middleware.rst:44 +msgid "Example" +msgstr "" + +#: ../../api/session/middleware.rst:47 +msgid "Class based session middleware" +msgstr "" + +#: ../../api/session/middleware.rst:56 +msgid "" +"this middlewware is already implemented inside aiogram, so, if you want " +"to use it you can just import it :code:`from " +"aiogram.client.session.middlewares.request_logging import RequestLogging`" +msgstr "" + +#: ../../api/session/middleware.rst:61 +msgid "Function based session middleware" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po index beaee2ea..c6884b77 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_join_request.rst:3 msgid "ChatJoinRequest" @@ -72,6 +72,40 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:4 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:4 #: aiogram.types.chat_join_request.ChatJoinRequest.approve:4 #: aiogram.types.chat_join_request.ChatJoinRequest.decline:4 of msgid ":code:`chat_id`" @@ -93,6 +127,40 @@ msgstr "" msgid "Source: https://core.telegram.org/bots/api#approvechatjoinrequest" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm #: aiogram.types.chat_join_request.ChatJoinRequest.approve #: aiogram.types.chat_join_request.ChatJoinRequest.decline of msgid "Returns" @@ -128,9 +196,1423 @@ msgid "" ":class:`aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest`" msgstr "" +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:6 of +msgid "" +"Use this method to send text messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmessage" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm of +msgid "Parameters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:10 of +msgid "Text of the message to be sent, 1-4096 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:11 of +msgid "" +"Unique identifier for the target message thread (topic) of the forum; for" +" forum supergroups only" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:12 of +msgid "" +"Mode for parsing entities in the message text. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:13 of +msgid "" +"A JSON-serialized list of special entities that appear in message text, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:14 of +msgid "Disables link previews for links in this message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:32 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:32 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:16 of +msgid "" +"Sends the message `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:33 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:33 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:17 of +msgid "Protects the contents of the sent message from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:34 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:34 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:18 of +msgid "If the message is a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:35 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:35 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:19 of +msgid "" +"Pass :code:`True` if the message should be sent even if the specified " +"replied-to message is not found" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:20 of +msgid "" +"Additional interface options. A JSON-serialized object for an `inline " +"keyboard `_, " +"`custom reply keyboard " +"`_, instructions to " +"remove reply keyboard or to force a reply from the user." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:6 of +msgid "" +"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " +"without sound). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send animation files of up to 50 MB in size, this limit may be changed in" +" the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendanimation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:10 of +msgid "" +"Animation to send. Pass a file_id as String to send an animation that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an animation from the Internet, or upload a " +"new animation using multipart/form-data. :ref:`More information on " +"Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:12 of +msgid "Duration of sent animation in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:13 of +msgid "Animation width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:14 of +msgid "Animation height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:15 of +msgid "" +"Thumbnail of the file sent; can be ignored if thumbnail generation for " +"the file is supported server-side. The thumbnail should be in JPEG format" +" and less than 200 kB in size. A thumbnail's width and height should not " +"exceed 320. Ignored if the file is not uploaded using multipart/form-" +"data. Thumbnails can't be reused and can be only uploaded as a new file, " +"so you can pass 'attach://' if the thumbnail was " +"uploaded using multipart/form-data under . :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:16 of +msgid "" +"Animation caption (may also be used when resending animation by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:17 of +msgid "" +"Mode for parsing entities in the animation caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:14 of +msgid "" +"A JSON-serialized list of special entities that appear in the caption, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:19 of +msgid "" +"Pass :code:`True` if the animation needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:25 of +msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display them in the music player. Your audio must be in the .MP3 or .M4A " +"format. On success, the sent :class:`aiogram.types.message.Message` is " +"returned. Bots can currently send audio files of up to 50 MB in size, " +"this limit may be changed in the future. For sending voice messages, use " +"the :class:`aiogram.methods.send_voice.SendVoice` method instead." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:9 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:9 of +msgid "Source: https://core.telegram.org/bots/api#sendaudio" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:11 of +msgid "" +"Audio file to send. Pass a file_id as String to send an audio file that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an audio file from the Internet, or upload a " +"new one using multipart/form-data. :ref:`More information on Sending " +"Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:13 of +msgid "Audio caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:14 of +msgid "" +"Mode for parsing entities in the audio caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:16 of +msgid "Duration of the audio in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:17 of +msgid "Performer" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:18 of +msgid "Track name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:25 of +msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:6 of +msgid "" +"Use this method to send phone contacts. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendcontact" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:10 of +msgid "Contact's phone number" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:11 of +msgid "Contact's first name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:13 of +msgid "Contact's last name" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:14 of +msgid "" +"Additional data about the contact in the form of a `vCard " +"`_, 0-2048 bytes" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:6 of +msgid "" +"Use this method to send general files. On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send files of any type of up to 50 MB in size, this limit may be changed " +"in the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#senddocument" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:10 of +msgid "" +"File to send. Pass a file_id as String to send a file that exists on the " +"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" +" to get a file from the Internet, or upload a new one using multipart" +"/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:13 of +msgid "" +"Document caption (may also be used when resending documents by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:14 of +msgid "" +"Mode for parsing entities in the document caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:16 of +msgid "" +"Disables automatic server-side content type detection for files uploaded " +"using multipart/form-data" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:22 of +msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:6 of +msgid "" +"Use this method to send a game. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendgame" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:10 of +msgid "" +"Short name of the game, serves as the unique identifier for the game. Set" +" up your games via `@BotFather `_." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:16 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Play game_title' button will be shown. If not empty, the first " +"button must launch the game." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:17 of +msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:6 of +msgid "" +"Use this method to send invoices. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendinvoice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:10 of +msgid "Product name, 1-32 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:11 of +msgid "Product description, 1-255 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:12 of +msgid "" +"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " +"the user, use for your internal processes." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:13 of +msgid "" +"Payment provider token, obtained via `@BotFather " +"`_" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:14 of +msgid "" +"Three-letter ISO 4217 currency code, see `more on currencies " +"`_" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:15 of +msgid "" +"Price breakdown, a JSON-serialized list of components (e.g. product " +"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:17 of +msgid "" +"The maximum accepted amount for tips in the *smallest units* of the " +"currency (integer, **not** float/double). For example, for a maximum tip " +"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " +"parameter in `currencies.json " +"`_, it shows the" +" number of digits past the decimal point for each currency (2 for the " +"majority of currencies). Defaults to 0" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:18 of +msgid "" +"A JSON-serialized 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 " +"*max_tip_amount*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:19 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:20 of +msgid "" +"JSON-serialized 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." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:21 of +msgid "" +"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." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:22 of +msgid "Photo size in bytes" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:23 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:23 of +msgid "Photo width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:24 of +msgid "Photo height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:25 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:25 of +msgid "" +"Pass :code:`True` if you require the user's full name to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:26 of +msgid "" +"Pass :code:`True` if you require the user's phone number to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:27 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:27 of +msgid "" +"Pass :code:`True` if you require the user's email address to complete the" +" order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:28 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:28 of +msgid "" +"Pass :code:`True` if you require the user's shipping address to complete " +"the order" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:29 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:29 of +msgid "Pass :code:`True` if the user's phone number should be sent to provider" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:30 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:30 of +msgid "Pass :code:`True` if the user's email address should be sent to provider" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:31 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:31 of +msgid "Pass :code:`True` if the final price depends on the shipping method" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:36 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:36 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Pay :code:`total price`' button will be shown. If not empty, the " +"first button must be a Pay button." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:37 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:37 of +msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:6 of +msgid "" +"Use this method to send point on the map. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendlocation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:10 of +msgid "Latitude of the location" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:11 of +msgid "Longitude of the location" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:13 of +msgid "The radius of uncertainty for the location, measured in meters; 0-1500" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:14 of +msgid "" +"Period in seconds for which the location will be updated (see `Live " +"Locations `_, should be between" +" 60 and 86400." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:15 of +msgid "" +"For live locations, a direction in which the user is moving, in degrees. " +"Must be between 1 and 360 if specified." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:16 of +msgid "" +"For live locations, a maximum distance for proximity alerts about " +"approaching another chat member, in meters. Must be between 1 and 100000 " +"if specified." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:22 of +msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_media_group.SendMediaGroup` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:6 of +msgid "" +"Use this method to send a group of photos, videos, documents or audios as" +" an album. Documents and audio files can be only grouped in an album with" +" messages of the same type. On success, an array of `Messages " +"`_ that were sent is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:10 of +msgid "" +"A JSON-serialized array describing messages to be sent, must include 2-10" +" items" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:12 of +msgid "" +"Sends messages `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:13 of +msgid "Protects the contents of the sent messages from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:14 of +msgid "If the messages are a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:16 of +msgid "" +"instance of method " +":class:`aiogram.methods.send_media_group.SendMediaGroup`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:6 of +msgid "" +"Use this method to send photos. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendphoto" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:10 of +msgid "" +"Photo to send. Pass a file_id as String to send a photo that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a photo from the Internet, or upload a new photo using " +"multipart/form-data. The photo must be at most 10 MB in size. The photo's" +" width and height must not exceed 10000 in total. Width and height ratio " +"must be at most 20. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:12 of +msgid "" +"Photo caption (may also be used when resending photos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:13 of +msgid "" +"Mode for parsing entities in the photo caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:15 of +msgid "" +"Pass :code:`True` if the photo needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:21 of +msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:6 of +msgid "" +"Use this method to send a native poll. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendpoll" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:10 of +msgid "Poll question, 1-300 characters" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:11 of +msgid "" +"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " +"each" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:13 of +msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:14 of +msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:15 of +msgid "" +":code:`True`, if the poll allows multiple answers, ignored for polls in " +"quiz mode, defaults to :code:`False`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:16 of +msgid "" +"0-based identifier of the correct answer option, required for polls in " +"quiz mode" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:17 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:18 of +msgid "" +"Mode for parsing entities in the explanation. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:19 of +msgid "" +"A JSON-serialized list of special entities that appear in the poll " +"explanation, which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:20 of +msgid "" +"Amount of time in seconds the poll will be active after creation, 5-600. " +"Can't be used together with *close_date*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:21 of +msgid "" +"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 *open_period*." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:22 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:22 of +msgid "" +"Pass :code:`True` if the poll needs to be immediately closed. This can be" +" useful for poll preview." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:28 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:28 of +msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:6 of +msgid "" +"Use this method to send an animated emoji that will display a random " +"value. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#senddice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:11 of +msgid "" +"Emoji on which the dice throw animation is based. Currently, must be one " +"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" +" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " +"to '🎲'" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:13 of +msgid "Protects the contents of the sent message from forwarding" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:17 of +msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:6 of +msgid "" +"Use this method to send static .WEBP, `animated " +"`_ .TGS, or `video " +"`_ .WEBM " +"stickers. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendsticker" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:10 of +msgid "" +"Sticker to send. Pass a file_id as String to send a file that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " +"or .TGS sticker using multipart/form-data. :ref:`More information on " +"Sending Files » `. Video stickers can only be sent by a " +"file_id. Animated stickers can't be sent via an HTTP URL." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:12 of +msgid "Emoji associated with the sticker; only for just uploaded stickers" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:18 of +msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:6 of +msgid "" +"Use this method to send information about a venue. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvenue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:10 of +msgid "Latitude of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:11 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:11 of +msgid "Longitude of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:12 of +msgid "Name of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:13 of +msgid "Address of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:15 of +msgid "Foursquare identifier of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:16 of +msgid "" +"Foursquare type of the venue, if known. (For example, " +"'arts_entertainment/default', 'arts_entertainment/aquarium' or " +"'food/icecream'.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:17 of +msgid "Google Places identifier of the venue" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:18 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:18 of +msgid "" +"Google Places type of the venue. (See `supported types " +"`_.)" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:24 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:24 of +msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:6 of +msgid "" +"Use this method to send video files, Telegram clients support MPEG4 " +"videos (other formats may be sent as " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send video files of up to 50 MB in size, this limit may be changed in the" +" future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideo" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:10 of +msgid "" +"Video to send. Pass a file_id as String to send a video that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a video from the Internet, or upload a new video using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:12 of +msgid "Duration of sent video in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:13 of +msgid "Video width" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:14 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:14 of +msgid "Video height" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:16 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:16 of +msgid "" +"Video caption (may also be used when resending videos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:17 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:17 of +msgid "" +"Mode for parsing entities in the video caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:19 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:19 of +msgid "" +"Pass :code:`True` if the video needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:20 of +msgid "Pass :code:`True` if the uploaded video is suitable for streaming" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:26 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:26 of +msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" +" fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:6 of +msgid "" +"As of `v.4.0 `_, " +"Telegram clients support rounded square MPEG4 videos of up to 1 minute " +"long. Use this method to send video messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideonote" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:10 of +msgid "" +"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:13 of +msgid "Video width and height, i.e. diameter of the video message" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:20 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:20 of +msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:1 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:6 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display the file as a playable voice message. For this to work, your " +"audio must be in an .OGG file encoded with OPUS (other formats may be " +"sent as :class:`aiogram.types.audio.Audio` or " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send voice messages of up to 50 MB in size, this limit may be changed in " +"the future." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:8 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvoice" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:10 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:10 of +msgid "" +"Audio file to send. Pass a file_id as String to send a file that exists " +"on the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a file from the Internet, or upload a new one using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:12 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:12 of +msgid "Voice message caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:13 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:13 of +msgid "" +"Mode for parsing entities in the voice message caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:15 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:15 of +msgid "Duration of the voice message in seconds" +msgstr "" + +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:21 +#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:21 of +msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" +msgstr "" + #~ msgid "Use this method to approve a chat join request." #~ msgstr "" #~ msgid "Use this method to decline a chat join request." #~ msgstr "" - diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member.po index 6f46ae07..49bf21a4 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member.rst:3 msgid "ChatMember" @@ -55,162 +55,6 @@ msgstr "" msgid "Source: https://core.telegram.org/bots/api#chatmember" msgstr "" -#: ../../docstring aiogram.types.chat_member.ChatMember.status:1 of -msgid "The member's status in the chat" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.user:1 of -msgid "*Optional*. Information about the user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.is_anonymous:1 of -msgid "*Optional*. :code:`True`, if the user's presence in the chat is hidden" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.custom_title:1 of -msgid "*Optional*. Custom title for this user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_be_edited:1 of -msgid "" -"*Optional*. :code:`True`, if the bot is allowed to edit administrator " -"privileges of that user" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_manage_chat:1 of -msgid "" -"*Optional*. :code:`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" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_delete_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can delete messages of " -"other users" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_manage_video_chats:1 of -msgid "*Optional*. :code:`True`, if the administrator can manage video chats" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_restrict_members:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can restrict, ban or unban" -" chat members" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_promote_members:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can add new administrators" -" with a subset of their own privileges or demote administrators that they" -" have promoted, directly or indirectly (promoted by administrators that " -"were appointed by the user)" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_change_info:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to change the chat " -"title, photo and other settings" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_invite_users:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to invite new users to " -"the chat" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_post_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_edit_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the administrator can edit messages of other" -" users and can pin messages; channels only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_pin_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to pin messages; groups " -"and supergroups only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_manage_topics:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to create, rename, " -"close, and reopen forum topics; supergroups only" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.is_member:1 of -msgid "" -"*Optional*. :code:`True`, if the user is a member of the chat at the " -"moment of the request" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send text messages, " -"contacts, invoices, locations and venues" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_audios:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send audios" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_documents:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send documents" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_photos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send photos" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_videos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send videos" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_video_notes:1 -#: of -msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_voice_notes:1 -#: of -msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.can_send_polls:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send polls" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_send_other_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send animations, " -"games, stickers and use inline bots" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member.ChatMember.can_add_web_page_previews:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to add web page previews" -" to their messages" -msgstr "" - -#: ../../docstring aiogram.types.chat_member.ChatMember.until_date:1 of -msgid "" -"*Optional*. Date when restrictions will be lifted for this user; unix " -"time. If 0, then the user is restricted forever" -msgstr "" - #~ msgid "..." #~ msgstr "" @@ -237,3 +81,143 @@ msgstr "" #~ " notes" #~ msgstr "" +#~ msgid "The member's status in the chat" +#~ msgstr "" + +#~ msgid "*Optional*. Information about the user" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user's presence in the chat is hidden" +#~ msgstr "" + +#~ msgid "*Optional*. Custom title for this user" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the bot is" +#~ " allowed to edit administrator privileges" +#~ " of that user" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can delete messages of other users" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the administrator can manage video chats" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can restrict, ban or unban chat " +#~ "members" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can add new administrators with a" +#~ " subset of their own privileges or" +#~ " demote administrators that they have " +#~ "promoted, directly or indirectly (promoted " +#~ "by administrators that were appointed by" +#~ " the user)" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to change the chat title," +#~ " photo and other settings" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to invite new users to " +#~ "the chat" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post in the channel; channels" +#~ " only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can edit messages of other users " +#~ "and can pin messages; channels only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to pin messages; groups and" +#~ " supergroups only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to create, rename, close, " +#~ "and reopen forum topics; supergroups " +#~ "only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " a member of the chat at the" +#~ " moment of the request" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to send text messages, " +#~ "contacts, invoices, locations and venues" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send audios" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send documents" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send photos" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send videos" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" +#~ msgstr "" + +#~ msgid "*Optional*. :code:`True`, if the user is allowed to send polls" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to send animations, games, " +#~ "stickers and use inline bots" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the user is" +#~ " allowed to add web page previews " +#~ "to their messages" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. Date when restrictions will " +#~ "be lifted for this user; unix " +#~ "time. If 0, then the user is " +#~ "restricted forever" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po index 756e5b94..dec952fe 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_updated.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,3 +68,1165 @@ msgid "" "*Optional*. True, if the user joined the chat via a chat folder invite " "link" msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:4 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:4 of +msgid ":code:`chat_id`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:6 of +msgid "" +"Use this method to send text messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmessage" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of +msgid "Parameters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:10 of +msgid "Text of the message to be sent, 1-4096 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:10 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:11 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:11 of +msgid "" +"Unique identifier for the target message thread (topic) of the forum; for" +" forum supergroups only" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:12 of +msgid "" +"Mode for parsing entities in the message text. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:13 of +msgid "" +"A JSON-serialized list of special entities that appear in message text, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:14 of +msgid "Disables link previews for links in this message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:32 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:13 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:16 of +msgid "" +"Sends the message `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:13 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:33 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:17 of +msgid "Protects the contents of the sent message from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:34 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:25 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:18 of +msgid "If the message is a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:35 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:26 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:22 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:19 of +msgid "" +"Pass :code:`True` if the message should be sent even if the specified " +"replied-to message is not found" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:24 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:16 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:21 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:20 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:27 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:17 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:23 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:25 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:20 of +msgid "" +"Additional interface options. A JSON-serialized object for an `inline " +"keyboard `_, " +"`custom reply keyboard " +"`_, instructions to " +"remove reply keyboard or to force a reply from the user." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of +msgid "Returns" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:20 of +msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:6 of +msgid "" +"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " +"without sound). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send animation files of up to 50 MB in size, this limit may be changed in" +" the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:8 of +msgid "Source: https://core.telegram.org/bots/api#sendanimation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:10 of +msgid "" +"Animation to send. Pass a file_id as String to send an animation that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an animation from the Internet, or upload a " +"new animation using multipart/form-data. :ref:`More information on " +"Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:12 of +msgid "Duration of sent animation in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:13 of +msgid "Animation width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:14 of +msgid "Animation height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:19 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:14 of +msgid "" +"Thumbnail of the file sent; can be ignored if thumbnail generation for " +"the file is supported server-side. The thumbnail should be in JPEG format" +" and less than 200 kB in size. A thumbnail's width and height should not " +"exceed 320. Ignored if the file is not uploaded using multipart/form-" +"data. Thumbnails can't be reused and can be only uploaded as a new file, " +"so you can pass 'attach://' if the thumbnail was " +"uploaded using multipart/form-data under . :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:16 of +msgid "" +"Animation caption (may also be used when resending animation by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:17 of +msgid "" +"Mode for parsing entities in the animation caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:15 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:14 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:18 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:14 of +msgid "" +"A JSON-serialized list of special entities that appear in the caption, " +"which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:19 of +msgid "" +"Pass :code:`True` if the animation needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:25 of +msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display them in the music player. Your audio must be in the .MP3 or .M4A " +"format. On success, the sent :class:`aiogram.types.message.Message` is " +"returned. Bots can currently send audio files of up to 50 MB in size, " +"this limit may be changed in the future. For sending voice messages, use " +"the :class:`aiogram.methods.send_voice.SendVoice` method instead." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:9 of +msgid "Source: https://core.telegram.org/bots/api#sendaudio" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:11 of +msgid "" +"Audio file to send. Pass a file_id as String to send an audio file that " +"exists on the Telegram servers (recommended), pass an HTTP URL as a " +"String for Telegram to get an audio file from the Internet, or upload a " +"new one using multipart/form-data. :ref:`More information on Sending " +"Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:13 of +msgid "Audio caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:14 of +msgid "" +"Mode for parsing entities in the audio caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:16 of +msgid "Duration of the audio in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:17 of +msgid "Performer" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:18 of +msgid "Track name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:25 of +msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:6 of +msgid "" +"Use this method to send phone contacts. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:8 of +msgid "Source: https://core.telegram.org/bots/api#sendcontact" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:10 of +msgid "Contact's phone number" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:11 of +msgid "Contact's first name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:13 of +msgid "Contact's last name" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:14 of +msgid "" +"Additional data about the contact in the form of a `vCard " +"`_, 0-2048 bytes" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:20 of +msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:6 of +msgid "" +"Use this method to send general files. On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send files of any type of up to 50 MB in size, this limit may be changed " +"in the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:8 of +msgid "Source: https://core.telegram.org/bots/api#senddocument" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:10 of +msgid "" +"File to send. Pass a file_id as String to send a file that exists on the " +"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" +" to get a file from the Internet, or upload a new one using multipart" +"/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:13 of +msgid "" +"Document caption (may also be used when resending documents by " +"*file_id*), 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:14 of +msgid "" +"Mode for parsing entities in the document caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:16 of +msgid "" +"Disables automatic server-side content type detection for files uploaded " +"using multipart/form-data" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:22 of +msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:6 of +msgid "" +"Use this method to send a game. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:8 of +msgid "Source: https://core.telegram.org/bots/api#sendgame" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:10 of +msgid "" +"Short name of the game, serves as the unique identifier for the game. Set" +" up your games via `@BotFather `_." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:16 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Play game_title' button will be shown. If not empty, the first " +"button must launch the game." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:17 of +msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:6 of +msgid "" +"Use this method to send invoices. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:8 of +msgid "Source: https://core.telegram.org/bots/api#sendinvoice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:10 of +msgid "Product name, 1-32 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:11 of +msgid "Product description, 1-255 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:12 of +msgid "" +"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " +"the user, use for your internal processes." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:13 of +msgid "" +"Payment provider token, obtained via `@BotFather " +"`_" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:14 of +msgid "" +"Three-letter ISO 4217 currency code, see `more on currencies " +"`_" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:15 of +msgid "" +"Price breakdown, a JSON-serialized list of components (e.g. product " +"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:17 of +msgid "" +"The maximum accepted amount for tips in the *smallest units* of the " +"currency (integer, **not** float/double). For example, for a maximum tip " +"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " +"parameter in `currencies.json " +"`_, it shows the" +" number of digits past the decimal point for each currency (2 for the " +"majority of currencies). Defaults to 0" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:18 of +msgid "" +"A JSON-serialized 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 " +"*max_tip_amount*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:19 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:20 of +msgid "" +"JSON-serialized 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." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:21 of +msgid "" +"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." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:22 of +msgid "Photo size in bytes" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:23 of +msgid "Photo width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:24 of +msgid "Photo height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:25 of +msgid "" +"Pass :code:`True` if you require the user's full name to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:26 of +msgid "" +"Pass :code:`True` if you require the user's phone number to complete the " +"order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:27 of +msgid "" +"Pass :code:`True` if you require the user's email address to complete the" +" order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:28 of +msgid "" +"Pass :code:`True` if you require the user's shipping address to complete " +"the order" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:29 of +msgid "Pass :code:`True` if the user's phone number should be sent to provider" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:30 of +msgid "Pass :code:`True` if the user's email address should be sent to provider" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:31 of +msgid "Pass :code:`True` if the final price depends on the shipping method" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:36 of +msgid "" +"A JSON-serialized object for an `inline keyboard " +"`_. If empty, " +"one 'Pay :code:`total price`' button will be shown. If not empty, the " +"first button must be a Pay button." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:37 of +msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:6 of +msgid "" +"Use this method to send point on the map. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:8 of +msgid "Source: https://core.telegram.org/bots/api#sendlocation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:10 of +msgid "Latitude of the location" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:11 of +msgid "Longitude of the location" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:13 of +msgid "The radius of uncertainty for the location, measured in meters; 0-1500" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:14 of +msgid "" +"Period in seconds for which the location will be updated (see `Live " +"Locations `_, should be between" +" 60 and 86400." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:15 of +msgid "" +"For live locations, a direction in which the user is moving, in degrees. " +"Must be between 1 and 360 if specified." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:16 of +msgid "" +"For live locations, a maximum distance for proximity alerts about " +"approaching another chat member, in meters. Must be between 1 and 100000 " +"if specified." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:22 of +msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_media_group.SendMediaGroup` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:6 of +msgid "" +"Use this method to send a group of photos, videos, documents or audios as" +" an album. Documents and audio files can be only grouped in an album with" +" messages of the same type. On success, an array of `Messages " +"`_ that were sent is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:8 of +msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:10 of +msgid "" +"A JSON-serialized array describing messages to be sent, must include 2-10" +" items" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:12 of +msgid "" +"Sends messages `silently `_. Users will receive a notification with no sound." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:13 of +msgid "Protects the contents of the sent messages from forwarding and saving" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:14 of +msgid "If the messages are a reply, ID of the original message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:16 of +msgid "" +"instance of method " +":class:`aiogram.methods.send_media_group.SendMediaGroup`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:6 of +msgid "" +"Use this method to send photos. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:8 of +msgid "Source: https://core.telegram.org/bots/api#sendphoto" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:10 of +msgid "" +"Photo to send. Pass a file_id as String to send a photo that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a photo from the Internet, or upload a new photo using " +"multipart/form-data. The photo must be at most 10 MB in size. The photo's" +" width and height must not exceed 10000 in total. Width and height ratio " +"must be at most 20. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:12 of +msgid "" +"Photo caption (may also be used when resending photos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:13 of +msgid "" +"Mode for parsing entities in the photo caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:15 of +msgid "" +"Pass :code:`True` if the photo needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:21 of +msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:6 of +msgid "" +"Use this method to send a native poll. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:8 of +msgid "Source: https://core.telegram.org/bots/api#sendpoll" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:10 of +msgid "Poll question, 1-300 characters" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:11 of +msgid "" +"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " +"each" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:13 of +msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:14 of +msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:15 of +msgid "" +":code:`True`, if the poll allows multiple answers, ignored for polls in " +"quiz mode, defaults to :code:`False`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:16 of +msgid "" +"0-based identifier of the correct answer option, required for polls in " +"quiz mode" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:17 of +msgid "" +"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" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:18 of +msgid "" +"Mode for parsing entities in the explanation. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:19 of +msgid "" +"A JSON-serialized list of special entities that appear in the poll " +"explanation, which can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:20 of +msgid "" +"Amount of time in seconds the poll will be active after creation, 5-600. " +"Can't be used together with *close_date*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:21 of +msgid "" +"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 *open_period*." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:22 of +msgid "" +"Pass :code:`True` if the poll needs to be immediately closed. This can be" +" useful for poll preview." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:28 of +msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:6 of +msgid "" +"Use this method to send an animated emoji that will display a random " +"value. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:8 of +msgid "Source: https://core.telegram.org/bots/api#senddice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:11 of +msgid "" +"Emoji on which the dice throw animation is based. Currently, must be one " +"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" +" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " +"to '🎲'" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:13 of +msgid "Protects the contents of the sent message from forwarding" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:17 of +msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " +"will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:6 of +msgid "" +"Use this method to send static .WEBP, `animated " +"`_ .TGS, or `video " +"`_ .WEBM " +"stickers. On success, the sent :class:`aiogram.types.message.Message` is " +"returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:8 of +msgid "Source: https://core.telegram.org/bots/api#sendsticker" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:10 of +msgid "" +"Sticker to send. Pass a file_id as String to send a file that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " +"or .TGS sticker using multipart/form-data. :ref:`More information on " +"Sending Files » `. Video stickers can only be sent by a " +"file_id. Animated stickers can't be sent via an HTTP URL." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:12 of +msgid "Emoji associated with the sticker; only for just uploaded stickers" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:18 of +msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:6 of +msgid "" +"Use this method to send information about a venue. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvenue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:10 of +msgid "Latitude of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:11 of +msgid "Longitude of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:12 of +msgid "Name of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:13 of +msgid "Address of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:15 of +msgid "Foursquare identifier of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:16 of +msgid "" +"Foursquare type of the venue, if known. (For example, " +"'arts_entertainment/default', 'arts_entertainment/aquarium' or " +"'food/icecream'.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:17 of +msgid "Google Places identifier of the venue" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:18 of +msgid "" +"Google Places type of the venue. (See `supported types " +"`_.)" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:24 of +msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:6 of +msgid "" +"Use this method to send video files, Telegram clients support MPEG4 " +"videos (other formats may be sent as " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send video files of up to 50 MB in size, this limit may be changed in the" +" future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideo" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:10 of +msgid "" +"Video to send. Pass a file_id as String to send a video that exists on " +"the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a video from the Internet, or upload a new video using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:12 +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:12 of +msgid "Duration of sent video in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:13 of +msgid "Video width" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:14 of +msgid "Video height" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:16 of +msgid "" +"Video caption (may also be used when resending videos by *file_id*), " +"0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:17 of +msgid "" +"Mode for parsing entities in the video caption. See `formatting options " +"`_ for more " +"details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:19 of +msgid "" +"Pass :code:`True` if the video needs to be covered with a spoiler " +"animation" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:20 of +msgid "Pass :code:`True` if the uploaded video is suitable for streaming" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:26 of +msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" +" fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:6 of +msgid "" +"As of `v.4.0 `_, " +"Telegram clients support rounded square MPEG4 videos of up to 1 minute " +"long. Use this method to send video messages. On success, the sent " +":class:`aiogram.types.message.Message` is returned." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvideonote" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:10 of +msgid "" +"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:13 of +msgid "Video width and height, i.e. diameter of the video message" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:20 of +msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:1 of +msgid "" +"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:6 of +msgid "" +"Use this method to send audio files, if you want Telegram clients to " +"display the file as a playable voice message. For this to work, your " +"audio must be in an .OGG file encoded with OPUS (other formats may be " +"sent as :class:`aiogram.types.audio.Audio` or " +":class:`aiogram.types.document.Document`). On success, the sent " +":class:`aiogram.types.message.Message` is returned. Bots can currently " +"send voice messages of up to 50 MB in size, this limit may be changed in " +"the future." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:8 of +msgid "Source: https://core.telegram.org/bots/api#sendvoice" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:10 of +msgid "" +"Audio file to send. Pass a file_id as String to send a file that exists " +"on the Telegram servers (recommended), pass an HTTP URL as a String for " +"Telegram to get a file from the Internet, or upload a new one using " +"multipart/form-data. :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:12 of +msgid "Voice message caption, 0-1024 characters after entities parsing" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:13 of +msgid "" +"Mode for parsing entities in the voice message caption. See `formatting " +"options `_ for " +"more details." +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:15 of +msgid "Duration of the voice message in seconds" +msgstr "" + +#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:21 of +msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index 8c342278..22fd8db9 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,265 +22,370 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" msgstr "" -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:156 ../../../CHANGES.rst:216 -#: ../../../CHANGES.rst:267 ../../../CHANGES.rst:340 ../../../CHANGES.rst:381 -#: ../../../CHANGES.rst:419 ../../../CHANGES.rst:467 ../../../CHANGES.rst:543 -#: ../../../CHANGES.rst:576 ../../../CHANGES.rst:607 +#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 +#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 +#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 #: ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 msgid "" -"If router does not support custom event it does not break and passes it " -"to included routers `#1147 " -"`_" +"Added new shortcuts for " +":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " +"message to chat that member joined/left. `#1234 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:9 -msgid "Added support for FSM in Forum topics." -msgstr "" - -#: ../../[towncrier-fragments]:11 -msgid "The strategy can be changed in dispatcher:" -msgstr "" - -#: ../../[towncrier-fragments]:24 +#: ../../[towncrier-fragments]:10 msgid "" -"If you have implemented you own storages you should extend record key " -"generation with new one attribute - `thread_id`" +"Added new shortcuts for " +":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " +"access to sending messages to users who wants to join to chat. `#1235 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:26 -msgid "`#1161 `_" +#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 +#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 +#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 +#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 +#: ../../[towncrier-fragments]:16 +msgid "Bugfixes" msgstr "" -#: ../../[towncrier-fragments]:27 -msgid "Improved CallbackData serialization." +#: ../../[towncrier-fragments]:18 +msgid "" +"Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:29 -msgid "Minimized UUID (hex without dashes)" +#: ../../[towncrier-fragments]:20 +msgid "" +"Added model validation to remove UNSET before field validation. This " +"change was necessary to correctly handle parse_mode where 'UNSET' is used" +" as a sentinel value. Without the removal of 'UNSET', it would create " +"issues when passed to model initialization from Bot.method_name. 'UNSET' " +"was also added to typing. `#1233 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 +#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +msgid "Improved Documentation" msgstr "" #: ../../[towncrier-fragments]:30 +msgid "" +"Improved docs, added basic migration guide (will be expanded later) " +"`#1143 `_" +msgstr "" + +#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 +#: ../../[towncrier-fragments]:35 +msgid "Deprecations and Removals" +msgstr "" + +#: ../../[towncrier-fragments]:37 +msgid "" +"Removed the use of the context instance (Bot.get_current) from all " +"placements that were used previously. This is to avoid the use of the " +"context instance in the wrong place. `#1230 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:20 +msgid "3.0.0b8 (2023-07-17)" +msgstr "" + +#: ../../../CHANGES.rst:25 +msgid "" +"Added possibility to use custom events in routers (If router does not " +"support custom event it does not break and passes it to included " +"routers). `#1147 `_" +msgstr "" + +#: ../../../CHANGES.rst:27 +msgid "Added support for FSM in Forum topics." +msgstr "" + +#: ../../../CHANGES.rst:29 +msgid "The strategy can be changed in dispatcher:" +msgstr "" + +#: ../../../CHANGES.rst:42 +msgid "" +"If you have implemented you own storages you should extend record key " +"generation with new one attribute - :code:`thread_id`" +msgstr "" + +#: ../../../CHANGES.rst:44 +msgid "`#1161 `_" +msgstr "" + +#: ../../../CHANGES.rst:45 +msgid "Improved CallbackData serialization." +msgstr "" + +#: ../../../CHANGES.rst:47 +msgid "Minimized UUID (hex without dashes)" +msgstr "" + +#: ../../../CHANGES.rst:48 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../[towncrier-fragments]:31 +#: ../../../CHANGES.rst:49 msgid "`#1163 `_" msgstr "" -#: ../../[towncrier-fragments]:32 +#: ../../../CHANGES.rst:50 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:53 msgid "" -"Added X-Telegram-Bot-Api-Secret-Token header check `#1173 " +"Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:55 msgid "" -"Added possibility to pass custom headers to URLInputFile object `#1191 " -"`_" +"Made :code:`allowed_updates` list to revolve automatically in " +"start_polling method if not set explicitly. `#1178 " +"`_" msgstr "" -#: ../../../CHANGES.rst:118 ../../../CHANGES.rst:181 ../../../CHANGES.rst:230 -#: ../../../CHANGES.rst:291 ../../../CHANGES.rst:349 ../../../CHANGES.rst:395 -#: ../../../CHANGES.rst:443 ../../../CHANGES.rst:499 ../../../CHANGES.rst:584 -#: ../../../CHANGES.rst:616 ../../[towncrier-fragments]:42 -msgid "Bugfixes" +#: ../../../CHANGES.rst:57 +msgid "" +"Added possibility to pass custom headers to :class:`URLInputFile` object " +"`#1191 `_" msgstr "" -#: ../../[towncrier-fragments]:44 +#: ../../../CHANGES.rst:64 msgid "" "Change type of result in InlineQueryResult enum for " -"`InlineQueryResultCachedMpeg4Gif` and `InlineQueryResultMpeg4Gif` to more" -" correct according to documentation." +":code:`InlineQueryResultCachedMpeg4Gif` and " +":code:`InlineQueryResultMpeg4Gif` to more correct according to " +"documentation." msgstr "" -#: ../../[towncrier-fragments]:47 +#: ../../../CHANGES.rst:67 msgid "" "Change regexp for entities parsing to more correct " -"(`InlineQueryResultType.yml`). `#1146 " +"(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../[towncrier-fragments]:49 +#: ../../../CHANGES.rst:69 msgid "" "Fixed signature of startup/shutdown events to include the " -"**dispatcher.workflow_data as the handler arguments. `#1155 " +":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../[towncrier-fragments]:51 +#: ../../../CHANGES.rst:71 msgid "" -"Added missing FORUM_TOPIC_EDITED value to content_type property `#1160 " -"`_" +"Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " +"`#1160 `_" msgstr "" -#: ../../[towncrier-fragments]:53 +#: ../../../CHANGES.rst:73 msgid "" -"Fixed compatibility with Python 3.8-3.9 `#1162 " +"Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../[towncrier-fragments]:55 +#: ../../../CHANGES.rst:75 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../[towncrier-fragments]:57 +#: ../../../CHANGES.rst:77 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:193 ../../../CHANGES.rst:243 ../../../CHANGES.rst:623 -#: ../../[towncrier-fragments]:62 -msgid "Improved Documentation" +#: ../../../CHANGES.rst:79 +msgid "" +"Fixed the serialization error associated with nested subtypes like " +"InputMedia, ChatMember, etc." msgstr "" -#: ../../[towncrier-fragments]:64 +#: ../../../CHANGES.rst:82 msgid "" -"Changed small grammar typos for `upload_file` `#1133 " +"The previously generated code resulted in an invalid schema under " +"pydantic v2, which has stricter type parsing. Hence, subtypes without the" +" specification of all subtype unions were generating an empty object. " +"This has been rectified now. `#1213 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:92 +msgid "" +"Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 ../../[towncrier-fragments]:69 -msgid "Deprecations and Removals" -msgstr "" - -#: ../../[towncrier-fragments]:71 +#: ../../../CHANGES.rst:99 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../[towncrier-fragments]:73 +#: ../../../CHANGES.rst:101 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:127 ../../../CHANGES.rst:204 ../../../CHANGES.rst:257 -#: ../../../CHANGES.rst:308 ../../../CHANGES.rst:362 ../../../CHANGES.rst:404 -#: ../../../CHANGES.rst:450 ../../../CHANGES.rst:510 ../../../CHANGES.rst:531 -#: ../../../CHANGES.rst:554 ../../../CHANGES.rst:591 ../../../CHANGES.rst:630 -#: ../../[towncrier-fragments]:78 +#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 +#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 +#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 +#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 +#: ../../../CHANGES.rst:760 msgid "Misc" msgstr "" -#: ../../[towncrier-fragments]:80 +#: ../../../CHANGES.rst:108 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../[towncrier-fragments]:84 +#: ../../../CHANGES.rst:112 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../[towncrier-fragments]:87 +#: ../../../CHANGES.rst:115 msgid "`#1139 `_" msgstr "" -#: ../../[towncrier-fragments]:88 -msgid "" -"Added global defaults `disable_web_page_preview` and `protect_content` in" -" addition to `parse_mode` to the Bot instance, reworked internal request " -"builder mechanism. `#1142 " -"`_" -msgstr "" - -#: ../../[towncrier-fragments]:91 -msgid "" -"Removed bot parameters from storages `#1144 " -"`_" -msgstr "" - -#: ../../[towncrier-fragments]:93 +#: ../../../CHANGES.rst:116 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../[towncrier-fragments]:97 +#: ../../../CHANGES.rst:120 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../[towncrier-fragments]:99 +#: ../../../CHANGES.rst:122 msgid "`#1168 `_" msgstr "" -#: ../../[towncrier-fragments]:100 +#: ../../../CHANGES.rst:123 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../[towncrier-fragments]:104 -msgid "" -"Be careful, not all libraries is already updated to using V2 (for example" -" at the time, when this warning was added FastAPI still not support V2)" +#: ../../../CHANGES.rst:127 +msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../[towncrier-fragments]:106 +#: ../../../CHANGES.rst:128 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:129 +msgid "" +"Added global defaults :code:`disable_web_page_preview` and " +":code:`protect_content` in addition to :code:`parse_mode` to the Bot " +"instance, reworked internal request builder mechanism. `#1142 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:132 +msgid "" +"Removed bot parameters from storages `#1144 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:135 +msgid "" +"Replaced ContextVar's with a new feature called `Validation Context " +"`_" +" in Pydantic to improve the clarity, usability, and versatility of " +"handling the Bot instance within method shortcuts." +msgstr "" + +#: ../../../CHANGES.rst:140 +msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" +msgstr "" + +#: ../../../CHANGES.rst:141 +msgid "`#1210 `_" +msgstr "" + +#: ../../../CHANGES.rst:142 +msgid "Updated magic-filter with new features" +msgstr "" + +#: ../../../CHANGES.rst:144 +msgid "Added hint for :code:`len(F)` error" +msgstr "" + +#: ../../../CHANGES.rst:145 +msgid "Added not in operation" +msgstr "" + +#: ../../../CHANGES.rst:146 +msgid "`#1221 `_" +msgstr "" + +#: ../../../CHANGES.rst:150 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:24 +#: ../../../CHANGES.rst:154 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:26 +#: ../../../CHANGES.rst:156 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:28 +#: ../../../CHANGES.rst:158 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:40 +#: ../../../CHANGES.rst:170 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:58 +#: ../../../CHANGES.rst:188 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:60 +#: ../../../CHANGES.rst:190 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:78 +#: ../../../CHANGES.rst:208 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:194 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -299,15 +404,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:80 +#: ../../../CHANGES.rst:210 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:105 +#: ../../../CHANGES.rst:235 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:83 +#: ../../../CHANGES.rst:213 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -335,85 +440,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:107 +#: ../../../CHANGES.rst:237 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:238 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:109 +#: ../../../CHANGES.rst:239 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:110 +#: ../../../CHANGES.rst:240 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:111 +#: ../../../CHANGES.rst:241 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:113 +#: ../../../CHANGES.rst:243 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:250 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:252 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:259 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:131 +#: ../../../CHANGES.rst:261 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:133 +#: ../../../CHANGES.rst:263 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:265 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:139 +#: ../../../CHANGES.rst:269 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:271 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:272 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -421,13 +526,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:275 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:147 +#: ../../../CHANGES.rst:277 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -435,127 +540,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:153 +#: ../../../CHANGES.rst:283 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:288 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:160 +#: ../../../CHANGES.rst:290 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:162 +#: ../../../CHANGES.rst:292 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:164 +#: ../../../CHANGES.rst:294 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:165 +#: ../../../CHANGES.rst:295 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:166 +#: ../../../CHANGES.rst:296 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:167 +#: ../../../CHANGES.rst:297 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:168 +#: ../../../CHANGES.rst:298 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:169 +#: ../../../CHANGES.rst:299 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:300 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:171 +#: ../../../CHANGES.rst:301 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:173 +#: ../../../CHANGES.rst:303 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:174 +#: ../../../CHANGES.rst:304 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:175 +#: ../../../CHANGES.rst:305 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:176 +#: ../../../CHANGES.rst:306 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:183 +#: ../../../CHANGES.rst:313 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:185 +#: ../../../CHANGES.rst:315 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:187 +#: ../../../CHANGES.rst:317 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:318 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:189 +#: ../../../CHANGES.rst:319 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:195 +#: ../../../CHANGES.rst:325 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:197 +#: ../../../CHANGES.rst:327 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:199 +#: ../../../CHANGES.rst:329 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:206 +#: ../../../CHANGES.rst:336 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:338 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -564,23 +669,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:343 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:218 +#: ../../../CHANGES.rst:348 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:220 +#: ../../../CHANGES.rst:350 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:222 +#: ../../../CHANGES.rst:352 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -588,61 +693,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:225 +#: ../../../CHANGES.rst:355 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:232 +#: ../../../CHANGES.rst:362 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:234 +#: ../../../CHANGES.rst:364 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:236 +#: ../../../CHANGES.rst:366 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:368 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:245 +#: ../../../CHANGES.rst:375 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:382 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:389 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:264 +#: ../../../CHANGES.rst:394 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:399 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -650,198 +755,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:273 +#: ../../../CHANGES.rst:403 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:405 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:413 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:284 +#: ../../../CHANGES.rst:414 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:416 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:293 +#: ../../../CHANGES.rst:423 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:425 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:427 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:428 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:429 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:430 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:431 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:433 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:310 +#: ../../../CHANGES.rst:440 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:312 +#: ../../../CHANGES.rst:442 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:314 +#: ../../../CHANGES.rst:444 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:316 +#: ../../../CHANGES.rst:446 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:448 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:320 +#: ../../../CHANGES.rst:450 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:321 +#: ../../../CHANGES.rst:451 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:322 +#: ../../../CHANGES.rst:452 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:323 +#: ../../../CHANGES.rst:453 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:324 +#: ../../../CHANGES.rst:454 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:455 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:326 +#: ../../../CHANGES.rst:456 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:328 +#: ../../../CHANGES.rst:458 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:330 +#: ../../../CHANGES.rst:460 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:332 +#: ../../../CHANGES.rst:462 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:337 +#: ../../../CHANGES.rst:467 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:342 +#: ../../../CHANGES.rst:472 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:344 +#: ../../../CHANGES.rst:474 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:351 +#: ../../../CHANGES.rst:481 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:353 +#: ../../../CHANGES.rst:483 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:485 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:357 +#: ../../../CHANGES.rst:487 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:494 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:496 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -849,14 +954,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:369 +#: ../../../CHANGES.rst:499 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:371 +#: ../../../CHANGES.rst:501 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -865,113 +970,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:378 +#: ../../../CHANGES.rst:508 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:383 +#: ../../../CHANGES.rst:513 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:386 +#: ../../../CHANGES.rst:516 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:388 +#: ../../../CHANGES.rst:518 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:390 +#: ../../../CHANGES.rst:520 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:397 +#: ../../../CHANGES.rst:527 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:529 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:406 +#: ../../../CHANGES.rst:536 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:408 +#: ../../../CHANGES.rst:538 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:410 +#: ../../../CHANGES.rst:540 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:546 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:421 +#: ../../../CHANGES.rst:551 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:553 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:439 +#: ../../../CHANGES.rst:569 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:445 +#: ../../../CHANGES.rst:575 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:582 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:584 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:586 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:588 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -979,11 +1084,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:594 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:469 +#: ../../../CHANGES.rst:599 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -991,258 +1096,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:473 +#: ../../../CHANGES.rst:603 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:613 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:484 +#: ../../../CHANGES.rst:614 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:617 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:489 +#: ../../../CHANGES.rst:619 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:495 +#: ../../../CHANGES.rst:625 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:631 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:503 +#: ../../../CHANGES.rst:633 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:505 +#: ../../../CHANGES.rst:635 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:512 +#: ../../../CHANGES.rst:642 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:515 +#: ../../../CHANGES.rst:645 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:517 +#: ../../../CHANGES.rst:647 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:519 +#: ../../../CHANGES.rst:649 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:650 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:521 +#: ../../../CHANGES.rst:651 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:522 +#: ../../../CHANGES.rst:652 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:528 +#: ../../../CHANGES.rst:658 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:533 +#: ../../../CHANGES.rst:663 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:665 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:670 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:545 +#: ../../../CHANGES.rst:675 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:547 +#: ../../../CHANGES.rst:677 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:549 +#: ../../../CHANGES.rst:679 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:556 +#: ../../../CHANGES.rst:686 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:558 +#: ../../../CHANGES.rst:688 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:560 +#: ../../../CHANGES.rst:690 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:561 +#: ../../../CHANGES.rst:691 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:562 +#: ../../../CHANGES.rst:692 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:563 +#: ../../../CHANGES.rst:693 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:565 +#: ../../../CHANGES.rst:695 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:567 +#: ../../../CHANGES.rst:697 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:573 +#: ../../../CHANGES.rst:703 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:578 +#: ../../../CHANGES.rst:708 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:716 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:593 +#: ../../../CHANGES.rst:723 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:595 +#: ../../../CHANGES.rst:725 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:597 +#: ../../../CHANGES.rst:727 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:729 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:604 +#: ../../../CHANGES.rst:734 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:609 +#: ../../../CHANGES.rst:739 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:611 +#: ../../../CHANGES.rst:741 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:618 +#: ../../../CHANGES.rst:748 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:755 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:632 +#: ../../../CHANGES.rst:762 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:634 +#: ../../../CHANGES.rst:764 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:636 +#: ../../../CHANGES.rst:766 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2787,3 +2892,86 @@ msgstr "" #~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" +#~ msgstr "" + +#~ msgid "" +#~ "If router does not support custom " +#~ "event it does not break and passes" +#~ " it to included routers `#1147 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "If you have implemented you own " +#~ "storages you should extend record key" +#~ " generation with new one attribute -" +#~ " `thread_id`" +#~ msgstr "" + +#~ msgid "" +#~ "Added X-Telegram-Bot-Api-Secret-Token" +#~ " header check `#1173 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added possibility to pass custom headers" +#~ " to URLInputFile object `#1191 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Change type of result in " +#~ "InlineQueryResult enum for " +#~ "`InlineQueryResultCachedMpeg4Gif` and " +#~ "`InlineQueryResultMpeg4Gif` to more correct " +#~ "according to documentation." +#~ msgstr "" + +#~ msgid "" +#~ "Change regexp for entities parsing to" +#~ " more correct (`InlineQueryResultType.yml`). " +#~ "`#1146 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Fixed signature of startup/shutdown events " +#~ "to include the **dispatcher.workflow_data as" +#~ " the handler arguments. `#1155 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added missing FORUM_TOPIC_EDITED value to " +#~ "content_type property `#1160 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Fixed compatibility with Python 3.8-3.9 " +#~ "`#1162 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Changed small grammar typos for " +#~ "`upload_file` `#1133 " +#~ "`_" +#~ msgstr "" + +#~ msgid "" +#~ "Added global defaults `disable_web_page_preview` " +#~ "and `protect_content` in addition to " +#~ "`parse_mode` to the Bot instance, " +#~ "reworked internal request builder mechanism." +#~ " `#1142 `_" +#~ msgstr "" + +#~ msgid "" +#~ "Be careful, not all libraries is " +#~ "already updated to using V2 (for " +#~ "example at the time, when this " +#~ "warning was added FastAPI still not " +#~ "support V2)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/contributing.po b/docs/locale/uk_UA/LC_MESSAGES/contributing.po index e71e4dda..40354edd 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/contributing.po +++ b/docs/locale/uk_UA/LC_MESSAGES/contributing.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../contributing.rst:3 msgid "Contributing" @@ -317,7 +317,14 @@ msgstr "" msgid "" "So, if you want to financially support the project, or, for example, give" " me a pizza or a beer, you can do it on `OpenCollective " -"`_ or `Patreon " -"`_." +"`_." msgstr "" +#~ msgid "" +#~ "So, if you want to financially " +#~ "support the project, or, for example," +#~ " give me a pizza or a beer, " +#~ "you can do it on `OpenCollective " +#~ "`_ or `Patreon " +#~ "`_." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po index 391505ee..7b2707da 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: 2022-12-10 19:44+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/dispatcher.rst:3 msgid "Dispatcher" @@ -101,8 +101,7 @@ msgstr "" msgid "Run many bots with polling" msgstr "Запуск кількох ботів з опитуванням" -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:3 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:3 of +#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:3 of #, fuzzy msgid "Bot instances (one or mre)" msgstr "Екземпляри ботів" @@ -122,23 +121,22 @@ msgstr "Запуск обробки без очікування результа msgid "backoff-retry config" msgstr "" -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:7 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:7 of +#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:7 of msgid "List of the update types you want your bot to receive" msgstr "Список типів подій, які має опрацьовувати ваш бот" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:8 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:8 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:9 of msgid "handle signals (SIGINT/SIGTERM)" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:9 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:9 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:10 of msgid "close bot sessions on shutdown" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:10 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:10 of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:11 of msgid "contextual data" msgstr "контекстні дані" @@ -151,6 +149,17 @@ msgstr "Повертає" msgid "Polling runner" msgstr "Запуск кількох ботів з опитуванням (асинхронно)" +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:3 of +#, fuzzy +msgid "Bot instances (one or more)" +msgstr "Екземпляри ботів" + +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:7 of +msgid "" +"List of the update types you want your bot to receive By default, all " +"used update types are enabled (resolved from handlers)" +msgstr "" + #: ../../dispatcher/dispatcher.rst:18 msgid "Simple usage" msgstr "Просте застосування" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/errors.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/errors.po new file mode 100644 index 00000000..d9f28e0a --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/errors.po @@ -0,0 +1,159 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/errors.rst:3 +msgid "Errors" +msgstr "" + +#: ../../dispatcher/errors.rst:7 +msgid "Handling errors" +msgstr "" + +#: ../../dispatcher/errors.rst:9 +msgid "" +"Is recommended way that you should use errors inside handlers using try-" +"except block, but in common cases you can use global errors handler at " +"router or dispatcher level." +msgstr "" + +#: ../../dispatcher/errors.rst:12 +msgid "" +"If you specify errors handler for router - it will be used for all " +"handlers inside this router." +msgstr "" + +#: ../../dispatcher/errors.rst:14 +msgid "" +"If you specify errors handler for dispatcher - it will be used for all " +"handlers inside all routers." +msgstr "" + +#: ../../dispatcher/errors.rst:34 +msgid "ErrorEvent" +msgstr "" + +#: aiogram.types.error_event.ErrorEvent:1 of +msgid "" +"Internal event, should be used to receive errors while processing Updates" +" from Telegram" +msgstr "" + +#: aiogram.types.error_event.ErrorEvent:3 of +msgid "Source: https://core.telegram.org/bots/api#error-event" +msgstr "" + +#: ../../docstring aiogram.types.error_event.ErrorEvent.update:1 of +msgid "Received update" +msgstr "" + +#: ../../docstring aiogram.types.error_event.ErrorEvent.exception:1 of +msgid "Exception" +msgstr "" + +#: ../../dispatcher/errors.rst:45 +msgid "Error types" +msgstr "" + +#: aiogram.exceptions.AiogramError:1 of +msgid "Base exception for all aiogram errors." +msgstr "" + +#: aiogram.exceptions.DetailedAiogramError:1 of +msgid "Base exception for all aiogram errors with detailed message." +msgstr "" + +#: aiogram.exceptions.CallbackAnswerException:1 of +msgid "Exception for callback answer." +msgstr "" + +#: aiogram.exceptions.UnsupportedKeywordArgument:1 of +msgid "Exception raised when a keyword argument is passed as filter." +msgstr "" + +#: aiogram.exceptions.TelegramAPIError:1 of +msgid "Base exception for all Telegram API errors." +msgstr "" + +#: aiogram.exceptions.TelegramNetworkError:1 of +msgid "Base exception for all Telegram network errors." +msgstr "" + +#: aiogram.exceptions.TelegramRetryAfter:1 of +msgid "Exception raised when flood control exceeds." +msgstr "" + +#: aiogram.exceptions.TelegramMigrateToChat:1 of +msgid "Exception raised when chat has been migrated to a supergroup." +msgstr "" + +#: aiogram.exceptions.TelegramBadRequest:1 of +msgid "Exception raised when request is malformed." +msgstr "" + +#: aiogram.exceptions.TelegramNotFound:1 of +msgid "Exception raised when chat, message, user, etc. not found." +msgstr "" + +#: aiogram.exceptions.TelegramConflictError:1 of +msgid "" +"Exception raised when bot token is already used by another application in" +" polling mode." +msgstr "" + +#: aiogram.exceptions.TelegramUnauthorizedError:1 of +msgid "Exception raised when bot token is invalid." +msgstr "" + +#: aiogram.exceptions.TelegramForbiddenError:1 of +msgid "Exception raised when bot is kicked from chat or etc." +msgstr "" + +#: aiogram.exceptions.TelegramServerError:1 of +msgid "Exception raised when Telegram server returns 5xx error." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:1 of +msgid "Exception raised when Telegram server is restarting." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:3 of +msgid "" +"It seems like this error is not used by Telegram anymore, but it's still " +"here for backward compatibility." +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:6 of +msgid "" +"Currently, you should expect that Telegram can raise RetryAfter (with " +"timeout 5 seconds)" +msgstr "" + +#: aiogram.exceptions.RestartingTelegram:7 of +msgid "error instead of this one." +msgstr "" + +#: aiogram.exceptions.TelegramEntityTooLarge:1 of +msgid "Exception raised when you are trying to send a file that is too large." +msgstr "" + +#: aiogram.exceptions.ClientDecodeError:1 of +msgid "" +"Exception raised when client can't decode response. (Malformed response, " +"etc.)" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po index dfd25059..74d507c1 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po @@ -5,17 +5,16 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: 2022-12-10 20:41+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.2.2\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/router.rst:3 msgid "Router" @@ -36,57 +35,79 @@ msgstr "" #: aiogram.dispatcher.router.Router:4 of msgid "Event handlers can be registered in observer by two ways:" -msgstr "" -"Обробники подій можуть бути зареєстровані в обсервері двома шляхами:" +msgstr "Обробники подій можуть бути зареєстровані в обсервері двома шляхами:" #: aiogram.dispatcher.router.Router:6 of msgid "" "By observer method - :obj:`router..register(handler, " ")`" msgstr "" -"За допомогою методу обсервера - :obj:`router.." -"register(handler, )`" +"За допомогою методу обсервера - " +":obj:`router..register(handler, )`" #: aiogram.dispatcher.router.Router:7 of msgid "By decorator - :obj:`@router.()`" -msgstr "" -"За допомогою декоратора - :obj:`@router.()`" +msgstr "За допомогою декоратора - :obj:`@router.()`" #: aiogram.dispatcher.router.Router.__init__ -#: aiogram.dispatcher.router.Router.include_router of +#: aiogram.dispatcher.router.Router.include_router +#: aiogram.dispatcher.router.Router.include_routers +#: aiogram.dispatcher.router.Router.resolve_used_update_types of msgid "Parameters" msgstr "Параметри" #: aiogram.dispatcher.router.Router.__init__:1 of msgid "Optional router name, can be useful for debugging" -msgstr "" -"Додаткова назва маршрутизатора, може бути корисною для відлагодження" +msgstr "Додаткова назва маршрутизатора, може бути корисною для відлагодження" #: aiogram.dispatcher.router.Router.include_router:1 of msgid "Attach another router." msgstr "Підключення маршрутизатора." -#: aiogram.dispatcher.router.Router.include_router of +#: aiogram.dispatcher.router.Router.include_router +#: aiogram.dispatcher.router.Router.include_routers +#: aiogram.dispatcher.router.Router.resolve_used_update_types of msgid "Returns" msgstr "Повертає" -#: ../../dispatcher/router.rst:11 +#: aiogram.dispatcher.router.Router.include_routers:1 of +#, fuzzy +msgid "Attach multiple routers." +msgstr "Підключення маршрутизатора." + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:1 of +msgid "Resolve registered event names" +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:3 of +msgid "Is useful for getting updates only for registered event types." +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:5 of +msgid "skip specified event names" +msgstr "" + +#: aiogram.dispatcher.router.Router.resolve_used_update_types:6 of +msgid "set of registered names" +msgstr "" + +#: ../../dispatcher/router.rst:13 msgid "Event observers" msgstr "Обсервери подій" -#: ../../dispatcher/router.rst:15 +#: ../../dispatcher/router.rst:17 msgid "" "All handlers always should be asynchronous. The name of the handler " "function is not important. The event argument name is also not important " -"but it is recommended to not overlap the name with contextual data in " -"due to function can not accept two arguments with the same name." +"but it is recommended to not overlap the name with contextual data in due" +" to function can not accept two arguments with the same name." msgstr "" -"Усі обробники завжди мають бути асинхронними. Ім'я функції обробки не " -"має значення. Назва аргументу події також не важлива, але рекомендується " -"не накладати назву на контекстні дані, оскільки функція не може прийняти " -"два аргументи з однаковою назвою." +"Усі обробники завжди мають бути асинхронними. Ім'я функції обробки не має" +" значення. Назва аргументу події також не важлива, але рекомендується не " +"накладати назву на контекстні дані, оскільки функція не може прийняти два" +" аргументи з однаковою назвою." -#: ../../dispatcher/router.rst:18 +#: ../../dispatcher/router.rst:20 msgid "" "Here is the list of available observers and examples of how to register " "handlers" @@ -94,115 +115,105 @@ msgstr "" "Ось список доступних обсерверів і приклади того, як зареєструвати " "обробники" -#: ../../dispatcher/router.rst:20 +#: ../../dispatcher/router.rst:22 msgid "" -"In these examples only decorator-style registering handlers are used, " -"but if you don't like @decorators just use :obj:`." -"register(...)` method instead." +"In these examples only decorator-style registering handlers are used, but" +" if you don't like @decorators just use :obj:`.register(...)`" +" method instead." msgstr "" "У цих прикладах використовуються лише обробники реєстрації у стилі " "декоратора, але якщо вам не подобаються @decorators, просто " "використовуйте :obj:`.register(...)` method instead." -#: ../../dispatcher/router.rst:23 -msgid "Update" -msgstr "Оновлення" - -#: ../../dispatcher/router.rst:32 -msgid "" -"By default Router already has an update handler which route all event " -"types to another observers." -msgstr "" -"За замовчуванням маршрутизатор уже має обробник подій, який направляє " -"всі типи подій іншим обсерверам." - -#: ../../dispatcher/router.rst:36 +#: ../../dispatcher/router.rst:25 msgid "Message" msgstr "Повідомлення" -#: ../../dispatcher/router.rst:41 +#: ../../dispatcher/router.rst:30 msgid "Be attentive with filtering this event" msgstr "Будьте уважні при фільтруванні цієї події" -#: ../../dispatcher/router.rst:43 +#: ../../dispatcher/router.rst:32 msgid "" "You should expect that this event can be with different sets of " "attributes in different cases" msgstr "" -"Вам слід очікувати, що ця подія може мати різні набори атрибутів у " -"різних випадках" +"Вам слід очікувати, що ця подія може мати різні набори атрибутів у різних" +" випадках" -#: ../../dispatcher/router.rst:45 +#: ../../dispatcher/router.rst:34 msgid "" "(For example text, sticker and document are always of different content " "types of message)" -msgstr "" -"(Наприклад, текст, стікер та документ завжди мають різні типи вмісту)" +msgstr "(Наприклад, текст, стікер та документ завжди мають різні типи вмісту)" -#: ../../dispatcher/router.rst:47 +#: ../../dispatcher/router.rst:36 msgid "" -"Recommended way to check field availability before usage, for example " -"via :ref:`magic filter `: :code:`F.text` to handle text, :" -"code:`F.sticker` to handle stickers only and etc." +"Recommended way to check field availability before usage, for example via" +" :ref:`magic filter `: :code:`F.text` to handle text, " +":code:`F.sticker` to handle stickers only and etc." msgstr "" "Рекомендований спосіб перевірити наявність полів перед використанням, " -"наприклад за допомогою :ref:`magic filter `: :code:`F." -"text` для обробки тексту, :code:`F.sticker` для обробки лише стікерів і " -"тощо." +"наприклад за допомогою :ref:`magic filter `: " +":code:`F.text` для обробки тексту, :code:`F.sticker` для обробки лише " +"стікерів і тощо." -#: ../../dispatcher/router.rst:58 +#: ../../dispatcher/router.rst:47 msgid "Edited message" msgstr "Відредаговане повідомлення" -#: ../../dispatcher/router.rst:66 +#: ../../dispatcher/router.rst:55 msgid "Channel post" msgstr "Пост на каналі" -#: ../../dispatcher/router.rst:74 +#: ../../dispatcher/router.rst:63 msgid "Edited channel post" msgstr "Відредагований пост на каналі" -#: ../../dispatcher/router.rst:83 +#: ../../dispatcher/router.rst:72 msgid "Inline query" msgstr "Inline запит" -#: ../../dispatcher/router.rst:91 +#: ../../dispatcher/router.rst:80 msgid "Chosen inline query" msgstr "Вибраний результат inline запиту" -#: ../../dispatcher/router.rst:99 +#: ../../dispatcher/router.rst:88 msgid "Callback query" msgstr "Запит зворотної відповіді" -#: ../../dispatcher/router.rst:107 +#: ../../dispatcher/router.rst:96 msgid "Shipping query" msgstr "Запит підтвердження доставки" -#: ../../dispatcher/router.rst:115 +#: ../../dispatcher/router.rst:104 msgid "Pre checkout query" msgstr "Запит перед оформленням замовлення" -#: ../../dispatcher/router.rst:123 +#: ../../dispatcher/router.rst:112 msgid "Poll" msgstr "Опитування" -#: ../../dispatcher/router.rst:131 +#: ../../dispatcher/router.rst:120 msgid "Poll answer" msgstr "Відповідь на опитування" -#: ../../dispatcher/router.rst:139 +#: ../../dispatcher/router.rst:128 msgid "Errors" msgstr "Помилки" -#: ../../dispatcher/router.rst:146 -msgid "Is useful for handling errors from other handlers" +#: ../../dispatcher/router.rst:135 +#, fuzzy +msgid "" +"Is useful for handling errors from other handlers, error event described " +":ref:`here `" msgstr "Корисно для обробки помилок інших обробників" -#: ../../dispatcher/router.rst:150 +#: ../../dispatcher/router.rst:142 msgid "Nested routers" msgstr "Вкладені маршрутизатори" -#: ../../dispatcher/router.rst:155 +#: ../../dispatcher/router.rst:147 msgid "" "Routers by the way can be nested to an another routers with some " "limitations:" @@ -210,30 +221,50 @@ msgstr "" "До речі, маршрутизатори можуть бути вкладеними в інші маршрутизатори з " "деякими обмеженнями:" -#: ../../dispatcher/router.rst:155 +#: ../../dispatcher/router.rst:147 msgid "" "1. Router **CAN NOT** include itself 1. Routers **CAN NOT** be used for " -"circular including (router 1 include router 2, router 2 include router " -"3, router 3 include router 1)" +"circular including (router 1 include router 2, router 2 include router 3," +" router 3 include router 1)" msgstr "" "1. Маршрутизатор **НЕ МОЖЕ** включити себе \n" "2. Маршрутизатори **НЕ МОЖНА** використовувати для циклічного включення " "(маршрутизатор 1 включає маршрутизатор 2, маршрутизатор 2 включає " "маршрутизатор 3, маршрутизатор 3 включає маршрутизатор 1)" -#: ../../dispatcher/router.rst:159 +#: ../../dispatcher/router.rst:151 msgid "Example:" msgstr "Приклад:" -#: ../../dispatcher/router.rst:161 ../../dispatcher/router.rst:171 +#: ../../dispatcher/router.rst:153 +#, fuzzy +msgid "module_1.py" +msgstr "module_2.py" + +#: ../../dispatcher/router.rst:163 msgid "module_2.py" msgstr "module_2.py" -#: ../../dispatcher/router.rst:183 +#: ../../dispatcher/router.rst:175 +msgid "Update" +msgstr "Оновлення" + +#: ../../dispatcher/router.rst:184 +msgid "The only root Router (Dispatcher) can handle this type of event." +msgstr "" + +#: ../../dispatcher/router.rst:188 +msgid "" +"Dispatcher already has default handler for this event type, so you can " +"use it for handling all updates that are not handled by any other " +"handlers." +msgstr "" + +#: ../../dispatcher/router.rst:191 msgid "How it works?" msgstr "Як це працює?" -#: ../../dispatcher/router.rst:185 +#: ../../dispatcher/router.rst:193 msgid "" "For example, dispatcher has 2 routers, the last router also has one " "nested router:" @@ -245,6 +276,15 @@ msgstr "" msgid "Nested routers example" msgstr "Приклад вкладених маршрутизаторів" -#: ../../dispatcher/router.rst:190 +#: ../../dispatcher/router.rst:198 msgid "In this case update propagation flow will have form:" msgstr "У цьому випадку потік розповсюдження оновлення матиме вигляд:" + +#~ msgid "" +#~ "By default Router already has an " +#~ "update handler which route all event " +#~ "types to another observers." +#~ msgstr "" +#~ "За замовчуванням маршрутизатор уже має " +#~ "обробник подій, який направляє всі типи" +#~ " подій іншим обсерверам." diff --git a/docs/locale/uk_UA/LC_MESSAGES/index.po b/docs/locale/uk_UA/LC_MESSAGES/index.po index e7da04ce..5ad3333e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../../README.rst:3 msgid "aiogram |beta badge|" @@ -129,7 +129,7 @@ msgstr "Працює з `PyPy `_" #: ../../../README.rst:66 #, fuzzy msgid "" -"Supports `Telegram Bot API 6.6 `_ and" +"Supports `Telegram Bot API 6.7 `_ and" " gets fast updates to the latest versions of the Bot API" msgstr "" "Підтримує `Telegram Bot API 6.3 `_ та" diff --git a/docs/locale/uk_UA/LC_MESSAGES/install.po b/docs/locale/uk_UA/LC_MESSAGES/install.po index 7ebb418e..583dda9a 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/install.po +++ b/docs/locale/uk_UA/LC_MESSAGES/install.po @@ -5,43 +5,42 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: 2022-10-14 00:10+0300\n" "Last-Translator: \n" -"Language-Team: \n" "Language: uk_UA\n" +"Language-Team: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../install.rst:3 msgid "Installation" msgstr "Встановлення" -#: ../../install.rst:6 -msgid "Stable (2.x)" -msgstr "Стабільна версія (2.x)" - -#: ../../install.rst:9 ../../install.rst:26 +#: ../../install.rst:6 ../../install.rst:23 msgid "From PyPI" msgstr "З PyPI" -#: ../../install.rst:16 +#: ../../install.rst:13 msgid "From Arch Linux Repository" msgstr "З репозиторію Arch Linux" -#: ../../install.rst:23 +#: ../../install.rst:20 msgid "Development build (3.x)" msgstr "Бета-версія (3.х)" -#: ../../install.rst:33 +#: ../../install.rst:30 msgid "From GitHub" msgstr "З GitHub" -#: ../../install.rst:40 -msgid "From AUR" -msgstr "З AUR" +#~ msgid "Stable (2.x)" +#~ msgstr "Стабільна версія (2.x)" + +#~ msgid "From AUR" +#~ msgstr "З AUR" diff --git a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po new file mode 100644 index 00000000..9035b8b8 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po @@ -0,0 +1,271 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../migration_2_to_3.rst:3 +msgid "Migration FAQ (2.x -> 3.0)" +msgstr "" + +#: ../../migration_2_to_3.rst:7 +msgid "This guide is still in progress." +msgstr "" + +#: ../../migration_2_to_3.rst:9 +msgid "" +"This version introduces much many breaking changes and architectural " +"improvements, helping to reduce global variables count in your code, " +"provides useful mechanisms to separate your code to modules or just make " +"sharable modules via packages on the PyPi, makes middlewares and filters " +"more controllable and others." +msgstr "" + +#: ../../migration_2_to_3.rst:14 +msgid "" +"On this page you can read about points that changed corresponding to last" +" stable 2.x version." +msgstr "" + +#: ../../migration_2_to_3.rst:18 +msgid "" +"This page is most like a detailed changelog than a migration guide, but " +"it will be updated in the future." +msgstr "" + +#: ../../migration_2_to_3.rst:21 +msgid "" +"Feel free to contribute to this page, if you find something that is not " +"mentioned here." +msgstr "" + +#: ../../migration_2_to_3.rst:25 +msgid "Dispatcher" +msgstr "" + +#: ../../migration_2_to_3.rst:27 +msgid "" +":class:`Dispatcher` class no longer accepts the `Bot` instance into the " +"initializer, it should be passed to dispatcher only for starting polling " +"or handling event from webhook. Also this way adds possibility to use " +"multiple bot instances at the same time (\"multibot\")" +msgstr "" + +#: ../../migration_2_to_3.rst:30 +msgid "" +":class:`Dispatcher` now can be extended with another Dispatcher-like " +"thing named :class:`Router` (:ref:`Read more » `). With " +"routes you can easily separate your code to multiple modules and may be " +"share this modules between projects." +msgstr "" + +#: ../../migration_2_to_3.rst:34 +msgid "" +"Removed the **_handler** suffix from all event handler decorators and " +"registering methods. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:36 +msgid "" +"Executor entirely removed, now you can use Dispatcher directly to start " +"polling or webhook." +msgstr "" + +#: ../../migration_2_to_3.rst:37 +msgid "" +"Throttling method is completely removed, now you can use middlewares to " +"control the execution context and use any throttling mechanism you want." +msgstr "" + +#: ../../migration_2_to_3.rst:39 +msgid "" +"Removed global context variables from the API types, Bot and Dispatcher " +"object, from now if you want to get current bot instance inside handlers " +"or filters you should accept the argument :code:`bot: Bot` and use it " +"instead of :code:`Bot.get_current()` Inside middlewares it can be " +"accessed via :code:`data[\"bot\"]`." +msgstr "" + +#: ../../migration_2_to_3.rst:46 +msgid "Filtering events" +msgstr "" + +#: ../../migration_2_to_3.rst:48 +msgid "" +"Keyword filters can no more be used, use filters explicitly. (`Read more " +"» `_)" +msgstr "" + +#: ../../migration_2_to_3.rst:49 +msgid "" +"In due to keyword filters was removed all enabled by default filters " +"(state and content_type now is not enabled), so you should specify them " +"explicitly if you want to use. For example instead of using " +":code:`@dp.message_handler(content_types=ContentType.PHOTO)` you should " +"use :code:`@router.message(F.photo)`" +msgstr "" + +#: ../../migration_2_to_3.rst:53 +msgid "" +"Most of common filters is replaced by \"magic filter\". (:ref:`Read more " +"» `)" +msgstr "" + +#: ../../migration_2_to_3.rst:54 +msgid "" +"Now by default message handler receives any content type, if you want " +"specific one just add the filters (Magic or any other)" +msgstr "" + +#: ../../migration_2_to_3.rst:56 +msgid "" +"State filter now is not enabled by default, that's mean if you using " +":code:`state=\"*\"` in v2 then you should not pass any state filter in " +"v3, and vice versa, if the state in v2 is not specified now you should " +"specify the state." +msgstr "" + +#: ../../migration_2_to_3.rst:59 +msgid "" +"Added possibility to register per-router global filters, that helps to " +"reduces the number of repetitions in the code and makes easily way to " +"control for what each router will be used." +msgstr "" + +#: ../../migration_2_to_3.rst:65 +msgid "Bot API" +msgstr "" + +#: ../../migration_2_to_3.rst:67 +msgid "" +"Now all API methods is classes with validation (via `pydantic " +"`_) (all API calls is also available as " +"methods in the Bot class)." +msgstr "" + +#: ../../migration_2_to_3.rst:69 +msgid "" +"Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " +"For example chat type enum now is :class:`aiogram.enums.ChatType` instead" +" of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:72 +msgid "" +"Separated HTTP client session into container that can be reused between " +"different Bot instances in the application." +msgstr "" + +#: ../../migration_2_to_3.rst:74 +msgid "" +"API Exceptions is no more classified by specific message in due to " +"Telegram has no documented error codes. But all errors is classified by " +"HTTP status code and for each method only one case can be caused with the" +" same code, so in most cases you should check that only error type (by " +"status-code) without checking error message. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:81 +msgid "Middlewares" +msgstr "" + +#: ../../migration_2_to_3.rst:83 +msgid "" +"Middlewares can now control a execution context, e.g. using context " +"managers (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:84 +msgid "" +"All contextual data now is shared between middlewares, filters and " +"handlers to end-to-end use. For example now you can easily pass some data" +" into context inside middleware and get it in the filters layer as the " +"same way as in the handlers via keyword arguments." +msgstr "" + +#: ../../migration_2_to_3.rst:87 +msgid "" +"Added mechanism named **flags**, that helps to customize handler behavior" +" in conjunction with middlewares. (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:92 +msgid "Keyboard Markup" +msgstr "" + +#: ../../migration_2_to_3.rst:94 +msgid "" +"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " +"and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " +"no methods to extend it, instead you have to use markup builders " +":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " +":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " +"more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:102 +msgid "Callbacks data" +msgstr "" + +#: ../../migration_2_to_3.rst:104 +msgid "" +"Callback data factory now is strictly typed via `pydantic " +"`_ models (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:109 +msgid "Finite State machine" +msgstr "" + +#: ../../migration_2_to_3.rst:111 +msgid "" +"State filter will no more added to all handlers, you will need to specify" +" state if you want" +msgstr "" + +#: ../../migration_2_to_3.rst:112 +msgid "" +"Added possibility to change FSM strategy, for example if you want to " +"control state for each user in chat topics instead of user in chat you " +"can specify it in the Dispatcher." +msgstr "" + +#: ../../migration_2_to_3.rst:117 +msgid "Sending Files" +msgstr "" + +#: ../../migration_2_to_3.rst:119 +msgid "" +"From now you should wrap sending files into InputFile object before send " +"instead of passing IO object directly to the API method. (:ref:`Read more" +" » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:124 +msgid "Webhook" +msgstr "" + +#: ../../migration_2_to_3.rst:126 +msgid "Simplified aiohttp web app configuration" +msgstr "" + +#: ../../migration_2_to_3.rst:127 +msgid "" +"By default added possibility to upload files when you use reply into " +"webhook" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po b/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po index 512202ee..64df9149 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po @@ -5,17 +5,16 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: 2022-10-13 21:22+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../utils/chat_action.rst:3 msgid "Chat action sender" @@ -27,13 +26,13 @@ msgstr "Відправник" #: aiogram.utils.chat_action.ChatActionSender:1 of msgid "" -"This utility helps to automatically send chat action until long actions is " -"done to take acknowledge bot users the bot is doing something and not " +"This utility helps to automatically send chat action until long actions " +"is done to take acknowledge bot users the bot is doing something and not " "crashed." msgstr "" -"Ця утиліта допомагає автоматично надсилати дії чату, допоки виконуються тривалі дії боттом," -"щоб повідомити користувачів бота про те що бот щось робить і не " -"завершив роботу аварійно." +"Ця утиліта допомагає автоматично надсилати дії чату, допоки виконуються " +"тривалі дії боттом,щоб повідомити користувачів бота про те що бот щось " +"робить і не завершив роботу аварійно." #: aiogram.utils.chat_action.ChatActionSender:4 of msgid "Provides simply to use context manager." @@ -42,37 +41,37 @@ msgstr "Надає простий для використання контекс #: aiogram.utils.chat_action.ChatActionSender:6 of msgid "" "Technically sender start background task with infinity loop which works " -"until action will be finished and sends the `chat action `_ every 5 seconds." +"until action will be finished and sends the `chat action " +"`_ every 5 seconds." msgstr "" "Технічно, відправник запускає фонову завдачу з нескінченним циклом, який " -"працює до завершення дії та надсилає `дію чату `_ кожні 5 секунд." +"працює до завершення дії та надсилає `дію чату " +"`_ кожні 5 секунд." #: aiogram.utils.chat_action.ChatActionSender.__init__ of msgid "Parameters" msgstr "Параметри" #: aiogram.utils.chat_action.ChatActionSender.__init__:1 of +msgid "instance of the bot" +msgstr "" + +#: aiogram.utils.chat_action.ChatActionSender.__init__:2 of msgid "target chat id" msgstr "ідентифікатор цільового чату" -#: aiogram.utils.chat_action.ChatActionSender.__init__:2 of +#: aiogram.utils.chat_action.ChatActionSender.__init__:3 of msgid "chat action type" msgstr "тип дії" -#: aiogram.utils.chat_action.ChatActionSender.__init__:3 of +#: aiogram.utils.chat_action.ChatActionSender.__init__:4 of msgid "interval between iterations" msgstr "інтервал між ітераціями" -#: aiogram.utils.chat_action.ChatActionSender.__init__:4 of +#: aiogram.utils.chat_action.ChatActionSender.__init__:5 of msgid "sleep before first iteration" msgstr "затримка перед першою ітерацією" -#: aiogram.utils.chat_action.ChatActionSender.__init__:5 of -msgid "instance of the bot, can be omitted from the context" -msgstr "екземпляр бота, необов'язковий параметр" - #: aiogram.utils.chat_action.ChatActionSender.choose_sticker:1 of msgid "Create instance of the sender with `choose_sticker` action" msgstr "Створення екземпляру відправника з дією `choose_sticker` " @@ -137,8 +136,8 @@ msgstr "Перед використанням слід зареєструват #: ../../utils/chat_action.rst:37 msgid "" -"After this action all handlers which works longer than `initial_sleep` will " -"produce the '`typing`' chat action." +"After this action all handlers which works longer than `initial_sleep` " +"will produce the '`typing`' chat action." msgstr "" "Після цього всі обробники, що працюють довше за `initial_sleep`, " "виконуватимуть дію '`typing`' чату" @@ -156,3 +155,6 @@ msgstr "Зміна лише типу дії:" #: ../../utils/chat_action.rst:50 msgid "Change sender configuration:" msgstr "Зміна конфігурації відправника:" + +#~ msgid "instance of the bot, can be omitted from the context" +#~ msgstr "екземпляр бота, необов'язковий параметр" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po index 49966ca8..bb92b9f9 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -96,6 +96,10 @@ msgstr "" msgid "ending of the line, by default is :code:`\\\\n`" msgstr "" +#: aiogram.utils.formatting.as_line:5 of +msgid "separator between items, by default is empty string" +msgstr "" + #: aiogram.utils.formatting.Text.as_kwargs aiogram.utils.formatting.Text.render #: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line #: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list @@ -106,7 +110,7 @@ msgstr "" msgid "Returns" msgstr "" -#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:5 +#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:6 #: aiogram.utils.formatting.as_marked_list:5 #: aiogram.utils.formatting.as_numbered_list:6 #: aiogram.utils.formatting.as_section:5 of @@ -122,7 +126,7 @@ msgid "Wrap elements as marked list" msgstr "" #: aiogram.utils.formatting.as_marked_list:4 of -msgid "line marker, by default is :code:`- `" +msgid "line marker, by default is '- '" msgstr "" #: aiogram.utils.formatting.as_numbered_list:1 of @@ -134,7 +138,7 @@ msgid "initial number, by default 1" msgstr "" #: aiogram.utils.formatting.as_numbered_list:5 of -msgid "number format, by default :code:`{}. `" +msgid "number format, by default '{}. '" msgstr "" #: aiogram.utils.formatting.as_section:1 of @@ -437,3 +441,9 @@ msgid "" "with type " ":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" msgstr "" + +#~ msgid "line marker, by default is :code:`- `" +#~ msgstr "" + +#~ msgid "number format, by default :code:`{}. `" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/web_app.po b/docs/locale/uk_UA/LC_MESSAGES/utils/web_app.po index acfe426f..fa34c791 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/web_app.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/web_app.po @@ -5,17 +5,16 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-07-30 18:31+0300\n" "PO-Revision-Date: 2022-10-13 22:18+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../utils/web_app.rst:3 msgid "WebApp" @@ -23,29 +22,30 @@ msgstr "Веб Застосунок (WebApp)" #: ../../utils/web_app.rst:5 msgid "" -"Telegram Bot API 6.0 announces a revolution in the development of chatbots " -"using WebApp feature." +"Telegram Bot API 6.0 announces a revolution in the development of " +"chatbots using WebApp feature." msgstr "" "Telegram Bot API 6.0 зробив революцію у розробці чат-ботів, " "використовуючи особливості Веб Застосунків" #: ../../utils/web_app.rst:7 msgid "" -"You can read more details on it in the official `blog `_ and `documentation `_." +"You can read more details on it in the official `blog " +"`_ and " +"`documentation `_." msgstr "" -"Ви можете прочитати більше про це в офіційному `блозі `_ та `документації `_." +"Ви можете прочитати більше про це в офіційному `блозі " +"`_ та " +"`документації `_." #: ../../utils/web_app.rst:10 msgid "" "`aiogram` implements simple utils to remove headache with the data " "validation from Telegram WebApp on the backend side." msgstr "" -"`aiogram` реалізує прості утиліти для усунення головного болю, надаючи готові інструменти " -"перевірки даних із Веб Застосунку Telegram на серверній стороні." +"`aiogram` реалізує прості утиліти для усунення головного болю, надаючи " +"готові інструменти перевірки даних із Веб Застосунку Telegram на " +"серверній стороні." #: ../../utils/web_app.rst:13 msgid "Usage" @@ -58,8 +58,9 @@ msgid "" "return User info inside response as :code:`application/json`" msgstr "" "Наприклад, із фронтенду ви передасте :code:`application/x-www-form-" -"urlencoded` в POST запиті із полем :code:`_auth` у тілі та хочете повернути " -"інформацію про користувача у відповідь як :code:`application/json`" +"urlencoded` в POST запиті із полем :code:`_auth` у тілі та хочете " +"повернути інформацію про користувача у відповідь як " +":code:`application/json`" #: ../../utils/web_app.rst:35 msgid "Functions" @@ -118,8 +119,8 @@ msgstr "дані з frontend для аналізу" #: aiogram.utils.web_app.safe_parse_webapp_init_data:1 of msgid "Validate raw WebApp init data and return it as WebAppInitData object" msgstr "" -"Перевірка необроблених даних ініціалізації Веб Застосунку і повернення їх " -"як об’єкту WebAppInitData" +"Перевірка необроблених даних ініціалізації Веб Застосунку і повернення їх" +" як об’єкту WebAppInitData" #: aiogram.utils.web_app.safe_parse_webapp_init_data:3 of msgid "Raise :obj:`ValueError` when data is invalid" @@ -146,17 +147,36 @@ msgstr "" "відкриття. Він порожній, якщо Веб Застосунок було запущено за допомогою " "кнопки клавіатури." -#: aiogram.utils.web_app.WebAppInitData:3 of +#: aiogram.utils.web_app.WebAppInitData:4 of msgid "Source: https://core.telegram.org/bots/webapps#webappinitdata" msgstr "Джерело: https://core.telegram.org/bots/webapps#webappinitdata" #: ../../docstring aiogram.utils.web_app.WebAppInitData.query_id:1 of msgid "" -"A unique identifier for the Web App session, required for sending messages " -"via the answerWebAppQuery method." +"A unique identifier for the Web App session, required for sending " +"messages via the answerWebAppQuery method." +msgstr "" +"Унікальний ідентифікатор сеансу Веб Застосунку, необхідний для надсилання" +" повідомлень через метод answerWebAppQuery." + +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_config:1 +#: aiogram.utils.web_app.WebAppUser.model_config:1 of +msgid "" +"Configuration for the model, should be a dictionary conforming to " +"[`ConfigDict`][pydantic.config.ConfigDict]." +msgstr "" + +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:1 +#: aiogram.utils.web_app.WebAppUser.model_fields:1 of +msgid "" +"Metadata about the fields defined on the model, mapping of field names to" +" [`FieldInfo`][pydantic.fields.FieldInfo]." +msgstr "" + +#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:4 +#: aiogram.utils.web_app.WebAppUser.model_fields:4 of +msgid "This replaces `Model.__fields__` from Pydantic V1." msgstr "" -"Унікальний ідентифікатор сеансу Веб Застосунку, необхідний для надсилання " -"повідомлень через метод answerWebAppQuery." #: ../../docstring aiogram.utils.web_app.WebAppInitData.user:1 of msgid "An object containing data about the current user." @@ -165,26 +185,26 @@ msgstr "Об'єкт, що містить дані про поточного ко #: ../../docstring aiogram.utils.web_app.WebAppInitData.receiver:1 of msgid "" "An object containing data about the chat partner of the current user in " -"the chat where the bot was launched via the attachment menu. Returned only " -"for Web Apps launched via the attachment menu." +"the chat where the bot was launched via the attachment menu. Returned " +"only for Web Apps launched via the attachment menu." msgstr "" -"Об’єкт, що містить дані про чат-партнера поточного користувача в чаті, де " -"бот був запущений через меню вкладень. Повертається лише для Веб " +"Об’єкт, що містить дані про чат-партнера поточного користувача в чаті, де" +" бот був запущений через меню вкладень. Повертається лише для Веб " "Застосунків, запущених через меню вкладень." #: ../../docstring aiogram.utils.web_app.WebAppInitData.start_param:1 of msgid "" -"The value of the startattach parameter, passed via link. Only returned for " -"Web Apps when launched from the attachment menu via link. The value of the " -"start_param parameter will also be passed in the GET-parameter " +"The value of the startattach parameter, passed via link. Only returned " +"for Web Apps when launched from the attachment menu via link. The value " +"of the start_param parameter will also be passed in the GET-parameter " "tgWebAppStartParam, so the Web App can load the correct interface right " "away." msgstr "" "Значення параметра startattach, передане через посилання. Повертається " "лише для Веб Застосунків, коли їх запускають із меню вкладень за " -"посиланням. Значення параметра start_param також буде передано в GET-" -"параметр tgWebAppStartParam, тому Веб Застосунок може відразу завантажити " -"правильний інтерфейс." +"посиланням. Значення параметра start_param також буде передано в " +"GET-параметр tgWebAppStartParam, тому Веб Застосунок може відразу " +"завантажити правильний інтерфейс." #: ../../docstring aiogram.utils.web_app.WebAppInitData.auth_date:1 of msgid "Unix time when the form was opened." @@ -208,17 +228,17 @@ msgstr "Джерело: https://core.telegram.org/bots/webapps#webappuser" #: ../../docstring aiogram.utils.web_app.WebAppUser.id:1 of msgid "" -"A unique identifier for the user or bot. This number may have more than 32 " -"significant bits and some programming languages may have difficulty/silent " -"defects in interpreting it. It has at most 52 significant bits, so a 64-" -"bit integer or a double-precision float type is safe for storing this " -"identifier." +"A unique identifier for the user or bot. This number may have more than " +"32 significant bits and some programming languages may have " +"difficulty/silent defects in interpreting it. It has at most 52 " +"significant bits, so a 64-bit integer or a double-precision float type is" +" safe for storing this identifier." msgstr "" "Унікальний ідентифікатор користувача або бота. Це число може мати більше " -"32 значущих бітів, і деякі мови програмування можуть мати труднощі/" -"мовчазні дефекти в його інтерпретації. Він має щонайбільше 52 значущі " -"біти, тому 64-бітне ціле число або тип з плаваючою точністю подвійної " -"точності є безпечним для зберігання цього ідентифікатора." +"32 значущих бітів, і деякі мови програмування можуть мати " +"труднощі/мовчазні дефекти в його інтерпретації. Він має щонайбільше 52 " +"значущі біти, тому 64-бітне ціле число або тип з плаваючою точністю " +"подвійної точності є безпечним для зберігання цього ідентифікатора." #: ../../docstring aiogram.utils.web_app.WebAppUser.is_bot:1 of msgid "True, if this user is a bot. Returns in the receiver field only." @@ -238,8 +258,7 @@ msgstr "Нік користувача або бота." #: ../../docstring aiogram.utils.web_app.WebAppUser.language_code:1 of msgid "IETF language tag of the user's language. Returns in user field only." -msgstr "" -"Мовний тег IETF мови користувача. Повертаєтся лише в полі користувача." +msgstr "Мовний тег IETF мови користувача. Повертаєтся лише в полі користувача." #: ../../docstring aiogram.utils.web_app.WebAppUser.photo_url:1 of msgid "" @@ -247,5 +266,5 @@ msgid "" "formats. Only returned for Web Apps launched from the attachment menu." msgstr "" "URL-адреса фотографії профілю користувача. Фотографія може бути у " -"форматах .jpeg або .svg. Повертається лише для Веб Застосунків, запущених " -"із меню вкладень." +"форматах .jpeg або .svg. Повертається лише для Веб Застосунків, запущених" +" із меню вкладень." From 2691b2ac963e3a8f659907a3a71a31e3d0e0022e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 18:35:38 +0300 Subject: [PATCH 044/139] Small texts update --- .../LC_MESSAGES/dispatcher/filters/text.po | 130 ------------------ .../uk_UA/LC_MESSAGES/utils/chat_action.po | 5 +- 2 files changed, 1 insertion(+), 134 deletions(-) delete mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po deleted file mode 100644 index b5b6c91d..00000000 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po +++ /dev/null @@ -1,130 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:01+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/filters/text.rst:3 -msgid "Text" -msgstr "" - -#: aiogram.filters.text.Text:1 of -msgid "" -"Is useful for filtering text :class:`aiogram.types.message.Message`, any " -":class:`aiogram.types.callback_query.CallbackQuery` with `data`, " -":class:`aiogram.types.inline_query.InlineQuery` or " -":class:`aiogram.types.poll.Poll` question." -msgstr "" - -#: aiogram.filters.text.Text:7 of -msgid "" -"Only one of `text`, `contains`, `startswith` or `endswith` argument can " -"be used at once. Any of that arguments can be string, list, set or tuple " -"of strings." -msgstr "" - -#: aiogram.filters.text.Text:12 of -msgid "" -"use :ref:`magic-filter `. For example do :pycode:`F.text " -"== \"text\"` instead" -msgstr "" - -#: ../../dispatcher/filters/text.rst:10 -msgid "Can be imported:" -msgstr "" - -#: ../../dispatcher/filters/text.rst:12 -msgid ":code:`from aiogram.filters.text import Text`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:13 -msgid ":code:`from aiogram.filters import Text`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:16 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/text.rst:18 -msgid "" -"Text equals with the specified value: :code:`Text(text=\"text\") # value" -" == 'text'`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:19 -msgid "" -"Text starts with the specified value: :code:`Text(startswith=\"text\") #" -" value.startswith('text')`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:20 -msgid "" -"Text ends with the specified value: :code:`Text(endswith=\"text\") # " -"value.endswith('text')`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:21 -msgid "" -"Text contains the specified value: :code:`Text(contains=\"text\") # " -"value in 'text'`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:22 -msgid "" -"Any of previous listed filters can be list, set or tuple of strings " -"that's mean any of listed value should be " -"equals/startswith/endswith/contains: :code:`Text(text=[\"text\", " -"\"spam\"])`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:23 -msgid "" -"Ignore case can be combined with any previous listed filter: " -":code:`Text(text=\"Text\", ignore_case=True) # value.lower() == " -"'text'.lower()`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:26 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/text.rst:28 -msgid "Allowed update types for this filter:" -msgstr "" - -#: ../../dispatcher/filters/text.rst:30 -msgid ":code:`message`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:31 -msgid ":code:`edited_message`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:32 -msgid ":code:`channel_post`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:33 -msgid ":code:`edited_channel_post`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:34 -msgid ":code:`inline_query`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:35 -msgid ":code:`callback_query`" -msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po b/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po index 64df9149..46ab594b 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/chat_action.po @@ -54,7 +54,7 @@ msgstr "Параметри" #: aiogram.utils.chat_action.ChatActionSender.__init__:1 of msgid "instance of the bot" -msgstr "" +msgstr "екземпляр бота, необов'язковий параметр" #: aiogram.utils.chat_action.ChatActionSender.__init__:2 of msgid "target chat id" @@ -155,6 +155,3 @@ msgstr "Зміна лише типу дії:" #: ../../utils/chat_action.rst:50 msgid "Change sender configuration:" msgstr "Зміна конфігурації відправника:" - -#~ msgid "instance of the bot, can be omitted from the context" -#~ msgstr "екземпляр бота, необов'язковий параметр" From 53e5abbdee71f5b9fb85996065282cd77e2ca021 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 30 Jul 2023 20:51:29 +0300 Subject: [PATCH 045/139] Bump changelog --- CHANGES.rst | 43 ++++++++++++++++++++++++++++++++++++++++ CHANGES/1143.doc.rst | 1 - CHANGES/1230.removal.rst | 2 -- CHANGES/1232.bugfix.rst | 1 - CHANGES/1233.bugfix.rst | 4 ---- CHANGES/1234.feature.rst | 2 -- CHANGES/1235.feature.rst | 2 -- 7 files changed, 43 insertions(+), 12 deletions(-) delete mode 100644 CHANGES/1143.doc.rst delete mode 100644 CHANGES/1230.removal.rst delete mode 100644 CHANGES/1232.bugfix.rst delete mode 100644 CHANGES/1233.bugfix.rst delete mode 100644 CHANGES/1234.feature.rst delete mode 100644 CHANGES/1235.feature.rst diff --git a/CHANGES.rst b/CHANGES.rst index a778b4b5..e2e6d782 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,49 @@ Changelog .. towncrier release notes start + +3.0.0b9 (2023-07-30) +===================== + +Features +-------- + +- Added new shortcuts for :class:`aiogram.types.chat_member_updated.ChatMemberUpdated` + to send message to chat that member joined/left. + `#1234 `_ +- Added new shortcuts for :class:`aiogram.types.chat_join_request.ChatJoinRequest` + to make easier access to sending messages to users who wants to join to chat. + `#1235 `_ + + +Bugfixes +-------- + +- Fixed bot assignment in the :code:`Message.send_copy` shortcut + `#1232 `_ +- Added model validation to remove UNSET before field validation. + This change was necessary to correctly handle parse_mode where 'UNSET' is used as a sentinel value. + Without the removal of 'UNSET', it would create issues when passed to model initialization from Bot.method_name. + 'UNSET' was also added to typing. + `#1233 `_ +- Updated pydantic to 2.1 with few bugfixes + + +Improved Documentation +---------------------- + +- Improved docs, added basic migration guide (will be expanded later) + `#1143 `_ + + +Deprecations and Removals +------------------------- + +- Removed the use of the context instance (Bot.get_current) from all placements that were used previously. + This is to avoid the use of the context instance in the wrong place. + `#1230 `_ + + 3.0.0b8 (2023-07-17) ===================== diff --git a/CHANGES/1143.doc.rst b/CHANGES/1143.doc.rst deleted file mode 100644 index 5c4fea5b..00000000 --- a/CHANGES/1143.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Improved docs, added basic migration guide (will be expanded later) diff --git a/CHANGES/1230.removal.rst b/CHANGES/1230.removal.rst deleted file mode 100644 index bc1bc5b8..00000000 --- a/CHANGES/1230.removal.rst +++ /dev/null @@ -1,2 +0,0 @@ -Removed the use of the context instance (Bot.get_current) from all placements that were used previously. -This is to avoid the use of the context instance in the wrong place. diff --git a/CHANGES/1232.bugfix.rst b/CHANGES/1232.bugfix.rst deleted file mode 100644 index ad5957c2..00000000 --- a/CHANGES/1232.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed bot assignment in the :code:`Message.send_copy` shortcut diff --git a/CHANGES/1233.bugfix.rst b/CHANGES/1233.bugfix.rst deleted file mode 100644 index 17aa8fbc..00000000 --- a/CHANGES/1233.bugfix.rst +++ /dev/null @@ -1,4 +0,0 @@ -Added model validation to remove UNSET before field validation. -This change was necessary to correctly handle parse_mode where 'UNSET' is used as a sentinel value. -Without the removal of 'UNSET', it would create issues when passed to model initialization from Bot.method_name. -'UNSET' was also added to typing. diff --git a/CHANGES/1234.feature.rst b/CHANGES/1234.feature.rst deleted file mode 100644 index fe68e765..00000000 --- a/CHANGES/1234.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added new shortcuts for :class:`aiogram.types.chat_member_updated.ChatMemberUpdated` -to send message to chat that member joined/left. diff --git a/CHANGES/1235.feature.rst b/CHANGES/1235.feature.rst deleted file mode 100644 index 98cce77f..00000000 --- a/CHANGES/1235.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -Added new shortcuts for :class:`aiogram.types.chat_join_request.ChatJoinRequest` -to make easier access to sending messages to users who wants to join to chat. From c7b7714959841a126157afad239abfcb2346de52 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 2 Aug 2023 21:32:15 +0300 Subject: [PATCH 046/139] Bump version --- aiogram/__meta__.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index f2a9528b..ca7a61cc 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.0b9" +__version__ = "3.0.0rc1" __api_version__ = "6.7" diff --git a/pyproject.toml b/pyproject.toml index d4471685..a50e9449 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ keywords = [ ] classifiers = [ "License :: OSI Approved :: MIT License", - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Environment :: Console", "Framework :: AsyncIO", "Typing :: Typed", From a7916c11031b216a145fdc4a9766c228a162a6d7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 2 Aug 2023 21:41:07 +0300 Subject: [PATCH 047/139] Reworked InputFile sending (#1238) * Reworked InputFile sending * Added changelog --- CHANGES/1238.misc.rst | 3 +++ aiogram/client/session/aiohttp.py | 7 +++++- aiogram/types/input_file.py | 23 ++++++++----------- aiogram/webhook/aiohttp_server.py | 2 +- .../test_session/test_aiohttp_session.py | 4 ++-- .../test_types/test_chat_join_request.py | 6 +---- tests/test_api/test_types/test_input_file.py | 21 ++++++++--------- 7 files changed, 32 insertions(+), 34 deletions(-) create mode 100644 CHANGES/1238.misc.rst diff --git a/CHANGES/1238.misc.rst b/CHANGES/1238.misc.rst new file mode 100644 index 00000000..4f62cae1 --- /dev/null +++ b/CHANGES/1238.misc.rst @@ -0,0 +1,3 @@ +Reworked InputFile reading, removed :code:`__aiter__` method, added `bot: Bot` argument to +the :code:`.read(...)` method, so, from now URLInputFile can be used without specifying +bot instance. diff --git a/aiogram/client/session/aiohttp.py b/aiogram/client/session/aiohttp.py index 79e2fa4f..19a8edbd 100644 --- a/aiogram/client/session/aiohttp.py +++ b/aiogram/client/session/aiohttp.py @@ -6,6 +6,7 @@ from typing import ( TYPE_CHECKING, Any, AsyncGenerator, + AsyncIterator, Dict, Iterable, List, @@ -147,7 +148,11 @@ class AiohttpSession(BaseSession): continue form.add_field(key, value) for key, value in files.items(): - form.add_field(key, value, filename=value.filename or key) + form.add_field( + key, + value.read(bot), + filename=value.filename or key, + ) return form async def make_request( diff --git a/aiogram/types/input_file.py b/aiogram/types/input_file.py index ed0a2433..7ad8bee3 100644 --- a/aiogram/types/input_file.py +++ b/aiogram/types/input_file.py @@ -41,13 +41,9 @@ class InputFile(ABC): self.chunk_size = chunk_size @abstractmethod - async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: # pragma: no cover + async def read(self, bot: "Bot") -> AsyncGenerator[bytes, None]: # pragma: no cover yield b"" - async def __aiter__(self) -> AsyncIterator[bytes]: - async for chunk in self.read(self.chunk_size): - yield chunk - class BufferedInputFile(InputFile): def __init__(self, file: bytes, filename: str, chunk_size: int = DEFAULT_CHUNK_SIZE): @@ -84,9 +80,9 @@ class BufferedInputFile(InputFile): data = f.read() return cls(data, filename=filename, chunk_size=chunk_size) - async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: + async def read(self, bot: "Bot") -> AsyncGenerator[bytes, None]: buffer = io.BytesIO(self.data) - while chunk := buffer.read(chunk_size): + while chunk := buffer.read(self.chunk_size): yield chunk @@ -111,9 +107,9 @@ class FSInputFile(InputFile): self.path = path - async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: + async def read(self, bot: "Bot") -> AsyncGenerator[bytes, None]: async with aiofiles.open(self.path, "rb") as f: - while chunk := await f.read(chunk_size): + while chunk := await f.read(self.chunk_size): yield chunk @@ -121,11 +117,11 @@ class URLInputFile(InputFile): def __init__( self, url: str, - bot: "Bot", headers: Optional[Dict[str, Any]] = None, filename: Optional[str] = None, chunk_size: int = DEFAULT_CHUNK_SIZE, timeout: int = 30, + bot: Optional["Bot"] = None, ): """ Represents object for streaming files from internet @@ -136,7 +132,7 @@ class URLInputFile(InputFile): :param chunk_size: Uploading chunk size :param timeout: Timeout for downloading :param bot: Bot instance to use HTTP session from. - If not specified, will be used current bot from context. + If not specified, will be used current bot """ super().__init__(filename=filename, chunk_size=chunk_size) if headers is None: @@ -147,8 +143,9 @@ class URLInputFile(InputFile): self.timeout = timeout self.bot = bot - async def read(self, chunk_size: int) -> AsyncGenerator[bytes, None]: - stream = self.bot.session.stream_content( + async def read(self, bot: "Bot") -> AsyncGenerator[bytes, None]: + bot = self.bot or bot + stream = bot.session.stream_content( url=self.url, headers=self.headers, timeout=self.timeout, diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index f623484f..af1c3c56 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -170,7 +170,7 @@ class BaseRequestHandler(ABC): payload.set_content_disposition("form-data", name=key) for key, value in files.items(): - payload = writer.append(value) + payload = writer.append(value.read(bot)) payload.set_content_disposition( "form-data", name=key, diff --git a/tests/test_api/test_client/test_session/test_aiohttp_session.py b/tests/test_api/test_client/test_session/test_aiohttp_session.py index fd7cabfd..d79eb875 100644 --- a/tests/test_api/test_client/test_session/test_aiohttp_session.py +++ b/tests/test_api/test_client/test_session/test_aiohttp_session.py @@ -1,5 +1,5 @@ import asyncio -from typing import Any, AsyncContextManager, AsyncGenerator, Dict, List +from typing import Any, AsyncContextManager, AsyncGenerator, AsyncIterable, Dict, List from unittest.mock import AsyncMock, patch import aiohttp_socks @@ -156,7 +156,7 @@ class TestAiohttpSession: assert fields[1][2].startswith("attach://") assert fields[2][0]["name"] == fields[1][2][9:] assert fields[2][0]["filename"] == "file.txt" - assert isinstance(fields[2][2], BareInputFile) + assert isinstance(fields[2][2], AsyncIterable) async def test_make_request(self, bot: MockedBot, aresponses: ResponsesMockServer): aresponses.add( diff --git a/tests/test_api/test_types/test_chat_join_request.py b/tests/test_api/test_types/test_chat_join_request.py index a36dd935..ec442cb1 100644 --- a/tests/test_api/test_types/test_chat_join_request.py +++ b/tests/test_api/test_types/test_chat_join_request.py @@ -24,11 +24,7 @@ from aiogram.methods import ( SendVideoNote, SendVoice, ) -from aiogram.types import ( - Chat, - ChatJoinRequest, - User, -) +from aiogram.types import Chat, ChatJoinRequest, User class TestChatJoinRequest: diff --git a/tests/test_api/test_types/test_input_file.py b/tests/test_api/test_types/test_input_file.py index 81e80ad5..28daa92c 100644 --- a/tests/test_api/test_types/test_input_file.py +++ b/tests/test_api/test_types/test_input_file.py @@ -12,19 +12,18 @@ class TestInputFile: file = FSInputFile(__file__) assert isinstance(file, InputFile) - assert isinstance(file, AsyncIterable) assert file.filename is not None assert file.filename.startswith("test_") assert file.filename.endswith(".py") assert file.chunk_size > 0 - async def test_fs_input_file_readable(self): + async def test_fs_input_file_readable(self, bot: MockedBot): file = FSInputFile(__file__, chunk_size=1) assert file.chunk_size == 1 size = 0 - async for chunk in file: + async for chunk in file.read(bot): chunk_size = len(chunk) assert chunk_size == 1 size += chunk_size @@ -34,15 +33,14 @@ class TestInputFile: file = BufferedInputFile(b"\f" * 10, filename="file.bin") assert isinstance(file, InputFile) - assert isinstance(file, AsyncIterable) assert file.filename == "file.bin" assert isinstance(file.data, bytes) - async def test_buffered_input_file_readable(self): + async def test_buffered_input_file_readable(self, bot: MockedBot): file = BufferedInputFile(b"\f" * 10, filename="file.bin", chunk_size=1) size = 0 - async for chunk in file: + async for chunk in file.read(bot): chunk_size = len(chunk) assert chunk_size == 1 size += chunk_size @@ -52,32 +50,31 @@ class TestInputFile: file = BufferedInputFile.from_file(__file__, chunk_size=10) assert isinstance(file, InputFile) - assert isinstance(file, AsyncIterable) assert file.filename is not None assert file.filename.startswith("test_") assert file.filename.endswith(".py") assert isinstance(file.data, bytes) assert file.chunk_size == 10 - async def test_buffered_input_file_from_file_readable(self): + async def test_buffered_input_file_from_file_readable(self, bot: MockedBot): file = BufferedInputFile.from_file(__file__, chunk_size=1) size = 0 - async for chunk in file: + async for chunk in file.read(bot): chunk_size = len(chunk) assert chunk_size == 1 size += chunk_size assert size > 0 - async def test_uri_input_file(self, aresponses: ResponsesMockServer): + async def test_url_input_file(self, aresponses: ResponsesMockServer): aresponses.add( aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) ) bot = Bot(token="42:TEST") - file = URLInputFile("https://test.org/", bot, chunk_size=1) + file = URLInputFile("https://test.org/", chunk_size=1) size = 0 - async for chunk in file: + async for chunk in file.read(bot): assert chunk == b"\f" chunk_size = len(chunk) assert chunk_size == 1 From d3bec413dbdef6ddbd0415de3cc6f630831803d6 Mon Sep 17 00:00:00 2001 From: Yarik Date: Wed, 2 Aug 2023 21:44:49 +0300 Subject: [PATCH 048/139] Add currency enum (#1194) * Add currency enum * Add change log * Add butcher file * Apply enum --- .butcher/enums/Currency.yml | 93 +++++++++++++++++++++++++++++++++++ CHANGES/1194.feature.rst | 12 +++++ aiogram/enums/__init__.py | 2 + aiogram/enums/currency.py | 96 +++++++++++++++++++++++++++++++++++++ docs/api/enums/currency.rst | 9 ++++ docs/api/enums/index.rst | 1 + 6 files changed, 213 insertions(+) create mode 100644 .butcher/enums/Currency.yml create mode 100644 CHANGES/1194.feature.rst create mode 100644 aiogram/enums/currency.py create mode 100644 docs/api/enums/currency.rst diff --git a/.butcher/enums/Currency.yml b/.butcher/enums/Currency.yml new file mode 100644 index 00000000..92045813 --- /dev/null +++ b/.butcher/enums/Currency.yml @@ -0,0 +1,93 @@ +name: Currency +description: | + Currencies supported by Telegram Bot API + + Source: https://core.telegram.org/bots/payments#supported-currencies + +static: + AED: "AED" # United Arab Emirates Dirham + AFN: "AFN" # Afghan Afghani + ALL: "ALL" # Albanian Lek + AMD: "AMD" # Armenian Dram + ARS: "ARS" # Argentine Peso + AUD: "AUD" # Australian Dollar + AZN: "AZN" # Azerbaijani Manat + BAM: "BAM" # Bosnia & Herzegovina Convertible Mark + BDT: "BDT" # Bangladeshi Taka + BGN: "BGN" # Bulgarian Lev + BND: "BND" # Brunei Dollar + BOB: "BOB" # Bolivian Boliviano + BRL: "BRL" # Brazilian Real + BYN: "BYN" # Belarusian ruble + CAD: "CAD" # Canadian Dollar + CHF: "CHF" # Swiss Franc + CLP: "CLP" # Chilean Peso + CNY: "CNY" # Chinese Renminbi Yuan + COP: "COP" # Colombian Peso + CRC: "CRC" # Costa Rican Colón + CZK: "CZK" # Czech Koruna + DKK: "DKK" # Danish Krone + DOP: "DOP" # Dominican Peso + DZD: "DZD" # Algerian Dinar + EGP: "EGP" # Egyptian Pound + ETB: "ETB" # Ethiopian Birr + EUR: "EUR" # Euro + GBP: "GBP" # British Pound + GEL: "GEL" # Georgian Lari + GTQ: "GTQ" # Guatemalan Quetzal + HKD: "HKD" # Hong Kong Dollar + HNL: "HNL" # Honduran Lempira + HRK: "HRK" # Croatian Kuna + HUF: "HUF" # Hungarian Forint + IDR: "IDR" # Indonesian Rupiah + ILS: "ILS" # Israeli New Sheqel + INR: "INR" # Indian Rupee + ISK: "ISK" # Icelandic Króna + JMD: "JMD" # Jamaican Dollar + JPY: "JPY" # Japanese Yen + KES: "KES" # Kenyan Shilling + KGS: "KGS" # Kyrgyzstani Som + KRW: "KRW" # South Korean Won + KZT: "KZT" # Kazakhstani Tenge + LBP: "LBP" # Lebanese Pound + LKR: "LKR" # Sri Lankan Rupee + MAD: "MAD" # Moroccan Dirham + MDL: "MDL" # Moldovan Leu + MNT: "MNT" # Mongolian Tögrög + MUR: "MUR" # Mauritian Rupee + MVR: "MVR" # Maldivian Rufiyaa + MXN: "MXN" # Mexican Peso + MYR: "MYR" # Malaysian Ringgit + MZN: "MZN" # Mozambican Metical + NGN: "NGN" # Nigerian Naira + NIO: "NIO" # Nicaraguan Córdoba + NOK: "NOK" # Norwegian Krone + NPR: "NPR" # Nepalese Rupee + NZD: "NZD" # New Zealand Dollar + PAB: "PAB" # Panamanian Balboa + PEN: "PEN" # Peruvian Nuevo Sol + PHP: "PHP" # Philippine Peso + PKR: "PKR" # Pakistani Rupee + PLN: "PLN" # Polish Złoty + PYG: "PYG" # Paraguayan Guaraní + QAR: "QAR" # Qatari Riyal + RON: "RON" # Romanian Leu + RSD: "RSD" # Serbian Dinar + RUB: "RUB" # Russian Ruble + SAR: "SAR" # Saudi Riyal + SEK: "SEK" # Swedish Krona + SGD: "SGD" # Singapore Dollar + THB: "THB" # Thai Baht + TJS: "TJS" # Tajikistani Somoni + TRY: "TRY" # Turkish Lira + TTD: "TTD" # Trinidad and Tobago Dollar + TWD: "TWD" # New Taiwan Dollar + TZS: "TZS" # Tanzanian Shilling + UAH: "UAH" # Ukrainian Hryvnia + UGX: "UGX" # Ugandan Shilling + USD: "USD" # United States Dollar + UYU: "UYU" # Uruguayan Peso + UZS: "UZS" # Uzbekistani Som + VND: "VND" # Vietnamese Đồng + YER: "YER" # Yemeni Rial + ZAR: "ZAR" # South African Rand diff --git a/CHANGES/1194.feature.rst b/CHANGES/1194.feature.rst new file mode 100644 index 00000000..282ba131 --- /dev/null +++ b/CHANGES/1194.feature.rst @@ -0,0 +1,12 @@ +Added Currency enum. +You can use it like this: + +.. code-block:: python + + from aiogram import Bot + from aiogram.enum import Currency + await Bot.send_invoice( + ..., + currency=Currency.USD, + ... + ) diff --git a/aiogram/enums/__init__.py b/aiogram/enums/__init__.py index ab49c599..a999001c 100644 --- a/aiogram/enums/__init__.py +++ b/aiogram/enums/__init__.py @@ -3,6 +3,7 @@ from .chat_action import ChatAction from .chat_member_status import ChatMemberStatus from .chat_type import ChatType from .content_type import ContentType +from .currency import Currency from .dice_emoji import DiceEmoji from .encrypted_passport_element import EncryptedPassportElement from .inline_query_result_type import InlineQueryResultType @@ -24,6 +25,7 @@ __all__ = ( "ChatMemberStatus", "ChatType", "ContentType", + "Currency", "DiceEmoji", "EncryptedPassportElement", "InlineQueryResultType", diff --git a/aiogram/enums/currency.py b/aiogram/enums/currency.py new file mode 100644 index 00000000..563651b7 --- /dev/null +++ b/aiogram/enums/currency.py @@ -0,0 +1,96 @@ +from enum import Enum + + +class Currency(str, Enum): + """ + Currencies supported by Telegram Bot API + + Source: https://core.telegram.org/bots/payments#supported-currencies + """ + + AED = "AED" + AFN = "AFN" + ALL = "ALL" + AMD = "AMD" + ARS = "ARS" + AUD = "AUD" + AZN = "AZN" + BAM = "BAM" + BDT = "BDT" + BGN = "BGN" + BND = "BND" + BOB = "BOB" + BRL = "BRL" + BYN = "BYN" + CAD = "CAD" + CHF = "CHF" + CLP = "CLP" + CNY = "CNY" + COP = "COP" + CRC = "CRC" + CZK = "CZK" + DKK = "DKK" + DOP = "DOP" + DZD = "DZD" + EGP = "EGP" + ETB = "ETB" + EUR = "EUR" + GBP = "GBP" + GEL = "GEL" + GTQ = "GTQ" + HKD = "HKD" + HNL = "HNL" + HRK = "HRK" + HUF = "HUF" + IDR = "IDR" + ILS = "ILS" + INR = "INR" + ISK = "ISK" + JMD = "JMD" + JPY = "JPY" + KES = "KES" + KGS = "KGS" + KRW = "KRW" + KZT = "KZT" + LBP = "LBP" + LKR = "LKR" + MAD = "MAD" + MDL = "MDL" + MNT = "MNT" + MUR = "MUR" + MVR = "MVR" + MXN = "MXN" + MYR = "MYR" + MZN = "MZN" + NGN = "NGN" + NIO = "NIO" + NOK = "NOK" + NPR = "NPR" + NZD = "NZD" + PAB = "PAB" + PEN = "PEN" + PHP = "PHP" + PKR = "PKR" + PLN = "PLN" + PYG = "PYG" + QAR = "QAR" + RON = "RON" + RSD = "RSD" + RUB = "RUB" + SAR = "SAR" + SEK = "SEK" + SGD = "SGD" + THB = "THB" + TJS = "TJS" + TRY = "TRY" + TTD = "TTD" + TWD = "TWD" + TZS = "TZS" + UAH = "UAH" + UGX = "UGX" + USD = "USD" + UYU = "UYU" + UZS = "UZS" + VND = "VND" + YER = "YER" + ZAR = "ZAR" diff --git a/docs/api/enums/currency.rst b/docs/api/enums/currency.rst new file mode 100644 index 00000000..a180811b --- /dev/null +++ b/docs/api/enums/currency.rst @@ -0,0 +1,9 @@ +######## +Currency +######## + + +.. automodule:: aiogram.enums.currency + :members: + :member-order: bysource + :undoc-members: True diff --git a/docs/api/enums/index.rst b/docs/api/enums/index.rst index 9b60d606..923319f8 100644 --- a/docs/api/enums/index.rst +++ b/docs/api/enums/index.rst @@ -15,6 +15,7 @@ Here is list of all available enums: chat_member_status chat_type content_type + currency dice_emoji encrypted_passport_element inline_query_result_type From aea876dfe0b3f7091fa51caa366b65de3d588709 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 2 Aug 2023 23:28:50 +0300 Subject: [PATCH 049/139] Added codegen configuration for lost shortcuts (#1244) * Added codegen configuration for lost shortcuts * Rollback inline_message_id * Added changelog --- .butcher/types/Message/aliases.yml | 18 ++++--- .butcher/types/PreCheckoutQuery/aliases.yml | 4 ++ .butcher/types/ShippingQuery/aliases.yml | 4 ++ CHANGES/#1244.bugfix.rst | 5 ++ aiogram/types/message.py | 52 ++++++++++++++++----- aiogram/types/pre_checkout_query.py | 32 ++++++++++--- aiogram/types/shipping_query.py | 28 ++++++++--- 7 files changed, 112 insertions(+), 31 deletions(-) create mode 100644 .butcher/types/PreCheckoutQuery/aliases.yml create mode 100644 .butcher/types/ShippingQuery/aliases.yml create mode 100644 CHANGES/#1244.bugfix.rst diff --git a/.butcher/types/Message/aliases.yml b/.butcher/types/Message/aliases.yml index 4d731875..290f9fa1 100644 --- a/.butcher/types/Message/aliases.yml +++ b/.butcher/types/Message/aliases.yml @@ -144,18 +144,18 @@ copy_to: from_chat_id: self.chat.id message_id: self.message_id -edit_text: - method: editMessageText - fill: &message-target - chat_id: self.chat.id - message_id: self.message_id - forward: method: forwardMessage fill: from_chat_id: self.chat.id message_id: self.message_id +edit_text: + method: editMessageText + fill: &message-target + chat_id: self.chat.id if self.chat else None + message_id: self.message_id + edit_media: method: editMessageMedia fill: *message-target @@ -164,6 +164,12 @@ edit_reply_markup: method: editMessageReplyMarkup fill: *message-target +delete_reply_markup: + method: editMessageReplyMarkup + fill: + <<: *message-target + reply_markup: None + edit_live_location: method: editMessageLiveLocation fill: *message-target diff --git a/.butcher/types/PreCheckoutQuery/aliases.yml b/.butcher/types/PreCheckoutQuery/aliases.yml new file mode 100644 index 00000000..780f3bd1 --- /dev/null +++ b/.butcher/types/PreCheckoutQuery/aliases.yml @@ -0,0 +1,4 @@ +answer: + method: answerPreCheckoutQuery + fill: + pre_checkout_query_id: self.id diff --git a/.butcher/types/ShippingQuery/aliases.yml b/.butcher/types/ShippingQuery/aliases.yml new file mode 100644 index 00000000..7fb73655 --- /dev/null +++ b/.butcher/types/ShippingQuery/aliases.yml @@ -0,0 +1,4 @@ +answer: + method: answerShippingQuery + fill: + shipping_query_id: self.id diff --git a/CHANGES/#1244.bugfix.rst b/CHANGES/#1244.bugfix.rst new file mode 100644 index 00000000..5d827461 --- /dev/null +++ b/CHANGES/#1244.bugfix.rst @@ -0,0 +1,5 @@ +Added codegen configuration for lost shortcuts: + +- ShippingQuery.answer +- PreCheckoutQuery.answer +- Message.delete_reply_markup diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 0e539042..3e14f8aa 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -2721,7 +2721,7 @@ class Message(TelegramObject): from aiogram.methods import EditMessageText return EditMessageText( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, text=text, inline_message_id=inline_message_id, @@ -2807,7 +2807,7 @@ class Message(TelegramObject): from aiogram.methods import EditMessageMedia return EditMessageMedia( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, media=media, inline_message_id=inline_message_id, @@ -2842,15 +2842,45 @@ class Message(TelegramObject): from aiogram.methods import EditMessageReplyMarkup return EditMessageReplyMarkup( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, inline_message_id=inline_message_id, reply_markup=reply_markup, **kwargs, ).as_(self._bot) - def delete_reply_markup(self) -> EditMessageReplyMarkup: - return self.edit_reply_markup(reply_markup=None) + def delete_reply_markup( + self, + inline_message_id: Optional[str] = None, + **kwargs: Any, + ) -> EditMessageReplyMarkup: + """ + Shortcut for method :class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup` + will automatically fill method attributes: + + - :code:`chat_id` + - :code:`message_id` + - :code:`reply_markup` + + Use this method to edit only the reply markup of messages. On success, if the edited message is not an inline message, the edited :class:`aiogram.types.message.Message` is returned, otherwise :code:`True` is returned. + + Source: https://core.telegram.org/bots/api#editmessagereplymarkup + + :param inline_message_id: Required if *chat_id* and *message_id* are not specified. Identifier of the inline message + :return: instance of method :class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import EditMessageReplyMarkup + + return EditMessageReplyMarkup( + chat_id=self.chat.id if self.chat else None, + message_id=self.message_id, + reply_markup=None, + inline_message_id=inline_message_id, + **kwargs, + ).as_(self._bot) def edit_live_location( self, @@ -2889,7 +2919,7 @@ class Message(TelegramObject): from aiogram.methods import EditMessageLiveLocation return EditMessageLiveLocation( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, latitude=latitude, longitude=longitude, @@ -2928,7 +2958,7 @@ class Message(TelegramObject): from aiogram.methods import StopMessageLiveLocation return StopMessageLiveLocation( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, inline_message_id=inline_message_id, reply_markup=reply_markup, @@ -2968,7 +2998,7 @@ class Message(TelegramObject): from aiogram.methods import EditMessageCaption return EditMessageCaption( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, inline_message_id=inline_message_id, caption=caption, @@ -3019,7 +3049,7 @@ class Message(TelegramObject): from aiogram.methods import DeleteMessage return DeleteMessage( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, **kwargs, ).as_(self._bot) @@ -3049,7 +3079,7 @@ class Message(TelegramObject): from aiogram.methods import PinChatMessage return PinChatMessage( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, disable_notification=disable_notification, **kwargs, @@ -3078,7 +3108,7 @@ class Message(TelegramObject): from aiogram.methods import UnpinChatMessage return UnpinChatMessage( - chat_id=self.chat.id, + chat_id=self.chat.id if self.chat else None, message_id=self.message_id, **kwargs, ).as_(self._bot) diff --git a/aiogram/types/pre_checkout_query.py b/aiogram/types/pre_checkout_query.py index f2e49170..1084e76a 100644 --- a/aiogram/types/pre_checkout_query.py +++ b/aiogram/types/pre_checkout_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Optional, Any from pydantic import Field @@ -34,16 +34,34 @@ class PreCheckoutQuery(TelegramObject): order_info: Optional[OrderInfo] = None """*Optional*. Order information provided by the user""" - def answer(self, ok: bool, error_message: Optional[str] = None) -> AnswerPreCheckoutQuery: + def answer( + self, + ok: bool, + error_message: Optional[str] = None, + **kwargs: Any, + ) -> AnswerPreCheckoutQuery: """ - :param ok: - :param error_message: - :return: + Shortcut for method :class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery` + will automatically fill method attributes: + + - :code:`pre_checkout_query_id` + + Once the user has confirmed their payment and shipping details, the Bot API sends the final confirmation in the form of an :class:`aiogram.types.update.Update` with the field *pre_checkout_query*. Use this method to respond to such pre-checkout queries. On success, :code:`True` is returned. **Note:** The Bot API must receive an answer within 10 seconds after the pre-checkout query was sent. + + Source: https://core.telegram.org/bots/api#answerprecheckoutquery + + :param ok: Specify :code:`True` if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order. Use :code:`False` if there are any problems. + :param error_message: Required if *ok* is :code:`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. + :return: instance of method :class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery` """ - from ..methods import AnswerPreCheckoutQuery + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import AnswerPreCheckoutQuery return AnswerPreCheckoutQuery( pre_checkout_query_id=self.id, ok=ok, error_message=error_message, - ) + **kwargs, + ).as_(self._bot) diff --git a/aiogram/types/shipping_query.py b/aiogram/types/shipping_query.py index df00e38d..e1bbeca3 100644 --- a/aiogram/types/shipping_query.py +++ b/aiogram/types/shipping_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, List, Optional, Any from pydantic import Field @@ -34,18 +34,32 @@ class ShippingQuery(TelegramObject): ok: bool, shipping_options: Optional[List[ShippingOption]] = None, error_message: Optional[str] = None, + **kwargs: Any, ) -> AnswerShippingQuery: """ - :param ok: - :param shipping_options: - :param error_message: - :return: + Shortcut for method :class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` + will automatically fill method attributes: + + - :code:`shipping_query_id` + + If you sent an invoice requesting a shipping address and the parameter *is_flexible* was specified, the Bot API will send an :class:`aiogram.types.update.Update` with a *shipping_query* field to the bot. Use this method to reply to shipping queries. On success, :code:`True` is returned. + + Source: https://core.telegram.org/bots/api#answershippingquery + + :param ok: Pass :code:`True` if delivery to the specified address is possible and :code:`False` if there are any problems (for example, if delivery to the specified address is not possible) + :param shipping_options: Required if *ok* is :code:`True`. A JSON-serialized array of available shipping options. + :param error_message: Required if *ok* is :code:`False`. Error message in human readable form that explains why it is impossible to complete the order (e.g. "Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user. + :return: instance of method :class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` """ - from ..methods import AnswerShippingQuery + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import AnswerShippingQuery return AnswerShippingQuery( shipping_query_id=self.id, ok=ok, shipping_options=shipping_options, error_message=error_message, - ) + **kwargs, + ).as_(self._bot) From 11dc7eaa313af9c6d7703f07d7f48203ef59c3e3 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 4 Aug 2023 00:30:27 +0300 Subject: [PATCH 050/139] Added typehints for init methods of types and methods (#1245) * Generate init * Fixed mypy errors * Bump butcher * Added changelog --- .butcher/types/Message/aliases.yml | 49 ++- CHANGES/{#1244.bugfix.rst => 1244.bugfix.rst} | 0 CHANGES/1245.misc.rst | 1 + aiogram/methods/add_sticker_to_set.py | 20 + aiogram/methods/answer_callback_query.py | 29 +- aiogram/methods/answer_inline_query.py | 58 ++- aiogram/methods/answer_pre_checkout_query.py | 25 +- aiogram/methods/answer_shipping_query.py | 27 +- aiogram/methods/answer_web_app_query.py | 40 +- aiogram/methods/approve_chat_join_request.py | 15 +- aiogram/methods/ban_chat_member.py | 27 +- aiogram/methods/ban_chat_sender_chat.py | 19 +- aiogram/methods/close_forum_topic.py | 21 +- aiogram/methods/close_general_forum_topic.py | 15 +- aiogram/methods/copy_message.py | 45 +- aiogram/methods/create_chat_invite_link.py | 29 +- aiogram/methods/create_forum_topic.py | 27 +- aiogram/methods/create_invoice_link.py | 59 ++- aiogram/methods/create_new_sticker_set.py | 33 +- aiogram/methods/decline_chat_join_request.py | 15 +- aiogram/methods/delete_chat_photo.py | 15 +- aiogram/methods/delete_chat_sticker_set.py | 15 +- aiogram/methods/delete_forum_topic.py | 21 +- aiogram/methods/delete_message.py | 19 +- aiogram/methods/delete_my_commands.py | 29 +- aiogram/methods/delete_sticker_from_set.py | 13 + aiogram/methods/delete_sticker_set.py | 13 + aiogram/methods/delete_webhook.py | 18 +- aiogram/methods/edit_chat_invite_link.py | 31 +- aiogram/methods/edit_forum_topic.py | 27 +- aiogram/methods/edit_general_forum_topic.py | 15 +- aiogram/methods/edit_message_caption.py | 33 +- aiogram/methods/edit_message_live_location.py | 37 +- aiogram/methods/edit_message_media.py | 35 +- aiogram/methods/edit_message_reply_markup.py | 27 +- aiogram/methods/edit_message_text.py | 35 +- aiogram/methods/export_chat_invite_link.py | 15 +- aiogram/methods/forward_message.py | 31 +- aiogram/methods/get_chat.py | 15 +- aiogram/methods/get_chat_administrators.py | 15 +- aiogram/methods/get_chat_member.py | 15 +- aiogram/methods/get_chat_member_count.py | 15 +- aiogram/methods/get_chat_menu_button.py | 15 +- aiogram/methods/get_custom_emoji_stickers.py | 15 +- aiogram/methods/get_file.py | 13 + aiogram/methods/get_game_high_scores.py | 27 +- aiogram/methods/get_my_commands.py | 29 +- .../get_my_default_administrator_rights.py | 15 +- aiogram/methods/get_my_description.py | 15 +- aiogram/methods/get_my_name.py | 15 +- aiogram/methods/get_my_short_description.py | 15 +- aiogram/methods/get_sticker_set.py | 13 + aiogram/methods/get_updates.py | 27 +- aiogram/methods/get_user_profile_photos.py | 20 +- aiogram/methods/hide_general_forum_topic.py | 15 +- aiogram/methods/leave_chat.py | 15 +- aiogram/methods/pin_chat_message.py | 25 +- aiogram/methods/promote_chat_member.py | 47 ++- aiogram/methods/reopen_forum_topic.py | 21 +- aiogram/methods/reopen_general_forum_topic.py | 15 +- aiogram/methods/restrict_chat_member.py | 29 +- aiogram/methods/revoke_chat_invite_link.py | 19 +- aiogram/methods/send_animation.py | 53 ++- aiogram/methods/send_audio.py | 51 ++- aiogram/methods/send_chat_action.py | 25 +- aiogram/methods/send_contact.py | 43 +- aiogram/methods/send_dice.py | 37 +- aiogram/methods/send_document.py | 47 ++- aiogram/methods/send_game.py | 35 +- aiogram/methods/send_invoice.py | 75 +++- aiogram/methods/send_location.py | 47 ++- aiogram/methods/send_media_group.py | 35 +- aiogram/methods/send_message.py | 43 +- aiogram/methods/send_photo.py | 45 +- aiogram/methods/send_poll.py | 59 ++- aiogram/methods/send_sticker.py | 39 +- aiogram/methods/send_venue.py | 51 ++- aiogram/methods/send_video.py | 55 ++- aiogram/methods/send_video_note.py | 43 +- aiogram/methods/send_voice.py | 45 +- .../set_chat_administrator_custom_title.py | 22 +- aiogram/methods/set_chat_description.py | 19 +- aiogram/methods/set_chat_menu_button.py | 21 +- aiogram/methods/set_chat_permissions.py | 25 +- aiogram/methods/set_chat_photo.py | 19 +- aiogram/methods/set_chat_sticker_set.py | 21 +- aiogram/methods/set_chat_title.py | 15 +- .../set_custom_emoji_sticker_set_thumbnail.py | 19 +- aiogram/methods/set_game_score.py | 33 +- aiogram/methods/set_my_commands.py | 32 +- .../set_my_default_administrator_rights.py | 19 +- aiogram/methods/set_my_description.py | 21 +- aiogram/methods/set_my_name.py | 19 +- aiogram/methods/set_my_short_description.py | 23 +- aiogram/methods/set_passport_data_errors.py | 31 +- aiogram/methods/set_sticker_emoji_list.py | 15 +- aiogram/methods/set_sticker_keywords.py | 19 +- aiogram/methods/set_sticker_mask_position.py | 19 +- .../methods/set_sticker_position_in_set.py | 15 + aiogram/methods/set_sticker_set_thumbnail.py | 20 +- aiogram/methods/set_sticker_set_title.py | 15 + aiogram/methods/set_webhook.py | 33 +- aiogram/methods/stop_message_live_location.py | 27 +- aiogram/methods/stop_poll.py | 25 +- aiogram/methods/unban_chat_member.py | 25 +- aiogram/methods/unban_chat_sender_chat.py | 19 +- aiogram/methods/unhide_general_forum_topic.py | 15 +- aiogram/methods/unpin_all_chat_messages.py | 15 +- .../methods/unpin_all_forum_topic_messages.py | 21 +- aiogram/methods/unpin_chat_message.py | 19 +- aiogram/methods/upload_sticker_file.py | 25 ++ aiogram/types/animation.py | 37 +- aiogram/types/audio.py | 37 +- aiogram/types/bot_command.py | 15 + ...t_command_scope_all_chat_administrators.py | 20 +- .../bot_command_scope_all_group_chats.py | 20 +- .../bot_command_scope_all_private_chats.py | 20 +- aiogram/types/bot_command_scope_chat.py | 19 +- .../bot_command_scope_chat_administrators.py | 21 +- .../types/bot_command_scope_chat_member.py | 20 +- aiogram/types/bot_command_scope_default.py | 18 +- aiogram/types/bot_description.py | 13 + aiogram/types/bot_name.py | 13 + aiogram/types/bot_short_description.py | 15 + aiogram/types/callback_query.py | 31 ++ aiogram/types/chat.py | 73 ++++ aiogram/types/chat_administrator_rights.py | 43 +- aiogram/types/chat_invite_link.py | 37 +- aiogram/types/chat_join_request.py | 29 ++ aiogram/types/chat_location.py | 15 +- aiogram/types/chat_member_administrator.py | 51 ++- aiogram/types/chat_member_banned.py | 20 +- aiogram/types/chat_member_left.py | 19 +- aiogram/types/chat_member_member.py | 19 +- aiogram/types/chat_member_owner.py | 27 +- aiogram/types/chat_member_restricted.py | 55 ++- aiogram/types/chat_member_updated.py | 45 ++ aiogram/types/chat_permissions.py | 47 ++- aiogram/types/chat_photo.py | 27 ++ aiogram/types/chat_shared.py | 15 + aiogram/types/chosen_inline_result.py | 29 +- aiogram/types/contact.py | 29 +- aiogram/types/dice.py | 15 + aiogram/types/document.py | 31 +- aiogram/types/encrypted_credentials.py | 15 + aiogram/types/encrypted_passport_element.py | 39 +- aiogram/types/error_event.py | 9 +- aiogram/types/file.py | 27 +- aiogram/types/force_reply.py | 25 +- aiogram/types/forum_topic.py | 27 +- aiogram/types/forum_topic_created.py | 25 +- aiogram/types/forum_topic_edited.py | 21 +- aiogram/types/game.py | 31 +- aiogram/types/game_high_score.py | 15 +- aiogram/types/inline_keyboard_button.py | 39 +- aiogram/types/inline_keyboard_markup.py | 18 +- aiogram/types/inline_query.py | 29 ++ aiogram/types/inline_query_result_article.py | 47 ++- aiogram/types/inline_query_result_audio.py | 49 ++- .../types/inline_query_result_cached_audio.py | 43 +- .../inline_query_result_cached_document.py | 47 ++- .../types/inline_query_result_cached_gif.py | 45 +- .../inline_query_result_cached_mpeg4_gif.py | 45 +- .../types/inline_query_result_cached_photo.py | 47 ++- .../inline_query_result_cached_sticker.py | 37 +- .../types/inline_query_result_cached_video.py | 47 ++- .../types/inline_query_result_cached_voice.py | 45 +- aiogram/types/inline_query_result_contact.py | 49 ++- aiogram/types/inline_query_result_document.py | 55 ++- aiogram/types/inline_query_result_game.py | 27 +- aiogram/types/inline_query_result_gif.py | 55 ++- aiogram/types/inline_query_result_location.py | 55 ++- .../types/inline_query_result_mpeg4_gif.py | 55 ++- aiogram/types/inline_query_result_photo.py | 53 ++- aiogram/types/inline_query_result_venue.py | 57 ++- aiogram/types/inline_query_result_video.py | 57 ++- aiogram/types/inline_query_result_voice.py | 47 ++- aiogram/types/inline_query_results_button.py | 22 +- .../types/input_contact_message_content.py | 27 +- aiogram/types/input_file.py | 10 +- .../types/input_invoice_message_content.py | 59 ++- .../types/input_location_message_content.py | 31 +- aiogram/types/input_media_animation.py | 39 +- aiogram/types/input_media_audio.py | 37 +- aiogram/types/input_media_document.py | 33 +- aiogram/types/input_media_photo.py | 31 +- aiogram/types/input_media_video.py | 41 +- aiogram/types/input_sticker.py | 27 +- aiogram/types/input_text_message_content.py | 27 +- aiogram/types/input_venue_message_content.py | 35 +- aiogram/types/invoice.py | 29 ++ aiogram/types/keyboard_button.py | 33 +- aiogram/types/keyboard_button_poll_type.py | 15 +- aiogram/types/keyboard_button_request_chat.py | 35 +- aiogram/types/keyboard_button_request_user.py | 25 +- aiogram/types/labeled_price.py | 15 + aiogram/types/location.py | 31 +- aiogram/types/login_url.py | 27 +- aiogram/types/mask_position.py | 23 + aiogram/types/menu_button.py | 20 +- aiogram/types/menu_button_commands.py | 18 +- aiogram/types/menu_button_default.py | 18 +- aiogram/types/menu_button_web_app.py | 20 +- aiogram/types/message.py | 399 +++++++++++++++++- .../message_auto_delete_timer_changed.py | 17 + aiogram/types/message_entity.py | 33 +- aiogram/types/message_id.py | 13 + aiogram/types/order_info.py | 27 +- aiogram/types/passport_data.py | 19 +- .../passport_element_error_data_field.py | 29 +- aiogram/types/passport_element_error_file.py | 23 +- aiogram/types/passport_element_error_files.py | 27 +- .../passport_element_error_front_side.py | 25 +- .../passport_element_error_reverse_side.py | 25 +- .../types/passport_element_error_selfie.py | 23 +- ...passport_element_error_translation_file.py | 25 +- ...assport_element_error_translation_files.py | 29 +- .../passport_element_error_unspecified.py | 29 +- aiogram/types/passport_file.py | 27 ++ aiogram/types/photo_size.py | 29 +- aiogram/types/poll.py | 45 +- aiogram/types/poll_answer.py | 22 +- aiogram/types/poll_option.py | 15 + aiogram/types/pre_checkout_query.py | 33 +- aiogram/types/proximity_alert_triggered.py | 22 +- aiogram/types/reply_keyboard_markup.py | 31 +- aiogram/types/reply_keyboard_remove.py | 21 +- aiogram/types/response_parameters.py | 21 +- aiogram/types/sent_web_app_message.py | 18 +- aiogram/types/shipping_address.py | 31 ++ aiogram/types/shipping_option.py | 20 +- aiogram/types/shipping_query.py | 27 +- aiogram/types/sticker.py | 47 +++ aiogram/types/sticker_set.py | 33 +- aiogram/types/successful_payment.py | 33 +- .../types/switch_inline_query_chosen_chat.py | 29 +- aiogram/types/update.py | 49 ++- aiogram/types/user.py | 39 ++ aiogram/types/user_profile_photos.py | 19 +- aiogram/types/user_shared.py | 15 + aiogram/types/venue.py | 33 +- aiogram/types/video.py | 37 +- aiogram/types/video_chat_ended.py | 13 + .../types/video_chat_participants_invited.py | 13 +- aiogram/types/video_chat_scheduled.py | 14 + aiogram/types/video_note.py | 31 +- aiogram/types/voice.py | 29 +- aiogram/types/web_app_data.py | 15 + aiogram/types/web_app_info.py | 13 + aiogram/types/webhook_info.py | 37 +- aiogram/types/write_access_allowed.py | 15 +- aiogram/utils/formatting.py | 1 + aiogram/utils/keyboard.py | 10 +- .../api/methods/answer_pre_checkout_query.rst | 6 + docs/api/methods/answer_shipping_query.rst | 6 + .../api/methods/edit_message_reply_markup.rst | 1 + pyproject.toml | 2 +- 257 files changed, 7275 insertions(+), 247 deletions(-) rename CHANGES/{#1244.bugfix.rst => 1244.bugfix.rst} (100%) create mode 100644 CHANGES/1245.misc.rst diff --git a/.butcher/types/Message/aliases.yml b/.butcher/types/Message/aliases.yml index 290f9fa1..341919cc 100644 --- a/.butcher/types/Message/aliases.yml +++ b/.butcher/types/Message/aliases.yml @@ -1,195 +1,242 @@ answer: method: sendMessage + code: &assert-chat | + assert self.chat is not None, "This method can be used only if chat is present in the message." fill: &fill-answer chat_id: self.chat.id message_thread_id: self.message_thread_id if self.is_topic_message else None reply: method: sendMessage + code: *assert-chat fill: &fill-reply <<: *fill-answer reply_to_message_id: self.message_id answer_animation: method: sendAnimation + code: *assert-chat fill: *fill-answer reply_animation: method: sendAnimation + code: *assert-chat fill: *fill-reply answer_audio: method: sendAudio + code: *assert-chat fill: *fill-answer reply_audio: method: sendAudio + code: *assert-chat fill: *fill-reply answer_contact: method: sendContact + code: *assert-chat fill: *fill-answer reply_contact: method: sendContact + code: *assert-chat fill: *fill-reply answer_document: method: sendDocument + code: *assert-chat fill: *fill-answer reply_document: method: sendDocument + code: *assert-chat fill: *fill-reply answer_game: method: sendGame + code: *assert-chat fill: *fill-answer reply_game: method: sendGame + code: *assert-chat fill: *fill-reply answer_invoice: method: sendInvoice + code: *assert-chat fill: *fill-answer reply_invoice: method: sendInvoice + code: *assert-chat fill: *fill-reply answer_location: method: sendLocation + code: *assert-chat fill: *fill-answer reply_location: method: sendLocation + code: *assert-chat fill: *fill-reply answer_media_group: method: sendMediaGroup + code: *assert-chat fill: *fill-answer reply_media_group: method: sendMediaGroup + code: *assert-chat fill: *fill-reply answer_photo: method: sendPhoto + code: *assert-chat fill: *fill-answer reply_photo: method: sendPhoto + code: *assert-chat fill: *fill-reply answer_poll: method: sendPoll + code: *assert-chat fill: *fill-answer reply_poll: method: sendPoll + code: *assert-chat fill: *fill-reply answer_dice: method: sendDice + code: *assert-chat fill: *fill-answer reply_dice: method: sendDice + code: *assert-chat fill: *fill-reply answer_sticker: method: sendSticker + code: *assert-chat fill: *fill-answer reply_sticker: method: sendSticker + code: *assert-chat fill: *fill-reply answer_venue: method: sendVenue + code: *assert-chat fill: *fill-answer reply_venue: method: sendVenue + code: *assert-chat fill: *fill-reply answer_video: method: sendVideo + code: *assert-chat fill: *fill-answer reply_video: method: sendVideo + code: *assert-chat fill: *fill-reply answer_video_note: method: sendVideoNote + code: *assert-chat fill: *fill-answer reply_video_note: method: sendVideoNote + code: *assert-chat fill: *fill-reply answer_voice: method: sendVoice + code: *assert-chat fill: *fill-answer reply_voice: method: sendVoice + code: *assert-chat fill: *fill-reply copy_to: method: copyMessage + code: *assert-chat fill: from_chat_id: self.chat.id message_id: self.message_id forward: method: forwardMessage + code: *assert-chat fill: from_chat_id: self.chat.id message_id: self.message_id edit_text: method: editMessageText + code: *assert-chat fill: &message-target - chat_id: self.chat.id if self.chat else None + chat_id: self.chat.id message_id: self.message_id edit_media: method: editMessageMedia fill: *message-target + code: *assert-chat edit_reply_markup: method: editMessageReplyMarkup + code: *assert-chat fill: *message-target delete_reply_markup: method: editMessageReplyMarkup + code: *assert-chat fill: <<: *message-target reply_markup: None edit_live_location: method: editMessageLiveLocation + code: *assert-chat fill: *message-target stop_live_location: method: stopMessageLiveLocation + code: *assert-chat fill: *message-target edit_caption: method: editMessageCaption + code: *assert-chat fill: *message-target delete: method: deleteMessage + code: *assert-chat fill: *message-target pin: method: pinChatMessage + code: *assert-chat fill: *message-target unpin: method: unpinChatMessage + code: *assert-chat fill: *message-target diff --git a/CHANGES/#1244.bugfix.rst b/CHANGES/1244.bugfix.rst similarity index 100% rename from CHANGES/#1244.bugfix.rst rename to CHANGES/1244.bugfix.rst diff --git a/CHANGES/1245.misc.rst b/CHANGES/1245.misc.rst new file mode 100644 index 00000000..ab567cec --- /dev/null +++ b/CHANGES/1245.misc.rst @@ -0,0 +1 @@ +Code-generated :code:`__init__` typehints in types and methods to make IDE happy without additional pydantic plugin diff --git a/aiogram/methods/add_sticker_to_set.py b/aiogram/methods/add_sticker_to_set.py index 2c6502a5..b9ec036e 100644 --- a/aiogram/methods/add_sticker_to_set.py +++ b/aiogram/methods/add_sticker_to_set.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from ..types import InputSticker from .base import TelegramMethod @@ -20,3 +22,21 @@ class AddStickerToSet(TelegramMethod[bool]): """Sticker set name""" sticker: InputSticker """A JSON-serialized object with information about the added sticker. If exactly the same sticker had already been added to the set, then the set isn't changed.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + name: str, + sticker: InputSticker, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(user_id=user_id, name=name, sticker=sticker, **__pydantic_kwargs) diff --git a/aiogram/methods/answer_callback_query.py b/aiogram/methods/answer_callback_query.py index 067c8b34..15ed1bf5 100644 --- a/aiogram/methods/answer_callback_query.py +++ b/aiogram/methods/answer_callback_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -27,3 +27,30 @@ class AnswerCallbackQuery(TelegramMethod[bool]): """URL that will be opened by the user's client. If you have created a :class:`aiogram.types.game.Game` and accepted the conditions via `@BotFather `_, specify the URL that opens your game - note that this will only work if the query comes from a `https://core.telegram.org/bots/api#inlinekeyboardbutton `_ *callback_game* button.""" cache_time: Optional[int] = None """The maximum amount of time in seconds that the result of the callback query may be cached client-side. Telegram apps will support caching starting in version 3.14. Defaults to 0.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + callback_query_id: str, + text: Optional[str] = None, + show_alert: Optional[bool] = None, + url: Optional[str] = None, + cache_time: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + callback_query_id=callback_query_id, + text=text, + show_alert=show_alert, + url=url, + cache_time=cache_time, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/answer_inline_query.py b/aiogram/methods/answer_inline_query.py index 70dc1169..acfb80ab 100644 --- a/aiogram/methods/answer_inline_query.py +++ b/aiogram/methods/answer_inline_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from pydantic import Field @@ -87,3 +87,59 @@ class AnswerInlineQuery(TelegramMethod[bool]): .. deprecated:: API:6.7 https://core.telegram.org/bots/api-changelog#april-21-2023""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + inline_query_id: str, + results: List[ + Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ] + ], + cache_time: Optional[int] = None, + is_personal: Optional[bool] = None, + next_offset: Optional[str] = None, + button: Optional[InlineQueryResultsButton] = None, + switch_pm_parameter: Optional[str] = None, + switch_pm_text: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + inline_query_id=inline_query_id, + results=results, + cache_time=cache_time, + is_personal=is_personal, + next_offset=next_offset, + button=button, + switch_pm_parameter=switch_pm_parameter, + switch_pm_text=switch_pm_text, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/answer_pre_checkout_query.py b/aiogram/methods/answer_pre_checkout_query.py index 8d1679cd..479d76c9 100644 --- a/aiogram/methods/answer_pre_checkout_query.py +++ b/aiogram/methods/answer_pre_checkout_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -21,3 +21,26 @@ class AnswerPreCheckoutQuery(TelegramMethod[bool]): """Specify :code:`True` if everything is alright (goods are available, etc.) and the bot is ready to proceed with the order. Use :code:`False` if there are any problems.""" error_message: Optional[str] = None """Required if *ok* is :code:`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.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + pre_checkout_query_id: str, + ok: bool, + error_message: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + pre_checkout_query_id=pre_checkout_query_id, + ok=ok, + error_message=error_message, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/answer_shipping_query.py b/aiogram/methods/answer_shipping_query.py index 81c1eaa6..ad0e9dc0 100644 --- a/aiogram/methods/answer_shipping_query.py +++ b/aiogram/methods/answer_shipping_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import ShippingOption from .base import TelegramMethod @@ -24,3 +24,28 @@ class AnswerShippingQuery(TelegramMethod[bool]): """Required if *ok* is :code:`True`. A JSON-serialized array of available shipping options.""" error_message: Optional[str] = None """Required if *ok* is :code:`False`. Error message in human readable form that explains why it is impossible to complete the order (e.g. "Sorry, delivery to your desired address is unavailable'). Telegram will display this message to the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + shipping_query_id: str, + ok: bool, + shipping_options: Optional[List[ShippingOption]] = None, + error_message: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + shipping_query_id=shipping_query_id, + ok=ok, + shipping_options=shipping_options, + error_message=error_message, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/answer_web_app_query.py b/aiogram/methods/answer_web_app_query.py index 23def3e4..4dc87ebd 100644 --- a/aiogram/methods/answer_web_app_query.py +++ b/aiogram/methods/answer_web_app_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from ..types import ( InlineQueryResultArticle, @@ -63,3 +63,41 @@ class AnswerWebAppQuery(TelegramMethod[SentWebAppMessage]): InlineQueryResultVoice, ] """A JSON-serialized object describing the message to be sent""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + web_app_query_id: str, + result: Union[ + InlineQueryResultCachedAudio, + InlineQueryResultCachedDocument, + InlineQueryResultCachedGif, + InlineQueryResultCachedMpeg4Gif, + InlineQueryResultCachedPhoto, + InlineQueryResultCachedSticker, + InlineQueryResultCachedVideo, + InlineQueryResultCachedVoice, + InlineQueryResultArticle, + InlineQueryResultAudio, + InlineQueryResultContact, + InlineQueryResultGame, + InlineQueryResultDocument, + InlineQueryResultGif, + InlineQueryResultLocation, + InlineQueryResultMpeg4Gif, + InlineQueryResultPhoto, + InlineQueryResultVenue, + InlineQueryResultVideo, + InlineQueryResultVoice, + ], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(web_app_query_id=web_app_query_id, result=result, **__pydantic_kwargs) diff --git a/aiogram/methods/approve_chat_join_request.py b/aiogram/methods/approve_chat_join_request.py index 4e4693f8..2f4995b4 100644 --- a/aiogram/methods/approve_chat_join_request.py +++ b/aiogram/methods/approve_chat_join_request.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,16 @@ class ApproveChatJoinRequest(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" user_id: int """Unique identifier of the target user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], user_id: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, user_id=user_id, **__pydantic_kwargs) diff --git a/aiogram/methods/ban_chat_member.py b/aiogram/methods/ban_chat_member.py index f64791fd..bbfc9f75 100644 --- a/aiogram/methods/ban_chat_member.py +++ b/aiogram/methods/ban_chat_member.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -24,3 +24,28 @@ class BanChatMember(TelegramMethod[bool]): """Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.""" revoke_messages: Optional[bool] = None """Pass :code:`True` to delete all messages from the chat for the user that is being removed. If :code:`False`, the user will be able to see messages in the group that were sent before the user was removed. Always :code:`True` for supergroups and channels.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + user_id: int, + until_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + revoke_messages: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + user_id=user_id, + until_date=until_date, + revoke_messages=revoke_messages, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/ban_chat_sender_chat.py b/aiogram/methods/ban_chat_sender_chat.py index 50d51188..cbe61943 100644 --- a/aiogram/methods/ban_chat_sender_chat.py +++ b/aiogram/methods/ban_chat_sender_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,20 @@ class BanChatSenderChat(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" sender_chat_id: int """Unique identifier of the target sender chat""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + sender_chat_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, sender_chat_id=sender_chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/close_forum_topic.py b/aiogram/methods/close_forum_topic.py index 3f9f50ea..110fbce7 100644 --- a/aiogram/methods/close_forum_topic.py +++ b/aiogram/methods/close_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,22 @@ class CloseForumTopic(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" message_thread_id: int """Unique identifier for the target message thread of the forum topic""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, message_thread_id=message_thread_id, **__pydantic_kwargs + ) diff --git a/aiogram/methods/close_general_forum_topic.py b/aiogram/methods/close_general_forum_topic.py index 3c836177..3f1a6336 100644 --- a/aiogram/methods/close_general_forum_topic.py +++ b/aiogram/methods/close_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class CloseGeneralForumTopic(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/copy_message.py b/aiogram/methods/copy_message.py index 4fc4b5b9..b707580e 100644 --- a/aiogram/methods/copy_message.py +++ b/aiogram/methods/copy_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -51,3 +51,46 @@ class CopyMessage(TelegramMethod[MessageId]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + from_chat_id: Union[int, str], + message_id: int, + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + from_chat_id=from_chat_id, + message_id=message_id, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/create_chat_invite_link.py b/aiogram/methods/create_chat_invite_link.py index 1bdae992..ff0b3864 100644 --- a/aiogram/methods/create_chat_invite_link.py +++ b/aiogram/methods/create_chat_invite_link.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ChatInviteLink from .base import TelegramMethod @@ -27,3 +27,30 @@ class CreateChatInviteLink(TelegramMethod[ChatInviteLink]): """The maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999""" creates_join_request: Optional[bool] = None """:code:`True`, if users joining the chat via the link need to be approved by chat administrators. If :code:`True`, *member_limit* can't be specified""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + name: Optional[str] = None, + expire_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + member_limit: Optional[int] = None, + creates_join_request: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + name=name, + expire_date=expire_date, + member_limit=member_limit, + creates_join_request=creates_join_request, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/create_forum_topic.py b/aiogram/methods/create_forum_topic.py index ece98d43..8b0f6925 100644 --- a/aiogram/methods/create_forum_topic.py +++ b/aiogram/methods/create_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ForumTopic from .base import TelegramMethod @@ -24,3 +24,28 @@ class CreateForumTopic(TelegramMethod[ForumTopic]): """Color of the topic icon in RGB format. Currently, must be one of 7322096 (0x6FB9F0), 16766590 (0xFFD67E), 13338331 (0xCB86DB), 9367192 (0x8EEE98), 16749490 (0xFF93B2), or 16478047 (0xFB6F5F)""" icon_custom_emoji_id: Optional[str] = None """Unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + name: str, + icon_color: Optional[int] = None, + icon_custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + name=name, + icon_color=icon_color, + icon_custom_emoji_id=icon_custom_emoji_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/create_invoice_link.py b/aiogram/methods/create_invoice_link.py index 8b6fc883..361ea31a 100644 --- a/aiogram/methods/create_invoice_link.py +++ b/aiogram/methods/create_invoice_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import LabeledPrice from .base import TelegramMethod @@ -56,3 +56,60 @@ class CreateInvoiceLink(TelegramMethod[str]): """Pass :code:`True` if the user's email address should be sent to the provider""" is_flexible: Optional[bool] = None """Pass :code:`True` if the final price depends on the shipping method""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/create_new_sticker_set.py b/aiogram/methods/create_new_sticker_set.py index abf25d79..92388bd5 100644 --- a/aiogram/methods/create_new_sticker_set.py +++ b/aiogram/methods/create_new_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import InputSticker from .base import TelegramMethod @@ -30,3 +30,34 @@ class CreateNewStickerSet(TelegramMethod[bool]): """Type of stickers in the set, pass 'regular', 'mask', or 'custom_emoji'. By default, a regular sticker set is created.""" needs_repainting: Optional[bool] = None """Pass :code:`True` if stickers in the sticker set must be repainted to the color of text when used in messages, the accent color if used as emoji status, white on chat photos, or another appropriate color based on context; for custom emoji sticker sets only""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + name: str, + title: str, + stickers: List[InputSticker], + sticker_format: str, + sticker_type: Optional[str] = None, + needs_repainting: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + user_id=user_id, + name=name, + title=title, + stickers=stickers, + sticker_format=sticker_format, + sticker_type=sticker_type, + needs_repainting=needs_repainting, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/decline_chat_join_request.py b/aiogram/methods/decline_chat_join_request.py index 0334c299..b0fa2c3c 100644 --- a/aiogram/methods/decline_chat_join_request.py +++ b/aiogram/methods/decline_chat_join_request.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,16 @@ class DeclineChatJoinRequest(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" user_id: int """Unique identifier of the target user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], user_id: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, user_id=user_id, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_chat_photo.py b/aiogram/methods/delete_chat_photo.py index e146cdac..503ace2c 100644 --- a/aiogram/methods/delete_chat_photo.py +++ b/aiogram/methods/delete_chat_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class DeleteChatPhoto(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_chat_sticker_set.py b/aiogram/methods/delete_chat_sticker_set.py index 2162f860..50d705f0 100644 --- a/aiogram/methods/delete_chat_sticker_set.py +++ b/aiogram/methods/delete_chat_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class DeleteChatStickerSet(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_forum_topic.py b/aiogram/methods/delete_forum_topic.py index 1e4f9b46..7d238562 100644 --- a/aiogram/methods/delete_forum_topic.py +++ b/aiogram/methods/delete_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,22 @@ class DeleteForumTopic(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" message_thread_id: int """Unique identifier for the target message thread of the forum topic""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, message_thread_id=message_thread_id, **__pydantic_kwargs + ) diff --git a/aiogram/methods/delete_message.py b/aiogram/methods/delete_message.py index 99c972d7..59aee049 100644 --- a/aiogram/methods/delete_message.py +++ b/aiogram/methods/delete_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -37,3 +37,20 @@ class DeleteMessage(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" message_id: int """Identifier of the message to delete""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, message_id=message_id, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_my_commands.py b/aiogram/methods/delete_my_commands.py index cd91b7e7..e35ef67c 100644 --- a/aiogram/methods/delete_my_commands.py +++ b/aiogram/methods/delete_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( BotCommandScopeAllChatAdministrators, @@ -38,3 +38,30 @@ class DeleteMyCommands(TelegramMethod[bool]): """A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """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""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(scope=scope, language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_sticker_from_set.py b/aiogram/methods/delete_sticker_from_set.py index 1ab3e3a8..6aae72b7 100644 --- a/aiogram/methods/delete_sticker_from_set.py +++ b/aiogram/methods/delete_sticker_from_set.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramMethod @@ -15,3 +17,14 @@ class DeleteStickerFromSet(TelegramMethod[bool]): sticker: str """File identifier of the sticker""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, sticker: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(sticker=sticker, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_sticker_set.py b/aiogram/methods/delete_sticker_set.py index 27b4cfc2..519c5db1 100644 --- a/aiogram/methods/delete_sticker_set.py +++ b/aiogram/methods/delete_sticker_set.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramMethod @@ -15,3 +17,14 @@ class DeleteStickerSet(TelegramMethod[bool]): name: str """Sticker set name""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, name: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, **__pydantic_kwargs) diff --git a/aiogram/methods/delete_webhook.py b/aiogram/methods/delete_webhook.py index ef1bdc88..05c39f4e 100644 --- a/aiogram/methods/delete_webhook.py +++ b/aiogram/methods/delete_webhook.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -17,3 +17,19 @@ class DeleteWebhook(TelegramMethod[bool]): drop_pending_updates: Optional[bool] = None """Pass :code:`True` to drop all pending updates""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + drop_pending_updates: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(drop_pending_updates=drop_pending_updates, **__pydantic_kwargs) diff --git a/aiogram/methods/edit_chat_invite_link.py b/aiogram/methods/edit_chat_invite_link.py index f94111ed..8ec86cab 100644 --- a/aiogram/methods/edit_chat_invite_link.py +++ b/aiogram/methods/edit_chat_invite_link.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ChatInviteLink from .base import TelegramMethod @@ -29,3 +29,32 @@ class EditChatInviteLink(TelegramMethod[ChatInviteLink]): """The maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999""" creates_join_request: Optional[bool] = None """:code:`True`, if users joining the chat via the link need to be approved by chat administrators. If :code:`True`, *member_limit* can't be specified""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + invite_link: str, + name: Optional[str] = None, + expire_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + member_limit: Optional[int] = None, + creates_join_request: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + invite_link=invite_link, + name=name, + expire_date=expire_date, + member_limit=member_limit, + creates_join_request=creates_join_request, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_forum_topic.py b/aiogram/methods/edit_forum_topic.py index 46ef0e58..f0afb354 100644 --- a/aiogram/methods/edit_forum_topic.py +++ b/aiogram/methods/edit_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -23,3 +23,28 @@ class EditForumTopic(TelegramMethod[bool]): """New topic name, 0-128 characters. If not specified or empty, the current name of the topic will be kept""" icon_custom_emoji_id: Optional[str] = None """New unique identifier of the custom emoji shown as the topic icon. Use :class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers` to get all allowed custom emoji identifiers. Pass an empty string to remove the icon. If not specified, the current icon will be kept""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: int, + name: Optional[str] = None, + icon_custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_thread_id=message_thread_id, + name=name, + icon_custom_emoji_id=icon_custom_emoji_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_general_forum_topic.py b/aiogram/methods/edit_general_forum_topic.py index 1de088cf..fe5acadf 100644 --- a/aiogram/methods/edit_general_forum_topic.py +++ b/aiogram/methods/edit_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,16 @@ class EditGeneralForumTopic(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" name: str """New topic name, 1-128 characters""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], name: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, name=name, **__pydantic_kwargs) diff --git a/aiogram/methods/edit_message_caption.py b/aiogram/methods/edit_message_caption.py index ee2f8482..4c15e6d8 100644 --- a/aiogram/methods/edit_message_caption.py +++ b/aiogram/methods/edit_message_caption.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import UNSET_PARSE_MODE, InlineKeyboardMarkup, Message, MessageEntity from .base import TelegramMethod @@ -30,3 +30,34 @@ class EditMessageCaption(TelegramMethod[Union[Message, bool]]): """A JSON-serialized list of special entities that appear in the caption, which can be specified instead of *parse_mode*""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for an `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_message_live_location.py b/aiogram/methods/edit_message_live_location.py index 43ff24e7..44406203 100644 --- a/aiogram/methods/edit_message_live_location.py +++ b/aiogram/methods/edit_message_live_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod @@ -34,3 +34,38 @@ class EditMessageLiveLocation(TelegramMethod[Union[Message, bool]]): """The maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for a new `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + latitude: float, + longitude: float, + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + horizontal_accuracy: Optional[float] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + latitude=latitude, + longitude=longitude, + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + horizontal_accuracy=horizontal_accuracy, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_message_media.py b/aiogram/methods/edit_message_media.py index 5d006146..a354de03 100644 --- a/aiogram/methods/edit_message_media.py +++ b/aiogram/methods/edit_message_media.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( InlineKeyboardMarkup, @@ -36,3 +36,36 @@ class EditMessageMedia(TelegramMethod[Union[Message, bool]]): """Required if *chat_id* and *message_id* are not specified. Identifier of the inline message""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for a new `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + media: Union[ + InputMediaAnimation, + InputMediaDocument, + InputMediaAudio, + InputMediaPhoto, + InputMediaVideo, + ], + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + media=media, + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_message_reply_markup.py b/aiogram/methods/edit_message_reply_markup.py index 7c8be63f..bc957a14 100644 --- a/aiogram/methods/edit_message_reply_markup.py +++ b/aiogram/methods/edit_message_reply_markup.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod @@ -24,3 +24,28 @@ class EditMessageReplyMarkup(TelegramMethod[Union[Message, bool]]): """Required if *chat_id* and *message_id* are not specified. Identifier of the inline message""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for an `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/edit_message_text.py b/aiogram/methods/edit_message_text.py index 357a757b..c795e0f2 100644 --- a/aiogram/methods/edit_message_text.py +++ b/aiogram/methods/edit_message_text.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import UNSET_PARSE_MODE, InlineKeyboardMarkup, Message, MessageEntity from ..types.base import UNSET_DISABLE_WEB_PAGE_PREVIEW @@ -33,3 +33,36 @@ class EditMessageText(TelegramMethod[Union[Message, bool]]): """Disables link previews for links in this message""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for an `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + text: str, + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + text=text, + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/export_chat_invite_link.py b/aiogram/methods/export_chat_invite_link.py index 61642387..271e35d1 100644 --- a/aiogram/methods/export_chat_invite_link.py +++ b/aiogram/methods/export_chat_invite_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,16 @@ class ExportChatInviteLink(TelegramMethod[str]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/forward_message.py b/aiogram/methods/forward_message.py index 86d33f8d..a0eeb79f 100644 --- a/aiogram/methods/forward_message.py +++ b/aiogram/methods/forward_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import Message from ..types.base import UNSET_PROTECT_CONTENT @@ -29,3 +29,32 @@ class ForwardMessage(TelegramMethod[Message]): """Sends the message `silently `_. Users will receive a notification with no sound.""" protect_content: Optional[bool] = UNSET_PROTECT_CONTENT """Protects the contents of the forwarded message from forwarding and saving""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + from_chat_id: Union[int, str], + message_id: int, + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + from_chat_id=from_chat_id, + message_id=message_id, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/get_chat.py b/aiogram/methods/get_chat.py index d0416238..d835aa55 100644 --- a/aiogram/methods/get_chat.py +++ b/aiogram/methods/get_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from ..types import Chat from .base import TelegramMethod @@ -18,3 +18,16 @@ class GetChat(TelegramMethod[Chat]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_chat_administrators.py b/aiogram/methods/get_chat_administrators.py index b6479ec8..99e403e2 100644 --- a/aiogram/methods/get_chat_administrators.py +++ b/aiogram/methods/get_chat_administrators.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Union +from typing import TYPE_CHECKING, Any, List, Union from ..types import ( ChatMemberAdministrator, @@ -47,3 +47,16 @@ class GetChatAdministrators( chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_chat_member.py b/aiogram/methods/get_chat_member.py index 9e8ba619..495f6287 100644 --- a/aiogram/methods/get_chat_member.py +++ b/aiogram/methods/get_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from ..types import ( ChatMemberAdministrator, @@ -45,3 +45,16 @@ class GetChatMember( """Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)""" user_id: int """Unique identifier of the target user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], user_id: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, user_id=user_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_chat_member_count.py b/aiogram/methods/get_chat_member_count.py index a411d0c9..fc33c23f 100644 --- a/aiogram/methods/get_chat_member_count.py +++ b/aiogram/methods/get_chat_member_count.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class GetChatMemberCount(TelegramMethod[int]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_chat_menu_button.py b/aiogram/methods/get_chat_menu_button.py index df280b66..ee1248d0 100644 --- a/aiogram/methods/get_chat_menu_button.py +++ b/aiogram/methods/get_chat_menu_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp from .base import TelegramMethod @@ -20,3 +20,16 @@ class GetChatMenuButton( chat_id: Optional[int] = None """Unique identifier for the target private chat. If not specified, default bot's menu button will be returned""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Optional[int] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_custom_emoji_stickers.py b/aiogram/methods/get_custom_emoji_stickers.py index a98582d9..5aeff72f 100644 --- a/aiogram/methods/get_custom_emoji_stickers.py +++ b/aiogram/methods/get_custom_emoji_stickers.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List +from typing import TYPE_CHECKING, Any, List from ..types import Sticker from .base import TelegramMethod @@ -18,3 +18,16 @@ class GetCustomEmojiStickers(TelegramMethod[List[Sticker]]): custom_emoji_ids: List[str] """List of custom emoji identifiers. At most 200 custom emoji identifiers can be specified.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, custom_emoji_ids: List[str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(custom_emoji_ids=custom_emoji_ids, **__pydantic_kwargs) diff --git a/aiogram/methods/get_file.py b/aiogram/methods/get_file.py index 8358e250..c96ff311 100644 --- a/aiogram/methods/get_file.py +++ b/aiogram/methods/get_file.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from ..types import File from .base import TelegramMethod @@ -17,3 +19,14 @@ class GetFile(TelegramMethod[File]): file_id: str """File identifier to get information about""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, file_id: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(file_id=file_id, **__pydantic_kwargs) diff --git a/aiogram/methods/get_game_high_scores.py b/aiogram/methods/get_game_high_scores.py index 1251658c..cac9d61a 100644 --- a/aiogram/methods/get_game_high_scores.py +++ b/aiogram/methods/get_game_high_scores.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import GameHighScore from .base import TelegramMethod @@ -26,3 +26,28 @@ class GetGameHighScores(TelegramMethod[List[GameHighScore]]): """Required if *inline_message_id* is not specified. Identifier of the sent message""" inline_message_id: Optional[str] = None """Required if *chat_id* and *message_id* are not specified. Identifier of the inline message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + chat_id: Optional[int] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + user_id=user_id, + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/get_my_commands.py b/aiogram/methods/get_my_commands.py index 4be74e21..b3386b66 100644 --- a/aiogram/methods/get_my_commands.py +++ b/aiogram/methods/get_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( BotCommand, @@ -39,3 +39,30 @@ class GetMyCommands(TelegramMethod[List[BotCommand]]): """A JSON-serialized object, describing scope of users. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """A two-letter ISO 639-1 language code or an empty string""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(scope=scope, language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/get_my_default_administrator_rights.py b/aiogram/methods/get_my_default_administrator_rights.py index 1c7c0195..4f9ad9a6 100644 --- a/aiogram/methods/get_my_default_administrator_rights.py +++ b/aiogram/methods/get_my_default_administrator_rights.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import ChatAdministratorRights from .base import TelegramMethod @@ -18,3 +18,16 @@ class GetMyDefaultAdministratorRights(TelegramMethod[ChatAdministratorRights]): for_channels: Optional[bool] = None """Pass :code:`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.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, for_channels: Optional[bool] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(for_channels=for_channels, **__pydantic_kwargs) diff --git a/aiogram/methods/get_my_description.py b/aiogram/methods/get_my_description.py index db002daa..f967faf6 100644 --- a/aiogram/methods/get_my_description.py +++ b/aiogram/methods/get_my_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import BotDescription from .base import TelegramMethod @@ -18,3 +18,16 @@ class GetMyDescription(TelegramMethod[BotDescription]): language_code: Optional[str] = None """A two-letter ISO 639-1 language code or an empty string""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, language_code: Optional[str] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/get_my_name.py b/aiogram/methods/get_my_name.py index 202b21ff..909ac3f6 100644 --- a/aiogram/methods/get_my_name.py +++ b/aiogram/methods/get_my_name.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import BotName from .base import TelegramMethod @@ -16,3 +16,16 @@ class GetMyName(TelegramMethod[BotName]): language_code: Optional[str] = None """A two-letter ISO 639-1 language code or an empty string""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, language_code: Optional[str] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/get_my_short_description.py b/aiogram/methods/get_my_short_description.py index 962642e4..a9a56669 100644 --- a/aiogram/methods/get_my_short_description.py +++ b/aiogram/methods/get_my_short_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import BotShortDescription from .base import TelegramMethod @@ -18,3 +18,16 @@ class GetMyShortDescription(TelegramMethod[BotShortDescription]): language_code: Optional[str] = None """A two-letter ISO 639-1 language code or an empty string""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, language_code: Optional[str] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/get_sticker_set.py b/aiogram/methods/get_sticker_set.py index 43ab5311..2700e172 100644 --- a/aiogram/methods/get_sticker_set.py +++ b/aiogram/methods/get_sticker_set.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from ..types import StickerSet from .base import TelegramMethod @@ -16,3 +18,14 @@ class GetStickerSet(TelegramMethod[StickerSet]): name: str """Name of the sticker set""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, name: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, **__pydantic_kwargs) diff --git a/aiogram/methods/get_updates.py b/aiogram/methods/get_updates.py index 80abf78c..5c28aea3 100644 --- a/aiogram/methods/get_updates.py +++ b/aiogram/methods/get_updates.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import Update from .base import TelegramMethod @@ -30,3 +30,28 @@ class GetUpdates(TelegramMethod[List[Update]]): """Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.""" allowed_updates: Optional[List[str]] = None """A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + offset: Optional[int] = None, + limit: Optional[int] = None, + timeout: Optional[int] = None, + allowed_updates: Optional[List[str]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + offset=offset, + limit=limit, + timeout=timeout, + allowed_updates=allowed_updates, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/get_user_profile_photos.py b/aiogram/methods/get_user_profile_photos.py index e58bd970..488885e1 100644 --- a/aiogram/methods/get_user_profile_photos.py +++ b/aiogram/methods/get_user_profile_photos.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import UserProfilePhotos from .base import TelegramMethod @@ -22,3 +22,21 @@ class GetUserProfilePhotos(TelegramMethod[UserProfilePhotos]): """Sequential number of the first photo to be returned. By default, all photos are returned.""" limit: Optional[int] = None """Limits the number of photos to be retrieved. Values between 1-100 are accepted. Defaults to 100.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + offset: Optional[int] = None, + limit: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(user_id=user_id, offset=offset, limit=limit, **__pydantic_kwargs) diff --git a/aiogram/methods/hide_general_forum_topic.py b/aiogram/methods/hide_general_forum_topic.py index 25e6421b..a3b6ee3f 100644 --- a/aiogram/methods/hide_general_forum_topic.py +++ b/aiogram/methods/hide_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class HideGeneralForumTopic(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/leave_chat.py b/aiogram/methods/leave_chat.py index f1784f65..f9d43128 100644 --- a/aiogram/methods/leave_chat.py +++ b/aiogram/methods/leave_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class LeaveChat(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup or channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/pin_chat_message.py b/aiogram/methods/pin_chat_message.py index 24e7a7c1..fe99cc25 100644 --- a/aiogram/methods/pin_chat_message.py +++ b/aiogram/methods/pin_chat_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -21,3 +21,26 @@ class PinChatMessage(TelegramMethod[bool]): """Identifier of a message to pin""" disable_notification: Optional[bool] = None """Pass :code:`True` if it is not necessary to send a notification to all chat members about the new pinned message. Notifications are always disabled in channels and private chats.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_id: int, + disable_notification: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_id=message_id, + disable_notification=disable_notification, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/promote_chat_member.py b/aiogram/methods/promote_chat_member.py index c74d1de9..4f9377d3 100644 --- a/aiogram/methods/promote_chat_member.py +++ b/aiogram/methods/promote_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -43,3 +43,48 @@ class PromoteChatMember(TelegramMethod[bool]): """Pass :code:`True` if the administrator can pin messages, supergroups only""" can_manage_topics: Optional[bool] = None """Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + user_id: int, + is_anonymous: Optional[bool] = None, + can_manage_chat: Optional[bool] = None, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, + can_delete_messages: Optional[bool] = None, + can_manage_video_chats: Optional[bool] = None, + can_restrict_members: Optional[bool] = None, + can_promote_members: Optional[bool] = None, + can_change_info: Optional[bool] = None, + can_invite_users: Optional[bool] = None, + can_pin_messages: Optional[bool] = None, + can_manage_topics: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + user_id=user_id, + is_anonymous=is_anonymous, + can_manage_chat=can_manage_chat, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, + can_delete_messages=can_delete_messages, + can_manage_video_chats=can_manage_video_chats, + can_restrict_members=can_restrict_members, + can_promote_members=can_promote_members, + can_change_info=can_change_info, + can_invite_users=can_invite_users, + can_pin_messages=can_pin_messages, + can_manage_topics=can_manage_topics, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/reopen_forum_topic.py b/aiogram/methods/reopen_forum_topic.py index 729db37c..45eb18d0 100644 --- a/aiogram/methods/reopen_forum_topic.py +++ b/aiogram/methods/reopen_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,22 @@ class ReopenForumTopic(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" message_thread_id: int """Unique identifier for the target message thread of the forum topic""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, message_thread_id=message_thread_id, **__pydantic_kwargs + ) diff --git a/aiogram/methods/reopen_general_forum_topic.py b/aiogram/methods/reopen_general_forum_topic.py index ea3a4a47..a6dc04e0 100644 --- a/aiogram/methods/reopen_general_forum_topic.py +++ b/aiogram/methods/reopen_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class ReopenGeneralForumTopic(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/restrict_chat_member.py b/aiogram/methods/restrict_chat_member.py index 9240ea60..331e95f7 100644 --- a/aiogram/methods/restrict_chat_member.py +++ b/aiogram/methods/restrict_chat_member.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ChatPermissions from .base import TelegramMethod @@ -27,3 +27,30 @@ class RestrictChatMember(TelegramMethod[bool]): """Pass :code:`True` if chat permissions are set independently. Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*, *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the *can_send_polls* permission will imply the *can_send_messages* permission.""" until_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None """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""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + user_id: int, + permissions: ChatPermissions, + use_independent_chat_permissions: Optional[bool] = None, + until_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + user_id=user_id, + permissions=permissions, + use_independent_chat_permissions=use_independent_chat_permissions, + until_date=until_date, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/revoke_chat_invite_link.py b/aiogram/methods/revoke_chat_invite_link.py index e7d9c50e..414feb30 100644 --- a/aiogram/methods/revoke_chat_invite_link.py +++ b/aiogram/methods/revoke_chat_invite_link.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from ..types import ChatInviteLink from .base import TelegramMethod @@ -20,3 +20,20 @@ class RevokeChatInviteLink(TelegramMethod[ChatInviteLink]): """Unique identifier of the target chat or username of the target channel (in the format :code:`@channelusername`)""" invite_link: str """The invite link to revoke""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + invite_link: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, invite_link=invite_link, **__pydantic_kwargs) diff --git a/aiogram/methods/send_animation.py b/aiogram/methods/send_animation.py index 088ce252..e803b0b1 100644 --- a/aiogram/methods/send_animation.py +++ b/aiogram/methods/send_animation.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -60,3 +60,54 @@ class SendAnimation(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + animation: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + animation=animation, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_audio.py b/aiogram/methods/send_audio.py index e947cbde..fd6404cb 100644 --- a/aiogram/methods/send_audio.py +++ b/aiogram/methods/send_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -59,3 +59,52 @@ class SendAudio(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + audio: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + audio=audio, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_chat_action.py b/aiogram/methods/send_chat_action.py index 009fea09..8b936ab7 100644 --- a/aiogram/methods/send_chat_action.py +++ b/aiogram/methods/send_chat_action.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -25,3 +25,26 @@ class SendChatAction(TelegramMethod[bool]): """Type of action to broadcast. Choose one, depending on what the user is about to receive: *typing* for `text messages `_, *upload_photo* for `photos `_, *record_video* or *upload_video* for `videos `_, *record_voice* or *upload_voice* for `voice notes `_, *upload_document* for `general files `_, *choose_sticker* for `stickers `_, *find_location* for `location data `_, *record_video_note* or *upload_video_note* for `video notes `_.""" message_thread_id: Optional[int] = None """Unique identifier for the target message thread; supergroups only""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + action: str, + message_thread_id: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + action=action, + message_thread_id=message_thread_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_contact.py b/aiogram/methods/send_contact.py index d0454674..0053b1ea 100644 --- a/aiogram/methods/send_contact.py +++ b/aiogram/methods/send_contact.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -47,3 +47,44 @@ class SendContact(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + phone_number: str, + first_name: str, + message_thread_id: Optional[int] = None, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + phone_number=phone_number, + first_name=first_name, + message_thread_id=message_thread_id, + last_name=last_name, + vcard=vcard, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_dice.py b/aiogram/methods/send_dice.py index bc58d53a..a06442d5 100644 --- a/aiogram/methods/send_dice.py +++ b/aiogram/methods/send_dice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -41,3 +41,38 @@ class SendDice(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_document.py b/aiogram/methods/send_document.py index cacb62a5..d7ac0e20 100644 --- a/aiogram/methods/send_document.py +++ b/aiogram/methods/send_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -54,3 +54,48 @@ class SendDocument(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + document: Union[InputFile, str], + message_thread_id: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + document=document, + message_thread_id=message_thread_id, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_game.py b/aiogram/methods/send_game.py index f713d6a6..e7d0e667 100644 --- a/aiogram/methods/send_game.py +++ b/aiogram/methods/send_game.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import InlineKeyboardMarkup, Message from ..types.base import UNSET_PROTECT_CONTENT @@ -33,3 +33,36 @@ class SendGame(TelegramMethod[Message]): """Pass :code:`True` if the message should be sent even if the specified replied-to message is not found""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for an `inline keyboard `_. If empty, one 'Play game_title' button will be shown. If not empty, the first button must launch the game.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: int, + game_short_name: str, + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + game_short_name=game_short_name, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_invoice.py b/aiogram/methods/send_invoice.py index aca8aa71..71bed6df 100644 --- a/aiogram/methods/send_invoice.py +++ b/aiogram/methods/send_invoice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import InlineKeyboardMarkup, LabeledPrice, Message from ..types.base import UNSET_PROTECT_CONTENT @@ -73,3 +73,76 @@ class SendInvoice(TelegramMethod[Message]): """Pass :code:`True` if the message should be sent even if the specified replied-to message is not found""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for an `inline keyboard `_. If empty, one 'Pay :code:`total price`' button will be shown. If not empty, the first button must be a Pay button.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + message_thread_id: Optional[int] = None, + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + start_parameter: Optional[str] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + message_thread_id=message_thread_id, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + start_parameter=start_parameter, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_location.py b/aiogram/methods/send_location.py index ddfb3604..4eac028c 100644 --- a/aiogram/methods/send_location.py +++ b/aiogram/methods/send_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -51,3 +51,48 @@ class SendLocation(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + latitude: float, + longitude: float, + message_thread_id: Optional[int] = None, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + latitude=latitude, + longitude=longitude, + message_thread_id=message_thread_id, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_media_group.py b/aiogram/methods/send_media_group.py index a01e4de8..3fa31852 100644 --- a/aiogram/methods/send_media_group.py +++ b/aiogram/methods/send_media_group.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( InputMediaAudio, @@ -37,3 +37,36 @@ class SendMediaGroup(TelegramMethod[List[Message]]): """If the messages are a reply, ID of the original message""" allow_sending_without_reply: Optional[bool] = None """Pass :code:`True` if the message should be sent even if the specified replied-to message is not found""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + media: List[ + Union[InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo] + ], + message_thread_id: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + media=media, + message_thread_id=message_thread_id, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_message.py b/aiogram/methods/send_message.py index 1e460239..8e33687c 100644 --- a/aiogram/methods/send_message.py +++ b/aiogram/methods/send_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -49,3 +49,44 @@ class SendMessage(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + text: str, + message_thread_id: Optional[int] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + text=text, + message_thread_id=message_thread_id, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_photo.py b/aiogram/methods/send_photo.py index 6ce9d928..521b2b70 100644 --- a/aiogram/methods/send_photo.py +++ b/aiogram/methods/send_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -52,3 +52,46 @@ class SendPhoto(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + photo: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + photo=photo, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_poll.py b/aiogram/methods/send_poll.py index 41d7e4c5..f67ca805 100644 --- a/aiogram/methods/send_poll.py +++ b/aiogram/methods/send_poll.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -66,3 +66,60 @@ class SendPoll(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + question: str, + options: List[str], + message_thread_id: Optional[int] = None, + is_anonymous: Optional[bool] = None, + type: Optional[str] = None, + allows_multiple_answers: Optional[bool] = None, + correct_option_id: Optional[int] = None, + explanation: Optional[str] = None, + explanation_parse_mode: Optional[str] = UNSET_PARSE_MODE, + explanation_entities: Optional[List[MessageEntity]] = None, + open_period: Optional[int] = None, + close_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None, + is_closed: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + question=question, + options=options, + message_thread_id=message_thread_id, + is_anonymous=is_anonymous, + type=type, + allows_multiple_answers=allows_multiple_answers, + correct_option_id=correct_option_id, + explanation=explanation, + explanation_parse_mode=explanation_parse_mode, + explanation_entities=explanation_entities, + open_period=open_period, + close_date=close_date, + is_closed=is_closed, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_sticker.py b/aiogram/methods/send_sticker.py index 384a5adb..6e270024 100644 --- a/aiogram/methods/send_sticker.py +++ b/aiogram/methods/send_sticker.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -44,3 +44,40 @@ class SendSticker(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + sticker: Union[InputFile, str], + message_thread_id: Optional[int] = None, + emoji: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + sticker=sticker, + message_thread_id=message_thread_id, + emoji=emoji, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_venue.py b/aiogram/methods/send_venue.py index ac69fdc6..85137d42 100644 --- a/aiogram/methods/send_venue.py +++ b/aiogram/methods/send_venue.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -55,3 +55,52 @@ class SendVenue(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + latitude: float, + longitude: float, + title: str, + address: str, + message_thread_id: Optional[int] = None, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + latitude=latitude, + longitude=longitude, + title=title, + address=address, + message_thread_id=message_thread_id, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_video.py b/aiogram/methods/send_video.py index 1ee7c903..c61a8c92 100644 --- a/aiogram/methods/send_video.py +++ b/aiogram/methods/send_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -62,3 +62,56 @@ class SendVideo(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + video: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + supports_streaming: Optional[bool] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + video=video, + message_thread_id=message_thread_id, + duration=duration, + width=width, + height=height, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + supports_streaming=supports_streaming, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_video_note.py b/aiogram/methods/send_video_note.py index cd270e94..235134dd 100644 --- a/aiogram/methods/send_video_note.py +++ b/aiogram/methods/send_video_note.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ( ForceReply, @@ -48,3 +48,44 @@ class SendVideoNote(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + video_note: Union[InputFile, str], + message_thread_id: Optional[int] = None, + duration: Optional[int] = None, + length: Optional[int] = None, + thumbnail: Optional[Union[InputFile, str]] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + video_note=video_note, + message_thread_id=message_thread_id, + duration=duration, + length=length, + thumbnail=thumbnail, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/send_voice.py b/aiogram/methods/send_voice.py index d9c915f4..24fd86e2 100644 --- a/aiogram/methods/send_voice.py +++ b/aiogram/methods/send_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( UNSET_PARSE_MODE, @@ -52,3 +52,46 @@ class SendVoice(TelegramMethod[Message]): Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] ] = None """Additional interface options. A JSON-serialized object for an `inline keyboard `_, `custom reply keyboard `_, instructions to remove reply keyboard or to force a reply from the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + voice: Union[InputFile, str], + message_thread_id: Optional[int] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + disable_notification: Optional[bool] = None, + protect_content: Optional[bool] = UNSET_PROTECT_CONTENT, + reply_to_message_id: Optional[int] = None, + allow_sending_without_reply: Optional[bool] = None, + reply_markup: Optional[ + Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, ReplyKeyboardRemove, ForceReply] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + voice=voice, + message_thread_id=message_thread_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + disable_notification=disable_notification, + protect_content=protect_content, + reply_to_message_id=reply_to_message_id, + allow_sending_without_reply=allow_sending_without_reply, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/set_chat_administrator_custom_title.py b/aiogram/methods/set_chat_administrator_custom_title.py index 5415594f..a7953c12 100644 --- a/aiogram/methods/set_chat_administrator_custom_title.py +++ b/aiogram/methods/set_chat_administrator_custom_title.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -21,3 +21,23 @@ class SetChatAdministratorCustomTitle(TelegramMethod[bool]): """Unique identifier of the target user""" custom_title: str """New custom title for the administrator; 0-16 characters, emoji are not allowed""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + user_id: int, + custom_title: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, user_id=user_id, custom_title=custom_title, **__pydantic_kwargs + ) diff --git a/aiogram/methods/set_chat_description.py b/aiogram/methods/set_chat_description.py index 81eaf263..0f8a4a4b 100644 --- a/aiogram/methods/set_chat_description.py +++ b/aiogram/methods/set_chat_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -19,3 +19,20 @@ class SetChatDescription(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" description: Optional[str] = None """New chat description, 0-255 characters""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + description: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, description=description, **__pydantic_kwargs) diff --git a/aiogram/methods/set_chat_menu_button.py b/aiogram/methods/set_chat_menu_button.py index 9cbd019b..97515d5a 100644 --- a/aiogram/methods/set_chat_menu_button.py +++ b/aiogram/methods/set_chat_menu_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import MenuButtonCommands, MenuButtonDefault, MenuButtonWebApp from .base import TelegramMethod @@ -20,3 +20,22 @@ class SetChatMenuButton(TelegramMethod[bool]): """Unique identifier for the target private chat. If not specified, default bot's menu button will be changed""" menu_button: Optional[Union[MenuButtonCommands, MenuButtonWebApp, MenuButtonDefault]] = None """A JSON-serialized object for the bot's new menu button. Defaults to :class:`aiogram.types.menu_button_default.MenuButtonDefault`""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Optional[int] = None, + menu_button: Optional[ + Union[MenuButtonCommands, MenuButtonWebApp, MenuButtonDefault] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, menu_button=menu_button, **__pydantic_kwargs) diff --git a/aiogram/methods/set_chat_permissions.py b/aiogram/methods/set_chat_permissions.py index 3c3ed008..232af08c 100644 --- a/aiogram/methods/set_chat_permissions.py +++ b/aiogram/methods/set_chat_permissions.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import ChatPermissions from .base import TelegramMethod @@ -22,3 +22,26 @@ class SetChatPermissions(TelegramMethod[bool]): """A JSON-serialized object for new default chat permissions""" use_independent_chat_permissions: Optional[bool] = None """Pass :code:`True` if chat permissions are set independently. Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*, *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the *can_send_polls* permission will imply the *can_send_messages* permission.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + permissions: ChatPermissions, + use_independent_chat_permissions: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + permissions=permissions, + use_independent_chat_permissions=use_independent_chat_permissions, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/set_chat_photo.py b/aiogram/methods/set_chat_photo.py index dc07a445..105f8f87 100644 --- a/aiogram/methods/set_chat_photo.py +++ b/aiogram/methods/set_chat_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from ..types import InputFile from .base import TelegramMethod @@ -20,3 +20,20 @@ class SetChatPhoto(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" photo: InputFile """New chat photo, uploaded using multipart/form-data""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + photo: InputFile, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, photo=photo, **__pydantic_kwargs) diff --git a/aiogram/methods/set_chat_sticker_set.py b/aiogram/methods/set_chat_sticker_set.py index 6df42a0a..62ed5d18 100644 --- a/aiogram/methods/set_chat_sticker_set.py +++ b/aiogram/methods/set_chat_sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,22 @@ class SetChatStickerSet(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" sticker_set_name: str """Name of the sticker set to be set as the group sticker set""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + sticker_set_name: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, sticker_set_name=sticker_set_name, **__pydantic_kwargs + ) diff --git a/aiogram/methods/set_chat_title.py b/aiogram/methods/set_chat_title.py index b4ce0a4a..04b52e09 100644 --- a/aiogram/methods/set_chat_title.py +++ b/aiogram/methods/set_chat_title.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,16 @@ class SetChatTitle(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" title: str """New chat title, 1-128 characters""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], title: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, title=title, **__pydantic_kwargs) diff --git a/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py b/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py index 8c8fa479..47e9c033 100644 --- a/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py +++ b/aiogram/methods/set_custom_emoji_sticker_set_thumbnail.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -19,3 +19,20 @@ class SetCustomEmojiStickerSetThumbnail(TelegramMethod[bool]): """Sticker set name""" custom_emoji_id: Optional[str] = None """Custom emoji identifier of a sticker from the sticker set; pass an empty string to drop the thumbnail and use the first sticker as the thumbnail.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: str, + custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, custom_emoji_id=custom_emoji_id, **__pydantic_kwargs) diff --git a/aiogram/methods/set_game_score.py b/aiogram/methods/set_game_score.py index 590ca59d..38e5374f 100644 --- a/aiogram/methods/set_game_score.py +++ b/aiogram/methods/set_game_score.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import Message from .base import TelegramMethod @@ -30,3 +30,34 @@ class SetGameScore(TelegramMethod[Union[Message, bool]]): """Required if *inline_message_id* is not specified. Identifier of the sent message""" inline_message_id: Optional[str] = None """Required if *chat_id* and *message_id* are not specified. Identifier of the inline message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + score: int, + force: Optional[bool] = None, + disable_edit_message: Optional[bool] = None, + chat_id: Optional[int] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + user_id=user_id, + score=score, + force=force, + disable_edit_message=disable_edit_message, + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/set_my_commands.py b/aiogram/methods/set_my_commands.py index 3aff027f..2e52771f 100644 --- a/aiogram/methods/set_my_commands.py +++ b/aiogram/methods/set_my_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from ..types import ( BotCommand, @@ -41,3 +41,33 @@ class SetMyCommands(TelegramMethod[bool]): """A JSON-serialized object, describing scope of users for which the commands are relevant. Defaults to :class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`.""" language_code: Optional[str] = None """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""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + commands: List[BotCommand], + scope: Optional[ + Union[ + BotCommandScopeDefault, + BotCommandScopeAllPrivateChats, + BotCommandScopeAllGroupChats, + BotCommandScopeAllChatAdministrators, + BotCommandScopeChat, + BotCommandScopeChatAdministrators, + BotCommandScopeChatMember, + ] + ] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + commands=commands, scope=scope, language_code=language_code, **__pydantic_kwargs + ) diff --git a/aiogram/methods/set_my_default_administrator_rights.py b/aiogram/methods/set_my_default_administrator_rights.py index 8817a9dc..02aa7ada 100644 --- a/aiogram/methods/set_my_default_administrator_rights.py +++ b/aiogram/methods/set_my_default_administrator_rights.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import ChatAdministratorRights from .base import TelegramMethod @@ -20,3 +20,20 @@ class SetMyDefaultAdministratorRights(TelegramMethod[bool]): """A JSON-serialized object describing new default administrator rights. If not specified, the default administrator rights will be cleared.""" for_channels: Optional[bool] = None """Pass :code:`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.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + rights: Optional[ChatAdministratorRights] = None, + for_channels: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(rights=rights, for_channels=for_channels, **__pydantic_kwargs) diff --git a/aiogram/methods/set_my_description.py b/aiogram/methods/set_my_description.py index fba6b8d3..ee192c88 100644 --- a/aiogram/methods/set_my_description.py +++ b/aiogram/methods/set_my_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -19,3 +19,22 @@ class SetMyDescription(TelegramMethod[bool]): """New bot description; 0-512 characters. Pass an empty string to remove the dedicated description for the given language.""" language_code: Optional[str] = None """A two-letter ISO 639-1 language code. If empty, the description will be applied to all users for whose language there is no dedicated description.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + description: Optional[str] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + description=description, language_code=language_code, **__pydantic_kwargs + ) diff --git a/aiogram/methods/set_my_name.py b/aiogram/methods/set_my_name.py index 9b392281..3633fdc8 100644 --- a/aiogram/methods/set_my_name.py +++ b/aiogram/methods/set_my_name.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -17,3 +17,20 @@ class SetMyName(TelegramMethod[bool]): """New bot name; 0-64 characters. Pass an empty string to remove the dedicated name for the given language.""" language_code: Optional[str] = None """A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose language there is no dedicated name.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: Optional[str] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, language_code=language_code, **__pydantic_kwargs) diff --git a/aiogram/methods/set_my_short_description.py b/aiogram/methods/set_my_short_description.py index 0c697d4b..22fa5817 100644 --- a/aiogram/methods/set_my_short_description.py +++ b/aiogram/methods/set_my_short_description.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramMethod @@ -19,3 +19,24 @@ class SetMyShortDescription(TelegramMethod[bool]): """New short description for the bot; 0-120 characters. Pass an empty string to remove the dedicated short description for the given language.""" language_code: Optional[str] = None """A two-letter ISO 639-1 language code. If empty, the short description will be applied to all users for whose language there is no dedicated short description.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + short_description: Optional[str] = None, + language_code: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + short_description=short_description, + language_code=language_code, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/set_passport_data_errors.py b/aiogram/methods/set_passport_data_errors.py index 8dbd52b2..0ad7e8bb 100644 --- a/aiogram/methods/set_passport_data_errors.py +++ b/aiogram/methods/set_passport_data_errors.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Union +from typing import TYPE_CHECKING, Any, List, Union from ..types import ( PassportElementErrorDataField, @@ -43,3 +43,32 @@ class SetPassportDataErrors(TelegramMethod[bool]): ] ] """A JSON-serialized array describing the errors""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + errors: List[ + Union[ + PassportElementErrorDataField, + PassportElementErrorFrontSide, + PassportElementErrorReverseSide, + PassportElementErrorSelfie, + PassportElementErrorFile, + PassportElementErrorFiles, + PassportElementErrorTranslationFile, + PassportElementErrorTranslationFiles, + PassportElementErrorUnspecified, + ] + ], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(user_id=user_id, errors=errors, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_emoji_list.py b/aiogram/methods/set_sticker_emoji_list.py index b88f609e..ac268c1e 100644 --- a/aiogram/methods/set_sticker_emoji_list.py +++ b/aiogram/methods/set_sticker_emoji_list.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List +from typing import TYPE_CHECKING, Any, List from .base import TelegramMethod @@ -19,3 +19,16 @@ class SetStickerEmojiList(TelegramMethod[bool]): """File identifier of the sticker""" emoji_list: List[str] """A JSON-serialized list of 1-20 emoji associated with the sticker""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, sticker: str, emoji_list: List[str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(sticker=sticker, emoji_list=emoji_list, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_keywords.py b/aiogram/methods/set_sticker_keywords.py index 1179613b..49e68f85 100644 --- a/aiogram/methods/set_sticker_keywords.py +++ b/aiogram/methods/set_sticker_keywords.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramMethod @@ -19,3 +19,20 @@ class SetStickerKeywords(TelegramMethod[bool]): """File identifier of the sticker""" keywords: Optional[List[str]] = None """A JSON-serialized list of 0-20 search keywords for the sticker with total length of up to 64 characters""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + sticker: str, + keywords: Optional[List[str]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(sticker=sticker, keywords=keywords, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_mask_position.py b/aiogram/methods/set_sticker_mask_position.py index 7e82b061..617e48b5 100644 --- a/aiogram/methods/set_sticker_mask_position.py +++ b/aiogram/methods/set_sticker_mask_position.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from ..types import MaskPosition from .base import TelegramMethod @@ -20,3 +20,20 @@ class SetStickerMaskPosition(TelegramMethod[bool]): """File identifier of the sticker""" mask_position: Optional[MaskPosition] = None """A JSON-serialized object with the position where the mask should be placed on faces. Omit the parameter to remove the mask position.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + sticker: str, + mask_position: Optional[MaskPosition] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(sticker=sticker, mask_position=mask_position, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_position_in_set.py b/aiogram/methods/set_sticker_position_in_set.py index 395d2e05..8d30eab1 100644 --- a/aiogram/methods/set_sticker_position_in_set.py +++ b/aiogram/methods/set_sticker_position_in_set.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramMethod @@ -17,3 +19,16 @@ class SetStickerPositionInSet(TelegramMethod[bool]): """File identifier of the sticker""" position: int """New sticker position in the set, zero-based""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, sticker: str, position: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(sticker=sticker, position=position, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_set_thumbnail.py b/aiogram/methods/set_sticker_set_thumbnail.py index 3624bce4..6536d298 100644 --- a/aiogram/methods/set_sticker_set_thumbnail.py +++ b/aiogram/methods/set_sticker_set_thumbnail.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import InputFile from .base import TelegramMethod @@ -22,3 +22,21 @@ class SetStickerSetThumbnail(TelegramMethod[bool]): """User identifier of the sticker set owner""" thumbnail: Optional[Union[InputFile, str]] = None """A **.WEBP** or **.PNG** image with the thumbnail, must be up to 128 kilobytes in size and have a width and height of exactly 100px, or a **.TGS** animation with a thumbnail up to 32 kilobytes in size (see `https://core.telegram.org/stickers#animated-sticker-requirements `_`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 `_`https://core.telegram.org/stickers#video-sticker-requirements `_ for video sticker technical requirements. Pass a *file_id* as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » `. Animated and video sticker set thumbnails can't be uploaded via HTTP URL. If omitted, then the thumbnail is dropped and the first sticker is used as the thumbnail.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: str, + user_id: int, + thumbnail: Optional[Union[InputFile, str]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, user_id=user_id, thumbnail=thumbnail, **__pydantic_kwargs) diff --git a/aiogram/methods/set_sticker_set_title.py b/aiogram/methods/set_sticker_set_title.py index 1136353f..ec25473a 100644 --- a/aiogram/methods/set_sticker_set_title.py +++ b/aiogram/methods/set_sticker_set_title.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramMethod @@ -17,3 +19,16 @@ class SetStickerSetTitle(TelegramMethod[bool]): """Sticker set name""" title: str """Sticker set title, 1-64 characters""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, name: str, title: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, title=title, **__pydantic_kwargs) diff --git a/aiogram/methods/set_webhook.py b/aiogram/methods/set_webhook.py index 66ec86ff..92892531 100644 --- a/aiogram/methods/set_webhook.py +++ b/aiogram/methods/set_webhook.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from ..types import InputFile from .base import TelegramMethod @@ -40,3 +40,34 @@ class SetWebhook(TelegramMethod[bool]): """Pass :code:`True` to drop all pending updates""" secret_token: Optional[str] = None """A secret token to be sent in a header 'X-Telegram-Bot-Api-Secret-Token' in every webhook request, 1-256 characters. Only characters :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. The header is useful to ensure that the request comes from a webhook set by you.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + url: str, + certificate: Optional[InputFile] = None, + ip_address: Optional[str] = None, + max_connections: Optional[int] = None, + allowed_updates: Optional[List[str]] = None, + drop_pending_updates: Optional[bool] = None, + secret_token: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + url=url, + certificate=certificate, + ip_address=ip_address, + max_connections=max_connections, + allowed_updates=allowed_updates, + drop_pending_updates=drop_pending_updates, + secret_token=secret_token, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/stop_message_live_location.py b/aiogram/methods/stop_message_live_location.py index 9361dfae..a6680955 100644 --- a/aiogram/methods/stop_message_live_location.py +++ b/aiogram/methods/stop_message_live_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import InlineKeyboardMarkup, Message from .base import TelegramMethod @@ -24,3 +24,28 @@ class StopMessageLiveLocation(TelegramMethod[Union[Message, bool]]): """Required if *chat_id* and *message_id* are not specified. Identifier of the inline message""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for a new `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Optional[Union[int, str]] = None, + message_id: Optional[int] = None, + inline_message_id: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_id=message_id, + inline_message_id=inline_message_id, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/stop_poll.py b/aiogram/methods/stop_poll.py index 2e93f087..81c46b1a 100644 --- a/aiogram/methods/stop_poll.py +++ b/aiogram/methods/stop_poll.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from ..types import InlineKeyboardMarkup, Poll from .base import TelegramMethod @@ -22,3 +22,26 @@ class StopPoll(TelegramMethod[Poll]): """Identifier of the original message with the poll""" reply_markup: Optional[InlineKeyboardMarkup] = None """A JSON-serialized object for a new message `inline keyboard `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_id: int, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + message_id=message_id, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/unban_chat_member.py b/aiogram/methods/unban_chat_member.py index 19ef9ef7..1094db52 100644 --- a/aiogram/methods/unban_chat_member.py +++ b/aiogram/methods/unban_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -21,3 +21,26 @@ class UnbanChatMember(TelegramMethod[bool]): """Unique identifier of the target user""" only_if_banned: Optional[bool] = None """Do nothing if the user is not banned""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + user_id: int, + only_if_banned: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, + user_id=user_id, + only_if_banned=only_if_banned, + **__pydantic_kwargs, + ) diff --git a/aiogram/methods/unban_chat_sender_chat.py b/aiogram/methods/unban_chat_sender_chat.py index e81278d3..b9816984 100644 --- a/aiogram/methods/unban_chat_sender_chat.py +++ b/aiogram/methods/unban_chat_sender_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,20 @@ class UnbanChatSenderChat(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" sender_chat_id: int """Unique identifier of the target sender chat""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + sender_chat_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, sender_chat_id=sender_chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/unhide_general_forum_topic.py b/aiogram/methods/unhide_general_forum_topic.py index cebcec25..a9149bc8 100644 --- a/aiogram/methods/unhide_general_forum_topic.py +++ b/aiogram/methods/unhide_general_forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class UnhideGeneralForumTopic(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/unpin_all_chat_messages.py b/aiogram/methods/unpin_all_chat_messages.py index 76927e63..aca090f3 100644 --- a/aiogram/methods/unpin_all_chat_messages.py +++ b/aiogram/methods/unpin_all_chat_messages.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -17,3 +17,16 @@ class UnpinAllChatMessages(TelegramMethod[bool]): chat_id: Union[int, str] """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/methods/unpin_all_forum_topic_messages.py b/aiogram/methods/unpin_all_forum_topic_messages.py index 09729e2c..f1350ecc 100644 --- a/aiogram/methods/unpin_all_forum_topic_messages.py +++ b/aiogram/methods/unpin_all_forum_topic_messages.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Union +from typing import TYPE_CHECKING, Any, Union from .base import TelegramMethod @@ -19,3 +19,22 @@ class UnpinAllForumTopicMessages(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" message_thread_id: int """Unique identifier for the target message thread of the forum topic""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_thread_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat_id=chat_id, message_thread_id=message_thread_id, **__pydantic_kwargs + ) diff --git a/aiogram/methods/unpin_chat_message.py b/aiogram/methods/unpin_chat_message.py index 3fb70154..90547140 100644 --- a/aiogram/methods/unpin_chat_message.py +++ b/aiogram/methods/unpin_chat_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional, Union +from typing import TYPE_CHECKING, Any, Optional, Union from .base import TelegramMethod @@ -19,3 +19,20 @@ class UnpinChatMessage(TelegramMethod[bool]): """Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`)""" message_id: Optional[int] = None """Identifier of a message to unpin. If not specified, the most recent pinned message (by sending date) will be unpinned.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat_id: Union[int, str], + message_id: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, message_id=message_id, **__pydantic_kwargs) diff --git a/aiogram/methods/upload_sticker_file.py b/aiogram/methods/upload_sticker_file.py index fd1a229e..077a9822 100644 --- a/aiogram/methods/upload_sticker_file.py +++ b/aiogram/methods/upload_sticker_file.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from ..types import File, InputFile from .base import TelegramMethod @@ -20,3 +22,26 @@ class UploadStickerFile(TelegramMethod[File]): """A file with the sticker in .WEBP, .PNG, .TGS, or .WEBM format. See `https://core.telegram.org/stickers `_`https://core.telegram.org/stickers `_ for technical requirements. :ref:`More information on Sending Files » `""" sticker_format: str """Format of the sticker, must be one of 'static', 'animated', 'video'""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + user_id: int, + sticker: InputFile, + sticker_format: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + user_id=user_id, + sticker=sticker, + sticker_format=sticker_format, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/animation.py b/aiogram/types/animation.py index 15354156..856a5b37 100644 --- a/aiogram/types/animation.py +++ b/aiogram/types/animation.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -33,3 +33,38 @@ class Animation(TelegramObject): """*Optional*. MIME type of the file as defined by sender""" file_size: Optional[int] = None """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + width: int, + height: int, + duration: int, + thumbnail: Optional[PhotoSize] = None, + file_name: Optional[str] = None, + mime_type: Optional[str] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + width=width, + height=height, + duration=duration, + thumbnail=thumbnail, + file_name=file_name, + mime_type=mime_type, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/audio.py b/aiogram/types/audio.py index 0a147c36..f42e3bf2 100644 --- a/aiogram/types/audio.py +++ b/aiogram/types/audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -33,3 +33,38 @@ class Audio(TelegramObject): """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" thumbnail: Optional[PhotoSize] = None """*Optional*. Thumbnail of the album cover to which the music file belongs""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + duration: int, + performer: Optional[str] = None, + title: Optional[str] = None, + file_name: Optional[str] = None, + mime_type: Optional[str] = None, + file_size: Optional[int] = None, + thumbnail: Optional[PhotoSize] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + duration=duration, + performer=performer, + title=title, + file_name=file_name, + mime_type=mime_type, + file_size=file_size, + thumbnail=thumbnail, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/bot_command.py b/aiogram/types/bot_command.py index 1bf65eba..e4e91759 100644 --- a/aiogram/types/bot_command.py +++ b/aiogram/types/bot_command.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import MutableTelegramObject @@ -14,3 +16,16 @@ class BotCommand(MutableTelegramObject): """Text of the command; 1-32 characters. Can contain only lowercase English letters, digits and underscores.""" description: str """Description of the command; 1-256 characters.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, command: str, description: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(command=command, description=description, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_all_chat_administrators.py b/aiogram/types/bot_command_scope_all_chat_administrators.py index ed3dd181..061945f7 100644 --- a/aiogram/types/bot_command_scope_all_chat_administrators.py +++ b/aiogram/types/bot_command_scope_all_chat_administrators.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -17,3 +17,21 @@ class BotCommandScopeAllChatAdministrators(BotCommandScope): BotCommandScopeType.ALL_CHAT_ADMINISTRATORS ] = BotCommandScopeType.ALL_CHAT_ADMINISTRATORS """Scope type, must be *all_chat_administrators*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[ + BotCommandScopeType.ALL_CHAT_ADMINISTRATORS + ] = BotCommandScopeType.ALL_CHAT_ADMINISTRATORS, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_all_group_chats.py b/aiogram/types/bot_command_scope_all_group_chats.py index 3393266a..a17a51da 100644 --- a/aiogram/types/bot_command_scope_all_group_chats.py +++ b/aiogram/types/bot_command_scope_all_group_chats.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,3 +15,21 @@ class BotCommandScopeAllGroupChats(BotCommandScope): type: Literal[BotCommandScopeType.ALL_GROUP_CHATS] = BotCommandScopeType.ALL_GROUP_CHATS """Scope type, must be *all_group_chats*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[ + BotCommandScopeType.ALL_GROUP_CHATS + ] = BotCommandScopeType.ALL_GROUP_CHATS, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_all_private_chats.py b/aiogram/types/bot_command_scope_all_private_chats.py index c53303d1..54d406ff 100644 --- a/aiogram/types/bot_command_scope_all_private_chats.py +++ b/aiogram/types/bot_command_scope_all_private_chats.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,3 +15,21 @@ class BotCommandScopeAllPrivateChats(BotCommandScope): type: Literal[BotCommandScopeType.ALL_PRIVATE_CHATS] = BotCommandScopeType.ALL_PRIVATE_CHATS """Scope type, must be *all_private_chats*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[ + BotCommandScopeType.ALL_PRIVATE_CHATS + ] = BotCommandScopeType.ALL_PRIVATE_CHATS, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_chat.py b/aiogram/types/bot_command_scope_chat.py index f0ef7b58..f36c4a1d 100644 --- a/aiogram/types/bot_command_scope_chat.py +++ b/aiogram/types/bot_command_scope_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Union +from typing import TYPE_CHECKING, Any, Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -17,3 +17,20 @@ class BotCommandScopeChat(BotCommandScope): """Scope type, must be *chat*""" chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[BotCommandScopeType.CHAT] = BotCommandScopeType.CHAT, + chat_id: Union[int, str], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_chat_administrators.py b/aiogram/types/bot_command_scope_chat_administrators.py index 65513db2..8757e98c 100644 --- a/aiogram/types/bot_command_scope_chat_administrators.py +++ b/aiogram/types/bot_command_scope_chat_administrators.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Union +from typing import TYPE_CHECKING, Any, Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -19,3 +19,22 @@ class BotCommandScopeChatAdministrators(BotCommandScope): """Scope type, must be *chat_administrators*""" chat_id: Union[int, str] """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[ + BotCommandScopeType.CHAT_ADMINISTRATORS + ] = BotCommandScopeType.CHAT_ADMINISTRATORS, + chat_id: Union[int, str], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_chat_member.py b/aiogram/types/bot_command_scope_chat_member.py index efb97870..4d20b1f3 100644 --- a/aiogram/types/bot_command_scope_chat_member.py +++ b/aiogram/types/bot_command_scope_chat_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Union +from typing import TYPE_CHECKING, Any, Literal, Union from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -19,3 +19,21 @@ class BotCommandScopeChatMember(BotCommandScope): """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" user_id: int """Unique identifier of the target user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[BotCommandScopeType.CHAT_MEMBER] = BotCommandScopeType.CHAT_MEMBER, + chat_id: Union[int, str], + user_id: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, chat_id=chat_id, user_id=user_id, **__pydantic_kwargs) diff --git a/aiogram/types/bot_command_scope_default.py b/aiogram/types/bot_command_scope_default.py index 449665c9..33b7a0ca 100644 --- a/aiogram/types/bot_command_scope_default.py +++ b/aiogram/types/bot_command_scope_default.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import BotCommandScopeType from .bot_command_scope import BotCommandScope @@ -15,3 +15,19 @@ class BotCommandScopeDefault(BotCommandScope): type: Literal[BotCommandScopeType.DEFAULT] = BotCommandScopeType.DEFAULT """Scope type, must be *default*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[BotCommandScopeType.DEFAULT] = BotCommandScopeType.DEFAULT, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/bot_description.py b/aiogram/types/bot_description.py index a69d492f..5d8646dd 100644 --- a/aiogram/types/bot_description.py +++ b/aiogram/types/bot_description.py @@ -1,3 +1,5 @@ +from typing import TYPE_CHECKING, Any + from aiogram.types import TelegramObject @@ -10,3 +12,14 @@ class BotDescription(TelegramObject): description: str """The bot's description""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, description: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(description=description, **__pydantic_kwargs) diff --git a/aiogram/types/bot_name.py b/aiogram/types/bot_name.py index 103f1fde..f2dc0745 100644 --- a/aiogram/types/bot_name.py +++ b/aiogram/types/bot_name.py @@ -1,3 +1,5 @@ +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -10,3 +12,14 @@ class BotName(TelegramObject): name: str """The bot's name""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, name: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(name=name, **__pydantic_kwargs) diff --git a/aiogram/types/bot_short_description.py b/aiogram/types/bot_short_description.py index 46d5c1c3..86b11cf4 100644 --- a/aiogram/types/bot_short_description.py +++ b/aiogram/types/bot_short_description.py @@ -1,3 +1,5 @@ +from typing import TYPE_CHECKING, Any + from aiogram.types import TelegramObject @@ -10,3 +12,16 @@ class BotShortDescription(TelegramObject): short_description: str """The bot's short description""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, short_description: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(short_description=short_description, **__pydantic_kwargs) diff --git a/aiogram/types/callback_query.py b/aiogram/types/callback_query.py index 59f9ea66..f6e95b1c 100644 --- a/aiogram/types/callback_query.py +++ b/aiogram/types/callback_query.py @@ -36,6 +36,37 @@ class CallbackQuery(TelegramObject): game_short_name: Optional[str] = None """*Optional*. Short name of a `Game `_ to be returned, serves as the unique identifier for the game""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + from_user: User, + chat_instance: str, + message: Optional[Message] = None, + inline_message_id: Optional[str] = None, + data: Optional[str] = None, + game_short_name: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + from_user=from_user, + chat_instance=chat_instance, + message=message, + inline_message_id=inline_message_id, + data=data, + game_short_name=game_short_name, + **__pydantic_kwargs, + ) + def answer( self, text: Optional[str] = None, diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index d5d0dfcc..6c36ae5a 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -106,6 +106,79 @@ class Chat(TelegramObject): location: Optional[ChatLocation] = None """*Optional*. For supergroups, the location to which the supergroup is connected. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: int, + type: str, + title: Optional[str] = None, + username: Optional[str] = None, + first_name: Optional[str] = None, + last_name: Optional[str] = None, + is_forum: Optional[bool] = None, + photo: Optional[ChatPhoto] = None, + active_usernames: Optional[List[str]] = None, + emoji_status_custom_emoji_id: Optional[str] = None, + bio: Optional[str] = None, + has_private_forwards: Optional[bool] = None, + has_restricted_voice_and_video_messages: Optional[bool] = None, + join_to_send_messages: Optional[bool] = None, + join_by_request: Optional[bool] = None, + description: Optional[str] = None, + invite_link: Optional[str] = None, + pinned_message: Optional[Message] = None, + permissions: Optional[ChatPermissions] = None, + slow_mode_delay: Optional[int] = None, + message_auto_delete_time: Optional[int] = None, + has_aggressive_anti_spam_enabled: Optional[bool] = None, + has_hidden_members: Optional[bool] = None, + has_protected_content: Optional[bool] = None, + sticker_set_name: Optional[str] = None, + can_set_sticker_set: Optional[bool] = None, + linked_chat_id: Optional[int] = None, + location: Optional[ChatLocation] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + type=type, + title=title, + username=username, + first_name=first_name, + last_name=last_name, + is_forum=is_forum, + photo=photo, + active_usernames=active_usernames, + emoji_status_custom_emoji_id=emoji_status_custom_emoji_id, + bio=bio, + has_private_forwards=has_private_forwards, + has_restricted_voice_and_video_messages=has_restricted_voice_and_video_messages, + join_to_send_messages=join_to_send_messages, + join_by_request=join_by_request, + description=description, + invite_link=invite_link, + pinned_message=pinned_message, + permissions=permissions, + slow_mode_delay=slow_mode_delay, + message_auto_delete_time=message_auto_delete_time, + has_aggressive_anti_spam_enabled=has_aggressive_anti_spam_enabled, + has_hidden_members=has_hidden_members, + has_protected_content=has_protected_content, + sticker_set_name=sticker_set_name, + can_set_sticker_set=can_set_sticker_set, + linked_chat_id=linked_chat_id, + location=location, + **__pydantic_kwargs, + ) + @property def shifted_id(self) -> int: """ diff --git a/aiogram/types/chat_administrator_rights.py b/aiogram/types/chat_administrator_rights.py index 23519ced..1da998d1 100644 --- a/aiogram/types/chat_administrator_rights.py +++ b/aiogram/types/chat_administrator_rights.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -39,3 +39,44 @@ class ChatAdministratorRights(TelegramObject): """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + is_anonymous: bool, + can_manage_chat: bool, + can_delete_messages: bool, + can_manage_video_chats: bool, + can_restrict_members: bool, + can_promote_members: bool, + can_change_info: bool, + can_invite_users: bool, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, + can_pin_messages: Optional[bool] = None, + can_manage_topics: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + is_anonymous=is_anonymous, + can_manage_chat=can_manage_chat, + can_delete_messages=can_delete_messages, + can_manage_video_chats=can_manage_video_chats, + can_restrict_members=can_restrict_members, + can_promote_members=can_promote_members, + can_change_info=can_change_info, + can_invite_users=can_invite_users, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, + can_pin_messages=can_pin_messages, + can_manage_topics=can_manage_topics, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_invite_link.py b/aiogram/types/chat_invite_link.py index 7476f9dc..ae947f36 100644 --- a/aiogram/types/chat_invite_link.py +++ b/aiogram/types/chat_invite_link.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -34,3 +34,38 @@ class ChatInviteLink(TelegramObject): """*Optional*. The maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999""" pending_join_request_count: Optional[int] = None """*Optional*. Number of pending join requests created using this link""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + invite_link: str, + creator: User, + creates_join_request: bool, + is_primary: bool, + is_revoked: bool, + name: Optional[str] = None, + expire_date: Optional[datetime.datetime] = None, + member_limit: Optional[int] = None, + pending_join_request_count: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + invite_link=invite_link, + creator=creator, + creates_join_request=creates_join_request, + is_primary=is_primary, + is_revoked=is_revoked, + name=name, + expire_date=expire_date, + member_limit=member_limit, + pending_join_request_count=pending_join_request_count, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index e622c863..6aeac238 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -70,6 +70,35 @@ class ChatJoinRequest(TelegramObject): invite_link: Optional[ChatInviteLink] = None """*Optional*. Chat invite link that was used by the user to send the join request""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat: Chat, + from_user: User, + user_chat_id: int, + date: datetime.datetime, + bio: Optional[str] = None, + invite_link: Optional[ChatInviteLink] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat=chat, + from_user=from_user, + user_chat_id=user_chat_id, + date=date, + bio=bio, + invite_link=invite_link, + **__pydantic_kwargs, + ) + def approve( self, **kwargs: Any, diff --git a/aiogram/types/chat_location.py b/aiogram/types/chat_location.py index 89b28d7c..ad64a3c3 100644 --- a/aiogram/types/chat_location.py +++ b/aiogram/types/chat_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from .base import TelegramObject @@ -19,3 +19,16 @@ class ChatLocation(TelegramObject): """The location to which the supergroup is connected. Can't be a live location.""" address: str """Location address; 1-64 characters, as defined by the chat owner""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, location: Location, address: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(location=location, address=address, **__pydantic_kwargs) diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py index ae98e79d..02a3be39 100644 --- a/aiogram/types/chat_member_administrator.py +++ b/aiogram/types/chat_member_administrator.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Any, Literal, Optional from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -48,3 +48,52 @@ class ChatMemberAdministrator(ChatMember): """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" custom_title: Optional[str] = None """*Optional*. Custom title for this user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.ADMINISTRATOR] = ChatMemberStatus.ADMINISTRATOR, + user: User, + can_be_edited: bool, + is_anonymous: bool, + can_manage_chat: bool, + can_delete_messages: bool, + can_manage_video_chats: bool, + can_restrict_members: bool, + can_promote_members: bool, + can_change_info: bool, + can_invite_users: bool, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, + can_pin_messages: Optional[bool] = None, + can_manage_topics: Optional[bool] = None, + custom_title: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + status=status, + user=user, + can_be_edited=can_be_edited, + is_anonymous=is_anonymous, + can_manage_chat=can_manage_chat, + can_delete_messages=can_delete_messages, + can_manage_video_chats=can_manage_video_chats, + can_restrict_members=can_restrict_members, + can_promote_members=can_promote_members, + can_change_info=can_change_info, + can_invite_users=can_invite_users, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, + can_pin_messages=can_pin_messages, + can_manage_topics=can_manage_topics, + custom_title=custom_title, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_member_banned.py b/aiogram/types/chat_member_banned.py index 33e85f45..ef8475df 100644 --- a/aiogram/types/chat_member_banned.py +++ b/aiogram/types/chat_member_banned.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -23,3 +23,21 @@ class ChatMemberBanned(ChatMember): """Information about the user""" until_date: datetime.datetime """Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.KICKED] = ChatMemberStatus.KICKED, + user: User, + until_date: datetime.datetime, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(status=status, user=user, until_date=until_date, **__pydantic_kwargs) diff --git a/aiogram/types/chat_member_left.py b/aiogram/types/chat_member_left.py index af501917..3870d17f 100644 --- a/aiogram/types/chat_member_left.py +++ b/aiogram/types/chat_member_left.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -20,3 +20,20 @@ class ChatMemberLeft(ChatMember): """The member's status in the chat, always 'left'""" user: User """Information about the user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.LEFT] = ChatMemberStatus.LEFT, + user: User, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(status=status, user=user, **__pydantic_kwargs) diff --git a/aiogram/types/chat_member_member.py b/aiogram/types/chat_member_member.py index e2c7418e..663b190b 100644 --- a/aiogram/types/chat_member_member.py +++ b/aiogram/types/chat_member_member.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -20,3 +20,20 @@ class ChatMemberMember(ChatMember): """The member's status in the chat, always 'member'""" user: User """Information about the user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.MEMBER] = ChatMemberStatus.MEMBER, + user: User, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(status=status, user=user, **__pydantic_kwargs) diff --git a/aiogram/types/chat_member_owner.py b/aiogram/types/chat_member_owner.py index 66450550..1429435e 100644 --- a/aiogram/types/chat_member_owner.py +++ b/aiogram/types/chat_member_owner.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Any, Literal, Optional from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -24,3 +24,28 @@ class ChatMemberOwner(ChatMember): """:code:`True`, if the user's presence in the chat is hidden""" custom_title: Optional[str] = None """*Optional*. Custom title for this user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.CREATOR] = ChatMemberStatus.CREATOR, + user: User, + is_anonymous: bool, + custom_title: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + status=status, + user=user, + is_anonymous=is_anonymous, + custom_title=custom_title, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_member_restricted.py b/aiogram/types/chat_member_restricted.py index 17db73fb..01971e76 100644 --- a/aiogram/types/chat_member_restricted.py +++ b/aiogram/types/chat_member_restricted.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember @@ -53,3 +53,56 @@ class ChatMemberRestricted(ChatMember): """:code:`True`, if the user is allowed to create forum topics""" until_date: datetime.datetime """Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + status: Literal[ChatMemberStatus.RESTRICTED] = ChatMemberStatus.RESTRICTED, + user: User, + is_member: bool, + can_send_messages: bool, + can_send_audios: bool, + can_send_documents: bool, + can_send_photos: bool, + can_send_videos: bool, + can_send_video_notes: bool, + can_send_voice_notes: bool, + can_send_polls: bool, + can_send_other_messages: bool, + can_add_web_page_previews: bool, + can_change_info: bool, + can_invite_users: bool, + can_pin_messages: bool, + can_manage_topics: bool, + until_date: datetime.datetime, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + status=status, + user=user, + is_member=is_member, + can_send_messages=can_send_messages, + can_send_audios=can_send_audios, + can_send_documents=can_send_documents, + can_send_photos=can_send_photos, + can_send_videos=can_send_videos, + can_send_video_notes=can_send_video_notes, + can_send_voice_notes=can_send_voice_notes, + can_send_polls=can_send_polls, + can_send_other_messages=can_send_other_messages, + can_add_web_page_previews=can_add_web_page_previews, + can_change_info=can_change_info, + can_invite_users=can_invite_users, + can_pin_messages=can_pin_messages, + can_manage_topics=can_manage_topics, + until_date=until_date, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_member_updated.py b/aiogram/types/chat_member_updated.py index 7e15dab5..95db27de 100644 --- a/aiogram/types/chat_member_updated.py +++ b/aiogram/types/chat_member_updated.py @@ -90,6 +90,51 @@ class ChatMemberUpdated(TelegramObject): via_chat_folder_invite_link: Optional[bool] = None """*Optional*. True, if the user joined the chat via a chat folder invite link""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + chat: Chat, + from_user: User, + date: datetime.datetime, + old_chat_member: Union[ + ChatMemberOwner, + ChatMemberAdministrator, + ChatMemberMember, + ChatMemberRestricted, + ChatMemberLeft, + ChatMemberBanned, + ], + new_chat_member: Union[ + ChatMemberOwner, + ChatMemberAdministrator, + ChatMemberMember, + ChatMemberRestricted, + ChatMemberLeft, + ChatMemberBanned, + ], + invite_link: Optional[ChatInviteLink] = None, + via_chat_folder_invite_link: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + chat=chat, + from_user=from_user, + date=date, + old_chat_member=old_chat_member, + new_chat_member=new_chat_member, + invite_link=invite_link, + via_chat_folder_invite_link=via_chat_folder_invite_link, + **__pydantic_kwargs, + ) + def answer( self, text: str, diff --git a/aiogram/types/chat_permissions.py b/aiogram/types/chat_permissions.py index 762fe208..671ebc26 100644 --- a/aiogram/types/chat_permissions.py +++ b/aiogram/types/chat_permissions.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import MutableTelegramObject @@ -40,3 +40,48 @@ class ChatPermissions(MutableTelegramObject): """*Optional*. :code:`True`, if the user is allowed to pin messages. Ignored in public supergroups""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create forum topics. If omitted defaults to the value of can_pin_messages""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + can_send_messages: Optional[bool] = None, + can_send_audios: Optional[bool] = None, + can_send_documents: Optional[bool] = None, + can_send_photos: Optional[bool] = None, + can_send_videos: Optional[bool] = None, + can_send_video_notes: Optional[bool] = None, + can_send_voice_notes: Optional[bool] = None, + can_send_polls: Optional[bool] = None, + can_send_other_messages: Optional[bool] = None, + can_add_web_page_previews: Optional[bool] = None, + can_change_info: Optional[bool] = None, + can_invite_users: Optional[bool] = None, + can_pin_messages: Optional[bool] = None, + can_manage_topics: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + can_send_messages=can_send_messages, + can_send_audios=can_send_audios, + can_send_documents=can_send_documents, + can_send_photos=can_send_photos, + can_send_videos=can_send_videos, + can_send_video_notes=can_send_video_notes, + can_send_voice_notes=can_send_voice_notes, + can_send_polls=can_send_polls, + can_send_other_messages=can_send_other_messages, + can_add_web_page_previews=can_add_web_page_previews, + can_change_info=can_change_info, + can_invite_users=can_invite_users, + can_pin_messages=can_pin_messages, + can_manage_topics=can_manage_topics, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_photo.py b/aiogram/types/chat_photo.py index a3f95f94..1a64aebf 100644 --- a/aiogram/types/chat_photo.py +++ b/aiogram/types/chat_photo.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -18,3 +20,28 @@ class ChatPhoto(TelegramObject): """File identifier of big (640x640) chat photo. This file_id can be used only for photo download and only for as long as the photo is not changed.""" big_file_unique_id: str """Unique file identifier of big (640x640) chat photo, which is supposed to be the same over time and for different bots. Can't be used to download or reuse the file.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + small_file_id: str, + small_file_unique_id: str, + big_file_id: str, + big_file_unique_id: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + small_file_id=small_file_id, + small_file_unique_id=small_file_unique_id, + big_file_id=big_file_id, + big_file_unique_id=big_file_unique_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/chat_shared.py b/aiogram/types/chat_shared.py index a3f3e7a8..eb244c0a 100644 --- a/aiogram/types/chat_shared.py +++ b/aiogram/types/chat_shared.py @@ -1,3 +1,5 @@ +from typing import TYPE_CHECKING, Any + from aiogram.types import TelegramObject @@ -12,3 +14,16 @@ class ChatShared(TelegramObject): """Identifier of the request""" chat_id: int """Identifier of the shared chat. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot may not have access to the chat and could be unable to use this identifier, unless the chat is already known to the bot by some other means.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, request_id: int, chat_id: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(request_id=request_id, chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/types/chosen_inline_result.py b/aiogram/types/chosen_inline_result.py index 0ec211f7..510a0e12 100644 --- a/aiogram/types/chosen_inline_result.py +++ b/aiogram/types/chosen_inline_result.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from pydantic import Field @@ -29,3 +29,30 @@ class ChosenInlineResult(TelegramObject): """*Optional*. Sender location, only for bots that require user location""" inline_message_id: Optional[str] = None """*Optional*. Identifier of the sent inline message. Available only if there is an `inline keyboard `_ attached to the message. Will be also received in `callback queries `_ and can be used to `edit `_ the message.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + result_id: str, + from_user: User, + query: str, + location: Optional[Location] = None, + inline_message_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + result_id=result_id, + from_user=from_user, + query=query, + location=location, + inline_message_id=inline_message_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/contact.py b/aiogram/types/contact.py index 732b770d..1fb7f834 100644 --- a/aiogram/types/contact.py +++ b/aiogram/types/contact.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -22,3 +22,30 @@ class Contact(TelegramObject): """*Optional*. Contact's user identifier in Telegram. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier.""" vcard: Optional[str] = None """*Optional*. Additional data about the contact in the form of a `vCard `_""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + phone_number: str, + first_name: str, + last_name: Optional[str] = None, + user_id: Optional[int] = None, + vcard: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + phone_number=phone_number, + first_name=first_name, + last_name=last_name, + user_id=user_id, + vcard=vcard, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/dice.py b/aiogram/types/dice.py index 00356457..56b84f43 100644 --- a/aiogram/types/dice.py +++ b/aiogram/types/dice.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -15,6 +17,19 @@ class Dice(TelegramObject): value: int """Value of the dice, 1-6 for '🎲', '🎯' and '🎳' base emoji, 1-5 for '🏀' and '⚽' base emoji, 1-64 for '🎰' base emoji""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, emoji: str, value: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(emoji=emoji, value=value, **__pydantic_kwargs) + class DiceEmoji: DICE = "🎲" diff --git a/aiogram/types/document.py b/aiogram/types/document.py index 837bf4ec..83139076 100644 --- a/aiogram/types/document.py +++ b/aiogram/types/document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -27,3 +27,32 @@ class Document(TelegramObject): """*Optional*. MIME type of the file as defined by sender""" file_size: Optional[int] = None """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + thumbnail: Optional[PhotoSize] = None, + file_name: Optional[str] = None, + mime_type: Optional[str] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + thumbnail=thumbnail, + file_name=file_name, + mime_type=mime_type, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/encrypted_credentials.py b/aiogram/types/encrypted_credentials.py index d14c2560..ca03e2a4 100644 --- a/aiogram/types/encrypted_credentials.py +++ b/aiogram/types/encrypted_credentials.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -16,3 +18,16 @@ class EncryptedCredentials(TelegramObject): """Base64-encoded data hash for data authentication""" secret: str """Base64-encoded secret, encrypted with the bot's public RSA key, required for data decryption""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, data: str, hash: str, secret: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(data=data, hash=hash, secret=secret, **__pydantic_kwargs) diff --git a/aiogram/types/encrypted_passport_element.py b/aiogram/types/encrypted_passport_element.py index 27506298..5594e700 100644 --- a/aiogram/types/encrypted_passport_element.py +++ b/aiogram/types/encrypted_passport_element.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject @@ -35,3 +35,40 @@ class EncryptedPassportElement(TelegramObject): """*Optional*. Encrypted file with the selfie of the user holding a document, provided by the user; available for 'passport', 'driver_license', 'identity_card' and 'internal_passport'. The file can be decrypted and verified using the accompanying :class:`aiogram.types.encrypted_credentials.EncryptedCredentials`.""" translation: Optional[List[PassportFile]] = None """*Optional*. Array of encrypted files with translated versions of documents provided by the user. Available if requested for 'passport', 'driver_license', 'identity_card', 'internal_passport', 'utility_bill', 'bank_statement', 'rental_agreement', 'passport_registration' and 'temporary_registration' types. Files can be decrypted and verified using the accompanying :class:`aiogram.types.encrypted_credentials.EncryptedCredentials`.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: str, + hash: str, + data: Optional[str] = None, + phone_number: Optional[str] = None, + email: Optional[str] = None, + files: Optional[List[PassportFile]] = None, + front_side: Optional[PassportFile] = None, + reverse_side: Optional[PassportFile] = None, + selfie: Optional[PassportFile] = None, + translation: Optional[List[PassportFile]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + hash=hash, + data=data, + phone_number=phone_number, + email=email, + files=files, + front_side=front_side, + reverse_side=reverse_side, + selfie=selfie, + translation=translation, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/error_event.py b/aiogram/types/error_event.py index 212bee56..e5eafc9c 100644 --- a/aiogram/types/error_event.py +++ b/aiogram/types/error_event.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from aiogram.types.base import TelegramObject @@ -19,3 +19,10 @@ class ErrorEvent(TelegramObject): """Received update""" exception: Exception """Exception""" + + if TYPE_CHECKING: + + def __init__( + __pydantic_self__, *, update: Update, exception: Exception, **__pydantic_kwargs: Any + ) -> None: + super().__init__(update=update, exception=exception, **__pydantic_kwargs) diff --git a/aiogram/types/file.py b/aiogram/types/file.py index 3e6e769e..252c230b 100644 --- a/aiogram/types/file.py +++ b/aiogram/types/file.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -22,3 +22,28 @@ class File(TelegramObject): """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" file_path: Optional[str] = None """*Optional*. File path. Use :code:`https://api.telegram.org/file/bot/` to get the file.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + file_size: Optional[int] = None, + file_path: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + file_size=file_size, + file_path=file_path, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/force_reply.py b/aiogram/types/force_reply.py index cd13b658..eb00f35b 100644 --- a/aiogram/types/force_reply.py +++ b/aiogram/types/force_reply.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Optional +from typing import TYPE_CHECKING, Any, Literal, Optional from .base import MutableTelegramObject @@ -25,3 +25,26 @@ class ForceReply(MutableTelegramObject): """*Optional*. The placeholder to be shown in the input field when the reply is active; 1-64 characters""" selective: Optional[bool] = None """*Optional*. Use this parameter if you want to force reply from specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + force_reply: Literal[True] = True, + input_field_placeholder: Optional[str] = None, + selective: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + force_reply=force_reply, + input_field_placeholder=input_field_placeholder, + selective=selective, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/forum_topic.py b/aiogram/types/forum_topic.py index 09592077..a6464bc1 100644 --- a/aiogram/types/forum_topic.py +++ b/aiogram/types/forum_topic.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -20,3 +20,28 @@ class ForumTopic(TelegramObject): """Color of the topic icon in RGB format""" icon_custom_emoji_id: Optional[str] = None """*Optional*. Unique identifier of the custom emoji shown as the topic icon""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + message_thread_id: int, + name: str, + icon_color: int, + icon_custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + message_thread_id=message_thread_id, + name=name, + icon_color=icon_color, + icon_custom_emoji_id=icon_custom_emoji_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/forum_topic_created.py b/aiogram/types/forum_topic_created.py index 25448cf8..513df956 100644 --- a/aiogram/types/forum_topic_created.py +++ b/aiogram/types/forum_topic_created.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -18,3 +18,26 @@ class ForumTopicCreated(TelegramObject): """Color of the topic icon in RGB format""" icon_custom_emoji_id: Optional[str] = None """*Optional*. Unique identifier of the custom emoji shown as the topic icon""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: str, + icon_color: int, + icon_custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + name=name, + icon_color=icon_color, + icon_custom_emoji_id=icon_custom_emoji_id, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/forum_topic_edited.py b/aiogram/types/forum_topic_edited.py index 52b4f893..b7b61965 100644 --- a/aiogram/types/forum_topic_edited.py +++ b/aiogram/types/forum_topic_edited.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from aiogram.types import TelegramObject @@ -14,3 +14,22 @@ class ForumTopicEdited(TelegramObject): """*Optional*. New name of the topic, if it was edited""" icon_custom_emoji_id: Optional[str] = None """*Optional*. New identifier of the custom emoji shown as the topic icon, if it was edited; an empty string if the icon was removed""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: Optional[str] = None, + icon_custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + name=name, icon_custom_emoji_id=icon_custom_emoji_id, **__pydantic_kwargs + ) diff --git a/aiogram/types/game.py b/aiogram/types/game.py index f9b03bd1..294f26b9 100644 --- a/aiogram/types/game.py +++ b/aiogram/types/game.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject @@ -29,3 +29,32 @@ class Game(TelegramObject): """*Optional*. Special entities that appear in *text*, such as usernames, URLs, bot commands, etc.""" animation: Optional[Animation] = None """*Optional*. Animation that will be displayed in the game message in chats. Upload via `BotFather `_""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + title: str, + description: str, + photo: List[PhotoSize], + text: Optional[str] = None, + text_entities: Optional[List[MessageEntity]] = None, + animation: Optional[Animation] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + title=title, + description=description, + photo=photo, + text=text, + text_entities=text_entities, + animation=animation, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/game_high_score.py b/aiogram/types/game_high_score.py index 30ec941a..5364be6e 100644 --- a/aiogram/types/game_high_score.py +++ b/aiogram/types/game_high_score.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from .base import TelegramObject @@ -24,3 +24,16 @@ class GameHighScore(TelegramObject): """User""" score: int """Score""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, position: int, user: User, score: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(position=position, user=user, score=score, **__pydantic_kwargs) diff --git a/aiogram/types/inline_keyboard_button.py b/aiogram/types/inline_keyboard_button.py index 977fae8d..d2108e93 100644 --- a/aiogram/types/inline_keyboard_button.py +++ b/aiogram/types/inline_keyboard_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import MutableTelegramObject @@ -38,3 +38,40 @@ class InlineKeyboardButton(MutableTelegramObject): """*Optional*. Description of the game that will be launched when the user presses the button.""" pay: Optional[bool] = None """*Optional*. Specify :code:`True`, to send a `Pay button `_.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + text: str, + url: Optional[str] = None, + callback_data: Optional[str] = None, + web_app: Optional[WebAppInfo] = None, + login_url: Optional[LoginUrl] = None, + switch_inline_query: Optional[str] = None, + switch_inline_query_current_chat: Optional[str] = None, + switch_inline_query_chosen_chat: Optional[SwitchInlineQueryChosenChat] = None, + callback_game: Optional[CallbackGame] = None, + pay: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + text=text, + url=url, + callback_data=callback_data, + web_app=web_app, + login_url=login_url, + switch_inline_query=switch_inline_query, + switch_inline_query_current_chat=switch_inline_query_current_chat, + switch_inline_query_chosen_chat=switch_inline_query_chosen_chat, + callback_game=callback_game, + pay=pay, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_keyboard_markup.py b/aiogram/types/inline_keyboard_markup.py index 473e292c..e8987def 100644 --- a/aiogram/types/inline_keyboard_markup.py +++ b/aiogram/types/inline_keyboard_markup.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import MutableTelegramObject @@ -18,3 +18,19 @@ class InlineKeyboardMarkup(MutableTelegramObject): inline_keyboard: List[List[InlineKeyboardButton]] """Array of button rows, each represented by an Array of :class:`aiogram.types.inline_keyboard_button.InlineKeyboardButton` objects""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + inline_keyboard: List[List[InlineKeyboardButton]], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(inline_keyboard=inline_keyboard, **__pydantic_kwargs) diff --git a/aiogram/types/inline_query.py b/aiogram/types/inline_query.py index e9fb644e..a0cad317 100644 --- a/aiogram/types/inline_query.py +++ b/aiogram/types/inline_query.py @@ -53,6 +53,35 @@ class InlineQuery(TelegramObject): location: Optional[Location] = None """*Optional*. Sender location, only for bots that request user location""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + from_user: User, + query: str, + offset: str, + chat_type: Optional[str] = None, + location: Optional[Location] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + from_user=from_user, + query=query, + offset=offset, + chat_type=chat_type, + location=location, + **__pydantic_kwargs, + ) + def answer( self, results: List[ diff --git a/aiogram/types/inline_query_result_article.py b/aiogram/types/inline_query_result_article.py index 42c11782..c9987382 100644 --- a/aiogram/types/inline_query_result_article.py +++ b/aiogram/types/inline_query_result_article.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -49,3 +49,48 @@ class InlineQueryResultArticle(InlineQueryResult): """*Optional*. Thumbnail width""" thumbnail_height: Optional[int] = None """*Optional*. Thumbnail height""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.ARTICLE] = InlineQueryResultType.ARTICLE, + id: str, + title: str, + input_message_content: Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ], + reply_markup: Optional[InlineKeyboardMarkup] = None, + url: Optional[str] = None, + hide_url: Optional[bool] = None, + description: Optional[str] = None, + thumbnail_url: Optional[str] = None, + thumbnail_width: Optional[int] = None, + thumbnail_height: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + title=title, + input_message_content=input_message_content, + reply_markup=reply_markup, + url=url, + hide_url=hide_url, + description=description, + thumbnail_url=thumbnail_url, + thumbnail_width=thumbnail_width, + thumbnail_height=thumbnail_height, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_audio.py b/aiogram/types/inline_query_result_audio.py index c57b0b72..63f06935 100644 --- a/aiogram/types/inline_query_result_audio.py +++ b/aiogram/types/inline_query_result_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -54,3 +54,50 @@ class InlineQueryResultAudio(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the audio""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.AUDIO] = InlineQueryResultType.AUDIO, + id: str, + audio_url: str, + title: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + performer: Optional[str] = None, + audio_duration: Optional[int] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + audio_url=audio_url, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + performer=performer, + audio_duration=audio_duration, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_audio.py b/aiogram/types/inline_query_result_cached_audio.py index 6f0a73f1..25aa4d19 100644 --- a/aiogram/types/inline_query_result_cached_audio.py +++ b/aiogram/types/inline_query_result_cached_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -48,3 +48,44 @@ class InlineQueryResultCachedAudio(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the audio""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.AUDIO] = InlineQueryResultType.AUDIO, + id: str, + audio_file_id: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + audio_file_id=audio_file_id, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_document.py b/aiogram/types/inline_query_result_cached_document.py index ccb28196..2325400d 100644 --- a/aiogram/types/inline_query_result_cached_document.py +++ b/aiogram/types/inline_query_result_cached_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -52,3 +52,48 @@ class InlineQueryResultCachedDocument(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the file""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.DOCUMENT] = InlineQueryResultType.DOCUMENT, + id: str, + title: str, + document_file_id: str, + description: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + title=title, + document_file_id=document_file_id, + description=description, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_gif.py b/aiogram/types/inline_query_result_cached_gif.py index f8ef40a6..aca612c9 100644 --- a/aiogram/types/inline_query_result_cached_gif.py +++ b/aiogram/types/inline_query_result_cached_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -49,3 +49,46 @@ class InlineQueryResultCachedGif(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the GIF animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.GIF] = InlineQueryResultType.GIF, + id: str, + gif_file_id: str, + title: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + gif_file_id=gif_file_id, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_mpeg4_gif.py b/aiogram/types/inline_query_result_cached_mpeg4_gif.py index 09cc0db8..e08c9ee7 100644 --- a/aiogram/types/inline_query_result_cached_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_cached_mpeg4_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -49,3 +49,46 @@ class InlineQueryResultCachedMpeg4Gif(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the video animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.MPEG4_GIF] = InlineQueryResultType.MPEG4_GIF, + id: str, + mpeg4_file_id: str, + title: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + mpeg4_file_id=mpeg4_file_id, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_photo.py b/aiogram/types/inline_query_result_cached_photo.py index b72ac656..2fdb94ff 100644 --- a/aiogram/types/inline_query_result_cached_photo.py +++ b/aiogram/types/inline_query_result_cached_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -51,3 +51,48 @@ class InlineQueryResultCachedPhoto(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the photo""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.PHOTO] = InlineQueryResultType.PHOTO, + id: str, + photo_file_id: str, + title: Optional[str] = None, + description: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + photo_file_id=photo_file_id, + title=title, + description=description, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_sticker.py b/aiogram/types/inline_query_result_cached_sticker.py index beaab093..819c5b31 100644 --- a/aiogram/types/inline_query_result_cached_sticker.py +++ b/aiogram/types/inline_query_result_cached_sticker.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -40,3 +40,38 @@ class InlineQueryResultCachedSticker(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the sticker""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.STICKER] = InlineQueryResultType.STICKER, + id: str, + sticker_file_id: str, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + sticker_file_id=sticker_file_id, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_video.py b/aiogram/types/inline_query_result_cached_video.py index f522bc24..22244ed3 100644 --- a/aiogram/types/inline_query_result_cached_video.py +++ b/aiogram/types/inline_query_result_cached_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -51,3 +51,48 @@ class InlineQueryResultCachedVideo(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the video""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.VIDEO] = InlineQueryResultType.VIDEO, + id: str, + video_file_id: str, + title: str, + description: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + video_file_id=video_file_id, + title=title, + description=description, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_cached_voice.py b/aiogram/types/inline_query_result_cached_voice.py index 7c2b0a44..323ef356 100644 --- a/aiogram/types/inline_query_result_cached_voice.py +++ b/aiogram/types/inline_query_result_cached_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -50,3 +50,46 @@ class InlineQueryResultCachedVoice(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the voice message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.VOICE] = InlineQueryResultType.VOICE, + id: str, + voice_file_id: str, + title: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + voice_file_id=voice_file_id, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_contact.py b/aiogram/types/inline_query_result_contact.py index aa2fc8c5..95561557 100644 --- a/aiogram/types/inline_query_result_contact.py +++ b/aiogram/types/inline_query_result_contact.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -52,3 +52,50 @@ class InlineQueryResultContact(InlineQueryResult): """*Optional*. Thumbnail width""" thumbnail_height: Optional[int] = None """*Optional*. Thumbnail height""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.CONTACT] = InlineQueryResultType.CONTACT, + id: str, + phone_number: str, + first_name: str, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + thumbnail_url: Optional[str] = None, + thumbnail_width: Optional[int] = None, + thumbnail_height: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + phone_number=phone_number, + first_name=first_name, + last_name=last_name, + vcard=vcard, + reply_markup=reply_markup, + input_message_content=input_message_content, + thumbnail_url=thumbnail_url, + thumbnail_width=thumbnail_width, + thumbnail_height=thumbnail_height, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_document.py b/aiogram/types/inline_query_result_document.py index 102aaf24..20e3e9cc 100644 --- a/aiogram/types/inline_query_result_document.py +++ b/aiogram/types/inline_query_result_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -60,3 +60,56 @@ class InlineQueryResultDocument(InlineQueryResult): """*Optional*. Thumbnail width""" thumbnail_height: Optional[int] = None """*Optional*. Thumbnail height""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.DOCUMENT] = InlineQueryResultType.DOCUMENT, + id: str, + title: str, + document_url: str, + mime_type: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + description: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + thumbnail_url: Optional[str] = None, + thumbnail_width: Optional[int] = None, + thumbnail_height: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + title=title, + document_url=document_url, + mime_type=mime_type, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + description=description, + reply_markup=reply_markup, + input_message_content=input_message_content, + thumbnail_url=thumbnail_url, + thumbnail_width=thumbnail_width, + thumbnail_height=thumbnail_height, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_game.py b/aiogram/types/inline_query_result_game.py index b5ae90fc..7b5876f1 100644 --- a/aiogram/types/inline_query_result_game.py +++ b/aiogram/types/inline_query_result_game.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional +from typing import TYPE_CHECKING, Any, Literal, Optional from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -25,3 +25,28 @@ class InlineQueryResultGame(InlineQueryResult): """Short name of the game""" reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. `Inline keyboard `_ attached to the message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.GAME] = InlineQueryResultType.GAME, + id: str, + game_short_name: str, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + game_short_name=game_short_name, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_gif.py b/aiogram/types/inline_query_result_gif.py index e3b85fe2..cf61a4d4 100644 --- a/aiogram/types/inline_query_result_gif.py +++ b/aiogram/types/inline_query_result_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -59,3 +59,56 @@ class InlineQueryResultGif(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the GIF animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.GIF] = InlineQueryResultType.GIF, + id: str, + gif_url: str, + thumbnail_url: str, + gif_width: Optional[int] = None, + gif_height: Optional[int] = None, + gif_duration: Optional[int] = None, + thumbnail_mime_type: Optional[str] = None, + title: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + gif_url=gif_url, + thumbnail_url=thumbnail_url, + gif_width=gif_width, + gif_height=gif_height, + gif_duration=gif_duration, + thumbnail_mime_type=thumbnail_mime_type, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_location.py b/aiogram/types/inline_query_result_location.py index 4948a67c..45ad8042 100644 --- a/aiogram/types/inline_query_result_location.py +++ b/aiogram/types/inline_query_result_location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -58,3 +58,56 @@ class InlineQueryResultLocation(InlineQueryResult): """*Optional*. Thumbnail width""" thumbnail_height: Optional[int] = None """*Optional*. Thumbnail height""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.LOCATION] = InlineQueryResultType.LOCATION, + id: str, + latitude: float, + longitude: float, + title: str, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + thumbnail_url: Optional[str] = None, + thumbnail_width: Optional[int] = None, + thumbnail_height: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + latitude=latitude, + longitude=longitude, + title=title, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + reply_markup=reply_markup, + input_message_content=input_message_content, + thumbnail_url=thumbnail_url, + thumbnail_width=thumbnail_width, + thumbnail_height=thumbnail_height, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_mpeg4_gif.py b/aiogram/types/inline_query_result_mpeg4_gif.py index 9d475af3..8be8e44e 100644 --- a/aiogram/types/inline_query_result_mpeg4_gif.py +++ b/aiogram/types/inline_query_result_mpeg4_gif.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -59,3 +59,56 @@ class InlineQueryResultMpeg4Gif(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the video animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.MPEG4_GIF] = InlineQueryResultType.MPEG4_GIF, + id: str, + mpeg4_url: str, + thumbnail_url: str, + mpeg4_width: Optional[int] = None, + mpeg4_height: Optional[int] = None, + mpeg4_duration: Optional[int] = None, + thumbnail_mime_type: Optional[str] = None, + title: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + mpeg4_url=mpeg4_url, + thumbnail_url=thumbnail_url, + mpeg4_width=mpeg4_width, + mpeg4_height=mpeg4_height, + mpeg4_duration=mpeg4_duration, + thumbnail_mime_type=thumbnail_mime_type, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_photo.py b/aiogram/types/inline_query_result_photo.py index 35a9d996..fe577877 100644 --- a/aiogram/types/inline_query_result_photo.py +++ b/aiogram/types/inline_query_result_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -57,3 +57,54 @@ class InlineQueryResultPhoto(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the photo""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.PHOTO] = InlineQueryResultType.PHOTO, + id: str, + photo_url: str, + thumbnail_url: str, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + title: Optional[str] = None, + description: Optional[str] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + photo_url=photo_url, + thumbnail_url=thumbnail_url, + photo_width=photo_width, + photo_height=photo_height, + title=title, + description=description, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_venue.py b/aiogram/types/inline_query_result_venue.py index 65841255..9e11a25b 100644 --- a/aiogram/types/inline_query_result_venue.py +++ b/aiogram/types/inline_query_result_venue.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal, Optional, Union from ..enums import InlineQueryResultType from .inline_query_result import InlineQueryResult @@ -60,3 +60,58 @@ class InlineQueryResultVenue(InlineQueryResult): """*Optional*. Thumbnail width""" thumbnail_height: Optional[int] = None """*Optional*. Thumbnail height""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.VENUE] = InlineQueryResultType.VENUE, + id: str, + latitude: float, + longitude: float, + title: str, + address: str, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + thumbnail_url: Optional[str] = None, + thumbnail_width: Optional[int] = None, + thumbnail_height: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + latitude=latitude, + longitude=longitude, + title=title, + address=address, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + reply_markup=reply_markup, + input_message_content=input_message_content, + thumbnail_url=thumbnail_url, + thumbnail_width=thumbnail_width, + thumbnail_height=thumbnail_height, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_video.py b/aiogram/types/inline_query_result_video.py index 0968dda1..b65ec3b9 100644 --- a/aiogram/types/inline_query_result_video.py +++ b/aiogram/types/inline_query_result_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -63,3 +63,58 @@ class InlineQueryResultVideo(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the video. This field is **required** if InlineQueryResultVideo is used to send an HTML-page as a result (e.g., a YouTube video).""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.VIDEO] = InlineQueryResultType.VIDEO, + id: str, + video_url: str, + mime_type: str, + thumbnail_url: str, + title: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + video_width: Optional[int] = None, + video_height: Optional[int] = None, + video_duration: Optional[int] = None, + description: Optional[str] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + video_url=video_url, + mime_type=mime_type, + thumbnail_url=thumbnail_url, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + video_width=video_width, + video_height=video_height, + video_duration=video_duration, + description=description, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_result_voice.py b/aiogram/types/inline_query_result_voice.py index 995950ef..edd3157e 100644 --- a/aiogram/types/inline_query_result_voice.py +++ b/aiogram/types/inline_query_result_voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InlineQueryResultType from .base import UNSET_PARSE_MODE @@ -52,3 +52,48 @@ class InlineQueryResultVoice(InlineQueryResult): ] ] = None """*Optional*. Content of the message to be sent instead of the voice recording""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InlineQueryResultType.VOICE] = InlineQueryResultType.VOICE, + id: str, + voice_url: str, + title: str, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + voice_duration: Optional[int] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + input_message_content: Optional[ + Union[ + InputTextMessageContent, + InputLocationMessageContent, + InputVenueMessageContent, + InputContactMessageContent, + InputInvoiceMessageContent, + ] + ] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + id=id, + voice_url=voice_url, + title=title, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + voice_duration=voice_duration, + reply_markup=reply_markup, + input_message_content=input_message_content, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/inline_query_results_button.py b/aiogram/types/inline_query_results_button.py index 0a6db30c..c93172bb 100644 --- a/aiogram/types/inline_query_results_button.py +++ b/aiogram/types/inline_query_results_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -21,3 +21,23 @@ class InlineQueryResultsButton(TelegramObject): """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.""" start_parameter: Optional[str] = None """*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + text: str, + web_app: Optional[WebAppInfo] = None, + start_parameter: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + text=text, web_app=web_app, start_parameter=start_parameter, **__pydantic_kwargs + ) diff --git a/aiogram/types/input_contact_message_content.py b/aiogram/types/input_contact_message_content.py index 2e5a7823..8bcb5819 100644 --- a/aiogram/types/input_contact_message_content.py +++ b/aiogram/types/input_contact_message_content.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .input_message_content import InputMessageContent @@ -20,3 +20,28 @@ class InputContactMessageContent(InputMessageContent): """*Optional*. Contact's last name""" vcard: Optional[str] = None """*Optional*. Additional data about the contact in the form of a `vCard `_, 0-2048 bytes""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + phone_number: str, + first_name: str, + last_name: Optional[str] = None, + vcard: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + phone_number=phone_number, + first_name=first_name, + last_name=last_name, + vcard=vcard, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_file.py b/aiogram/types/input_file.py index 7ad8bee3..5b730598 100644 --- a/aiogram/types/input_file.py +++ b/aiogram/types/input_file.py @@ -4,15 +4,7 @@ import io import os from abc import ABC, abstractmethod from pathlib import Path -from typing import ( - TYPE_CHECKING, - Any, - AsyncGenerator, - AsyncIterator, - Dict, - Optional, - Union, -) +from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, Optional, Union import aiofiles diff --git a/aiogram/types/input_invoice_message_content.py b/aiogram/types/input_invoice_message_content.py index 4af5596d..af298dec 100644 --- a/aiogram/types/input_invoice_message_content.py +++ b/aiogram/types/input_invoice_message_content.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .input_message_content import InputMessageContent @@ -55,3 +55,60 @@ class InputInvoiceMessageContent(InputMessageContent): """*Optional*. Pass :code:`True` if the user's email address should be sent to provider""" is_flexible: Optional[bool] = None """*Optional*. Pass :code:`True` if the final price depends on the shipping method""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + title: str, + description: str, + payload: str, + provider_token: str, + currency: str, + prices: List[LabeledPrice], + max_tip_amount: Optional[int] = None, + suggested_tip_amounts: Optional[List[int]] = None, + provider_data: Optional[str] = None, + photo_url: Optional[str] = None, + photo_size: Optional[int] = None, + photo_width: Optional[int] = None, + photo_height: Optional[int] = None, + need_name: Optional[bool] = None, + need_phone_number: Optional[bool] = None, + need_email: Optional[bool] = None, + need_shipping_address: Optional[bool] = None, + send_phone_number_to_provider: Optional[bool] = None, + send_email_to_provider: Optional[bool] = None, + is_flexible: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + title=title, + description=description, + payload=payload, + provider_token=provider_token, + currency=currency, + prices=prices, + max_tip_amount=max_tip_amount, + suggested_tip_amounts=suggested_tip_amounts, + provider_data=provider_data, + photo_url=photo_url, + photo_size=photo_size, + photo_width=photo_width, + photo_height=photo_height, + need_name=need_name, + need_phone_number=need_phone_number, + need_email=need_email, + need_shipping_address=need_shipping_address, + send_phone_number_to_provider=send_phone_number_to_provider, + send_email_to_provider=send_email_to_provider, + is_flexible=is_flexible, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_location_message_content.py b/aiogram/types/input_location_message_content.py index 700532c2..ee4678a6 100644 --- a/aiogram/types/input_location_message_content.py +++ b/aiogram/types/input_location_message_content.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .input_message_content import InputMessageContent @@ -24,3 +24,32 @@ class InputLocationMessageContent(InputMessageContent): """*Optional*. For live locations, a direction in which the user is moving, in degrees. Must be between 1 and 360 if specified.""" proximity_alert_radius: Optional[int] = None """*Optional*. For live locations, a maximum distance for proximity alerts about approaching another chat member, in meters. Must be between 1 and 100000 if specified.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + latitude: float, + longitude: float, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + latitude=latitude, + longitude=longitude, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_media_animation.py b/aiogram/types/input_media_animation.py index f0e1b860..72220db8 100644 --- a/aiogram/types/input_media_animation.py +++ b/aiogram/types/input_media_animation.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -38,3 +38,40 @@ class InputMediaAnimation(InputMedia): """*Optional*. Animation duration in seconds""" has_spoiler: Optional[bool] = None """*Optional*. Pass :code:`True` if the animation needs to be covered with a spoiler animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InputMediaType.ANIMATION] = InputMediaType.ANIMATION, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + width: Optional[int] = None, + height: Optional[int] = None, + duration: Optional[int] = None, + has_spoiler: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + width=width, + height=height, + duration=duration, + has_spoiler=has_spoiler, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_media_audio.py b/aiogram/types/input_media_audio.py index 4bfa74c2..c05513a0 100644 --- a/aiogram/types/input_media_audio.py +++ b/aiogram/types/input_media_audio.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -36,3 +36,38 @@ class InputMediaAudio(InputMedia): """*Optional*. Performer of the audio""" title: Optional[str] = None """*Optional*. Title of the audio""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InputMediaType.AUDIO] = InputMediaType.AUDIO, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_media_document.py b/aiogram/types/input_media_document.py index b749cdcb..121896b7 100644 --- a/aiogram/types/input_media_document.py +++ b/aiogram/types/input_media_document.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -32,3 +32,34 @@ class InputMediaDocument(InputMedia): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" disable_content_type_detection: Optional[bool] = None """*Optional*. Disables automatic server-side content type detection for files uploaded using multipart/form-data. Always :code:`True`, if the document is sent as part of an album.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InputMediaType.DOCUMENT] = InputMediaType.DOCUMENT, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_media_photo.py b/aiogram/types/input_media_photo.py index 9128627b..d18330ac 100644 --- a/aiogram/types/input_media_photo.py +++ b/aiogram/types/input_media_photo.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -30,3 +30,32 @@ class InputMediaPhoto(InputMedia): """*Optional*. List of special entities that appear in the caption, which can be specified instead of *parse_mode*""" has_spoiler: Optional[bool] = None """*Optional*. Pass :code:`True` if the photo needs to be covered with a spoiler animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InputMediaType.PHOTO] = InputMediaType.PHOTO, + media: Union[str, InputFile], + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + media=media, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_media_video.py b/aiogram/types/input_media_video.py index b7479607..1c153d94 100644 --- a/aiogram/types/input_media_video.py +++ b/aiogram/types/input_media_video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, List, Literal, Optional, Union from ..enums import InputMediaType from .base import UNSET_PARSE_MODE @@ -40,3 +40,42 @@ class InputMediaVideo(InputMedia): """*Optional*. Pass :code:`True` if the uploaded video is suitable for streaming""" has_spoiler: Optional[bool] = None """*Optional*. Pass :code:`True` if the video needs to be covered with a spoiler animation""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[InputMediaType.VIDEO] = InputMediaType.VIDEO, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + width: Optional[int] = None, + height: Optional[int] = None, + duration: Optional[int] = None, + supports_streaming: Optional[bool] = None, + has_spoiler: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + width=width, + height=height, + duration=duration, + supports_streaming=supports_streaming, + has_spoiler=has_spoiler, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_sticker.py b/aiogram/types/input_sticker.py index 15765962..eebde128 100644 --- a/aiogram/types/input_sticker.py +++ b/aiogram/types/input_sticker.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union +from typing import TYPE_CHECKING, Any, List, Optional, Union from .base import TelegramObject @@ -24,3 +24,28 @@ class InputSticker(TelegramObject): """*Optional*. Position where the mask should be placed on faces. For 'mask' stickers only.""" keywords: Optional[List[str]] = None """*Optional*. List of 0-20 search keywords for the sticker with total length of up to 64 characters. For 'regular' and 'custom_emoji' stickers only.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + sticker: Union[InputFile, str], + emoji_list: List[str], + mask_position: Optional[MaskPosition] = None, + keywords: Optional[List[str]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + sticker=sticker, + emoji_list=emoji_list, + mask_position=mask_position, + keywords=keywords, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_text_message_content.py b/aiogram/types/input_text_message_content.py index 697696ce..57d5acba 100644 --- a/aiogram/types/input_text_message_content.py +++ b/aiogram/types/input_text_message_content.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import UNSET_DISABLE_WEB_PAGE_PREVIEW, UNSET_PARSE_MODE from .input_message_content import InputMessageContent @@ -24,3 +24,28 @@ class InputTextMessageContent(InputMessageContent): """*Optional*. List of special entities that appear in message text, which can be specified instead of *parse_mode*""" disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW """*Optional*. Disables link previews for links in the sent message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + message_text: str, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + entities: Optional[List[MessageEntity]] = None, + disable_web_page_preview: Optional[bool] = UNSET_DISABLE_WEB_PAGE_PREVIEW, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + message_text=message_text, + parse_mode=parse_mode, + entities=entities, + disable_web_page_preview=disable_web_page_preview, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/input_venue_message_content.py b/aiogram/types/input_venue_message_content.py index f6ccd76f..48dd5c4e 100644 --- a/aiogram/types/input_venue_message_content.py +++ b/aiogram/types/input_venue_message_content.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .input_message_content import InputMessageContent @@ -28,3 +28,36 @@ class InputVenueMessageContent(InputMessageContent): """*Optional*. Google Places identifier of the venue""" google_place_type: Optional[str] = None """*Optional*. Google Places type of the venue. (See `supported types `_.)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + latitude: float, + longitude: float, + title: str, + address: str, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + latitude=latitude, + longitude=longitude, + title=title, + address=address, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/invoice.py b/aiogram/types/invoice.py index 1e734895..f451ead0 100644 --- a/aiogram/types/invoice.py +++ b/aiogram/types/invoice.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -20,3 +22,30 @@ class Invoice(TelegramObject): """Three-letter ISO 4217 `currency `_ code""" total_amount: int """Total price in the *smallest units* of the currency (integer, **not** float/double). For example, for a price of :code:`US$ 1.45` pass :code:`amount = 145`. See the *exp* parameter in `currencies.json `_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + title: str, + description: str, + start_parameter: str, + currency: str, + total_amount: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + title=title, + description=description, + start_parameter=start_parameter, + currency=currency, + total_amount=total_amount, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/keyboard_button.py b/aiogram/types/keyboard_button.py index 08d4ce37..2c9e1834 100644 --- a/aiogram/types/keyboard_button.py +++ b/aiogram/types/keyboard_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import MutableTelegramObject @@ -39,3 +39,34 @@ class KeyboardButton(MutableTelegramObject): """*Optional*. If specified, the user will be asked to create a poll and send it to the bot when the button is pressed. Available in private chats only.""" web_app: Optional[WebAppInfo] = None """*Optional*. If specified, the described `Web App `_ will be launched when the button is pressed. The Web App will be able to send a 'web_app_data' service message. Available in private chats only.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + text: str, + request_user: Optional[KeyboardButtonRequestUser] = None, + request_chat: Optional[KeyboardButtonRequestChat] = None, + request_contact: Optional[bool] = None, + request_location: Optional[bool] = None, + request_poll: Optional[KeyboardButtonPollType] = None, + web_app: Optional[WebAppInfo] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + text=text, + request_user=request_user, + request_chat=request_chat, + request_contact=request_contact, + request_location=request_location, + request_poll=request_poll, + web_app=web_app, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/keyboard_button_poll_type.py b/aiogram/types/keyboard_button_poll_type.py index 2747adfb..07eadb7b 100644 --- a/aiogram/types/keyboard_button_poll_type.py +++ b/aiogram/types/keyboard_button_poll_type.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import MutableTelegramObject @@ -14,3 +14,16 @@ class KeyboardButtonPollType(MutableTelegramObject): type: Optional[str] = None """*Optional*. If *quiz* is passed, the user will be allowed to create only polls in the quiz mode. If *regular* is passed, only regular polls will be allowed. Otherwise, the user will be allowed to create a poll of any type.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, type: Optional[str] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/keyboard_button_request_chat.py b/aiogram/types/keyboard_button_request_chat.py index 4b402c1b..24caf635 100644 --- a/aiogram/types/keyboard_button_request_chat.py +++ b/aiogram/types/keyboard_button_request_chat.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from aiogram.types import TelegramObject @@ -31,3 +31,36 @@ class KeyboardButtonRequestChat(TelegramObject): """*Optional*. A JSON-serialized object listing the required administrator rights of the bot in the chat. The rights must be a subset of *user_administrator_rights*. If not specified, no additional restrictions are applied.""" bot_is_member: Optional[bool] = None """*Optional*. Pass :code:`True` to request a chat with the bot as a member. Otherwise, no additional restrictions are applied.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + request_id: int, + chat_is_channel: bool, + chat_is_forum: Optional[bool] = None, + chat_has_username: Optional[bool] = None, + chat_is_created: Optional[bool] = None, + user_administrator_rights: Optional[ChatAdministratorRights] = None, + bot_administrator_rights: Optional[ChatAdministratorRights] = None, + bot_is_member: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + request_id=request_id, + chat_is_channel=chat_is_channel, + chat_is_forum=chat_is_forum, + chat_has_username=chat_has_username, + chat_is_created=chat_is_created, + user_administrator_rights=user_administrator_rights, + bot_administrator_rights=bot_administrator_rights, + bot_is_member=bot_is_member, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/keyboard_button_request_user.py b/aiogram/types/keyboard_button_request_user.py index b6b33039..443f3403 100644 --- a/aiogram/types/keyboard_button_request_user.py +++ b/aiogram/types/keyboard_button_request_user.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from aiogram.types import TelegramObject @@ -16,3 +16,26 @@ class KeyboardButtonRequestUser(TelegramObject): """*Optional*. Pass :code:`True` to request a bot, pass :code:`False` to request a regular user. If not specified, no additional restrictions are applied.""" user_is_premium: Optional[bool] = None """*Optional*. Pass :code:`True` to request a premium user, pass :code:`False` to request a non-premium user. If not specified, no additional restrictions are applied.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + request_id: int, + user_is_bot: Optional[bool] = None, + user_is_premium: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + request_id=request_id, + user_is_bot=user_is_bot, + user_is_premium=user_is_premium, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/labeled_price.py b/aiogram/types/labeled_price.py index 3dcffb89..42d97af3 100644 --- a/aiogram/types/labeled_price.py +++ b/aiogram/types/labeled_price.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import MutableTelegramObject @@ -14,3 +16,16 @@ class LabeledPrice(MutableTelegramObject): """Portion label""" amount: int """Price of the product in the *smallest units* of the `currency `_ (integer, **not** float/double). For example, for a price of :code:`US$ 1.45` pass :code:`amount = 145`. See the *exp* parameter in `currencies.json `_, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, label: str, amount: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(label=label, amount=amount, **__pydantic_kwargs) diff --git a/aiogram/types/location.py b/aiogram/types/location.py index bac5fc70..853e57b6 100644 --- a/aiogram/types/location.py +++ b/aiogram/types/location.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -24,3 +24,32 @@ class Location(TelegramObject): """*Optional*. The direction in which user is moving, in degrees; 1-360. For active live locations only.""" proximity_alert_radius: Optional[int] = None """*Optional*. The maximum distance for proximity alerts about approaching another chat member, in meters. For sent live locations only.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + longitude: float, + latitude: float, + horizontal_accuracy: Optional[float] = None, + live_period: Optional[int] = None, + heading: Optional[int] = None, + proximity_alert_radius: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + longitude=longitude, + latitude=latitude, + horizontal_accuracy=horizontal_accuracy, + live_period=live_period, + heading=heading, + proximity_alert_radius=proximity_alert_radius, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/login_url.py b/aiogram/types/login_url.py index 95a66eac..6f6c94af 100644 --- a/aiogram/types/login_url.py +++ b/aiogram/types/login_url.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -23,3 +23,28 @@ class LoginUrl(TelegramObject): """*Optional*. Username of a bot, which will be used for user authorization. See `Setting up a bot `_ for more details. If not specified, the current bot's username will be assumed. The *url*'s domain must be the same as the domain linked with the bot. See `Linking your domain to the bot `_ for more details.""" request_write_access: Optional[bool] = None """*Optional*. Pass :code:`True` to request the permission for your bot to send messages to the user.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + url: str, + forward_text: Optional[str] = None, + bot_username: Optional[str] = None, + request_write_access: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + url=url, + forward_text=forward_text, + bot_username=bot_username, + request_write_access=request_write_access, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/mask_position.py b/aiogram/types/mask_position.py index 3eea5bda..d02852ab 100644 --- a/aiogram/types/mask_position.py +++ b/aiogram/types/mask_position.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -18,3 +20,24 @@ class MaskPosition(TelegramObject): """Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. For example, 1.0 will place the mask just below the default mask position.""" scale: float """Mask scaling coefficient. For example, 2.0 means double size.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + point: str, + x_shift: float, + y_shift: float, + scale: float, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + point=point, x_shift=x_shift, y_shift=y_shift, scale=scale, **__pydantic_kwargs + ) diff --git a/aiogram/types/menu_button.py b/aiogram/types/menu_button.py index b37c2390..a06814c9 100644 --- a/aiogram/types/menu_button.py +++ b/aiogram/types/menu_button.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import MutableTelegramObject @@ -27,3 +27,21 @@ class MenuButton(MutableTelegramObject): """*Optional*. Text on the button""" web_app: Optional[WebAppInfo] = None """*Optional*. Description of the Web App that will be launched when the user presses the button. The Web App will be able to send an arbitrary message on behalf of the user using the method :class:`aiogram.methods.answer_web_app_query.AnswerWebAppQuery`.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: str, + text: Optional[str] = None, + web_app: Optional[WebAppInfo] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, text=text, web_app=web_app, **__pydantic_kwargs) diff --git a/aiogram/types/menu_button_commands.py b/aiogram/types/menu_button_commands.py index e37e48cd..54ed20b1 100644 --- a/aiogram/types/menu_button_commands.py +++ b/aiogram/types/menu_button_commands.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -15,3 +15,19 @@ class MenuButtonCommands(MenuButton): type: Literal[MenuButtonType.COMMANDS] = MenuButtonType.COMMANDS """Type of the button, must be *commands*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[MenuButtonType.COMMANDS] = MenuButtonType.COMMANDS, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/menu_button_default.py b/aiogram/types/menu_button_default.py index 7b68803e..12ce30eb 100644 --- a/aiogram/types/menu_button_default.py +++ b/aiogram/types/menu_button_default.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -15,3 +15,19 @@ class MenuButtonDefault(MenuButton): type: Literal[MenuButtonType.DEFAULT] = MenuButtonType.DEFAULT """Type of the button, must be *default*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[MenuButtonType.DEFAULT] = MenuButtonType.DEFAULT, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, **__pydantic_kwargs) diff --git a/aiogram/types/menu_button_web_app.py b/aiogram/types/menu_button_web_app.py index ab908afe..bd285211 100644 --- a/aiogram/types/menu_button_web_app.py +++ b/aiogram/types/menu_button_web_app.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import MenuButtonType from .menu_button import MenuButton @@ -22,3 +22,21 @@ class MenuButtonWebApp(MenuButton): """Text on the button""" web_app: WebAppInfo """Description of the Web App that will be launched when the user presses the button. The Web App will be able to send an arbitrary message on behalf of the user using the method :class:`aiogram.methods.answer_web_app_query.AnswerWebAppQuery`.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: Literal[MenuButtonType.WEB_APP] = MenuButtonType.WEB_APP, + text: str, + web_app: WebAppInfo, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(type=type, text=text, web_app=web_app, **__pydantic_kwargs) diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 3e14f8aa..610f162c 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, Any, List, Optional, Union +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union from pydantic import Field @@ -249,6 +249,165 @@ class Message(TelegramObject): reply_markup: Optional[InlineKeyboardMarkup] = None """*Optional*. Inline keyboard attached to the message. :code:`login_url` buttons are represented as ordinary :code:`url` buttons.""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + message_id: int, + date: datetime.datetime, + chat: Chat, + message_thread_id: Optional[int] = None, + from_user: Optional[User] = None, + sender_chat: Optional[Chat] = None, + forward_from: Optional[User] = None, + forward_from_chat: Optional[Chat] = None, + forward_from_message_id: Optional[int] = None, + forward_signature: Optional[str] = None, + forward_sender_name: Optional[str] = None, + forward_date: Optional[int] = None, + is_topic_message: Optional[bool] = None, + is_automatic_forward: Optional[bool] = None, + reply_to_message: Optional[Message] = None, + via_bot: Optional[User] = None, + edit_date: Optional[int] = None, + has_protected_content: Optional[bool] = None, + media_group_id: Optional[str] = None, + author_signature: Optional[str] = None, + text: Optional[str] = None, + entities: Optional[List[MessageEntity]] = None, + animation: Optional[Animation] = None, + audio: Optional[Audio] = None, + document: Optional[Document] = None, + photo: Optional[List[PhotoSize]] = None, + sticker: Optional[Sticker] = None, + video: Optional[Video] = None, + video_note: Optional[VideoNote] = None, + voice: Optional[Voice] = None, + caption: Optional[str] = None, + caption_entities: Optional[List[MessageEntity]] = None, + has_media_spoiler: Optional[bool] = None, + contact: Optional[Contact] = None, + dice: Optional[Dice] = None, + game: Optional[Game] = None, + poll: Optional[Poll] = None, + venue: Optional[Venue] = None, + location: Optional[Location] = None, + new_chat_members: Optional[List[User]] = None, + left_chat_member: Optional[User] = None, + new_chat_title: Optional[str] = None, + new_chat_photo: Optional[List[PhotoSize]] = None, + delete_chat_photo: Optional[bool] = None, + group_chat_created: Optional[bool] = None, + supergroup_chat_created: Optional[bool] = None, + channel_chat_created: Optional[bool] = None, + message_auto_delete_timer_changed: Optional[MessageAutoDeleteTimerChanged] = None, + migrate_to_chat_id: Optional[int] = None, + migrate_from_chat_id: Optional[int] = None, + pinned_message: Optional[Message] = None, + invoice: Optional[Invoice] = None, + successful_payment: Optional[SuccessfulPayment] = None, + user_shared: Optional[UserShared] = None, + chat_shared: Optional[ChatShared] = None, + connected_website: Optional[str] = None, + write_access_allowed: Optional[WriteAccessAllowed] = None, + passport_data: Optional[PassportData] = None, + proximity_alert_triggered: Optional[ProximityAlertTriggered] = None, + forum_topic_created: Optional[ForumTopicCreated] = None, + forum_topic_edited: Optional[ForumTopicEdited] = None, + forum_topic_closed: Optional[ForumTopicClosed] = None, + forum_topic_reopened: Optional[ForumTopicReopened] = None, + general_forum_topic_hidden: Optional[GeneralForumTopicHidden] = None, + general_forum_topic_unhidden: Optional[GeneralForumTopicUnhidden] = None, + video_chat_scheduled: Optional[VideoChatScheduled] = None, + video_chat_started: Optional[VideoChatStarted] = None, + video_chat_ended: Optional[VideoChatEnded] = None, + video_chat_participants_invited: Optional[VideoChatParticipantsInvited] = None, + web_app_data: Optional[WebAppData] = None, + reply_markup: Optional[InlineKeyboardMarkup] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + message_id=message_id, + date=date, + chat=chat, + message_thread_id=message_thread_id, + from_user=from_user, + sender_chat=sender_chat, + forward_from=forward_from, + forward_from_chat=forward_from_chat, + forward_from_message_id=forward_from_message_id, + forward_signature=forward_signature, + forward_sender_name=forward_sender_name, + forward_date=forward_date, + is_topic_message=is_topic_message, + is_automatic_forward=is_automatic_forward, + reply_to_message=reply_to_message, + via_bot=via_bot, + edit_date=edit_date, + has_protected_content=has_protected_content, + media_group_id=media_group_id, + author_signature=author_signature, + text=text, + entities=entities, + animation=animation, + audio=audio, + document=document, + photo=photo, + sticker=sticker, + video=video, + video_note=video_note, + voice=voice, + caption=caption, + caption_entities=caption_entities, + has_media_spoiler=has_media_spoiler, + contact=contact, + dice=dice, + game=game, + poll=poll, + venue=venue, + location=location, + new_chat_members=new_chat_members, + left_chat_member=left_chat_member, + new_chat_title=new_chat_title, + new_chat_photo=new_chat_photo, + delete_chat_photo=delete_chat_photo, + group_chat_created=group_chat_created, + supergroup_chat_created=supergroup_chat_created, + channel_chat_created=channel_chat_created, + message_auto_delete_timer_changed=message_auto_delete_timer_changed, + migrate_to_chat_id=migrate_to_chat_id, + migrate_from_chat_id=migrate_from_chat_id, + pinned_message=pinned_message, + invoice=invoice, + successful_payment=successful_payment, + user_shared=user_shared, + chat_shared=chat_shared, + connected_website=connected_website, + write_access_allowed=write_access_allowed, + passport_data=passport_data, + proximity_alert_triggered=proximity_alert_triggered, + forum_topic_created=forum_topic_created, + forum_topic_edited=forum_topic_edited, + forum_topic_closed=forum_topic_closed, + forum_topic_reopened=forum_topic_reopened, + general_forum_topic_hidden=general_forum_topic_hidden, + general_forum_topic_unhidden=general_forum_topic_unhidden, + video_chat_scheduled=video_chat_scheduled, + video_chat_started=video_chat_started, + video_chat_ended=video_chat_ended, + video_chat_participants_invited=video_chat_participants_invited, + web_app_data=web_app_data, + reply_markup=reply_markup, + **__pydantic_kwargs, + ) + @property def content_type(self) -> str: if self.text: @@ -400,6 +559,10 @@ class Message(TelegramObject): from aiogram.methods import SendAnimation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendAnimation( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -472,6 +635,10 @@ class Message(TelegramObject): from aiogram.methods import SendAnimation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendAnimation( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -542,6 +709,10 @@ class Message(TelegramObject): from aiogram.methods import SendAudio + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendAudio( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -612,6 +783,10 @@ class Message(TelegramObject): from aiogram.methods import SendAudio + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendAudio( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -672,6 +847,10 @@ class Message(TelegramObject): from aiogram.methods import SendContact + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendContact( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -729,6 +908,10 @@ class Message(TelegramObject): from aiogram.methods import SendContact + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendContact( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -789,6 +972,10 @@ class Message(TelegramObject): from aiogram.methods import SendDocument + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendDocument( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -852,6 +1039,10 @@ class Message(TelegramObject): from aiogram.methods import SendDocument + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendDocument( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -902,6 +1093,10 @@ class Message(TelegramObject): from aiogram.methods import SendGame + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendGame( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -948,6 +1143,10 @@ class Message(TelegramObject): from aiogram.methods import SendGame + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendGame( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1033,6 +1232,10 @@ class Message(TelegramObject): from aiogram.methods import SendInvoice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendInvoice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1139,6 +1342,10 @@ class Message(TelegramObject): from aiogram.methods import SendInvoice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendInvoice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1216,6 +1423,10 @@ class Message(TelegramObject): from aiogram.methods import SendLocation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendLocation( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1279,6 +1490,10 @@ class Message(TelegramObject): from aiogram.methods import SendLocation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendLocation( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1327,6 +1542,10 @@ class Message(TelegramObject): from aiogram.methods import SendMediaGroup + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendMediaGroup( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1370,6 +1589,10 @@ class Message(TelegramObject): from aiogram.methods import SendMediaGroup + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendMediaGroup( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1422,6 +1645,10 @@ class Message(TelegramObject): from aiogram.methods import SendMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendMessage( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1479,6 +1706,10 @@ class Message(TelegramObject): from aiogram.methods import SendMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendMessage( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1537,6 +1768,10 @@ class Message(TelegramObject): from aiogram.methods import SendPhoto + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendPhoto( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1597,6 +1832,10 @@ class Message(TelegramObject): from aiogram.methods import SendPhoto + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendPhoto( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1670,6 +1909,10 @@ class Message(TelegramObject): from aiogram.methods import SendPoll + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendPoll( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1751,6 +1994,10 @@ class Message(TelegramObject): from aiogram.methods import SendPoll + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendPoll( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1809,6 +2056,10 @@ class Message(TelegramObject): from aiogram.methods import SendDice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendDice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1857,6 +2108,10 @@ class Message(TelegramObject): from aiogram.methods import SendDice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendDice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1906,6 +2161,10 @@ class Message(TelegramObject): from aiogram.methods import SendSticker + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendSticker( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -1957,6 +2216,10 @@ class Message(TelegramObject): from aiogram.methods import SendSticker + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendSticker( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2019,6 +2282,10 @@ class Message(TelegramObject): from aiogram.methods import SendVenue + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVenue( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2088,6 +2355,10 @@ class Message(TelegramObject): from aiogram.methods import SendVenue + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVenue( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2160,6 +2431,10 @@ class Message(TelegramObject): from aiogram.methods import SendVideo + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVideo( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2235,6 +2510,10 @@ class Message(TelegramObject): from aiogram.methods import SendVideo + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVideo( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2297,6 +2576,10 @@ class Message(TelegramObject): from aiogram.methods import SendVideoNote + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVideoNote( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2354,6 +2637,10 @@ class Message(TelegramObject): from aiogram.methods import SendVideoNote + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVideoNote( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2412,6 +2699,10 @@ class Message(TelegramObject): from aiogram.methods import SendVoice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVoice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2472,6 +2763,10 @@ class Message(TelegramObject): from aiogram.methods import SendVoice + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return SendVoice( chat_id=self.chat.id, message_thread_id=self.message_thread_id if self.is_topic_message else None, @@ -2513,14 +2808,14 @@ class Message(TelegramObject): SendVoice, ]: """ - Send copy of message. + Send copy of a message. Is similar to :meth:`aiogram.client.bot.Bot.copy_message` but returning the sent message instead of :class:`aiogram.types.message_id.MessageId` .. note:: - This method don't use the API method named `copyMessage` and + This method doesn't use the API method named `copyMessage` and historically implemented before the similar method is added to API :param chat_id: @@ -2548,7 +2843,7 @@ class Message(TelegramObject): SendVoice, ) - kwargs = { + kwargs: Dict[str, Any] = { "chat_id": chat_id, "reply_markup": reply_markup or self.reply_markup, "disable_notification": disable_notification, @@ -2556,38 +2851,48 @@ class Message(TelegramObject): "message_thread_id": message_thread_id, "allow_sending_without_reply": allow_sending_without_reply, } - text = self.text or self.caption - entities = self.entities or self.caption_entities if self.text: - return SendMessage(text=text, entities=entities, **kwargs).as_(self._bot) + return SendMessage(text=self.text, entities=self.entities, **kwargs).as_(self._bot) if self.audio: return SendAudio( audio=self.audio.file_id, - caption=text, + caption=self.caption, title=self.audio.title, performer=self.audio.performer, duration=self.audio.duration, - caption_entities=entities, + caption_entities=self.caption_entities, **kwargs, ).as_(self._bot) if self.animation: return SendAnimation( - animation=self.animation.file_id, caption=text, caption_entities=entities, **kwargs + animation=self.animation.file_id, + caption=self.caption, + caption_entities=self.caption_entities, + **kwargs, ).as_(self._bot) if self.document: return SendDocument( - document=self.document.file_id, caption=text, caption_entities=entities, **kwargs + document=self.document.file_id, + caption=self.caption, + caption_entities=self.caption_entities, + **kwargs, ).as_(self._bot) if self.photo: return SendPhoto( - photo=self.photo[-1].file_id, caption=text, caption_entities=entities, **kwargs + photo=self.photo[-1].file_id, + caption=self.caption, + caption_entities=self.caption_entities, + **kwargs, ).as_(self._bot) if self.sticker: return SendSticker(sticker=self.sticker.file_id, **kwargs) if self.video: return SendVideo( - video=self.video.file_id, caption=text, caption_entities=entities, **kwargs + video=self.video.file_id, + caption=self.caption, + caption_entities=self.caption_entities, + **kwargs, ).as_(self._bot) if self.video_note: return SendVideoNote(video_note=self.video_note.file_id, **kwargs).as_(self._bot) @@ -2670,6 +2975,10 @@ class Message(TelegramObject): from aiogram.methods import CopyMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return CopyMessage( from_chat_id=self.chat.id, message_id=self.message_id, @@ -2720,8 +3029,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageText + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageText( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, text=text, inline_message_id=inline_message_id, @@ -2762,6 +3075,10 @@ class Message(TelegramObject): from aiogram.methods import ForwardMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return ForwardMessage( from_chat_id=self.chat.id, message_id=self.message_id, @@ -2806,8 +3123,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageMedia + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageMedia( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, media=media, inline_message_id=inline_message_id, @@ -2841,8 +3162,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageReplyMarkup + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageReplyMarkup( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, inline_message_id=inline_message_id, reply_markup=reply_markup, @@ -2874,8 +3199,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageReplyMarkup + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageReplyMarkup( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, reply_markup=None, inline_message_id=inline_message_id, @@ -2918,8 +3247,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageLiveLocation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageLiveLocation( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, latitude=latitude, longitude=longitude, @@ -2957,8 +3290,12 @@ class Message(TelegramObject): from aiogram.methods import StopMessageLiveLocation + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return StopMessageLiveLocation( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, inline_message_id=inline_message_id, reply_markup=reply_markup, @@ -2997,8 +3334,12 @@ class Message(TelegramObject): from aiogram.methods import EditMessageCaption + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return EditMessageCaption( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, inline_message_id=inline_message_id, caption=caption, @@ -3048,8 +3389,12 @@ class Message(TelegramObject): from aiogram.methods import DeleteMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return DeleteMessage( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, **kwargs, ).as_(self._bot) @@ -3078,8 +3423,12 @@ class Message(TelegramObject): from aiogram.methods import PinChatMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return PinChatMessage( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, disable_notification=disable_notification, **kwargs, @@ -3107,8 +3456,12 @@ class Message(TelegramObject): from aiogram.methods import UnpinChatMessage + assert ( + self.chat is not None + ), "This method can be used only if chat is present in the message." + return UnpinChatMessage( - chat_id=self.chat.id if self.chat else None, + chat_id=self.chat.id, message_id=self.message_id, **kwargs, ).as_(self._bot) diff --git a/aiogram/types/message_auto_delete_timer_changed.py b/aiogram/types/message_auto_delete_timer_changed.py index 4957f08e..8414a247 100644 --- a/aiogram/types/message_auto_delete_timer_changed.py +++ b/aiogram/types/message_auto_delete_timer_changed.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -12,3 +14,18 @@ class MessageAutoDeleteTimerChanged(TelegramObject): message_auto_delete_time: int """New auto-delete time for messages in the chat; in seconds""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, message_auto_delete_time: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + message_auto_delete_time=message_auto_delete_time, **__pydantic_kwargs + ) diff --git a/aiogram/types/message_entity.py b/aiogram/types/message_entity.py index 39773a66..79ba5980 100644 --- a/aiogram/types/message_entity.py +++ b/aiogram/types/message_entity.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from ..utils.text_decorations import add_surrogates, remove_surrogates from .base import MutableTelegramObject @@ -31,6 +31,37 @@ class MessageEntity(MutableTelegramObject): custom_emoji_id: Optional[str] = None """*Optional*. For 'custom_emoji' only, unique identifier of the custom emoji. Use :class:`aiogram.methods.get_custom_emoji_stickers.GetCustomEmojiStickers` to get full information about the sticker""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + type: str, + offset: int, + length: int, + url: Optional[str] = None, + user: Optional[User] = None, + language: Optional[str] = None, + custom_emoji_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + type=type, + offset=offset, + length=length, + url=url, + user=user, + language=language, + custom_emoji_id=custom_emoji_id, + **__pydantic_kwargs, + ) + def extract_from(self, text: str) -> str: return remove_surrogates( add_surrogates(text)[self.offset * 2 : (self.offset + self.length) * 2] diff --git a/aiogram/types/message_id.py b/aiogram/types/message_id.py index edd4784c..d50888f8 100644 --- a/aiogram/types/message_id.py +++ b/aiogram/types/message_id.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -12,3 +14,14 @@ class MessageId(TelegramObject): message_id: int """Unique message identifier""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, message_id: int, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(message_id=message_id, **__pydantic_kwargs) diff --git a/aiogram/types/order_info.py b/aiogram/types/order_info.py index bf354b5e..5d71f657 100644 --- a/aiogram/types/order_info.py +++ b/aiogram/types/order_info.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -23,3 +23,28 @@ class OrderInfo(TelegramObject): """*Optional*. User email""" shipping_address: Optional[ShippingAddress] = None """*Optional*. User shipping address""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: Optional[str] = None, + phone_number: Optional[str] = None, + email: Optional[str] = None, + shipping_address: Optional[ShippingAddress] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + name=name, + phone_number=phone_number, + email=email, + shipping_address=shipping_address, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/passport_data.py b/aiogram/types/passport_data.py index 18523c05..d93af1f0 100644 --- a/aiogram/types/passport_data.py +++ b/aiogram/types/passport_data.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import TelegramObject @@ -20,3 +20,20 @@ class PassportData(TelegramObject): """Array with information about documents and other Telegram Passport elements that was shared with the bot""" credentials: EncryptedCredentials """Encrypted credentials required to decrypt the data""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + data: List[EncryptedPassportElement], + credentials: EncryptedCredentials, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(data=data, credentials=credentials, **__pydantic_kwargs) diff --git a/aiogram/types/passport_element_error_data_field.py b/aiogram/types/passport_element_error_data_field.py index 76a6d93a..3bf2bb28 100644 --- a/aiogram/types/passport_element_error_data_field.py +++ b/aiogram/types/passport_element_error_data_field.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -23,3 +23,30 @@ class PassportElementErrorDataField(PassportElementError): """Base64-encoded data hash""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[PassportElementErrorType.DATA] = PassportElementErrorType.DATA, + type: str, + field_name: str, + data_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, + type=type, + field_name=field_name, + data_hash=data_hash, + message=message, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/passport_element_error_file.py b/aiogram/types/passport_element_error_file.py index 74512eea..8bc40b3e 100644 --- a/aiogram/types/passport_element_error_file.py +++ b/aiogram/types/passport_element_error_file.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,24 @@ class PassportElementErrorFile(PassportElementError): """Base64-encoded file hash""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[PassportElementErrorType.FILE] = PassportElementErrorType.FILE, + type: str, + file_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, type=type, file_hash=file_hash, message=message, **__pydantic_kwargs + ) diff --git a/aiogram/types/passport_element_error_files.py b/aiogram/types/passport_element_error_files.py index 020f7a99..3639da26 100644 --- a/aiogram/types/passport_element_error_files.py +++ b/aiogram/types/passport_element_error_files.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Literal +from typing import TYPE_CHECKING, Any, List, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,28 @@ class PassportElementErrorFiles(PassportElementError): """List of base64-encoded file hashes""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[PassportElementErrorType.FILES] = PassportElementErrorType.FILES, + type: str, + file_hashes: List[str], + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, + type=type, + file_hashes=file_hashes, + message=message, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/passport_element_error_front_side.py b/aiogram/types/passport_element_error_front_side.py index f3b4dd2f..86315f23 100644 --- a/aiogram/types/passport_element_error_front_side.py +++ b/aiogram/types/passport_element_error_front_side.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,26 @@ class PassportElementErrorFrontSide(PassportElementError): """Base64-encoded hash of the file with the front side of the document""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[ + PassportElementErrorType.FRONT_SIDE + ] = PassportElementErrorType.FRONT_SIDE, + type: str, + file_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, type=type, file_hash=file_hash, message=message, **__pydantic_kwargs + ) diff --git a/aiogram/types/passport_element_error_reverse_side.py b/aiogram/types/passport_element_error_reverse_side.py index 18929df6..ecb400f4 100644 --- a/aiogram/types/passport_element_error_reverse_side.py +++ b/aiogram/types/passport_element_error_reverse_side.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,26 @@ class PassportElementErrorReverseSide(PassportElementError): """Base64-encoded hash of the file with the reverse side of the document""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[ + PassportElementErrorType.REVERSE_SIDE + ] = PassportElementErrorType.REVERSE_SIDE, + type: str, + file_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, type=type, file_hash=file_hash, message=message, **__pydantic_kwargs + ) diff --git a/aiogram/types/passport_element_error_selfie.py b/aiogram/types/passport_element_error_selfie.py index 003bfec6..bff6dd61 100644 --- a/aiogram/types/passport_element_error_selfie.py +++ b/aiogram/types/passport_element_error_selfie.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,24 @@ class PassportElementErrorSelfie(PassportElementError): """Base64-encoded hash of the file with the selfie""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[PassportElementErrorType.SELFIE] = PassportElementErrorType.SELFIE, + type: str, + file_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, type=type, file_hash=file_hash, message=message, **__pydantic_kwargs + ) diff --git a/aiogram/types/passport_element_error_translation_file.py b/aiogram/types/passport_element_error_translation_file.py index aac4268e..a8a207c4 100644 --- a/aiogram/types/passport_element_error_translation_file.py +++ b/aiogram/types/passport_element_error_translation_file.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -23,3 +23,26 @@ class PassportElementErrorTranslationFile(PassportElementError): """Base64-encoded file hash""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[ + PassportElementErrorType.TRANSLATION_FILE + ] = PassportElementErrorType.TRANSLATION_FILE, + type: str, + file_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, type=type, file_hash=file_hash, message=message, **__pydantic_kwargs + ) diff --git a/aiogram/types/passport_element_error_translation_files.py b/aiogram/types/passport_element_error_translation_files.py index 427c6468..0d8ff504 100644 --- a/aiogram/types/passport_element_error_translation_files.py +++ b/aiogram/types/passport_element_error_translation_files.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import List, Literal +from typing import TYPE_CHECKING, Any, List, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -23,3 +23,30 @@ class PassportElementErrorTranslationFiles(PassportElementError): """List of base64-encoded file hashes""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[ + PassportElementErrorType.TRANSLATION_FILES + ] = PassportElementErrorType.TRANSLATION_FILES, + type: str, + file_hashes: List[str], + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, + type=type, + file_hashes=file_hashes, + message=message, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/passport_element_error_unspecified.py b/aiogram/types/passport_element_error_unspecified.py index 5e8d88e7..3575d350 100644 --- a/aiogram/types/passport_element_error_unspecified.py +++ b/aiogram/types/passport_element_error_unspecified.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal +from typing import TYPE_CHECKING, Any, Literal from ..enums import PassportElementErrorType from .passport_element_error import PassportElementError @@ -21,3 +21,30 @@ class PassportElementErrorUnspecified(PassportElementError): """Base64-encoded element hash""" message: str """Error message""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + source: Literal[ + PassportElementErrorType.UNSPECIFIED + ] = PassportElementErrorType.UNSPECIFIED, + type: str, + element_hash: str, + message: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + source=source, + type=type, + element_hash=element_hash, + message=message, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/passport_file.py b/aiogram/types/passport_file.py index 11a388f8..1e80048b 100644 --- a/aiogram/types/passport_file.py +++ b/aiogram/types/passport_file.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -18,3 +20,28 @@ class PassportFile(TelegramObject): """File size in bytes""" file_date: int """Unix time when the file was uploaded""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + file_size: int, + file_date: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + file_size=file_size, + file_date=file_date, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/photo_size.py b/aiogram/types/photo_size.py index 0b23b377..9a2ccbe1 100644 --- a/aiogram/types/photo_size.py +++ b/aiogram/types/photo_size.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -22,3 +22,30 @@ class PhotoSize(TelegramObject): """Photo height""" file_size: Optional[int] = None """*Optional*. File size in bytes""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + width: int, + height: int, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + width=width, + height=height, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/poll.py b/aiogram/types/poll.py index fb979a58..8b2c8524 100644 --- a/aiogram/types/poll.py +++ b/aiogram/types/poll.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject @@ -43,3 +43,46 @@ class Poll(TelegramObject): """*Optional*. Amount of time in seconds the poll will be active after creation""" close_date: Optional[datetime.datetime] = None """*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + question: str, + options: List[PollOption], + total_voter_count: int, + is_closed: bool, + is_anonymous: bool, + type: str, + allows_multiple_answers: bool, + correct_option_id: Optional[int] = None, + explanation: Optional[str] = None, + explanation_entities: Optional[List[MessageEntity]] = None, + open_period: Optional[int] = None, + close_date: Optional[datetime.datetime] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + question=question, + options=options, + total_voter_count=total_voter_count, + is_closed=is_closed, + is_anonymous=is_anonymous, + type=type, + allows_multiple_answers=allows_multiple_answers, + correct_option_id=correct_option_id, + explanation=explanation, + explanation_entities=explanation_entities, + open_period=open_period, + close_date=close_date, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/poll_answer.py b/aiogram/types/poll_answer.py index c2cd7456..beb6ef09 100644 --- a/aiogram/types/poll_answer.py +++ b/aiogram/types/poll_answer.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import TelegramObject @@ -21,3 +21,23 @@ class PollAnswer(TelegramObject): """The user, who changed the answer to the poll""" option_ids: List[int] """0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + poll_id: str, + user: User, + option_ids: List[int], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + poll_id=poll_id, user=user, option_ids=option_ids, **__pydantic_kwargs + ) diff --git a/aiogram/types/poll_option.py b/aiogram/types/poll_option.py index cb69aa49..f3059f01 100644 --- a/aiogram/types/poll_option.py +++ b/aiogram/types/poll_option.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -14,3 +16,16 @@ class PollOption(TelegramObject): """Option text, 1-100 characters""" voter_count: int """Number of users that voted for this option""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, text: str, voter_count: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(text=text, voter_count=voter_count, **__pydantic_kwargs) diff --git a/aiogram/types/pre_checkout_query.py b/aiogram/types/pre_checkout_query.py index 1084e76a..6c10650f 100644 --- a/aiogram/types/pre_checkout_query.py +++ b/aiogram/types/pre_checkout_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Any +from typing import TYPE_CHECKING, Any, Optional from pydantic import Field @@ -34,6 +34,37 @@ class PreCheckoutQuery(TelegramObject): order_info: Optional[OrderInfo] = None """*Optional*. Order information provided by the user""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + from_user: User, + currency: str, + total_amount: int, + invoice_payload: str, + shipping_option_id: Optional[str] = None, + order_info: Optional[OrderInfo] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + from_user=from_user, + currency=currency, + total_amount=total_amount, + invoice_payload=invoice_payload, + shipping_option_id=shipping_option_id, + order_info=order_info, + **__pydantic_kwargs, + ) + def answer( self, ok: bool, diff --git a/aiogram/types/proximity_alert_triggered.py b/aiogram/types/proximity_alert_triggered.py index 8275cd26..f5a30c69 100644 --- a/aiogram/types/proximity_alert_triggered.py +++ b/aiogram/types/proximity_alert_triggered.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from .base import TelegramObject @@ -21,3 +21,23 @@ class ProximityAlertTriggered(TelegramObject): """User that set the alert""" distance: int """The distance between the users""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + traveler: User, + watcher: User, + distance: int, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + traveler=traveler, watcher=watcher, distance=distance, **__pydantic_kwargs + ) diff --git a/aiogram/types/reply_keyboard_markup.py b/aiogram/types/reply_keyboard_markup.py index da2f6214..feaa382b 100644 --- a/aiogram/types/reply_keyboard_markup.py +++ b/aiogram/types/reply_keyboard_markup.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import MutableTelegramObject @@ -27,3 +27,32 @@ class ReplyKeyboardMarkup(MutableTelegramObject): """*Optional*. The placeholder to be shown in the input field when the keyboard is active; 1-64 characters""" selective: Optional[bool] = None """*Optional*. Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + keyboard: List[List[KeyboardButton]], + is_persistent: Optional[bool] = None, + resize_keyboard: Optional[bool] = None, + one_time_keyboard: Optional[bool] = None, + input_field_placeholder: Optional[str] = None, + selective: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + keyboard=keyboard, + is_persistent=is_persistent, + resize_keyboard=resize_keyboard, + one_time_keyboard=one_time_keyboard, + input_field_placeholder=input_field_placeholder, + selective=selective, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/reply_keyboard_remove.py b/aiogram/types/reply_keyboard_remove.py index 0260ab6c..5737db3f 100644 --- a/aiogram/types/reply_keyboard_remove.py +++ b/aiogram/types/reply_keyboard_remove.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Literal, Optional +from typing import TYPE_CHECKING, Any, Literal, Optional from .base import MutableTelegramObject @@ -16,3 +16,22 @@ class ReplyKeyboardRemove(MutableTelegramObject): """Requests clients to remove the custom keyboard (user will not be able to summon this keyboard; if you want to hide the keyboard from sight but keep it accessible, use *one_time_keyboard* in :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup`)""" selective: Optional[bool] = None """*Optional*. Use this parameter if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the *text* of the :class:`aiogram.types.message.Message` object; 2) if the bot's message is a reply (has *reply_to_message_id*), sender of the original message.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + remove_keyboard: Literal[True] = True, + selective: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + remove_keyboard=remove_keyboard, selective=selective, **__pydantic_kwargs + ) diff --git a/aiogram/types/response_parameters.py b/aiogram/types/response_parameters.py index dd3531c2..19fc54fb 100644 --- a/aiogram/types/response_parameters.py +++ b/aiogram/types/response_parameters.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -16,3 +16,22 @@ class ResponseParameters(TelegramObject): """*Optional*. The group has been migrated to a supergroup with the specified identifier. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this identifier.""" retry_after: Optional[int] = None """*Optional*. In case of exceeding flood control, the number of seconds left to wait before the request can be repeated""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + migrate_to_chat_id: Optional[int] = None, + retry_after: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + migrate_to_chat_id=migrate_to_chat_id, retry_after=retry_after, **__pydantic_kwargs + ) diff --git a/aiogram/types/sent_web_app_message.py b/aiogram/types/sent_web_app_message.py index 7162d9b7..e8241a5f 100644 --- a/aiogram/types/sent_web_app_message.py +++ b/aiogram/types/sent_web_app_message.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -14,3 +14,19 @@ class SentWebAppMessage(TelegramObject): inline_message_id: Optional[str] = None """*Optional*. Identifier of the sent inline message. Available only if there is an `inline keyboard `_ attached to the message.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + inline_message_id: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(inline_message_id=inline_message_id, **__pydantic_kwargs) diff --git a/aiogram/types/shipping_address.py b/aiogram/types/shipping_address.py index 948956ce..735e2ce3 100644 --- a/aiogram/types/shipping_address.py +++ b/aiogram/types/shipping_address.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -22,3 +24,32 @@ class ShippingAddress(TelegramObject): """Second line for the address""" post_code: str """Address post code""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + country_code: str, + state: str, + city: str, + street_line1: str, + street_line2: str, + post_code: str, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + country_code=country_code, + state=state, + city=city, + street_line1=street_line1, + street_line2=street_line2, + post_code=post_code, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/shipping_option.py b/aiogram/types/shipping_option.py index 6caa84a5..b0274518 100644 --- a/aiogram/types/shipping_option.py +++ b/aiogram/types/shipping_option.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import TelegramObject @@ -21,3 +21,21 @@ class ShippingOption(TelegramObject): """Option title""" prices: List[LabeledPrice] """List of price portions""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + title: str, + prices: List[LabeledPrice], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(id=id, title=title, prices=prices, **__pydantic_kwargs) diff --git a/aiogram/types/shipping_query.py b/aiogram/types/shipping_query.py index e1bbeca3..8f3cd88d 100644 --- a/aiogram/types/shipping_query.py +++ b/aiogram/types/shipping_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Any +from typing import TYPE_CHECKING, Any, List, Optional from pydantic import Field @@ -29,6 +29,31 @@ class ShippingQuery(TelegramObject): shipping_address: ShippingAddress """User specified shipping address""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: str, + from_user: User, + invoice_payload: str, + shipping_address: ShippingAddress, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + from_user=from_user, + invoice_payload=invoice_payload, + shipping_address=shipping_address, + **__pydantic_kwargs, + ) + def answer( self, ok: bool, diff --git a/aiogram/types/sticker.py b/aiogram/types/sticker.py index cb453b32..4c1b8646 100644 --- a/aiogram/types/sticker.py +++ b/aiogram/types/sticker.py @@ -49,6 +49,53 @@ class Sticker(TelegramObject): file_size: Optional[int] = None """*Optional*. File size in bytes""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + type: str, + width: int, + height: int, + is_animated: bool, + is_video: bool, + thumbnail: Optional[PhotoSize] = None, + emoji: Optional[str] = None, + set_name: Optional[str] = None, + premium_animation: Optional[File] = None, + mask_position: Optional[MaskPosition] = None, + custom_emoji_id: Optional[str] = None, + needs_repainting: Optional[bool] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + type=type, + width=width, + height=height, + is_animated=is_animated, + is_video=is_video, + thumbnail=thumbnail, + emoji=emoji, + set_name=set_name, + premium_animation=premium_animation, + mask_position=mask_position, + custom_emoji_id=custom_emoji_id, + needs_repainting=needs_repainting, + file_size=file_size, + **__pydantic_kwargs, + ) + def set_position_in_set( self, position: int, diff --git a/aiogram/types/sticker_set.py b/aiogram/types/sticker_set.py index d212acd0..81747747 100644 --- a/aiogram/types/sticker_set.py +++ b/aiogram/types/sticker_set.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject @@ -30,3 +30,34 @@ class StickerSet(TelegramObject): """List of all set stickers""" thumbnail: Optional[PhotoSize] = None """*Optional*. Sticker set thumbnail in the .WEBP, .TGS, or .WEBM format""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + name: str, + title: str, + sticker_type: str, + is_animated: bool, + is_video: bool, + stickers: List[Sticker], + thumbnail: Optional[PhotoSize] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + name=name, + title=title, + sticker_type=sticker_type, + is_animated=is_animated, + is_video=is_video, + stickers=stickers, + thumbnail=thumbnail, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/successful_payment.py b/aiogram/types/successful_payment.py index d8b0e90c..97dcefe5 100644 --- a/aiogram/types/successful_payment.py +++ b/aiogram/types/successful_payment.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -29,3 +29,34 @@ class SuccessfulPayment(TelegramObject): """*Optional*. Identifier of the shipping option chosen by the user""" order_info: Optional[OrderInfo] = None """*Optional*. Order information provided by the user""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + currency: str, + total_amount: int, + invoice_payload: str, + telegram_payment_charge_id: str, + provider_payment_charge_id: str, + shipping_option_id: Optional[str] = None, + order_info: Optional[OrderInfo] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + currency=currency, + total_amount=total_amount, + invoice_payload=invoice_payload, + telegram_payment_charge_id=telegram_payment_charge_id, + provider_payment_charge_id=provider_payment_charge_id, + shipping_option_id=shipping_option_id, + order_info=order_info, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/switch_inline_query_chosen_chat.py b/aiogram/types/switch_inline_query_chosen_chat.py index f0a2e84f..9a25dca5 100644 --- a/aiogram/types/switch_inline_query_chosen_chat.py +++ b/aiogram/types/switch_inline_query_chosen_chat.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -20,3 +20,30 @@ class SwitchInlineQueryChosenChat(TelegramObject): """*Optional*. True, if group and supergroup chats can be chosen""" allow_channel_chats: Optional[bool] = None """*Optional*. True, if channel chats can be chosen""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + query: Optional[str] = None, + allow_user_chats: Optional[bool] = None, + allow_bot_chats: Optional[bool] = None, + allow_group_chats: Optional[bool] = None, + allow_channel_chats: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + query=query, + allow_user_chats=allow_user_chats, + allow_bot_chats=allow_bot_chats, + allow_group_chats=allow_group_chats, + allow_channel_chats=allow_channel_chats, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/update.py b/aiogram/types/update.py index 9f9eb413..dbaa3222 100644 --- a/aiogram/types/update.py +++ b/aiogram/types/update.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, cast +from typing import TYPE_CHECKING, Any, Optional, cast from ..utils.mypy_hacks import lru_cache from .base import TelegramObject @@ -58,6 +58,53 @@ class Update(TelegramObject): chat_join_request: Optional[ChatJoinRequest] = None """*Optional*. A request to join the chat has been sent. The bot must have the *can_invite_users* administrator right in the chat to receive these updates.""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + update_id: int, + message: Optional[Message] = None, + edited_message: Optional[Message] = None, + channel_post: Optional[Message] = None, + edited_channel_post: Optional[Message] = None, + inline_query: Optional[InlineQuery] = None, + chosen_inline_result: Optional[ChosenInlineResult] = None, + callback_query: Optional[CallbackQuery] = None, + shipping_query: Optional[ShippingQuery] = None, + pre_checkout_query: Optional[PreCheckoutQuery] = None, + poll: Optional[Poll] = None, + poll_answer: Optional[PollAnswer] = None, + my_chat_member: Optional[ChatMemberUpdated] = None, + chat_member: Optional[ChatMemberUpdated] = None, + chat_join_request: Optional[ChatJoinRequest] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + update_id=update_id, + message=message, + edited_message=edited_message, + channel_post=channel_post, + edited_channel_post=edited_channel_post, + inline_query=inline_query, + chosen_inline_result=chosen_inline_result, + callback_query=callback_query, + shipping_query=shipping_query, + pre_checkout_query=pre_checkout_query, + poll=poll, + poll_answer=poll_answer, + my_chat_member=my_chat_member, + chat_member=chat_member, + chat_join_request=chat_join_request, + **__pydantic_kwargs, + ) + def __hash__(self) -> int: return hash((type(self), self.update_id)) diff --git a/aiogram/types/user.py b/aiogram/types/user.py index de1941fb..571447cd 100644 --- a/aiogram/types/user.py +++ b/aiogram/types/user.py @@ -40,6 +40,45 @@ class User(TelegramObject): supports_inline_queries: Optional[bool] = None """*Optional*. :code:`True`, if the bot supports inline queries. Returned only in :class:`aiogram.methods.get_me.GetMe`.""" + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + id: int, + is_bot: bool, + first_name: str, + last_name: Optional[str] = None, + username: Optional[str] = None, + language_code: Optional[str] = None, + is_premium: Optional[bool] = None, + added_to_attachment_menu: Optional[bool] = None, + can_join_groups: Optional[bool] = None, + can_read_all_group_messages: Optional[bool] = None, + supports_inline_queries: Optional[bool] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + id=id, + is_bot=is_bot, + first_name=first_name, + last_name=last_name, + username=username, + language_code=language_code, + is_premium=is_premium, + added_to_attachment_menu=added_to_attachment_menu, + can_join_groups=can_join_groups, + can_read_all_group_messages=can_read_all_group_messages, + supports_inline_queries=supports_inline_queries, + **__pydantic_kwargs, + ) + @property def full_name(self) -> str: if self.last_name: diff --git a/aiogram/types/user_profile_photos.py b/aiogram/types/user_profile_photos.py index ad1197bf..c1c5d28d 100644 --- a/aiogram/types/user_profile_photos.py +++ b/aiogram/types/user_profile_photos.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import TelegramObject @@ -19,3 +19,20 @@ class UserProfilePhotos(TelegramObject): """Total number of profile pictures the target user has""" photos: List[List[PhotoSize]] """Requested profile pictures (in up to 4 sizes each)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + total_count: int, + photos: List[List[PhotoSize]], + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(total_count=total_count, photos=photos, **__pydantic_kwargs) diff --git a/aiogram/types/user_shared.py b/aiogram/types/user_shared.py index f9bf4fbb..65305679 100644 --- a/aiogram/types/user_shared.py +++ b/aiogram/types/user_shared.py @@ -1,3 +1,5 @@ +from typing import TYPE_CHECKING, Any + from aiogram.types import TelegramObject @@ -12,3 +14,16 @@ class UserShared(TelegramObject): """Identifier of the request""" user_id: int """Identifier of the shared user. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot may not have access to the user and could be unable to use this identifier, unless the user is already known to the bot by some other means.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, request_id: int, user_id: int, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(request_id=request_id, user_id=user_id, **__pydantic_kwargs) diff --git a/aiogram/types/venue.py b/aiogram/types/venue.py index 49caceff..e0a3f848 100644 --- a/aiogram/types/venue.py +++ b/aiogram/types/venue.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -29,3 +29,34 @@ class Venue(TelegramObject): """*Optional*. Google Places identifier of the venue""" google_place_type: Optional[str] = None """*Optional*. Google Places type of the venue. (See `supported types `_.)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + location: Location, + title: str, + address: str, + foursquare_id: Optional[str] = None, + foursquare_type: Optional[str] = None, + google_place_id: Optional[str] = None, + google_place_type: Optional[str] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + location=location, + title=title, + address=address, + foursquare_id=foursquare_id, + foursquare_type=foursquare_type, + google_place_id=google_place_id, + google_place_type=google_place_type, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/video.py b/aiogram/types/video.py index ca43493a..e9936091 100644 --- a/aiogram/types/video.py +++ b/aiogram/types/video.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -33,3 +33,38 @@ class Video(TelegramObject): """*Optional*. MIME type of the file as defined by sender""" file_size: Optional[int] = None """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + width: int, + height: int, + duration: int, + thumbnail: Optional[PhotoSize] = None, + file_name: Optional[str] = None, + mime_type: Optional[str] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + width=width, + height=height, + duration=duration, + thumbnail=thumbnail, + file_name=file_name, + mime_type=mime_type, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/video_chat_ended.py b/aiogram/types/video_chat_ended.py index d890a153..289eb722 100644 --- a/aiogram/types/video_chat_ended.py +++ b/aiogram/types/video_chat_ended.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -12,3 +14,14 @@ class VideoChatEnded(TelegramObject): duration: int """Video chat duration in seconds""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, duration: int, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(duration=duration, **__pydantic_kwargs) diff --git a/aiogram/types/video_chat_participants_invited.py b/aiogram/types/video_chat_participants_invited.py index 3361f8ee..74e1a357 100644 --- a/aiogram/types/video_chat_participants_invited.py +++ b/aiogram/types/video_chat_participants_invited.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING, Any, List from .base import TelegramObject @@ -17,3 +17,14 @@ class VideoChatParticipantsInvited(TelegramObject): users: List[User] """New members that were invited to the video chat""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, users: List[User], **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(users=users, **__pydantic_kwargs) diff --git a/aiogram/types/video_chat_scheduled.py b/aiogram/types/video_chat_scheduled.py index 508b1ce3..c1563627 100644 --- a/aiogram/types/video_chat_scheduled.py +++ b/aiogram/types/video_chat_scheduled.py @@ -1,6 +1,7 @@ from __future__ import annotations import datetime +from typing import TYPE_CHECKING, Any from .base import TelegramObject @@ -14,3 +15,16 @@ class VideoChatScheduled(TelegramObject): start_date: datetime.datetime """Point in time (Unix timestamp) when the video chat is supposed to be started by a chat administrator""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, start_date: datetime.datetime, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(start_date=start_date, **__pydantic_kwargs) diff --git a/aiogram/types/video_note.py b/aiogram/types/video_note.py index 03654824..4caa1170 100644 --- a/aiogram/types/video_note.py +++ b/aiogram/types/video_note.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -27,3 +27,32 @@ class VideoNote(TelegramObject): """*Optional*. Video thumbnail""" file_size: Optional[int] = None """*Optional*. File size in bytes""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + length: int, + duration: int, + thumbnail: Optional[PhotoSize] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + length=length, + duration=duration, + thumbnail=thumbnail, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/voice.py b/aiogram/types/voice.py index 53724ad0..d16729c9 100644 --- a/aiogram/types/voice.py +++ b/aiogram/types/voice.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject @@ -22,3 +22,30 @@ class Voice(TelegramObject): """*Optional*. MIME type of the file as defined by sender""" file_size: Optional[int] = None """*Optional*. File size in bytes. It can be bigger than 2^31 and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a signed 64-bit integer or double-precision float type are safe for storing this value.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + file_id: str, + file_unique_id: str, + duration: int, + mime_type: Optional[str] = None, + file_size: Optional[int] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + file_id=file_id, + file_unique_id=file_unique_id, + duration=duration, + mime_type=mime_type, + file_size=file_size, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/web_app_data.py b/aiogram/types/web_app_data.py index 09676292..8fac379f 100644 --- a/aiogram/types/web_app_data.py +++ b/aiogram/types/web_app_data.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -14,3 +16,16 @@ class WebAppData(TelegramObject): """The data. Be aware that a bad client can send arbitrary data in this field.""" button_text: str """Text of the *web_app* keyboard button from which the Web App was opened. Be aware that a bad client can send arbitrary data in this field.""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, data: str, button_text: str, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(data=data, button_text=button_text, **__pydantic_kwargs) diff --git a/aiogram/types/web_app_info.py b/aiogram/types/web_app_info.py index b315846e..01d00d3d 100644 --- a/aiogram/types/web_app_info.py +++ b/aiogram/types/web_app_info.py @@ -1,5 +1,7 @@ from __future__ import annotations +from typing import TYPE_CHECKING, Any + from .base import TelegramObject @@ -12,3 +14,14 @@ class WebAppInfo(TelegramObject): url: str """An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__(__pydantic__self__, *, url: str, **__pydantic_kwargs: Any) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(url=url, **__pydantic_kwargs) diff --git a/aiogram/types/webhook_info.py b/aiogram/types/webhook_info.py index e08df0d6..ed19b342 100644 --- a/aiogram/types/webhook_info.py +++ b/aiogram/types/webhook_info.py @@ -1,7 +1,7 @@ from __future__ import annotations import datetime -from typing import List, Optional +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject @@ -31,3 +31,38 @@ class WebhookInfo(TelegramObject): """*Optional*. The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery""" allowed_updates: Optional[List[str]] = None """*Optional*. A list of update types the bot is subscribed to. Defaults to all update types except *chat_member*""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, + *, + url: str, + has_custom_certificate: bool, + pending_update_count: int, + ip_address: Optional[str] = None, + last_error_date: Optional[datetime.datetime] = None, + last_error_message: Optional[str] = None, + last_synchronization_error_date: Optional[datetime.datetime] = None, + max_connections: Optional[int] = None, + allowed_updates: Optional[List[str]] = None, + **__pydantic_kwargs: Any, + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__( + url=url, + has_custom_certificate=has_custom_certificate, + pending_update_count=pending_update_count, + ip_address=ip_address, + last_error_date=last_error_date, + last_error_message=last_error_message, + last_synchronization_error_date=last_synchronization_error_date, + max_connections=max_connections, + allowed_updates=allowed_updates, + **__pydantic_kwargs, + ) diff --git a/aiogram/types/write_access_allowed.py b/aiogram/types/write_access_allowed.py index 32924410..eb8b1d14 100644 --- a/aiogram/types/write_access_allowed.py +++ b/aiogram/types/write_access_allowed.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import TYPE_CHECKING, Any, Optional from aiogram.types import TelegramObject @@ -12,3 +12,16 @@ class WriteAccessAllowed(TelegramObject): web_app_name: Optional[str] = None """*Optional*. Name of the Web App which was launched from a link""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, web_app_name: Optional[str] = None, **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(web_app_name=web_app_name, **__pydantic_kwargs) diff --git a/aiogram/utils/formatting.py b/aiogram/utils/formatting.py index da00f423..2379418a 100644 --- a/aiogram/utils/formatting.py +++ b/aiogram/utils/formatting.py @@ -98,6 +98,7 @@ class Text(Iterable[NodeType]): return text, entities def _render_entity(self, *, offset: int, length: int) -> MessageEntity: + assert self.type is not None, "Node without type can't be rendered as entity" return MessageEntity(type=self.type, offset=offset, length=length, **self._params) def as_kwargs( diff --git a/aiogram/utils/keyboard.py b/aiogram/utils/keyboard.py index 84258e6d..d276bcbe 100644 --- a/aiogram/utils/keyboard.py +++ b/aiogram/utils/keyboard.py @@ -1,5 +1,6 @@ from __future__ import annotations +from abc import ABC from copy import deepcopy from itertools import chain from itertools import cycle as repeat_all @@ -14,6 +15,7 @@ from typing import ( Type, TypeVar, Union, + cast, no_type_check, ) @@ -35,7 +37,7 @@ MIN_WIDTH = 1 MAX_BUTTONS = 100 -class KeyboardBuilder(Generic[ButtonType]): +class KeyboardBuilder(Generic[ButtonType], ABC): """ Generic keyboard builder that helps to adjust your markup with defined shape of lines. @@ -243,8 +245,10 @@ class KeyboardBuilder(Generic[ButtonType]): def as_markup(self, **kwargs: Any) -> Union[InlineKeyboardMarkup, ReplyKeyboardMarkup]: if self._button_type is KeyboardButton: - return ReplyKeyboardMarkup(keyboard=self.export(), **kwargs) - return InlineKeyboardMarkup(inline_keyboard=self.export()) + keyboard = cast(List[List[KeyboardButton]], self.export()) # type: ignore + return ReplyKeyboardMarkup(keyboard=keyboard, **kwargs) + inline_keyboard = cast(List[List[InlineKeyboardButton]], self.export()) # type: ignore + return InlineKeyboardMarkup(inline_keyboard=inline_keyboard) def repeat_last(items: Iterable[T]) -> Generator[T, None, None]: diff --git a/docs/api/methods/answer_pre_checkout_query.rst b/docs/api/methods/answer_pre_checkout_query.rst index e0ae9694..46197e4a 100644 --- a/docs/api/methods/answer_pre_checkout_query.rst +++ b/docs/api/methods/answer_pre_checkout_query.rst @@ -43,3 +43,9 @@ As reply into Webhook in handler .. code-block:: python return AnswerPreCheckoutQuery(...) + + +As shortcut from received object +-------------------------------- + +- :meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer` diff --git a/docs/api/methods/answer_shipping_query.rst b/docs/api/methods/answer_shipping_query.rst index d1854376..de381d0c 100644 --- a/docs/api/methods/answer_shipping_query.rst +++ b/docs/api/methods/answer_shipping_query.rst @@ -43,3 +43,9 @@ As reply into Webhook in handler .. code-block:: python return AnswerShippingQuery(...) + + +As shortcut from received object +-------------------------------- + +- :meth:`aiogram.types.shipping_query.ShippingQuery.answer` diff --git a/docs/api/methods/edit_message_reply_markup.rst b/docs/api/methods/edit_message_reply_markup.rst index 6f814c2e..6d67bdbe 100644 --- a/docs/api/methods/edit_message_reply_markup.rst +++ b/docs/api/methods/edit_message_reply_markup.rst @@ -49,3 +49,4 @@ As shortcut from received object -------------------------------- - :meth:`aiogram.types.message.Message.edit_reply_markup` +- :meth:`aiogram.types.message.Message.delete_reply_markup` diff --git a/pyproject.toml b/pyproject.toml index a50e9449..6cd53590 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -148,7 +148,7 @@ features = [ "test", ] extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.17" + "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22" ] [tool.hatch.envs.dev.scripts] From 90654ac0fa3b33e3dc3dd7ff47ea9a4e84a040d5 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 4 Aug 2023 22:36:50 +0300 Subject: [PATCH 051/139] Enhance keyboard utility, improved documentation page. (#1236) * Enhance keyboard utility, improved documentation for this utility. Updated the 'aiogram/utils/keyboard.py' file with new methods for integrating buttons and keyboard creation more seamlessly. Added functionality to create buttons from existing markup and attach another builder. This improvement aims to make the keyboard building process more user-friendly and flexible. * Added changelog * Cover by tests --- CHANGES/1236.feature.rst | 3 ++ aiogram/utils/keyboard.py | 39 +++++++++++++++++ docs/utils/keyboard.rst | 39 ++++++++++++++--- tests/test_utils/test_keyboard.py | 72 +++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 CHANGES/1236.feature.rst diff --git a/CHANGES/1236.feature.rst b/CHANGES/1236.feature.rst new file mode 100644 index 00000000..3e651c17 --- /dev/null +++ b/CHANGES/1236.feature.rst @@ -0,0 +1,3 @@ +Updated keyboard builders with new methods for integrating buttons and keyboard creation more seamlessly. +Added functionality to create buttons from existing markup and attach another builder. +This improvement aims to make the keyboard building process more user-friendly and flexible. diff --git a/aiogram/utils/keyboard.py b/aiogram/utils/keyboard.py index d276bcbe..429cbe46 100644 --- a/aiogram/utils/keyboard.py +++ b/aiogram/utils/keyboard.py @@ -238,6 +238,12 @@ class KeyboardBuilder(Generic[ButtonType], ABC): return self def button(self, **kwargs: Any) -> "KeyboardBuilder[ButtonType]": + """ + Add button to markup + + :param kwargs: + :return: + """ if isinstance(callback_data := kwargs.get("callback_data", None), CallbackData): kwargs["callback_data"] = callback_data.pack() button = self._button_type(**kwargs) @@ -250,6 +256,17 @@ class KeyboardBuilder(Generic[ButtonType], ABC): inline_keyboard = cast(List[List[InlineKeyboardButton]], self.export()) # type: ignore return InlineKeyboardMarkup(inline_keyboard=inline_keyboard) + def attach(self, builder: "KeyboardBuilder[ButtonType]") -> "KeyboardBuilder[ButtonType]": + if not isinstance(builder, KeyboardBuilder): + raise ValueError(f"Only KeyboardBuilder can be attached, not {type(builder).__name__}") + if builder._button_type is not self._button_type: + raise ValueError( + f"Only builders with same button type can be attached, " + f"not {self._button_type.__name__} and {builder._button_type.__name__}" + ) + self._markup.extend(builder.export()) + return self + def repeat_last(items: Iterable[T]) -> Generator[T, None, None]: items_iter = iter(items) @@ -307,6 +324,18 @@ class InlineKeyboardBuilder(KeyboardBuilder[InlineKeyboardButton]): """ return InlineKeyboardBuilder(markup=self.export()) + @classmethod + def from_markup( + cls: Type["InlineKeyboardBuilder"], markup: InlineKeyboardMarkup + ) -> "InlineKeyboardBuilder": + """ + Create builder from existing markup + + :param markup: + :return: + """ + return cls(markup=markup.inline_keyboard) + class ReplyKeyboardBuilder(KeyboardBuilder[KeyboardButton]): """ @@ -340,3 +369,13 @@ class ReplyKeyboardBuilder(KeyboardBuilder[KeyboardButton]): :return: """ return ReplyKeyboardBuilder(markup=self.export()) + + @classmethod + def from_markup(cls, markup: ReplyKeyboardMarkup) -> "ReplyKeyboardBuilder": + """ + Create builder from existing markup + + :param markup: + :return: + """ + return cls(markup=markup.keyboard) diff --git a/docs/utils/keyboard.rst b/docs/utils/keyboard.rst index 8988244e..35559fc0 100644 --- a/docs/utils/keyboard.rst +++ b/docs/utils/keyboard.rst @@ -14,6 +14,8 @@ Keyboard builder helps to dynamically generate markup. Usage example ============= +For example you want to generate inline keyboard with 10 buttons + .. code-block:: python builder = InlineKeyboardBuilder() @@ -21,22 +23,45 @@ Usage example for index in range(1, 11): builder.button(text=f"Set {index}", callback_data=f"set:{index}") + +then adjust this buttons to some grid, for example first line will have 3 buttons, the next lines will have 2 buttons + +.. code-block:: + builder.adjust(3, 2) +also you can attach another builder to this one + +.. code-block:: python + + another_builder = InlineKeyboardBuilder(...)... # Another builder with some buttons + builder.attach(another_builder) + +or you can attach some already generated markup + +.. code-block:: python + + markup = InlineKeyboardMarkup(inline_keyboard=[...]) # Some markup + builder.attach(InlineKeyboardBuilder.from_markup(markup)) + +and finally you can export this markup to use it in your message + +.. code-block:: python + await message.answer("Some text here", reply_markup=builder.as_markup()) +Reply keyboard builder has the same interface + +.. warning:: + + Note that you can't attach reply keyboard builder to inline keyboard builder and vice versa -Base builder -============ -.. autoclass:: aiogram.utils.keyboard.ReplyKeyboardBuilder - :members: __init__, buttons, copy, export, add, row, adjust, button, as_markup - :undoc-members: True Inline Keyboard =============== .. autoclass:: aiogram.utils.keyboard.InlineKeyboardBuilder - :noindex: + :members: __init__, buttons, copy, export, add, row, adjust, from_markup, attach .. method:: button(text: str, url: Optional[str] = None, login_url: Optional[LoginUrl] = None, callback_data: Optional[Union[str, CallbackData]] = None, switch_inline_query: Optional[str] = None, switch_inline_query_current_chat: Optional[str] = None, callback_game: Optional[CallbackGame] = None, pay: Optional[bool] = None, **kwargs: Any) -> aiogram.utils.keyboard.InlineKeyboardBuilder :noindex: @@ -52,7 +77,7 @@ Reply Keyboard ============== .. autoclass:: aiogram.utils.keyboard.ReplyKeyboardBuilder - :noindex: + :members: __init__, buttons, copy, export, add, row, adjust, from_markup, attach .. method:: button(text: str, request_contact: Optional[bool] = None, request_location: Optional[bool] = None, request_poll: Optional[KeyboardButtonPollType] = None, **kwargs: Any) -> aiogram.utils.keyboard.ReplyKeyboardBuilder :noindex: diff --git a/tests/test_utils/test_keyboard.py b/tests/test_utils/test_keyboard.py index 65bb97e4..5beb6d58 100644 --- a/tests/test_utils/test_keyboard.py +++ b/tests/test_utils/test_keyboard.py @@ -228,3 +228,75 @@ class TestKeyboardBuilder: ) def test_as_markup(self, builder, expected): assert isinstance(builder.as_markup(), expected) + + @pytest.mark.parametrize( + "markup,builder_type", + [ + [ + ReplyKeyboardMarkup( + keyboard=[ + [KeyboardButton(text="test-1"), KeyboardButton(text="test-2")], + [KeyboardButton(text="test-3")], + ] + ), + ReplyKeyboardBuilder, + ], + [ + InlineKeyboardMarkup( + inline_keyboard=[ + [InlineKeyboardButton(text="test-1"), InlineKeyboardButton(text="test-2")], + [InlineKeyboardButton(text="test-3")], + ] + ), + InlineKeyboardBuilder, + ], + ], + ) + def test_from_markup(self, markup, builder_type): + builder = builder_type.from_markup(markup) + assert len(builder.export()) == 2 + assert len(list(builder.buttons)) == 3 + + def test_attach(self): + builder = ReplyKeyboardBuilder( + markup=[ + [ + KeyboardButton(text="test1"), + KeyboardButton(text="test2"), + KeyboardButton(text="test3"), + ] + ] + ) + builder.adjust(2) + builder.attach(ReplyKeyboardBuilder(markup=[[KeyboardButton(text="test2")]])) + markup = builder.export() + assert len(markup) == 3 + assert len(markup[0]) == 2 + assert len(markup[1]) == 1 + assert len(markup[2]) == 1 + + def test_attach_invalid_button_type(self): + builder = ReplyKeyboardBuilder( + markup=[ + [ + KeyboardButton(text="test1"), + KeyboardButton(text="test2"), + KeyboardButton(text="test3"), + ] + ] + ) + with pytest.raises(ValueError): + builder.attach(InlineKeyboardBuilder(markup=[[InlineKeyboardButton(text="test2")]])) + + def test_attach_not_builder(self): + builder = ReplyKeyboardBuilder( + markup=[ + [ + KeyboardButton(text="test1"), + KeyboardButton(text="test2"), + KeyboardButton(text="test3"), + ] + ] + ) + with pytest.raises(ValueError): + builder.attach(KeyboardButton(text="test2")) From 62d4b9014c71024f42d8818d1191c980bf3fd432 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 01:14:26 +0300 Subject: [PATCH 052/139] Fix bot instance passing in Dispatcher startup (#1247) Modified the Dispatcher to remove the "bot" key from workflow_data if found, prior to emitting startup in order to allow manual addition of "bot" to workflow data. This change was necessary as a bot instance is required to start polling, and therefore must be passed correctly. This logic is now tested in the 'test_start_polling' function. The change also includes an update to the changelog. --- CHANGES/1242.bugfix.rst | 1 + aiogram/dispatcher/dispatcher.py | 3 +++ tests/test_dispatcher/test_dispatcher.py | 3 +++ 3 files changed, 7 insertions(+) create mode 100644 CHANGES/1242.bugfix.rst diff --git a/CHANGES/1242.bugfix.rst b/CHANGES/1242.bugfix.rst new file mode 100644 index 00000000..eb981383 --- /dev/null +++ b/CHANGES/1242.bugfix.rst @@ -0,0 +1 @@ +Fixed polling startup when "bot" key is passed manually into dispatcher workflow data diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index eb2d55f2..f85c91d4 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -516,6 +516,9 @@ class Dispatcher(Router): **self.workflow_data, **kwargs, } + if "bot" in workflow_data: + workflow_data.pop("bot") + await self.emit_startup(bot=bots[-1], **workflow_data) loggers.dispatcher.info("Start polling") try: diff --git a/tests/test_dispatcher/test_dispatcher.py b/tests/test_dispatcher/test_dispatcher.py index 69aece69..b0cc5b79 100644 --- a/tests/test_dispatcher/test_dispatcher.py +++ b/tests/test_dispatcher/test_dispatcher.py @@ -675,6 +675,7 @@ class TestDispatcher: async def test_start_polling(self, bot: MockedBot): dispatcher = Dispatcher() + dispatcher.workflow_data["bot"] = 42 with pytest.raises( ValueError, match="At least one bot instance is required to start polling" ): @@ -708,6 +709,8 @@ class TestDispatcher: mocked_emit_startup.assert_awaited() mocked_process_update.assert_awaited() mocked_emit_shutdown.assert_awaited() + assert dispatcher.workflow_data["bot"] == 42 + assert mocked_emit_shutdown.call_args.kwargs["bot"] == bot async def test_stop_polling(self): dispatcher = Dispatcher() From b311d59fce5d1f7554825b6c60daadcce189e9e7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 16:59:29 +0300 Subject: [PATCH 053/139] Webhook docs (#1248) * Added documentation for polling/webhook modes * Added changelog * Added changelog --- CHANGES/1241.doc.rst | 1 + aiogram/webhook/aiohttp_server.py | 49 +- docs/dispatcher/index.rst | 9 + docs/dispatcher/long_polling.rst | 32 + docs/dispatcher/webhook.rst | 125 ++++ .../en/LC_MESSAGES/api/enums/currency.po | 30 + .../api/methods/answer_pre_checkout_query.po | 28 +- .../api/methods/answer_shipping_query.po | 28 +- .../api/methods/edit_message_reply_markup.po | 28 +- .../en/LC_MESSAGES/api/types/message.po | 33 +- .../api/types/pre_checkout_query.po | 52 +- .../LC_MESSAGES/api/types/shipping_query.po | 55 +- docs/locale/en/LC_MESSAGES/changelog.po | 570 ++++++++++-------- .../locale/en/LC_MESSAGES/deployment/index.po | 22 + .../locale/en/LC_MESSAGES/dispatcher/index.po | 24 +- .../en/LC_MESSAGES/dispatcher/long_polling.po | 62 ++ .../en/LC_MESSAGES/dispatcher/webhook.po | 303 ++++++++++ docs/locale/en/LC_MESSAGES/utils/keyboard.po | 106 +++- .../uk_UA/LC_MESSAGES/api/enums/currency.po | 30 + .../api/methods/answer_pre_checkout_query.po | 28 +- .../api/methods/answer_shipping_query.po | 28 +- .../api/methods/edit_message_reply_markup.po | 28 +- .../uk_UA/LC_MESSAGES/api/types/message.po | 33 +- .../api/types/pre_checkout_query.po | 52 +- .../LC_MESSAGES/api/types/shipping_query.po | 55 +- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 570 ++++++++++-------- .../uk_UA/LC_MESSAGES/deployment/index.po | 22 + .../LC_MESSAGES/dispatcher/filters/text.po | 130 ++++ .../uk_UA/LC_MESSAGES/dispatcher/index.po | 24 +- .../LC_MESSAGES/dispatcher/long_polling.po | 62 ++ .../uk_UA/LC_MESSAGES/dispatcher/webhook.po | 303 ++++++++++ .../uk_UA/LC_MESSAGES/utils/keyboard.po | 124 ++-- examples/echo_bot.py | 13 +- examples/echo_bot_webhook.py | 104 ++++ examples/echo_bot_webhook_ssl.py | 118 ++++ examples/multibot.py | 2 +- examples/specify_updates.py | 4 +- 37 files changed, 2595 insertions(+), 692 deletions(-) create mode 100644 CHANGES/1241.doc.rst create mode 100644 docs/dispatcher/long_polling.rst create mode 100644 docs/dispatcher/webhook.rst create mode 100644 docs/locale/en/LC_MESSAGES/api/enums/currency.po create mode 100644 docs/locale/en/LC_MESSAGES/deployment/index.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/webhook.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/deployment/index.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po create mode 100644 examples/echo_bot_webhook.py create mode 100644 examples/echo_bot_webhook_ssl.py diff --git a/CHANGES/1241.doc.rst b/CHANGES/1241.doc.rst new file mode 100644 index 00000000..34825cf9 --- /dev/null +++ b/CHANGES/1241.doc.rst @@ -0,0 +1 @@ +Added documentation for webhook and polling modes. diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index af1c3c56..bf9f2aaf 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -18,11 +18,11 @@ from aiogram.webhook.security import IPFilter def setup_application(app: Application, dispatcher: Dispatcher, /, **kwargs: Any) -> None: """ - This function helps to configure startup-shutdown process + This function helps to configure a startup-shutdown process - :param app: - :param dispatcher: - :param kwargs: + :param app: aiohttp application + :param dispatcher: aiogram dispatcher + :param kwargs: additional data :return: """ workflow_data = { @@ -81,11 +81,6 @@ def ip_filter_middleware( class BaseRequestHandler(ABC): - """ - Base handler that helps to handle incoming request from aiohttp - and propagate it to the Dispatcher - """ - def __init__( self, dispatcher: Dispatcher, @@ -93,9 +88,12 @@ class BaseRequestHandler(ABC): **data: Any, ) -> None: """ + Base handler that helps to handle incoming request from aiohttp + and propagate it to the Dispatcher + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of a handler process """ self.dispatcher = dispatcher self.handle_in_background = handle_in_background @@ -199,10 +197,6 @@ class BaseRequestHandler(ABC): class SimpleRequestHandler(BaseRequestHandler): - """ - Handler for single Bot instance - """ - def __init__( self, dispatcher: Dispatcher, @@ -212,9 +206,11 @@ class SimpleRequestHandler(BaseRequestHandler): **data: Any, ) -> None: """ + Handler for single Bot instance + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of handler process :param bot: instance of :class:`aiogram.client.bot.Bot` """ super().__init__(dispatcher=dispatcher, handle_in_background=handle_in_background, **data) @@ -237,11 +233,6 @@ class SimpleRequestHandler(BaseRequestHandler): class TokenBasedRequestHandler(BaseRequestHandler): - """ - Handler that supports multiple bots, the context will be resolved - from path variable 'bot_token' - """ - def __init__( self, dispatcher: Dispatcher, @@ -250,9 +241,17 @@ class TokenBasedRequestHandler(BaseRequestHandler): **data: Any, ) -> None: """ + Handler that supports multiple bots the context will be resolved + from path variable 'bot_token' + + .. note:: + + This handler is not recommended in due to token is available in URL + and can be logged by reverse proxy server or other middleware. + :param dispatcher: instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher` - :param handle_in_background: immediately respond to the Telegram instead of - waiting end of handler process + :param handle_in_background: immediately responds to the Telegram instead of + a waiting end of handler process :param bot_settings: kwargs that will be passed to new Bot instance """ super().__init__(dispatcher=dispatcher, handle_in_background=handle_in_background, **data) @@ -282,7 +281,7 @@ class TokenBasedRequestHandler(BaseRequestHandler): async def resolve_bot(self, request: web.Request) -> Bot: """ - Get bot token from path and create or get from cache Bot instance + Get bot token from a path and create or get from cache Bot instance :param request: :return: diff --git a/docs/dispatcher/index.rst b/docs/dispatcher/index.rst index b7299ea9..73dae308 100644 --- a/docs/dispatcher/index.rst +++ b/docs/dispatcher/index.rst @@ -15,6 +15,13 @@ With dispatcher you can do: Dispatcher is also separated into two entities - Router and Dispatcher. Dispatcher is subclass of router and should be always is root router. +Telegram supports two ways of receiving updates: + +- :ref:`Webhook ` - you should configure your web server to receive updates from Telegram; +- :ref:`Long polling ` - you should request updates from Telegram. + +So, you can use both of them with *aiogram*. + .. toctree:: router @@ -25,3 +32,5 @@ Dispatcher is subclass of router and should be always is root router. finite_state_machine/index flags errors + long_polling + webhook diff --git a/docs/dispatcher/long_polling.rst b/docs/dispatcher/long_polling.rst new file mode 100644 index 00000000..c261ed35 --- /dev/null +++ b/docs/dispatcher/long_polling.rst @@ -0,0 +1,32 @@ +.. _long-polling: + +############ +Long-polling +############ + +Long-polling is a technology that allows a Telegram server to send updates in case +when you don't have dedicated IP address or port to receive webhooks for example +on a developer machine. + +To use long-polling mode you should use :meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` +or :meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods. + +.. note:: + + You can use polling from only one polling process per single Bot token, + in other case Telegram server will return an error. + +.. note:: + + If you will need to scale your bot, you should use webhooks instead of long-polling. + +.. note:: + + If you will use multibot mode, you should use webhook mode for all bots. + +Example +======= + +This example will show you how to create simple echo bot based on long-polling. + +.. literalinclude:: ../../examples/echo_bot.py diff --git a/docs/dispatcher/webhook.rst b/docs/dispatcher/webhook.rst new file mode 100644 index 00000000..8cff6640 --- /dev/null +++ b/docs/dispatcher/webhook.rst @@ -0,0 +1,125 @@ +.. _webhook: + +####### +Webhook +####### + +Telegram Bot API supports webhook. +If you set webhook for your bot, Telegram will send updates to the specified url. +You can use :meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url +and receive incoming updates on it. + +.. note:: + + If you use webhook, you can't use long polling at the same time. + +Before start i'll recommend you to read `official Telegram's documentation about webhook `_ + +After you read it, you can start to read this section. + +Generally to use webhook with aiogram you should use any async web framework. +Buy out of the box aiogram has an aiohttp integration, so we'll use it. + +.. note:: + + You can use any async web framework you want, but you should write your own integration if you don't use aiohttp. + + +aiohttp integration +=================== + +Out of the box aiogram has aiohttp integration, so you can use it. + +Here is available few ways to do it using different implementations of the webhook controller: + +- :class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract class for aiohttp webhook controller +- :class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple webhook controller, uses single Bot instance +- :class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token based webhook controller, uses multiple Bot instances and tokens + +You can use it as is or inherit from it and override some methods. + +.. autoclass:: aiogram.webhook.aiohttp_server.BaseRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +.. autoclass:: aiogram.webhook.aiohttp_server.SimpleRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +.. autoclass:: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler + :members: __init__, register, close, resolve_bot, verify_secret, handle + +Security +-------- + +Telegram supports two methods to verify incoming requests that they are from Telegram: + +Using a secret token +~~~~~~~~~~~~~~~~~~~~ + +When you set webhook, you can specify a secret token and then use it to verify incoming requests. + +Using IP filtering +~~~~~~~~~~~~~~~~~~ + +You can specify a list of IP addresses from which you expect incoming requests, and then use it to verify incoming requests. + +It can be acy using firewall rules or nginx configuration or middleware on application level. + +So, aiogram has an implementation of the IP filtering middleware for aiohttp. + +.. autofunction:: aiogram.webhook.aiohttp_server.ip_filter_middleware + +.. autoclass:: aiogram.webhook.security.IPFilter + :members: __init__, allow, allow_ip, default, check + +Examples +-------- + +Behind reverse proxy +~~~~~~~~~~~~~~~~~~~~ + +In this example we'll use aiohttp as web framework and nginx as reverse proxy. + +.. literalinclude:: ../../examples/echo_bot_webhook.py + +When you use nginx as reverse proxy, you should set `proxy_pass` to your aiohttp server address. + +.. code-block:: nginx + + location /webhook { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_redirect off; + proxy_buffering off; + proxy_pass http://127.0.0.1:8080; + } + + +Without reverse proxy (not recommended) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In case you want can't use reverse proxy, you can use aiohttp's ssl context. + +Also this example contains usage with self-signed certificate. + +.. literalinclude:: ../../examples/echo_bot_webhook_ssl.py + + +With using other web framework +============================== + +You can pass incoming request to aiogram's webhook controller from any web framework you want. + +Read more about it in :meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` +or :meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods. + +.. code-block:: python + + update = Update.model_validate(await request.json(), context={"bot": bot}) + await dispatcher.feed_update(update) + + +.. note:: + + If you want to use reply into webhook, you should check that result of the :code:`feed_update` + methods is an instance of API method and build :code:`multipart/form-data` + or :code:`application/json` response body manually. diff --git a/docs/locale/en/LC_MESSAGES/api/enums/currency.po b/docs/locale/en/LC_MESSAGES/api/enums/currency.po new file mode 100644 index 00000000..b7a6d732 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/enums/currency.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/currency.rst:3 +msgid "Currency" +msgstr "" + +#: aiogram.enums.currency.Currency:1 of +msgid "Currencies supported by Telegram Bot API" +msgstr "" + +#: aiogram.enums.currency.Currency:3 of +msgid "Source: https://core.telegram.org/bots/payments#supported-currencies" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po index 6447522c..0686720e 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_pre_checkout_query.rst:3 msgid "answerPreCheckoutQuery" @@ -65,36 +65,44 @@ msgid "" " user." msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:14 +#: ../../api/methods/answer_pre_checkout_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:17 +#: ../../api/methods/answer_pre_checkout_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:25 +#: ../../api/methods/answer_pre_checkout_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:27 +#: ../../api/methods/answer_pre_checkout_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:29 +#: ../../api/methods/answer_pre_checkout_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_pre_checkout_query import " "AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:30 +#: ../../api/methods/answer_pre_checkout_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:33 +#: ../../api/methods/answer_pre_checkout_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:40 +#: ../../api/methods/answer_pre_checkout_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:51 +msgid ":meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po index f1a61600..418b9c67 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_shipping_query.rst:3 msgid "answerShippingQuery" @@ -69,36 +69,44 @@ msgid "" "this message to the user." msgstr "" -#: ../../api/methods/answer_shipping_query.rst:14 +#: ../../api/methods/answer_shipping_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:17 +#: ../../api/methods/answer_shipping_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:25 +#: ../../api/methods/answer_shipping_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:27 +#: ../../api/methods/answer_shipping_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:29 +#: ../../api/methods/answer_shipping_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_shipping_query import " "AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:30 +#: ../../api/methods/answer_shipping_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:33 +#: ../../api/methods/answer_shipping_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:40 +#: ../../api/methods/answer_shipping_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:51 +msgid ":meth:`aiogram.types.shipping_query.ShippingQuery.answer`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po index d8a3b25d..b704dd6d 100644 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po +++ b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/edit_message_reply_markup.rst:3 msgid "editMessageReplyMarkup" @@ -70,48 +70,52 @@ msgid "" "`_." msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:14 +#: ../../api/methods/edit_message_reply_markup.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:17 +#: ../../api/methods/edit_message_reply_markup.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:25 +#: ../../api/methods/edit_message_reply_markup.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:27 +#: ../../api/methods/edit_message_reply_markup.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:29 +#: ../../api/methods/edit_message_reply_markup.rst:30 msgid "" ":code:`from aiogram.methods.edit_message_reply_markup import " "EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:30 +#: ../../api/methods/edit_message_reply_markup.rst:31 msgid "alias: :code:`from aiogram.methods import EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:33 +#: ../../api/methods/edit_message_reply_markup.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:40 +#: ../../api/methods/edit_message_reply_markup.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:48 +#: ../../api/methods/edit_message_reply_markup.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:50 +#: ../../api/methods/edit_message_reply_markup.rst:51 msgid ":meth:`aiogram.types.message.Message.edit_reply_markup`" msgstr "" +#: ../../api/methods/edit_message_reply_markup.rst:52 +msgid ":meth:`aiogram.types.message.Message.delete_reply_markup`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/message.rst:3 msgid "Message" @@ -437,6 +437,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note:4 #: aiogram.types.message.Message.answer_voice:4 #: aiogram.types.message.Message.delete:4 +#: aiogram.types.message.Message.delete_reply_markup:4 #: aiogram.types.message.Message.edit_caption:4 #: aiogram.types.message.Message.edit_live_location:4 #: aiogram.types.message.Message.edit_media:4 @@ -554,6 +555,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -836,6 +838,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to aiogram.types.message.Message.delete +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -1941,7 +1944,7 @@ msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" msgstr "" #: aiogram.types.message.Message.send_copy:1 of -msgid "Send copy of message." +msgid "Send copy of a message." msgstr "" #: aiogram.types.message.Message.send_copy:3 of @@ -1952,8 +1955,8 @@ msgstr "" #: aiogram.types.message.Message.send_copy:8 of msgid "" -"This method don't use the API method named `copyMessage` and historically" -" implemented before the similar method is added to API" +"This method doesn't use the API method named `copyMessage` and " +"historically implemented before the similar method is added to API" msgstr "" #: aiogram.types.message.Message.copy_to:1 of @@ -1969,6 +1972,7 @@ msgstr "" #: aiogram.types.message.Message.copy_to:5 #: aiogram.types.message.Message.delete:5 +#: aiogram.types.message.Message.delete_reply_markup:5 #: aiogram.types.message.Message.edit_caption:5 #: aiogram.types.message.Message.edit_live_location:5 #: aiogram.types.message.Message.edit_media:5 @@ -2057,6 +2061,7 @@ msgstr "" msgid "New text of the message, 1-4096 characters after entities parsing" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:12 #: aiogram.types.message.Message.edit_caption:11 #: aiogram.types.message.Message.edit_live_location:13 #: aiogram.types.message.Message.edit_media:12 @@ -2149,6 +2154,7 @@ msgid "" ":class:`aiogram.methods.edit_message_media.EditMessageMedia`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:1 #: aiogram.types.message.Message.edit_reply_markup:1 of msgid "" "Shortcut for method " @@ -2156,6 +2162,7 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:8 #: aiogram.types.message.Message.edit_reply_markup:7 of msgid "" "Use this method to edit only the reply markup of messages. On success, if" @@ -2164,16 +2171,22 @@ msgid "" ":code:`True` is returned." msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:10 #: aiogram.types.message.Message.edit_reply_markup:9 of msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:13 #: aiogram.types.message.Message.edit_reply_markup:13 of msgid "" "instance of method " ":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:6 of +msgid ":code:`reply_markup`" +msgstr "" + #: aiogram.types.message.Message.edit_live_location:1 of msgid "" "Shortcut for method " @@ -2562,3 +2575,13 @@ msgstr "" #~ "/form-data. :ref:`More information on " #~ "Sending Files » `" #~ msgstr "" + +#~ msgid "Send copy of message." +#~ msgstr "" + +#~ msgid "" +#~ "This method don't use the API " +#~ "method named `copyMessage` and historically" +#~ " implemented before the similar method " +#~ "is added to API" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po index 053b5081..59009813 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po +++ b/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/pre_checkout_query.rst:3 msgid "PreCheckoutQuery" @@ -71,10 +71,58 @@ msgstr "" msgid "*Optional*. Order information provided by the user" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:4 of +msgid ":code:`pre_checkout_query_id`" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:6 of +msgid "" +"Once the user has confirmed their payment and shipping details, the Bot " +"API sends the final confirmation in the form of an " +":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." +" Use this method to respond to such pre-checkout queries. On success, " +":code:`True` is returned. **Note:** The Bot API must receive an answer " +"within 10 seconds after the pre-checkout query was sent." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:10 of +msgid "" +"Specify :code:`True` if everything is alright (goods are available, etc.)" +" and the bot is ready to proceed with the order. Use :code:`False` if " +"there are any problems." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`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." +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:12 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po b/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po index 71f13a21..b17b8c63 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po +++ b/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/shipping_query.rst:3 msgid "ShippingQuery" @@ -47,10 +47,61 @@ msgstr "" msgid "User specified shipping address" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:4 of +msgid ":code:`shipping_query_id`" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:6 of +msgid "" +"If you sent an invoice requesting a shipping address and the parameter " +"*is_flexible* was specified, the Bot API will send an " +":class:`aiogram.types.update.Update` with a *shipping_query* field to the" +" bot. Use this method to reply to shipping queries. On success, " +":code:`True` is returned." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answershippingquery" +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:10 of +msgid "" +"Pass :code:`True` if delivery to the specified address is possible and " +":code:`False` if there are any problems (for example, if delivery to the " +"specified address is not possible)" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`True`. A JSON-serialized array of available " +"shipping options." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:12 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains why it is impossible to complete the order (e.g. \"Sorry, " +"delivery to your desired address is unavailable'). Telegram will display " +"this message to the user." +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:13 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po index 995b93c1..92abec62 100644 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ b/docs/locale/en/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,18 +22,96 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" msgstr "" -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 -#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 -#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 -#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 -#: ../../[towncrier-fragments]:5 +#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 +#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 +#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 +#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "Added Currency enum. You can use it like this:" +msgstr "" + +#: ../../[towncrier-fragments]:19 +msgid "`#1194 `_" +msgstr "" + +#: ../../[towncrier-fragments]:20 +msgid "" +"Updated keyboard builders with new methods for integrating buttons and " +"keyboard creation more seamlessly. Added functionality to create buttons " +"from existing markup and attach another builder. This improvement aims to" +" make the keyboard building process more user-friendly and flexible. " +"`#1236 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 +#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 +#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 +#: ../../[towncrier-fragments]:27 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "" +"Fixed polling startup when \"bot\" key is passed manually into dispatcher" +" workflow data `#1242 `_" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "Added codegen configuration for lost shortcuts:" +msgstr "" + +#: ../../[towncrier-fragments]:33 +msgid "ShippingQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:34 +msgid "PreCheckoutQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "Message.delete_reply_markup" +msgstr "" + +#: ../../[towncrier-fragments]:36 +msgid "`#1244 `_" +msgstr "" + +#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 +#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 +#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 +msgid "Misc" +msgstr "" + +#: ../../[towncrier-fragments]:42 +msgid "" +"Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" +" Bot` argument to the :code:`.read(...)` method, so, from now " +"URLInputFile can be used without specifying bot instance. `#1238 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:46 +msgid "" +"Code-generated :code:`__init__` typehints in types and methods to make " +"IDE happy without additional pydantic plugin `#1245 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:21 +msgid "3.0.0b9 (2023-07-30)" +msgstr "" + +#: ../../../CHANGES.rst:26 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -41,7 +119,7 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:10 +#: ../../../CHANGES.rst:29 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -49,21 +127,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 -#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 -#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 -#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 -#: ../../[towncrier-fragments]:16 -msgid "Bugfixes" -msgstr "" - -#: ../../[towncrier-fragments]:18 +#: ../../../CHANGES.rst:37 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:39 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -73,23 +143,26 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 -#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +#: ../../../CHANGES.rst:44 +msgid "Updated pydantic to 2.1 with few bugfixes" +msgstr "" + +#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 msgid "Improved Documentation" msgstr "" -#: ../../[towncrier-fragments]:30 +#: ../../../CHANGES.rst:50 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 msgid "Deprecations and Removals" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:57 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -97,78 +170,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:63 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:25 +#: ../../../CHANGES.rst:68 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:27 +#: ../../../CHANGES.rst:70 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:72 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:42 +#: ../../../CHANGES.rst:85 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:87 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:45 +#: ../../../CHANGES.rst:88 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:47 +#: ../../../CHANGES.rst:90 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:48 +#: ../../../CHANGES.rst:91 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:49 +#: ../../../CHANGES.rst:92 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:93 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:53 +#: ../../../CHANGES.rst:96 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:55 +#: ../../../CHANGES.rst:98 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:100 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:107 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -176,51 +249,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:67 +#: ../../../CHANGES.rst:110 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:69 +#: ../../../CHANGES.rst:112 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:71 +#: ../../../CHANGES.rst:114 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:73 +#: ../../../CHANGES.rst:116 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:75 +#: ../../../CHANGES.rst:118 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:77 +#: ../../../CHANGES.rst:120 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:79 +#: ../../../CHANGES.rst:122 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:82 +#: ../../../CHANGES.rst:125 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -229,79 +302,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:135 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:99 +#: ../../../CHANGES.rst:142 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:101 +#: ../../../CHANGES.rst:144 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 -#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 -#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 -#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 -#: ../../../CHANGES.rst:760 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:151 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:155 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:115 +#: ../../../CHANGES.rst:158 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:159 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:163 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:165 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:123 +#: ../../../CHANGES.rst:166 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:127 +#: ../../../CHANGES.rst:170 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:128 +#: ../../../CHANGES.rst:171 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:172 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -309,13 +374,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:132 +#: ../../../CHANGES.rst:175 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:178 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -323,69 +388,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:140 +#: ../../../CHANGES.rst:183 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:184 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:185 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:187 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:188 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:146 +#: ../../../CHANGES.rst:189 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:193 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:154 +#: ../../../CHANGES.rst:197 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:156 +#: ../../../CHANGES.rst:199 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:201 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:213 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:231 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:190 +#: ../../../CHANGES.rst:233 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:251 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:194 +#: ../../../CHANGES.rst:237 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -404,15 +469,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:210 +#: ../../../CHANGES.rst:253 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:235 +#: ../../../CHANGES.rst:278 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:256 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -440,85 +505,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:280 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:281 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:239 +#: ../../../CHANGES.rst:282 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:240 +#: ../../../CHANGES.rst:283 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:241 +#: ../../../CHANGES.rst:284 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:243 +#: ../../../CHANGES.rst:286 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 +#: ../../../CHANGES.rst:293 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:295 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:302 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:261 +#: ../../../CHANGES.rst:304 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:263 +#: ../../../CHANGES.rst:306 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:265 +#: ../../../CHANGES.rst:308 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:312 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:271 +#: ../../../CHANGES.rst:314 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:272 +#: ../../../CHANGES.rst:315 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -526,13 +591,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:318 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:277 +#: ../../../CHANGES.rst:320 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -540,127 +605,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:326 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:288 +#: ../../../CHANGES.rst:331 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:290 +#: ../../../CHANGES.rst:333 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:292 +#: ../../../CHANGES.rst:335 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:294 +#: ../../../CHANGES.rst:337 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:338 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:296 +#: ../../../CHANGES.rst:339 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:340 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:341 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:342 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:343 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:344 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:346 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:347 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:305 +#: ../../../CHANGES.rst:348 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:349 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:313 +#: ../../../CHANGES.rst:356 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:358 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:317 +#: ../../../CHANGES.rst:360 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:361 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:319 +#: ../../../CHANGES.rst:362 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:368 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:327 +#: ../../../CHANGES.rst:370 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:329 +#: ../../../CHANGES.rst:372 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:336 +#: ../../../CHANGES.rst:379 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:381 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -669,23 +734,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:386 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:391 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:350 +#: ../../../CHANGES.rst:393 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:352 +#: ../../../CHANGES.rst:395 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -693,61 +758,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:398 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:405 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:407 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:409 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:411 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:375 +#: ../../../CHANGES.rst:418 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:382 +#: ../../../CHANGES.rst:425 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:389 +#: ../../../CHANGES.rst:432 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:394 +#: ../../../CHANGES.rst:437 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:442 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -755,198 +820,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:403 +#: ../../../CHANGES.rst:446 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:448 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:413 +#: ../../../CHANGES.rst:456 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:414 +#: ../../../CHANGES.rst:457 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:459 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:466 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:468 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:427 +#: ../../../CHANGES.rst:470 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:428 +#: ../../../CHANGES.rst:471 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:429 +#: ../../../CHANGES.rst:472 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:430 +#: ../../../CHANGES.rst:473 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:431 +#: ../../../CHANGES.rst:474 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:433 +#: ../../../CHANGES.rst:476 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:483 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:485 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:444 +#: ../../../CHANGES.rst:487 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:489 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:491 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:450 +#: ../../../CHANGES.rst:493 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:451 +#: ../../../CHANGES.rst:494 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:495 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:453 +#: ../../../CHANGES.rst:496 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:497 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:455 +#: ../../../CHANGES.rst:498 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:499 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:501 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:460 +#: ../../../CHANGES.rst:503 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:462 +#: ../../../CHANGES.rst:505 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:467 +#: ../../../CHANGES.rst:510 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:515 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:517 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:481 +#: ../../../CHANGES.rst:524 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:526 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:528 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:530 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:537 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:539 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -954,14 +1019,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:542 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:544 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -970,113 +1035,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:508 +#: ../../../CHANGES.rst:551 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:513 +#: ../../../CHANGES.rst:556 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:516 +#: ../../../CHANGES.rst:559 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:561 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:563 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:527 +#: ../../../CHANGES.rst:570 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:529 +#: ../../../CHANGES.rst:572 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:536 +#: ../../../CHANGES.rst:579 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:538 +#: ../../../CHANGES.rst:581 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:583 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:546 +#: ../../../CHANGES.rst:589 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:594 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:553 +#: ../../../CHANGES.rst:596 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:569 +#: ../../../CHANGES.rst:612 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:575 +#: ../../../CHANGES.rst:618 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:582 +#: ../../../CHANGES.rst:625 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:627 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:629 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:588 +#: ../../../CHANGES.rst:631 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1084,11 +1149,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:637 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:642 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1096,258 +1161,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:603 +#: ../../../CHANGES.rst:646 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:613 +#: ../../../CHANGES.rst:656 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:614 +#: ../../../CHANGES.rst:657 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:617 +#: ../../../CHANGES.rst:660 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:619 +#: ../../../CHANGES.rst:662 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:668 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:674 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:633 +#: ../../../CHANGES.rst:676 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:635 +#: ../../../CHANGES.rst:678 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:685 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:645 +#: ../../../CHANGES.rst:688 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:647 +#: ../../../CHANGES.rst:690 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:649 +#: ../../../CHANGES.rst:692 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:650 +#: ../../../CHANGES.rst:693 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:651 +#: ../../../CHANGES.rst:694 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:652 +#: ../../../CHANGES.rst:695 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:658 +#: ../../../CHANGES.rst:701 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:663 +#: ../../../CHANGES.rst:706 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:665 +#: ../../../CHANGES.rst:708 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:670 +#: ../../../CHANGES.rst:713 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:675 +#: ../../../CHANGES.rst:718 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:677 +#: ../../../CHANGES.rst:720 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:722 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:686 +#: ../../../CHANGES.rst:729 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:731 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:733 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:691 +#: ../../../CHANGES.rst:734 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:735 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:736 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:738 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:697 +#: ../../../CHANGES.rst:740 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:703 +#: ../../../CHANGES.rst:746 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:751 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:716 +#: ../../../CHANGES.rst:759 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:723 +#: ../../../CHANGES.rst:766 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:725 +#: ../../../CHANGES.rst:768 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:727 +#: ../../../CHANGES.rst:770 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:772 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:777 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:739 +#: ../../../CHANGES.rst:782 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:741 +#: ../../../CHANGES.rst:784 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:748 +#: ../../../CHANGES.rst:791 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:755 +#: ../../../CHANGES.rst:798 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:762 +#: ../../../CHANGES.rst:805 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:807 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:809 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2972,3 +3037,6 @@ msgstr "" #~ "warning was added FastAPI still not " #~ "support V2)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/deployment/index.po b/docs/locale/en/LC_MESSAGES/deployment/index.po new file mode 100644 index 00000000..e5fe6ce8 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/deployment/index.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../deployment/index.rst:3 +msgid "Deployment" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/index.po index 3d9f47a4..1f0a0e02 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/index.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/index.rst:3 msgid "Handling events" @@ -54,3 +54,23 @@ msgid "" "Dispatcher is also separated into two entities - Router and Dispatcher. " "Dispatcher is subclass of router and should be always is root router." msgstr "" + +#: ../../dispatcher/index.rst:18 +msgid "Telegram supports two ways of receiving updates:" +msgstr "" + +#: ../../dispatcher/index.rst:20 +msgid "" +":ref:`Webhook ` - you should configure your web server to " +"receive updates from Telegram;" +msgstr "" + +#: ../../dispatcher/index.rst:21 +msgid "" +":ref:`Long polling ` - you should request updates from " +"Telegram." +msgstr "" + +#: ../../dispatcher/index.rst:23 +msgid "So, you can use both of them with *aiogram*." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po b/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po new file mode 100644 index 00000000..d5581be5 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/long_polling.rst:5 +msgid "Long-polling" +msgstr "" + +#: ../../dispatcher/long_polling.rst:7 +msgid "" +"Long-polling is a technology that allows a Telegram server to send " +"updates in case when you don't have dedicated IP address or port to " +"receive webhooks for example on a developer machine." +msgstr "" + +#: ../../dispatcher/long_polling.rst:11 +msgid "" +"To use long-polling mode you should use " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods." +msgstr "" + +#: ../../dispatcher/long_polling.rst:16 +msgid "" +"You can use polling from only one polling process per single Bot token, " +"in other case Telegram server will return an error." +msgstr "" + +#: ../../dispatcher/long_polling.rst:21 +msgid "" +"If you will need to scale your bot, you should use webhooks instead of " +"long-polling." +msgstr "" + +#: ../../dispatcher/long_polling.rst:25 +msgid "If you will use multibot mode, you should use webhook mode for all bots." +msgstr "" + +#: ../../dispatcher/long_polling.rst:28 +msgid "Example" +msgstr "" + +#: ../../dispatcher/long_polling.rst:30 +msgid "" +"This example will show you how to create simple echo bot based on long-" +"polling." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po new file mode 100644 index 00000000..b5cbbcad --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/webhook.rst:5 +msgid "Webhook" +msgstr "" + +#: ../../dispatcher/webhook.rst:7 +msgid "" +"Telegram Bot API supports webhook. If you set webhook for your bot, " +"Telegram will send updates to the specified url. You can use " +":meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url " +"and receive incoming updates on it." +msgstr "" + +#: ../../dispatcher/webhook.rst:14 +msgid "If you use webhook, you can't use long polling at the same time." +msgstr "" + +#: ../../dispatcher/webhook.rst:16 +msgid "" +"Before start i'll recommend you to read `official Telegram's " +"documentation about webhook `_" +msgstr "" + +#: ../../dispatcher/webhook.rst:18 +msgid "After you read it, you can start to read this section." +msgstr "" + +#: ../../dispatcher/webhook.rst:20 +msgid "" +"Generally to use webhook with aiogram you should use any async web " +"framework. Buy out of the box aiogram has an aiohttp integration, so " +"we'll use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:25 +msgid "" +"You can use any async web framework you want, but you should write your " +"own integration if you don't use aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:29 +msgid "aiohttp integration" +msgstr "" + +#: ../../dispatcher/webhook.rst:31 +msgid "Out of the box aiogram has aiohttp integration, so you can use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:33 +msgid "" +"Here is available few ways to do it using different implementations of " +"the webhook controller:" +msgstr "" + +#: ../../dispatcher/webhook.rst:35 +msgid "" +":class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract " +"class for aiohttp webhook controller" +msgstr "" + +#: ../../dispatcher/webhook.rst:36 +msgid "" +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple " +"webhook controller, uses single Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:37 +msgid "" +":class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token" +" based webhook controller, uses multiple Bot instances and tokens" +msgstr "" + +#: ../../dispatcher/webhook.rst:39 +msgid "You can use it as is or inherit from it and override some methods." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:1 of +msgid "" +"Base handler that helps to handle incoming request from aiohttp and " +"propagate it to the Dispatcher" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Parameters" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:9 of +msgid "instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:5 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of a " +"handler process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:1 of +msgid "Register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:3 of +msgid "instance of aiohttp Application" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:4 of +msgid "route path" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:1 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:1 of +msgid "This method should be implemented in subclasses of this class." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:3 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:3 of +msgid "Resolve Bot instance from request." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Returns" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:6 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:6 of +msgid "Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:1 of +msgid "Handler for single Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:10 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of handler " +"process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:6 of +msgid "instance of :class:`aiogram.client.bot.Bot`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.close:1 of +msgid "Close bot session" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:1 of +msgid "" +"Handler that supports multiple bots the context will be resolved from " +"path variable 'bot_token'" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:6 of +msgid "" +"This handler is not recommended in due to token is available in URL and " +"can be logged by reverse proxy server or other middleware." +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:12 of +msgid "kwargs that will be passed to new Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:1 of +msgid "Validate path, register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot:1 of +msgid "Get bot token from a path and create or get from cache Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:51 +msgid "Security" +msgstr "" + +#: ../../dispatcher/webhook.rst:53 +msgid "" +"Telegram supports two methods to verify incoming requests that they are " +"from Telegram:" +msgstr "" + +#: ../../dispatcher/webhook.rst:56 +msgid "Using a secret token" +msgstr "" + +#: ../../dispatcher/webhook.rst:58 +msgid "" +"When you set webhook, you can specify a secret token and then use it to " +"verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:61 +msgid "Using IP filtering" +msgstr "" + +#: ../../dispatcher/webhook.rst:63 +msgid "" +"You can specify a list of IP addresses from which you expect incoming " +"requests, and then use it to verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:65 +msgid "" +"It can be acy using firewall rules or nginx configuration or middleware " +"on application level." +msgstr "" + +#: ../../dispatcher/webhook.rst:67 +msgid "" +"So, aiogram has an implementation of the IP filtering middleware for " +"aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:75 +msgid "Examples" +msgstr "" + +#: ../../dispatcher/webhook.rst:78 +msgid "Behind reverse proxy" +msgstr "" + +#: ../../dispatcher/webhook.rst:80 +msgid "" +"In this example we'll use aiohttp as web framework and nginx as reverse " +"proxy." +msgstr "" + +#: ../../dispatcher/webhook.rst:84 +msgid "" +"When you use nginx as reverse proxy, you should set `proxy_pass` to your " +"aiohttp server address." +msgstr "" + +#: ../../dispatcher/webhook.rst:98 +msgid "Without reverse proxy (not recommended)" +msgstr "" + +#: ../../dispatcher/webhook.rst:100 +msgid "" +"In case you want can't use reverse proxy, you can use aiohttp's ssl " +"context." +msgstr "" + +#: ../../dispatcher/webhook.rst:102 +msgid "Also this example contains usage with self-signed certificate." +msgstr "" + +#: ../../dispatcher/webhook.rst:108 +msgid "With using other web framework" +msgstr "" + +#: ../../dispatcher/webhook.rst:110 +msgid "" +"You can pass incoming request to aiogram's webhook controller from any " +"web framework you want." +msgstr "" + +#: ../../dispatcher/webhook.rst:112 +msgid "" +"Read more about it in " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods." +msgstr "" + +#: ../../dispatcher/webhook.rst:123 +msgid "" +"If you want to use reply into webhook, you should check that result of " +"the :code:`feed_update` methods is an instance of API method and build " +":code:`multipart/form-data` or :code:`application/json` response body " +"manually." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/keyboard.po b/docs/locale/en/LC_MESSAGES/utils/keyboard.po index f550df18..ea00376e 100644 --- a/docs/locale/en/LC_MESSAGES/utils/keyboard.po +++ b/docs/locale/en/LC_MESSAGES/utils/keyboard.po @@ -8,58 +8,104 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:24+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" -#: ../../utils/keyboard.rst:3 +#: ../../utils/keyboard.rst:4 msgid "Keyboard builder" msgstr "" -#: ../../utils/keyboard.rst:5 +#: ../../utils/keyboard.rst:6 msgid "Keyboard builder helps to dynamically generate markup." msgstr "" -#: ../../utils/keyboard.rst:9 +#: ../../utils/keyboard.rst:10 msgid "" "Note that if you have static markup, it's best to define it explicitly " "rather than using builder, but if you have dynamic markup configuration, " "feel free to use builder as you wish." msgstr "" -#: ../../utils/keyboard.rst:14 +#: ../../utils/keyboard.rst:15 msgid "Usage example" msgstr "" -#: ../../utils/keyboard.rst:29 -msgid "Base builder" +#: ../../utils/keyboard.rst:17 +msgid "For example you want to generate inline keyboard with 10 buttons" msgstr "" -#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of -msgid "Reply keyboard builder inherits all methods from generic builder" +#: ../../utils/keyboard.rst:27 +msgid "" +"then adjust this buttons to some grid, for example first line will have 3" +" buttons, the next lines will have 2 buttons" +msgstr "" + +#: ../../utils/keyboard.rst:33 +msgid "also you can attach another builder to this one" +msgstr "" + +#: ../../utils/keyboard.rst:40 +msgid "or you can attach some already generated markup" +msgstr "" + +#: ../../utils/keyboard.rst:47 +msgid "and finally you can export this markup to use it in your message" +msgstr "" + +#: ../../utils/keyboard.rst:53 +msgid "Reply keyboard builder has the same interface" +msgstr "" + +#: ../../utils/keyboard.rst:57 +msgid "" +"Note that you can't attach reply keyboard builder to inline keyboard " +"builder and vice versa" +msgstr "" + +#: ../../utils/keyboard.rst:61 +msgid "Inline Keyboard" +msgstr "" + +#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of +msgid "Inline keyboard builder inherits all methods from generic builder" +msgstr "" + +#: ../../utils/keyboard.rst:69 +msgid "Add new inline button to markup" +msgstr "" + +#: ../../utils/keyboard.rst:74 +msgid "Construct an InlineKeyboardMarkup" msgstr "" #: aiogram.utils.keyboard.KeyboardBuilder.add:1 of msgid "Add one or many buttons to markup." msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.row of +#: aiogram.utils.keyboard.KeyboardBuilder.row +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Parameters" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust #: aiogram.utils.keyboard.KeyboardBuilder.export #: aiogram.utils.keyboard.KeyboardBuilder.row #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy of +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Returns" msgstr "" @@ -75,10 +121,12 @@ msgid "" "all sizes" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons:1 of msgid "Get flatten set of all buttons" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy:1 of msgid "Make full copy of current builder with markup" msgstr "" @@ -87,6 +135,11 @@ msgstr "" msgid "Export configured markup as list of lists of buttons" msgstr "" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup:1 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup:1 of +msgid "Create builder from existing markup" +msgstr "" + #: aiogram.utils.keyboard.KeyboardBuilder.row:1 of msgid "Add row to markup" msgstr "" @@ -95,31 +148,19 @@ msgstr "" msgid "When too much buttons is passed it will be separated to many rows" msgstr "" -#: ../../utils/keyboard.rst:35 -msgid "Inline Keyboard" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of -msgid "Inline keyboard builder inherits all methods from generic builder" -msgstr "" - -#: ../../utils/keyboard.rst:43 -msgid "Add new inline button to markup" -msgstr "" - -#: ../../utils/keyboard.rst:48 -msgid "Construct an InlineKeyboardMarkup" -msgstr "" - -#: ../../utils/keyboard.rst:51 +#: ../../utils/keyboard.rst:77 msgid "Reply Keyboard" msgstr "" -#: ../../utils/keyboard.rst:59 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of +msgid "Reply keyboard builder inherits all methods from generic builder" +msgstr "" + +#: ../../utils/keyboard.rst:85 msgid "Add new button to markup" msgstr "" -#: ../../utils/keyboard.rst:64 +#: ../../utils/keyboard.rst:90 msgid "Construct an ReplyKeyboardMarkup" msgstr "" @@ -132,3 +173,6 @@ msgstr "" #~ "will be cycled when available more " #~ "buttons count than all sizes" #~ msgstr "" + +#~ msgid "Base builder" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po new file mode 100644 index 00000000..b7a6d732 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/currency.po @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/enums/currency.rst:3 +msgid "Currency" +msgstr "" + +#: aiogram.enums.currency.Currency:1 of +msgid "Currencies supported by Telegram Bot API" +msgstr "" + +#: aiogram.enums.currency.Currency:3 of +msgid "Source: https://core.telegram.org/bots/payments#supported-currencies" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po index 6447522c..0686720e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_pre_checkout_query.rst:3 msgid "answerPreCheckoutQuery" @@ -65,36 +65,44 @@ msgid "" " user." msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:14 +#: ../../api/methods/answer_pre_checkout_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:17 +#: ../../api/methods/answer_pre_checkout_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:25 +#: ../../api/methods/answer_pre_checkout_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:27 +#: ../../api/methods/answer_pre_checkout_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:29 +#: ../../api/methods/answer_pre_checkout_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_pre_checkout_query import " "AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:30 +#: ../../api/methods/answer_pre_checkout_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerPreCheckoutQuery`" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:33 +#: ../../api/methods/answer_pre_checkout_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_pre_checkout_query.rst:40 +#: ../../api/methods/answer_pre_checkout_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_pre_checkout_query.rst:51 +msgid ":meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po index f1a61600..418b9c67 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/answer_shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/answer_shipping_query.rst:3 msgid "answerShippingQuery" @@ -69,36 +69,44 @@ msgid "" "this message to the user." msgstr "" -#: ../../api/methods/answer_shipping_query.rst:14 +#: ../../api/methods/answer_shipping_query.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:17 +#: ../../api/methods/answer_shipping_query.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:25 +#: ../../api/methods/answer_shipping_query.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:27 +#: ../../api/methods/answer_shipping_query.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:29 +#: ../../api/methods/answer_shipping_query.rst:30 msgid "" ":code:`from aiogram.methods.answer_shipping_query import " "AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:30 +#: ../../api/methods/answer_shipping_query.rst:31 msgid "alias: :code:`from aiogram.methods import AnswerShippingQuery`" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:33 +#: ../../api/methods/answer_shipping_query.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/answer_shipping_query.rst:40 +#: ../../api/methods/answer_shipping_query.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/answer_shipping_query.rst:51 +msgid ":meth:`aiogram.types.shipping_query.ShippingQuery.answer`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po index d8a3b25d..b704dd6d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/edit_message_reply_markup.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/edit_message_reply_markup.rst:3 msgid "editMessageReplyMarkup" @@ -70,48 +70,52 @@ msgid "" "`_." msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:14 +#: ../../api/methods/edit_message_reply_markup.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:17 +#: ../../api/methods/edit_message_reply_markup.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:25 +#: ../../api/methods/edit_message_reply_markup.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:27 +#: ../../api/methods/edit_message_reply_markup.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:29 +#: ../../api/methods/edit_message_reply_markup.rst:30 msgid "" ":code:`from aiogram.methods.edit_message_reply_markup import " "EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:30 +#: ../../api/methods/edit_message_reply_markup.rst:31 msgid "alias: :code:`from aiogram.methods import EditMessageReplyMarkup`" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:33 +#: ../../api/methods/edit_message_reply_markup.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:40 +#: ../../api/methods/edit_message_reply_markup.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:48 +#: ../../api/methods/edit_message_reply_markup.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/edit_message_reply_markup.rst:50 +#: ../../api/methods/edit_message_reply_markup.rst:51 msgid ":meth:`aiogram.types.message.Message.edit_reply_markup`" msgstr "" +#: ../../api/methods/edit_message_reply_markup.rst:52 +msgid ":meth:`aiogram.types.message.Message.delete_reply_markup`" +msgstr "" + #~ msgid "" #~ "A JSON-serialized object for an " #~ "`inline keyboard \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/message.rst:3 msgid "Message" @@ -437,6 +437,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note:4 #: aiogram.types.message.Message.answer_voice:4 #: aiogram.types.message.Message.delete:4 +#: aiogram.types.message.Message.delete_reply_markup:4 #: aiogram.types.message.Message.edit_caption:4 #: aiogram.types.message.Message.edit_live_location:4 #: aiogram.types.message.Message.edit_media:4 @@ -554,6 +555,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -836,6 +838,7 @@ msgstr "" #: aiogram.types.message.Message.answer_video_note #: aiogram.types.message.Message.answer_voice #: aiogram.types.message.Message.copy_to aiogram.types.message.Message.delete +#: aiogram.types.message.Message.delete_reply_markup #: aiogram.types.message.Message.edit_caption #: aiogram.types.message.Message.edit_live_location #: aiogram.types.message.Message.edit_media @@ -1941,7 +1944,7 @@ msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" msgstr "" #: aiogram.types.message.Message.send_copy:1 of -msgid "Send copy of message." +msgid "Send copy of a message." msgstr "" #: aiogram.types.message.Message.send_copy:3 of @@ -1952,8 +1955,8 @@ msgstr "" #: aiogram.types.message.Message.send_copy:8 of msgid "" -"This method don't use the API method named `copyMessage` and historically" -" implemented before the similar method is added to API" +"This method doesn't use the API method named `copyMessage` and " +"historically implemented before the similar method is added to API" msgstr "" #: aiogram.types.message.Message.copy_to:1 of @@ -1969,6 +1972,7 @@ msgstr "" #: aiogram.types.message.Message.copy_to:5 #: aiogram.types.message.Message.delete:5 +#: aiogram.types.message.Message.delete_reply_markup:5 #: aiogram.types.message.Message.edit_caption:5 #: aiogram.types.message.Message.edit_live_location:5 #: aiogram.types.message.Message.edit_media:5 @@ -2057,6 +2061,7 @@ msgstr "" msgid "New text of the message, 1-4096 characters after entities parsing" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:12 #: aiogram.types.message.Message.edit_caption:11 #: aiogram.types.message.Message.edit_live_location:13 #: aiogram.types.message.Message.edit_media:12 @@ -2149,6 +2154,7 @@ msgid "" ":class:`aiogram.methods.edit_message_media.EditMessageMedia`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:1 #: aiogram.types.message.Message.edit_reply_markup:1 of msgid "" "Shortcut for method " @@ -2156,6 +2162,7 @@ msgid "" " will automatically fill method attributes:" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:8 #: aiogram.types.message.Message.edit_reply_markup:7 of msgid "" "Use this method to edit only the reply markup of messages. On success, if" @@ -2164,16 +2171,22 @@ msgid "" ":code:`True` is returned." msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:10 #: aiogram.types.message.Message.edit_reply_markup:9 of msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:13 #: aiogram.types.message.Message.edit_reply_markup:13 of msgid "" "instance of method " ":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" msgstr "" +#: aiogram.types.message.Message.delete_reply_markup:6 of +msgid ":code:`reply_markup`" +msgstr "" + #: aiogram.types.message.Message.edit_live_location:1 of msgid "" "Shortcut for method " @@ -2562,3 +2575,13 @@ msgstr "" #~ "/form-data. :ref:`More information on " #~ "Sending Files » `" #~ msgstr "" + +#~ msgid "Send copy of message." +#~ msgstr "" + +#~ msgid "" +#~ "This method don't use the API " +#~ "method named `copyMessage` and historically" +#~ " implemented before the similar method " +#~ "is added to API" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po index 053b5081..59009813 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/pre_checkout_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/pre_checkout_query.rst:3 msgid "PreCheckoutQuery" @@ -71,10 +71,58 @@ msgstr "" msgid "*Optional*. Order information provided by the user" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:4 of +msgid ":code:`pre_checkout_query_id`" +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:6 of +msgid "" +"Once the user has confirmed their payment and shipping details, the Bot " +"API sends the final confirmation in the form of an " +":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." +" Use this method to respond to such pre-checkout queries. On success, " +":code:`True` is returned. **Note:** The Bot API must receive an answer " +"within 10 seconds after the pre-checkout query was sent." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:10 of +msgid "" +"Specify :code:`True` if everything is alright (goods are available, etc.)" +" and the bot is ready to proceed with the order. Use :code:`False` if " +"there are any problems." +msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`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." +msgstr "" + #: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:12 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po index 71f13a21..b17b8c63 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/shipping_query.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/shipping_query.rst:3 msgid "ShippingQuery" @@ -47,10 +47,61 @@ msgstr "" msgid "User specified shipping address" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` will " +"automatically fill method attributes:" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:4 of +msgid ":code:`shipping_query_id`" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:6 of +msgid "" +"If you sent an invoice requesting a shipping address and the parameter " +"*is_flexible* was specified, the Bot API will send an " +":class:`aiogram.types.update.Update` with a *shipping_query* field to the" +" bot. Use this method to reply to shipping queries. On success, " +":code:`True` is returned." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:8 of +msgid "Source: https://core.telegram.org/bots/api#answershippingquery" +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Parameters" msgstr "" +#: aiogram.types.shipping_query.ShippingQuery.answer:10 of +msgid "" +"Pass :code:`True` if delivery to the specified address is possible and " +":code:`False` if there are any problems (for example, if delivery to the " +"specified address is not possible)" +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:11 of +msgid "" +"Required if *ok* is :code:`True`. A JSON-serialized array of available " +"shipping options." +msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:12 of +msgid "" +"Required if *ok* is :code:`False`. Error message in human readable form " +"that explains why it is impossible to complete the order (e.g. \"Sorry, " +"delivery to your desired address is unavailable'). Telegram will display " +"this message to the user." +msgstr "" + #: aiogram.types.shipping_query.ShippingQuery.answer of msgid "Returns" msgstr "" + +#: aiogram.types.shipping_query.ShippingQuery.answer:13 of +msgid "" +"instance of method " +":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index 22fd8db9..2e084a69 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,18 +22,96 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" msgstr "" -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:186 ../../../CHANGES.rst:286 -#: ../../../CHANGES.rst:346 ../../../CHANGES.rst:397 ../../../CHANGES.rst:470 -#: ../../../CHANGES.rst:511 ../../../CHANGES.rst:549 ../../../CHANGES.rst:597 -#: ../../../CHANGES.rst:673 ../../../CHANGES.rst:706 ../../../CHANGES.rst:737 -#: ../../[towncrier-fragments]:5 +#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 +#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 +#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 +#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 msgid "Features" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "Added Currency enum. You can use it like this:" +msgstr "" + +#: ../../[towncrier-fragments]:19 +msgid "`#1194 `_" +msgstr "" + +#: ../../[towncrier-fragments]:20 +msgid "" +"Updated keyboard builders with new methods for integrating buttons and " +"keyboard creation more seamlessly. Added functionality to create buttons " +"from existing markup and attach another builder. This improvement aims to" +" make the keyboard building process more user-friendly and flexible. " +"`#1236 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 +#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 +#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 +#: ../../[towncrier-fragments]:27 +msgid "Bugfixes" +msgstr "" + +#: ../../[towncrier-fragments]:29 +msgid "" +"Fixed polling startup when \"bot\" key is passed manually into dispatcher" +" workflow data `#1242 `_" +msgstr "" + +#: ../../[towncrier-fragments]:31 +msgid "Added codegen configuration for lost shortcuts:" +msgstr "" + +#: ../../[towncrier-fragments]:33 +msgid "ShippingQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:34 +msgid "PreCheckoutQuery.answer" +msgstr "" + +#: ../../[towncrier-fragments]:35 +msgid "Message.delete_reply_markup" +msgstr "" + +#: ../../[towncrier-fragments]:36 +msgid "`#1244 `_" +msgstr "" + +#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 +#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 +#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 +#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 +msgid "Misc" +msgstr "" + +#: ../../[towncrier-fragments]:42 +msgid "" +"Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" +" Bot` argument to the :code:`.read(...)` method, so, from now " +"URLInputFile can be used without specifying bot instance. `#1238 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:46 +msgid "" +"Code-generated :code:`__init__` typehints in types and methods to make " +"IDE happy without additional pydantic plugin `#1245 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:21 +msgid "3.0.0b9 (2023-07-30)" +msgstr "" + +#: ../../../CHANGES.rst:26 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -41,7 +119,7 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:10 +#: ../../../CHANGES.rst:29 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -49,21 +127,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:62 ../../../CHANGES.rst:248 ../../../CHANGES.rst:311 -#: ../../../CHANGES.rst:360 ../../../CHANGES.rst:421 ../../../CHANGES.rst:479 -#: ../../../CHANGES.rst:525 ../../../CHANGES.rst:573 ../../../CHANGES.rst:629 -#: ../../../CHANGES.rst:714 ../../../CHANGES.rst:746 -#: ../../[towncrier-fragments]:16 -msgid "Bugfixes" -msgstr "" - -#: ../../[towncrier-fragments]:18 +#: ../../../CHANGES.rst:37 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:39 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -73,23 +143,26 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:90 ../../../CHANGES.rst:323 ../../../CHANGES.rst:373 -#: ../../../CHANGES.rst:753 ../../[towncrier-fragments]:28 +#: ../../../CHANGES.rst:44 +msgid "Updated pydantic to 2.1 with few bugfixes" +msgstr "" + +#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 msgid "Improved Documentation" msgstr "" -#: ../../[towncrier-fragments]:30 +#: ../../../CHANGES.rst:50 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:97 ../../../CHANGES.rst:380 -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 msgid "Deprecations and Removals" msgstr "" -#: ../../[towncrier-fragments]:37 +#: ../../../CHANGES.rst:57 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -97,78 +170,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:63 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:25 +#: ../../../CHANGES.rst:68 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:27 +#: ../../../CHANGES.rst:70 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:72 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:42 +#: ../../../CHANGES.rst:85 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:87 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:45 +#: ../../../CHANGES.rst:88 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:47 +#: ../../../CHANGES.rst:90 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:48 +#: ../../../CHANGES.rst:91 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:49 +#: ../../../CHANGES.rst:92 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:93 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:53 +#: ../../../CHANGES.rst:96 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:55 +#: ../../../CHANGES.rst:98 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:100 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:64 +#: ../../../CHANGES.rst:107 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -176,51 +249,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:67 +#: ../../../CHANGES.rst:110 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:69 +#: ../../../CHANGES.rst:112 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:71 +#: ../../../CHANGES.rst:114 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:73 +#: ../../../CHANGES.rst:116 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:75 +#: ../../../CHANGES.rst:118 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:77 +#: ../../../CHANGES.rst:120 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:79 +#: ../../../CHANGES.rst:122 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:82 +#: ../../../CHANGES.rst:125 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -229,79 +302,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:135 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:99 +#: ../../../CHANGES.rst:142 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:101 +#: ../../../CHANGES.rst:144 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:106 ../../../CHANGES.rst:257 ../../../CHANGES.rst:334 -#: ../../../CHANGES.rst:387 ../../../CHANGES.rst:438 ../../../CHANGES.rst:492 -#: ../../../CHANGES.rst:534 ../../../CHANGES.rst:580 ../../../CHANGES.rst:640 -#: ../../../CHANGES.rst:661 ../../../CHANGES.rst:684 ../../../CHANGES.rst:721 -#: ../../../CHANGES.rst:760 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:108 +#: ../../../CHANGES.rst:151 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:155 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:115 +#: ../../../CHANGES.rst:158 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:159 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:163 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:165 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:123 +#: ../../../CHANGES.rst:166 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:127 +#: ../../../CHANGES.rst:170 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:128 +#: ../../../CHANGES.rst:171 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:129 +#: ../../../CHANGES.rst:172 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -309,13 +374,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:132 +#: ../../../CHANGES.rst:175 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:178 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -323,69 +388,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:140 +#: ../../../CHANGES.rst:183 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:184 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:185 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:187 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:145 +#: ../../../CHANGES.rst:188 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:146 +#: ../../../CHANGES.rst:189 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:193 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:154 +#: ../../../CHANGES.rst:197 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:156 +#: ../../../CHANGES.rst:199 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:201 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:213 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:231 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:190 +#: ../../../CHANGES.rst:233 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:208 +#: ../../../CHANGES.rst:251 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:194 +#: ../../../CHANGES.rst:237 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -404,15 +469,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:210 +#: ../../../CHANGES.rst:253 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:235 +#: ../../../CHANGES.rst:278 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:256 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -440,85 +505,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:280 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:238 +#: ../../../CHANGES.rst:281 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:239 +#: ../../../CHANGES.rst:282 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:240 +#: ../../../CHANGES.rst:283 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:241 +#: ../../../CHANGES.rst:284 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:243 +#: ../../../CHANGES.rst:286 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:250 +#: ../../../CHANGES.rst:293 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:252 +#: ../../../CHANGES.rst:295 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:259 +#: ../../../CHANGES.rst:302 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:261 +#: ../../../CHANGES.rst:304 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:263 +#: ../../../CHANGES.rst:306 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:265 +#: ../../../CHANGES.rst:308 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:269 +#: ../../../CHANGES.rst:312 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:271 +#: ../../../CHANGES.rst:314 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:272 +#: ../../../CHANGES.rst:315 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -526,13 +591,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:275 +#: ../../../CHANGES.rst:318 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:277 +#: ../../../CHANGES.rst:320 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -540,127 +605,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:326 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:288 +#: ../../../CHANGES.rst:331 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:290 +#: ../../../CHANGES.rst:333 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:292 +#: ../../../CHANGES.rst:335 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:294 +#: ../../../CHANGES.rst:337 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:338 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:296 +#: ../../../CHANGES.rst:339 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:297 +#: ../../../CHANGES.rst:340 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:298 +#: ../../../CHANGES.rst:341 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:342 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:300 +#: ../../../CHANGES.rst:343 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:344 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:346 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:347 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:305 +#: ../../../CHANGES.rst:348 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:349 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:313 +#: ../../../CHANGES.rst:356 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:358 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:317 +#: ../../../CHANGES.rst:360 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:361 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:319 +#: ../../../CHANGES.rst:362 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:325 +#: ../../../CHANGES.rst:368 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:327 +#: ../../../CHANGES.rst:370 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:329 +#: ../../../CHANGES.rst:372 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:336 +#: ../../../CHANGES.rst:379 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:381 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -669,23 +734,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:386 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:391 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:350 +#: ../../../CHANGES.rst:393 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:352 +#: ../../../CHANGES.rst:395 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -693,61 +758,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:398 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:405 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:364 +#: ../../../CHANGES.rst:407 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:366 +#: ../../../CHANGES.rst:409 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:411 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:375 +#: ../../../CHANGES.rst:418 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:382 +#: ../../../CHANGES.rst:425 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:389 +#: ../../../CHANGES.rst:432 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:394 +#: ../../../CHANGES.rst:437 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:399 +#: ../../../CHANGES.rst:442 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -755,198 +820,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:403 +#: ../../../CHANGES.rst:446 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:448 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:413 +#: ../../../CHANGES.rst:456 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:414 +#: ../../../CHANGES.rst:457 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:459 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:466 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:468 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:427 +#: ../../../CHANGES.rst:470 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:428 +#: ../../../CHANGES.rst:471 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:429 +#: ../../../CHANGES.rst:472 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:430 +#: ../../../CHANGES.rst:473 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:431 +#: ../../../CHANGES.rst:474 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:433 +#: ../../../CHANGES.rst:476 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:483 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:485 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:444 +#: ../../../CHANGES.rst:487 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:489 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:491 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:450 +#: ../../../CHANGES.rst:493 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:451 +#: ../../../CHANGES.rst:494 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:452 +#: ../../../CHANGES.rst:495 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:453 +#: ../../../CHANGES.rst:496 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:454 +#: ../../../CHANGES.rst:497 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:455 +#: ../../../CHANGES.rst:498 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:499 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:501 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:460 +#: ../../../CHANGES.rst:503 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:462 +#: ../../../CHANGES.rst:505 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:467 +#: ../../../CHANGES.rst:510 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:515 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:517 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:481 +#: ../../../CHANGES.rst:524 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:526 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:528 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:530 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:537 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:539 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -954,14 +1019,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:542 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:544 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -970,113 +1035,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:508 +#: ../../../CHANGES.rst:551 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:513 +#: ../../../CHANGES.rst:556 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:516 +#: ../../../CHANGES.rst:559 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:561 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:563 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:527 +#: ../../../CHANGES.rst:570 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:529 +#: ../../../CHANGES.rst:572 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:536 +#: ../../../CHANGES.rst:579 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:538 +#: ../../../CHANGES.rst:581 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:540 +#: ../../../CHANGES.rst:583 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:546 +#: ../../../CHANGES.rst:589 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:594 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:553 +#: ../../../CHANGES.rst:596 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:569 +#: ../../../CHANGES.rst:612 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:575 +#: ../../../CHANGES.rst:618 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:582 +#: ../../../CHANGES.rst:625 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:584 +#: ../../../CHANGES.rst:627 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:629 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:588 +#: ../../../CHANGES.rst:631 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1084,11 +1149,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:637 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:642 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1096,258 +1161,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:603 +#: ../../../CHANGES.rst:646 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:613 +#: ../../../CHANGES.rst:656 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:614 +#: ../../../CHANGES.rst:657 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:617 +#: ../../../CHANGES.rst:660 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:619 +#: ../../../CHANGES.rst:662 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:668 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:674 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:633 +#: ../../../CHANGES.rst:676 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:635 +#: ../../../CHANGES.rst:678 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:685 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:645 +#: ../../../CHANGES.rst:688 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:647 +#: ../../../CHANGES.rst:690 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:649 +#: ../../../CHANGES.rst:692 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:650 +#: ../../../CHANGES.rst:693 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:651 +#: ../../../CHANGES.rst:694 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:652 +#: ../../../CHANGES.rst:695 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:658 +#: ../../../CHANGES.rst:701 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:663 +#: ../../../CHANGES.rst:706 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:665 +#: ../../../CHANGES.rst:708 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:670 +#: ../../../CHANGES.rst:713 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:675 +#: ../../../CHANGES.rst:718 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:677 +#: ../../../CHANGES.rst:720 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:722 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:686 +#: ../../../CHANGES.rst:729 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:731 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:733 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:691 +#: ../../../CHANGES.rst:734 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:735 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:736 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:738 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:697 +#: ../../../CHANGES.rst:740 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:703 +#: ../../../CHANGES.rst:746 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:751 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:716 +#: ../../../CHANGES.rst:759 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:723 +#: ../../../CHANGES.rst:766 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:725 +#: ../../../CHANGES.rst:768 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:727 +#: ../../../CHANGES.rst:770 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:772 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:777 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:739 +#: ../../../CHANGES.rst:782 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:741 +#: ../../../CHANGES.rst:784 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:748 +#: ../../../CHANGES.rst:791 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:755 +#: ../../../CHANGES.rst:798 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:762 +#: ../../../CHANGES.rst:805 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:807 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:809 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -2975,3 +3040,6 @@ msgstr "" #~ "warning was added FastAPI still not " #~ "support V2)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po b/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po new file mode 100644 index 00000000..e5fe6ce8 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/deployment/index.po @@ -0,0 +1,22 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../deployment/index.rst:3 +msgid "Deployment" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po new file mode 100644 index 00000000..b5b6c91d --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/text.po @@ -0,0 +1,130 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-07 23:01+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/filters/text.rst:3 +msgid "Text" +msgstr "" + +#: aiogram.filters.text.Text:1 of +msgid "" +"Is useful for filtering text :class:`aiogram.types.message.Message`, any " +":class:`aiogram.types.callback_query.CallbackQuery` with `data`, " +":class:`aiogram.types.inline_query.InlineQuery` or " +":class:`aiogram.types.poll.Poll` question." +msgstr "" + +#: aiogram.filters.text.Text:7 of +msgid "" +"Only one of `text`, `contains`, `startswith` or `endswith` argument can " +"be used at once. Any of that arguments can be string, list, set or tuple " +"of strings." +msgstr "" + +#: aiogram.filters.text.Text:12 of +msgid "" +"use :ref:`magic-filter `. For example do :pycode:`F.text " +"== \"text\"` instead" +msgstr "" + +#: ../../dispatcher/filters/text.rst:10 +msgid "Can be imported:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:12 +msgid ":code:`from aiogram.filters.text import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:13 +msgid ":code:`from aiogram.filters import Text`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:16 +msgid "Usage" +msgstr "" + +#: ../../dispatcher/filters/text.rst:18 +msgid "" +"Text equals with the specified value: :code:`Text(text=\"text\") # value" +" == 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:19 +msgid "" +"Text starts with the specified value: :code:`Text(startswith=\"text\") #" +" value.startswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:20 +msgid "" +"Text ends with the specified value: :code:`Text(endswith=\"text\") # " +"value.endswith('text')`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:21 +msgid "" +"Text contains the specified value: :code:`Text(contains=\"text\") # " +"value in 'text'`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:22 +msgid "" +"Any of previous listed filters can be list, set or tuple of strings " +"that's mean any of listed value should be " +"equals/startswith/endswith/contains: :code:`Text(text=[\"text\", " +"\"spam\"])`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:23 +msgid "" +"Ignore case can be combined with any previous listed filter: " +":code:`Text(text=\"Text\", ignore_case=True) # value.lower() == " +"'text'.lower()`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:26 +msgid "Allowed handlers" +msgstr "" + +#: ../../dispatcher/filters/text.rst:28 +msgid "Allowed update types for this filter:" +msgstr "" + +#: ../../dispatcher/filters/text.rst:30 +msgid ":code:`message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:31 +msgid ":code:`edited_message`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:32 +msgid ":code:`channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:33 +msgid ":code:`edited_channel_post`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:34 +msgid ":code:`inline_query`" +msgstr "" + +#: ../../dispatcher/filters/text.rst:35 +msgid ":code:`callback_query`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po index af37fd77..67414eef 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/index.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/index.rst:3 msgid "Handling events" @@ -54,3 +54,23 @@ msgid "" "Dispatcher is also separated into two entities - Router and Dispatcher. " "Dispatcher is subclass of router and should be always is root router." msgstr "" + +#: ../../dispatcher/index.rst:18 +msgid "Telegram supports two ways of receiving updates:" +msgstr "" + +#: ../../dispatcher/index.rst:20 +msgid "" +":ref:`Webhook ` - you should configure your web server to " +"receive updates from Telegram;" +msgstr "" + +#: ../../dispatcher/index.rst:21 +msgid "" +":ref:`Long polling ` - you should request updates from " +"Telegram." +msgstr "" + +#: ../../dispatcher/index.rst:23 +msgid "So, you can use both of them with *aiogram*." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po new file mode 100644 index 00000000..d5581be5 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/long_polling.po @@ -0,0 +1,62 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/long_polling.rst:5 +msgid "Long-polling" +msgstr "" + +#: ../../dispatcher/long_polling.rst:7 +msgid "" +"Long-polling is a technology that allows a Telegram server to send " +"updates in case when you don't have dedicated IP address or port to " +"receive webhooks for example on a developer machine." +msgstr "" + +#: ../../dispatcher/long_polling.rst:11 +msgid "" +"To use long-polling mode you should use " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods." +msgstr "" + +#: ../../dispatcher/long_polling.rst:16 +msgid "" +"You can use polling from only one polling process per single Bot token, " +"in other case Telegram server will return an error." +msgstr "" + +#: ../../dispatcher/long_polling.rst:21 +msgid "" +"If you will need to scale your bot, you should use webhooks instead of " +"long-polling." +msgstr "" + +#: ../../dispatcher/long_polling.rst:25 +msgid "If you will use multibot mode, you should use webhook mode for all bots." +msgstr "" + +#: ../../dispatcher/long_polling.rst:28 +msgid "Example" +msgstr "" + +#: ../../dispatcher/long_polling.rst:30 +msgid "" +"This example will show you how to create simple echo bot based on long-" +"polling." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po new file mode 100644 index 00000000..b5cbbcad --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po @@ -0,0 +1,303 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/webhook.rst:5 +msgid "Webhook" +msgstr "" + +#: ../../dispatcher/webhook.rst:7 +msgid "" +"Telegram Bot API supports webhook. If you set webhook for your bot, " +"Telegram will send updates to the specified url. You can use " +":meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url " +"and receive incoming updates on it." +msgstr "" + +#: ../../dispatcher/webhook.rst:14 +msgid "If you use webhook, you can't use long polling at the same time." +msgstr "" + +#: ../../dispatcher/webhook.rst:16 +msgid "" +"Before start i'll recommend you to read `official Telegram's " +"documentation about webhook `_" +msgstr "" + +#: ../../dispatcher/webhook.rst:18 +msgid "After you read it, you can start to read this section." +msgstr "" + +#: ../../dispatcher/webhook.rst:20 +msgid "" +"Generally to use webhook with aiogram you should use any async web " +"framework. Buy out of the box aiogram has an aiohttp integration, so " +"we'll use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:25 +msgid "" +"You can use any async web framework you want, but you should write your " +"own integration if you don't use aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:29 +msgid "aiohttp integration" +msgstr "" + +#: ../../dispatcher/webhook.rst:31 +msgid "Out of the box aiogram has aiohttp integration, so you can use it." +msgstr "" + +#: ../../dispatcher/webhook.rst:33 +msgid "" +"Here is available few ways to do it using different implementations of " +"the webhook controller:" +msgstr "" + +#: ../../dispatcher/webhook.rst:35 +msgid "" +":class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract " +"class for aiohttp webhook controller" +msgstr "" + +#: ../../dispatcher/webhook.rst:36 +msgid "" +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple " +"webhook controller, uses single Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:37 +msgid "" +":class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token" +" based webhook controller, uses multiple Bot instances and tokens" +msgstr "" + +#: ../../dispatcher/webhook.rst:39 +msgid "You can use it as is or inherit from it and override some methods." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:1 of +msgid "" +"Base handler that helps to handle incoming request from aiohttp and " +"propagate it to the Dispatcher" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__ +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Parameters" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:9 of +msgid "instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:5 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of a " +"handler process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:1 of +msgid "Register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:3 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:3 of +msgid "instance of aiohttp Application" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:4 of +msgid "route path" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:1 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:1 of +msgid "This method should be implemented in subclasses of this class." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:3 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:3 of +msgid "Resolve Bot instance from request." +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot +#: aiogram.webhook.aiohttp_server.ip_filter_middleware of +msgid "Returns" +msgstr "" + +#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:6 +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:6 of +msgid "Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:1 of +msgid "Handler for single Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:4 +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:10 of +msgid "" +"immediately responds to the Telegram instead of a waiting end of handler " +"process" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:6 of +msgid "instance of :class:`aiogram.client.bot.Bot`" +msgstr "" + +#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.close:1 of +msgid "Close bot session" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:1 of +msgid "" +"Handler that supports multiple bots the context will be resolved from " +"path variable 'bot_token'" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:6 of +msgid "" +"This handler is not recommended in due to token is available in URL and " +"can be logged by reverse proxy server or other middleware." +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:12 of +msgid "kwargs that will be passed to new Bot instance" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:1 of +msgid "Validate path, register route and shutdown callback" +msgstr "" + +#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot:1 of +msgid "Get bot token from a path and create or get from cache Bot instance" +msgstr "" + +#: ../../dispatcher/webhook.rst:51 +msgid "Security" +msgstr "" + +#: ../../dispatcher/webhook.rst:53 +msgid "" +"Telegram supports two methods to verify incoming requests that they are " +"from Telegram:" +msgstr "" + +#: ../../dispatcher/webhook.rst:56 +msgid "Using a secret token" +msgstr "" + +#: ../../dispatcher/webhook.rst:58 +msgid "" +"When you set webhook, you can specify a secret token and then use it to " +"verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:61 +msgid "Using IP filtering" +msgstr "" + +#: ../../dispatcher/webhook.rst:63 +msgid "" +"You can specify a list of IP addresses from which you expect incoming " +"requests, and then use it to verify incoming requests." +msgstr "" + +#: ../../dispatcher/webhook.rst:65 +msgid "" +"It can be acy using firewall rules or nginx configuration or middleware " +"on application level." +msgstr "" + +#: ../../dispatcher/webhook.rst:67 +msgid "" +"So, aiogram has an implementation of the IP filtering middleware for " +"aiohttp." +msgstr "" + +#: ../../dispatcher/webhook.rst:75 +msgid "Examples" +msgstr "" + +#: ../../dispatcher/webhook.rst:78 +msgid "Behind reverse proxy" +msgstr "" + +#: ../../dispatcher/webhook.rst:80 +msgid "" +"In this example we'll use aiohttp as web framework and nginx as reverse " +"proxy." +msgstr "" + +#: ../../dispatcher/webhook.rst:84 +msgid "" +"When you use nginx as reverse proxy, you should set `proxy_pass` to your " +"aiohttp server address." +msgstr "" + +#: ../../dispatcher/webhook.rst:98 +msgid "Without reverse proxy (not recommended)" +msgstr "" + +#: ../../dispatcher/webhook.rst:100 +msgid "" +"In case you want can't use reverse proxy, you can use aiohttp's ssl " +"context." +msgstr "" + +#: ../../dispatcher/webhook.rst:102 +msgid "Also this example contains usage with self-signed certificate." +msgstr "" + +#: ../../dispatcher/webhook.rst:108 +msgid "With using other web framework" +msgstr "" + +#: ../../dispatcher/webhook.rst:110 +msgid "" +"You can pass incoming request to aiogram's webhook controller from any " +"web framework you want." +msgstr "" + +#: ../../dispatcher/webhook.rst:112 +msgid "" +"Read more about it in " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` or " +":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods." +msgstr "" + +#: ../../dispatcher/webhook.rst:123 +msgid "" +"If you want to use reply into webhook, you should check that result of " +"the :code:`feed_update` methods is an instance of API method and build " +":code:`multipart/form-data` or :code:`application/json` response body " +"manually." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po index a8baf774..c6b0a3f2 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po @@ -7,62 +7,110 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:24+0200\n" +"POT-Creation-Date: 2023-08-06 16:52+0300\n" "PO-Revision-Date: 2022-10-13 21:54+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" -#: ../../utils/keyboard.rst:3 +#: ../../utils/keyboard.rst:4 msgid "Keyboard builder" msgstr "Конструктор клавіатури" -#: ../../utils/keyboard.rst:5 +#: ../../utils/keyboard.rst:6 msgid "Keyboard builder helps to dynamically generate markup." msgstr "Конструктор клавіатури допомагає динамічно генерувати розмітку" -#: ../../utils/keyboard.rst:9 +#: ../../utils/keyboard.rst:10 msgid "" "Note that if you have static markup, it's best to define it explicitly " "rather than using builder, but if you have dynamic markup configuration, " "feel free to use builder as you wish." -msgstr "Зауважте, що якщо у вас є статична розмітка, найкраще визначити її явно, " -"а не використовувати конструктор, але якщо у вас є конфігурація динамічної розмітки, " -"сміливо використовуйте конструктор на свій розсуд." +msgstr "" +"Зауважте, що якщо у вас є статична розмітка, найкраще визначити її явно, " +"а не використовувати конструктор, але якщо у вас є конфігурація " +"динамічної розмітки, сміливо використовуйте конструктор на свій розсуд." -#: ../../utils/keyboard.rst:14 +#: ../../utils/keyboard.rst:15 msgid "Usage example" msgstr "Приклад використання" -#: ../../utils/keyboard.rst:29 -msgid "Base builder" -msgstr "Базовий конструктор" - -#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of -msgid "Reply keyboard builder inherits all methods from generic builder" +#: ../../utils/keyboard.rst:17 +msgid "For example you want to generate inline keyboard with 10 buttons" msgstr "" -"Конструктор клавіатури відповідей успадковує всі методи від " + +#: ../../utils/keyboard.rst:27 +msgid "" +"then adjust this buttons to some grid, for example first line will have 3" +" buttons, the next lines will have 2 buttons" +msgstr "" + +#: ../../utils/keyboard.rst:33 +msgid "also you can attach another builder to this one" +msgstr "" + +#: ../../utils/keyboard.rst:40 +msgid "or you can attach some already generated markup" +msgstr "" + +#: ../../utils/keyboard.rst:47 +msgid "and finally you can export this markup to use it in your message" +msgstr "" + +#: ../../utils/keyboard.rst:53 +#, fuzzy +msgid "Reply keyboard builder has the same interface" +msgstr "Конструктор клавіатури допомагає динамічно генерувати розмітку" + +#: ../../utils/keyboard.rst:57 +msgid "" +"Note that you can't attach reply keyboard builder to inline keyboard " +"builder and vice versa" +msgstr "" + +#: ../../utils/keyboard.rst:61 +msgid "Inline Keyboard" +msgstr "Клавіатура під повідомленням(Inline Keyboard)" + +#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of +msgid "Inline keyboard builder inherits all methods from generic builder" +msgstr "" +"Конструктор клавіатури під повідомленням успадковує всі методи від " "універсального конструктора" +#: ../../utils/keyboard.rst:69 +msgid "Add new inline button to markup" +msgstr "Додавання нової кнопки до розмітки" + +#: ../../utils/keyboard.rst:74 +msgid "Construct an InlineKeyboardMarkup" +msgstr "Створення InlineKeyboardMarkup" + #: aiogram.utils.keyboard.KeyboardBuilder.add:1 of msgid "Add one or many buttons to markup." msgstr "Додавання однієї або кількох кнопок до розмітки." +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.row of +#: aiogram.utils.keyboard.KeyboardBuilder.row +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Parameters" msgstr "Параметри" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup #: aiogram.utils.keyboard.KeyboardBuilder.add #: aiogram.utils.keyboard.KeyboardBuilder.adjust #: aiogram.utils.keyboard.KeyboardBuilder.export #: aiogram.utils.keyboard.KeyboardBuilder.row #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy of +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of msgid "Returns" msgstr "Повертає" @@ -83,10 +131,12 @@ msgstr "" "передано параметр repeat=True, усі розміри будуть повторюватися, поки є " "доступні кнопки" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons:1 of msgid "Get flatten set of all buttons" msgstr "Отримання плоского списку усіх кнопок" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy:1 #: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy:1 of msgid "Make full copy of current builder with markup" msgstr "Робить повну копію поточного конструктора з розміткою" @@ -95,6 +145,11 @@ msgstr "Робить повну копію поточного конструкт msgid "Export configured markup as list of lists of buttons" msgstr "Експортує налаштовану розмітку як список списків кнопок" +#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup:1 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup:1 of +msgid "Create builder from existing markup" +msgstr "" + #: aiogram.utils.keyboard.KeyboardBuilder.row:1 of msgid "Add row to markup" msgstr "Додає рядок у розмітку" @@ -105,32 +160,23 @@ msgstr "" "Коли передано занадто багато кнопок, вони будуть розділені на багато " "рядків" -#: ../../utils/keyboard.rst:35 -msgid "Inline Keyboard" -msgstr "Клавіатура під повідомленням(Inline Keyboard)" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of -msgid "Inline keyboard builder inherits all methods from generic builder" -msgstr "" -"Конструктор клавіатури під повідомленням успадковує всі методи від " -"універсального конструктора" - -#: ../../utils/keyboard.rst:43 -msgid "Add new inline button to markup" -msgstr "Додавання нової кнопки до розмітки" - -#: ../../utils/keyboard.rst:48 -msgid "Construct an InlineKeyboardMarkup" -msgstr "Створення InlineKeyboardMarkup" - -#: ../../utils/keyboard.rst:51 +#: ../../utils/keyboard.rst:77 msgid "Reply Keyboard" msgstr "Клавіатура відповідей" -#: ../../utils/keyboard.rst:59 +#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of +msgid "Reply keyboard builder inherits all methods from generic builder" +msgstr "" +"Конструктор клавіатури відповідей успадковує всі методи від " +"універсального конструктора" + +#: ../../utils/keyboard.rst:85 msgid "Add new button to markup" msgstr "Додавання нової кнопки до розмітки" -#: ../../utils/keyboard.rst:64 +#: ../../utils/keyboard.rst:90 msgid "Construct an ReplyKeyboardMarkup" msgstr "Створення ReplyKeyboardMarkup" + +#~ msgid "Base builder" +#~ msgstr "Базовий конструктор" diff --git a/examples/echo_bot.py b/examples/echo_bot.py index e18201af..8ac45e43 100644 --- a/examples/echo_bot.py +++ b/examples/echo_bot.py @@ -2,6 +2,7 @@ import asyncio import logging from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode from aiogram.filters import Command from aiogram.types import Message @@ -12,10 +13,10 @@ TOKEN = "42:TOKEN" router = Router() -@router.message(Command(commands=["start"])) +@router.message(Command("start")) async def command_start_handler(message: Message) -> None: """ - This handler receive messages with `/start` command + This handler receives messages with `/start` command """ # Most event objects have aliases for API methods that can be called in events' context # For example if you want to answer to incoming message you can use `message.answer(...)` alias @@ -28,12 +29,12 @@ async def command_start_handler(message: Message) -> None: @router.message() async def echo_handler(message: types.Message) -> None: """ - Handler will forward received message back to the sender + Handler will forward receive a message back to the sender - By default, message handler will handle all message types (like text, photo, sticker and etc.) + By default, message handler will handle all message types (like a text, photo, sticker etc.) """ try: - # Send copy of the received message + # Send a copy of the received message await message.send_copy(chat_id=message.chat.id) except TypeError: # But not all the types is supported to be copied so need to handle it @@ -47,7 +48,7 @@ async def main() -> None: dp.include_router(router) # Initialize Bot instance with a default parse mode which will be passed to all API calls - bot = Bot(TOKEN, parse_mode="HTML") + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) # And the run events dispatching await dp.start_polling(bot) diff --git a/examples/echo_bot_webhook.py b/examples/echo_bot_webhook.py new file mode 100644 index 00000000..d8ed41c5 --- /dev/null +++ b/examples/echo_bot_webhook.py @@ -0,0 +1,104 @@ +""" +This example shows how to use webhook on behind of any reverse proxy (nginx, traefik, ingress etc.) +""" +import logging + +from aiohttp import web + +from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode +from aiogram.filters import Command +from aiogram.types import Message +from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application + +# Bot token can be obtained via https://t.me/BotFather +TOKEN = "42:TOKEN" + +# Webserver settings +# bind localhost only to prevent any external access +WEB_SERVER_HOST = "127.0.0.1" +# Port for incoming request from reverse proxy. Should be any available port +WEB_SERVER_PORT = 8080 + +# Path to webhook route, on which Telegram will send requests +WEBHOOK_PATH = "/webhook" +# Secret key to validate requests from Telegram (optional) +WEBHOOK_SECRET = "my-secret" +# Base URL for webhook will be used to generate webhook URL for Telegram, +# in this example it is used public DNS with HTTPS support +BASE_WEBHOOK_URL = "https://aiogram.dev/" + +# All handlers should be attached to the Router (or Dispatcher) +router = Router() + + +@router.message(Command(commands=["start"])) +async def command_start_handler(message: Message) -> None: + """ + This handler receives messages with `/start` command + """ + # Most event objects have aliases for API methods that can be called in events' context + # For example if you want to answer to incoming message you can use `message.answer(...)` alias + # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` + # method automatically or call API method directly via + # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` + await message.answer(f"Hello, {message.from_user.full_name}!") + + +@router.message() +async def echo_handler(message: types.Message) -> None: + """ + Handler will forward receive a message back to the sender + + By default, message handler will handle all message types (like text, photo, sticker etc.) + """ + try: + # Send a copy of the received message + await message.send_copy(chat_id=message.chat.id) + except TypeError: + # But not all the types is supported to be copied so need to handle it + await message.answer("Nice try!") + + +async def on_startup(bot: Bot) -> None: + # If you have a self-signed SSL certificate, then you will need to send a public + # certificate to Telegram + await bot.set_webhook(f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}") + + +def main() -> None: + # Dispatcher is a root router + dp = Dispatcher() + # ... and all other routers should be attached to Dispatcher + dp.include_router(router) + + # Register startup hook to initialize webhook + dp.startup.register(on_startup) + + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) + + # Create aiohttp.web.Application instance + app = web.Application() + + # Create an instance of request handler, + # aiogram has few implementations for different cases of usage + # In this example we use SimpleRequestHandler which is designed to handle simple cases + webhook_requests_handler = SimpleRequestHandler( + dispatcher=dp, + bot=bot, + secret_token=WEBHOOK_SECRET, + ) + # Register webhook handler on application + webhook_requests_handler.register(app, path=WEBHOOK_PATH) + + # Mount dispatcher startup and shutdown hooks to aiohttp application + setup_application(app, dp, bot=bot) + + # And finally start webserver + web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/examples/echo_bot_webhook_ssl.py b/examples/echo_bot_webhook_ssl.py new file mode 100644 index 00000000..463717f0 --- /dev/null +++ b/examples/echo_bot_webhook_ssl.py @@ -0,0 +1,118 @@ +""" +This example shows how to use webhook with SSL certificate. +""" +import logging +import ssl + +from aiohttp import web + +from aiogram import Bot, Dispatcher, Router, types +from aiogram.enums import ParseMode +from aiogram.filters import Command +from aiogram.types import FSInputFile, Message +from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application + +# Bot token can be obtained via https://t.me/BotFather +TOKEN = "42:TOKEN" + +# Webserver settings +# bind localhost only to prevent any external access +WEB_SERVER_HOST = "127.0.0.1" +# Port for incoming request from reverse proxy. Should be any available port +WEB_SERVER_PORT = 8080 + +# Path to webhook route, on which Telegram will send requests +WEBHOOK_PATH = "/webhook" +# Secret key to validate requests from Telegram (optional) +WEBHOOK_SECRET = "my-secret" +# Base URL for webhook will be used to generate webhook URL for Telegram, +# in this example it is used public address with TLS support +BASE_WEBHOOK_URL = "https://aiogram.dev" + +# Path to SSL certificate and private key for self-signed certificate. +WEBHOOK_SSL_CERT = "/path/to/cert.pem" +WEBHOOK_SSL_PRIV = "/path/to/private.key" + +# All handlers should be attached to the Router (or Dispatcher) +router = Router() + + +@router.message(Command("start")) +async def command_start_handler(message: Message) -> None: + """ + This handler receives messages with `/start` command + """ + # Most event objects have aliases for API methods that can be called in events' context + # For example if you want to answer to incoming message you can use `message.answer(...)` alias + # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` + # method automatically or call API method directly via + # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` + await message.answer(f"Hello, {message.from_user.full_name}!") + + +@router.message() +async def echo_handler(message: types.Message) -> None: + """ + Handler will forward receive a message back to the sender + + By default, message handler will handle all message types (like text, photo, sticker etc.) + """ + try: + # Send a copy of the received message + await message.send_copy(chat_id=message.chat.id) + except TypeError: + # But not all the types is supported to be copied so need to handle it + await message.answer("Nice try!") + + +async def on_startup(bot: Bot) -> None: + # In case when you have a self-signed SSL certificate, you need to send the certificate + # itself to Telegram servers for validation purposes + # (see https://core.telegram.org/bots/self-signed) + # But if you have a valid SSL certificate, you SHOULD NOT send it to Telegram servers. + await bot.set_webhook( + f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}", + certificate=FSInputFile(WEBHOOK_SSL_CERT), + ) + + +def main() -> None: + # Dispatcher is a root router + dp = Dispatcher() + # ... and all other routers should be attached to Dispatcher + dp.include_router(router) + + # Register startup hook to initialize webhook + dp.startup.register(on_startup) + + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) + + # Create aiohttp.web.Application instance + app = web.Application() + + # Create an instance of request handler, + # aiogram has few implementations for different cases of usage + # In this example we use SimpleRequestHandler which is designed to handle simple cases + webhook_requests_handler = SimpleRequestHandler( + dispatcher=dp, + bot=bot, + secret_token=WEBHOOK_SECRET, + ) + # Register webhook handler on application + webhook_requests_handler.register(app, path=WEBHOOK_PATH) + + # Mount dispatcher startup and shutdown hooks to aiohttp application + setup_application(app, dp, bot=bot) + + # Generate SSL context + context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) + context.load_cert_chain(WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV) + + # And finally start webserver + web.run_app(app, host=WEB_SERVER_HOST, port=WEB_SERVER_PORT, ssl_context=context) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() diff --git a/examples/multibot.py b/examples/multibot.py index b6a324cd..57e75f8e 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -39,7 +39,7 @@ def is_bot_token(value: str) -> Union[bool, Dict[str, Any]]: return True -@main_router.message(Command(commands=["add"], magic=F.args.func(is_bot_token))) +@main_router.message(Command("add", magic=F.args.func(is_bot_token))) async def command_add_bot(message: Message, command: CommandObject, bot: Bot) -> Any: new_bot = Bot(token=command.args, session=bot.session) try: diff --git a/examples/specify_updates.py b/examples/specify_updates.py index f9380b91..b5d22afc 100644 --- a/examples/specify_updates.py +++ b/examples/specify_updates.py @@ -19,10 +19,10 @@ logging.basicConfig(level=logging.INFO) router = Router() -@router.message(Command(commands=["start"])) +@router.message(Command("start")) async def command_start_handler(message: Message) -> None: """ - This handler receive messages with `/start` command + This handler receives messages with `/start` command """ await message.answer( From c9f0b36ad6c2e5b2a971020fc6eccb5b1ee8c9c1 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 19:17:58 +0300 Subject: [PATCH 054/139] Added support for message_thread_id in ChatActionSender (#1250) * Add support for message_thread_id in ChatActionSender The given changes add support for including the 'message_thread_id' in ChatActionSender function calls, allowing actions to be sent in specific threads rather than the main chat. * Added changelog --- CHANGES/1249.feature.rst | 1 + aiogram/utils/chat_action.py | 13 ++++++++++++- tests/test_utils/test_chat_action.py | 6 +++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1249.feature.rst diff --git a/CHANGES/1249.feature.rst b/CHANGES/1249.feature.rst new file mode 100644 index 00000000..147b407b --- /dev/null +++ b/CHANGES/1249.feature.rst @@ -0,0 +1 @@ +Added support for message_thread_id in ChatActionSender diff --git a/aiogram/utils/chat_action.py b/aiogram/utils/chat_action.py index d4778443..6d7b7400 100644 --- a/aiogram/utils/chat_action.py +++ b/aiogram/utils/chat_action.py @@ -33,6 +33,7 @@ class ChatActionSender: *, bot: Bot, chat_id: Union[str, int], + message_thread_id: Optional[int] = None, action: str = "typing", interval: float = DEFAULT_INTERVAL, initial_sleep: float = DEFAULT_INITIAL_SLEEP, @@ -45,6 +46,7 @@ class ChatActionSender: :param initial_sleep: sleep before first iteration """ self.chat_id = chat_id + self.message_thread_id = message_thread_id self.action = action self.interval = interval self.initial_sleep = initial_sleep @@ -82,7 +84,11 @@ class ChatActionSender: self.bot.id, counter, ) - await self.bot.send_chat_action(chat_id=self.chat_id, action=self.action) + await self.bot.send_chat_action( + chat_id=self.chat_id, + action=self.action, + message_thread_id=self.message_thread_id, + ) counter += 1 interval = self.interval - (time.monotonic() - start) @@ -341,5 +347,10 @@ class ChatActionMiddleware(BaseMiddleware): kwargs["action"] = "typing" else: kwargs["action"] = chat_action + kwargs["message_thread_id"] = ( + event.message_thread_id + if isinstance(event, Message) and event.is_topic_message + else None + ) async with ChatActionSender(bot=bot, chat_id=event.chat.id, **kwargs): return await handler(event, data) diff --git a/tests/test_utils/test_chat_action.py b/tests/test_utils/test_chat_action.py index 84cb8abb..d6041c37 100644 --- a/tests/test_utils/test_chat_action.py +++ b/tests/test_utils/test_chat_action.py @@ -54,7 +54,11 @@ class TestChatActionSender: ): await asyncio.sleep(0.1) assert mocked_send_chat_action.await_count > 1 - mocked_send_chat_action.assert_awaited_with(action="typing", chat_id=42) + mocked_send_chat_action.assert_awaited_with( + action="typing", + chat_id=42, + message_thread_id=None, + ) async def test_contextmanager(self, bot: MockedBot): sender: ChatActionSender = ChatActionSender.typing(bot=bot, chat_id=42) From f54ed1326b7e27f9f1e49f60a26deedf07afd927 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 19:23:15 +0300 Subject: [PATCH 055/139] Fixed typo --- CHANGES/1194.feature.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES/1194.feature.rst b/CHANGES/1194.feature.rst index 282ba131..7afc538f 100644 --- a/CHANGES/1194.feature.rst +++ b/CHANGES/1194.feature.rst @@ -3,9 +3,9 @@ You can use it like this: .. code-block:: python - from aiogram import Bot from aiogram.enum import Currency - await Bot.send_invoice( + + await bot.send_invoice( ..., currency=Currency.USD, ... From 649f76b5f6f8997984e9dea482f87f66f9870785 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 19:28:39 +0300 Subject: [PATCH 056/139] Bump changelog --- CHANGES.rst | 57 ++++++++++++++++++++++++++++++++++++++++ CHANGES/1194.feature.rst | 12 --------- CHANGES/1236.feature.rst | 3 --- CHANGES/1238.misc.rst | 3 --- CHANGES/1241.doc.rst | 1 - CHANGES/1242.bugfix.rst | 1 - CHANGES/1244.bugfix.rst | 5 ---- CHANGES/1245.misc.rst | 1 - CHANGES/1249.feature.rst | 1 - 9 files changed, 57 insertions(+), 27 deletions(-) delete mode 100644 CHANGES/1194.feature.rst delete mode 100644 CHANGES/1236.feature.rst delete mode 100644 CHANGES/1238.misc.rst delete mode 100644 CHANGES/1241.doc.rst delete mode 100644 CHANGES/1242.bugfix.rst delete mode 100644 CHANGES/1244.bugfix.rst delete mode 100644 CHANGES/1245.misc.rst delete mode 100644 CHANGES/1249.feature.rst diff --git a/CHANGES.rst b/CHANGES.rst index e2e6d782..d0c27d7b 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,63 @@ Changelog .. towncrier release notes start +3.0.0rc1 (2023-08-06) +====================== + +Features +-------- + +- Added Currency enum. + You can use it like this: + + .. code-block:: python + + from aiogram.enum import Currency + + await bot.send_invoice( + ..., + currency=Currency.USD, + ... + ) + `#1194 `_ +- Updated keyboard builders with new methods for integrating buttons and keyboard creation more seamlessly. + Added functionality to create buttons from existing markup and attach another builder. + This improvement aims to make the keyboard building process more user-friendly and flexible. + `#1236 `_ +- Added support for message_thread_id in ChatActionSender + `#1249 `_ + + +Bugfixes +-------- + +- Fixed polling startup when "bot" key is passed manually into dispatcher workflow data + `#1242 `_ +- Added codegen configuration for lost shortcuts: + + - ShippingQuery.answer + - PreCheckoutQuery.answer + - Message.delete_reply_markup + `#1244 `_ + + +Improved Documentation +---------------------- + +- Added documentation for webhook and polling modes. + `#1241 `_ + + +Misc +---- + +- Reworked InputFile reading, removed :code:`__aiter__` method, added `bot: Bot` argument to + the :code:`.read(...)` method, so, from now URLInputFile can be used without specifying + bot instance. + `#1238 `_ +- Code-generated :code:`__init__` typehints in types and methods to make IDE happy without additional pydantic plugin + `#1245 `_ + 3.0.0b9 (2023-07-30) ===================== diff --git a/CHANGES/1194.feature.rst b/CHANGES/1194.feature.rst deleted file mode 100644 index 7afc538f..00000000 --- a/CHANGES/1194.feature.rst +++ /dev/null @@ -1,12 +0,0 @@ -Added Currency enum. -You can use it like this: - -.. code-block:: python - - from aiogram.enum import Currency - - await bot.send_invoice( - ..., - currency=Currency.USD, - ... - ) diff --git a/CHANGES/1236.feature.rst b/CHANGES/1236.feature.rst deleted file mode 100644 index 3e651c17..00000000 --- a/CHANGES/1236.feature.rst +++ /dev/null @@ -1,3 +0,0 @@ -Updated keyboard builders with new methods for integrating buttons and keyboard creation more seamlessly. -Added functionality to create buttons from existing markup and attach another builder. -This improvement aims to make the keyboard building process more user-friendly and flexible. diff --git a/CHANGES/1238.misc.rst b/CHANGES/1238.misc.rst deleted file mode 100644 index 4f62cae1..00000000 --- a/CHANGES/1238.misc.rst +++ /dev/null @@ -1,3 +0,0 @@ -Reworked InputFile reading, removed :code:`__aiter__` method, added `bot: Bot` argument to -the :code:`.read(...)` method, so, from now URLInputFile can be used without specifying -bot instance. diff --git a/CHANGES/1241.doc.rst b/CHANGES/1241.doc.rst deleted file mode 100644 index 34825cf9..00000000 --- a/CHANGES/1241.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Added documentation for webhook and polling modes. diff --git a/CHANGES/1242.bugfix.rst b/CHANGES/1242.bugfix.rst deleted file mode 100644 index eb981383..00000000 --- a/CHANGES/1242.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed polling startup when "bot" key is passed manually into dispatcher workflow data diff --git a/CHANGES/1244.bugfix.rst b/CHANGES/1244.bugfix.rst deleted file mode 100644 index 5d827461..00000000 --- a/CHANGES/1244.bugfix.rst +++ /dev/null @@ -1,5 +0,0 @@ -Added codegen configuration for lost shortcuts: - -- ShippingQuery.answer -- PreCheckoutQuery.answer -- Message.delete_reply_markup diff --git a/CHANGES/1245.misc.rst b/CHANGES/1245.misc.rst deleted file mode 100644 index ab567cec..00000000 --- a/CHANGES/1245.misc.rst +++ /dev/null @@ -1 +0,0 @@ -Code-generated :code:`__init__` typehints in types and methods to make IDE happy without additional pydantic plugin diff --git a/CHANGES/1249.feature.rst b/CHANGES/1249.feature.rst deleted file mode 100644 index 147b407b..00000000 --- a/CHANGES/1249.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added support for message_thread_id in ChatActionSender From 73033643e75e4d49bec1adf677737523756c2d23 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Aug 2023 20:21:09 +0300 Subject: [PATCH 057/139] Update main page --- README.rst | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/README.rst b/README.rst index c7505fce..7c66c6e2 100644 --- a/README.rst +++ b/README.rst @@ -1,9 +1,6 @@ -#################### -aiogram |beta badge| -#################### - -.. danger:: - This version is still in development! +####################### +aiogram |version badge| +####################### .. image:: https://img.shields.io/pypi/l/aiogram.svg?style=flat-square :target: https://opensource.org/licenses/MIT @@ -49,14 +46,6 @@ Documentation: - 🇺🇦 `Ukrainian `_ -.. danger:: - - **Breaking News:** - - *aiogram* 3.0 has breaking changes. - - It breaks backward compatibility by introducing new breaking changes! - Features ======== @@ -91,5 +80,5 @@ Features - 🇧🇷 `@aiogram_br `_ -.. |beta badge| image:: https://img.shields.io/badge/-beta-orange - :alt: Beta badge +.. |version badge| image:: https://img.shields.io/badge/-release%20candidate-yellow + :alt: Release Candidate badge From 4e7c66726f2cae51c76a34388846444caebcaa1a Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 7 Aug 2023 23:53:40 +0300 Subject: [PATCH 058/139] Bump version --- aiogram/__meta__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index ca7a61cc..97342ec3 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.0rc1" +__version__ = "3.0.0rc2" __api_version__ = "6.7" From 6d6bcd0a9b5fad152d7dba196499a4229ee294b9 Mon Sep 17 00:00:00 2001 From: nullmatawasoradesu <119107850+wakaree@users.noreply.github.com> Date: Mon, 7 Aug 2023 23:54:05 +0300 Subject: [PATCH 059/139] Added a few words about skipping pending updates (#1251) * Added a few words about skipping pending updates * Added changelog * Fixed typo --- CHANGES/1251.doc.rst | 1 + docs/migration_2_to_3.rst | 1 + 2 files changed, 2 insertions(+) create mode 100644 CHANGES/1251.doc.rst diff --git a/CHANGES/1251.doc.rst b/CHANGES/1251.doc.rst new file mode 100644 index 00000000..a1c437c0 --- /dev/null +++ b/CHANGES/1251.doc.rst @@ -0,0 +1 @@ +Added a few words about skipping pending updates diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index 6fc90f7c..483f4f8d 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -40,6 +40,7 @@ Dispatcher from now if you want to get current bot instance inside handlers or filters you should accept the argument :code:`bot: Bot` and use it instead of :code:`Bot.get_current()` Inside middlewares it can be accessed via :code:`data["bot"]`. +- Now to skip pending updates, you should call the :class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly instead of passing :code:`skip_updates=True` to start polling method. Filtering events From b9abf701a0e1874e83a2c3687aa28a8fd6947932 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 7 Aug 2023 23:57:04 +0300 Subject: [PATCH 060/139] Fixed typo in changelog --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index d0c27d7b..7e39287c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -27,7 +27,7 @@ Features .. code-block:: python - from aiogram.enum import Currency + from aiogram.enums import Currency await bot.send_invoice( ..., From 7adc39bd82eae7bb6c68329ec08202aa8a770090 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 7 Aug 2023 23:59:17 +0300 Subject: [PATCH 061/139] Backport issue templates --- .github/ISSUE_TEMPLATE/bug.yaml | 98 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/bug_report.md | 45 ----------- .github/ISSUE_TEMPLATE/config.yml | 11 +++ .github/ISSUE_TEMPLATE/feature.yaml | 55 +++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 ---- 5 files changed, 164 insertions(+), 62 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug.yaml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature.yaml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 00000000..d016187c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,98 @@ +name: Bug report +description: Report issues affecting the framework or the documentation. +labels: + - bug +body: + - type: checkboxes + attributes: + label: Checklist + options: + - label: I am sure the error is coming from aiogram code + required: true + - label: I have searched in the issue tracker for similar bug reports, including closed ones + required: true + + - type: markdown + attributes: + value: | + ## Context + + Please provide as much information as possible. This will help us to reproduce the issue and fix it. + + - type: input + attributes: + label: Operating system + placeholder: e.g. Ubuntu 20.04.2 LTS + validations: + required: true + + - type: input + attributes: + label: Python version + placeholder: e.g. 3.10.1 + validations: + required: true + + - type: input + attributes: + label: aiogram version + placeholder: e.g. 2.21 or 3.0b3 + validations: + required: true + + - type: textarea + attributes: + label: Expected behavior + description: Please describe the behavior you are expecting. + placeholder: E.g. the bot should send a message with the text "Hello, world!". + validations: + required: true + + - type: textarea + attributes: + label: Current behavior + description: Please describe the behavior you are currently experiencing. + placeholder: E.g. the bot doesn't send any message. + validations: + required: true + + - type: textarea + attributes: + label: Steps to reproduce + description: Please describe the steps you took to reproduce the behavior. + placeholder: | + 1. step 1 + 2. step 2 + 3. ... + 4. you get it... + validations: + required: true + + - type: textarea + attributes: + label: Code example + description: Provide a [minimal, reproducible](https://stackoverflow.com/help/minimal-reproducible-example) and properly formatted example (if applicable). + placeholder: | + from aiogram import Bot, Dispatcher + ... + render: python3 + + - type: textarea + attributes: + label: Logs + description: Provide the complete traceback (if applicable) or other kind of logs. + placeholder: | + Traceback (most recent call last): + File "main.py", line 1, in + ... + SomeException: ... + render: sh + + - type: textarea + attributes: + label: Additional information + description: Please provide any additional information that may help us to reproduce the issue. + placeholder: | + E.g. this behavior is reproducible only in group chats. + + You can also attach additional screenshots, logs, or other files. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 6adfd76b..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - ---- -name: Bug report -about: Create a report to help us improve - ---- - -## Context - -Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions. - -* Operating System: -* Python Version: -* aiogram version: -* aiohttp version: -* uvloop version (if installed): - -## Expected Behavior - -Please describe the behavior you are expecting - -## Current Behavior - -What is the current behavior? - -## Failure Information (for bugs) - -Please help provide information about the failure if this is a bug. If it is not a bug, please remove the rest of this template. - -### Steps to Reproduce - -Please provide detailed steps for reproducing the issue. - -1. step 1 -2. step 2 -3. you get it... - -### Failure Logs - -Please include any relevant log snippets or files here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..aee2a9d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: true +contact_links: + - name: Discuss anything related to the framework + url: https://github.com/aiogram/aiogram/discussions + about: Ask a question about aiogram or share your code snippets and ideas. + - name: Join our Telegram channel + url: https://t.me/aiogram_live + about: Get the latest updates about the framework. + - name: Join our Telegram chat + url: https://t.me/aiogram + about: Get help, ask questions, and discuss the framework in real-time. diff --git a/.github/ISSUE_TEMPLATE/feature.yaml b/.github/ISSUE_TEMPLATE/feature.yaml new file mode 100644 index 00000000..bcb6e7fb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yaml @@ -0,0 +1,55 @@ +name: Feature request +description: Report features you would like to see or improve in the framework. +labels: + - enhancement +body: + - type: dropdown + attributes: + label: aiogram version + options: + - 2.x + - 3.x + - both + - n/a + validations: + required: true + + - type: textarea + attributes: + label: Problem + description: Is your feature request related to a specific problem? If not, please describe the general idea of your request. + placeholder: e.g. I want to send a photo to a user by url. + validations: + required: true + + - type: textarea + attributes: + label: Possible solution + description: Describe the solution you would like to see in the framework. + placeholder: e.g. Add a method to send a photo to a user by url. + validations: + required: true + + - type: textarea + attributes: + label: Alternatives + description: What other solutions do you have in mind? + placeholder: e.g. I'm sending a text message with photo url. + + - type: textarea + attributes: + label: Code example + description: A small code example that demonstrates the behavior you would like to see. + placeholder: | + await bot.send_photo(user_id, photo_url) + ... + render: python3 + + - type: textarea + attributes: + label: Additional information + description: Any additional information you would like to provide. + placeholder: | + E.g. this method should also cache images to speed up further sending. + + You can also attach additional pictures or other files. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 066b2d92..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From 68c0516f6909b83c70a18ee908a9ff3440c8b924 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 8 Aug 2023 00:05:39 +0300 Subject: [PATCH 062/139] Small update in issues templates --- .github/ISSUE_TEMPLATE/bug.yaml | 2 ++ .github/ISSUE_TEMPLATE/feature.yaml | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index d016187c..89ec316c 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -29,6 +29,7 @@ body: - type: input attributes: label: Python version + description: (`python --version` inside your virtualenv) placeholder: e.g. 3.10.1 validations: required: true @@ -36,6 +37,7 @@ body: - type: input attributes: label: aiogram version + description: (`pip show aiogram` inside your virtualenv) placeholder: e.g. 2.21 or 3.0b3 validations: required: true diff --git a/.github/ISSUE_TEMPLATE/feature.yaml b/.github/ISSUE_TEMPLATE/feature.yaml index bcb6e7fb..257417f1 100644 --- a/.github/ISSUE_TEMPLATE/feature.yaml +++ b/.github/ISSUE_TEMPLATE/feature.yaml @@ -6,9 +6,10 @@ body: - type: dropdown attributes: label: aiogram version + description: (`pip show aiogram` inside your virtualenv) options: - - 2.x - 3.x + - 2.x - both - n/a validations: From c516ea9d6a93c12b8d671d2d9fcd8f913192f808 Mon Sep 17 00:00:00 2001 From: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com> Date: Thu, 10 Aug 2023 22:10:30 +0300 Subject: [PATCH 063/139] Refactor and improve bot examples (#1256) * Refactor and improve bot messages Refactored bot code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. CommandStart() is now used instead of Command('start') for readability. Furthermore, the bot's 'stop' command was improved, ensuring it executes appropriately during KeyboardInterrupt or SystemExit. Additionally, the bot's logging was adjusted to output to sys.stdout for better logs' readability. * Added Changelog * Add guidance comments on obtaining bot tokens from environment variables * Remove hardcoded tokens, opt for environment variable * Remove unnecessary spaces and reorganize imports * Fix error, switch default storage from Redis to Memory, and add logging to multibot example --- CHANGES/5780.doc.rst | 1 + examples/echo_bot.py | 18 ++++++++----- examples/echo_bot_webhook.py | 15 ++++++----- examples/echo_bot_webhook_ssl.py | 14 ++++++---- examples/finite_state_machine.py | 28 ++++++++++++-------- examples/multibot.py | 16 ++++++++---- examples/specify_updates.py | 45 ++++++++++++++++++-------------- examples/web_app/main.py | 8 +++--- 8 files changed, 89 insertions(+), 56 deletions(-) create mode 100644 CHANGES/5780.doc.rst diff --git a/CHANGES/5780.doc.rst b/CHANGES/5780.doc.rst new file mode 100644 index 00000000..2b8af247 --- /dev/null +++ b/CHANGES/5780.doc.rst @@ -0,0 +1 @@ +Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. diff --git a/examples/echo_bot.py b/examples/echo_bot.py index 8ac45e43..fc0bb0ff 100644 --- a/examples/echo_bot.py +++ b/examples/echo_bot.py @@ -1,19 +1,22 @@ import asyncio import logging +import sys +from os import getenv from aiogram import Bot, Dispatcher, Router, types from aiogram.enums import ParseMode -from aiogram.filters import Command +from aiogram.filters import CommandStart from aiogram.types import Message +from aiogram.utils.markdown import hbold # Bot token can be obtained via https://t.me/BotFather -TOKEN = "42:TOKEN" +TOKEN = getenv("BOT_TOKEN") # All handlers should be attached to the Router (or Dispatcher) router = Router() -@router.message(Command("start")) +@router.message(CommandStart()) async def command_start_handler(message: Message) -> None: """ This handler receives messages with `/start` command @@ -23,7 +26,7 @@ async def command_start_handler(message: Message) -> None: # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` # method automatically or call API method directly via # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` - await message.answer(f"Hello, {message.from_user.full_name}!") + await message.answer(f"Hello, {hbold(message.from_user.full_name)}!") @router.message() @@ -54,5 +57,8 @@ async def main() -> None: if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) - asyncio.run(main()) + logging.basicConfig(level=logging.INFO, stream=sys.stdout) + try: + asyncio.run(main()) + except (KeyboardInterrupt, SystemExit): + logging.info("Bot stopped!") diff --git a/examples/echo_bot_webhook.py b/examples/echo_bot_webhook.py index d8ed41c5..1fa56c3d 100644 --- a/examples/echo_bot_webhook.py +++ b/examples/echo_bot_webhook.py @@ -2,17 +2,20 @@ This example shows how to use webhook on behind of any reverse proxy (nginx, traefik, ingress etc.) """ import logging +import sys +from os import getenv from aiohttp import web from aiogram import Bot, Dispatcher, Router, types from aiogram.enums import ParseMode -from aiogram.filters import Command +from aiogram.filters import CommandStart from aiogram.types import Message +from aiogram.utils.markdown import hbold from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application # Bot token can be obtained via https://t.me/BotFather -TOKEN = "42:TOKEN" +TOKEN = getenv("BOT_TOKEN") # Webserver settings # bind localhost only to prevent any external access @@ -32,7 +35,7 @@ BASE_WEBHOOK_URL = "https://aiogram.dev/" router = Router() -@router.message(Command(commands=["start"])) +@router.message(CommandStart()) async def command_start_handler(message: Message) -> None: """ This handler receives messages with `/start` command @@ -42,7 +45,7 @@ async def command_start_handler(message: Message) -> None: # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` # method automatically or call API method directly via # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` - await message.answer(f"Hello, {message.from_user.full_name}!") + await message.answer(f"Hello, {hbold(message.from_user.full_name)}!") @router.message() @@ -63,7 +66,7 @@ async def echo_handler(message: types.Message) -> None: async def on_startup(bot: Bot) -> None: # If you have a self-signed SSL certificate, then you will need to send a public # certificate to Telegram - await bot.set_webhook(f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}") + await bot.set_webhook(f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}", secret_token=WEBHOOK_SECRET) def main() -> None: @@ -100,5 +103,5 @@ def main() -> None: if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.INFO, stream=sys.stdout) main() diff --git a/examples/echo_bot_webhook_ssl.py b/examples/echo_bot_webhook_ssl.py index 463717f0..ad41bc4d 100644 --- a/examples/echo_bot_webhook_ssl.py +++ b/examples/echo_bot_webhook_ssl.py @@ -3,17 +3,20 @@ This example shows how to use webhook with SSL certificate. """ import logging import ssl +import sys +from os import getenv from aiohttp import web from aiogram import Bot, Dispatcher, Router, types from aiogram.enums import ParseMode -from aiogram.filters import Command +from aiogram.filters import CommandStart from aiogram.types import FSInputFile, Message +from aiogram.utils.markdown import hbold from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application # Bot token can be obtained via https://t.me/BotFather -TOKEN = "42:TOKEN" +TOKEN = getenv("BOT_TOKEN") # Webserver settings # bind localhost only to prevent any external access @@ -37,7 +40,7 @@ WEBHOOK_SSL_PRIV = "/path/to/private.key" router = Router() -@router.message(Command("start")) +@router.message(CommandStart()) async def command_start_handler(message: Message) -> None: """ This handler receives messages with `/start` command @@ -47,7 +50,7 @@ async def command_start_handler(message: Message) -> None: # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` # method automatically or call API method directly via # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` - await message.answer(f"Hello, {message.from_user.full_name}!") + await message.answer(f"Hello, {hbold(message.from_user.full_name)}!") @router.message() @@ -73,6 +76,7 @@ async def on_startup(bot: Bot) -> None: await bot.set_webhook( f"{BASE_WEBHOOK_URL}{WEBHOOK_PATH}", certificate=FSInputFile(WEBHOOK_SSL_CERT), + secret_token=WEBHOOK_SECRET, ) @@ -114,5 +118,5 @@ def main() -> None: if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.INFO, stream=sys.stdout) main() diff --git a/examples/finite_state_machine.py b/examples/finite_state_machine.py index 8539015c..260fdfdf 100644 --- a/examples/finite_state_machine.py +++ b/examples/finite_state_machine.py @@ -5,7 +5,8 @@ from os import getenv from typing import Any, Dict from aiogram import Bot, Dispatcher, F, Router, html -from aiogram.filters import Command +from aiogram.enums import ParseMode +from aiogram.filters import Command, CommandStart from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import ( @@ -15,6 +16,8 @@ from aiogram.types import ( ReplyKeyboardRemove, ) +TOKEN = getenv("BOT_TOKEN") + form_router = Router() @@ -24,7 +27,7 @@ class Form(StatesGroup): language = State() -@form_router.message(Command("start")) +@form_router.message(CommandStart()) async def command_start(message: Message, state: FSMContext) -> None: await state.set_state(Form.name) await message.answer( @@ -91,7 +94,7 @@ async def process_like_write_bots(message: Message, state: FSMContext) -> None: @form_router.message(Form.like_bots) -async def process_unknown_write_bots(message: Message, state: FSMContext) -> None: +async def process_unknown_write_bots(message: Message) -> None: await message.reply("I don't understand you :(") @@ -99,12 +102,12 @@ async def process_unknown_write_bots(message: Message, state: FSMContext) -> Non async def process_language(message: Message, state: FSMContext) -> None: data = await state.update_data(language=message.text) await state.clear() - text = ( - "Thank for all! Python is in my hearth!\nSee you soon." - if message.text.casefold() == "python" - else "Thank for information!\nSee you soon." - ) - await message.answer(text) + + if message.text.casefold() == "python": + await message.reply( + "Python, you say? That's the language that makes my circuits light up! 😉" + ) + await show_summary(message=message, data=data) @@ -121,7 +124,7 @@ async def show_summary(message: Message, data: Dict[str, Any], positive: bool = async def main(): - bot = Bot(token=getenv("TELEGRAM_TOKEN"), parse_mode="HTML") + bot = Bot(token=TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher() dp.include_router(form_router) @@ -130,4 +133,7 @@ async def main(): if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) - asyncio.run(main()) + try: + asyncio.run(main()) + except (KeyboardInterrupt, SystemExit): + logging.info("Bot stopped!") diff --git a/examples/multibot.py b/examples/multibot.py index 57e75f8e..82fac4a1 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -1,14 +1,16 @@ +import logging +import sys from os import getenv from typing import Any, Dict, Union from aiohttp import web -from finite_state_machine import form_router from aiogram import Bot, Dispatcher, F, Router from aiogram.client.session.aiohttp import AiohttpSession +from aiogram.enums import ParseMode from aiogram.exceptions import TelegramUnauthorizedError from aiogram.filters import Command, CommandObject -from aiogram.fsm.storage.redis import DefaultKeyBuilder, RedisStorage +from aiogram.fsm.storage.memory import MemoryStorage from aiogram.types import Message from aiogram.utils.token import TokenValidationError, validate_token from aiogram.webhook.aiohttp_server import ( @@ -16,11 +18,12 @@ from aiogram.webhook.aiohttp_server import ( TokenBasedRequestHandler, setup_application, ) +from finite_state_machine import form_router main_router = Router() BASE_URL = getenv("BASE_URL", "https://example.com") -MAIN_BOT_TOKEN = getenv("TELEGRAM_TOKEN") +MAIN_BOT_TOKEN = getenv("BOT_TOKEN") WEB_SERVER_HOST = "127.0.0.1" WEB_SERVER_PORT = 8080 @@ -56,10 +59,13 @@ async def on_startup(dispatcher: Dispatcher, bot: Bot): def main(): + logging.basicConfig(level=logging.INFO, stream=sys.stdout) session = AiohttpSession() - bot_settings = {"session": session, "parse_mode": "HTML"} + bot_settings = {"session": session, "parse_mode": ParseMode.HTML} bot = Bot(token=MAIN_BOT_TOKEN, **bot_settings) - storage = RedisStorage.from_url(REDIS_DSN, key_builder=DefaultKeyBuilder(with_bot_id=True)) + storage = MemoryStorage() + # In order to use RedisStorage you need to use Key Builder with bot ID: + # storage = RedisStorage.from_url(REDIS_DSN, key_builder=DefaultKeyBuilder(with_bot_id=True)) main_dispatcher = Dispatcher(storage=storage) main_dispatcher.include_router(main_router) diff --git a/examples/specify_updates.py b/examples/specify_updates.py index b5d22afc..b3c26786 100644 --- a/examples/specify_updates.py +++ b/examples/specify_updates.py @@ -1,8 +1,11 @@ import asyncio import logging +import sys +from os import getenv from aiogram import Bot, Dispatcher, Router -from aiogram.filters import Command +from aiogram.enums import ParseMode +from aiogram.filters import LEAVE_TRANSITION, ChatMemberUpdatedFilter, CommandStart from aiogram.types import ( CallbackQuery, ChatMemberUpdated, @@ -10,8 +13,9 @@ from aiogram.types import ( InlineKeyboardMarkup, Message, ) +from aiogram.utils.markdown import hbold, hcode -TOKEN = "6wo" +TOKEN = getenv("BOT_TOKEN") logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) @@ -19,14 +23,14 @@ logging.basicConfig(level=logging.INFO) router = Router() -@router.message(Command("start")) +@router.message(CommandStart()) async def command_start_handler(message: Message) -> None: """ This handler receives messages with `/start` command """ await message.answer( - f"Hello, {message.from_user.full_name}!", + f"Hello, {hbold(message.from_user.full_name)}!", reply_markup=InlineKeyboardMarkup( inline_keyboard=[[InlineKeyboardButton(text="Tap me, bro", callback_data="*")]] ), @@ -37,7 +41,7 @@ async def command_start_handler(message: Message) -> None: async def chat_member_update(chat_member: ChatMemberUpdated, bot: Bot) -> None: await bot.send_message( chat_member.chat.id, - "Member {chat_member.from_user.id} was changed " + f"Member {hcode(chat_member.from_user.id)} was changed " + f"from {chat_member.old_chat_member.status} to {chat_member.new_chat_member.status}", ) @@ -48,7 +52,7 @@ sub_router = Router() @sub_router.callback_query() async def callback_tap_me(callback_query: CallbackQuery) -> None: - await callback_query.answer("Yeah good, now i'm fine") + await callback_query.answer("Yeah good, now I'm fine") # this router will use only edited_message updates @@ -57,38 +61,39 @@ sub_sub_router = Router() @sub_sub_router.edited_message() async def edited_message_handler(edited_message: Message) -> None: - await edited_message.reply("Message was edited, big brother watch you") + await edited_message.reply("Message was edited, Big Brother watches you") # this router will use only my_chat_member updates deep_dark_router = Router() -@deep_dark_router.my_chat_member() +@deep_dark_router.my_chat_member(~ChatMemberUpdatedFilter(~LEAVE_TRANSITION)) async def my_chat_member_change(chat_member: ChatMemberUpdated, bot: Bot) -> None: await bot.send_message( chat_member.chat.id, - "Member was changed from " - + f"{chat_member.old_chat_member.status} to {chat_member.new_chat_member.status}", + "This Bot`s status was changed from " + + f"{hbold(chat_member.old_chat_member.status)} to {hbold(chat_member.new_chat_member.status)}", ) async def main() -> None: # Initialize Bot instance with a default parse mode which will be passed to all API calls - bot = Bot(TOKEN, parse_mode="HTML") + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher() - dp.include_router(router) + sub_router.include_router(deep_dark_router) - router.include_router(sub_router) - router.include_router(sub_sub_router) + router.include_routers(sub_router, sub_sub_router) + dp.include_router(router) - useful_updates = dp.resolve_used_update_types() - - # And the run events dispatching - await dp.start_polling(bot, allowed_updates=useful_updates) + # Start event dispatching + await dp.start_polling(bot) if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) - asyncio.run(main()) + logging.basicConfig(level=logging.INFO, stream=sys.stdout) + try: + asyncio.run(main()) + except (KeyboardInterrupt, SystemExit): + logger.info("Bot stopped!") diff --git a/examples/web_app/main.py b/examples/web_app/main.py index 0d58042c..db148153 100644 --- a/examples/web_app/main.py +++ b/examples/web_app/main.py @@ -1,4 +1,5 @@ import logging +import sys from os import getenv from aiohttp.web import run_app @@ -10,7 +11,8 @@ from aiogram import Bot, Dispatcher from aiogram.types import MenuButtonWebApp, WebAppInfo from aiogram.webhook.aiohttp_server import SimpleRequestHandler, setup_application -TELEGRAM_TOKEN = getenv("TELEGRAM_TOKEN") +TOKEN = getenv("BOT_TOKEN") + APP_BASE_URL = getenv("APP_BASE_URL") @@ -22,7 +24,7 @@ async def on_startup(bot: Bot, base_url: str): def main(): - bot = Bot(token=TELEGRAM_TOKEN, parse_mode="HTML") + bot = Bot(token=TOKEN, parse_mode="HTML") dispatcher = Dispatcher() dispatcher["base_url"] = APP_BASE_URL dispatcher.startup.register(on_startup) @@ -45,5 +47,5 @@ def main(): if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.INFO, stream=sys.stdout) main() From 020db29e6dc62ee4997f32efa55b7b8b96305c22 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 13 Aug 2023 17:01:21 +0300 Subject: [PATCH 064/139] Fixed line length --- examples/specify_updates.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/specify_updates.py b/examples/specify_updates.py index b3c26786..ead296ea 100644 --- a/examples/specify_updates.py +++ b/examples/specify_updates.py @@ -72,8 +72,8 @@ deep_dark_router = Router() async def my_chat_member_change(chat_member: ChatMemberUpdated, bot: Bot) -> None: await bot.send_message( chat_member.chat.id, - "This Bot`s status was changed from " - + f"{hbold(chat_member.old_chat_member.status)} to {hbold(chat_member.new_chat_member.status)}", + f"This Bot`s status was changed from {hbold(chat_member.old_chat_member.status)} " + f"to {hbold(chat_member.new_chat_member.status)}", ) From a80031509e5f8d775f610b095a5d3cc5ec1fe8c6 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 13 Aug 2023 17:55:35 +0300 Subject: [PATCH 065/139] Fixed nested hashtag, cashtag and email entnties parsing (#1263) * Fixed nested hashtag, cashtag and email message entities not being parsed correctly when these entities are inside another entity. * Tests coverage --- CHANGES/1259.bugfix.rst | 1 + aiogram/utils/text_decorations.py | 7 ++++- tests/test_utils/test_text_decorations.py | 35 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1259.bugfix.rst diff --git a/CHANGES/1259.bugfix.rst b/CHANGES/1259.bugfix.rst new file mode 100644 index 00000000..e070549d --- /dev/null +++ b/CHANGES/1259.bugfix.rst @@ -0,0 +1 @@ +Fixed nested hashtag, cashtag and email message entities not being parsed correctly when these entities are inside another entity. diff --git a/aiogram/utils/text_decorations.py b/aiogram/utils/text_decorations.py index 97430a32..eaff6f2c 100644 --- a/aiogram/utils/text_decorations.py +++ b/aiogram/utils/text_decorations.py @@ -43,8 +43,11 @@ class TextDecoration(ABC): MessageEntityType.URL, MessageEntityType.MENTION, MessageEntityType.PHONE_NUMBER, + MessageEntityType.HASHTAG, + MessageEntityType.CASHTAG, + MessageEntityType.EMAIL, }: - # This entities should not be changed + # These entities should not be changed return text if entity.type in { MessageEntityType.BOLD, @@ -71,6 +74,8 @@ class TextDecoration(ABC): if entity.type == MessageEntityType.CUSTOM_EMOJI: return self.custom_emoji(value=text, custom_emoji_id=cast(str, entity.custom_emoji_id)) + # This case is not possible because of `if` above, but if any new entity is added to + # API it will be here too return self.quote(text) def unparse(self, text: str, entities: Optional[List[MessageEntity]] = None) -> str: diff --git a/tests/test_utils/test_text_decorations.py b/tests/test_utils/test_text_decorations.py index 056bd1cb..25f222f0 100644 --- a/tests/test_utils/test_text_decorations.py +++ b/tests/test_utils/test_text_decorations.py @@ -113,6 +113,14 @@ class TestTextDecoration: ): assert decorator.apply_entity(entity, "test") == result + def test_unknown_apply_entity(self): + assert ( + html_decoration.apply_entity( + MessageEntity(type="unknown", offset=0, length=5), "" + ) + == "<test>" + ) + @pytest.mark.parametrize( "decorator,before,after", [ @@ -243,6 +251,33 @@ class TestTextDecoration: [MessageEntity(type="bold", offset=0, length=8, url=None, user=None)], "👋🏾 Hi!", ], + [ + html_decoration, + "#test", + [ + MessageEntity(type="hashtag", offset=0, length=5), + MessageEntity(type="bold", offset=0, length=5), + ], + "#test", + ], + [ + html_decoration, + "$TEST", + [ + MessageEntity(type="cashtag", offset=0, length=5), + MessageEntity(type="bold", offset=0, length=5), + ], + "$TEST", + ], + [ + html_decoration, + "test@example.com", + [ + MessageEntity(type="email", offset=0, length=16), + MessageEntity(type="bold", offset=0, length=16), + ], + "test@example.com", + ], ], ) def test_unparse( From 068875534b6b9284a6053ac4b3747d13f9cb3367 Mon Sep 17 00:00:00 2001 From: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com> Date: Sun, 13 Aug 2023 17:56:32 +0300 Subject: [PATCH 066/139] Examples/dev 3x refactor fix* (#1261) * Refactor and improve bot messages Refactored bot code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. CommandStart() is now used instead of Command('start') for readability. Furthermore, the bot's 'stop' command was improved, ensuring it executes appropriately during KeyboardInterrupt or SystemExit. Additionally, the bot's logging was adjusted to output to sys.stdout for better logs' readability. * Added Changelog * Add guidance comments on obtaining bot tokens from environment variables * Remove hardcoded tokens, opt for environment variable * Remove unnecessary spaces and reorganize imports * Fix error, switch default storage from Redis to Memory, and add logging to multibot example * fix changelog version --------- Co-authored-by: Alex Root Junior --- CHANGES/1256.doc.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 CHANGES/1256.doc.rst diff --git a/CHANGES/1256.doc.rst b/CHANGES/1256.doc.rst new file mode 100644 index 00000000..2b8af247 --- /dev/null +++ b/CHANGES/1256.doc.rst @@ -0,0 +1 @@ +Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. From f87deea4fb0363d7d2106d17a51d33ea609eb93c Mon Sep 17 00:00:00 2001 From: nullmatawasoradesu <119107850+wakaree@users.noreply.github.com> Date: Sun, 13 Aug 2023 17:59:38 +0300 Subject: [PATCH 067/139] Added a section on Dependency Injection technology in documentation (#1253) * Added a section on Dependency Injection technology in documentation * Added changelog * Edited comments & titles --- CHANGES/1253.doc.rst | 1 + docs/dispatcher/dependency_injection.rst | 56 ++++++++++++++++++++++++ examples/context_addition_from_filter.py | 33 ++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 CHANGES/1253.doc.rst create mode 100644 docs/dispatcher/dependency_injection.rst create mode 100644 examples/context_addition_from_filter.py diff --git a/CHANGES/1253.doc.rst b/CHANGES/1253.doc.rst new file mode 100644 index 00000000..d8100687 --- /dev/null +++ b/CHANGES/1253.doc.rst @@ -0,0 +1 @@ +Added a section on Dependency Injection technology diff --git a/docs/dispatcher/dependency_injection.rst b/docs/dispatcher/dependency_injection.rst new file mode 100644 index 00000000..15b7c908 --- /dev/null +++ b/docs/dispatcher/dependency_injection.rst @@ -0,0 +1,56 @@ +#################### +Dependency injection +#################### + +Dependency injection is a programming technique that makes a class independent of its dependencies. It achieves that by decoupling the usage of an object from its creation. This helps you to follow `SOLID's `_ dependency inversion and single responsibility principles. + + +How it works in aiogram +======================= +For each update :class:`Dispatcher` passes handling context data. Filters and middleware can also make changes to the context. + +To access contextual data you should specify corresponding keyword parameter in handler or filter. For example, to get :class:`FSMContext` we do it like that: + +.. code-block:: python + @router.message(ProfileCompletion.add_photo, F.photo) + async def add_photo( + message: types.Message, bot: Bot, state: FSMContext + ) -> Any: + ... # do something with photo + + +Injecting own dependencies +========================== + +Aiogram provides several ways to complement / modify contextual data. + +The first and easiest way is to simply specify the named arguments in :class:`Dispatcher` initialization, polling start methods or :class:`SimpleRequestHandler` initialization if you use webhooks. + +.. code-block:: python + async def main() -> None: + dp = Dispatcher(..., foo=42) + return await dp.start_polling( + bot, allowed_updates=dp.resolve_used_update_types(), bar="Bazz" + ) +Analogy for webhook: + +.. code-block:: python + async def main() -> None: + dp = Dispatcher(..., foo=42) + handler = SimpleRequestHandler(dispatcher=dp, bot=bot, bar="Bazz") + ... # starting webhook +:class:`Dispatcher`'s workflow data also can be supplemented by setting values as in a dictionary: + +.. code-block:: python + dp = Dispatcher(...) + dp["eggs"] = Spam() +The middlewares updates the context quite often. +You can read more about them on this page: + +- `Middlewares `__ + +The last way is to return a dictionary from the filter: + +.. literalinclude:: ../../../examples/context_addition_from_filter.py + +...or using MagicFilter with :code:`as_()` method. (`Read more `__) diff --git a/examples/context_addition_from_filter.py b/examples/context_addition_from_filter.py new file mode 100644 index 00000000..e4eca517 --- /dev/null +++ b/examples/context_addition_from_filter.py @@ -0,0 +1,33 @@ +from typing import Any, Dict, Optional, Union + +from aiogram import Router +from aiogram.filters import Filter +from aiogram.types import Message, User + + +router = Router(name=__name__) + + +class HelloFilter(Filter): + def __init__(self, name: Optional[str] = None) -> None: + self.name = name + + async def __call__( + self, + message: Message, + event_from_user: User + # Filters also can accept keyword parameters like in handlers + ) -> Union[bool, Dict[str, Any]]: + if message.text.casefold() == "hello": + # Returning a dictionary that will update the context data + return {"name": event_from_user.mention_html(name=self.name)} + return False + + +@router.message(HelloFilter()) +async def my_handler( + message: Message, name: str # Now we can accept "name" as named parameter +) -> Any: + return message.answer( + "Hello, {name}!".format(name=name) + ) From fac0a533b0eccd73377e1aece42b6209d624123c Mon Sep 17 00:00:00 2001 From: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com> Date: Sun, 13 Aug 2023 18:00:59 +0300 Subject: [PATCH 068/139] Examples/dev 3x multi file (#1254) * Add multi-file bot example This commit adds a multi-file bot example to the repository. . * Refactor: Clean up code formatting for consistency * add Changelog * Refactor bot code, fix changelog version --- CHANGES/1254.doc.rst | 1 + examples/multi_file_bot/bot.py | 32 ++++++++++++++++++++ examples/multi_file_bot/handlers/__init__.py | 0 examples/multi_file_bot/handlers/echo.py | 21 +++++++++++++ examples/multi_file_bot/handlers/start.py | 18 +++++++++++ 5 files changed, 72 insertions(+) create mode 100644 CHANGES/1254.doc.rst create mode 100644 examples/multi_file_bot/bot.py create mode 100644 examples/multi_file_bot/handlers/__init__.py create mode 100644 examples/multi_file_bot/handlers/echo.py create mode 100644 examples/multi_file_bot/handlers/start.py diff --git a/CHANGES/1254.doc.rst b/CHANGES/1254.doc.rst new file mode 100644 index 00000000..ce216fa4 --- /dev/null +++ b/CHANGES/1254.doc.rst @@ -0,0 +1 @@ +This update includes the addition of a multi-file bot example to the repository. diff --git a/examples/multi_file_bot/bot.py b/examples/multi_file_bot/bot.py new file mode 100644 index 00000000..927b52a0 --- /dev/null +++ b/examples/multi_file_bot/bot.py @@ -0,0 +1,32 @@ +import asyncio +import logging +from os import getenv + +from handlers.echo import echo_router +from handlers.start import start_router + +from aiogram import Bot, Dispatcher +from aiogram.enums import ParseMode + +# Bot token can be obtained via https://t.me/BotFather +TOKEN = getenv("BOT_TOKEN") + + +async def main() -> None: + # Dispatcher is a root router + dp = Dispatcher() + # Register all the routers from handlers package + dp.include_routers( + start_router, + echo_router, + ) + + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode=ParseMode.HTML) + # And the run events dispatching + await dp.start_polling(bot) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + asyncio.run(main()) diff --git a/examples/multi_file_bot/handlers/__init__.py b/examples/multi_file_bot/handlers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/multi_file_bot/handlers/echo.py b/examples/multi_file_bot/handlers/echo.py new file mode 100644 index 00000000..4961262c --- /dev/null +++ b/examples/multi_file_bot/handlers/echo.py @@ -0,0 +1,21 @@ +from aiogram import Router +from aiogram.filters import Command +from aiogram.types import Message + +# For each module with handlers we can create a separate router. +echo_router = Router() + + +@echo_router.message() +async def echo_handler(message: Message) -> None: + """ + Handler will forward receive a message back to the sender + + By default, message handler will handle all message types (like a text, photo, sticker etc.) + """ + try: + # Send a copy of the received message + await message.send_copy(chat_id=message.chat.id) + except TypeError: + # But not all the types is supported to be copied so need to handle it + await message.answer("Nice try!") diff --git a/examples/multi_file_bot/handlers/start.py b/examples/multi_file_bot/handlers/start.py new file mode 100644 index 00000000..804268c3 --- /dev/null +++ b/examples/multi_file_bot/handlers/start.py @@ -0,0 +1,18 @@ +from aiogram import Router +from aiogram.filters import Command +from aiogram.types import Message + +start_router = Router() + + +@start_router.message(Command("start")) +async def command_start_handler(message: Message) -> None: + """ + This handler receives messages with `/start` command + """ + # Most event objects have aliases for API methods that can be called in events' context + # For example if you want to answer to incoming message you can use `message.answer(...)` alias + # and the target chat will be passed to :ref:`aiogram.methods.send_message.SendMessage` + # method automatically or call API method directly via + # Bot instance: `bot.send_message(chat_id=message.chat.id, ...)` + await message.answer(f"Hello, {message.from_user.full_name}!") From 4d12e073ee49c3aa89c9ad2284e2eb70e0817705 Mon Sep 17 00:00:00 2001 From: Forden <24463229+Forden@users.noreply.github.com> Date: Sun, 13 Aug 2023 18:05:04 +0300 Subject: [PATCH 069/139] Fix missing message content types (#1252) * Fix missing message content types * Added changelog * Fix black * Update CHANGES/1252.bugfix.rst Co-authored-by: Alex Root Junior * add tests --------- Co-authored-by: Alex Root Junior --- CHANGES/1252.bugfix.rst | 1 + aiogram/types/message.py | 4 ++++ tests/test_api/test_types/test_message.py | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 CHANGES/1252.bugfix.rst diff --git a/CHANGES/1252.bugfix.rst b/CHANGES/1252.bugfix.rst new file mode 100644 index 00000000..640f9228 --- /dev/null +++ b/CHANGES/1252.bugfix.rst @@ -0,0 +1 @@ +Fixed missing message content types (:code:`ContentType.USER_SHARED`, :code:`ContentType.CHAT_SHARED`) diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 610f162c..c8fd7c5a 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -492,6 +492,10 @@ class Message(TelegramObject): return ContentType.VIDEO_CHAT_PARTICIPANTS_INVITED if self.web_app_data: return ContentType.WEB_APP_DATA + if self.user_shared: + return ContentType.USER_SHARED + if self.chat_shared: + return ContentType.CHAT_SHARED return ContentType.UNKNOWN diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 1b15327f..f0a34b09 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -38,6 +38,7 @@ from aiogram.types import ( Animation, Audio, Chat, + ChatShared, Contact, Dice, Document, @@ -62,6 +63,7 @@ from aiogram.types import ( Sticker, SuccessfulPayment, User, + UserShared, Venue, Video, VideoChatEnded, @@ -439,6 +441,20 @@ TEST_FORUM_TOPIC_REOPENED = Message( from_user=User(id=42, is_bot=False, first_name="Test"), forum_topic_reopened=ForumTopicReopened(), ) +TEST_USER_SHARED = Message( + message_id=42, + date=datetime.datetime.now(), + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test"), + user_shared=UserShared(request_id=42, user_id=42), +) +TEST_CHAT_SHARED = Message( + message_id=42, + date=datetime.datetime.now(), + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test"), + chat_shared=ChatShared(request_id=42, chat_id=42), +) TEST_MESSAGE_UNKNOWN = Message( message_id=42, date=datetime.datetime.now(), @@ -498,6 +514,8 @@ class TestMessage: [TEST_FORUM_TOPIC_EDITED, ContentType.FORUM_TOPIC_EDITED], [TEST_FORUM_TOPIC_CLOSED, ContentType.FORUM_TOPIC_CLOSED], [TEST_FORUM_TOPIC_REOPENED, ContentType.FORUM_TOPIC_REOPENED], + [TEST_USER_SHARED, ContentType.USER_SHARED], + [TEST_CHAT_SHARED, ContentType.CHAT_SHARED], [TEST_MESSAGE_UNKNOWN, ContentType.UNKNOWN], ], ) @@ -642,6 +660,8 @@ class TestMessage: [TEST_MESSAGE_VIDEO_CHAT_ENDED, None], [TEST_MESSAGE_VIDEO_CHAT_PARTICIPANTS_INVITED, None], [TEST_MESSAGE_DICE, SendDice], + [TEST_USER_SHARED, None], + [TEST_CHAT_SHARED, None], [TEST_MESSAGE_UNKNOWN, None], ], ) From ac124f5b080ce77efdd0763fcb8d890a06088632 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 13 Aug 2023 22:14:33 +0300 Subject: [PATCH 070/139] Fixed structure of DI docs page, included it in toctree --- docs/dispatcher/dependency_injection.rst | 34 +++++++++++++++++------- docs/dispatcher/index.rst | 1 + 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/docs/dispatcher/dependency_injection.rst b/docs/dispatcher/dependency_injection.rst index 15b7c908..0e7af388 100644 --- a/docs/dispatcher/dependency_injection.rst +++ b/docs/dispatcher/dependency_injection.rst @@ -2,16 +2,23 @@ Dependency injection #################### -Dependency injection is a programming technique that makes a class independent of its dependencies. It achieves that by decoupling the usage of an object from its creation. This helps you to follow `SOLID's `_ dependency inversion and single responsibility principles. +Dependency injection is a programming technique that makes a class independent of its dependencies. +It achieves that by decoupling the usage of an object from its creation. +This helps you to follow `SOLID's `_ dependency +inversion and single responsibility principles. How it works in aiogram ======================= -For each update :class:`Dispatcher` passes handling context data. Filters and middleware can also make changes to the context. -To access contextual data you should specify corresponding keyword parameter in handler or filter. For example, to get :class:`FSMContext` we do it like that: +For each update :class:`aiogram.dispatcher.dispatcher.Dispatcher` passes handling context data. +Filters and middleware can also make changes to the context. + +To access contextual data you should specify corresponding keyword parameter in handler or filter. +For example, to get :class:`aiogram.fsm.context.FSMContext` we do it like that: .. code-block:: python + @router.message(ProfileCompletion.add_photo, F.photo) async def add_photo( message: types.Message, bot: Bot, state: FSMContext @@ -24,33 +31,42 @@ Injecting own dependencies Aiogram provides several ways to complement / modify contextual data. -The first and easiest way is to simply specify the named arguments in :class:`Dispatcher` initialization, polling start methods or :class:`SimpleRequestHandler` initialization if you use webhooks. +The first and easiest way is to simply specify the named arguments in +:class:`aiogram.dispatcher.dispatcher.Dispatcher` initialization, polling start methods +or :class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` initialization if you use webhooks. .. code-block:: python + async def main() -> None: dp = Dispatcher(..., foo=42) return await dp.start_polling( - bot, allowed_updates=dp.resolve_used_update_types(), bar="Bazz" + bot, bar="Bazz" ) + Analogy for webhook: .. code-block:: python + async def main() -> None: dp = Dispatcher(..., foo=42) handler = SimpleRequestHandler(dispatcher=dp, bot=bot, bar="Bazz") ... # starting webhook -:class:`Dispatcher`'s workflow data also can be supplemented by setting values as in a dictionary: + +:class:`aiogram.dispatcher.dispatcher.Dispatcher`'s workflow data also can be supplemented +by setting values as in a dictionary: .. code-block:: python + dp = Dispatcher(...) dp["eggs"] = Spam() + The middlewares updates the context quite often. You can read more about them on this page: -- `Middlewares `__ +- :ref:`Middlewares ` The last way is to return a dictionary from the filter: -.. literalinclude:: ../../../examples/context_addition_from_filter.py +.. literalinclude:: ../../examples/context_addition_from_filter.py -...or using MagicFilter with :code:`as_()` method. (`Read more `__) +...or using :ref:`MagicFilter ` with :code:`.as_(...)` method. diff --git a/docs/dispatcher/index.rst b/docs/dispatcher/index.rst index 73dae308..614721ef 100644 --- a/docs/dispatcher/index.rst +++ b/docs/dispatcher/index.rst @@ -34,3 +34,4 @@ So, you can use both of them with *aiogram*. errors long_polling webhook + dependency_injection From 0cec7d4933b5b00f50d39aa5917f63c9c7b9408f Mon Sep 17 00:00:00 2001 From: nullmatawasoradesu <119107850+wakaree@users.noreply.github.com> Date: Sun, 13 Aug 2023 22:41:56 +0300 Subject: [PATCH 071/139] Migration FAQ supplement (Finite State Machine) (#1264) * Updated Migration FAQ > Finite State Machine * Fixed typos, added changelog * Fixed typo x2 --- CHANGES/1264.doc.rst | 1 + docs/migration_2_to_3.rst | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 CHANGES/1264.doc.rst diff --git a/CHANGES/1264.doc.rst b/CHANGES/1264.doc.rst new file mode 100644 index 00000000..1564244f --- /dev/null +++ b/CHANGES/1264.doc.rst @@ -0,0 +1 @@ +Supplemented "Finite State Machine" section in Migration FAQ diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index 483f4f8d..8a42fa5e 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -112,6 +112,13 @@ Finite State machine - State filter will no more added to all handlers, you will need to specify state if you want - Added possibility to change FSM strategy, for example if you want to control state for each user in chat topics instead of user in chat you can specify it in the Dispatcher. +- Now :class:`aiogram.fsm.state.State` and :class:`aiogram.fsm.state.StateGroup` don't have helper + methods like :code:`.set()`, :code:`.next()`, etc. + + Instead of this you should set states by passing them directly to + :class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `) +- State proxy is deprecated, you should update the state data by calling + :code:`state.set_data(...)` and :code:`state.get_data()` respectively. Sending Files From 3facba2730ed92ed466de39623afb490d656b1d3 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 14 Aug 2023 01:34:24 +0300 Subject: [PATCH 072/139] Remove bad file --- CHANGES/1256.doc.rst | 3 ++- CHANGES/5780.doc.rst | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 CHANGES/5780.doc.rst diff --git a/CHANGES/1256.doc.rst b/CHANGES/1256.doc.rst index 2b8af247..986cd892 100644 --- a/CHANGES/1256.doc.rst +++ b/CHANGES/1256.doc.rst @@ -1 +1,2 @@ -Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. +Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown +beautification's for a more user-friendly display. diff --git a/CHANGES/5780.doc.rst b/CHANGES/5780.doc.rst deleted file mode 100644 index 2b8af247..00000000 --- a/CHANGES/5780.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown beautifications for a more user-friendly display. From 8ff992bf1d80940bf302586a792463b8a8389d3f Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 14 Aug 2023 22:18:11 +0300 Subject: [PATCH 073/139] Content from global filters (#1267) * Move global filters check placement into router to add chance to pass context from global filters into handlers in the same way as it possible in other places * Added changelog --- CHANGES/1266.bugfix.rst | 2 ++ aiogram/dispatcher/event/telegram.py | 11 ++++------- aiogram/dispatcher/router.py | 11 ++++++++++- examples/context_addition_from_filter.py | 5 +---- examples/multibot.py | 2 +- tests/test_dispatcher/test_event/test_telegram.py | 9 +++++---- 6 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 CHANGES/1266.bugfix.rst diff --git a/CHANGES/1266.bugfix.rst b/CHANGES/1266.bugfix.rst new file mode 100644 index 00000000..55f0cfc6 --- /dev/null +++ b/CHANGES/1266.bugfix.rst @@ -0,0 +1,2 @@ +Moved global filters check placement into router to add chance to pass context from global filters +into handlers in the same way as it possible in other places diff --git a/aiogram/dispatcher/event/telegram.py b/aiogram/dispatcher/event/telegram.py index a468816c..cb4039c7 100644 --- a/aiogram/dispatcher/event/telegram.py +++ b/aiogram/dispatcher/event/telegram.py @@ -101,17 +101,14 @@ class TelegramEventObserver: ) return wrapped_outer(event, data) + def check_root_filters(self, event: TelegramObject, **kwargs: Any) -> Any: + return self._handler.check(event, **kwargs) + async def trigger(self, event: TelegramObject, **kwargs: Any) -> Any: """ Propagate event to handlers and stops propagation on first match. - Handler will be called when all its filters is pass. + Handler will be called when all its filters are pass. """ - # Check globally defined filters before any other handler will be checked - result, data = await self._handler.check(event, **kwargs) - if not result: - return REJECTED - kwargs.update(data) - for handler in self.handlers: result, data = await handler.check(event, **kwargs) if result: diff --git a/aiogram/dispatcher/router.py b/aiogram/dispatcher/router.py index 423b7173..4dd4284f 100644 --- a/aiogram/dispatcher/router.py +++ b/aiogram/dispatcher/router.py @@ -125,8 +125,17 @@ class Router: ) -> Any: response = UNHANDLED if observer: + # Check globally defined filters before any other handler will be checked. + # This check is placed here instead of `trigger` method to add possibility + # to pass context to handlers from global filters. + result, data = await observer.check_root_filters(event, **kwargs) + if not result: + return UNHANDLED + kwargs.update(data) + response = await observer.trigger(event, **kwargs) - if response is REJECTED: + if response is REJECTED: # pragma: no cover + # Possible only if some handler returns REJECTED return UNHANDLED if response is not UNHANDLED: return response diff --git a/examples/context_addition_from_filter.py b/examples/context_addition_from_filter.py index e4eca517..40338940 100644 --- a/examples/context_addition_from_filter.py +++ b/examples/context_addition_from_filter.py @@ -4,7 +4,6 @@ from aiogram import Router from aiogram.filters import Filter from aiogram.types import Message, User - router = Router(name=__name__) @@ -28,6 +27,4 @@ class HelloFilter(Filter): async def my_handler( message: Message, name: str # Now we can accept "name" as named parameter ) -> Any: - return message.answer( - "Hello, {name}!".format(name=name) - ) + return message.answer("Hello, {name}!".format(name=name)) diff --git a/examples/multibot.py b/examples/multibot.py index 82fac4a1..d5dbe5fc 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -4,6 +4,7 @@ from os import getenv from typing import Any, Dict, Union from aiohttp import web +from finite_state_machine import form_router from aiogram import Bot, Dispatcher, F, Router from aiogram.client.session.aiohttp import AiohttpSession @@ -18,7 +19,6 @@ from aiogram.webhook.aiohttp_server import ( TokenBasedRequestHandler, setup_application, ) -from finite_state_machine import form_router main_router = Router() diff --git a/tests/test_dispatcher/test_event/test_telegram.py b/tests/test_dispatcher/test_event/test_telegram.py index 973fa17c..8976b2ff 100644 --- a/tests/test_dispatcher/test_event/test_telegram.py +++ b/tests/test_dispatcher/test_event/test_telegram.py @@ -5,7 +5,7 @@ from typing import Any, Dict, NoReturn, Optional, Union import pytest from pydantic import BaseModel -from aiogram.dispatcher.event.bases import REJECTED, SkipHandler +from aiogram.dispatcher.event.bases import SkipHandler, UNHANDLED from aiogram.dispatcher.event.handler import HandlerObject from aiogram.dispatcher.event.telegram import TelegramEventObserver from aiogram.dispatcher.router import Router @@ -13,6 +13,7 @@ from aiogram.exceptions import UnsupportedKeywordArgument from aiogram.filters import Filter from aiogram.types import Chat, Message, User + # TODO: Test middlewares in routers tree @@ -220,8 +221,8 @@ class TestTelegramEventObserver: r1.message.register(handler) r2.message.register(handler) - assert await r1.message.trigger(None) is REJECTED - assert await r2.message.trigger(None) is None + assert await r1.propagate_event("message", None) is UNHANDLED + assert await r2.propagate_event("message", None) is None async def test_global_filter_in_nested_router(self): r1 = Router() @@ -234,4 +235,4 @@ class TestTelegramEventObserver: r1.message.filter(lambda evt: False) r2.message.register(handler) - assert await r1.message.trigger(None) is REJECTED + assert await r1.message.trigger(None) is UNHANDLED From 16649ec896eac5e5e746ae9f24946b9f43cd6d5b Mon Sep 17 00:00:00 2001 From: Danipulok <45077699+Danipulok@users.noreply.github.com> Date: Mon, 14 Aug 2023 23:43:44 +0300 Subject: [PATCH 074/139] Add error handling example (#1099) * Add error handling example * Add `ExceptionMessageFilter` usage * Add `CHANGES` * Update CHANGES/1099.doc.rst --------- Co-authored-by: Alex Root Junior --- CHANGES/1099.doc.rst | 1 + examples/error_handling.py | 105 +++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 CHANGES/1099.doc.rst create mode 100644 examples/error_handling.py diff --git a/CHANGES/1099.doc.rst b/CHANGES/1099.doc.rst new file mode 100644 index 00000000..74064656 --- /dev/null +++ b/CHANGES/1099.doc.rst @@ -0,0 +1 @@ +Added error handling example `examples/error_handling.py` diff --git a/examples/error_handling.py b/examples/error_handling.py new file mode 100644 index 00000000..72ab8e34 --- /dev/null +++ b/examples/error_handling.py @@ -0,0 +1,105 @@ +import asyncio +import html +import logging + +from aiogram import Bot, Dispatcher, types +from aiogram.filters import Command, CommandObject, ExceptionMessageFilter, ExceptionTypeFilter +from aiogram.types import ErrorEvent + +TOKEN = "42:TOKEN" + +dp = Dispatcher() + +logger = logging.getLogger(__name__) + + +class InvalidAge(Exception): + pass + + +class InvalidName(Exception): + def __init__(self, message: str): + super().__init__(message) + + +@dp.errors(ExceptionTypeFilter(InvalidAge)) +async def handle_invalid_age_exception(event: ErrorEvent, bot: Bot) -> None: + """ + This handler receives only error events with `InvalidAge` exception type. + """ + # To get the original event that caused the exception you can use `event.update` property. + # In this case it will be `Message` object. + # To get the exception itself you can use `event.exception` property. + # In this case we filter errors, so we can be sure `event.exception` is an `InvalidAge` object. + assert isinstance(event.exception, InvalidAge) + logger.error("Error caught: %r while processing %r", event.exception, event.update) + + assert event.update.message is not None + chat_id = event.update.message.chat.id + + # Bot instance is passed to the handler as a keyword argument. + # We can use `bot.send_message` method to send a message to the user, logging the error. + text = f"Error caught: {html.escape(repr(event.exception))}" + await bot.send_message(chat_id=chat_id, text=text) + + +@dp.errors(ExceptionMessageFilter("Invalid")) +async def handle_invalid_exceptions(event: ErrorEvent) -> None: + """ + This handler receives error events with "Invalid" message in them. + """ + # Because we specified `ExceptionTypeFilter` with `InvalidAge` exception type earlier, + # this handler will receive error events with any exception type except `InvalidAge` and + # only if the exception message contains "Invalid" substring. + logger.error("Error `Invalid` caught: %r while processing %r", event.exception, event.update) + + +@dp.message(Command(commands=["age"])) +async def handle_set_age(message: types.Message, command: CommandObject) -> None: + """ + This handler receives only messages with `/age` command. + + If the user sends a message with `/age` command, but the age is invalid, + the `InvalidAge` exception will be raised and the `handle_invalid_age_exception` + handler will be called. + """ + # To get the command object you can use `command` keyword argument with `CommandObject` type. + # To get the command arguments you can use `command.args` property. + age = command.args + if not age: + raise InvalidAge("No age provided. Please provide your age as a command argument.") + + # If the age is invalid, raise an exception. + if not age.isdigit(): + raise InvalidAge("Age should be a number") + + # If the age is valid, send a message to the user. + age = int(age) + await message.reply(text=f"Your age is {age}") + + +@dp.message(Command(commands=["name"])) +async def handle_set_name(message: types.Message, command: CommandObject) -> None: + """ + This handler receives only messages with `/name` command. + """ + # To get the command object you can use `command` keyword argument with `CommandObject` type. + # To get the command arguments you can use `command.args` property. + name = command.args + if not name: + raise InvalidName("Invalid name. Please provide your name as a command argument.") + + # If the name is valid, send a message to the user. + await message.reply(text=f"Your name is {name}") + + +async def main() -> None: + # Initialize Bot instance with a default parse mode which will be passed to all API calls + bot = Bot(TOKEN, parse_mode="HTML") + # And the run events dispatching + await dp.start_polling(bot) + + +if __name__ == "__main__": + loop = asyncio.new_event_loop() + loop.run_until_complete(main()) From 2093b45799d22853951a1769162d0e2b75befcfa Mon Sep 17 00:00:00 2001 From: nullmatawasoradesu <119107850+wakaree@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:23:10 +0300 Subject: [PATCH 075/139] Fixed some typos in documentation (#1268) * Fixed typo in i18n documentation * Removed extra param in docstring of TelegramEventObserver's filter method * Added changelog --- CHANGES/1268.doc.rst | 2 ++ aiogram/dispatcher/event/telegram.py | 1 - docs/utils/i18n.rst | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1268.doc.rst diff --git a/CHANGES/1268.doc.rst b/CHANGES/1268.doc.rst new file mode 100644 index 00000000..0651fd0f --- /dev/null +++ b/CHANGES/1268.doc.rst @@ -0,0 +1,2 @@ +Removed extra param in docstring of TelegramEventObserver's filter method +and fixed typo in I18n documentation. diff --git a/aiogram/dispatcher/event/telegram.py b/aiogram/dispatcher/event/telegram.py index cb4039c7..4a370074 100644 --- a/aiogram/dispatcher/event/telegram.py +++ b/aiogram/dispatcher/event/telegram.py @@ -40,7 +40,6 @@ class TelegramEventObserver: Register filter for all handlers of this event observer :param filters: positional filters - :param bound_filters: keyword filters """ if self._handler.filters is None: self._handler.filters = [] diff --git a/docs/utils/i18n.rst b/docs/utils/i18n.rst index cbaeed1e..6a17cc4c 100644 --- a/docs/utils/i18n.rst +++ b/docs/utils/i18n.rst @@ -63,7 +63,7 @@ Also if you want to use translated string in keyword- or magic- filters you will from aiogram import F from aiogram.utils.i18n import lazy_gettext as __ - @router.message(F.text.lower() == __("My menu entry")) + @router.message(F.text == __("My menu entry")) ... From d0d0ff1be0b52386786a2fec4a1d0cf0d68e92f4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 16 Aug 2023 20:43:18 +0300 Subject: [PATCH 076/139] Update a warning message in dispatcher (#1269) * Update a warning message in dispatcher Enhanced the warning message in aiogram/dispatcher/dispatcher.py to include a JSON dump of the update. This change helps to give clearer and more detailed information on why an update type is unknown by including the specifics of what the update contains. * Added changelog --- CHANGES/1269.misc.rst | 1 + aiogram/dispatcher/dispatcher.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1269.misc.rst diff --git a/CHANGES/1269.misc.rst b/CHANGES/1269.misc.rst new file mode 100644 index 00000000..c91b7ac3 --- /dev/null +++ b/CHANGES/1269.misc.rst @@ -0,0 +1 @@ +Enhanced the warning message in dispatcher to include a JSON dump of the update when update type is not known. diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index f85c91d4..827b300a 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -264,7 +264,8 @@ class Dispatcher(Router): warnings.warn( "Detected unknown update type.\n" "Seems like Telegram Bot API was updated and you have " - "installed not latest version of aiogram framework", + "installed not latest version of aiogram framework" + f"\nUpdate: {update.model_dump_json(exclude_unset=True)}", RuntimeWarning, ) raise SkipHandler() from e From 5b17bd4393cd8648fbcedc03e802639de06d6e12 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 16 Aug 2023 22:00:11 +0300 Subject: [PATCH 077/139] Added CLI as extra dependency --- pyproject.toml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6cd53590..ee424cf8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,9 @@ proxy = [ i18n = [ "Babel~=2.12.1", ] +cli = [ + "aiogram-cli~=1.0", +] test = [ "pytest~=7.4.0", "pytest-html~=3.2.0", @@ -114,6 +117,7 @@ features = [ "redis", "proxy", "i18n", + "cli", ] post-install-commands = [ "pre-commit install", @@ -133,6 +137,7 @@ features = [ "proxy", "i18n", "docs", + "cli", ] [tool.hatch.envs.docs.scripts] serve = "sphinx-autobuild --watch aiogram/ --watch CHANGELOG.rst --watch README.rst docs/ docs/_build/ {args}" @@ -146,9 +151,10 @@ features = [ "proxy", "i18n", "test", + "cli", ] extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22" + "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22", ] [tool.hatch.envs.dev.scripts] @@ -165,6 +171,7 @@ features = [ "proxy", "i18n", "test", + "cli", ] [tool.hatch.envs.test.scripts] From 5a140988039ff08e06a3d267e1df858074f1f689 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Fri, 18 Aug 2023 12:06:13 +0300 Subject: [PATCH 078/139] Add contributing support for zsh and win (#1272) * fix: add support for zsh and win * docs: add both install commands (win,lin,mac) * fix: some typos * docs: update win cmd examples --- docs/contributing.rst | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/docs/contributing.rst b/docs/contributing.rst index a0a80181..a4a3b8e0 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -35,34 +35,33 @@ be able to install packages into that isolated environment. Activate the environment ------------------------ -Linux/ macOS: +Linux / macOS: .. code-block:: bash source .venv/bin/activate -Windows PoweShell +Windows cmd -.. code-block:: powershell +.. code-block:: text - .\.venv\Scripts\Activate.ps1 - -To check it worked, use described command, it should show the :code:`pip` location inside -the isolated environment - -Linux, macOS: - -.. code-block:: - - which pip + .\.venv\Scripts\activate Windows PowerShell +.. code-block:: powershell + + .\.venv\Scripts\activate.ps1 + +To check it worked, use described command, it should show the :code:`pip` version and location +inside the isolated environment + .. code-block:: - Get-Command pip + pip -V -Also make you shure you have the latest pip version in your virtual environment to avoid + +Also make sure you have the latest pip version in your virtual environment to avoid errors on next steps: .. code-block:: @@ -73,7 +72,15 @@ errors on next steps: Setup project ------------- -After activating the environment install `aiogram` from sources and their dependencies: +After activating the environment install `aiogram` from sources and their dependencies. + +Linux / macOS: + +.. code-block:: bash + + pip install -e ."[dev,test,docs,fast,redis,proxy,i18n]" + +Windows: .. code-block:: bash From bc0932a745f5061b56005a237cfadf29de70babf Mon Sep 17 00:00:00 2001 From: Oleg A Date: Fri, 18 Aug 2023 16:51:41 +0300 Subject: [PATCH 079/139] Support wider pydantic version (#1273) * chore: make pydantic version wider * fix: > instead ^ * chore: pydantic till v3 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ee424cf8..6714e819 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ classifiers = [ dependencies = [ "magic-filter~=1.0", "aiohttp~=3.8.5", - "pydantic~=2.1.1", + "pydantic>=2.1.1,<3", "aiofiles~=23.1.0", "certifi>=2023.7.22", ] From 678b3cfe7d22822a446b95e644b17ec31e2ee29c Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 18 Aug 2023 20:18:05 +0300 Subject: [PATCH 080/139] Bot API 6.8 (#1276) * Prepare for Bot API 6.8 * Bump after public release * Bump version, added changelog --- .apiversion | 2 +- .../entity.json | 25 +++++++ .butcher/schema/schema.json | 69 ++++++++++++++++--- .butcher/types/Chat/aliases.yml | 4 ++ .butcher/types/Chat/entity.json | 8 +++ .butcher/types/Chat/replace.yml | 5 ++ .butcher/types/Message/entity.json | 8 +++ .butcher/types/Message/replace.yml | 4 ++ .butcher/types/PollAnswer/entity.json | 22 ++++-- .butcher/types/Story/entity.json | 16 +++++ CHANGES/1275.misc.rst | 1 + README.rst | 2 +- aiogram/__meta__.py | 2 +- aiogram/client/bot.py | 21 ++++++ aiogram/enums/content_type.py | 1 + aiogram/methods/__init__.py | 2 + .../unpin_all_general_forum_topic_messages.py | 30 ++++++++ aiogram/types/__init__.py | 2 + aiogram/types/chat.py | 31 +++++++++ aiogram/types/message.py | 11 ++- aiogram/types/poll_answer.py | 20 ++++-- aiogram/types/story.py | 9 +++ docs/api/methods/index.rst | 1 + ...unpin_all_general_forum_topic_messages.rst | 51 ++++++++++++++ docs/api/types/index.rst | 1 + docs/api/types/story.rst | 10 +++ ..._unpin_all_general_forum_topic_messages.py | 15 ++++ tests/test_api/test_types/test_chat.py | 6 ++ tests/test_api/test_types/test_message.py | 11 +++ 29 files changed, 363 insertions(+), 27 deletions(-) create mode 100644 .butcher/methods/unpinAllGeneralForumTopicMessages/entity.json create mode 100644 .butcher/types/Chat/replace.yml create mode 100644 .butcher/types/Story/entity.json create mode 100644 CHANGES/1275.misc.rst create mode 100644 aiogram/methods/unpin_all_general_forum_topic_messages.py create mode 100644 aiogram/types/story.py create mode 100644 docs/api/methods/unpin_all_general_forum_topic_messages.rst create mode 100644 docs/api/types/story.rst create mode 100644 tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py diff --git a/.apiversion b/.apiversion index 341291e5..21afad37 100644 --- a/.apiversion +++ b/.apiversion @@ -1 +1 @@ -6.7 +6.8 diff --git a/.butcher/methods/unpinAllGeneralForumTopicMessages/entity.json b/.butcher/methods/unpinAllGeneralForumTopicMessages/entity.json new file mode 100644 index 00000000..c6130087 --- /dev/null +++ b/.butcher/methods/unpinAllGeneralForumTopicMessages/entity.json @@ -0,0 +1,25 @@ +{ + "meta": {}, + "group": { + "title": "Available methods", + "anchor": "available-methods" + }, + "object": { + "anchor": "unpinallgeneralforumtopicmessages", + "name": "unpinAllGeneralForumTopicMessages", + "description": "Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the can_pin_messages administrator right in the supergroup. Returns True on success.", + "html_description": "

Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the can_pin_messages administrator right in the supergroup. Returns True on success.

", + "rst_description": "Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the *can_pin_messages* administrator right in the supergroup. Returns :code:`True` on success.", + "annotations": [ + { + "type": "Integer or String", + "required": true, + "description": "Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)", + "html_description": "Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)", + "rst_description": "Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)\n", + "name": "chat_id" + } + ], + "category": "methods" + } +} diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json index fa7a76d3..d4ec9ad1 100644 --- a/.butcher/schema/schema.json +++ b/.butcher/schema/schema.json @@ -1,7 +1,7 @@ { "api": { - "version": "6.7", - "release_date": "2023-04-21" + "version": "6.8", + "release_date": "2023-08-18" }, "items": [ { @@ -547,6 +547,14 @@ "name": "emoji_status_custom_emoji_id", "required": false }, + { + "type": "Integer", + "description": "Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", + "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", + "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", + "name": "emoji_status_expiration_date", + "required": false + }, { "type": "String", "description": "Bio of the other party in a private chat. Returned only in getChat.", @@ -917,6 +925,14 @@ "name": "sticker", "required": false }, + { + "type": "Story", + "description": "Message is a forwarded story", + "html_description": "Optional. Message is a forwarded story", + "rst_description": "*Optional*. Message is a forwarded story\n", + "name": "story", + "required": false + }, { "type": "Video", "description": "Message is a video, information about the video", @@ -1628,6 +1644,15 @@ ], "category": "types" }, + { + "anchor": "story", + "name": "Story", + "description": "This object represents a message about a forwarded story in the chat. Currently holds no information.", + "html_description": "

This object represents a message about a forwarded story in the chat. Currently holds no information.

", + "rst_description": "This object represents a message about a forwarded story in the chat. Currently holds no information.", + "annotations": [], + "category": "types" + }, { "anchor": "video", "name": "Video", @@ -1935,19 +1960,27 @@ "name": "poll_id", "required": true }, + { + "type": "Chat", + "description": "The chat that changed the answer to the poll, if the voter is anonymous", + "html_description": "Optional. The chat that changed the answer to the poll, if the voter is anonymous", + "rst_description": "*Optional*. The chat that changed the answer to the poll, if the voter is anonymous\n", + "name": "voter_chat", + "required": false + }, { "type": "User", - "description": "The user, who changed the answer to the poll", - "html_description": "The user, who changed the answer to the poll", - "rst_description": "The user, who changed the answer to the poll\n", + "description": "The user that changed the answer to the poll, if the voter isn't anonymous", + "html_description": "Optional. The user that changed the answer to the poll, if the voter isn't anonymous", + "rst_description": "*Optional*. The user that changed the answer to the poll, if the voter isn't anonymous\n", "name": "user", - "required": true + "required": false }, { "type": "Array of Integer", - "description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.", - "html_description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.", - "rst_description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.\n", + "description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.", + "html_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.", + "rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n", "name": "option_ids", "required": true } @@ -7945,6 +7978,24 @@ ], "category": "methods" }, + { + "anchor": "unpinallgeneralforumtopicmessages", + "name": "unpinAllGeneralForumTopicMessages", + "description": "Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the can_pin_messages administrator right in the supergroup. Returns True on success.", + "html_description": "

Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the can_pin_messages administrator right in the supergroup. Returns True on success.

", + "rst_description": "Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the *can_pin_messages* administrator right in the supergroup. Returns :code:`True` on success.", + "annotations": [ + { + "type": "Integer or String", + "required": true, + "description": "Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)", + "html_description": "Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)", + "rst_description": "Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)\n", + "name": "chat_id" + } + ], + "category": "methods" + }, { "anchor": "answercallbackquery", "name": "answerCallbackQuery", diff --git a/.butcher/types/Chat/aliases.yml b/.butcher/types/Chat/aliases.yml index 4538f7e1..89b5843c 100644 --- a/.butcher/types/Chat/aliases.yml +++ b/.butcher/types/Chat/aliases.yml @@ -106,3 +106,7 @@ delete_photo: set_photo: method: setChatPhoto fill: *self + +unpin_all_general_forum_topic_messages: + method: unpinAllGeneralForumTopicMessages + fill: *self diff --git a/.butcher/types/Chat/entity.json b/.butcher/types/Chat/entity.json index 7aa42c18..4bc1fb60 100644 --- a/.butcher/types/Chat/entity.json +++ b/.butcher/types/Chat/entity.json @@ -91,6 +91,14 @@ "name": "emoji_status_custom_emoji_id", "required": false }, + { + "type": "Integer", + "description": "Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", + "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", + "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", + "name": "emoji_status_expiration_date", + "required": false + }, { "type": "String", "description": "Bio of the other party in a private chat. Returned only in getChat.", diff --git a/.butcher/types/Chat/replace.yml b/.butcher/types/Chat/replace.yml new file mode 100644 index 00000000..93d76533 --- /dev/null +++ b/.butcher/types/Chat/replace.yml @@ -0,0 +1,5 @@ +annotations: + emoji_status_expiration_date: + parsed_type: + type: std + name: datetime.datetime diff --git a/.butcher/types/Message/entity.json b/.butcher/types/Message/entity.json index cd5e27cb..ef639796 100644 --- a/.butcher/types/Message/entity.json +++ b/.butcher/types/Message/entity.json @@ -227,6 +227,14 @@ "name": "sticker", "required": false }, + { + "type": "Story", + "description": "Message is a forwarded story", + "html_description": "Optional. Message is a forwarded story", + "rst_description": "*Optional*. Message is a forwarded story\n", + "name": "story", + "required": false + }, { "type": "Video", "description": "Message is a video, information about the video", diff --git a/.butcher/types/Message/replace.yml b/.butcher/types/Message/replace.yml index 9a3a2842..93a8f17e 100644 --- a/.butcher/types/Message/replace.yml +++ b/.butcher/types/Message/replace.yml @@ -3,3 +3,7 @@ annotations: parsed_type: type: std name: datetime.datetime + forward_date: + parsed_type: + type: std + name: datetime.datetime diff --git a/.butcher/types/PollAnswer/entity.json b/.butcher/types/PollAnswer/entity.json index 9081b30c..3b14d6dc 100644 --- a/.butcher/types/PollAnswer/entity.json +++ b/.butcher/types/PollAnswer/entity.json @@ -19,19 +19,27 @@ "name": "poll_id", "required": true }, + { + "type": "Chat", + "description": "The chat that changed the answer to the poll, if the voter is anonymous", + "html_description": "Optional. The chat that changed the answer to the poll, if the voter is anonymous", + "rst_description": "*Optional*. The chat that changed the answer to the poll, if the voter is anonymous\n", + "name": "voter_chat", + "required": false + }, { "type": "User", - "description": "The user, who changed the answer to the poll", - "html_description": "The user, who changed the answer to the poll", - "rst_description": "The user, who changed the answer to the poll\n", + "description": "The user that changed the answer to the poll, if the voter isn't anonymous", + "html_description": "Optional. The user that changed the answer to the poll, if the voter isn't anonymous", + "rst_description": "*Optional*. The user that changed the answer to the poll, if the voter isn't anonymous\n", "name": "user", - "required": true + "required": false }, { "type": "Array of Integer", - "description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.", - "html_description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.", - "rst_description": "0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.\n", + "description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.", + "html_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.", + "rst_description": "0-based identifiers of chosen answer options. May be empty if the vote was retracted.\n", "name": "option_ids", "required": true } diff --git a/.butcher/types/Story/entity.json b/.butcher/types/Story/entity.json new file mode 100644 index 00000000..77ab9bea --- /dev/null +++ b/.butcher/types/Story/entity.json @@ -0,0 +1,16 @@ +{ + "meta": {}, + "group": { + "title": "Available types", + "anchor": "available-types" + }, + "object": { + "anchor": "story", + "name": "Story", + "description": "This object represents a message about a forwarded story in the chat. Currently holds no information.", + "html_description": "

This object represents a message about a forwarded story in the chat. Currently holds no information.

", + "rst_description": "This object represents a message about a forwarded story in the chat. Currently holds no information.", + "annotations": [], + "category": "types" + } +} diff --git a/CHANGES/1275.misc.rst b/CHANGES/1275.misc.rst new file mode 100644 index 00000000..581fe321 --- /dev/null +++ b/CHANGES/1275.misc.rst @@ -0,0 +1 @@ +Added support for `Bot API 6.8 `_ diff --git a/README.rst b/README.rst index 7c66c6e2..8975139c 100644 --- a/README.rst +++ b/README.rst @@ -52,7 +52,7 @@ Features - Asynchronous (`asyncio docs `_, :pep:`492`) - Has type hints (:pep:`484`) and can be used with `mypy `_ - Supports `PyPy `_ -- Supports `Telegram Bot API 6.7 `_ and gets fast updates to the latest versions of the Bot API +- Supports `Telegram Bot API 6.8 `_ and gets fast updates to the latest versions of the Bot API - Telegram Bot API integration code was `autogenerated `_ and can be easily re-generated when API gets updated - Updates router (Blueprints) - Has Finite State Machine diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 97342ec3..24e07b53 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ __version__ = "3.0.0rc2" -__api_version__ = "6.7" +__api_version__ = "6.8" diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index b7cda3ea..1bf48356 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -134,6 +134,7 @@ from ..methods import ( UnhideGeneralForumTopic, UnpinAllChatMessages, UnpinAllForumTopicMessages, + UnpinAllGeneralForumTopicMessages, UnpinChatMessage, UploadStickerFile, ) @@ -4086,3 +4087,23 @@ class Bot: language_code=language_code, ) return await self(call, request_timeout=request_timeout) + + async def unpin_all_general_forum_topic_messages( + self, + chat_id: Union[int, str], + request_timeout: Optional[int] = None, + ) -> bool: + """ + Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the *can_pin_messages* administrator right in the supergroup. Returns :code:`True` on success. + + Source: https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages + + :param chat_id: Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`) + :param request_timeout: Request timeout + :return: Returns :code:`True` on success. + """ + + call = UnpinAllGeneralForumTopicMessages( + chat_id=chat_id, + ) + return await self(call, request_timeout=request_timeout) diff --git a/aiogram/enums/content_type.py b/aiogram/enums/content_type.py index 52a9bfed..d34d878e 100644 --- a/aiogram/enums/content_type.py +++ b/aiogram/enums/content_type.py @@ -14,6 +14,7 @@ class ContentType(str, Enum): DOCUMENT = "document" PHOTO = "photo" STICKER = "sticker" + STORY = "story" VIDEO = "video" VIDEO_NOTE = "video_note" VOICE = "voice" diff --git a/aiogram/methods/__init__.py b/aiogram/methods/__init__.py index fd887d7e..32909f4a 100644 --- a/aiogram/methods/__init__.py +++ b/aiogram/methods/__init__.py @@ -110,6 +110,7 @@ from .unban_chat_sender_chat import UnbanChatSenderChat from .unhide_general_forum_topic import UnhideGeneralForumTopic from .unpin_all_chat_messages import UnpinAllChatMessages from .unpin_all_forum_topic_messages import UnpinAllForumTopicMessages +from .unpin_all_general_forum_topic_messages import UnpinAllGeneralForumTopicMessages from .unpin_chat_message import UnpinChatMessage from .upload_sticker_file import UploadStickerFile @@ -228,6 +229,7 @@ __all__ = ( "UnhideGeneralForumTopic", "UnpinAllChatMessages", "UnpinAllForumTopicMessages", + "UnpinAllGeneralForumTopicMessages", "UnpinChatMessage", "UploadStickerFile", ) diff --git a/aiogram/methods/unpin_all_general_forum_topic_messages.py b/aiogram/methods/unpin_all_general_forum_topic_messages.py new file mode 100644 index 00000000..be76c198 --- /dev/null +++ b/aiogram/methods/unpin_all_general_forum_topic_messages.py @@ -0,0 +1,30 @@ +from typing import TYPE_CHECKING, Any, Union + +from aiogram.methods import TelegramMethod + + +class UnpinAllGeneralForumTopicMessages(TelegramMethod[bool]): + """ + Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the *can_pin_messages* administrator right in the supergroup. Returns :code:`True` on success. + + Source: https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages + """ + + __returning__ = bool + __api_method__ = "unpinAllGeneralForumTopicMessages" + + chat_id: Union[int, str] + """Unique identifier for the target chat or username of the target supergroup (in the format :code:`@supergroupusername`)""" + + if TYPE_CHECKING: + # DO NOT EDIT MANUALLY!!! + # This section was auto-generated via `butcher` + + def __init__( + __pydantic__self__, *, chat_id: Union[int, str], **__pydantic_kwargs: Any + ) -> None: + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + # Is needed only for type checking and IDE support without any additional plugins + + super().__init__(chat_id=chat_id, **__pydantic_kwargs) diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index a669cbe8..bf9c02ee 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -140,6 +140,7 @@ from .shipping_option import ShippingOption from .shipping_query import ShippingQuery from .sticker import Sticker from .sticker_set import StickerSet +from .story import Story from .successful_payment import SuccessfulPayment from .switch_inline_query_chosen_chat import SwitchInlineQueryChosenChat from .update import Update @@ -298,6 +299,7 @@ __all__ = ( "ShippingQuery", "Sticker", "StickerSet", + "Story", "SuccessfulPayment", "SwitchInlineQueryChosenChat", "TelegramObject", diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 6c36ae5a..2046eca8 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -34,6 +34,7 @@ if TYPE_CHECKING: UnbanChatSenderChat, UnpinAllChatMessages, UnpinChatMessage, + UnpinAllGeneralForumTopicMessages, ) from .chat_location import ChatLocation from .chat_permissions import ChatPermissions @@ -69,6 +70,8 @@ class Chat(TelegramObject): """*Optional*. If non-empty, the list of all `active chat usernames `_; for private chats, supergroups and channels. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" emoji_status_custom_emoji_id: Optional[str] = None """*Optional*. Custom emoji identifier of emoji status of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" + emoji_status_expiration_date: Optional[datetime.datetime] = None + """*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" bio: Optional[str] = None """*Optional*. Bio of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" has_private_forwards: Optional[bool] = None @@ -123,6 +126,7 @@ class Chat(TelegramObject): photo: Optional[ChatPhoto] = None, active_usernames: Optional[List[str]] = None, emoji_status_custom_emoji_id: Optional[str] = None, + emoji_status_expiration_date: Optional[datetime.datetime] = None, bio: Optional[str] = None, has_private_forwards: Optional[bool] = None, has_restricted_voice_and_video_messages: Optional[bool] = None, @@ -158,6 +162,7 @@ class Chat(TelegramObject): photo=photo, active_usernames=active_usernames, emoji_status_custom_emoji_id=emoji_status_custom_emoji_id, + emoji_status_expiration_date=emoji_status_expiration_date, bio=bio, has_private_forwards=has_private_forwards, has_restricted_voice_and_video_messages=has_restricted_voice_and_video_messages, @@ -1082,3 +1087,29 @@ class Chat(TelegramObject): photo=photo, **kwargs, ).as_(self._bot) + + def unpin_all_general_forum_topic_messages( + self, + **kwargs: Any, + ) -> UnpinAllGeneralForumTopicMessages: + """ + Shortcut for method :class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages` + will automatically fill method attributes: + + - :code:`chat_id` + + Use this method to clear the list of pinned messages in a General forum topic. The bot must be an administrator in the chat for this to work and must have the *can_pin_messages* administrator right in the supergroup. Returns :code:`True` on success. + + Source: https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages + + :return: instance of method :class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages` + """ + # DO NOT EDIT MANUALLY!!! + # This method was auto-generated via `butcher` + + from aiogram.methods import UnpinAllGeneralForumTopicMessages + + return UnpinAllGeneralForumTopicMessages( + chat_id=self.id, + **kwargs, + ).as_(self._bot) diff --git a/aiogram/types/message.py b/aiogram/types/message.py index c8fd7c5a..7e9c282a 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -84,6 +84,7 @@ if TYPE_CHECKING: from .reply_keyboard_markup import ReplyKeyboardMarkup from .reply_keyboard_remove import ReplyKeyboardRemove from .sticker import Sticker + from .story import Story from .successful_payment import SuccessfulPayment from .user import User from .user_shared import UserShared @@ -128,7 +129,7 @@ class Message(TelegramObject): """*Optional*. For forwarded messages that were originally sent in channels or by an anonymous chat administrator, signature of the message sender if present""" forward_sender_name: Optional[str] = None """*Optional*. Sender's name for messages forwarded from users who disallow adding a link to their account in forwarded messages""" - forward_date: Optional[int] = None + forward_date: Optional[datetime.datetime] = None """*Optional*. For forwarded messages, date the original message was sent in Unix time""" is_topic_message: Optional[bool] = None """*Optional*. :code:`True`, if the message is sent to a forum topic""" @@ -160,6 +161,8 @@ class Message(TelegramObject): """*Optional*. Message is a photo, available sizes of the photo""" sticker: Optional[Sticker] = None """*Optional*. Message is a sticker, information about the sticker""" + story: Optional[Story] = None + """*Optional*. Message is a forwarded story""" video: Optional[Video] = None """*Optional*. Message is a video, information about the video""" video_note: Optional[VideoNote] = None @@ -267,7 +270,7 @@ class Message(TelegramObject): forward_from_message_id: Optional[int] = None, forward_signature: Optional[str] = None, forward_sender_name: Optional[str] = None, - forward_date: Optional[int] = None, + forward_date: Optional[datetime.datetime] = None, is_topic_message: Optional[bool] = None, is_automatic_forward: Optional[bool] = None, reply_to_message: Optional[Message] = None, @@ -283,6 +286,7 @@ class Message(TelegramObject): document: Optional[Document] = None, photo: Optional[List[PhotoSize]] = None, sticker: Optional[Sticker] = None, + story: Optional[Story] = None, video: Optional[Video] = None, video_note: Optional[VideoNote] = None, voice: Optional[Voice] = None, @@ -361,6 +365,7 @@ class Message(TelegramObject): document=document, photo=photo, sticker=sticker, + story=story, video=video, video_note=video_note, voice=voice, @@ -496,6 +501,8 @@ class Message(TelegramObject): return ContentType.USER_SHARED if self.chat_shared: return ContentType.CHAT_SHARED + if self.story: + return ContentType.STORY return ContentType.UNKNOWN diff --git a/aiogram/types/poll_answer.py b/aiogram/types/poll_answer.py index beb6ef09..c12be34f 100644 --- a/aiogram/types/poll_answer.py +++ b/aiogram/types/poll_answer.py @@ -1,10 +1,11 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, List +from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject if TYPE_CHECKING: + from .chat import Chat from .user import User @@ -17,10 +18,12 @@ class PollAnswer(TelegramObject): poll_id: str """Unique poll identifier""" - user: User - """The user, who changed the answer to the poll""" option_ids: List[int] - """0-based identifiers of answer options, chosen by the user. May be empty if the user retracted their vote.""" + """0-based identifiers of chosen answer options. May be empty if the vote was retracted.""" + voter_chat: Optional[Chat] = None + """*Optional*. The chat that changed the answer to the poll, if the voter is anonymous""" + user: Optional[User] = None + """*Optional*. The user that changed the answer to the poll, if the voter isn't anonymous""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! @@ -30,8 +33,9 @@ class PollAnswer(TelegramObject): __pydantic__self__, *, poll_id: str, - user: User, option_ids: List[int], + voter_chat: Optional[Chat] = None, + user: Optional[User] = None, **__pydantic_kwargs: Any, ) -> None: # DO NOT EDIT MANUALLY!!! @@ -39,5 +43,9 @@ class PollAnswer(TelegramObject): # Is needed only for type checking and IDE support without any additional plugins super().__init__( - poll_id=poll_id, user=user, option_ids=option_ids, **__pydantic_kwargs + poll_id=poll_id, + option_ids=option_ids, + voter_chat=voter_chat, + user=user, + **__pydantic_kwargs, ) diff --git a/aiogram/types/story.py b/aiogram/types/story.py new file mode 100644 index 00000000..dc92c575 --- /dev/null +++ b/aiogram/types/story.py @@ -0,0 +1,9 @@ +from aiogram.types import TelegramObject + + +class Story(TelegramObject): + """ + This object represents a message about a forwarded story in the chat. Currently holds no information. + + Source: https://core.telegram.org/bots/api#story + """ diff --git a/docs/api/methods/index.rst b/docs/api/methods/index.rst index 4a7f4b01..e63e35b7 100644 --- a/docs/api/methods/index.rst +++ b/docs/api/methods/index.rst @@ -86,6 +86,7 @@ Available methods unhide_general_forum_topic unpin_all_chat_messages unpin_all_forum_topic_messages + unpin_all_general_forum_topic_messages unpin_chat_message Payments diff --git a/docs/api/methods/unpin_all_general_forum_topic_messages.rst b/docs/api/methods/unpin_all_general_forum_topic_messages.rst new file mode 100644 index 00000000..b71da566 --- /dev/null +++ b/docs/api/methods/unpin_all_general_forum_topic_messages.rst @@ -0,0 +1,51 @@ +################################# +unpinAllGeneralForumTopicMessages +################################# + +Returns: :obj:`bool` + +.. automodule:: aiogram.methods.unpin_all_general_forum_topic_messages + :members: + :member-order: bysource + :undoc-members: True + :exclude-members: model_config,model_fields + + +Usage +===== + +As bot method +------------- + +.. code-block:: + + result: bool = await bot.unpin_all_general_forum_topic_messages(...) + + +Method as object +---------------- + +Imports: + +- :code:`from aiogram.methods.unpin_all_general_forum_topic_messages import UnpinAllGeneralForumTopicMessages` +- alias: :code:`from aiogram.methods import UnpinAllGeneralForumTopicMessages` + +With specific bot +~~~~~~~~~~~~~~~~~ + +.. code-block:: python + + result: bool = await bot(UnpinAllGeneralForumTopicMessages(...)) + +As reply into Webhook in handler +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: python + + return UnpinAllGeneralForumTopicMessages(...) + + +As shortcut from received object +-------------------------------- + +- :meth:`aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages` diff --git a/docs/api/types/index.rst b/docs/api/types/index.rst index 930e9354..20d71e22 100644 --- a/docs/api/types/index.rst +++ b/docs/api/types/index.rst @@ -123,6 +123,7 @@ Available types reply_keyboard_markup reply_keyboard_remove response_parameters + story switch_inline_query_chosen_chat user user_profile_photos diff --git a/docs/api/types/story.rst b/docs/api/types/story.rst new file mode 100644 index 00000000..68565b39 --- /dev/null +++ b/docs/api/types/story.rst @@ -0,0 +1,10 @@ +##### +Story +##### + + +.. automodule:: aiogram.types.story + :members: + :member-order: bysource + :undoc-members: True + :exclude-members: model_config,model_fields diff --git a/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py b/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py new file mode 100644 index 00000000..406a98a7 --- /dev/null +++ b/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py @@ -0,0 +1,15 @@ +from aiogram.methods import Request, UnpinAllForumTopicMessages, UnpinAllGeneralForumTopicMessages +from tests.mocked_bot import MockedBot + + +class TestUnpinAllForumTopicMessages: + async def test_bot_method(self, bot: MockedBot): + prepare_result = bot.add_result_for( + UnpinAllGeneralForumTopicMessages, ok=True, result=True + ) + + response: bool = await bot.unpin_all_general_forum_topic_messages( + chat_id=42, + ) + request = bot.get_request() + assert response == prepare_result.result diff --git a/tests/test_api/test_types/test_chat.py b/tests/test_api/test_types/test_chat.py index 03cb8963..14cc3dc2 100644 --- a/tests/test_api/test_types/test_chat.py +++ b/tests/test_api/test_types/test_chat.py @@ -207,3 +207,9 @@ class TestChat: ): chat = Chat(id=42, first_name=first, last_name=last, title=title, type=chat_type) assert chat.full_name == result + + def test_unpin_all_general_forum_topic_messages(self): + chat = Chat(id=-42, type="supergroup") + + method = chat.unpin_all_general_forum_topic_messages() + assert method.chat_id == chat.id diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index f0a34b09..9d3835b6 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -73,6 +73,7 @@ from aiogram.types import ( VideoNote, Voice, WebAppData, + Story, ) from aiogram.types.message import ContentType, Message @@ -455,6 +456,15 @@ TEST_CHAT_SHARED = Message( from_user=User(id=42, is_bot=False, first_name="Test"), chat_shared=ChatShared(request_id=42, chat_id=42), ) +TEST_MESSAGE_STORY = Message( + message_id=42, + date=datetime.datetime.now(), + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test"), + story=Story(), + forward_signature="Test", + forward_date=datetime.datetime.now(), +) TEST_MESSAGE_UNKNOWN = Message( message_id=42, date=datetime.datetime.now(), @@ -516,6 +526,7 @@ class TestMessage: [TEST_FORUM_TOPIC_REOPENED, ContentType.FORUM_TOPIC_REOPENED], [TEST_USER_SHARED, ContentType.USER_SHARED], [TEST_CHAT_SHARED, ContentType.CHAT_SHARED], + [TEST_MESSAGE_STORY, ContentType.STORY], [TEST_MESSAGE_UNKNOWN, ContentType.UNKNOWN], ], ) From a0ae934c14e8b409492877744fb40cf34681a361 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 18 Aug 2023 20:19:31 +0300 Subject: [PATCH 081/139] Bump minimum magic-filter version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6714e819..104a1582 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ classifiers = [ "Topic :: Communications :: Chat", ] dependencies = [ - "magic-filter~=1.0", + "magic-filter~=1.0.11", "aiohttp~=3.8.5", "pydantic>=2.1.1,<3", "aiofiles~=23.1.0", From 787ad6b0949e9107fa9bf16e85836dcfe3b30ca4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 18 Aug 2023 20:21:01 +0300 Subject: [PATCH 082/139] Render changelog --- CHANGES.rst | 45 +++++++++++++++++++++++++++++++++++++++++ CHANGES/1099.doc.rst | 1 - CHANGES/1251.doc.rst | 1 - CHANGES/1252.bugfix.rst | 1 - CHANGES/1253.doc.rst | 1 - CHANGES/1254.doc.rst | 1 - CHANGES/1256.doc.rst | 2 -- CHANGES/1259.bugfix.rst | 1 - CHANGES/1264.doc.rst | 1 - CHANGES/1266.bugfix.rst | 2 -- CHANGES/1268.doc.rst | 2 -- CHANGES/1269.misc.rst | 1 - CHANGES/1275.misc.rst | 1 - 13 files changed, 45 insertions(+), 15 deletions(-) delete mode 100644 CHANGES/1099.doc.rst delete mode 100644 CHANGES/1251.doc.rst delete mode 100644 CHANGES/1252.bugfix.rst delete mode 100644 CHANGES/1253.doc.rst delete mode 100644 CHANGES/1254.doc.rst delete mode 100644 CHANGES/1256.doc.rst delete mode 100644 CHANGES/1259.bugfix.rst delete mode 100644 CHANGES/1264.doc.rst delete mode 100644 CHANGES/1266.bugfix.rst delete mode 100644 CHANGES/1268.doc.rst delete mode 100644 CHANGES/1269.misc.rst delete mode 100644 CHANGES/1275.misc.rst diff --git a/CHANGES.rst b/CHANGES.rst index 7e39287c..b3d1c6a0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,51 @@ Changelog .. towncrier release notes start +3.0.0rc2 (2023-08-18) +====================== + +Bugfixes +-------- + +- Fixed missing message content types (:code:`ContentType.USER_SHARED`, :code:`ContentType.CHAT_SHARED`) + `#1252 `_ +- Fixed nested hashtag, cashtag and email message entities not being parsed correctly when these entities are inside another entity. + `#1259 `_ +- Moved global filters check placement into router to add chance to pass context from global filters + into handlers in the same way as it possible in other places + `#1266 `_ + + +Improved Documentation +---------------------- + +- Added error handling example `examples/error_handling.py` + `#1099 `_ +- Added a few words about skipping pending updates + `#1251 `_ +- Added a section on Dependency Injection technology + `#1253 `_ +- This update includes the addition of a multi-file bot example to the repository. + `#1254 `_ +- Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown + beautification's for a more user-friendly display. + `#1256 `_ +- Supplemented "Finite State Machine" section in Migration FAQ + `#1264 `_ +- Removed extra param in docstring of TelegramEventObserver's filter method + and fixed typo in I18n documentation. + `#1268 `_ + + +Misc +---- + +- Enhanced the warning message in dispatcher to include a JSON dump of the update when update type is not known. + `#1269 `_ +- Added support for `Bot API 6.8 `_ + `#1275 `_ + + 3.0.0rc1 (2023-08-06) ====================== diff --git a/CHANGES/1099.doc.rst b/CHANGES/1099.doc.rst deleted file mode 100644 index 74064656..00000000 --- a/CHANGES/1099.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Added error handling example `examples/error_handling.py` diff --git a/CHANGES/1251.doc.rst b/CHANGES/1251.doc.rst deleted file mode 100644 index a1c437c0..00000000 --- a/CHANGES/1251.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Added a few words about skipping pending updates diff --git a/CHANGES/1252.bugfix.rst b/CHANGES/1252.bugfix.rst deleted file mode 100644 index 640f9228..00000000 --- a/CHANGES/1252.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed missing message content types (:code:`ContentType.USER_SHARED`, :code:`ContentType.CHAT_SHARED`) diff --git a/CHANGES/1253.doc.rst b/CHANGES/1253.doc.rst deleted file mode 100644 index d8100687..00000000 --- a/CHANGES/1253.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Added a section on Dependency Injection technology diff --git a/CHANGES/1254.doc.rst b/CHANGES/1254.doc.rst deleted file mode 100644 index ce216fa4..00000000 --- a/CHANGES/1254.doc.rst +++ /dev/null @@ -1 +0,0 @@ -This update includes the addition of a multi-file bot example to the repository. diff --git a/CHANGES/1256.doc.rst b/CHANGES/1256.doc.rst deleted file mode 100644 index 986cd892..00000000 --- a/CHANGES/1256.doc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Refactored examples code to use aiogram enumerations and enhanced chat messages with markdown -beautification's for a more user-friendly display. diff --git a/CHANGES/1259.bugfix.rst b/CHANGES/1259.bugfix.rst deleted file mode 100644 index e070549d..00000000 --- a/CHANGES/1259.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed nested hashtag, cashtag and email message entities not being parsed correctly when these entities are inside another entity. diff --git a/CHANGES/1264.doc.rst b/CHANGES/1264.doc.rst deleted file mode 100644 index 1564244f..00000000 --- a/CHANGES/1264.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Supplemented "Finite State Machine" section in Migration FAQ diff --git a/CHANGES/1266.bugfix.rst b/CHANGES/1266.bugfix.rst deleted file mode 100644 index 55f0cfc6..00000000 --- a/CHANGES/1266.bugfix.rst +++ /dev/null @@ -1,2 +0,0 @@ -Moved global filters check placement into router to add chance to pass context from global filters -into handlers in the same way as it possible in other places diff --git a/CHANGES/1268.doc.rst b/CHANGES/1268.doc.rst deleted file mode 100644 index 0651fd0f..00000000 --- a/CHANGES/1268.doc.rst +++ /dev/null @@ -1,2 +0,0 @@ -Removed extra param in docstring of TelegramEventObserver's filter method -and fixed typo in I18n documentation. diff --git a/CHANGES/1269.misc.rst b/CHANGES/1269.misc.rst deleted file mode 100644 index c91b7ac3..00000000 --- a/CHANGES/1269.misc.rst +++ /dev/null @@ -1 +0,0 @@ -Enhanced the warning message in dispatcher to include a JSON dump of the update when update type is not known. diff --git a/CHANGES/1275.misc.rst b/CHANGES/1275.misc.rst deleted file mode 100644 index 581fe321..00000000 --- a/CHANGES/1275.misc.rst +++ /dev/null @@ -1 +0,0 @@ -Added support for `Bot API 6.8 `_ From b7be9c2b81c2f4312634d2e1173c8a1c04f8dbb4 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 21 Aug 2023 01:13:19 +0300 Subject: [PATCH 083/139] Small cleanup in examples --- examples/echo_bot.py | 16 ++++------------ examples/finite_state_machine.py | 5 +---- examples/specify_updates.py | 5 +---- 3 files changed, 6 insertions(+), 20 deletions(-) diff --git a/examples/echo_bot.py b/examples/echo_bot.py index fc0bb0ff..7cb1babe 100644 --- a/examples/echo_bot.py +++ b/examples/echo_bot.py @@ -13,10 +13,10 @@ from aiogram.utils.markdown import hbold TOKEN = getenv("BOT_TOKEN") # All handlers should be attached to the Router (or Dispatcher) -router = Router() +dp = Dispatcher() -@router.message(CommandStart()) +@dp.message(CommandStart()) async def command_start_handler(message: Message) -> None: """ This handler receives messages with `/start` command @@ -29,7 +29,7 @@ async def command_start_handler(message: Message) -> None: await message.answer(f"Hello, {hbold(message.from_user.full_name)}!") -@router.message() +@dp.message() async def echo_handler(message: types.Message) -> None: """ Handler will forward receive a message back to the sender @@ -45,11 +45,6 @@ async def echo_handler(message: types.Message) -> None: async def main() -> None: - # Dispatcher is a root router - dp = Dispatcher() - # ... and all other routers should be attached to Dispatcher - dp.include_router(router) - # Initialize Bot instance with a default parse mode which will be passed to all API calls bot = Bot(TOKEN, parse_mode=ParseMode.HTML) # And the run events dispatching @@ -58,7 +53,4 @@ async def main() -> None: if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) - try: - asyncio.run(main()) - except (KeyboardInterrupt, SystemExit): - logging.info("Bot stopped!") + asyncio.run(main()) diff --git a/examples/finite_state_machine.py b/examples/finite_state_machine.py index 260fdfdf..2905ec5b 100644 --- a/examples/finite_state_machine.py +++ b/examples/finite_state_machine.py @@ -133,7 +133,4 @@ async def main(): if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) - try: - asyncio.run(main()) - except (KeyboardInterrupt, SystemExit): - logging.info("Bot stopped!") + asyncio.run(main()) diff --git a/examples/specify_updates.py b/examples/specify_updates.py index ead296ea..56571f1a 100644 --- a/examples/specify_updates.py +++ b/examples/specify_updates.py @@ -93,7 +93,4 @@ async def main() -> None: if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) - try: - asyncio.run(main()) - except (KeyboardInterrupt, SystemExit): - logger.info("Bot stopped!") + asyncio.run(main()) From bff2ed0a86033ee5b9ca0c2f1b4cf855ea09de78 Mon Sep 17 00:00:00 2001 From: onejeuu <77905539+onejeuu@users.noreply.github.com> Date: Sat, 26 Aug 2023 22:31:30 +0300 Subject: [PATCH 084/139] Fix markdown italic quote (#1282) * Fix markdown italic quote * Add changelog --- CHANGES/1282.bugfix.rst | 1 + aiogram/utils/markdown.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1282.bugfix.rst diff --git a/CHANGES/1282.bugfix.rst b/CHANGES/1282.bugfix.rst new file mode 100644 index 00000000..323060b1 --- /dev/null +++ b/CHANGES/1282.bugfix.rst @@ -0,0 +1 @@ +Italic markdown from utils now uses correct decorators \ No newline at end of file diff --git a/aiogram/utils/markdown.py b/aiogram/utils/markdown.py index 37600963..08b14a77 100644 --- a/aiogram/utils/markdown.py +++ b/aiogram/utils/markdown.py @@ -48,7 +48,7 @@ def italic(*content: Any, sep: str = " ") -> str: :param sep: :return: """ - return markdown_decoration.italic(value=html_decoration.quote(_join(*content, sep=sep))) + return markdown_decoration.italic(value=markdown_decoration.quote(_join(*content, sep=sep))) def hitalic(*content: Any, sep: str = " ") -> str: From ee8e457c5fe79ee85422915713d86fcd3fc51518 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 26 Aug 2023 22:33:32 +0300 Subject: [PATCH 085/139] #1281 Fix magic operation .as_ for values interpreted as False (#1283) Modified the ".as_" method in the magic filter class to correctly handle values that are interpreted as `False` such as `0`. Previously, the method incorrectly dismissed these valid values. The issue was identified and fixed to ensure correct handling of all valid data inputs. --- CHANGES/1281.bugfix.rst | 1 + aiogram/utils/magic_filter.py | 4 ++-- tests/test_utils/test_magic_filter.py | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1281.bugfix.rst diff --git a/CHANGES/1281.bugfix.rst b/CHANGES/1281.bugfix.rst new file mode 100644 index 00000000..285b180d --- /dev/null +++ b/CHANGES/1281.bugfix.rst @@ -0,0 +1 @@ +Fixed magic :code:`.as_(...)` operation for values that can be interpreted as `False` (e.g. `0`). diff --git a/aiogram/utils/magic_filter.py b/aiogram/utils/magic_filter.py index fed406a7..94c92079 100644 --- a/aiogram/utils/magic_filter.py +++ b/aiogram/utils/magic_filter.py @@ -1,4 +1,4 @@ -from typing import Any +from typing import Any, Iterable from magic_filter import MagicFilter as _MagicFilter from magic_filter import MagicT as _MagicT @@ -12,7 +12,7 @@ class AsFilterResultOperation(BaseOperation): self.name = name def resolve(self, value: Any, initial_value: Any) -> Any: - if not value: + if value is None or (isinstance(value, Iterable) and not value): return None return {self.name: value} diff --git a/tests/test_utils/test_magic_filter.py b/tests/test_utils/test_magic_filter.py index 4a1d05f3..097c8365 100644 --- a/tests/test_utils/test_magic_filter.py +++ b/tests/test_utils/test_magic_filter.py @@ -19,3 +19,17 @@ class TestMagicFilter: result = magic.resolve(MyObject(text="123")) assert isinstance(result, dict) assert isinstance(result["match"], Match) + + def test_operation_as_not_none(self): + # Issue: https://github.com/aiogram/aiogram/issues/1281 + magic = F.cast(int).as_("value") + + result = magic.resolve("0") + assert result == {"value": 0} + + def test_operation_as_not_none_iterable(self): + # Issue: https://github.com/aiogram/aiogram/issues/1281 + magic = F.as_("value") + + result = magic.resolve([]) + assert result is None From 2cf224da49411babcd6c91296d6eb1696e51cceb Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 26 Aug 2023 22:34:30 +0300 Subject: [PATCH 086/139] Reformat code --- aiogram/types/chat.py | 2 +- examples/error_handling.py | 7 ++++++- .../test_unpin_all_general_forum_topic_messages.py | 6 +++++- tests/test_api/test_types/test_message.py | 2 +- tests/test_dispatcher/test_event/test_telegram.py | 3 +-- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 2046eca8..3e526bb4 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -33,8 +33,8 @@ if TYPE_CHECKING: UnbanChatMember, UnbanChatSenderChat, UnpinAllChatMessages, - UnpinChatMessage, UnpinAllGeneralForumTopicMessages, + UnpinChatMessage, ) from .chat_location import ChatLocation from .chat_permissions import ChatPermissions diff --git a/examples/error_handling.py b/examples/error_handling.py index 72ab8e34..3f8efdc4 100644 --- a/examples/error_handling.py +++ b/examples/error_handling.py @@ -3,7 +3,12 @@ import html import logging from aiogram import Bot, Dispatcher, types -from aiogram.filters import Command, CommandObject, ExceptionMessageFilter, ExceptionTypeFilter +from aiogram.filters import ( + Command, + CommandObject, + ExceptionMessageFilter, + ExceptionTypeFilter, +) from aiogram.types import ErrorEvent TOKEN = "42:TOKEN" diff --git a/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py b/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py index 406a98a7..fc2df936 100644 --- a/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py +++ b/tests/test_api/test_methods/test_unpin_all_general_forum_topic_messages.py @@ -1,4 +1,8 @@ -from aiogram.methods import Request, UnpinAllForumTopicMessages, UnpinAllGeneralForumTopicMessages +from aiogram.methods import ( + Request, + UnpinAllForumTopicMessages, + UnpinAllGeneralForumTopicMessages, +) from tests.mocked_bot import MockedBot diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 9d3835b6..04e25578 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -61,6 +61,7 @@ from aiogram.types import ( PollOption, ProximityAlertTriggered, Sticker, + Story, SuccessfulPayment, User, UserShared, @@ -73,7 +74,6 @@ from aiogram.types import ( VideoNote, Voice, WebAppData, - Story, ) from aiogram.types.message import ContentType, Message diff --git a/tests/test_dispatcher/test_event/test_telegram.py b/tests/test_dispatcher/test_event/test_telegram.py index 8976b2ff..713aabb8 100644 --- a/tests/test_dispatcher/test_event/test_telegram.py +++ b/tests/test_dispatcher/test_event/test_telegram.py @@ -5,7 +5,7 @@ from typing import Any, Dict, NoReturn, Optional, Union import pytest from pydantic import BaseModel -from aiogram.dispatcher.event.bases import SkipHandler, UNHANDLED +from aiogram.dispatcher.event.bases import UNHANDLED, SkipHandler from aiogram.dispatcher.event.handler import HandlerObject from aiogram.dispatcher.event.telegram import TelegramEventObserver from aiogram.dispatcher.router import Router @@ -13,7 +13,6 @@ from aiogram.exceptions import UnsupportedKeywordArgument from aiogram.filters import Filter from aiogram.types import Chat, Message, User - # TODO: Test middlewares in routers tree From 806f8f67d5c015581a6311bf1435cec663091422 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 26 Aug 2023 22:38:22 +0300 Subject: [PATCH 087/139] Bump version --- README.rst | 10 +++------- aiogram/__meta__.py | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/README.rst b/README.rst index 8975139c..b4668d30 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,6 @@ -####################### -aiogram |version badge| -####################### +####### +aiogram +####### .. image:: https://img.shields.io/pypi/l/aiogram.svg?style=flat-square :target: https://opensource.org/licenses/MIT @@ -78,7 +78,3 @@ Features - 🇮🇷 `@aiogram_fa `_ - 🇮🇹 `@aiogram_it `_ - 🇧🇷 `@aiogram_br `_ - - -.. |version badge| image:: https://img.shields.io/badge/-release%20candidate-yellow - :alt: Release Candidate badge diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 24e07b53..805e9b72 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.0rc2" +__version__ = "3.0.0" __api_version__ = "6.8" From ca4c1b4b95fe2d8066642efcb905e9f3eb66308d Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 26 Aug 2023 23:18:20 +0300 Subject: [PATCH 088/139] Small documentation improvements and texts update --- README.rst | 2 +- docs/dispatcher/dispatcher.rst | 4 +- docs/dispatcher/filters/callback_data.rst | 2 +- .../filters/chat_member_updated.rst | 37 +- docs/dispatcher/filters/command.rst | 26 +- docs/dispatcher/filters/index.rst | 2 + docs/dispatcher/filters/magic_data.rst | 13 +- .../dispatcher/finite_state_machine/index.rst | 2 + docs/dispatcher/index.rst | 12 +- docs/dispatcher/router.rst | 16 + docs/install.rst | 2 +- .../unpin_all_general_forum_topic_messages.po | 94 +++ docs/locale/en/LC_MESSAGES/api/types/chat.po | 40 +- .../en/LC_MESSAGES/api/types/message.po | 6 +- .../en/LC_MESSAGES/api/types/poll_answer.po | 33 +- docs/locale/en/LC_MESSAGES/api/types/story.po | 32 + docs/locale/en/LC_MESSAGES/changelog.po | 643 +++++++++++------- docs/locale/en/LC_MESSAGES/contributing.po | 142 ++-- .../dispatcher/dependency_injection.po | 96 +++ .../en/LC_MESSAGES/dispatcher/dispatcher.po | 12 +- .../dispatcher/filters/chat_member_updated.po | 122 ++-- .../dispatcher/filters/magic_data.po | 66 +- .../en/LC_MESSAGES/dispatcher/router.po | 74 +- docs/locale/en/LC_MESSAGES/index.po | 115 ++-- .../locale/en/LC_MESSAGES/migration_2_to_3.po | 96 ++- .../unpin_all_general_forum_topic_messages.po | 94 +++ .../uk_UA/LC_MESSAGES/api/types/chat.po | 41 +- .../uk_UA/LC_MESSAGES/api/types/message.po | 6 +- .../LC_MESSAGES/api/types/poll_answer.po | 33 +- .../uk_UA/LC_MESSAGES/api/types/story.po | 32 + docs/locale/uk_UA/LC_MESSAGES/changelog.po | 643 +++++++++++------- docs/locale/uk_UA/LC_MESSAGES/contributing.po | 142 ++-- .../dispatcher/dependency_injection.po | 96 +++ .../LC_MESSAGES/dispatcher/dispatcher.po | 12 +- .../dispatcher/filters/chat_member_updated.po | 183 ++--- .../dispatcher/filters/magic_data.po | 70 +- .../uk_UA/LC_MESSAGES/dispatcher/router.po | 75 +- docs/locale/uk_UA/LC_MESSAGES/index.po | 108 +-- .../uk_UA/LC_MESSAGES/migration_2_to_3.po | 96 ++- docs/migration_2_to_3.rst | 4 +- docs/utils/keyboard.rst | 3 +- 41 files changed, 2160 insertions(+), 1167 deletions(-) create mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po create mode 100644 docs/locale/en/LC_MESSAGES/api/types/story.po create mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/api/types/story.po create mode 100644 docs/locale/uk_UA/LC_MESSAGES/dispatcher/dependency_injection.po diff --git a/README.rst b/README.rst index b4668d30..af494848 100644 --- a/README.rst +++ b/README.rst @@ -56,7 +56,7 @@ Features - Telegram Bot API integration code was `autogenerated `_ and can be easily re-generated when API gets updated - Updates router (Blueprints) - Has Finite State Machine -- Uses powerful `magic filters ` +- Uses powerful `magic filters `_ - Middlewares (incoming updates and API calls) - Provides `Replies into Webhook `_ - Integrated I18n/L10n support with GNU Gettext (or Fluent) diff --git a/docs/dispatcher/dispatcher.rst b/docs/dispatcher/dispatcher.rst index d7403a66..502422c0 100644 --- a/docs/dispatcher/dispatcher.rst +++ b/docs/dispatcher/dispatcher.rst @@ -6,8 +6,8 @@ Dispatcher is root :obj:`Router` and in code Dispatcher can be used directly for Here is only listed base information about Dispatcher. All about writing handlers, filters and etc. you can found in next pages: -- `Router `__ -- `Observer `__ +- :ref:`Router ` +- :ref:`Filtering events` .. autoclass:: aiogram.dispatcher.dispatcher.Dispatcher diff --git a/docs/dispatcher/filters/callback_data.rst b/docs/dispatcher/filters/callback_data.rst index 61d7a40a..a16848fe 100644 --- a/docs/dispatcher/filters/callback_data.rst +++ b/docs/dispatcher/filters/callback_data.rst @@ -1,4 +1,4 @@ -.. _callback-data-factory +.. _Callback data factory: ============================== Callback Data Factory & Filter diff --git a/docs/dispatcher/filters/chat_member_updated.rst b/docs/dispatcher/filters/chat_member_updated.rst index 6b2fff00..356fba1d 100644 --- a/docs/dispatcher/filters/chat_member_updated.rst +++ b/docs/dispatcher/filters/chat_member_updated.rst @@ -2,6 +2,27 @@ ChatMemberUpdated ================= +Usage +===== + +Handle user leave or join events + +.. code-block:: python + + from aiogram.filters import IS_MEMBER, IS_NOT_MEMBER + + @router.chat_member(ChatMemberUpdatedFilter(IS_MEMBER >> IS_NOT_MEMBER)) + async def on_user_leave(event: ChatMemberUpdated): ... + + @router.chat_member(ChatMemberUpdatedFilter(IS_NOT_MEMBER >> IS_MEMBER)) + async def on_user_join(event: ChatMemberUpdated): ... + +Or construct your own terms via using pre-defined set of statuses and transitions. + + +Explanation +=========== + .. autoclass:: aiogram.filters.chat_member_updated.ChatMemberUpdatedFilter :members: :member-order: bysource @@ -77,22 +98,6 @@ will produce swap of old and new statuses. Note that if you define the status unions (via :code:`|`) you will need to add brackets for the statement before use shift operator in due to operator priorities. -Usage -===== - -Handle user leave or join events - -.. code-block:: python - - from aiogram.filters import IS_MEMBER, IS_NOT_MEMBER - - @router.chat_member(ChatMemberUpdatedFilter(IS_MEMBER >> IS_NOT_MEMBER)) - async def on_user_leave(event: ChatMemberUpdated): ... - - @router.chat_member(ChatMemberUpdatedFilter(IS_NOT_MEMBER >> IS_MEMBER)) - async def on_user_join(event: ChatMemberUpdated): ... - -Or construct your own terms via using pre-defined set of statuses and transitions. Allowed handlers ================ diff --git a/docs/dispatcher/filters/command.rst b/docs/dispatcher/filters/command.rst index e926c081..00fe83c3 100644 --- a/docs/dispatcher/filters/command.rst +++ b/docs/dispatcher/filters/command.rst @@ -2,19 +2,6 @@ Command ======= -.. autoclass:: aiogram.filters.command.Command - :members: __init__ - :member-order: bysource - :undoc-members: False - -When filter is passed the :class:`aiogram.filters.command.CommandObject` will be passed to the handler argument :code:`command` - -.. autoclass:: aiogram.filters.command.CommandObject - :members: - :member-order: bysource - :undoc-members: False - - Usage ===== @@ -28,6 +15,19 @@ Usage Command cannot include spaces or any whitespace + +.. autoclass:: aiogram.filters.command.Command + :members: __init__ + :member-order: bysource + :undoc-members: False + +When filter is passed the :class:`aiogram.filters.command.CommandObject` will be passed to the handler argument :code:`command` + +.. autoclass:: aiogram.filters.command.CommandObject + :members: + :member-order: bysource + :undoc-members: False + Allowed handlers ================ diff --git a/docs/dispatcher/filters/index.rst b/docs/dispatcher/filters/index.rst index 9ac14213..33442ec8 100644 --- a/docs/dispatcher/filters/index.rst +++ b/docs/dispatcher/filters/index.rst @@ -1,3 +1,5 @@ +.. _Filtering events: + ================ Filtering events ================ diff --git a/docs/dispatcher/filters/magic_data.rst b/docs/dispatcher/filters/magic_data.rst index 55255e5c..68637e06 100644 --- a/docs/dispatcher/filters/magic_data.rst +++ b/docs/dispatcher/filters/magic_data.rst @@ -2,6 +2,14 @@ MagicData ========= +Usage +===== + +#. :code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that :code:`config` should be passed from middleware) + +Explanation +=========== + .. autoclass:: aiogram.filters.magic_data.MagicData :members: :member-order: bysource @@ -11,11 +19,6 @@ Can be imported: - :code:`from aiogram.filters import MagicData` -Usage -===== - -#. :code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that :code:`config` should be passed from middleware) - Allowed handlers ================ diff --git a/docs/dispatcher/finite_state_machine/index.rst b/docs/dispatcher/finite_state_machine/index.rst index 353d5f75..afa62bff 100644 --- a/docs/dispatcher/finite_state_machine/index.rst +++ b/docs/dispatcher/finite_state_machine/index.rst @@ -1,3 +1,5 @@ +.. _Finite State Machine: + ==================== Finite State Machine ==================== diff --git a/docs/dispatcher/index.rst b/docs/dispatcher/index.rst index 614721ef..daf7e1e5 100644 --- a/docs/dispatcher/index.rst +++ b/docs/dispatcher/index.rst @@ -26,12 +26,12 @@ So, you can use both of them with *aiogram*. router dispatcher - class_based_handlers/index + dependency_injection filters/index - middlewares - finite_state_machine/index - flags - errors long_polling webhook - dependency_injection + finite_state_machine/index + middlewares + errors + flags + class_based_handlers/index diff --git a/docs/dispatcher/router.rst b/docs/dispatcher/router.rst index 13555ec9..44eb748e 100644 --- a/docs/dispatcher/router.rst +++ b/docs/dispatcher/router.rst @@ -1,7 +1,23 @@ +.. _Router: + ###### Router ###### +Usage: + +.. code-block:: python + + from aiogram import Router + from aiogram.types import Message + + my_router = Router(name=__name__) + + @my_router.message() + async def message_handler(message: Message) -> Any: + await message.answer('Hello from my router!') + + .. autoclass:: aiogram.dispatcher.router.Router :members: __init__, include_router, include_routers, resolve_used_update_types :show-inheritance: diff --git a/docs/install.rst b/docs/install.rst index 7a3b8218..71a71705 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -24,7 +24,7 @@ From PyPI .. code-block:: bash - pip install -U --pre aiogram + pip install -U aiogram From GitHub ----------- diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po b/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po new file mode 100644 index 00000000..b4154aa5 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po @@ -0,0 +1,94 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:3 +msgid "unpinAllGeneralForumTopicMessages" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:5 +msgid "Returns: :obj:`bool`" +msgstr "" + +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:1 +#: of +msgid "" +"Use this method to clear the list of pinned messages in a General forum " +"topic. The bot must be an administrator in the chat for this to work and " +"must have the *can_pin_messages* administrator right in the supergroup. " +"Returns :code:`True` on success." +msgstr "" + +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:3 +#: of +msgid "" +"Source: " +"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" +msgstr "" + +#: ../../docstring +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages.chat_id:1 +#: of +msgid "" +"Unique identifier for the target chat or username of the target " +"supergroup (in the format :code:`@supergroupusername`)" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:15 +msgid "Usage" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:18 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:26 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:28 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:30 +msgid "" +":code:`from aiogram.methods.unpin_all_general_forum_topic_messages import" +" UnpinAllGeneralForumTopicMessages`" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:31 +msgid "" +"alias: :code:`from aiogram.methods import " +"UnpinAllGeneralForumTopicMessages`" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:34 +msgid "With specific bot" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:41 +msgid "As reply into Webhook in handler" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:51 +msgid ":meth:`aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages`" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat.po b/docs/locale/en/LC_MESSAGES/api/types/chat.po index 05363683..9628f5ea 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/chat.po +++ b/docs/locale/en/LC_MESSAGES/api/types/chat.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat.rst:3 msgid "Chat" @@ -88,6 +88,13 @@ msgid "" ":class:`aiogram.methods.get_chat.GetChat`." msgstr "" +#: ../../docstring aiogram.types.chat.Chat.emoji_status_expiration_date:1 of +msgid "" +"*Optional*. Expiration date of the emoji status of the other party in a " +"private chat, if any. Returned only in " +":class:`aiogram.methods.get_chat.GetChat`." +msgstr "" + #: ../../docstring aiogram.types.chat.Chat.bio:1 of msgid "" "*Optional*. Bio of the other party in a private chat. Returned only in " @@ -264,6 +271,7 @@ msgstr "" #: aiogram.types.chat.Chat.set_sticker_set:4 #: aiogram.types.chat.Chat.set_title:4 aiogram.types.chat.Chat.unban:4 #: aiogram.types.chat.Chat.unban_sender_chat:4 +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:4 #: aiogram.types.chat.Chat.unpin_all_messages:4 #: aiogram.types.chat.Chat.unpin_message:4 of msgid ":code:`chat_id`" @@ -320,6 +328,7 @@ msgstr "" #: aiogram.types.chat.Chat.set_permissions aiogram.types.chat.Chat.set_photo #: aiogram.types.chat.Chat.set_sticker_set aiogram.types.chat.Chat.set_title #: aiogram.types.chat.Chat.unban aiogram.types.chat.Chat.unban_sender_chat +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages #: aiogram.types.chat.Chat.unpin_all_messages #: aiogram.types.chat.Chat.unpin_message of msgid "Returns" @@ -1269,6 +1278,33 @@ msgstr "" msgid "instance of method :class:`aiogram.methods.set_chat_photo.SetChatPhoto`" msgstr "" +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:6 of +msgid "" +"Use this method to clear the list of pinned messages in a General forum " +"topic. The bot must be an administrator in the chat for this to work and " +"must have the *can_pin_messages* administrator right in the supergroup. " +"Returns :code:`True` on success." +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:8 of +msgid "" +"Source: " +"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:10 of +msgid "" +"instance of method " +":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" +msgstr "" + #~ msgid "" #~ "Use this method to get information " #~ "about a member of a chat. The " diff --git a/docs/locale/en/LC_MESSAGES/api/types/message.po b/docs/locale/en/LC_MESSAGES/api/types/message.po index e04a77e4..8c20ee62 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/message.po +++ b/docs/locale/en/LC_MESSAGES/api/types/message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -173,6 +173,10 @@ msgstr "" msgid "*Optional*. Message is a sticker, information about the sticker" msgstr "" +#: ../../docstring aiogram.types.message.Message.story:1 of +msgid "*Optional*. Message is a forwarded story" +msgstr "" + #: ../../docstring aiogram.types.message.Message.video:1 of msgid "*Optional*. Message is a video, information about the video" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po b/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po index 627b292c..63fb9b5d 100644 --- a/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po +++ b/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/poll_answer.rst:3 msgid "PollAnswer" @@ -33,12 +33,29 @@ msgstr "" msgid "Unique poll identifier" msgstr "" -#: ../../docstring aiogram.types.poll_answer.PollAnswer.user:1 of -msgid "The user, who changed the answer to the poll" -msgstr "" - #: ../../docstring aiogram.types.poll_answer.PollAnswer.option_ids:1 of msgid "" -"0-based identifiers of answer options, chosen by the user. May be empty " -"if the user retracted their vote." +"0-based identifiers of chosen answer options. May be empty if the vote " +"was retracted." msgstr "" + +#: ../../docstring aiogram.types.poll_answer.PollAnswer.voter_chat:1 of +msgid "" +"*Optional*. The chat that changed the answer to the poll, if the voter is" +" anonymous" +msgstr "" + +#: ../../docstring aiogram.types.poll_answer.PollAnswer.user:1 of +msgid "" +"*Optional*. The user that changed the answer to the poll, if the voter " +"isn't anonymous" +msgstr "" + +#~ msgid "The user, who changed the answer to the poll" +#~ msgstr "" + +#~ msgid "" +#~ "0-based identifiers of answer options, " +#~ "chosen by the user. May be empty" +#~ " if the user retracted their vote." +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/story.po b/docs/locale/en/LC_MESSAGES/api/types/story.po new file mode 100644 index 00000000..92bf0e3a --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/api/types/story.po @@ -0,0 +1,32 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/story.rst:3 +msgid "Story" +msgstr "" + +#: aiogram.types.story.Story:1 of +msgid "" +"This object represents a message about a forwarded story in the chat. " +"Currently holds no information." +msgstr "" + +#: aiogram.types.story.Story:3 of +msgid "Source: https://core.telegram.org/bots/api#story" +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po index 92abec62..ff98abc8 100644 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ b/docs/locale/en/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,26 +22,149 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-26)" msgstr "" -#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 -#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 -#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 -#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 -#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 -msgid "Features" +#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:92 ../../../CHANGES.rst:137 +#: ../../../CHANGES.rst:207 ../../../CHANGES.rst:393 ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:505 ../../../CHANGES.rst:566 ../../../CHANGES.rst:624 +#: ../../../CHANGES.rst:670 ../../../CHANGES.rst:718 ../../../CHANGES.rst:774 +#: ../../../CHANGES.rst:859 ../../../CHANGES.rst:891 +#: ../../[towncrier-fragments]:5 +msgid "Bugfixes" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "" +"Fixed magic :code:`.as_(...)` operation for values that can be " +"interpreted as `False` (e.g. `0`). `#1281 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:9 +msgid "" +"Italic markdown from utils now uses correct decorators `#1282 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:20 +msgid "3.0.0rc2 (2023-08-18)" +msgstr "" + +#: ../../../CHANGES.rst:25 +msgid "" +"Fixed missing message content types (:code:`ContentType.USER_SHARED`, " +":code:`ContentType.CHAT_SHARED`) `#1252 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:27 +msgid "" +"Fixed nested hashtag, cashtag and email message entities not being parsed" +" correctly when these entities are inside another entity. `#1259 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:29 +msgid "" +"Moved global filters check placement into router to add chance to pass " +"context from global filters into handlers in the same way as it possible " +"in other places `#1266 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:235 ../../../CHANGES.rst:468 ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:898 +msgid "Improved Documentation" +msgstr "" + +#: ../../../CHANGES.rst:37 +msgid "" +"Added error handling example `examples/error_handling.py` `#1099 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:39 +msgid "" +"Added a few words about skipping pending updates `#1251 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:41 +msgid "" +"Added a section on Dependency Injection technology `#1253 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:43 +msgid "" +"This update includes the addition of a multi-file bot example to the " +"repository. `#1254 `_" +msgstr "" + +#: ../../../CHANGES.rst:45 +msgid "" +"Refactored examples code to use aiogram enumerations and enhanced chat " +"messages with markdown beautification's for a more user-friendly display." +" `#1256 `_" +msgstr "" + +#: ../../../CHANGES.rst:48 +msgid "" +"Supplemented \"Finite State Machine\" section in Migration FAQ `#1264 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:50 +msgid "" +"Removed extra param in docstring of TelegramEventObserver's filter method" +" and fixed typo in I18n documentation. `#1268 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:112 ../../../CHANGES.rst:251 +#: ../../../CHANGES.rst:402 ../../../CHANGES.rst:479 ../../../CHANGES.rst:532 +#: ../../../CHANGES.rst:583 ../../../CHANGES.rst:637 ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:725 ../../../CHANGES.rst:785 ../../../CHANGES.rst:806 +#: ../../../CHANGES.rst:829 ../../../CHANGES.rst:866 ../../../CHANGES.rst:905 +msgid "Misc" +msgstr "" + +#: ../../../CHANGES.rst:58 +msgid "" +"Enhanced the warning message in dispatcher to include a JSON dump of the " +"update when update type is not known. `#1269 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:60 +msgid "" +"Added support for `Bot API 6.8 `_ `#1275 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:65 +msgid "3.0.0rc1 (2023-08-06)" +msgstr "" + +#: ../../../CHANGES.rst:68 ../../../CHANGES.rst:126 ../../../CHANGES.rst:168 +#: ../../../CHANGES.rst:331 ../../../CHANGES.rst:431 ../../../CHANGES.rst:491 +#: ../../../CHANGES.rst:542 ../../../CHANGES.rst:615 ../../../CHANGES.rst:656 +#: ../../../CHANGES.rst:694 ../../../CHANGES.rst:742 ../../../CHANGES.rst:818 +#: ../../../CHANGES.rst:851 ../../../CHANGES.rst:882 +msgid "Features" +msgstr "" + +#: ../../../CHANGES.rst:70 msgid "Added Currency enum. You can use it like this:" msgstr "" -#: ../../[towncrier-fragments]:19 +#: ../../../CHANGES.rst:82 msgid "`#1194 `_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:83 msgid "" "Updated keyboard builders with new methods for integrating buttons and " "keyboard creation more seamlessly. Added functionality to create buttons " @@ -50,49 +173,45 @@ msgid "" "`#1236 `_" msgstr "" -#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 -#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 -#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 -#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 -#: ../../[towncrier-fragments]:27 -msgid "Bugfixes" +#: ../../../CHANGES.rst:87 +msgid "" +"Added support for message_thread_id in ChatActionSender `#1249 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:29 +#: ../../../CHANGES.rst:94 msgid "" "Fixed polling startup when \"bot\" key is passed manually into dispatcher" " workflow data `#1242 `_" msgstr "" -#: ../../[towncrier-fragments]:31 +#: ../../../CHANGES.rst:96 msgid "Added codegen configuration for lost shortcuts:" msgstr "" -#: ../../[towncrier-fragments]:33 +#: ../../../CHANGES.rst:98 msgid "ShippingQuery.answer" msgstr "" -#: ../../[towncrier-fragments]:34 +#: ../../../CHANGES.rst:99 msgid "PreCheckoutQuery.answer" msgstr "" -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:100 msgid "Message.delete_reply_markup" msgstr "" -#: ../../[towncrier-fragments]:36 +#: ../../../CHANGES.rst:101 msgid "`#1244 `_" msgstr "" -#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 -#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 -#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 -#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 -#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 -msgid "Misc" +#: ../../../CHANGES.rst:107 +msgid "" +"Added documentation for webhook and polling modes. `#1241 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:42 +#: ../../../CHANGES.rst:114 msgid "" "Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" " Bot` argument to the :code:`.read(...)` method, so, from now " @@ -100,18 +219,18 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:46 +#: ../../../CHANGES.rst:118 msgid "" "Code-generated :code:`__init__` typehints in types and methods to make " "IDE happy without additional pydantic plugin `#1245 " "`_" msgstr "" -#: ../../../CHANGES.rst:21 +#: ../../../CHANGES.rst:123 msgid "3.0.0b9 (2023-07-30)" msgstr "" -#: ../../../CHANGES.rst:26 +#: ../../../CHANGES.rst:128 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -119,7 +238,7 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:131 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -127,13 +246,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:37 +#: ../../../CHANGES.rst:139 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../../CHANGES.rst:39 +#: ../../../CHANGES.rst:141 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -143,26 +262,21 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:146 msgid "Updated pydantic to 2.1 with few bugfixes" msgstr "" -#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 -#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 -msgid "Improved Documentation" -msgstr "" - -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:152 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:157 ../../../CHANGES.rst:242 ../../../CHANGES.rst:525 msgid "Deprecations and Removals" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:159 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -170,78 +284,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:63 +#: ../../../CHANGES.rst:165 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:68 +#: ../../../CHANGES.rst:170 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:70 +#: ../../../CHANGES.rst:172 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:72 +#: ../../../CHANGES.rst:174 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:85 +#: ../../../CHANGES.rst:187 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:87 +#: ../../../CHANGES.rst:189 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:88 +#: ../../../CHANGES.rst:190 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:90 +#: ../../../CHANGES.rst:192 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:91 +#: ../../../CHANGES.rst:193 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:194 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:93 +#: ../../../CHANGES.rst:195 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:96 +#: ../../../CHANGES.rst:198 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:98 +#: ../../../CHANGES.rst:200 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:100 +#: ../../../CHANGES.rst:202 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:107 +#: ../../../CHANGES.rst:209 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -249,51 +363,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:110 +#: ../../../CHANGES.rst:212 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:214 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:114 +#: ../../../CHANGES.rst:216 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:218 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:118 +#: ../../../CHANGES.rst:220 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:222 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:224 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:125 +#: ../../../CHANGES.rst:227 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -302,71 +416,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:237 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:244 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:246 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:151 +#: ../../../CHANGES.rst:253 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:155 +#: ../../../CHANGES.rst:257 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:260 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:159 +#: ../../../CHANGES.rst:261 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:163 +#: ../../../CHANGES.rst:265 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:165 +#: ../../../CHANGES.rst:267 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:166 +#: ../../../CHANGES.rst:268 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:272 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:171 +#: ../../../CHANGES.rst:273 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:172 +#: ../../../CHANGES.rst:274 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -374,13 +488,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:175 +#: ../../../CHANGES.rst:277 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:178 +#: ../../../CHANGES.rst:280 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -388,69 +502,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:183 +#: ../../../CHANGES.rst:285 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:184 +#: ../../../CHANGES.rst:286 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:185 +#: ../../../CHANGES.rst:287 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:187 +#: ../../../CHANGES.rst:289 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:290 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:189 +#: ../../../CHANGES.rst:291 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:193 +#: ../../../CHANGES.rst:295 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:197 +#: ../../../CHANGES.rst:299 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:199 +#: ../../../CHANGES.rst:301 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:201 +#: ../../../CHANGES.rst:303 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:315 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:231 +#: ../../../CHANGES.rst:333 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:233 +#: ../../../CHANGES.rst:335 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:251 +#: ../../../CHANGES.rst:353 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:339 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -469,15 +583,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:253 +#: ../../../CHANGES.rst:355 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:278 +#: ../../../CHANGES.rst:380 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:256 +#: ../../../CHANGES.rst:358 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -505,85 +619,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:280 +#: ../../../CHANGES.rst:382 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:281 +#: ../../../CHANGES.rst:383 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:282 +#: ../../../CHANGES.rst:384 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:385 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:284 +#: ../../../CHANGES.rst:386 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:388 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:293 +#: ../../../CHANGES.rst:395 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:397 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:302 +#: ../../../CHANGES.rst:404 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:406 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:408 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:308 +#: ../../../CHANGES.rst:410 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:312 +#: ../../../CHANGES.rst:414 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:314 +#: ../../../CHANGES.rst:416 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:417 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -591,13 +705,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:420 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:320 +#: ../../../CHANGES.rst:422 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -605,127 +719,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:326 +#: ../../../CHANGES.rst:428 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:331 +#: ../../../CHANGES.rst:433 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:333 +#: ../../../CHANGES.rst:435 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:335 +#: ../../../CHANGES.rst:437 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:337 +#: ../../../CHANGES.rst:439 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:440 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:339 +#: ../../../CHANGES.rst:441 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:340 +#: ../../../CHANGES.rst:442 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:341 +#: ../../../CHANGES.rst:443 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:342 +#: ../../../CHANGES.rst:444 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:445 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:344 +#: ../../../CHANGES.rst:446 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:346 +#: ../../../CHANGES.rst:448 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:347 +#: ../../../CHANGES.rst:449 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:450 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:349 +#: ../../../CHANGES.rst:451 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:356 +#: ../../../CHANGES.rst:458 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:358 +#: ../../../CHANGES.rst:460 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:360 +#: ../../../CHANGES.rst:462 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:361 +#: ../../../CHANGES.rst:463 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:464 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:470 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:370 +#: ../../../CHANGES.rst:472 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:372 +#: ../../../CHANGES.rst:474 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:379 +#: ../../../CHANGES.rst:481 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:381 +#: ../../../CHANGES.rst:483 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -734,23 +848,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:386 +#: ../../../CHANGES.rst:488 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:391 +#: ../../../CHANGES.rst:493 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:393 +#: ../../../CHANGES.rst:495 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:395 +#: ../../../CHANGES.rst:497 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -758,61 +872,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:398 +#: ../../../CHANGES.rst:500 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:507 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:407 +#: ../../../CHANGES.rst:509 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:409 +#: ../../../CHANGES.rst:511 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:411 +#: ../../../CHANGES.rst:513 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:418 +#: ../../../CHANGES.rst:520 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:527 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:432 +#: ../../../CHANGES.rst:534 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:437 +#: ../../../CHANGES.rst:539 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:544 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -820,198 +934,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:548 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:550 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:558 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:457 +#: ../../../CHANGES.rst:559 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:459 +#: ../../../CHANGES.rst:561 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:466 +#: ../../../CHANGES.rst:568 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:468 +#: ../../../CHANGES.rst:570 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:470 +#: ../../../CHANGES.rst:572 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:471 +#: ../../../CHANGES.rst:573 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:574 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:473 +#: ../../../CHANGES.rst:575 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:576 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:476 +#: ../../../CHANGES.rst:578 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:585 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:587 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:589 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:489 +#: ../../../CHANGES.rst:591 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:491 +#: ../../../CHANGES.rst:593 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:493 +#: ../../../CHANGES.rst:595 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:596 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:495 +#: ../../../CHANGES.rst:597 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:598 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:497 +#: ../../../CHANGES.rst:599 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:498 +#: ../../../CHANGES.rst:600 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:601 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:603 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:503 +#: ../../../CHANGES.rst:605 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:505 +#: ../../../CHANGES.rst:607 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:510 +#: ../../../CHANGES.rst:612 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:515 +#: ../../../CHANGES.rst:617 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:517 +#: ../../../CHANGES.rst:619 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:524 +#: ../../../CHANGES.rst:626 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:526 +#: ../../../CHANGES.rst:628 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:528 +#: ../../../CHANGES.rst:630 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:530 +#: ../../../CHANGES.rst:632 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:537 +#: ../../../CHANGES.rst:639 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:539 +#: ../../../CHANGES.rst:641 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -1019,14 +1133,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:542 +#: ../../../CHANGES.rst:644 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:544 +#: ../../../CHANGES.rst:646 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -1035,113 +1149,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:653 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:556 +#: ../../../CHANGES.rst:658 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:559 +#: ../../../CHANGES.rst:661 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:561 +#: ../../../CHANGES.rst:663 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:563 +#: ../../../CHANGES.rst:665 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:570 +#: ../../../CHANGES.rst:672 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:572 +#: ../../../CHANGES.rst:674 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:579 +#: ../../../CHANGES.rst:681 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:581 +#: ../../../CHANGES.rst:683 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:583 +#: ../../../CHANGES.rst:685 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:589 +#: ../../../CHANGES.rst:691 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:696 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:596 +#: ../../../CHANGES.rst:698 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:612 +#: ../../../CHANGES.rst:714 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:618 +#: ../../../CHANGES.rst:720 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:727 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:627 +#: ../../../CHANGES.rst:729 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:629 +#: ../../../CHANGES.rst:731 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:733 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1149,11 +1263,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:637 +#: ../../../CHANGES.rst:739 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:744 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1161,258 +1275,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:646 +#: ../../../CHANGES.rst:748 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:656 +#: ../../../CHANGES.rst:758 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:657 +#: ../../../CHANGES.rst:759 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:660 +#: ../../../CHANGES.rst:762 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:662 +#: ../../../CHANGES.rst:764 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:668 +#: ../../../CHANGES.rst:770 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:674 +#: ../../../CHANGES.rst:776 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:676 +#: ../../../CHANGES.rst:778 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:678 +#: ../../../CHANGES.rst:780 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:685 +#: ../../../CHANGES.rst:787 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:790 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:792 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:794 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:795 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:694 +#: ../../../CHANGES.rst:796 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:797 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:701 +#: ../../../CHANGES.rst:803 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:706 +#: ../../../CHANGES.rst:808 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:810 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:713 +#: ../../../CHANGES.rst:815 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:718 +#: ../../../CHANGES.rst:820 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:720 +#: ../../../CHANGES.rst:822 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:722 +#: ../../../CHANGES.rst:824 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:831 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:731 +#: ../../../CHANGES.rst:833 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:733 +#: ../../../CHANGES.rst:835 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:836 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:735 +#: ../../../CHANGES.rst:837 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:736 +#: ../../../CHANGES.rst:838 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:738 +#: ../../../CHANGES.rst:840 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:740 +#: ../../../CHANGES.rst:842 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:746 +#: ../../../CHANGES.rst:848 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:751 +#: ../../../CHANGES.rst:853 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:759 +#: ../../../CHANGES.rst:861 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:868 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:768 +#: ../../../CHANGES.rst:870 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:770 +#: ../../../CHANGES.rst:872 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:772 +#: ../../../CHANGES.rst:874 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:777 +#: ../../../CHANGES.rst:879 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:782 +#: ../../../CHANGES.rst:884 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:784 +#: ../../../CHANGES.rst:886 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:791 +#: ../../../CHANGES.rst:893 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:798 +#: ../../../CHANGES.rst:900 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:805 +#: ../../../CHANGES.rst:907 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:807 +#: ../../../CHANGES.rst:909 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:809 +#: ../../../CHANGES.rst:911 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -3040,3 +3154,6 @@ msgstr "" #~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/contributing.po b/docs/locale/en/LC_MESSAGES/contributing.po index 40354edd..7cf1b5d8 100644 --- a/docs/locale/en/LC_MESSAGES/contributing.po +++ b/docs/locale/en/LC_MESSAGES/contributing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,112 +78,112 @@ msgstr "" msgid "Activate the environment" msgstr "" -#: ../../contributing.rst:38 -msgid "Linux/ macOS:" +#: ../../contributing.rst:38 ../../contributing.rst:77 +msgid "Linux / macOS:" msgstr "" #: ../../contributing.rst:44 -msgid "Windows PoweShell" +msgid "Windows cmd" msgstr "" #: ../../contributing.rst:50 -msgid "" -"To check it worked, use described command, it should show the :code:`pip`" -" location inside the isolated environment" -msgstr "" - -#: ../../contributing.rst:53 -msgid "Linux, macOS:" -msgstr "" - -#: ../../contributing.rst:59 msgid "Windows PowerShell" msgstr "" -#: ../../contributing.rst:65 +#: ../../contributing.rst:56 msgid "" -"Also make you shure you have the latest pip version in your virtual " +"To check it worked, use described command, it should show the :code:`pip`" +" version and location inside the isolated environment" +msgstr "" + +#: ../../contributing.rst:64 +msgid "" +"Also make sure you have the latest pip version in your virtual " "environment to avoid errors on next steps:" msgstr "" -#: ../../contributing.rst:74 +#: ../../contributing.rst:73 msgid "Setup project" msgstr "" -#: ../../contributing.rst:76 +#: ../../contributing.rst:75 msgid "" "After activating the environment install `aiogram` from sources and their" -" dependencies:" +" dependencies." msgstr "" -#: ../../contributing.rst:82 +#: ../../contributing.rst:83 +msgid "Windows:" +msgstr "" + +#: ../../contributing.rst:89 msgid "" "It will install :code:`aiogram` in editable mode into your virtual " "environment and all dependencies." msgstr "" -#: ../../contributing.rst:85 +#: ../../contributing.rst:92 msgid "Making changes in code" msgstr "" -#: ../../contributing.rst:87 +#: ../../contributing.rst:94 msgid "" "At this point you can make any changes in the code that you want, it can " "be any fixes, implementing new features or experimenting." msgstr "" -#: ../../contributing.rst:92 +#: ../../contributing.rst:99 msgid "Format the code (code-style)" msgstr "" -#: ../../contributing.rst:94 +#: ../../contributing.rst:101 msgid "" "Note that this project is Black-formatted, so you should follow that " "code-style, too be sure You're correctly doing this let's reformat the " "code automatically:" msgstr "" -#: ../../contributing.rst:104 +#: ../../contributing.rst:111 msgid "Run tests" msgstr "" -#: ../../contributing.rst:106 +#: ../../contributing.rst:113 msgid "All changes should be tested:" msgstr "" -#: ../../contributing.rst:112 +#: ../../contributing.rst:119 msgid "" "Also if you are doing something with Redis-storage, you will need to test" " everything works with Redis:" msgstr "" -#: ../../contributing.rst:119 +#: ../../contributing.rst:126 msgid "Docs" msgstr "" -#: ../../contributing.rst:121 +#: ../../contributing.rst:128 msgid "" "We are using `Sphinx` to render docs in different languages, all sources " "located in `docs` directory, you can change the sources and to test it " "you can start live-preview server and look what you are doing:" msgstr "" -#: ../../contributing.rst:130 +#: ../../contributing.rst:137 msgid "Docs translations" msgstr "" -#: ../../contributing.rst:132 +#: ../../contributing.rst:139 msgid "" "Translation of the documentation is very necessary and cannot be done " "without the help of the community from all over the world, so you are " "welcome to translate the documentation into different languages." msgstr "" -#: ../../contributing.rst:136 +#: ../../contributing.rst:143 msgid "Before start, let's up to date all texts:" msgstr "" -#: ../../contributing.rst:144 +#: ../../contributing.rst:151 msgid "" "Change the :code:`` in example below to the target " "language code, after that you can modify texts inside " @@ -192,120 +192,120 @@ msgid "" "example via `poedit `_." msgstr "" -#: ../../contributing.rst:149 +#: ../../contributing.rst:156 msgid "To view results:" msgstr "" -#: ../../contributing.rst:157 +#: ../../contributing.rst:164 msgid "Describe changes" msgstr "" -#: ../../contributing.rst:159 +#: ../../contributing.rst:166 msgid "" "Describe your changes in one or more sentences so that bot developers " "know what's changed in their favorite framework - create " "`..rst` file and write the description." msgstr "" -#: ../../contributing.rst:162 +#: ../../contributing.rst:169 msgid "" ":code:`` is Issue or Pull-request number, after release link to " "this issue will be published to the *Changelog* page." msgstr "" -#: ../../contributing.rst:165 +#: ../../contributing.rst:172 msgid ":code:`` is a changes category marker, it can be one of:" msgstr "" -#: ../../contributing.rst:167 +#: ../../contributing.rst:174 msgid ":code:`feature` - when you are implementing new feature" msgstr "" -#: ../../contributing.rst:168 +#: ../../contributing.rst:175 msgid ":code:`bugfix` - when you fix a bug" msgstr "" -#: ../../contributing.rst:169 +#: ../../contributing.rst:176 msgid ":code:`doc` - when you improve the docs" msgstr "" -#: ../../contributing.rst:170 +#: ../../contributing.rst:177 msgid ":code:`removal` - when you remove something from the framework" msgstr "" -#: ../../contributing.rst:171 +#: ../../contributing.rst:178 msgid "" ":code:`misc` - when changed something inside the Core or project " "configuration" msgstr "" -#: ../../contributing.rst:173 +#: ../../contributing.rst:180 msgid "" "If you have troubles with changing category feel free to ask Core-" "contributors to help with choosing it." msgstr "" -#: ../../contributing.rst:176 +#: ../../contributing.rst:183 msgid "Complete" msgstr "" -#: ../../contributing.rst:178 +#: ../../contributing.rst:185 msgid "" "After you have made all your changes, publish them to the repository and " "create a pull request as mentioned at the beginning of the article and " "wait for a review of these changes." msgstr "" -#: ../../contributing.rst:183 +#: ../../contributing.rst:190 msgid "Star on GitHub" msgstr "" -#: ../../contributing.rst:185 +#: ../../contributing.rst:192 msgid "" "You can \"star\" repository on GitHub - " "https://github.com/aiogram/aiogram (click the star button at the top " "right)" msgstr "" -#: ../../contributing.rst:187 +#: ../../contributing.rst:194 msgid "" "Adding stars makes it easier for other people to find this project and " "understand how useful it is." msgstr "" -#: ../../contributing.rst:190 +#: ../../contributing.rst:197 msgid "Guides" msgstr "" -#: ../../contributing.rst:192 +#: ../../contributing.rst:199 msgid "" "You can write guides how to develop Bots on top of aiogram and publish it" " into YouTube, Medium, GitHub Books, any Courses platform or any other " "platform that you know." msgstr "" -#: ../../contributing.rst:195 +#: ../../contributing.rst:202 msgid "" "This will help more people learn about the framework and learn how to use" " it" msgstr "" -#: ../../contributing.rst:199 +#: ../../contributing.rst:206 msgid "Take answers" msgstr "" -#: ../../contributing.rst:201 +#: ../../contributing.rst:208 msgid "" "The developers is always asks for any question in our chats or any other " "platforms like GitHub Discussions, StackOverflow and others, feel free to" " answer to this questions." msgstr "" -#: ../../contributing.rst:205 +#: ../../contributing.rst:212 msgid "Funding" msgstr "" -#: ../../contributing.rst:207 +#: ../../contributing.rst:214 msgid "" "The development of the project is free and not financed by commercial " "organizations, it is my personal initiative (`@JRootJunior " @@ -313,7 +313,7 @@ msgid "" "project in my free time." msgstr "" -#: ../../contributing.rst:211 +#: ../../contributing.rst:218 msgid "" "So, if you want to financially support the project, or, for example, give" " me a pizza or a beer, you can do it on `OpenCollective " @@ -328,3 +328,31 @@ msgstr "" #~ "`_ or `Patreon " #~ "`_." #~ msgstr "" + +#~ msgid "Linux/ macOS:" +#~ msgstr "" + +#~ msgid "Windows PoweShell" +#~ msgstr "" + +#~ msgid "" +#~ "To check it worked, use described " +#~ "command, it should show the :code:`pip`" +#~ " location inside the isolated environment" +#~ msgstr "" + +#~ msgid "Linux, macOS:" +#~ msgstr "" + +#~ msgid "" +#~ "Also make you shure you have the" +#~ " latest pip version in your virtual" +#~ " environment to avoid errors on next" +#~ " steps:" +#~ msgstr "" + +#~ msgid "" +#~ "After activating the environment install " +#~ "`aiogram` from sources and their " +#~ "dependencies:" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po b/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po new file mode 100644 index 00000000..b3e158d8 --- /dev/null +++ b/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po @@ -0,0 +1,96 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/dependency_injection.rst:3 +msgid "Dependency injection" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:5 +msgid "" +"Dependency injection is a programming technique that makes a class " +"independent of its dependencies. It achieves that by decoupling the usage" +" of an object from its creation. This helps you to follow `SOLID's " +"`_ dependency inversion and single " +"responsibility principles." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:12 +msgid "How it works in aiogram" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:14 +msgid "" +"For each update :class:`aiogram.dispatcher.dispatcher.Dispatcher` passes " +"handling context data. Filters and middleware can also make changes to " +"the context." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:17 +msgid "" +"To access contextual data you should specify corresponding keyword " +"parameter in handler or filter. For example, to get " +":class:`aiogram.fsm.context.FSMContext` we do it like that:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:30 +msgid "Injecting own dependencies" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:32 +msgid "Aiogram provides several ways to complement / modify contextual data." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:34 +msgid "" +"The first and easiest way is to simply specify the named arguments in " +":class:`aiogram.dispatcher.dispatcher.Dispatcher` initialization, polling" +" start methods or " +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` " +"initialization if you use webhooks." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:46 +msgid "Analogy for webhook:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:55 +msgid "" +":class:`aiogram.dispatcher.dispatcher.Dispatcher`'s workflow data also " +"can be supplemented by setting values as in a dictionary:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:63 +msgid "" +"The middlewares updates the context quite often. You can read more about " +"them on this page:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:66 +msgid ":ref:`Middlewares `" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:68 +msgid "The last way is to return a dictionary from the filter:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:72 +msgid "" +"...or using :ref:`MagicFilter ` with :code:`.as_(...)` " +"method." +msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po index 51222dc3..e5a8a9f2 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -34,11 +34,11 @@ msgid "" msgstr "" #: ../../dispatcher/dispatcher.rst:9 -msgid "`Router `__" +msgid ":ref:`Router `" msgstr "" #: ../../dispatcher/dispatcher.rst:10 -msgid "`Observer `__" +msgid ":ref:`Filtering events`" msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher:1 @@ -176,3 +176,9 @@ msgstr "" #~ msgid "Poling timeout" #~ msgstr "" + +#~ msgid "`Router `__" +#~ msgstr "" + +#~ msgid "`Observer `__" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po index dcf0c9c6..f20ee663 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po @@ -8,90 +8,108 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/filters/chat_member_updated.rst:3 msgid "ChatMemberUpdated" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:10 +#: ../../dispatcher/filters/chat_member_updated.rst:6 +msgid "Usage" +msgstr "" + +#: ../../dispatcher/filters/chat_member_updated.rst:8 +msgid "Handle user leave or join events" +msgstr "" + +#: ../../dispatcher/filters/chat_member_updated.rst:20 +msgid "" +"Or construct your own terms via using pre-defined set of statuses and " +"transitions." +msgstr "" + +#: ../../dispatcher/filters/chat_member_updated.rst:24 +msgid "Explanation" +msgstr "" + +#: ../../dispatcher/filters/chat_member_updated.rst:31 msgid "" "You can import from :code:`aiogram.filters` all available variants of " "`statuses`_, `status groups`_ or `transitions`_:" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:14 +#: ../../dispatcher/filters/chat_member_updated.rst:35 msgid "Statuses" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:17 -#: ../../dispatcher/filters/chat_member_updated.rst:42 -#: ../../dispatcher/filters/chat_member_updated.rst:62 +#: ../../dispatcher/filters/chat_member_updated.rst:38 +#: ../../dispatcher/filters/chat_member_updated.rst:63 +#: ../../dispatcher/filters/chat_member_updated.rst:83 msgid "name" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:17 -#: ../../dispatcher/filters/chat_member_updated.rst:42 -#: ../../dispatcher/filters/chat_member_updated.rst:62 +#: ../../dispatcher/filters/chat_member_updated.rst:38 +#: ../../dispatcher/filters/chat_member_updated.rst:63 +#: ../../dispatcher/filters/chat_member_updated.rst:83 msgid "Description" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:19 +#: ../../dispatcher/filters/chat_member_updated.rst:40 msgid ":code:`CREATOR`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:19 +#: ../../dispatcher/filters/chat_member_updated.rst:40 msgid "Chat owner" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:21 +#: ../../dispatcher/filters/chat_member_updated.rst:42 msgid ":code:`ADMINISTRATOR`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:21 +#: ../../dispatcher/filters/chat_member_updated.rst:42 msgid "Chat administrator" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:23 +#: ../../dispatcher/filters/chat_member_updated.rst:44 msgid ":code:`MEMBER`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:23 +#: ../../dispatcher/filters/chat_member_updated.rst:44 msgid "Member of the chat" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:25 +#: ../../dispatcher/filters/chat_member_updated.rst:46 msgid ":code:`RESTRICTED`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:25 +#: ../../dispatcher/filters/chat_member_updated.rst:46 msgid "Restricted user (can be not member)" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:27 +#: ../../dispatcher/filters/chat_member_updated.rst:48 msgid ":code:`LEFT`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:27 +#: ../../dispatcher/filters/chat_member_updated.rst:48 msgid "Isn't member of the chat" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:29 +#: ../../dispatcher/filters/chat_member_updated.rst:50 msgid ":code:`KICKED`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:29 +#: ../../dispatcher/filters/chat_member_updated.rst:50 msgid "Kicked member by administrators" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:32 +#: ../../dispatcher/filters/chat_member_updated.rst:53 msgid "" "Statuses can be extended with `is_member` flag by prefixing with " ":code:`+` (for :code:`is_member == True)` or :code:`-` (for " @@ -99,47 +117,47 @@ msgid "" ":code:`-RESTRICTED`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:37 +#: ../../dispatcher/filters/chat_member_updated.rst:58 msgid "Status groups" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:39 +#: ../../dispatcher/filters/chat_member_updated.rst:60 msgid "" "The particular statuses can be combined via bitwise :code:`or` operator, " "like :code:`CREATOR | ADMINISTRATOR`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:44 +#: ../../dispatcher/filters/chat_member_updated.rst:65 msgid ":code:`IS_MEMBER`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:44 +#: ../../dispatcher/filters/chat_member_updated.rst:65 msgid "" "Combination of :code:`(CREATOR | ADMINISTRATOR | MEMBER | +RESTRICTED)` " "statuses." msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:46 +#: ../../dispatcher/filters/chat_member_updated.rst:67 msgid ":code:`IS_ADMIN`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:46 +#: ../../dispatcher/filters/chat_member_updated.rst:67 msgid "Combination of :code:`(CREATOR | ADMINISTRATOR)` statuses." msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:48 +#: ../../dispatcher/filters/chat_member_updated.rst:69 msgid ":code:`IS_NOT_MEMBER`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:48 +#: ../../dispatcher/filters/chat_member_updated.rst:69 msgid "Combination of :code:`(LEFT | KICKED | -RESTRICTED)` statuses." msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:52 +#: ../../dispatcher/filters/chat_member_updated.rst:73 msgid "Transitions" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:54 +#: ../../dispatcher/filters/chat_member_updated.rst:75 msgid "" "Transitions can be defined via bitwise shift operators :code:`>>` and " ":code:`<<`. Old chat member status should be defined in the left side for" @@ -148,77 +166,63 @@ msgid "" ":code:`<<`)" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:58 +#: ../../dispatcher/filters/chat_member_updated.rst:79 msgid "" "The direction of transition can be changed via bitwise inversion " "operator: :code:`~JOIN_TRANSITION` will produce swap of old and new " "statuses." msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:64 +#: ../../dispatcher/filters/chat_member_updated.rst:85 msgid ":code:`JOIN_TRANSITION`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:64 +#: ../../dispatcher/filters/chat_member_updated.rst:85 msgid "" "Means status changed from :code:`IS_NOT_MEMBER` to :code:`IS_MEMBER` " "(:code:`IS_NOT_MEMBER >> IS_MEMBER`)" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:67 +#: ../../dispatcher/filters/chat_member_updated.rst:88 msgid ":code:`LEAVE_TRANSITION`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:67 +#: ../../dispatcher/filters/chat_member_updated.rst:88 msgid "" "Means status changed from :code:`IS_MEMBER` to :code:`IS_NOT_MEMBER` " "(:code:`~JOIN_TRANSITION`)" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:70 +#: ../../dispatcher/filters/chat_member_updated.rst:91 msgid ":code:`PROMOTED_TRANSITION`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:70 +#: ../../dispatcher/filters/chat_member_updated.rst:91 msgid "" "Means status changed from :code:`(MEMBER | RESTRICTED | LEFT | KICKED) >>" " ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) >> " "ADMINISTRATOR`)" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:77 +#: ../../dispatcher/filters/chat_member_updated.rst:98 msgid "" "Note that if you define the status unions (via :code:`|`) you will need " "to add brackets for the statement before use shift operator in due to " "operator priorities." msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:81 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:83 -msgid "Handle user leave or join events" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:95 -msgid "" -"Or construct your own terms via using pre-defined set of statuses and " -"transitions." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:98 +#: ../../dispatcher/filters/chat_member_updated.rst:103 msgid "Allowed handlers" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:100 +#: ../../dispatcher/filters/chat_member_updated.rst:105 msgid "Allowed update types for this filter:" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:102 +#: ../../dispatcher/filters/chat_member_updated.rst:107 msgid "`my_chat_member`" msgstr "" -#: ../../dispatcher/filters/chat_member_updated.rst:103 +#: ../../dispatcher/filters/chat_member_updated.rst:108 msgid "`chat_member`" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po index 57280bd2..5a39eaf0 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po @@ -8,106 +8,110 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-25 22:10+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/filters/magic_data.rst:3 msgid "MagicData" msgstr "" +#: ../../dispatcher/filters/magic_data.rst:6 +msgid "Usage" +msgstr "" + +#: ../../dispatcher/filters/magic_data.rst:8 +msgid "" +":code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that " +":code:`config` should be passed from middleware)" +msgstr "" + +#: ../../dispatcher/filters/magic_data.rst:11 +msgid "Explanation" +msgstr "" + #: aiogram.filters.magic_data.MagicData:1 of msgid "This filter helps to filter event with contextual data" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:10 +#: ../../dispatcher/filters/magic_data.rst:18 msgid "Can be imported:" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:12 +#: ../../dispatcher/filters/magic_data.rst:20 msgid ":code:`from aiogram.filters import MagicData`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:15 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:17 -msgid "" -":code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that " -":code:`config` should be passed from middleware)" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:21 +#: ../../dispatcher/filters/magic_data.rst:24 msgid "Allowed handlers" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:23 +#: ../../dispatcher/filters/magic_data.rst:26 msgid "Allowed update types for this filter:" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:25 +#: ../../dispatcher/filters/magic_data.rst:28 msgid ":code:`message`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:26 +#: ../../dispatcher/filters/magic_data.rst:29 msgid ":code:`edited_message`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:27 +#: ../../dispatcher/filters/magic_data.rst:30 msgid ":code:`channel_post`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:28 +#: ../../dispatcher/filters/magic_data.rst:31 msgid ":code:`edited_channel_post`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:29 +#: ../../dispatcher/filters/magic_data.rst:32 msgid ":code:`inline_query`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:30 +#: ../../dispatcher/filters/magic_data.rst:33 msgid ":code:`chosen_inline_result`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:31 +#: ../../dispatcher/filters/magic_data.rst:34 msgid ":code:`callback_query`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:32 +#: ../../dispatcher/filters/magic_data.rst:35 msgid ":code:`shipping_query`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:33 +#: ../../dispatcher/filters/magic_data.rst:36 msgid ":code:`pre_checkout_query`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:34 +#: ../../dispatcher/filters/magic_data.rst:37 msgid ":code:`poll`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:35 +#: ../../dispatcher/filters/magic_data.rst:38 msgid ":code:`poll_answer`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:36 +#: ../../dispatcher/filters/magic_data.rst:39 msgid ":code:`my_chat_member`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:37 +#: ../../dispatcher/filters/magic_data.rst:40 msgid ":code:`chat_member`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:38 +#: ../../dispatcher/filters/magic_data.rst:41 msgid ":code:`chat_join_request`" msgstr "" -#: ../../dispatcher/filters/magic_data.rst:39 +#: ../../dispatcher/filters/magic_data.rst:42 msgid ":code:`error`" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/router.po b/docs/locale/en/LC_MESSAGES/dispatcher/router.po index 450b5360..8e88e944 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/router.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/router.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,10 +17,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../dispatcher/router.rst:3 +#: ../../dispatcher/router.rst:5 msgid "Router" msgstr "" +#: ../../dispatcher/router.rst:7 +msgid "Usage:" +msgstr "" + #: aiogram.dispatcher.router.Router:1 of msgid "Bases: :py:class:`object`" msgstr "" @@ -86,11 +90,11 @@ msgstr "" msgid "set of registered names" msgstr "" -#: ../../dispatcher/router.rst:13 +#: ../../dispatcher/router.rst:29 msgid "Event observers" msgstr "" -#: ../../dispatcher/router.rst:17 +#: ../../dispatcher/router.rst:33 msgid "" "All handlers always should be asynchronous. The name of the handler " "function is not important. The event argument name is also not important " @@ -98,145 +102,145 @@ msgid "" " to function can not accept two arguments with the same name." msgstr "" -#: ../../dispatcher/router.rst:20 +#: ../../dispatcher/router.rst:36 msgid "" "Here is the list of available observers and examples of how to register " "handlers" msgstr "" -#: ../../dispatcher/router.rst:22 +#: ../../dispatcher/router.rst:38 msgid "" "In these examples only decorator-style registering handlers are used, but" " if you don't like @decorators just use :obj:`.register(...)`" " method instead." msgstr "" -#: ../../dispatcher/router.rst:25 +#: ../../dispatcher/router.rst:41 msgid "Message" msgstr "" -#: ../../dispatcher/router.rst:30 +#: ../../dispatcher/router.rst:46 msgid "Be attentive with filtering this event" msgstr "" -#: ../../dispatcher/router.rst:32 +#: ../../dispatcher/router.rst:48 msgid "" "You should expect that this event can be with different sets of " "attributes in different cases" msgstr "" -#: ../../dispatcher/router.rst:34 +#: ../../dispatcher/router.rst:50 msgid "" "(For example text, sticker and document are always of different content " "types of message)" msgstr "" -#: ../../dispatcher/router.rst:36 +#: ../../dispatcher/router.rst:52 msgid "" "Recommended way to check field availability before usage, for example via" " :ref:`magic filter `: :code:`F.text` to handle text, " ":code:`F.sticker` to handle stickers only and etc." msgstr "" -#: ../../dispatcher/router.rst:47 +#: ../../dispatcher/router.rst:63 msgid "Edited message" msgstr "" -#: ../../dispatcher/router.rst:55 +#: ../../dispatcher/router.rst:71 msgid "Channel post" msgstr "" -#: ../../dispatcher/router.rst:63 +#: ../../dispatcher/router.rst:79 msgid "Edited channel post" msgstr "" -#: ../../dispatcher/router.rst:72 +#: ../../dispatcher/router.rst:88 msgid "Inline query" msgstr "" -#: ../../dispatcher/router.rst:80 +#: ../../dispatcher/router.rst:96 msgid "Chosen inline query" msgstr "" -#: ../../dispatcher/router.rst:88 +#: ../../dispatcher/router.rst:104 msgid "Callback query" msgstr "" -#: ../../dispatcher/router.rst:96 +#: ../../dispatcher/router.rst:112 msgid "Shipping query" msgstr "" -#: ../../dispatcher/router.rst:104 +#: ../../dispatcher/router.rst:120 msgid "Pre checkout query" msgstr "" -#: ../../dispatcher/router.rst:112 +#: ../../dispatcher/router.rst:128 msgid "Poll" msgstr "" -#: ../../dispatcher/router.rst:120 +#: ../../dispatcher/router.rst:136 msgid "Poll answer" msgstr "" -#: ../../dispatcher/router.rst:128 +#: ../../dispatcher/router.rst:144 msgid "Errors" msgstr "" -#: ../../dispatcher/router.rst:135 +#: ../../dispatcher/router.rst:151 msgid "" "Is useful for handling errors from other handlers, error event described " ":ref:`here `" msgstr "" -#: ../../dispatcher/router.rst:142 +#: ../../dispatcher/router.rst:158 msgid "Nested routers" msgstr "" -#: ../../dispatcher/router.rst:147 +#: ../../dispatcher/router.rst:163 msgid "" "Routers by the way can be nested to an another routers with some " "limitations:" msgstr "" -#: ../../dispatcher/router.rst:147 +#: ../../dispatcher/router.rst:163 msgid "" "1. Router **CAN NOT** include itself 1. Routers **CAN NOT** be used for " "circular including (router 1 include router 2, router 2 include router 3," " router 3 include router 1)" msgstr "" -#: ../../dispatcher/router.rst:151 +#: ../../dispatcher/router.rst:167 msgid "Example:" msgstr "" -#: ../../dispatcher/router.rst:153 +#: ../../dispatcher/router.rst:169 msgid "module_1.py" msgstr "" -#: ../../dispatcher/router.rst:163 +#: ../../dispatcher/router.rst:179 msgid "module_2.py" msgstr "" -#: ../../dispatcher/router.rst:175 +#: ../../dispatcher/router.rst:191 msgid "Update" msgstr "" -#: ../../dispatcher/router.rst:184 +#: ../../dispatcher/router.rst:200 msgid "The only root Router (Dispatcher) can handle this type of event." msgstr "" -#: ../../dispatcher/router.rst:188 +#: ../../dispatcher/router.rst:204 msgid "" "Dispatcher already has default handler for this event type, so you can " "use it for handling all updates that are not handled by any other " "handlers." msgstr "" -#: ../../dispatcher/router.rst:191 +#: ../../dispatcher/router.rst:207 msgid "How it works?" msgstr "" -#: ../../dispatcher/router.rst:193 +#: ../../dispatcher/router.rst:209 msgid "" "For example, dispatcher has 2 routers, the last router also has one " "nested router:" @@ -246,7 +250,7 @@ msgstr "" msgid "Nested routers example" msgstr "" -#: ../../dispatcher/router.rst:198 +#: ../../dispatcher/router.rst:214 msgid "In this case update propagation flow will have form:" msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/index.po b/docs/locale/en/LC_MESSAGES/index.po index 37f8acde..6e7d2a46 100644 --- a/docs/locale/en/LC_MESSAGES/index.po +++ b/docs/locale/en/LC_MESSAGES/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,15 +18,7 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../../README.rst:3 -msgid "aiogram |beta badge|" -msgstr "" - -#: ../../../README.rst:94 -msgid "Beta badge" -msgstr "" - -#: ../../../README.rst:6 -msgid "This version is still in development!" +msgid "aiogram" msgstr "" #: ../../../README.rst:-1 @@ -61,7 +53,7 @@ msgstr "" msgid "Codecov" msgstr "" -#: ../../../README.rst:40 +#: ../../../README.rst:37 msgid "" "**aiogram** is a modern and fully asynchronous framework for `Telegram " "Bot API `_ written in Python 3.8 " @@ -69,136 +61,124 @@ msgid "" "`aiohttp `_." msgstr "" -#: ../../../README.rst:45 +#: ../../../README.rst:42 msgid "Make your bots faster and more powerful!" msgstr "" -#: ../../../README.rst:50 +#: ../../../README.rst:47 msgid "Documentation:" msgstr "" -#: ../../../README.rst:48 +#: ../../../README.rst:45 msgid "🇺🇸 `English `_" msgstr "" -#: ../../../README.rst:49 +#: ../../../README.rst:46 msgid "🇺🇦 `Ukrainian `_" msgstr "" -#: ../../../README.rst:54 -msgid "**Breaking News:**" -msgstr "" - -#: ../../../README.rst:56 -msgid "*aiogram* 3.0 has breaking changes." -msgstr "" - -#: ../../../README.rst:58 -msgid "It breaks backward compatibility by introducing new breaking changes!" -msgstr "" - -#: ../../../README.rst:61 +#: ../../../README.rst:50 msgid "Features" msgstr "" -#: ../../../README.rst:63 +#: ../../../README.rst:52 msgid "" "Asynchronous (`asyncio docs " "`_, :pep:`492`)" msgstr "" -#: ../../../README.rst:64 +#: ../../../README.rst:53 msgid "" "Has type hints (:pep:`484`) and can be used with `mypy `_" msgstr "" -#: ../../../README.rst:65 +#: ../../../README.rst:54 msgid "Supports `PyPy `_" msgstr "" -#: ../../../README.rst:66 +#: ../../../README.rst:55 msgid "" -"Supports `Telegram Bot API 6.7 `_ and" +"Supports `Telegram Bot API 6.8 `_ and" " gets fast updates to the latest versions of the Bot API" msgstr "" -#: ../../../README.rst:67 +#: ../../../README.rst:56 msgid "" "Telegram Bot API integration code was `autogenerated " "`_ and can be easily re-generated " "when API gets updated" msgstr "" -#: ../../../README.rst:68 +#: ../../../README.rst:57 msgid "Updates router (Blueprints)" msgstr "" -#: ../../../README.rst:69 +#: ../../../README.rst:58 msgid "Has Finite State Machine" msgstr "" -#: ../../../README.rst:70 +#: ../../../README.rst:59 msgid "" "Uses powerful `magic filters " -"`" +"`_" msgstr "" -#: ../../../README.rst:71 +#: ../../../README.rst:60 msgid "Middlewares (incoming updates and API calls)" msgstr "" -#: ../../../README.rst:72 +#: ../../../README.rst:61 msgid "" "Provides `Replies into Webhook `_" msgstr "" -#: ../../../README.rst:73 +#: ../../../README.rst:62 msgid "Integrated I18n/L10n support with GNU Gettext (or Fluent)" msgstr "" -#: ../../../README.rst:78 +#: ../../../README.rst:67 msgid "" "It is strongly advised that you have prior experience working with " "`asyncio `_ before " "beginning to use **aiogram**." msgstr "" -#: ../../../README.rst:82 +#: ../../../README.rst:71 msgid "If you have any questions, you can visit our community chats on Telegram:" msgstr "" -#: ../../../README.rst:84 +#: ../../../README.rst:73 msgid "🇺🇸 `@aiogram `_" msgstr "" -#: ../../../README.rst:85 +#: ../../../README.rst:74 msgid "🇺🇦 `@aiogramua `_" msgstr "" -#: ../../../README.rst:86 +#: ../../../README.rst:75 msgid "🇺🇿 `@aiogram_uz `_" msgstr "" -#: ../../../README.rst:87 +#: ../../../README.rst:76 msgid "🇰🇿 `@aiogram_kz `_" msgstr "" -#: ../../../README.rst:88 +#: ../../../README.rst:77 msgid "🇷🇺 `@aiogram_ru `_" msgstr "" -#: ../../../README.rst:89 +#: ../../../README.rst:78 msgid "🇮🇷 `@aiogram_fa `_" msgstr "" -#: ../../../README.rst:90 +#: ../../../README.rst:79 msgid "🇮🇹 `@aiogram_it `_" msgstr "" -#: ../../../README.rst:91 +#: ../../../README.rst:80 msgid "🇧🇷 `@aiogram_br `_" msgstr "" @@ -236,3 +216,34 @@ msgstr "" #~ " updates to the latest versions of" #~ " the Bot API" #~ msgstr "" + +#~ msgid "aiogram |beta badge|" +#~ msgstr "" + +#~ msgid "Beta badge" +#~ msgstr "" + +#~ msgid "This version is still in development!" +#~ msgstr "" + +#~ msgid "**Breaking News:**" +#~ msgstr "" + +#~ msgid "*aiogram* 3.0 has breaking changes." +#~ msgstr "" + +#~ msgid "It breaks backward compatibility by introducing new breaking changes!" +#~ msgstr "" + +#~ msgid "" +#~ "Supports `Telegram Bot API 6.7 " +#~ "`_ and gets fast" +#~ " updates to the latest versions of" +#~ " the Bot API" +#~ msgstr "" + +#~ msgid "" +#~ "Uses powerful `magic filters " +#~ "`" +#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/migration_2_to_3.po b/docs/locale/en/LC_MESSAGES/migration_2_to_3.po index 9035b8b8..3541ffff 100644 --- a/docs/locale/en/LC_MESSAGES/migration_2_to_3.po +++ b/docs/locale/en/LC_MESSAGES/migration_2_to_3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -99,17 +99,24 @@ msgid "" "accessed via :code:`data[\"bot\"]`." msgstr "" -#: ../../migration_2_to_3.rst:46 +#: ../../migration_2_to_3.rst:43 +msgid "" +"Now to skip pending updates, you should call the " +":class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly " +"instead of passing :code:`skip_updates=True` to start polling method." +msgstr "" + +#: ../../migration_2_to_3.rst:47 msgid "Filtering events" msgstr "" -#: ../../migration_2_to_3.rst:48 +#: ../../migration_2_to_3.rst:49 msgid "" "Keyword filters can no more be used, use filters explicitly. (`Read more " "» `_)" msgstr "" -#: ../../migration_2_to_3.rst:49 +#: ../../migration_2_to_3.rst:50 msgid "" "In due to keyword filters was removed all enabled by default filters " "(state and content_type now is not enabled), so you should specify them " @@ -118,19 +125,19 @@ msgid "" "use :code:`@router.message(F.photo)`" msgstr "" -#: ../../migration_2_to_3.rst:53 +#: ../../migration_2_to_3.rst:54 msgid "" "Most of common filters is replaced by \"magic filter\". (:ref:`Read more " "» `)" msgstr "" -#: ../../migration_2_to_3.rst:54 +#: ../../migration_2_to_3.rst:55 msgid "" "Now by default message handler receives any content type, if you want " "specific one just add the filters (Magic or any other)" msgstr "" -#: ../../migration_2_to_3.rst:56 +#: ../../migration_2_to_3.rst:57 msgid "" "State filter now is not enabled by default, that's mean if you using " ":code:`state=\"*\"` in v2 then you should not pass any state filter in " @@ -138,38 +145,38 @@ msgid "" "specify the state." msgstr "" -#: ../../migration_2_to_3.rst:59 +#: ../../migration_2_to_3.rst:60 msgid "" "Added possibility to register per-router global filters, that helps to " "reduces the number of repetitions in the code and makes easily way to " "control for what each router will be used." msgstr "" -#: ../../migration_2_to_3.rst:65 +#: ../../migration_2_to_3.rst:66 msgid "Bot API" msgstr "" -#: ../../migration_2_to_3.rst:67 +#: ../../migration_2_to_3.rst:68 msgid "" "Now all API methods is classes with validation (via `pydantic " "`_) (all API calls is also available as " "methods in the Bot class)." msgstr "" -#: ../../migration_2_to_3.rst:69 +#: ../../migration_2_to_3.rst:70 msgid "" "Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " "For example chat type enum now is :class:`aiogram.enums.ChatType` instead" " of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:72 +#: ../../migration_2_to_3.rst:73 msgid "" "Separated HTTP client session into container that can be reused between " "different Bot instances in the application." msgstr "" -#: ../../migration_2_to_3.rst:74 +#: ../../migration_2_to_3.rst:75 msgid "" "API Exceptions is no more classified by specific message in due to " "Telegram has no documented error codes. But all errors is classified by " @@ -179,17 +186,17 @@ msgid "" "types>`)" msgstr "" -#: ../../migration_2_to_3.rst:81 +#: ../../migration_2_to_3.rst:82 msgid "Middlewares" msgstr "" -#: ../../migration_2_to_3.rst:83 +#: ../../migration_2_to_3.rst:84 msgid "" "Middlewares can now control a execution context, e.g. using context " "managers (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:84 +#: ../../migration_2_to_3.rst:85 msgid "" "All contextual data now is shared between middlewares, filters and " "handlers to end-to-end use. For example now you can easily pass some data" @@ -197,75 +204,102 @@ msgid "" "same way as in the handlers via keyword arguments." msgstr "" -#: ../../migration_2_to_3.rst:87 +#: ../../migration_2_to_3.rst:88 msgid "" "Added mechanism named **flags**, that helps to customize handler behavior" " in conjunction with middlewares. (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:92 +#: ../../migration_2_to_3.rst:93 msgid "Keyboard Markup" msgstr "" -#: ../../migration_2_to_3.rst:94 +#: ../../migration_2_to_3.rst:95 msgid "" "Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " "and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " "no methods to extend it, instead you have to use markup builders " ":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " ":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " -"more » `)" +"more » `)" msgstr "" -#: ../../migration_2_to_3.rst:102 +#: ../../migration_2_to_3.rst:103 msgid "Callbacks data" msgstr "" -#: ../../migration_2_to_3.rst:104 +#: ../../migration_2_to_3.rst:105 msgid "" "Callback data factory now is strictly typed via `pydantic " -"`_ models (:ref:`Read more » `_ models (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:109 +#: ../../migration_2_to_3.rst:110 msgid "Finite State machine" msgstr "" -#: ../../migration_2_to_3.rst:111 +#: ../../migration_2_to_3.rst:112 msgid "" "State filter will no more added to all handlers, you will need to specify" " state if you want" msgstr "" -#: ../../migration_2_to_3.rst:112 +#: ../../migration_2_to_3.rst:113 msgid "" "Added possibility to change FSM strategy, for example if you want to " "control state for each user in chat topics instead of user in chat you " "can specify it in the Dispatcher." msgstr "" -#: ../../migration_2_to_3.rst:117 +#: ../../migration_2_to_3.rst:115 +msgid "" +"Now :class:`aiogram.fsm.state.State` and " +":class:`aiogram.fsm.state.StateGroup` don't have helper methods like " +":code:`.set()`, :code:`.next()`, etc." +msgstr "" + +#: ../../migration_2_to_3.rst:118 +msgid "" +"Instead of this you should set states by passing them directly to " +":class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:120 +msgid "" +"State proxy is deprecated, you should update the state data by calling " +":code:`state.set_data(...)` and :code:`state.get_data()` respectively." +msgstr "" + +#: ../../migration_2_to_3.rst:125 msgid "Sending Files" msgstr "" -#: ../../migration_2_to_3.rst:119 +#: ../../migration_2_to_3.rst:127 msgid "" "From now you should wrap sending files into InputFile object before send " "instead of passing IO object directly to the API method. (:ref:`Read more" " » `)" msgstr "" -#: ../../migration_2_to_3.rst:124 +#: ../../migration_2_to_3.rst:132 msgid "Webhook" msgstr "" -#: ../../migration_2_to_3.rst:126 +#: ../../migration_2_to_3.rst:134 msgid "Simplified aiohttp web app configuration" msgstr "" -#: ../../migration_2_to_3.rst:127 +#: ../../migration_2_to_3.rst:135 msgid "" "By default added possibility to upload files when you use reply into " "webhook" msgstr "" + +#~ msgid "" +#~ "Callback data factory now is strictly" +#~ " typed via `pydantic " +#~ "`_ models (:ref:`Read " +#~ "more » `)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po new file mode 100644 index 00000000..b4154aa5 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po @@ -0,0 +1,94 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:3 +msgid "unpinAllGeneralForumTopicMessages" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:5 +msgid "Returns: :obj:`bool`" +msgstr "" + +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:1 +#: of +msgid "" +"Use this method to clear the list of pinned messages in a General forum " +"topic. The bot must be an administrator in the chat for this to work and " +"must have the *can_pin_messages* administrator right in the supergroup. " +"Returns :code:`True` on success." +msgstr "" + +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:3 +#: of +msgid "" +"Source: " +"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" +msgstr "" + +#: ../../docstring +#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages.chat_id:1 +#: of +msgid "" +"Unique identifier for the target chat or username of the target " +"supergroup (in the format :code:`@supergroupusername`)" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:15 +msgid "Usage" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:18 +msgid "As bot method" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:26 +msgid "Method as object" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:28 +msgid "Imports:" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:30 +msgid "" +":code:`from aiogram.methods.unpin_all_general_forum_topic_messages import" +" UnpinAllGeneralForumTopicMessages`" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:31 +msgid "" +"alias: :code:`from aiogram.methods import " +"UnpinAllGeneralForumTopicMessages`" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:34 +msgid "With specific bot" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:41 +msgid "As reply into Webhook in handler" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:49 +msgid "As shortcut from received object" +msgstr "" + +#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:51 +msgid ":meth:`aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages`" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po index df76afc2..9628f5ea 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat.rst:3 msgid "Chat" @@ -88,6 +88,13 @@ msgid "" ":class:`aiogram.methods.get_chat.GetChat`." msgstr "" +#: ../../docstring aiogram.types.chat.Chat.emoji_status_expiration_date:1 of +msgid "" +"*Optional*. Expiration date of the emoji status of the other party in a " +"private chat, if any. Returned only in " +":class:`aiogram.methods.get_chat.GetChat`." +msgstr "" + #: ../../docstring aiogram.types.chat.Chat.bio:1 of msgid "" "*Optional*. Bio of the other party in a private chat. Returned only in " @@ -264,6 +271,7 @@ msgstr "" #: aiogram.types.chat.Chat.set_sticker_set:4 #: aiogram.types.chat.Chat.set_title:4 aiogram.types.chat.Chat.unban:4 #: aiogram.types.chat.Chat.unban_sender_chat:4 +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:4 #: aiogram.types.chat.Chat.unpin_all_messages:4 #: aiogram.types.chat.Chat.unpin_message:4 of msgid ":code:`chat_id`" @@ -320,6 +328,7 @@ msgstr "" #: aiogram.types.chat.Chat.set_permissions aiogram.types.chat.Chat.set_photo #: aiogram.types.chat.Chat.set_sticker_set aiogram.types.chat.Chat.set_title #: aiogram.types.chat.Chat.unban aiogram.types.chat.Chat.unban_sender_chat +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages #: aiogram.types.chat.Chat.unpin_all_messages #: aiogram.types.chat.Chat.unpin_message of msgid "Returns" @@ -1269,6 +1278,33 @@ msgstr "" msgid "instance of method :class:`aiogram.methods.set_chat_photo.SetChatPhoto`" msgstr "" +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:1 of +msgid "" +"Shortcut for method " +":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" +" will automatically fill method attributes:" +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:6 of +msgid "" +"Use this method to clear the list of pinned messages in a General forum " +"topic. The bot must be an administrator in the chat for this to work and " +"must have the *can_pin_messages* administrator right in the supergroup. " +"Returns :code:`True` on success." +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:8 of +msgid "" +"Source: " +"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" +msgstr "" + +#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:10 of +msgid "" +"instance of method " +":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" +msgstr "" + #~ msgid "" #~ "Use this method to get information " #~ "about a member of a chat. The " @@ -1288,4 +1324,3 @@ msgstr "" #~ "by administrators that were appointed by" #~ " him)" #~ msgstr "" - diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po index e04a77e4..8c20ee62 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -173,6 +173,10 @@ msgstr "" msgid "*Optional*. Message is a sticker, information about the sticker" msgstr "" +#: ../../docstring aiogram.types.message.Message.story:1 of +msgid "*Optional*. Message is a forwarded story" +msgstr "" + #: ../../docstring aiogram.types.message.Message.video:1 of msgid "*Optional*. Message is a video, information about the video" msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/poll_answer.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/poll_answer.po index 627b292c..63fb9b5d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/poll_answer.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/poll_answer.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/poll_answer.rst:3 msgid "PollAnswer" @@ -33,12 +33,29 @@ msgstr "" msgid "Unique poll identifier" msgstr "" -#: ../../docstring aiogram.types.poll_answer.PollAnswer.user:1 of -msgid "The user, who changed the answer to the poll" -msgstr "" - #: ../../docstring aiogram.types.poll_answer.PollAnswer.option_ids:1 of msgid "" -"0-based identifiers of answer options, chosen by the user. May be empty " -"if the user retracted their vote." +"0-based identifiers of chosen answer options. May be empty if the vote " +"was retracted." msgstr "" + +#: ../../docstring aiogram.types.poll_answer.PollAnswer.voter_chat:1 of +msgid "" +"*Optional*. The chat that changed the answer to the poll, if the voter is" +" anonymous" +msgstr "" + +#: ../../docstring aiogram.types.poll_answer.PollAnswer.user:1 of +msgid "" +"*Optional*. The user that changed the answer to the poll, if the voter " +"isn't anonymous" +msgstr "" + +#~ msgid "The user, who changed the answer to the poll" +#~ msgstr "" + +#~ msgid "" +#~ "0-based identifiers of answer options, " +#~ "chosen by the user. May be empty" +#~ " if the user retracted their vote." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/story.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/story.po new file mode 100644 index 00000000..92bf0e3a --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/story.po @@ -0,0 +1,32 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../api/types/story.rst:3 +msgid "Story" +msgstr "" + +#: aiogram.types.story.Story:1 of +msgid "" +"This object represents a message about a forwarded story in the chat. " +"Currently holds no information." +msgstr "" + +#: aiogram.types.story.Story:3 of +msgid "Source: https://core.telegram.org/bots/api#story" +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index 2e084a69..e22fe009 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,26 +22,149 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-26)" msgstr "" -#: ../../../CHANGES.rst:24 ../../../CHANGES.rst:66 ../../../CHANGES.rst:229 -#: ../../../CHANGES.rst:329 ../../../CHANGES.rst:389 ../../../CHANGES.rst:440 -#: ../../../CHANGES.rst:513 ../../../CHANGES.rst:554 ../../../CHANGES.rst:592 -#: ../../../CHANGES.rst:640 ../../../CHANGES.rst:716 ../../../CHANGES.rst:749 -#: ../../../CHANGES.rst:780 ../../[towncrier-fragments]:5 -msgid "Features" +#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:92 ../../../CHANGES.rst:137 +#: ../../../CHANGES.rst:207 ../../../CHANGES.rst:393 ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:505 ../../../CHANGES.rst:566 ../../../CHANGES.rst:624 +#: ../../../CHANGES.rst:670 ../../../CHANGES.rst:718 ../../../CHANGES.rst:774 +#: ../../../CHANGES.rst:859 ../../../CHANGES.rst:891 +#: ../../[towncrier-fragments]:5 +msgid "Bugfixes" msgstr "" #: ../../[towncrier-fragments]:7 +msgid "" +"Fixed magic :code:`.as_(...)` operation for values that can be " +"interpreted as `False` (e.g. `0`). `#1281 " +"`_" +msgstr "" + +#: ../../[towncrier-fragments]:9 +msgid "" +"Italic markdown from utils now uses correct decorators `#1282 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:20 +msgid "3.0.0rc2 (2023-08-18)" +msgstr "" + +#: ../../../CHANGES.rst:25 +msgid "" +"Fixed missing message content types (:code:`ContentType.USER_SHARED`, " +":code:`ContentType.CHAT_SHARED`) `#1252 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:27 +msgid "" +"Fixed nested hashtag, cashtag and email message entities not being parsed" +" correctly when these entities are inside another entity. `#1259 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:29 +msgid "" +"Moved global filters check placement into router to add chance to pass " +"context from global filters into handlers in the same way as it possible " +"in other places `#1266 `_" +msgstr "" + +#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:150 +#: ../../../CHANGES.rst:235 ../../../CHANGES.rst:468 ../../../CHANGES.rst:518 +#: ../../../CHANGES.rst:898 +msgid "Improved Documentation" +msgstr "" + +#: ../../../CHANGES.rst:37 +msgid "" +"Added error handling example `examples/error_handling.py` `#1099 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:39 +msgid "" +"Added a few words about skipping pending updates `#1251 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:41 +msgid "" +"Added a section on Dependency Injection technology `#1253 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:43 +msgid "" +"This update includes the addition of a multi-file bot example to the " +"repository. `#1254 `_" +msgstr "" + +#: ../../../CHANGES.rst:45 +msgid "" +"Refactored examples code to use aiogram enumerations and enhanced chat " +"messages with markdown beautification's for a more user-friendly display." +" `#1256 `_" +msgstr "" + +#: ../../../CHANGES.rst:48 +msgid "" +"Supplemented \"Finite State Machine\" section in Migration FAQ `#1264 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:50 +msgid "" +"Removed extra param in docstring of TelegramEventObserver's filter method" +" and fixed typo in I18n documentation. `#1268 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:112 ../../../CHANGES.rst:251 +#: ../../../CHANGES.rst:402 ../../../CHANGES.rst:479 ../../../CHANGES.rst:532 +#: ../../../CHANGES.rst:583 ../../../CHANGES.rst:637 ../../../CHANGES.rst:679 +#: ../../../CHANGES.rst:725 ../../../CHANGES.rst:785 ../../../CHANGES.rst:806 +#: ../../../CHANGES.rst:829 ../../../CHANGES.rst:866 ../../../CHANGES.rst:905 +msgid "Misc" +msgstr "" + +#: ../../../CHANGES.rst:58 +msgid "" +"Enhanced the warning message in dispatcher to include a JSON dump of the " +"update when update type is not known. `#1269 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:60 +msgid "" +"Added support for `Bot API 6.8 `_ `#1275 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:65 +msgid "3.0.0rc1 (2023-08-06)" +msgstr "" + +#: ../../../CHANGES.rst:68 ../../../CHANGES.rst:126 ../../../CHANGES.rst:168 +#: ../../../CHANGES.rst:331 ../../../CHANGES.rst:431 ../../../CHANGES.rst:491 +#: ../../../CHANGES.rst:542 ../../../CHANGES.rst:615 ../../../CHANGES.rst:656 +#: ../../../CHANGES.rst:694 ../../../CHANGES.rst:742 ../../../CHANGES.rst:818 +#: ../../../CHANGES.rst:851 ../../../CHANGES.rst:882 +msgid "Features" +msgstr "" + +#: ../../../CHANGES.rst:70 msgid "Added Currency enum. You can use it like this:" msgstr "" -#: ../../[towncrier-fragments]:19 +#: ../../../CHANGES.rst:82 msgid "`#1194 `_" msgstr "" -#: ../../[towncrier-fragments]:20 +#: ../../../CHANGES.rst:83 msgid "" "Updated keyboard builders with new methods for integrating buttons and " "keyboard creation more seamlessly. Added functionality to create buttons " @@ -50,49 +173,45 @@ msgid "" "`#1236 `_" msgstr "" -#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:291 -#: ../../../CHANGES.rst:354 ../../../CHANGES.rst:403 ../../../CHANGES.rst:464 -#: ../../../CHANGES.rst:522 ../../../CHANGES.rst:568 ../../../CHANGES.rst:616 -#: ../../../CHANGES.rst:672 ../../../CHANGES.rst:757 ../../../CHANGES.rst:789 -#: ../../[towncrier-fragments]:27 -msgid "Bugfixes" +#: ../../../CHANGES.rst:87 +msgid "" +"Added support for message_thread_id in ChatActionSender `#1249 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:29 +#: ../../../CHANGES.rst:94 msgid "" "Fixed polling startup when \"bot\" key is passed manually into dispatcher" " workflow data `#1242 `_" msgstr "" -#: ../../[towncrier-fragments]:31 +#: ../../../CHANGES.rst:96 msgid "Added codegen configuration for lost shortcuts:" msgstr "" -#: ../../[towncrier-fragments]:33 +#: ../../../CHANGES.rst:98 msgid "ShippingQuery.answer" msgstr "" -#: ../../[towncrier-fragments]:34 +#: ../../../CHANGES.rst:99 msgid "PreCheckoutQuery.answer" msgstr "" -#: ../../[towncrier-fragments]:35 +#: ../../../CHANGES.rst:100 msgid "Message.delete_reply_markup" msgstr "" -#: ../../[towncrier-fragments]:36 +#: ../../../CHANGES.rst:101 msgid "`#1244 `_" msgstr "" -#: ../../../CHANGES.rst:149 ../../../CHANGES.rst:300 ../../../CHANGES.rst:377 -#: ../../../CHANGES.rst:430 ../../../CHANGES.rst:481 ../../../CHANGES.rst:535 -#: ../../../CHANGES.rst:577 ../../../CHANGES.rst:623 ../../../CHANGES.rst:683 -#: ../../../CHANGES.rst:704 ../../../CHANGES.rst:727 ../../../CHANGES.rst:764 -#: ../../../CHANGES.rst:803 ../../[towncrier-fragments]:40 -msgid "Misc" +#: ../../../CHANGES.rst:107 +msgid "" +"Added documentation for webhook and polling modes. `#1241 " +"`_" msgstr "" -#: ../../[towncrier-fragments]:42 +#: ../../../CHANGES.rst:114 msgid "" "Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" " Bot` argument to the :code:`.read(...)` method, so, from now " @@ -100,18 +219,18 @@ msgid "" "`_" msgstr "" -#: ../../[towncrier-fragments]:46 +#: ../../../CHANGES.rst:118 msgid "" "Code-generated :code:`__init__` typehints in types and methods to make " "IDE happy without additional pydantic plugin `#1245 " "`_" msgstr "" -#: ../../../CHANGES.rst:21 +#: ../../../CHANGES.rst:123 msgid "3.0.0b9 (2023-07-30)" msgstr "" -#: ../../../CHANGES.rst:26 +#: ../../../CHANGES.rst:128 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -119,7 +238,7 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:131 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -127,13 +246,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:37 +#: ../../../CHANGES.rst:139 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../../CHANGES.rst:39 +#: ../../../CHANGES.rst:141 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -143,26 +262,21 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:44 +#: ../../../CHANGES.rst:146 msgid "Updated pydantic to 2.1 with few bugfixes" msgstr "" -#: ../../../CHANGES.rst:48 ../../../CHANGES.rst:133 ../../../CHANGES.rst:366 -#: ../../../CHANGES.rst:416 ../../../CHANGES.rst:796 -msgid "Improved Documentation" -msgstr "" - -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:152 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:55 ../../../CHANGES.rst:140 ../../../CHANGES.rst:423 +#: ../../../CHANGES.rst:157 ../../../CHANGES.rst:242 ../../../CHANGES.rst:525 msgid "Deprecations and Removals" msgstr "" -#: ../../../CHANGES.rst:57 +#: ../../../CHANGES.rst:159 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -170,78 +284,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:63 +#: ../../../CHANGES.rst:165 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:68 +#: ../../../CHANGES.rst:170 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:70 +#: ../../../CHANGES.rst:172 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:72 +#: ../../../CHANGES.rst:174 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:85 +#: ../../../CHANGES.rst:187 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:87 +#: ../../../CHANGES.rst:189 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:88 +#: ../../../CHANGES.rst:190 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:90 +#: ../../../CHANGES.rst:192 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:91 +#: ../../../CHANGES.rst:193 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:92 +#: ../../../CHANGES.rst:194 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:93 +#: ../../../CHANGES.rst:195 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:96 +#: ../../../CHANGES.rst:198 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:98 +#: ../../../CHANGES.rst:200 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:100 +#: ../../../CHANGES.rst:202 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:107 +#: ../../../CHANGES.rst:209 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -249,51 +363,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:110 +#: ../../../CHANGES.rst:212 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:112 +#: ../../../CHANGES.rst:214 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:114 +#: ../../../CHANGES.rst:216 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:116 +#: ../../../CHANGES.rst:218 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:118 +#: ../../../CHANGES.rst:220 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:120 +#: ../../../CHANGES.rst:222 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:122 +#: ../../../CHANGES.rst:224 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:125 +#: ../../../CHANGES.rst:227 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -302,71 +416,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:135 +#: ../../../CHANGES.rst:237 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:142 +#: ../../../CHANGES.rst:244 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:144 +#: ../../../CHANGES.rst:246 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:151 +#: ../../../CHANGES.rst:253 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:155 +#: ../../../CHANGES.rst:257 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:158 +#: ../../../CHANGES.rst:260 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:159 +#: ../../../CHANGES.rst:261 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:163 +#: ../../../CHANGES.rst:265 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:165 +#: ../../../CHANGES.rst:267 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:166 +#: ../../../CHANGES.rst:268 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:272 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:171 +#: ../../../CHANGES.rst:273 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:172 +#: ../../../CHANGES.rst:274 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -374,13 +488,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:175 +#: ../../../CHANGES.rst:277 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:178 +#: ../../../CHANGES.rst:280 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -388,69 +502,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:183 +#: ../../../CHANGES.rst:285 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:184 +#: ../../../CHANGES.rst:286 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:185 +#: ../../../CHANGES.rst:287 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:187 +#: ../../../CHANGES.rst:289 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:188 +#: ../../../CHANGES.rst:290 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:189 +#: ../../../CHANGES.rst:291 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:193 +#: ../../../CHANGES.rst:295 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:197 +#: ../../../CHANGES.rst:299 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:199 +#: ../../../CHANGES.rst:301 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:201 +#: ../../../CHANGES.rst:303 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:213 +#: ../../../CHANGES.rst:315 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:231 +#: ../../../CHANGES.rst:333 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:233 +#: ../../../CHANGES.rst:335 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:251 +#: ../../../CHANGES.rst:353 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:339 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -469,15 +583,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:253 +#: ../../../CHANGES.rst:355 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:278 +#: ../../../CHANGES.rst:380 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:256 +#: ../../../CHANGES.rst:358 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -505,85 +619,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:280 +#: ../../../CHANGES.rst:382 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:281 +#: ../../../CHANGES.rst:383 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:282 +#: ../../../CHANGES.rst:384 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:283 +#: ../../../CHANGES.rst:385 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:284 +#: ../../../CHANGES.rst:386 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:388 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:293 +#: ../../../CHANGES.rst:395 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:397 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:302 +#: ../../../CHANGES.rst:404 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:304 +#: ../../../CHANGES.rst:406 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:306 +#: ../../../CHANGES.rst:408 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:308 +#: ../../../CHANGES.rst:410 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:312 +#: ../../../CHANGES.rst:414 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:314 +#: ../../../CHANGES.rst:416 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:417 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -591,13 +705,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:318 +#: ../../../CHANGES.rst:420 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:320 +#: ../../../CHANGES.rst:422 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -605,127 +719,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:326 +#: ../../../CHANGES.rst:428 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:331 +#: ../../../CHANGES.rst:433 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:333 +#: ../../../CHANGES.rst:435 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:335 +#: ../../../CHANGES.rst:437 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:337 +#: ../../../CHANGES.rst:439 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:338 +#: ../../../CHANGES.rst:440 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:339 +#: ../../../CHANGES.rst:441 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:340 +#: ../../../CHANGES.rst:442 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:341 +#: ../../../CHANGES.rst:443 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:342 +#: ../../../CHANGES.rst:444 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:343 +#: ../../../CHANGES.rst:445 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:344 +#: ../../../CHANGES.rst:446 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:346 +#: ../../../CHANGES.rst:448 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:347 +#: ../../../CHANGES.rst:449 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:348 +#: ../../../CHANGES.rst:450 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:349 +#: ../../../CHANGES.rst:451 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:356 +#: ../../../CHANGES.rst:458 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:358 +#: ../../../CHANGES.rst:460 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:360 +#: ../../../CHANGES.rst:462 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:361 +#: ../../../CHANGES.rst:463 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:362 +#: ../../../CHANGES.rst:464 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:368 +#: ../../../CHANGES.rst:470 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:370 +#: ../../../CHANGES.rst:472 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:372 +#: ../../../CHANGES.rst:474 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:379 +#: ../../../CHANGES.rst:481 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:381 +#: ../../../CHANGES.rst:483 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -734,23 +848,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:386 +#: ../../../CHANGES.rst:488 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:391 +#: ../../../CHANGES.rst:493 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:393 +#: ../../../CHANGES.rst:495 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:395 +#: ../../../CHANGES.rst:497 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -758,61 +872,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:398 +#: ../../../CHANGES.rst:500 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:405 +#: ../../../CHANGES.rst:507 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:407 +#: ../../../CHANGES.rst:509 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:409 +#: ../../../CHANGES.rst:511 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:411 +#: ../../../CHANGES.rst:513 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:418 +#: ../../../CHANGES.rst:520 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:425 +#: ../../../CHANGES.rst:527 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:432 +#: ../../../CHANGES.rst:534 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:437 +#: ../../../CHANGES.rst:539 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:544 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -820,198 +934,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:548 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:550 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:456 +#: ../../../CHANGES.rst:558 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:457 +#: ../../../CHANGES.rst:559 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:459 +#: ../../../CHANGES.rst:561 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:466 +#: ../../../CHANGES.rst:568 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:468 +#: ../../../CHANGES.rst:570 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:470 +#: ../../../CHANGES.rst:572 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:471 +#: ../../../CHANGES.rst:573 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:574 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:473 +#: ../../../CHANGES.rst:575 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:576 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:476 +#: ../../../CHANGES.rst:578 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:585 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:587 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:487 +#: ../../../CHANGES.rst:589 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:489 +#: ../../../CHANGES.rst:591 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:491 +#: ../../../CHANGES.rst:593 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:493 +#: ../../../CHANGES.rst:595 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:494 +#: ../../../CHANGES.rst:596 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:495 +#: ../../../CHANGES.rst:597 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:496 +#: ../../../CHANGES.rst:598 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:497 +#: ../../../CHANGES.rst:599 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:498 +#: ../../../CHANGES.rst:600 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:499 +#: ../../../CHANGES.rst:601 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:501 +#: ../../../CHANGES.rst:603 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:503 +#: ../../../CHANGES.rst:605 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:505 +#: ../../../CHANGES.rst:607 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:510 +#: ../../../CHANGES.rst:612 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:515 +#: ../../../CHANGES.rst:617 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:517 +#: ../../../CHANGES.rst:619 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:524 +#: ../../../CHANGES.rst:626 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:526 +#: ../../../CHANGES.rst:628 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:528 +#: ../../../CHANGES.rst:630 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:530 +#: ../../../CHANGES.rst:632 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:537 +#: ../../../CHANGES.rst:639 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:539 +#: ../../../CHANGES.rst:641 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -1019,14 +1133,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:542 +#: ../../../CHANGES.rst:644 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:544 +#: ../../../CHANGES.rst:646 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -1035,113 +1149,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:551 +#: ../../../CHANGES.rst:653 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:556 +#: ../../../CHANGES.rst:658 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:559 +#: ../../../CHANGES.rst:661 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:561 +#: ../../../CHANGES.rst:663 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:563 +#: ../../../CHANGES.rst:665 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:570 +#: ../../../CHANGES.rst:672 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:572 +#: ../../../CHANGES.rst:674 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:579 +#: ../../../CHANGES.rst:681 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:581 +#: ../../../CHANGES.rst:683 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:583 +#: ../../../CHANGES.rst:685 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:589 +#: ../../../CHANGES.rst:691 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:594 +#: ../../../CHANGES.rst:696 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:596 +#: ../../../CHANGES.rst:698 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:612 +#: ../../../CHANGES.rst:714 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:618 +#: ../../../CHANGES.rst:720 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:625 +#: ../../../CHANGES.rst:727 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:627 +#: ../../../CHANGES.rst:729 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:629 +#: ../../../CHANGES.rst:731 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:631 +#: ../../../CHANGES.rst:733 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1149,11 +1263,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:637 +#: ../../../CHANGES.rst:739 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:642 +#: ../../../CHANGES.rst:744 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1161,258 +1275,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:646 +#: ../../../CHANGES.rst:748 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:656 +#: ../../../CHANGES.rst:758 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:657 +#: ../../../CHANGES.rst:759 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:660 +#: ../../../CHANGES.rst:762 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:662 +#: ../../../CHANGES.rst:764 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:668 +#: ../../../CHANGES.rst:770 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:674 +#: ../../../CHANGES.rst:776 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:676 +#: ../../../CHANGES.rst:778 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:678 +#: ../../../CHANGES.rst:780 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:685 +#: ../../../CHANGES.rst:787 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:688 +#: ../../../CHANGES.rst:790 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:690 +#: ../../../CHANGES.rst:792 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:692 +#: ../../../CHANGES.rst:794 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:693 +#: ../../../CHANGES.rst:795 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:694 +#: ../../../CHANGES.rst:796 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:695 +#: ../../../CHANGES.rst:797 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:701 +#: ../../../CHANGES.rst:803 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:706 +#: ../../../CHANGES.rst:808 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:708 +#: ../../../CHANGES.rst:810 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:713 +#: ../../../CHANGES.rst:815 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:718 +#: ../../../CHANGES.rst:820 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:720 +#: ../../../CHANGES.rst:822 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:722 +#: ../../../CHANGES.rst:824 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:831 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:731 +#: ../../../CHANGES.rst:833 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:733 +#: ../../../CHANGES.rst:835 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:734 +#: ../../../CHANGES.rst:836 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:735 +#: ../../../CHANGES.rst:837 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:736 +#: ../../../CHANGES.rst:838 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:738 +#: ../../../CHANGES.rst:840 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:740 +#: ../../../CHANGES.rst:842 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:746 +#: ../../../CHANGES.rst:848 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:751 +#: ../../../CHANGES.rst:853 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:759 +#: ../../../CHANGES.rst:861 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:766 +#: ../../../CHANGES.rst:868 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:768 +#: ../../../CHANGES.rst:870 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:770 +#: ../../../CHANGES.rst:872 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:772 +#: ../../../CHANGES.rst:874 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:777 +#: ../../../CHANGES.rst:879 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:782 +#: ../../../CHANGES.rst:884 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:784 +#: ../../../CHANGES.rst:886 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:791 +#: ../../../CHANGES.rst:893 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:798 +#: ../../../CHANGES.rst:900 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:805 +#: ../../../CHANGES.rst:907 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:807 +#: ../../../CHANGES.rst:909 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:809 +#: ../../../CHANGES.rst:911 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -3043,3 +3157,6 @@ msgstr "" #~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" #~ msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/contributing.po b/docs/locale/uk_UA/LC_MESSAGES/contributing.po index 40354edd..7cf1b5d8 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/contributing.po +++ b/docs/locale/uk_UA/LC_MESSAGES/contributing.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -78,112 +78,112 @@ msgstr "" msgid "Activate the environment" msgstr "" -#: ../../contributing.rst:38 -msgid "Linux/ macOS:" +#: ../../contributing.rst:38 ../../contributing.rst:77 +msgid "Linux / macOS:" msgstr "" #: ../../contributing.rst:44 -msgid "Windows PoweShell" +msgid "Windows cmd" msgstr "" #: ../../contributing.rst:50 -msgid "" -"To check it worked, use described command, it should show the :code:`pip`" -" location inside the isolated environment" -msgstr "" - -#: ../../contributing.rst:53 -msgid "Linux, macOS:" -msgstr "" - -#: ../../contributing.rst:59 msgid "Windows PowerShell" msgstr "" -#: ../../contributing.rst:65 +#: ../../contributing.rst:56 msgid "" -"Also make you shure you have the latest pip version in your virtual " +"To check it worked, use described command, it should show the :code:`pip`" +" version and location inside the isolated environment" +msgstr "" + +#: ../../contributing.rst:64 +msgid "" +"Also make sure you have the latest pip version in your virtual " "environment to avoid errors on next steps:" msgstr "" -#: ../../contributing.rst:74 +#: ../../contributing.rst:73 msgid "Setup project" msgstr "" -#: ../../contributing.rst:76 +#: ../../contributing.rst:75 msgid "" "After activating the environment install `aiogram` from sources and their" -" dependencies:" +" dependencies." msgstr "" -#: ../../contributing.rst:82 +#: ../../contributing.rst:83 +msgid "Windows:" +msgstr "" + +#: ../../contributing.rst:89 msgid "" "It will install :code:`aiogram` in editable mode into your virtual " "environment and all dependencies." msgstr "" -#: ../../contributing.rst:85 +#: ../../contributing.rst:92 msgid "Making changes in code" msgstr "" -#: ../../contributing.rst:87 +#: ../../contributing.rst:94 msgid "" "At this point you can make any changes in the code that you want, it can " "be any fixes, implementing new features or experimenting." msgstr "" -#: ../../contributing.rst:92 +#: ../../contributing.rst:99 msgid "Format the code (code-style)" msgstr "" -#: ../../contributing.rst:94 +#: ../../contributing.rst:101 msgid "" "Note that this project is Black-formatted, so you should follow that " "code-style, too be sure You're correctly doing this let's reformat the " "code automatically:" msgstr "" -#: ../../contributing.rst:104 +#: ../../contributing.rst:111 msgid "Run tests" msgstr "" -#: ../../contributing.rst:106 +#: ../../contributing.rst:113 msgid "All changes should be tested:" msgstr "" -#: ../../contributing.rst:112 +#: ../../contributing.rst:119 msgid "" "Also if you are doing something with Redis-storage, you will need to test" " everything works with Redis:" msgstr "" -#: ../../contributing.rst:119 +#: ../../contributing.rst:126 msgid "Docs" msgstr "" -#: ../../contributing.rst:121 +#: ../../contributing.rst:128 msgid "" "We are using `Sphinx` to render docs in different languages, all sources " "located in `docs` directory, you can change the sources and to test it " "you can start live-preview server and look what you are doing:" msgstr "" -#: ../../contributing.rst:130 +#: ../../contributing.rst:137 msgid "Docs translations" msgstr "" -#: ../../contributing.rst:132 +#: ../../contributing.rst:139 msgid "" "Translation of the documentation is very necessary and cannot be done " "without the help of the community from all over the world, so you are " "welcome to translate the documentation into different languages." msgstr "" -#: ../../contributing.rst:136 +#: ../../contributing.rst:143 msgid "Before start, let's up to date all texts:" msgstr "" -#: ../../contributing.rst:144 +#: ../../contributing.rst:151 msgid "" "Change the :code:`` in example below to the target " "language code, after that you can modify texts inside " @@ -192,120 +192,120 @@ msgid "" "example via `poedit `_." msgstr "" -#: ../../contributing.rst:149 +#: ../../contributing.rst:156 msgid "To view results:" msgstr "" -#: ../../contributing.rst:157 +#: ../../contributing.rst:164 msgid "Describe changes" msgstr "" -#: ../../contributing.rst:159 +#: ../../contributing.rst:166 msgid "" "Describe your changes in one or more sentences so that bot developers " "know what's changed in their favorite framework - create " "`..rst` file and write the description." msgstr "" -#: ../../contributing.rst:162 +#: ../../contributing.rst:169 msgid "" ":code:`` is Issue or Pull-request number, after release link to " "this issue will be published to the *Changelog* page." msgstr "" -#: ../../contributing.rst:165 +#: ../../contributing.rst:172 msgid ":code:`` is a changes category marker, it can be one of:" msgstr "" -#: ../../contributing.rst:167 +#: ../../contributing.rst:174 msgid ":code:`feature` - when you are implementing new feature" msgstr "" -#: ../../contributing.rst:168 +#: ../../contributing.rst:175 msgid ":code:`bugfix` - when you fix a bug" msgstr "" -#: ../../contributing.rst:169 +#: ../../contributing.rst:176 msgid ":code:`doc` - when you improve the docs" msgstr "" -#: ../../contributing.rst:170 +#: ../../contributing.rst:177 msgid ":code:`removal` - when you remove something from the framework" msgstr "" -#: ../../contributing.rst:171 +#: ../../contributing.rst:178 msgid "" ":code:`misc` - when changed something inside the Core or project " "configuration" msgstr "" -#: ../../contributing.rst:173 +#: ../../contributing.rst:180 msgid "" "If you have troubles with changing category feel free to ask Core-" "contributors to help with choosing it." msgstr "" -#: ../../contributing.rst:176 +#: ../../contributing.rst:183 msgid "Complete" msgstr "" -#: ../../contributing.rst:178 +#: ../../contributing.rst:185 msgid "" "After you have made all your changes, publish them to the repository and " "create a pull request as mentioned at the beginning of the article and " "wait for a review of these changes." msgstr "" -#: ../../contributing.rst:183 +#: ../../contributing.rst:190 msgid "Star on GitHub" msgstr "" -#: ../../contributing.rst:185 +#: ../../contributing.rst:192 msgid "" "You can \"star\" repository on GitHub - " "https://github.com/aiogram/aiogram (click the star button at the top " "right)" msgstr "" -#: ../../contributing.rst:187 +#: ../../contributing.rst:194 msgid "" "Adding stars makes it easier for other people to find this project and " "understand how useful it is." msgstr "" -#: ../../contributing.rst:190 +#: ../../contributing.rst:197 msgid "Guides" msgstr "" -#: ../../contributing.rst:192 +#: ../../contributing.rst:199 msgid "" "You can write guides how to develop Bots on top of aiogram and publish it" " into YouTube, Medium, GitHub Books, any Courses platform or any other " "platform that you know." msgstr "" -#: ../../contributing.rst:195 +#: ../../contributing.rst:202 msgid "" "This will help more people learn about the framework and learn how to use" " it" msgstr "" -#: ../../contributing.rst:199 +#: ../../contributing.rst:206 msgid "Take answers" msgstr "" -#: ../../contributing.rst:201 +#: ../../contributing.rst:208 msgid "" "The developers is always asks for any question in our chats or any other " "platforms like GitHub Discussions, StackOverflow and others, feel free to" " answer to this questions." msgstr "" -#: ../../contributing.rst:205 +#: ../../contributing.rst:212 msgid "Funding" msgstr "" -#: ../../contributing.rst:207 +#: ../../contributing.rst:214 msgid "" "The development of the project is free and not financed by commercial " "organizations, it is my personal initiative (`@JRootJunior " @@ -313,7 +313,7 @@ msgid "" "project in my free time." msgstr "" -#: ../../contributing.rst:211 +#: ../../contributing.rst:218 msgid "" "So, if you want to financially support the project, or, for example, give" " me a pizza or a beer, you can do it on `OpenCollective " @@ -328,3 +328,31 @@ msgstr "" #~ "`_ or `Patreon " #~ "`_." #~ msgstr "" + +#~ msgid "Linux/ macOS:" +#~ msgstr "" + +#~ msgid "Windows PoweShell" +#~ msgstr "" + +#~ msgid "" +#~ "To check it worked, use described " +#~ "command, it should show the :code:`pip`" +#~ " location inside the isolated environment" +#~ msgstr "" + +#~ msgid "Linux, macOS:" +#~ msgstr "" + +#~ msgid "" +#~ "Also make you shure you have the" +#~ " latest pip version in your virtual" +#~ " environment to avoid errors on next" +#~ " steps:" +#~ msgstr "" + +#~ msgid "" +#~ "After activating the environment install " +#~ "`aiogram` from sources and their " +#~ "dependencies:" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dependency_injection.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dependency_injection.po new file mode 100644 index 00000000..b3e158d8 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dependency_injection.po @@ -0,0 +1,96 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../dispatcher/dependency_injection.rst:3 +msgid "Dependency injection" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:5 +msgid "" +"Dependency injection is a programming technique that makes a class " +"independent of its dependencies. It achieves that by decoupling the usage" +" of an object from its creation. This helps you to follow `SOLID's " +"`_ dependency inversion and single " +"responsibility principles." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:12 +msgid "How it works in aiogram" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:14 +msgid "" +"For each update :class:`aiogram.dispatcher.dispatcher.Dispatcher` passes " +"handling context data. Filters and middleware can also make changes to " +"the context." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:17 +msgid "" +"To access contextual data you should specify corresponding keyword " +"parameter in handler or filter. For example, to get " +":class:`aiogram.fsm.context.FSMContext` we do it like that:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:30 +msgid "Injecting own dependencies" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:32 +msgid "Aiogram provides several ways to complement / modify contextual data." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:34 +msgid "" +"The first and easiest way is to simply specify the named arguments in " +":class:`aiogram.dispatcher.dispatcher.Dispatcher` initialization, polling" +" start methods or " +":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` " +"initialization if you use webhooks." +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:46 +msgid "Analogy for webhook:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:55 +msgid "" +":class:`aiogram.dispatcher.dispatcher.Dispatcher`'s workflow data also " +"can be supplemented by setting values as in a dictionary:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:63 +msgid "" +"The middlewares updates the context quite often. You can read more about " +"them on this page:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:66 +msgid ":ref:`Middlewares `" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:68 +msgid "The last way is to return a dictionary from the filter:" +msgstr "" + +#: ../../dispatcher/dependency_injection.rst:72 +msgid "" +"...or using :ref:`MagicFilter ` with :code:`.as_(...)` " +"method." +msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po index 7b2707da..099f6e08 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: 2022-12-10 19:44+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -38,12 +38,13 @@ msgstr "" "обробників, фільтрів і т.п. ви можете знайти на наступних сторінках:" #: ../../dispatcher/dispatcher.rst:9 -msgid "`Router `__" +#, fuzzy +msgid ":ref:`Router `" msgstr "`Router `__" #: ../../dispatcher/dispatcher.rst:10 -msgid "`Observer `__" -msgstr "`Observer `__" +msgid ":ref:`Filtering events`" +msgstr "" #: aiogram.dispatcher.dispatcher.Dispatcher:1 #: aiogram.dispatcher.dispatcher.Dispatcher.__init__:1 of @@ -186,3 +187,6 @@ msgstr "" #~ msgid "Poling timeout" #~ msgstr "Час очікування на відповідь" + +#~ msgid "`Observer `__" +#~ msgstr "`Observer `__" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/chat_member_updated.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/chat_member_updated.po index 6f6d5248..6b144595 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/chat_member_updated.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/chat_member_updated.po @@ -5,23 +5,42 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: 2022-10-25 18:00+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/filters/chat_member_updated.rst:3 msgid "ChatMemberUpdated" msgstr "Зміна статусу користувача в чаті" -#: ../../dispatcher/filters/chat_member_updated.rst:10 +#: ../../dispatcher/filters/chat_member_updated.rst:6 +msgid "Usage" +msgstr "Використання" + +#: ../../dispatcher/filters/chat_member_updated.rst:8 +msgid "Handle user leave or join events" +msgstr "Керуйте подіями, які залишають користувачів або приєднуються" + +#: ../../dispatcher/filters/chat_member_updated.rst:20 +msgid "" +"Or construct your own terms via using pre-defined set of statuses and " +"transitions." +msgstr "" +"Або створіть власні умови, використовуючи попередньо визначений набір " +"статусів і переходів." + +#: ../../dispatcher/filters/chat_member_updated.rst:24 +msgid "Explanation" +msgstr "" + +#: ../../dispatcher/filters/chat_member_updated.rst:31 msgid "" "You can import from :code:`aiogram.filters` all available variants of " "`statuses`_, `status groups`_ or `transitions`_:" @@ -29,98 +48,98 @@ msgstr "" "Ви можете імпортувати з :code:`aiogram.filters` усі доступні варіанти " "`statuses`_, `status group`_ або `transitions`_:" -#: ../../dispatcher/filters/chat_member_updated.rst:14 +#: ../../dispatcher/filters/chat_member_updated.rst:35 msgid "Statuses" msgstr "Статуси" -#: ../../dispatcher/filters/chat_member_updated.rst:17 -#: ../../dispatcher/filters/chat_member_updated.rst:42 -#: ../../dispatcher/filters/chat_member_updated.rst:62 +#: ../../dispatcher/filters/chat_member_updated.rst:38 +#: ../../dispatcher/filters/chat_member_updated.rst:63 +#: ../../dispatcher/filters/chat_member_updated.rst:83 msgid "name" msgstr "ім'я" -#: ../../dispatcher/filters/chat_member_updated.rst:17 -#: ../../dispatcher/filters/chat_member_updated.rst:42 -#: ../../dispatcher/filters/chat_member_updated.rst:62 +#: ../../dispatcher/filters/chat_member_updated.rst:38 +#: ../../dispatcher/filters/chat_member_updated.rst:63 +#: ../../dispatcher/filters/chat_member_updated.rst:83 msgid "Description" msgstr "Опис" -#: ../../dispatcher/filters/chat_member_updated.rst:19 +#: ../../dispatcher/filters/chat_member_updated.rst:40 msgid ":code:`CREATOR`" msgstr ":code:`CREATOR`" -#: ../../dispatcher/filters/chat_member_updated.rst:19 +#: ../../dispatcher/filters/chat_member_updated.rst:40 msgid "Chat owner" msgstr "Власник чату" -#: ../../dispatcher/filters/chat_member_updated.rst:21 +#: ../../dispatcher/filters/chat_member_updated.rst:42 msgid ":code:`ADMINISTRATOR`" msgstr ":code:`ADMINISTRATOR`" -#: ../../dispatcher/filters/chat_member_updated.rst:21 +#: ../../dispatcher/filters/chat_member_updated.rst:42 msgid "Chat administrator" msgstr "Адміністратор чату" -#: ../../dispatcher/filters/chat_member_updated.rst:23 +#: ../../dispatcher/filters/chat_member_updated.rst:44 msgid ":code:`MEMBER`" msgstr ":code:`MEMBER`" -#: ../../dispatcher/filters/chat_member_updated.rst:23 +#: ../../dispatcher/filters/chat_member_updated.rst:44 msgid "Member of the chat" msgstr "Учасник чату" -#: ../../dispatcher/filters/chat_member_updated.rst:25 +#: ../../dispatcher/filters/chat_member_updated.rst:46 msgid ":code:`RESTRICTED`" msgstr ":code:`RESTRICTED`" -#: ../../dispatcher/filters/chat_member_updated.rst:25 +#: ../../dispatcher/filters/chat_member_updated.rst:46 msgid "Restricted user (can be not member)" msgstr "Обмежений користувач (може бути не учасником)" -#: ../../dispatcher/filters/chat_member_updated.rst:27 +#: ../../dispatcher/filters/chat_member_updated.rst:48 msgid ":code:`LEFT`" msgstr ":code:`LEFT`" -#: ../../dispatcher/filters/chat_member_updated.rst:27 +#: ../../dispatcher/filters/chat_member_updated.rst:48 msgid "Isn't member of the chat" msgstr "Не є учасником чату" -#: ../../dispatcher/filters/chat_member_updated.rst:29 +#: ../../dispatcher/filters/chat_member_updated.rst:50 msgid ":code:`KICKED`" msgstr ":code:`KICKED`" -#: ../../dispatcher/filters/chat_member_updated.rst:29 +#: ../../dispatcher/filters/chat_member_updated.rst:50 msgid "Kicked member by administrators" msgstr "Вигнанийадміністраторами учасник" -#: ../../dispatcher/filters/chat_member_updated.rst:32 +#: ../../dispatcher/filters/chat_member_updated.rst:53 msgid "" -"Statuses can be extended with `is_member` flag by prefixing with :code:`" -"+` (for :code:`is_member == True)` or :code:`-` (for :code:`is_member == " -"False`) symbol, like :code:`+RESTRICTED` or :code:`-RESTRICTED`" +"Statuses can be extended with `is_member` flag by prefixing with " +":code:`+` (for :code:`is_member == True)` or :code:`-` (for " +":code:`is_member == False`) symbol, like :code:`+RESTRICTED` or " +":code:`-RESTRICTED`" msgstr "" -"Статуси можна розширити маркером `is_member`, додавши префікс :" -"code:`+` (для :code:`is_member == True)` або :code:`-` (для :code:" -"`is_member == False`) , наприклад :code:`+RESTRICTED` або :code:`-" -"RESTRICTED`" +"Статуси можна розширити маркером `is_member`, додавши префікс :code:`+` " +"(для :code:`is_member == True)` або :code:`-` (для :code:`is_member == " +"False`) , наприклад :code:`+RESTRICTED` або :code:`-RESTRICTED`" -#: ../../dispatcher/filters/chat_member_updated.rst:37 +#: ../../dispatcher/filters/chat_member_updated.rst:58 msgid "Status groups" msgstr "Групи статусів" -#: ../../dispatcher/filters/chat_member_updated.rst:39 +#: ../../dispatcher/filters/chat_member_updated.rst:60 msgid "" "The particular statuses can be combined via bitwise :code:`or` operator, " "like :code:`CREATOR | ADMINISTRATOR`" msgstr "" -"Окремі статуси можна комбінувати за допомогою побітового оператора :code:" -"`or`, наприклад :code:`CREATOR | ADMINISTRATOR`" +"Окремі статуси можна комбінувати за допомогою побітового оператора " +":code:`or`, наприклад :code:`CREATOR | ADMINISTRATOR`" -#: ../../dispatcher/filters/chat_member_updated.rst:44 +#: ../../dispatcher/filters/chat_member_updated.rst:65 msgid ":code:`IS_MEMBER`" msgstr ":code:`IS_MEMBER`" -#: ../../dispatcher/filters/chat_member_updated.rst:44 +#: ../../dispatcher/filters/chat_member_updated.rst:65 msgid "" "Combination of :code:`(CREATOR | ADMINISTRATOR | MEMBER | +RESTRICTED)` " "statuses." @@ -128,41 +147,41 @@ msgstr "" "Комбінація статусів :code:`(CREATOR | ADMINISTRATOR | MEMBER | " "+RESTRICTED)`." -#: ../../dispatcher/filters/chat_member_updated.rst:46 +#: ../../dispatcher/filters/chat_member_updated.rst:67 msgid ":code:`IS_ADMIN`" msgstr ":code:`IS_ADMIN`" -#: ../../dispatcher/filters/chat_member_updated.rst:46 +#: ../../dispatcher/filters/chat_member_updated.rst:67 msgid "Combination of :code:`(CREATOR | ADMINISTRATOR)` statuses." msgstr "Комбінація статусів :code:`(CREATOR | ADMINISTRATOR)`." -#: ../../dispatcher/filters/chat_member_updated.rst:48 +#: ../../dispatcher/filters/chat_member_updated.rst:69 msgid ":code:`IS_NOT_MEMBER`" msgstr ":code:`IS_NOT_MEMBER`" -#: ../../dispatcher/filters/chat_member_updated.rst:48 +#: ../../dispatcher/filters/chat_member_updated.rst:69 msgid "Combination of :code:`(LEFT | KICKED | -RESTRICTED)` statuses." msgstr "Комбінація статусів :code:`(LEFT | KICKED | -RESTRICTED)` ." -#: ../../dispatcher/filters/chat_member_updated.rst:52 +#: ../../dispatcher/filters/chat_member_updated.rst:73 msgid "Transitions" msgstr "Переходи" -#: ../../dispatcher/filters/chat_member_updated.rst:54 +#: ../../dispatcher/filters/chat_member_updated.rst:75 msgid "" -"Transitions can be defined via bitwise shift operators :code:`>>` and :" -"code:`<<`. Old chat member status should be defined in the left side " -"for :code:`>>` operator (right side for :code:`<<`) and new status " -"should be specified on the right side for :code:`>>` operator (left side " -"for :code:`<<`)" +"Transitions can be defined via bitwise shift operators :code:`>>` and " +":code:`<<`. Old chat member status should be defined in the left side for" +" :code:`>>` operator (right side for :code:`<<`) and new status should be" +" specified on the right side for :code:`>>` operator (left side for " +":code:`<<`)" msgstr "" -"Переходи можна визначити за допомогою операторів порозрядного зсуву :" -"code:`>>` і :code:`<<`. Старий статус учасника чату має бути визначений " +"Переходи можна визначити за допомогою операторів порозрядного зсуву " +":code:`>>` і :code:`<<`. Старий статус учасника чату має бути визначений " "ліворуч для оператора :code:`>>` (праворуч для :code:`<<`), а новий " -"статус має бути вказаний праворуч для :code:`>>` оператор (ліворуч для :" -"code:`<<`)" +"статус має бути вказаний праворуч для :code:`>>` оператор (ліворуч для " +":code:`<<`)" -#: ../../dispatcher/filters/chat_member_updated.rst:58 +#: ../../dispatcher/filters/chat_member_updated.rst:79 msgid "" "The direction of transition can be changed via bitwise inversion " "operator: :code:`~JOIN_TRANSITION` will produce swap of old and new " @@ -172,45 +191,45 @@ msgstr "" "інверсії: :code:`~JOIN_TRANSITION` призведе до обміну старих і нових " "статусів." -#: ../../dispatcher/filters/chat_member_updated.rst:64 +#: ../../dispatcher/filters/chat_member_updated.rst:85 msgid ":code:`JOIN_TRANSITION`" msgstr ":code:`JOIN_TRANSITION`" -#: ../../dispatcher/filters/chat_member_updated.rst:64 +#: ../../dispatcher/filters/chat_member_updated.rst:85 msgid "" -"Means status changed from :code:`IS_NOT_MEMBER` to :code:`IS_MEMBER` (:" -"code:`IS_NOT_MEMBER >> IS_MEMBER`)" +"Means status changed from :code:`IS_NOT_MEMBER` to :code:`IS_MEMBER` " +"(:code:`IS_NOT_MEMBER >> IS_MEMBER`)" msgstr "" "Означає, що статус змінено з :code:`IS_NOT_MEMBER` на :code:`IS_MEMBER` " "(:code:`IS_NOT_MEMBER >> IS_MEMBER`)" -#: ../../dispatcher/filters/chat_member_updated.rst:67 +#: ../../dispatcher/filters/chat_member_updated.rst:88 msgid ":code:`LEAVE_TRANSITION`" msgstr ":code:`LEAVE_TRANSITION`" -#: ../../dispatcher/filters/chat_member_updated.rst:67 +#: ../../dispatcher/filters/chat_member_updated.rst:88 msgid "" -"Means status changed from :code:`IS_MEMBER` to :code:`IS_NOT_MEMBER` (:" -"code:`~JOIN_TRANSITION`)" +"Means status changed from :code:`IS_MEMBER` to :code:`IS_NOT_MEMBER` " +"(:code:`~JOIN_TRANSITION`)" msgstr "" "Означає, що статус змінено з :code:`IS_MEMBER` на :code:`IS_NOT_MEMBER` " "(:code:`~JOIN_TRANSITION`)" -#: ../../dispatcher/filters/chat_member_updated.rst:70 +#: ../../dispatcher/filters/chat_member_updated.rst:91 msgid ":code:`PROMOTED_TRANSITION`" msgstr ":code:`PROMOTED_TRANSITION`" -#: ../../dispatcher/filters/chat_member_updated.rst:70 +#: ../../dispatcher/filters/chat_member_updated.rst:91 msgid "" -"Means status changed from :code:`(MEMBER | RESTRICTED | LEFT | KICKED) " -">> ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) >> " +"Means status changed from :code:`(MEMBER | RESTRICTED | LEFT | KICKED) >>" +" ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) >> " "ADMINISTRATOR`)" msgstr "" -"Означає, що статус змінено з :code:`(MEMBER | RESTRICTED | LEFT | " -"KICKED) >> ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) " -">> ADMINISTRATOR`)" +"Означає, що статус змінено з :code:`(MEMBER | RESTRICTED | LEFT | KICKED)" +" >> ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) >> " +"ADMINISTRATOR`)" -#: ../../dispatcher/filters/chat_member_updated.rst:77 +#: ../../dispatcher/filters/chat_member_updated.rst:98 msgid "" "Note that if you define the status unions (via :code:`|`) you will need " "to add brackets for the statement before use shift operator in due to " @@ -220,34 +239,18 @@ msgstr "" "вам потрібно буде додати дужки для оператора перед використанням " "оператора зсуву через пріоритети оператора." -#: ../../dispatcher/filters/chat_member_updated.rst:81 -msgid "Usage" -msgstr "Використання" - -#: ../../dispatcher/filters/chat_member_updated.rst:83 -msgid "Handle user leave or join events" -msgstr "Керуйте подіями, які залишають користувачів або приєднуються" - -#: ../../dispatcher/filters/chat_member_updated.rst:95 -msgid "" -"Or construct your own terms via using pre-defined set of statuses and " -"transitions." -msgstr "" -"Або створіть власні умови, використовуючи попередньо визначений набір " -"статусів і переходів." - -#: ../../dispatcher/filters/chat_member_updated.rst:98 +#: ../../dispatcher/filters/chat_member_updated.rst:103 msgid "Allowed handlers" msgstr "Дозволені обробники" -#: ../../dispatcher/filters/chat_member_updated.rst:100 +#: ../../dispatcher/filters/chat_member_updated.rst:105 msgid "Allowed update types for this filter:" msgstr "Дозволені типи оновлень для цього фільтра:" -#: ../../dispatcher/filters/chat_member_updated.rst:102 +#: ../../dispatcher/filters/chat_member_updated.rst:107 msgid "`my_chat_member`" msgstr "`my_chat_member`" -#: ../../dispatcher/filters/chat_member_updated.rst:103 +#: ../../dispatcher/filters/chat_member_updated.rst:108 msgid "`chat_member`" msgstr "`chat_member`" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/magic_data.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/magic_data.po index d62ee41e..5025169e 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/magic_data.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/magic_data.po @@ -7,36 +7,24 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-25 22:10+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: 2022-10-25 16:00+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/filters/magic_data.rst:3 msgid "MagicData" msgstr "MagicData" -#: aiogram.filters.magic_data.MagicData:1 of -msgid "This filter helps to filter event with contextual data" -msgstr "Цей фільтр допомагає фільтрувати події з контекстними даними" - -#: ../../dispatcher/filters/magic_data.rst:10 -msgid "Can be imported:" -msgstr "Можна імпортувати:" - -#: ../../dispatcher/filters/magic_data.rst:12 -msgid ":code:`from aiogram.filters import MagicData`" -msgstr ":code:`from aiogram.filters import MagicData`" - -#: ../../dispatcher/filters/magic_data.rst:15 +#: ../../dispatcher/filters/magic_data.rst:6 msgid "Usage" msgstr "Використання" -#: ../../dispatcher/filters/magic_data.rst:17 +#: ../../dispatcher/filters/magic_data.rst:8 msgid "" ":code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that " ":code:`config` should be passed from middleware)" @@ -44,70 +32,86 @@ msgstr "" ":code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Зауважте, " "що :code:`config` слід передати з проміжної програми)" -#: ../../dispatcher/filters/magic_data.rst:21 +#: ../../dispatcher/filters/magic_data.rst:11 +msgid "Explanation" +msgstr "" + +#: aiogram.filters.magic_data.MagicData:1 of +msgid "This filter helps to filter event with contextual data" +msgstr "Цей фільтр допомагає фільтрувати події з контекстними даними" + +#: ../../dispatcher/filters/magic_data.rst:18 +msgid "Can be imported:" +msgstr "Можна імпортувати:" + +#: ../../dispatcher/filters/magic_data.rst:20 +msgid ":code:`from aiogram.filters import MagicData`" +msgstr ":code:`from aiogram.filters import MagicData`" + +#: ../../dispatcher/filters/magic_data.rst:24 msgid "Allowed handlers" msgstr "Дозволені типи обробників (handler)" -#: ../../dispatcher/filters/magic_data.rst:23 +#: ../../dispatcher/filters/magic_data.rst:26 msgid "Allowed update types for this filter:" msgstr "Дозволені типи оновлень для цього фільтра:" -#: ../../dispatcher/filters/magic_data.rst:25 +#: ../../dispatcher/filters/magic_data.rst:28 msgid ":code:`message`" msgstr ":code:`message`" -#: ../../dispatcher/filters/magic_data.rst:26 +#: ../../dispatcher/filters/magic_data.rst:29 msgid ":code:`edited_message`" msgstr ":code:`edited_message`" -#: ../../dispatcher/filters/magic_data.rst:27 +#: ../../dispatcher/filters/magic_data.rst:30 msgid ":code:`channel_post`" msgstr ":code:`channel_post`" -#: ../../dispatcher/filters/magic_data.rst:28 +#: ../../dispatcher/filters/magic_data.rst:31 msgid ":code:`edited_channel_post`" msgstr ":code:`edited_channel_post`" -#: ../../dispatcher/filters/magic_data.rst:29 +#: ../../dispatcher/filters/magic_data.rst:32 msgid ":code:`inline_query`" msgstr ":code:`inline_query`" -#: ../../dispatcher/filters/magic_data.rst:30 +#: ../../dispatcher/filters/magic_data.rst:33 msgid ":code:`chosen_inline_result`" msgstr ":code:`chosen_inline_result`" -#: ../../dispatcher/filters/magic_data.rst:31 +#: ../../dispatcher/filters/magic_data.rst:34 msgid ":code:`callback_query`" msgstr ":code:`callback_query`" -#: ../../dispatcher/filters/magic_data.rst:32 +#: ../../dispatcher/filters/magic_data.rst:35 msgid ":code:`shipping_query`" msgstr ":code:`shipping_query`" -#: ../../dispatcher/filters/magic_data.rst:33 +#: ../../dispatcher/filters/magic_data.rst:36 msgid ":code:`pre_checkout_query`" msgstr ":code:`pre_checkout_query`" -#: ../../dispatcher/filters/magic_data.rst:34 +#: ../../dispatcher/filters/magic_data.rst:37 msgid ":code:`poll`" msgstr ":code:`poll`" -#: ../../dispatcher/filters/magic_data.rst:35 +#: ../../dispatcher/filters/magic_data.rst:38 msgid ":code:`poll_answer`" msgstr ":code:`poll_answer`" -#: ../../dispatcher/filters/magic_data.rst:36 +#: ../../dispatcher/filters/magic_data.rst:39 msgid ":code:`my_chat_member`" msgstr ":code:`my_chat_member`" -#: ../../dispatcher/filters/magic_data.rst:37 +#: ../../dispatcher/filters/magic_data.rst:40 msgid ":code:`chat_member`" msgstr ":code:`chat_member`" -#: ../../dispatcher/filters/magic_data.rst:38 +#: ../../dispatcher/filters/magic_data.rst:41 msgid ":code:`chat_join_request`" msgstr ":code:`chat_join_request`" -#: ../../dispatcher/filters/magic_data.rst:39 +#: ../../dispatcher/filters/magic_data.rst:42 msgid ":code:`error`" msgstr ":code:`error`" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po index 74d507c1..6342649a 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: 2022-12-10 20:41+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -16,10 +16,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.12.1\n" -#: ../../dispatcher/router.rst:3 +#: ../../dispatcher/router.rst:5 msgid "Router" msgstr "Маршрутизатор" +#: ../../dispatcher/router.rst:7 +#, fuzzy +msgid "Usage:" +msgstr "Повідомлення" + #: aiogram.dispatcher.router.Router:1 of msgid "Bases: :py:class:`object`" msgstr "Базується на :py:class:`object`" @@ -91,11 +96,11 @@ msgstr "" msgid "set of registered names" msgstr "" -#: ../../dispatcher/router.rst:13 +#: ../../dispatcher/router.rst:29 msgid "Event observers" msgstr "Обсервери подій" -#: ../../dispatcher/router.rst:17 +#: ../../dispatcher/router.rst:33 msgid "" "All handlers always should be asynchronous. The name of the handler " "function is not important. The event argument name is also not important " @@ -107,7 +112,7 @@ msgstr "" "накладати назву на контекстні дані, оскільки функція не може прийняти два" " аргументи з однаковою назвою." -#: ../../dispatcher/router.rst:20 +#: ../../dispatcher/router.rst:36 msgid "" "Here is the list of available observers and examples of how to register " "handlers" @@ -115,7 +120,7 @@ msgstr "" "Ось список доступних обсерверів і приклади того, як зареєструвати " "обробники" -#: ../../dispatcher/router.rst:22 +#: ../../dispatcher/router.rst:38 msgid "" "In these examples only decorator-style registering handlers are used, but" " if you don't like @decorators just use :obj:`.register(...)`" @@ -125,15 +130,15 @@ msgstr "" "декоратора, але якщо вам не подобаються @decorators, просто " "використовуйте :obj:`.register(...)` method instead." -#: ../../dispatcher/router.rst:25 +#: ../../dispatcher/router.rst:41 msgid "Message" msgstr "Повідомлення" -#: ../../dispatcher/router.rst:30 +#: ../../dispatcher/router.rst:46 msgid "Be attentive with filtering this event" msgstr "Будьте уважні при фільтруванні цієї події" -#: ../../dispatcher/router.rst:32 +#: ../../dispatcher/router.rst:48 msgid "" "You should expect that this event can be with different sets of " "attributes in different cases" @@ -141,13 +146,13 @@ msgstr "" "Вам слід очікувати, що ця подія може мати різні набори атрибутів у різних" " випадках" -#: ../../dispatcher/router.rst:34 +#: ../../dispatcher/router.rst:50 msgid "" "(For example text, sticker and document are always of different content " "types of message)" msgstr "(Наприклад, текст, стікер та документ завжди мають різні типи вмісту)" -#: ../../dispatcher/router.rst:36 +#: ../../dispatcher/router.rst:52 msgid "" "Recommended way to check field availability before usage, for example via" " :ref:`magic filter `: :code:`F.text` to handle text, " @@ -158,62 +163,62 @@ msgstr "" ":code:`F.text` для обробки тексту, :code:`F.sticker` для обробки лише " "стікерів і тощо." -#: ../../dispatcher/router.rst:47 +#: ../../dispatcher/router.rst:63 msgid "Edited message" msgstr "Відредаговане повідомлення" -#: ../../dispatcher/router.rst:55 +#: ../../dispatcher/router.rst:71 msgid "Channel post" msgstr "Пост на каналі" -#: ../../dispatcher/router.rst:63 +#: ../../dispatcher/router.rst:79 msgid "Edited channel post" msgstr "Відредагований пост на каналі" -#: ../../dispatcher/router.rst:72 +#: ../../dispatcher/router.rst:88 msgid "Inline query" msgstr "Inline запит" -#: ../../dispatcher/router.rst:80 +#: ../../dispatcher/router.rst:96 msgid "Chosen inline query" msgstr "Вибраний результат inline запиту" -#: ../../dispatcher/router.rst:88 +#: ../../dispatcher/router.rst:104 msgid "Callback query" msgstr "Запит зворотної відповіді" -#: ../../dispatcher/router.rst:96 +#: ../../dispatcher/router.rst:112 msgid "Shipping query" msgstr "Запит підтвердження доставки" -#: ../../dispatcher/router.rst:104 +#: ../../dispatcher/router.rst:120 msgid "Pre checkout query" msgstr "Запит перед оформленням замовлення" -#: ../../dispatcher/router.rst:112 +#: ../../dispatcher/router.rst:128 msgid "Poll" msgstr "Опитування" -#: ../../dispatcher/router.rst:120 +#: ../../dispatcher/router.rst:136 msgid "Poll answer" msgstr "Відповідь на опитування" -#: ../../dispatcher/router.rst:128 +#: ../../dispatcher/router.rst:144 msgid "Errors" msgstr "Помилки" -#: ../../dispatcher/router.rst:135 +#: ../../dispatcher/router.rst:151 #, fuzzy msgid "" "Is useful for handling errors from other handlers, error event described " ":ref:`here `" msgstr "Корисно для обробки помилок інших обробників" -#: ../../dispatcher/router.rst:142 +#: ../../dispatcher/router.rst:158 msgid "Nested routers" msgstr "Вкладені маршрутизатори" -#: ../../dispatcher/router.rst:147 +#: ../../dispatcher/router.rst:163 msgid "" "Routers by the way can be nested to an another routers with some " "limitations:" @@ -221,7 +226,7 @@ msgstr "" "До речі, маршрутизатори можуть бути вкладеними в інші маршрутизатори з " "деякими обмеженнями:" -#: ../../dispatcher/router.rst:147 +#: ../../dispatcher/router.rst:163 msgid "" "1. Router **CAN NOT** include itself 1. Routers **CAN NOT** be used for " "circular including (router 1 include router 2, router 2 include router 3," @@ -232,39 +237,39 @@ msgstr "" "(маршрутизатор 1 включає маршрутизатор 2, маршрутизатор 2 включає " "маршрутизатор 3, маршрутизатор 3 включає маршрутизатор 1)" -#: ../../dispatcher/router.rst:151 +#: ../../dispatcher/router.rst:167 msgid "Example:" msgstr "Приклад:" -#: ../../dispatcher/router.rst:153 +#: ../../dispatcher/router.rst:169 #, fuzzy msgid "module_1.py" msgstr "module_2.py" -#: ../../dispatcher/router.rst:163 +#: ../../dispatcher/router.rst:179 msgid "module_2.py" msgstr "module_2.py" -#: ../../dispatcher/router.rst:175 +#: ../../dispatcher/router.rst:191 msgid "Update" msgstr "Оновлення" -#: ../../dispatcher/router.rst:184 +#: ../../dispatcher/router.rst:200 msgid "The only root Router (Dispatcher) can handle this type of event." msgstr "" -#: ../../dispatcher/router.rst:188 +#: ../../dispatcher/router.rst:204 msgid "" "Dispatcher already has default handler for this event type, so you can " "use it for handling all updates that are not handled by any other " "handlers." msgstr "" -#: ../../dispatcher/router.rst:191 +#: ../../dispatcher/router.rst:207 msgid "How it works?" msgstr "Як це працює?" -#: ../../dispatcher/router.rst:193 +#: ../../dispatcher/router.rst:209 msgid "" "For example, dispatcher has 2 routers, the last router also has one " "nested router:" @@ -276,7 +281,7 @@ msgstr "" msgid "Nested routers example" msgstr "Приклад вкладених маршрутизаторів" -#: ../../dispatcher/router.rst:198 +#: ../../dispatcher/router.rst:214 msgid "In this case update propagation flow will have form:" msgstr "У цьому випадку потік розповсюдження оновлення матиме вигляд:" diff --git a/docs/locale/uk_UA/LC_MESSAGES/index.po b/docs/locale/uk_UA/LC_MESSAGES/index.po index 5ad3333e..d6003bba 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,17 +18,9 @@ msgstr "" "Generated-By: Babel 2.12.1\n" #: ../../../README.rst:3 -msgid "aiogram |beta badge|" +msgid "aiogram" msgstr "" -#: ../../../README.rst:94 -msgid "Beta badge" -msgstr "" - -#: ../../../README.rst:6 -msgid "This version is still in development!" -msgstr "Ще в розробці!" - #: ../../../README.rst:-1 msgid "MIT License" msgstr "" @@ -61,7 +53,7 @@ msgstr "Тести" msgid "Codecov" msgstr "" -#: ../../../README.rst:40 +#: ../../../README.rst:37 msgid "" "**aiogram** is a modern and fully asynchronous framework for `Telegram " "Bot API `_ written in Python 3.8 " @@ -74,39 +66,27 @@ msgstr "" "`_ та `aiohttp " "`_." -#: ../../../README.rst:45 +#: ../../../README.rst:42 msgid "Make your bots faster and more powerful!" msgstr "Зробіть своїх ботів швидшими та потужнішими!" -#: ../../../README.rst:50 +#: ../../../README.rst:47 msgid "Documentation:" msgstr "Документація" -#: ../../../README.rst:48 +#: ../../../README.rst:45 msgid "🇺🇸 `English `_" msgstr "🇺🇸 `English `_" -#: ../../../README.rst:49 +#: ../../../README.rst:46 msgid "🇺🇦 `Ukrainian `_" msgstr "🇺🇦 `Українською `_" -#: ../../../README.rst:54 -msgid "**Breaking News:**" -msgstr "**Важливі новини**" - -#: ../../../README.rst:56 -msgid "*aiogram* 3.0 has breaking changes." -msgstr "*aiogram* 3.0 має зміни, що ламають зворотну сумісність." - -#: ../../../README.rst:58 -msgid "It breaks backward compatibility by introducing new breaking changes!" -msgstr "Порушує зворотну сумісність, вводячи нові критичні зміни!" - -#: ../../../README.rst:61 +#: ../../../README.rst:50 msgid "Features" msgstr "Особливості" -#: ../../../README.rst:63 +#: ../../../README.rst:52 msgid "" "Asynchronous (`asyncio docs " "`_, :pep:`492`)" @@ -114,7 +94,7 @@ msgstr "" "Асинхронність (`asyncio docs " "`_, :pep:`492`)" -#: ../../../README.rst:64 +#: ../../../README.rst:53 msgid "" "Has type hints (:pep:`484`) and can be used with `mypy `_" @@ -122,20 +102,20 @@ msgstr "" "Має анотації типів (:pep:`484`) та може використовуватись з `mypy `_" -#: ../../../README.rst:65 +#: ../../../README.rst:54 msgid "Supports `PyPy `_" msgstr "Працює з `PyPy `_" -#: ../../../README.rst:66 +#: ../../../README.rst:55 #, fuzzy msgid "" -"Supports `Telegram Bot API 6.7 `_ and" +"Supports `Telegram Bot API 6.8 `_ and" " gets fast updates to the latest versions of the Bot API" msgstr "" "Підтримує `Telegram Bot API 6.3 `_ та" " швидко отримує оновлення до нових версії АПІ" -#: ../../../README.rst:67 +#: ../../../README.rst:56 msgid "" "Telegram Bot API integration code was `autogenerated " "`_ and can be easily re-generated " @@ -145,28 +125,28 @@ msgstr "" "/tg-codegen>`_ що надає змогу дуже легко оновлювати фреймворк до останніх" " версій АПІ" -#: ../../../README.rst:68 +#: ../../../README.rst:57 msgid "Updates router (Blueprints)" msgstr "Має роутери подій (Blueprints)" -#: ../../../README.rst:69 +#: ../../../README.rst:58 msgid "Has Finite State Machine" msgstr "Має вбудований кінцевий автомат" -#: ../../../README.rst:70 +#: ../../../README.rst:59 msgid "" "Uses powerful `magic filters " -"`" +"`_" msgstr "" -#: ../../../README.rst:71 +#: ../../../README.rst:60 msgid "Middlewares (incoming updates and API calls)" msgstr "" "Підтримує мідлвари (для вхідних подій від АПІ та для вихідних запитів до " "АПІ)" -#: ../../../README.rst:72 +#: ../../../README.rst:61 msgid "" "Provides `Replies into Webhook `_" @@ -175,13 +155,13 @@ msgstr "" "`_" -#: ../../../README.rst:73 +#: ../../../README.rst:62 msgid "Integrated I18n/L10n support with GNU Gettext (or Fluent)" msgstr "" "Має вбудовану інтеграцію для використання інтернаціоналізації та " "локалізації GNU Gettext (або Fluent)" -#: ../../../README.rst:78 +#: ../../../README.rst:67 msgid "" "It is strongly advised that you have prior experience working with " "`asyncio `_ before " @@ -191,39 +171,39 @@ msgstr "" "починати використовувати цей фреймворк. `asyncio " "`_" -#: ../../../README.rst:82 +#: ../../../README.rst:71 msgid "If you have any questions, you can visit our community chats on Telegram:" msgstr "Якщо є якість додаткові запитання, ласкаво просимо до онлайн-спільнот:" -#: ../../../README.rst:84 +#: ../../../README.rst:73 msgid "🇺🇸 `@aiogram `_" msgstr "" -#: ../../../README.rst:85 +#: ../../../README.rst:74 msgid "🇺🇦 `@aiogramua `_" msgstr "" -#: ../../../README.rst:86 +#: ../../../README.rst:75 msgid "🇺🇿 `@aiogram_uz `_" msgstr "" -#: ../../../README.rst:87 +#: ../../../README.rst:76 msgid "🇰🇿 `@aiogram_kz `_" msgstr "" -#: ../../../README.rst:88 +#: ../../../README.rst:77 msgid "🇷🇺 `@aiogram_ru `_" msgstr "💩 `@aiogram_ru `_" -#: ../../../README.rst:89 +#: ../../../README.rst:78 msgid "🇮🇷 `@aiogram_fa `_" msgstr "" -#: ../../../README.rst:90 +#: ../../../README.rst:79 msgid "🇮🇹 `@aiogram_it `_" msgstr "" -#: ../../../README.rst:91 +#: ../../../README.rst:80 msgid "🇧🇷 `@aiogram_br `_" msgstr "" @@ -237,3 +217,27 @@ msgstr "Зміст" #~ msgid "[Telegram] aiogram live" #~ msgstr "" + +#~ msgid "aiogram |beta badge|" +#~ msgstr "" + +#~ msgid "Beta badge" +#~ msgstr "" + +#~ msgid "This version is still in development!" +#~ msgstr "Ще в розробці!" + +#~ msgid "**Breaking News:**" +#~ msgstr "**Важливі новини**" + +#~ msgid "*aiogram* 3.0 has breaking changes." +#~ msgstr "*aiogram* 3.0 має зміни, що ламають зворотну сумісність." + +#~ msgid "It breaks backward compatibility by introducing new breaking changes!" +#~ msgstr "Порушує зворотну сумісність, вводячи нові критичні зміни!" + +#~ msgid "" +#~ "Uses powerful `magic filters " +#~ "`" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po index 9035b8b8..3541ffff 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po +++ b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-08-26 23:17+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -99,17 +99,24 @@ msgid "" "accessed via :code:`data[\"bot\"]`." msgstr "" -#: ../../migration_2_to_3.rst:46 +#: ../../migration_2_to_3.rst:43 +msgid "" +"Now to skip pending updates, you should call the " +":class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly " +"instead of passing :code:`skip_updates=True` to start polling method." +msgstr "" + +#: ../../migration_2_to_3.rst:47 msgid "Filtering events" msgstr "" -#: ../../migration_2_to_3.rst:48 +#: ../../migration_2_to_3.rst:49 msgid "" "Keyword filters can no more be used, use filters explicitly. (`Read more " "» `_)" msgstr "" -#: ../../migration_2_to_3.rst:49 +#: ../../migration_2_to_3.rst:50 msgid "" "In due to keyword filters was removed all enabled by default filters " "(state and content_type now is not enabled), so you should specify them " @@ -118,19 +125,19 @@ msgid "" "use :code:`@router.message(F.photo)`" msgstr "" -#: ../../migration_2_to_3.rst:53 +#: ../../migration_2_to_3.rst:54 msgid "" "Most of common filters is replaced by \"magic filter\". (:ref:`Read more " "» `)" msgstr "" -#: ../../migration_2_to_3.rst:54 +#: ../../migration_2_to_3.rst:55 msgid "" "Now by default message handler receives any content type, if you want " "specific one just add the filters (Magic or any other)" msgstr "" -#: ../../migration_2_to_3.rst:56 +#: ../../migration_2_to_3.rst:57 msgid "" "State filter now is not enabled by default, that's mean if you using " ":code:`state=\"*\"` in v2 then you should not pass any state filter in " @@ -138,38 +145,38 @@ msgid "" "specify the state." msgstr "" -#: ../../migration_2_to_3.rst:59 +#: ../../migration_2_to_3.rst:60 msgid "" "Added possibility to register per-router global filters, that helps to " "reduces the number of repetitions in the code and makes easily way to " "control for what each router will be used." msgstr "" -#: ../../migration_2_to_3.rst:65 +#: ../../migration_2_to_3.rst:66 msgid "Bot API" msgstr "" -#: ../../migration_2_to_3.rst:67 +#: ../../migration_2_to_3.rst:68 msgid "" "Now all API methods is classes with validation (via `pydantic " "`_) (all API calls is also available as " "methods in the Bot class)." msgstr "" -#: ../../migration_2_to_3.rst:69 +#: ../../migration_2_to_3.rst:70 msgid "" "Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " "For example chat type enum now is :class:`aiogram.enums.ChatType` instead" " of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:72 +#: ../../migration_2_to_3.rst:73 msgid "" "Separated HTTP client session into container that can be reused between " "different Bot instances in the application." msgstr "" -#: ../../migration_2_to_3.rst:74 +#: ../../migration_2_to_3.rst:75 msgid "" "API Exceptions is no more classified by specific message in due to " "Telegram has no documented error codes. But all errors is classified by " @@ -179,17 +186,17 @@ msgid "" "types>`)" msgstr "" -#: ../../migration_2_to_3.rst:81 +#: ../../migration_2_to_3.rst:82 msgid "Middlewares" msgstr "" -#: ../../migration_2_to_3.rst:83 +#: ../../migration_2_to_3.rst:84 msgid "" "Middlewares can now control a execution context, e.g. using context " "managers (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:84 +#: ../../migration_2_to_3.rst:85 msgid "" "All contextual data now is shared between middlewares, filters and " "handlers to end-to-end use. For example now you can easily pass some data" @@ -197,75 +204,102 @@ msgid "" "same way as in the handlers via keyword arguments." msgstr "" -#: ../../migration_2_to_3.rst:87 +#: ../../migration_2_to_3.rst:88 msgid "" "Added mechanism named **flags**, that helps to customize handler behavior" " in conjunction with middlewares. (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:92 +#: ../../migration_2_to_3.rst:93 msgid "Keyboard Markup" msgstr "" -#: ../../migration_2_to_3.rst:94 +#: ../../migration_2_to_3.rst:95 msgid "" "Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " "and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " "no methods to extend it, instead you have to use markup builders " ":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " ":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " -"more » `)" +"more » `)" msgstr "" -#: ../../migration_2_to_3.rst:102 +#: ../../migration_2_to_3.rst:103 msgid "Callbacks data" msgstr "" -#: ../../migration_2_to_3.rst:104 +#: ../../migration_2_to_3.rst:105 msgid "" "Callback data factory now is strictly typed via `pydantic " -"`_ models (:ref:`Read more » `_ models (:ref:`Read more » `)" msgstr "" -#: ../../migration_2_to_3.rst:109 +#: ../../migration_2_to_3.rst:110 msgid "Finite State machine" msgstr "" -#: ../../migration_2_to_3.rst:111 +#: ../../migration_2_to_3.rst:112 msgid "" "State filter will no more added to all handlers, you will need to specify" " state if you want" msgstr "" -#: ../../migration_2_to_3.rst:112 +#: ../../migration_2_to_3.rst:113 msgid "" "Added possibility to change FSM strategy, for example if you want to " "control state for each user in chat topics instead of user in chat you " "can specify it in the Dispatcher." msgstr "" -#: ../../migration_2_to_3.rst:117 +#: ../../migration_2_to_3.rst:115 +msgid "" +"Now :class:`aiogram.fsm.state.State` and " +":class:`aiogram.fsm.state.StateGroup` don't have helper methods like " +":code:`.set()`, :code:`.next()`, etc." +msgstr "" + +#: ../../migration_2_to_3.rst:118 +msgid "" +"Instead of this you should set states by passing them directly to " +":class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `)" +msgstr "" + +#: ../../migration_2_to_3.rst:120 +msgid "" +"State proxy is deprecated, you should update the state data by calling " +":code:`state.set_data(...)` and :code:`state.get_data()` respectively." +msgstr "" + +#: ../../migration_2_to_3.rst:125 msgid "Sending Files" msgstr "" -#: ../../migration_2_to_3.rst:119 +#: ../../migration_2_to_3.rst:127 msgid "" "From now you should wrap sending files into InputFile object before send " "instead of passing IO object directly to the API method. (:ref:`Read more" " » `)" msgstr "" -#: ../../migration_2_to_3.rst:124 +#: ../../migration_2_to_3.rst:132 msgid "Webhook" msgstr "" -#: ../../migration_2_to_3.rst:126 +#: ../../migration_2_to_3.rst:134 msgid "Simplified aiohttp web app configuration" msgstr "" -#: ../../migration_2_to_3.rst:127 +#: ../../migration_2_to_3.rst:135 msgid "" "By default added possibility to upload files when you use reply into " "webhook" msgstr "" + +#~ msgid "" +#~ "Callback data factory now is strictly" +#~ " typed via `pydantic " +#~ "`_ models (:ref:`Read " +#~ "more » `)" +#~ msgstr "" diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index 8a42fa5e..80910f84 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -96,14 +96,14 @@ Keyboard Markup and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has no methods to extend it, instead you have to use markup builders :class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and :class:`aiogram.utils.keyboard.KeyboardBuilder` respectively - (:ref:`Read more » `) + (:ref:`Read more » `) Callbacks data ============== - Callback data factory now is strictly typed via `pydantic `_ models - (:ref:`Read more » `) + (:ref:`Read more » `) Finite State machine diff --git a/docs/utils/keyboard.rst b/docs/utils/keyboard.rst index 35559fc0..6f631ae6 100644 --- a/docs/utils/keyboard.rst +++ b/docs/utils/keyboard.rst @@ -1,4 +1,5 @@ -.. _keyboard-builder +.. _Keyboard builder: + ================ Keyboard builder ================ From 397f30b58bf0575c55ca861fddfd11052ce8e147 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 26 Aug 2023 23:24:51 +0300 Subject: [PATCH 089/139] Fixed method :code:`Message.send_copy` for stickers (#1284) --- CHANGES/1284.bugfix.rst | 1 + aiogram/types/message.py | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 CHANGES/1284.bugfix.rst diff --git a/CHANGES/1284.bugfix.rst b/CHANGES/1284.bugfix.rst new file mode 100644 index 00000000..b30cced4 --- /dev/null +++ b/CHANGES/1284.bugfix.rst @@ -0,0 +1 @@ +Fixed method :code:`Message.send_copy` for stickers. diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 7e9c282a..6652df7b 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -2864,7 +2864,11 @@ class Message(TelegramObject): } if self.text: - return SendMessage(text=self.text, entities=self.entities, **kwargs).as_(self._bot) + return SendMessage( + text=self.text, + entities=self.entities, + **kwargs, + ).as_(self._bot) if self.audio: return SendAudio( audio=self.audio.file_id, @@ -2897,7 +2901,10 @@ class Message(TelegramObject): **kwargs, ).as_(self._bot) if self.sticker: - return SendSticker(sticker=self.sticker.file_id, **kwargs) + return SendSticker( + sticker=self.sticker.file_id, + **kwargs, + ).as_(self._bot) if self.video: return SendVideo( video=self.video.file_id, @@ -2906,9 +2913,15 @@ class Message(TelegramObject): **kwargs, ).as_(self._bot) if self.video_note: - return SendVideoNote(video_note=self.video_note.file_id, **kwargs).as_(self._bot) + return SendVideoNote( + video_note=self.video_note.file_id, + **kwargs, + ).as_(self._bot) if self.voice: - return SendVoice(voice=self.voice.file_id, **kwargs).as_(self._bot) + return SendVoice( + voice=self.voice.file_id, + **kwargs, + ).as_(self._bot) if self.contact: return SendContact( phone_number=self.contact.phone_number, @@ -2929,7 +2942,9 @@ class Message(TelegramObject): ).as_(self._bot) if self.location: return SendLocation( - latitude=self.location.latitude, longitude=self.location.longitude, **kwargs + latitude=self.location.latitude, + longitude=self.location.longitude, + **kwargs, ).as_(self._bot) if self.poll: return SendPoll( @@ -2938,7 +2953,9 @@ class Message(TelegramObject): **kwargs, ).as_(self._bot) if self.dice: # Dice value can't be controlled - return SendDice(**kwargs).as_(self._bot) + return SendDice( + **kwargs, + ).as_(self._bot) raise TypeError("This type of message can't be copied.") From 6eb5ef2606b4d139490ceb9bc358ab830632d71b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 27 Aug 2023 17:09:56 +0300 Subject: [PATCH 090/139] Replace datetime.datetime with DateTime across codebase (#1285) * #1277 Replace datetime.datetime with DateTime across codebase Replaced all instances of standard library 'datetime.datetime' with a new 'DateTime' type from `.custom` module. This change is necessary to make all date-time values compatible with the Telegram Bot API (it uses Unix time). This will simplify the conversion process and eliminate potential errors related to date-time format mismatches. Changed codebase, butcher files, and modified 'pyproject.toml' to shift the typing-extensions dependency. The 'aiogram/custom_types.py' file was renamed to 'aiogram/types/custom.py' to better reflect its nature as a location for custom types used in the aiogram library. --- .butcher/types/Chat/replace.yml | 2 +- .butcher/types/ChatInviteLink/replace.yml | 2 +- .butcher/types/ChatJoinRequest/replace.yml | 2 +- .butcher/types/ChatMember/replace.yml | 2 +- .butcher/types/ChatMemberBanned/replace.yml | 2 +- .butcher/types/ChatMemberRestricted/replace.yml | 2 +- .butcher/types/ChatMemberUpdated/replace.yml | 2 +- .butcher/types/Message/replace.yml | 4 ++-- .butcher/types/Poll/replace.yml | 2 +- .butcher/types/VideoChatScheduled/replace.yml | 2 +- .butcher/types/WebhookInfo/replace.yml | 2 +- CHANGES/1277.bugfix.rst | 2 ++ aiogram/types/__init__.py | 2 ++ aiogram/types/chat.py | 5 +++-- aiogram/types/chat_invite_link.py | 6 +++--- aiogram/types/chat_join_request.py | 5 +++-- aiogram/types/chat_member_banned.py | 6 +++--- aiogram/types/chat_member_restricted.py | 6 +++--- aiogram/types/chat_member_updated.py | 5 +++-- aiogram/types/custom.py | 14 ++++++++++++++ aiogram/types/message.py | 9 +++++---- aiogram/types/poll.py | 6 +++--- aiogram/types/video_chat_scheduled.py | 6 +++--- aiogram/types/webhook_info.py | 10 +++++----- pyproject.toml | 2 +- 25 files changed, 65 insertions(+), 43 deletions(-) create mode 100644 CHANGES/1277.bugfix.rst create mode 100644 aiogram/types/custom.py diff --git a/.butcher/types/Chat/replace.yml b/.butcher/types/Chat/replace.yml index 93d76533..60fe7d44 100644 --- a/.butcher/types/Chat/replace.yml +++ b/.butcher/types/Chat/replace.yml @@ -2,4 +2,4 @@ annotations: emoji_status_expiration_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatInviteLink/replace.yml b/.butcher/types/ChatInviteLink/replace.yml index 2577c954..21d6557f 100644 --- a/.butcher/types/ChatInviteLink/replace.yml +++ b/.butcher/types/ChatInviteLink/replace.yml @@ -2,4 +2,4 @@ annotations: expire_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatJoinRequest/replace.yml b/.butcher/types/ChatJoinRequest/replace.yml index 9a3a2842..80c48d76 100644 --- a/.butcher/types/ChatJoinRequest/replace.yml +++ b/.butcher/types/ChatJoinRequest/replace.yml @@ -2,4 +2,4 @@ annotations: date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatMember/replace.yml b/.butcher/types/ChatMember/replace.yml index 0af85473..e264e991 100644 --- a/.butcher/types/ChatMember/replace.yml +++ b/.butcher/types/ChatMember/replace.yml @@ -2,4 +2,4 @@ annotations: until_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatMemberBanned/replace.yml b/.butcher/types/ChatMemberBanned/replace.yml index 0af85473..e264e991 100644 --- a/.butcher/types/ChatMemberBanned/replace.yml +++ b/.butcher/types/ChatMemberBanned/replace.yml @@ -2,4 +2,4 @@ annotations: until_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatMemberRestricted/replace.yml b/.butcher/types/ChatMemberRestricted/replace.yml index 0af85473..e264e991 100644 --- a/.butcher/types/ChatMemberRestricted/replace.yml +++ b/.butcher/types/ChatMemberRestricted/replace.yml @@ -2,4 +2,4 @@ annotations: until_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/ChatMemberUpdated/replace.yml b/.butcher/types/ChatMemberUpdated/replace.yml index 9a3a2842..80c48d76 100644 --- a/.butcher/types/ChatMemberUpdated/replace.yml +++ b/.butcher/types/ChatMemberUpdated/replace.yml @@ -2,4 +2,4 @@ annotations: date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/Message/replace.yml b/.butcher/types/Message/replace.yml index 93a8f17e..5fa030bf 100644 --- a/.butcher/types/Message/replace.yml +++ b/.butcher/types/Message/replace.yml @@ -2,8 +2,8 @@ annotations: date: parsed_type: type: std - name: datetime.datetime + name: DateTime forward_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/Poll/replace.yml b/.butcher/types/Poll/replace.yml index 6cf9fbff..fc4371b5 100644 --- a/.butcher/types/Poll/replace.yml +++ b/.butcher/types/Poll/replace.yml @@ -2,4 +2,4 @@ annotations: close_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/VideoChatScheduled/replace.yml b/.butcher/types/VideoChatScheduled/replace.yml index 48d98bf6..8aa22091 100644 --- a/.butcher/types/VideoChatScheduled/replace.yml +++ b/.butcher/types/VideoChatScheduled/replace.yml @@ -2,4 +2,4 @@ annotations: start_date: parsed_type: type: std - name: datetime.datetime + name: DateTime diff --git a/.butcher/types/WebhookInfo/replace.yml b/.butcher/types/WebhookInfo/replace.yml index 4b1a71f0..5a784309 100644 --- a/.butcher/types/WebhookInfo/replace.yml +++ b/.butcher/types/WebhookInfo/replace.yml @@ -2,5 +2,5 @@ annotations: last_error_date: &date parsed_type: type: std - name: datetime.datetime + name: DateTime last_synchronization_error_date: *date diff --git a/CHANGES/1277.bugfix.rst b/CHANGES/1277.bugfix.rst new file mode 100644 index 00000000..6acfccf2 --- /dev/null +++ b/CHANGES/1277.bugfix.rst @@ -0,0 +1,2 @@ +Replaced :code:`datetime.datetime` with `DateTime` type wrapper across types to make dumped JSONs object +more compatible with data that is sent by Telegram. diff --git a/aiogram/types/__init__.py b/aiogram/types/__init__.py index bf9c02ee..8f4b6f34 100644 --- a/aiogram/types/__init__.py +++ b/aiogram/types/__init__.py @@ -37,6 +37,7 @@ from .chat_photo import ChatPhoto from .chat_shared import ChatShared from .chosen_inline_result import ChosenInlineResult from .contact import Contact +from .custom import DateTime from .dice import Dice from .document import Document from .downloadable import Downloadable @@ -197,6 +198,7 @@ __all__ = ( "ChosenInlineResult", "Contact", "ContentType", + "DateTime", "Dice", "Document", "Downloadable", diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 3e526bb4..921ed3e7 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -4,6 +4,7 @@ import datetime from typing import TYPE_CHECKING, Any, List, Optional, Union from .base import TelegramObject +from .custom import DateTime if TYPE_CHECKING: from ..methods import ( @@ -70,7 +71,7 @@ class Chat(TelegramObject): """*Optional*. If non-empty, the list of all `active chat usernames `_; for private chats, supergroups and channels. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" emoji_status_custom_emoji_id: Optional[str] = None """*Optional*. Custom emoji identifier of emoji status of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" - emoji_status_expiration_date: Optional[datetime.datetime] = None + emoji_status_expiration_date: Optional[DateTime] = None """*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" bio: Optional[str] = None """*Optional*. Bio of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" @@ -126,7 +127,7 @@ class Chat(TelegramObject): photo: Optional[ChatPhoto] = None, active_usernames: Optional[List[str]] = None, emoji_status_custom_emoji_id: Optional[str] = None, - emoji_status_expiration_date: Optional[datetime.datetime] = None, + emoji_status_expiration_date: Optional[DateTime] = None, bio: Optional[str] = None, has_private_forwards: Optional[bool] = None, has_restricted_voice_and_video_messages: Optional[bool] = None, diff --git a/aiogram/types/chat_invite_link.py b/aiogram/types/chat_invite_link.py index ae947f36..7817c23d 100644 --- a/aiogram/types/chat_invite_link.py +++ b/aiogram/types/chat_invite_link.py @@ -1,9 +1,9 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any, Optional from .base import TelegramObject +from .custom import DateTime if TYPE_CHECKING: from .user import User @@ -28,7 +28,7 @@ class ChatInviteLink(TelegramObject): """:code:`True`, if the link is revoked""" name: Optional[str] = None """*Optional*. Invite link name""" - expire_date: Optional[datetime.datetime] = None + expire_date: Optional[DateTime] = None """*Optional*. Point in time (Unix timestamp) when the link will expire or has been expired""" member_limit: Optional[int] = None """*Optional*. The maximum number of users that can be members of the chat simultaneously after joining the chat via this invite link; 1-99999""" @@ -48,7 +48,7 @@ class ChatInviteLink(TelegramObject): is_primary: bool, is_revoked: bool, name: Optional[str] = None, - expire_date: Optional[datetime.datetime] = None, + expire_date: Optional[DateTime] = None, member_limit: Optional[int] = None, pending_join_request_count: Optional[int] = None, **__pydantic_kwargs: Any, diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index 6aeac238..9a9f73b9 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -11,6 +11,7 @@ from .base import ( UNSET_PROTECT_CONTENT, TelegramObject, ) +from .custom import DateTime if TYPE_CHECKING: from ..methods import ( @@ -63,7 +64,7 @@ class ChatJoinRequest(TelegramObject): """User that sent the join request""" user_chat_id: int """Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.""" - date: datetime.datetime + date: DateTime """Date the request was sent in Unix time""" bio: Optional[str] = None """*Optional*. Bio of the user.""" @@ -80,7 +81,7 @@ class ChatJoinRequest(TelegramObject): chat: Chat, from_user: User, user_chat_id: int, - date: datetime.datetime, + date: DateTime, bio: Optional[str] = None, invite_link: Optional[ChatInviteLink] = None, **__pydantic_kwargs: Any, diff --git a/aiogram/types/chat_member_banned.py b/aiogram/types/chat_member_banned.py index ef8475df..88cfc75e 100644 --- a/aiogram/types/chat_member_banned.py +++ b/aiogram/types/chat_member_banned.py @@ -1,10 +1,10 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember +from .custom import DateTime if TYPE_CHECKING: from .user import User @@ -21,7 +21,7 @@ class ChatMemberBanned(ChatMember): """The member's status in the chat, always 'kicked'""" user: User """Information about the user""" - until_date: datetime.datetime + until_date: DateTime """Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever""" if TYPE_CHECKING: @@ -33,7 +33,7 @@ class ChatMemberBanned(ChatMember): *, status: Literal[ChatMemberStatus.KICKED] = ChatMemberStatus.KICKED, user: User, - until_date: datetime.datetime, + until_date: DateTime, **__pydantic_kwargs: Any, ) -> None: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/chat_member_restricted.py b/aiogram/types/chat_member_restricted.py index 01971e76..32d4a0dc 100644 --- a/aiogram/types/chat_member_restricted.py +++ b/aiogram/types/chat_member_restricted.py @@ -1,10 +1,10 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any, Literal from ..enums import ChatMemberStatus from .chat_member import ChatMember +from .custom import DateTime if TYPE_CHECKING: from .user import User @@ -51,7 +51,7 @@ class ChatMemberRestricted(ChatMember): """:code:`True`, if the user is allowed to pin messages""" can_manage_topics: bool """:code:`True`, if the user is allowed to create forum topics""" - until_date: datetime.datetime + until_date: DateTime """Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever""" if TYPE_CHECKING: @@ -78,7 +78,7 @@ class ChatMemberRestricted(ChatMember): can_invite_users: bool, can_pin_messages: bool, can_manage_topics: bool, - until_date: datetime.datetime, + until_date: DateTime, **__pydantic_kwargs: Any, ) -> None: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/chat_member_updated.py b/aiogram/types/chat_member_updated.py index 95db27de..46110092 100644 --- a/aiogram/types/chat_member_updated.py +++ b/aiogram/types/chat_member_updated.py @@ -11,6 +11,7 @@ from .base import ( UNSET_PROTECT_CONTENT, TelegramObject, ) +from .custom import DateTime if TYPE_CHECKING: from ..methods import ( @@ -65,7 +66,7 @@ class ChatMemberUpdated(TelegramObject): """Chat the user belongs to""" from_user: User = Field(..., alias="from") """Performer of the action, which resulted in the change""" - date: datetime.datetime + date: DateTime """Date the change was done in Unix time""" old_chat_member: Union[ ChatMemberOwner, @@ -99,7 +100,7 @@ class ChatMemberUpdated(TelegramObject): *, chat: Chat, from_user: User, - date: datetime.datetime, + date: DateTime, old_chat_member: Union[ ChatMemberOwner, ChatMemberAdministrator, diff --git a/aiogram/types/custom.py b/aiogram/types/custom.py new file mode 100644 index 00000000..5098caa6 --- /dev/null +++ b/aiogram/types/custom.py @@ -0,0 +1,14 @@ +from datetime import datetime + +from pydantic import PlainSerializer +from typing_extensions import Annotated + +# Make datetime compatible with Telegram Bot API (unixtime) +DateTime = Annotated[ + datetime, + PlainSerializer( + func=lambda dt: int(dt.timestamp()), + return_type=int, + when_used="json-unless-none", + ), +] diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 6652df7b..d1b68235 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -18,6 +18,7 @@ from .base import ( UNSET_PROTECT_CONTENT, TelegramObject, ) +from .custom import DateTime if TYPE_CHECKING: from ..methods import ( @@ -109,7 +110,7 @@ class Message(TelegramObject): message_id: int """Unique message identifier inside this chat""" - date: datetime.datetime + date: DateTime """Date the message was sent in Unix time""" chat: Chat """Conversation the message belongs to""" @@ -129,7 +130,7 @@ class Message(TelegramObject): """*Optional*. For forwarded messages that were originally sent in channels or by an anonymous chat administrator, signature of the message sender if present""" forward_sender_name: Optional[str] = None """*Optional*. Sender's name for messages forwarded from users who disallow adding a link to their account in forwarded messages""" - forward_date: Optional[datetime.datetime] = None + forward_date: Optional[DateTime] = None """*Optional*. For forwarded messages, date the original message was sent in Unix time""" is_topic_message: Optional[bool] = None """*Optional*. :code:`True`, if the message is sent to a forum topic""" @@ -260,7 +261,7 @@ class Message(TelegramObject): __pydantic__self__, *, message_id: int, - date: datetime.datetime, + date: DateTime, chat: Chat, message_thread_id: Optional[int] = None, from_user: Optional[User] = None, @@ -270,7 +271,7 @@ class Message(TelegramObject): forward_from_message_id: Optional[int] = None, forward_signature: Optional[str] = None, forward_sender_name: Optional[str] = None, - forward_date: Optional[datetime.datetime] = None, + forward_date: Optional[DateTime] = None, is_topic_message: Optional[bool] = None, is_automatic_forward: Optional[bool] = None, reply_to_message: Optional[Message] = None, diff --git a/aiogram/types/poll.py b/aiogram/types/poll.py index 8b2c8524..ecf39f73 100644 --- a/aiogram/types/poll.py +++ b/aiogram/types/poll.py @@ -1,9 +1,9 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject +from .custom import DateTime if TYPE_CHECKING: from .message_entity import MessageEntity @@ -41,7 +41,7 @@ class Poll(TelegramObject): """*Optional*. Special entities like usernames, URLs, bot commands, etc. that appear in the *explanation*""" open_period: Optional[int] = None """*Optional*. Amount of time in seconds the poll will be active after creation""" - close_date: Optional[datetime.datetime] = None + close_date: Optional[DateTime] = None """*Optional*. Point in time (Unix timestamp) when the poll will be automatically closed""" if TYPE_CHECKING: @@ -63,7 +63,7 @@ class Poll(TelegramObject): explanation: Optional[str] = None, explanation_entities: Optional[List[MessageEntity]] = None, open_period: Optional[int] = None, - close_date: Optional[datetime.datetime] = None, + close_date: Optional[DateTime] = None, **__pydantic_kwargs: Any, ) -> None: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/video_chat_scheduled.py b/aiogram/types/video_chat_scheduled.py index c1563627..c82e4953 100644 --- a/aiogram/types/video_chat_scheduled.py +++ b/aiogram/types/video_chat_scheduled.py @@ -1,9 +1,9 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any from .base import TelegramObject +from .custom import DateTime class VideoChatScheduled(TelegramObject): @@ -13,7 +13,7 @@ class VideoChatScheduled(TelegramObject): Source: https://core.telegram.org/bots/api#videochatscheduled """ - start_date: datetime.datetime + start_date: DateTime """Point in time (Unix timestamp) when the video chat is supposed to be started by a chat administrator""" if TYPE_CHECKING: @@ -21,7 +21,7 @@ class VideoChatScheduled(TelegramObject): # This section was auto-generated via `butcher` def __init__( - __pydantic__self__, *, start_date: datetime.datetime, **__pydantic_kwargs: Any + __pydantic__self__, *, start_date: DateTime, **__pydantic_kwargs: Any ) -> None: # DO NOT EDIT MANUALLY!!! # This method was auto-generated via `butcher` diff --git a/aiogram/types/webhook_info.py b/aiogram/types/webhook_info.py index ed19b342..1753df41 100644 --- a/aiogram/types/webhook_info.py +++ b/aiogram/types/webhook_info.py @@ -1,9 +1,9 @@ from __future__ import annotations -import datetime from typing import TYPE_CHECKING, Any, List, Optional from .base import TelegramObject +from .custom import DateTime class WebhookInfo(TelegramObject): @@ -21,11 +21,11 @@ class WebhookInfo(TelegramObject): """Number of updates awaiting delivery""" ip_address: Optional[str] = None """*Optional*. Currently used webhook IP address""" - last_error_date: Optional[datetime.datetime] = None + last_error_date: Optional[DateTime] = None """*Optional*. Unix time for the most recent error that happened when trying to deliver an update via webhook""" last_error_message: Optional[str] = None """*Optional*. Error message in human-readable format for the most recent error that happened when trying to deliver an update via webhook""" - last_synchronization_error_date: Optional[datetime.datetime] = None + last_synchronization_error_date: Optional[DateTime] = None """*Optional*. Unix time of the most recent error that happened when trying to synchronize available updates with Telegram datacenters""" max_connections: Optional[int] = None """*Optional*. The maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery""" @@ -43,9 +43,9 @@ class WebhookInfo(TelegramObject): has_custom_certificate: bool, pending_update_count: int, ip_address: Optional[str] = None, - last_error_date: Optional[datetime.datetime] = None, + last_error_date: Optional[DateTime] = None, last_error_message: Optional[str] = None, - last_synchronization_error_date: Optional[datetime.datetime] = None, + last_synchronization_error_date: Optional[DateTime] = None, max_connections: Optional[int] = None, allowed_updates: Optional[List[str]] = None, **__pydantic_kwargs: Any, diff --git a/pyproject.toml b/pyproject.toml index 104a1582..a287076f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ dependencies = [ "pydantic>=2.1.1,<3", "aiofiles~=23.1.0", "certifi>=2023.7.22", + "typing-extensions~=4.7.1", ] dynamic = ["version"] @@ -102,7 +103,6 @@ dev = [ "pre-commit~=3.3.3", "towncrier~=23.6.0", "packaging~=23.0", - "typing-extensions~=4.7.1", ] [project.urls] From e1be9dd6681bb79cfbf96e125c9d2acb429dbdc0 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 28 Aug 2023 22:32:11 +0300 Subject: [PATCH 091/139] Fix `Message.send_copy` method for stories (#1287) * Fix `Message.send_copy` method for stories Fixed an issue with the `Message.send_copy` method, which was not functioning properly with story-type messages. The `ForwardMessage` logic has been added to the method to enable copying of stories, in addition to other types. Tests and documentation have also been updated to reflect these changes. * Typo fix --- CHANGES/1286.bugfix.rst | 1 + aiogram/types/message.py | 8 ++++++++ docs/dispatcher/dispatcher.rst | 4 ++-- tests/test_api/test_types/test_message.py | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1286.bugfix.rst diff --git a/CHANGES/1286.bugfix.rst b/CHANGES/1286.bugfix.rst new file mode 100644 index 00000000..a9cfe0d9 --- /dev/null +++ b/CHANGES/1286.bugfix.rst @@ -0,0 +1 @@ +Fixed :code:`Message.send_copy` method, which was not working properly with stories, so not you can copy stories too (forwards messages). diff --git a/aiogram/types/message.py b/aiogram/types/message.py index d1b68235..5ad60d5b 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -2804,6 +2804,7 @@ class Message(TelegramObject): allow_sending_without_reply: Optional[bool] = None, message_thread_id: Optional[int] = None, ) -> Union[ + ForwardMessage, SendAnimation, SendAudio, SendContact, @@ -2839,6 +2840,7 @@ class Message(TelegramObject): :return: """ from ..methods import ( + ForwardMessage, SendAnimation, SendAudio, SendContact, @@ -2957,6 +2959,12 @@ class Message(TelegramObject): return SendDice( **kwargs, ).as_(self._bot) + if self.story: + return ForwardMessage( + from_chat_id=self.chat.id, + message_id=self.message_id, + **kwargs, + ).as_(self._bot) raise TypeError("This type of message can't be copied.") diff --git a/docs/dispatcher/dispatcher.rst b/docs/dispatcher/dispatcher.rst index 502422c0..2bb192de 100644 --- a/docs/dispatcher/dispatcher.rst +++ b/docs/dispatcher/dispatcher.rst @@ -4,14 +4,14 @@ Dispatcher Dispatcher is root :obj:`Router` and in code Dispatcher can be used directly for routing updates or attach another routers into dispatcher. -Here is only listed base information about Dispatcher. All about writing handlers, filters and etc. you can found in next pages: +Here is only listed base information about Dispatcher. All about writing handlers, filters and etc. you can find in next pages: - :ref:`Router ` - :ref:`Filtering events` .. autoclass:: aiogram.dispatcher.dispatcher.Dispatcher - :members: __init__, feed_update, feed_raw_update, feed_webhook_update, start_polling, run_polling + :members: __init__, feed_update, feed_raw_update, feed_webhook_update, start_polling, run_polling, stop_polling Simple usage diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 04e25578..0b600146 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -649,6 +649,7 @@ class TestMessage: [TEST_MESSAGE_CONTACT, SendContact], [TEST_MESSAGE_VENUE, SendVenue], [TEST_MESSAGE_LOCATION, SendLocation], + [TEST_MESSAGE_STORY, ForwardMessage], [TEST_MESSAGE_NEW_CHAT_MEMBERS, None], [TEST_MESSAGE_LEFT_CHAT_MEMBER, None], [TEST_MESSAGE_INVOICE, None], From 04bd0c9e7c5421c060183b90d515050f41377bc1 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Tue, 29 Aug 2023 02:01:54 +0300 Subject: [PATCH 092/139] Fixed error overlapping when validation error is caused by remove_unset root validator in base types and methods. (#1290) * Ensure base type validation can handle non-dictionary values The update introduces a condition to verify whether the values being validated are a dictionary before attempting to handle UNSET_TYPE in the aiogram base type. This adjustment helps to prevent potential errors or incorrect validation when non-dictionary values are faced. * Added a test case for non-dictionary input in remove_unset method * Added changelog * Fixed tests --- CHANGES/1290.bugfix.rst | 1 + aiogram/methods/base.py | 2 ++ aiogram/types/base.py | 2 ++ tests/test_api/test_methods/test_base.py | 11 ++++++++--- 4 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 CHANGES/1290.bugfix.rst diff --git a/CHANGES/1290.bugfix.rst b/CHANGES/1290.bugfix.rst new file mode 100644 index 00000000..04ba92dc --- /dev/null +++ b/CHANGES/1290.bugfix.rst @@ -0,0 +1 @@ +Fixed error overlapping when validation error is caused by remove_unset root validator in base types and methods. diff --git a/aiogram/methods/base.py b/aiogram/methods/base.py index 221ad9c0..b2d35bec 100644 --- a/aiogram/methods/base.py +++ b/aiogram/methods/base.py @@ -61,6 +61,8 @@ class TelegramMethod(BotContextController, BaseModel, Generic[TelegramType], ABC but UNSET might be passing to a model initialization from `Bot.method_name`, so we must take care of it and remove it before fields validation. """ + if not isinstance(values, dict): + return values return {k: v for k, v in values.items() if not isinstance(v, UNSET_TYPE)} if TYPE_CHECKING: diff --git a/aiogram/types/base.py b/aiogram/types/base.py index 9c24c703..dae52156 100644 --- a/aiogram/types/base.py +++ b/aiogram/types/base.py @@ -28,6 +28,8 @@ class TelegramObject(BotContextController, BaseModel): but UNSET might be passed to a model initialization from `Bot.method_name`, so we must take care of it and remove it before fields validation. """ + if not isinstance(values, dict): + return values return {k: v for k, v in values.items() if not isinstance(v, UNSET_TYPE)} diff --git a/tests/test_api/test_methods/test_base.py b/tests/test_api/test_methods/test_base.py index 9626c9b7..498428ce 100644 --- a/tests/test_api/test_methods/test_base.py +++ b/tests/test_api/test_methods/test_base.py @@ -3,7 +3,7 @@ from unittest.mock import sentinel import pytest from aiogram.methods import GetMe, TelegramMethod -from aiogram.types import User +from aiogram.types import User, TelegramObject from tests.mocked_bot import MockedBot @@ -16,10 +16,15 @@ class TestTelegramMethodRemoveUnset: [{"foo": "bar", "baz": sentinel.DEFAULT}, {"foo"}], ], ) - def test_remove_unset(self, values, names): - validated = TelegramMethod.remove_unset(values) + @pytest.mark.parametrize("obj", [TelegramMethod, TelegramObject]) + def test_remove_unset(self, values, names, obj): + validated = obj.remove_unset(values) assert set(validated.keys()) == names + @pytest.mark.parametrize("obj", [TelegramMethod, TelegramObject]) + def test_remove_unset_non_dict(self, obj): + assert obj.remove_unset("") == "" + class TestTelegramMethodCall: async def test_async_emit_unsuccessful(self, bot: MockedBot): From 0161322598d14b2fbf6f62149817455255616154 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 1 Sep 2023 18:04:42 +0300 Subject: [PATCH 093/139] Bump changelog --- CHANGES.rst | 21 +++++++++++++++++++++ CHANGES/1277.bugfix.rst | 2 -- CHANGES/1281.bugfix.rst | 1 - CHANGES/1282.bugfix.rst | 1 - CHANGES/1284.bugfix.rst | 1 - CHANGES/1286.bugfix.rst | 1 - CHANGES/1290.bugfix.rst | 1 - 7 files changed, 21 insertions(+), 7 deletions(-) delete mode 100644 CHANGES/1277.bugfix.rst delete mode 100644 CHANGES/1281.bugfix.rst delete mode 100644 CHANGES/1282.bugfix.rst delete mode 100644 CHANGES/1284.bugfix.rst delete mode 100644 CHANGES/1286.bugfix.rst delete mode 100644 CHANGES/1290.bugfix.rst diff --git a/CHANGES.rst b/CHANGES.rst index b3d1c6a0..245c4f49 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,27 @@ Changelog .. towncrier release notes start +3.0.0 (2023-09-01) +=================== + +Bugfixes +-------- + +- Replaced :code:`datetime.datetime` with `DateTime` type wrapper across types to make dumped JSONs object + more compatible with data that is sent by Telegram. + `#1277 `_ +- Fixed magic :code:`.as_(...)` operation for values that can be interpreted as `False` (e.g. `0`). + `#1281 `_ +- Italic markdown from utils now uses correct decorators + `#1282 `_ +- Fixed method :code:`Message.send_copy` for stickers. + `#1284 `_ +- Fixed :code:`Message.send_copy` method, which was not working properly with stories, so not you can copy stories too (forwards messages). + `#1286 `_ +- Fixed error overlapping when validation error is caused by remove_unset root validator in base types and methods. + `#1290 `_ + + 3.0.0rc2 (2023-08-18) ====================== diff --git a/CHANGES/1277.bugfix.rst b/CHANGES/1277.bugfix.rst deleted file mode 100644 index 6acfccf2..00000000 --- a/CHANGES/1277.bugfix.rst +++ /dev/null @@ -1,2 +0,0 @@ -Replaced :code:`datetime.datetime` with `DateTime` type wrapper across types to make dumped JSONs object -more compatible with data that is sent by Telegram. diff --git a/CHANGES/1281.bugfix.rst b/CHANGES/1281.bugfix.rst deleted file mode 100644 index 285b180d..00000000 --- a/CHANGES/1281.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed magic :code:`.as_(...)` operation for values that can be interpreted as `False` (e.g. `0`). diff --git a/CHANGES/1282.bugfix.rst b/CHANGES/1282.bugfix.rst deleted file mode 100644 index 323060b1..00000000 --- a/CHANGES/1282.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Italic markdown from utils now uses correct decorators \ No newline at end of file diff --git a/CHANGES/1284.bugfix.rst b/CHANGES/1284.bugfix.rst deleted file mode 100644 index b30cced4..00000000 --- a/CHANGES/1284.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed method :code:`Message.send_copy` for stickers. diff --git a/CHANGES/1286.bugfix.rst b/CHANGES/1286.bugfix.rst deleted file mode 100644 index a9cfe0d9..00000000 --- a/CHANGES/1286.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed :code:`Message.send_copy` method, which was not working properly with stories, so not you can copy stories too (forwards messages). diff --git a/CHANGES/1290.bugfix.rst b/CHANGES/1290.bugfix.rst deleted file mode 100644 index 04ba92dc..00000000 --- a/CHANGES/1290.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed error overlapping when validation error is caused by remove_unset root validator in base types and methods. From 8fd110cdd119df7c81e91a75fa3c48e52687753b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 3 Sep 2023 00:01:22 +0300 Subject: [PATCH 094/139] Bump version --- aiogram/__meta__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 805e9b72..bee8e1f3 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.0" +__version__ = "3.0.1" __api_version__ = "6.8" From 5cf8d7b565061b662434280248310c42033c9bc6 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 3 Sep 2023 00:25:31 +0300 Subject: [PATCH 095/139] Add MediaGroupBuilder for media group construction (#1293) Implemented a MediaGroupBuilder class in 'aiogram/utils/media_group.py' to help construct media groups. The class supports addition of different media types (audio, photo, video, document) to the media group with a maximum limit of 10 files. The functionality is demonstrated and usage is documented in 'docs/utils/media_group.rst'. Added related test cases in 'tests/test_utils/test_media_group.py'. This is to streamline and simplify the process of media group creation --- CHANGES/1293.feature.rst | 1 + aiogram/utils/media_group.py | 366 +++++++++++++++++++++++ docs/utils/index.rst | 1 + docs/utils/media_group.rst | 46 +++ tests/test_api/test_methods/test_base.py | 2 +- tests/test_utils/test_media_group.py | 94 ++++++ 6 files changed, 509 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1293.feature.rst create mode 100644 aiogram/utils/media_group.py create mode 100644 docs/utils/media_group.rst create mode 100644 tests/test_utils/test_media_group.py diff --git a/CHANGES/1293.feature.rst b/CHANGES/1293.feature.rst new file mode 100644 index 00000000..f561be61 --- /dev/null +++ b/CHANGES/1293.feature.rst @@ -0,0 +1 @@ +Added :class:`aiogram.utils.input_media.MediaGroupBuilder` for media group construction. diff --git a/aiogram/utils/media_group.py b/aiogram/utils/media_group.py new file mode 100644 index 00000000..c017c2ea --- /dev/null +++ b/aiogram/utils/media_group.py @@ -0,0 +1,366 @@ +from typing import Any, Dict, List, Literal, Optional, Union, overload + +from aiogram.enums import InputMediaType +from aiogram.types import ( + UNSET_PARSE_MODE, + InputFile, + InputMedia, + InputMediaAudio, + InputMediaDocument, + InputMediaPhoto, + InputMediaVideo, + MessageEntity, +) + +MediaType = Union[ + InputMediaAudio, + InputMediaPhoto, + InputMediaVideo, + InputMediaDocument, +] + +MAX_MEDIA_GROUP_SIZE = 10 + + +class MediaGroupBuilder: + # Animated media is not supported yet in Bot API to send as a media group + + def __init__( + self, + media: Optional[List[MediaType]] = None, + caption: Optional[str] = None, + caption_entities: Optional[List[MessageEntity]] = None, + ) -> None: + """ + Helper class for building media groups. + + :param media: A list of media elements to add to the media group. (optional) + :param caption: Caption for the media group. (optional) + :param caption_entities: List of special entities in the caption, + like usernames, URLs, etc. (optional) + """ + self._media: List[MediaType] = [] + self.caption = caption + self.caption_entities = caption_entities + + self._extend(media or []) + + def _add(self, media: MediaType) -> None: + if not isinstance(media, InputMedia): + raise ValueError("Media must be instance of InputMedia") + + if len(self._media) >= MAX_MEDIA_GROUP_SIZE: + raise ValueError("Media group can't contain more than 10 elements") + + self._media.append(media) + + def _extend(self, media: List[MediaType]) -> None: + for m in media: + self._add(m) + + @overload + def add( + self, + *, + type: Literal[InputMediaType.AUDIO], + media: Union[str, InputFile], + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + **kwargs: Any, + ) -> None: + pass + + @overload + def add( + self, + *, + type: Literal[InputMediaType.PHOTO], + media: Union[str, InputFile], + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + **kwargs: Any, + ) -> None: + pass + + @overload + def add( + self, + *, + type: Literal[InputMediaType.VIDEO], + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + width: Optional[int] = None, + height: Optional[int] = None, + duration: Optional[int] = None, + supports_streaming: Optional[bool] = None, + has_spoiler: Optional[bool] = None, + **kwargs: Any, + ) -> None: + pass + + @overload + def add( + self, + *, + type: Literal[InputMediaType.DOCUMENT], + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + **kwargs: Any, + ) -> None: + pass + + def add(self, **kwargs: Any) -> None: + """ + Add a media object to the media group. + + :param kwargs: Keyword arguments for the media object. + The available keyword arguments depend on the media type. + :return: None + """ + type_ = kwargs.pop("type", None) + if type_ == InputMediaType.AUDIO: + self.add_audio(**kwargs) + elif type_ == InputMediaType.PHOTO: + self.add_photo(**kwargs) + elif type_ == InputMediaType.VIDEO: + self.add_video(**kwargs) + elif type_ == InputMediaType.DOCUMENT: + self.add_document(**kwargs) + else: + raise ValueError(f"Unknown media type: {type_!r}") + + def add_audio( + self, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + duration: Optional[int] = None, + performer: Optional[str] = None, + title: Optional[str] = None, + **kwargs: Any, + ) -> None: + """ + Add an audio file to the media group. + + :param media: File to send. Pass a file_id to send a file that exists on the + Telegram servers (recommended), pass an HTTP URL for Telegram to get a file from + the Internet, or pass 'attach://' to upload a new one using + multipart/form-data under name. + :ref:`More information on Sending Files » ` + :param thumbnail: *Optional*. Thumbnail of the file sent; can be ignored if + thumbnail generation for the file is supported server-side. The thumbnail should + be in JPEG format and less than 200 kB in size. A thumbnail's width and height + should not exceed 320. + :param caption: *Optional*. Caption of the audio to be sent, 0-1024 characters + after entities parsing + :param parse_mode: *Optional*. Mode for parsing entities in the audio caption. + See `formatting options `_ + for more details. + :param caption_entities: *Optional*. List of special entities that appear in the caption, + which can be specified instead of *parse_mode* + :param duration: *Optional*. Duration of the audio in seconds + :param performer: *Optional*. Performer of the audio + :param title: *Optional*. Title of the audio + :return: None + """ + self._add( + InputMediaAudio( + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + duration=duration, + performer=performer, + title=title, + **kwargs, + ) + ) + + def add_photo( + self, + media: Union[str, InputFile], + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + has_spoiler: Optional[bool] = None, + **kwargs: Any, + ) -> None: + """ + Add a photo to the media group. + + :param media: File to send. Pass a file_id to send a file that exists on the + Telegram servers (recommended), pass an HTTP URL for Telegram to get a file + from the Internet, or pass 'attach://' to upload a new + one using multipart/form-data under name. + :ref:`More information on Sending Files » ` + :param caption: *Optional*. Caption of the photo to be sent, 0-1024 characters + after entities parsing + :param parse_mode: *Optional*. Mode for parsing entities in the photo caption. + See `formatting options `_ + for more details. + :param caption_entities: *Optional*. List of special entities that appear in the caption, + which can be specified instead of *parse_mode* + :param has_spoiler: *Optional*. Pass :code:`True` if the photo needs to be covered + with a spoiler animation + :return: None + """ + self._add( + InputMediaPhoto( + media=media, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + has_spoiler=has_spoiler, + **kwargs, + ) + ) + + def add_video( + self, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + width: Optional[int] = None, + height: Optional[int] = None, + duration: Optional[int] = None, + supports_streaming: Optional[bool] = None, + has_spoiler: Optional[bool] = None, + **kwargs: Any, + ) -> None: + """ + Add a video to the media group. + + :param media: File to send. Pass a file_id to send a file that exists on the + Telegram servers (recommended), pass an HTTP URL for Telegram to get a file + from the Internet, or pass 'attach://' to upload a new one + using multipart/form-data under name. + :ref:`More information on Sending Files » ` + :param thumbnail: *Optional*. Thumbnail of the file sent; can be ignored if thumbnail + generation for the file is supported server-side. The thumbnail should be in JPEG + format and less than 200 kB in size. A thumbnail's width and height should + not exceed 320. Ignored if the file is not uploaded using multipart/form-data. + Thumbnails can't be reused and can be only uploaded as a new file, so you + can pass 'attach://' if the thumbnail was uploaded using + multipart/form-data under . + :ref:`More information on Sending Files » ` + :param caption: *Optional*. Caption of the video to be sent, + 0-1024 characters after entities parsing + :param parse_mode: *Optional*. Mode for parsing entities in the video caption. + See `formatting options `_ + for more details. + :param caption_entities: *Optional*. List of special entities that appear in the caption, + which can be specified instead of *parse_mode* + :param width: *Optional*. Video width + :param height: *Optional*. Video height + :param duration: *Optional*. Video duration in seconds + :param supports_streaming: *Optional*. Pass :code:`True` if the uploaded video is + suitable for streaming + :param has_spoiler: *Optional*. Pass :code:`True` if the video needs to be covered + with a spoiler animation + :return: None + """ + self._add( + InputMediaVideo( + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + width=width, + height=height, + duration=duration, + supports_streaming=supports_streaming, + has_spoiler=has_spoiler, + **kwargs, + ) + ) + + def add_document( + self, + media: Union[str, InputFile], + thumbnail: Optional[Union[InputFile, str]] = None, + caption: Optional[str] = None, + parse_mode: Optional[str] = UNSET_PARSE_MODE, + caption_entities: Optional[List[MessageEntity]] = None, + disable_content_type_detection: Optional[bool] = None, + **kwargs: Any, + ) -> None: + """ + Add a document to the media group. + + :param media: File to send. Pass a file_id to send a file that exists on the + Telegram servers (recommended), pass an HTTP URL for Telegram to get a file + from the Internet, or pass 'attach://' to upload a new one using + multipart/form-data under name. + :ref:`More information on Sending Files » ` + :param thumbnail: *Optional*. Thumbnail of the file sent; can be ignored + if thumbnail generation for the file is supported server-side. + The thumbnail should be in JPEG format and less than 200 kB in size. + A thumbnail's width and height should not exceed 320. + Ignored if the file is not uploaded using multipart/form-data. + Thumbnails can't be reused and can be only uploaded as a new file, + so you can pass 'attach://' if the thumbnail was uploaded + using multipart/form-data under . + :ref:`More information on Sending Files » ` + :param caption: *Optional*. Caption of the document to be sent, + 0-1024 characters after entities parsing + :param parse_mode: *Optional*. Mode for parsing entities in the document caption. + See `formatting options `_ + for more details. + :param caption_entities: *Optional*. List of special entities that appear + in the caption, which can be specified instead of *parse_mode* + :param disable_content_type_detection: *Optional*. Disables automatic server-side + content type detection for files uploaded using multipart/form-data. + Always :code:`True`, if the document is sent as part of an album. + :return: None + + """ + self._add( + InputMediaDocument( + media=media, + thumbnail=thumbnail, + caption=caption, + parse_mode=parse_mode, + caption_entities=caption_entities, + disable_content_type_detection=disable_content_type_detection, + **kwargs, + ) + ) + + def build(self) -> List[MediaType]: + """ + Builds a list of media objects for a media group. + + Adds the caption to the first media object if it is present. + + :return: List of media objects. + """ + update_first_media: Dict[str, Any] = {"caption": self.caption} + if self.caption_entities is not None: + update_first_media["caption_entities"] = self.caption_entities + update_first_media["parse_mode"] = None + + return [ + media.model_copy(update=update_first_media) + if index == 0 and self.caption is not None + else media + for index, media in enumerate(self._media) + ] diff --git a/docs/utils/index.rst b/docs/utils/index.rst index fbab2e4a..034c04d8 100644 --- a/docs/utils/index.rst +++ b/docs/utils/index.rst @@ -10,3 +10,4 @@ Utils web_app callback_answer formatting + media_group diff --git a/docs/utils/media_group.rst b/docs/utils/media_group.rst new file mode 100644 index 00000000..c9501a66 --- /dev/null +++ b/docs/utils/media_group.rst @@ -0,0 +1,46 @@ +=================== +Media group builder +=================== + +This module provides a builder for media groups, it can be used to build media groups +for :class:`aiogram.types.input_media_photo.InputMediaPhoto`, :class:`aiogram.types.input_media_video.InputMediaVideo`, +:class:`aiogram.types.input_media_document.InputMediaDocument` and :class:`aiogram.types.input_media_audio.InputMediaAudio`. + +.. warning:: + + :class:`aiogram.types.input_media_animation.InputMediaAnimation` + is not supported yet in the Bot API to send as media group. + + +Usage +===== + +.. code-block:: python + + media_group = MediaGroupBuilder(caption="Media group caption") + + # Add photo + media_group.add_photo(media="https://picsum.photos/200/300") + # Dynamically add photo with known type without using separate method + media_group.add(type="photo", media="https://picsum.photos/200/300") + # ... or video + media_group.add(type="video", media=FSInputFile("media/video.mp4")) + + +To send media group use :meth:`aiogram.methods.send_media_group.SendMediaGroup` method, +but when you use :class:`aiogram.utils.media_group.MediaGroupBuilder` +you should pass ``media`` argument as ``media_group.build()``. + +If you specify ``caption`` in :class:`aiogram.utils.media_group.MediaGroupBuilder` +it will be used as ``caption`` for first media in group. + +.. code-block:: python + + await bot.send_media_group(chat_id=chat_id, media=media_group.build()) + + +References +========== + +.. autoclass:: aiogram.utils.media_group.MediaGroupBuilder + :members: diff --git a/tests/test_api/test_methods/test_base.py b/tests/test_api/test_methods/test_base.py index 498428ce..085650f3 100644 --- a/tests/test_api/test_methods/test_base.py +++ b/tests/test_api/test_methods/test_base.py @@ -3,7 +3,7 @@ from unittest.mock import sentinel import pytest from aiogram.methods import GetMe, TelegramMethod -from aiogram.types import User, TelegramObject +from aiogram.types import TelegramObject, User from tests.mocked_bot import MockedBot diff --git a/tests/test_utils/test_media_group.py b/tests/test_utils/test_media_group.py new file mode 100644 index 00000000..eae63a95 --- /dev/null +++ b/tests/test_utils/test_media_group.py @@ -0,0 +1,94 @@ +import pytest + +from aiogram.types import ( + InputMediaAudio, + InputMediaDocument, + InputMediaPhoto, + InputMediaVideo, + MessageEntity, +) +from aiogram.utils.media_group import MediaGroupBuilder + + +class TestMediaGroupBuilder: + def test_add_incorrect_media(self): + builder = MediaGroupBuilder() + with pytest.raises(ValueError): + builder._add("test") + + def test_add_more_than_10_media(self): + builder = MediaGroupBuilder() + for _ in range(10): + builder.add_photo("test") + with pytest.raises(ValueError): + builder.add_photo("test") + + def test_extend(self): + builder = MediaGroupBuilder() + media = InputMediaPhoto(media="test") + + builder._extend([media, media]) + assert len(builder._media) == 2 + + def test_add_audio(self): + builder = MediaGroupBuilder() + builder.add_audio("test") + assert isinstance(builder._media[0], InputMediaAudio) + + def test_add_photo(self): + builder = MediaGroupBuilder() + builder.add_photo("test") + assert isinstance(builder._media[0], InputMediaPhoto) + + def test_add_video(self): + builder = MediaGroupBuilder() + builder.add_video("test") + assert isinstance(builder._media[0], InputMediaVideo) + + def test_add_document(self): + builder = MediaGroupBuilder() + builder.add_document("test") + assert isinstance(builder._media[0], InputMediaDocument) + + @pytest.mark.parametrize( + "type,result_type", + [ + ("audio", InputMediaAudio), + ("photo", InputMediaPhoto), + ("video", InputMediaVideo), + ("document", InputMediaDocument), + ], + ) + def test_add(self, type, result_type): + builder = MediaGroupBuilder() + builder.add(type=type, media="test") + assert isinstance(builder._media[0], result_type) + + def test_add_unknown_type(self): + builder = MediaGroupBuilder() + with pytest.raises(ValueError): + builder.add(type="unknown", media="test") + + def test_build(self): + builder = MediaGroupBuilder() + builder.add_photo("test") + assert builder.build() == builder._media + + def test_build_empty(self): + builder = MediaGroupBuilder() + assert builder.build() == [] + + def test_build_with_caption(self): + builder = MediaGroupBuilder( + caption="override caption", + caption_entities=[MessageEntity(type="bold", offset=0, length=8)], + ) + builder.add_photo("test", caption="test") + builder.add_photo("test", caption="test") + builder.add_photo("test", caption="test") + + media = builder.build() + assert len(media) == 3 + assert media[0].caption == "override caption" + assert media[1].caption == "test" + assert media[2].caption == "test" From 995a0d7e9b3774c869a1a0f015dc63ae3e4e358a Mon Sep 17 00:00:00 2001 From: Oleg A Date: Sun, 3 Sep 2023 00:26:57 +0300 Subject: [PATCH 096/139] Custom encoding support (#1278) * Custom encoding support in deep-linking --- CHANGES/1262.feature | 1 + aiogram/utils/deep_linking.py | 77 +++++++++++------- aiogram/utils/payload.py | 108 ++++++++++++++++++++++++++ pyproject.toml | 3 +- tests/test_utils/test_deep_linking.py | 30 ++++++- 5 files changed, 187 insertions(+), 32 deletions(-) create mode 100644 CHANGES/1262.feature create mode 100644 aiogram/utils/payload.py diff --git a/CHANGES/1262.feature b/CHANGES/1262.feature new file mode 100644 index 00000000..822c82ae --- /dev/null +++ b/CHANGES/1262.feature @@ -0,0 +1 @@ +Added support for custom encoders/decoders for payload (and also for deep-linking). diff --git a/aiogram/utils/deep_linking.py b/aiogram/utils/deep_linking.py index 3d27633f..7f9b3583 100644 --- a/aiogram/utils/deep_linking.py +++ b/aiogram/utils/deep_linking.py @@ -16,7 +16,7 @@ Basic link example: .. code-block:: python from aiogram.utils.deep_linking import create_start_link - + link = await create_start_link(bot, 'foo') # result: 'https://t.me/MyBot?start=foo' @@ -46,19 +46,33 @@ Decode it back example: """ from __future__ import annotations +__all__ = [ + "create_start_link", + "create_startgroup_link", + "create_deep_link", + "create_telegram_link", + "encode_payload", + "decode_payload", +] + import re -from base64 import urlsafe_b64decode, urlsafe_b64encode -from typing import TYPE_CHECKING, Literal, cast +from typing import Callable, Literal, Optional, TYPE_CHECKING, cast from aiogram.utils.link import create_telegram_link +from aiogram.utils.payload import encode_payload, decode_payload if TYPE_CHECKING: from aiogram import Bot -BAD_PATTERN = re.compile(r"[^_A-z0-9-]") +BAD_PATTERN = re.compile(r"[^A-z0-9-]") -async def create_start_link(bot: Bot, payload: str, encode: bool = False) -> str: +async def create_start_link( + bot: Bot, + payload: str, + encode: bool = False, + encoder: Optional[Callable[[bytes], bytes]] = None, +) -> str: """ Create 'start' deep link with your payload. @@ -67,16 +81,26 @@ async def create_start_link(bot: Bot, payload: str, encode: bool = False) -> str :param bot: bot instance :param payload: args passed with /start - :param encode: encode payload with base64url + :param encode: encode payload with base64url or custom encoder + :param encoder: custom encoder callable :return: link """ username = (await bot.me()).username return create_deep_link( - username=cast(str, username), link_type="start", payload=payload, encode=encode + username=cast(str, username), + link_type="start", + payload=payload, + encode=encode, + encoder=encoder, ) -async def create_startgroup_link(bot: Bot, payload: str, encode: bool = False) -> str: +async def create_startgroup_link( + bot: Bot, + payload: str, + encode: bool = False, + encoder: Optional[Callable[[bytes], bytes]] = None, +) -> str: """ Create 'startgroup' deep link with your payload. @@ -85,17 +109,26 @@ async def create_startgroup_link(bot: Bot, payload: str, encode: bool = False) - :param bot: bot instance :param payload: args passed with /start - :param encode: encode payload with base64url + :param encode: encode payload with base64url or custom encoder + :param encoder: custom encoder callable :return: link """ username = (await bot.me()).username return create_deep_link( - username=cast(str, username), link_type="startgroup", payload=payload, encode=encode + username=cast(str, username), + link_type="startgroup", + payload=payload, + encode=encode, + encoder=encoder, ) def create_deep_link( - username: str, link_type: Literal["start", "startgroup"], payload: str, encode: bool = False + username: str, + link_type: Literal["start", "startgroup"], + payload: str, + encode: bool = False, + encoder: Optional[Callable[[bytes], bytes]] = None, ) -> str: """ Create deep link. @@ -103,14 +136,15 @@ def create_deep_link( :param username: :param link_type: `start` or `startgroup` :param payload: any string-convertible data - :param encode: pass True to encode the payload + :param encode: encode payload with base64url or custom encoder + :param encoder: custom encoder callable :return: deeplink """ if not isinstance(payload, str): payload = str(payload) - if encode: - payload = encode_payload(payload) + if encode or encoder: + payload = encode_payload(payload, encoder=encoder) if re.search(BAD_PATTERN, payload): raise ValueError( @@ -122,18 +156,3 @@ def create_deep_link( raise ValueError("Payload must be up to 64 characters long.") return create_telegram_link(username, **{cast(str, link_type): payload}) - - -def encode_payload(payload: str) -> str: - """Encode payload with URL-safe base64url.""" - payload = str(payload) - bytes_payload: bytes = urlsafe_b64encode(payload.encode()) - str_payload = bytes_payload.decode() - return str_payload.replace("=", "") - - -def decode_payload(payload: str) -> str: - """Decode payload with URL-safe base64url.""" - payload += "=" * (4 - len(payload) % 4) - result: bytes = urlsafe_b64decode(payload) - return result.decode() diff --git a/aiogram/utils/payload.py b/aiogram/utils/payload.py new file mode 100644 index 00000000..f070dd4e --- /dev/null +++ b/aiogram/utils/payload.py @@ -0,0 +1,108 @@ +""" +Payload preparing + +We have added some utils to make work with payload easier. + +Basic encode example: + + .. code-block:: python + + from aiogram.utils.payload import encode_payload + + encoded = encode_payload("foo") + + # result: "Zm9v" + +Basic decode it back example: + + .. code-block:: python + + from aiogram.utils.payload import decode_payload + + encoded = "Zm9v" + decoded = decode_payload(encoded) + # result: "foo" + +Encoding and decoding with your own methods: + + 1. Create your own cryptor + + .. code-block:: python + + from Cryptodome.Cipher import AES + from Cryptodome.Util.Padding import pad, unpad + + class Cryptor: + def __init__(self, key: str): + self.key = key.encode("utf-8") + self.mode = AES.MODE_ECB # never use ECB in strong systems obviously + self.size = 32 + + @property + def cipher(self): + return AES.new(self.key, self.mode) + + def encrypt(self, data: bytes) -> bytes: + return self.cipher.encrypt(pad(data, self.size)) + + def decrypt(self, data: bytes) -> bytes: + decrypted_data = self.cipher.decrypt(data) + return unpad(decrypted_data, self.size) + + 2. Pass cryptor callable methods to aiogram payload tools + + .. code-block:: python + + cryptor = Cryptor("abcdefghijklmnop") + encoded = encode_payload("foo", encoder=cryptor.encrypt) + decoded = decode_payload(encoded_payload, decoder=cryptor.decrypt) + + # result: decoded == "foo" + +""" +from base64 import urlsafe_b64decode, urlsafe_b64encode +from typing import Callable, Optional + + +def encode_payload( + payload: str, + encoder: Optional[Callable[[bytes], bytes]] = None, +) -> str: + """Encode payload with encoder. + + Result also will be encoded with URL-safe base64url. + """ + if not isinstance(payload, str): + payload = str(payload) + + payload_bytes = payload.encode("utf-8") + if encoder is not None: + payload_bytes = encoder(payload_bytes) + + return _encode_b64(payload_bytes) + + +def decode_payload( + payload: str, + decoder: Optional[Callable[[bytes], bytes]] = None, +) -> str: + """Decode URL-safe base64url payload with decoder.""" + original_payload = _decode_b64(payload) + + if decoder is None: + return original_payload.decode() + + return decoder(original_payload).decode() + + +def _encode_b64(payload: bytes) -> str: + """Encode with URL-safe base64url.""" + bytes_payload: bytes = urlsafe_b64encode(payload) + str_payload = bytes_payload.decode() + return str_payload.replace("=", "") + + +def _decode_b64(payload: str) -> bytes: + """Decode with URL-safe base64url.""" + payload += "=" * (4 - len(payload) % 4) + return urlsafe_b64decode(payload.encode()) diff --git a/pyproject.toml b/pyproject.toml index a287076f..aa31ab34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,8 @@ test = [ "pytest-cov~=4.0.0", "pytest-aiohttp~=1.0.4", "aresponses~=2.1.6", - "pytz~=2022.7.1" + "pytz~=2022.7.1", + "pycryptodomex~=3.18", ] docs = [ "Sphinx~=7.1.1", diff --git a/tests/test_utils/test_deep_linking.py b/tests/test_utils/test_deep_linking.py index 3c1dbec2..df06c1e5 100644 --- a/tests/test_utils/test_deep_linking.py +++ b/tests/test_utils/test_deep_linking.py @@ -3,9 +3,8 @@ import pytest from aiogram.utils.deep_linking import ( create_start_link, create_startgroup_link, - decode_payload, - encode_payload, ) +from aiogram.utils.payload import decode_payload, encode_payload from tests.mocked_bot import MockedBot PAYLOADS = [ @@ -51,6 +50,33 @@ class TestDeepLinking: decoded = decode_payload(encoded) assert decoded == str(payload) + async def test_custom_encode_decode(self, payload: str): + from Cryptodome.Cipher import AES + from Cryptodome.Util.Padding import pad, unpad + + class Cryptor: + def __init__(self, key: str): + self.key = key.encode("utf-8") + self.mode = AES.MODE_ECB # never use ECB in strong systems obviously + self.size = 32 + + @property + def cipher(self): + return AES.new(self.key, self.mode) + + def encrypt(self, data: bytes) -> bytes: + return self.cipher.encrypt(pad(data, self.size)) + + def decrypt(self, data: bytes) -> bytes: + decrypted_data = self.cipher.decrypt(data) + return unpad(decrypted_data, self.size) + + cryptor = Cryptor("abcdefghijklmnop") + encoded_payload = encode_payload(payload, encoder=cryptor.encrypt) + decoded_payload = decode_payload(encoded_payload, decoder=cryptor.decrypt) + + assert decoded_payload == str(payload) + async def test_get_start_link_with_encoding(self, bot: MockedBot, wrong_payload: str): # define link link = await create_start_link(bot, wrong_payload, encode=True) From b56628bb2e58219239f0be8ec965abd0013f914e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 3 Sep 2023 03:16:48 +0300 Subject: [PATCH 097/139] Update dates interval in license file --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index f9721b14..caa060cc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2017-2022 Alex Root Junior +Copyright (c) 2017 - present Alex Root Junior Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software From b94123de3dc33fee7208d95d04b2e5eea8947b53 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 6 Sep 2023 00:50:46 +0300 Subject: [PATCH 098/139] Remove `commands=` from examples --- examples/error_handling.py | 4 ++-- examples/web_app/handlers.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/error_handling.py b/examples/error_handling.py index 3f8efdc4..83b5500d 100644 --- a/examples/error_handling.py +++ b/examples/error_handling.py @@ -59,7 +59,7 @@ async def handle_invalid_exceptions(event: ErrorEvent) -> None: logger.error("Error `Invalid` caught: %r while processing %r", event.exception, event.update) -@dp.message(Command(commands=["age"])) +@dp.message(Command("age")) async def handle_set_age(message: types.Message, command: CommandObject) -> None: """ This handler receives only messages with `/age` command. @@ -83,7 +83,7 @@ async def handle_set_age(message: types.Message, command: CommandObject) -> None await message.reply(text=f"Your age is {age}") -@dp.message(Command(commands=["name"])) +@dp.message(Command("name")) async def handle_set_name(message: types.Message, command: CommandObject) -> None: """ This handler receives only messages with `/name` command. diff --git a/examples/web_app/handlers.py b/examples/web_app/handlers.py index 5ac6cc7d..5896c0b2 100644 --- a/examples/web_app/handlers.py +++ b/examples/web_app/handlers.py @@ -11,7 +11,7 @@ from aiogram.types import ( my_router = Router() -@my_router.message(Command(commands=["start"])) +@my_router.message(Command("start")) async def command_start(message: Message, bot: Bot, base_url: str): await bot.set_chat_menu_button( chat_id=message.chat.id, @@ -20,7 +20,7 @@ async def command_start(message: Message, bot: Bot, base_url: str): await message.answer("""Hi!\nSend me any type of message to start.\nOr just send /webview""") -@my_router.message(Command(commands=["webview"])) +@my_router.message(Command("webview")) async def command_webview(message: Message, base_url: str): await message.answer( "Good. Now you can try to send it via Webview", From 28cc2384e886f1c86fe74d86d1693b0f0d558b32 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Thu, 7 Sep 2023 22:44:05 +0300 Subject: [PATCH 099/139] Fixed typo --- docs/dispatcher/webhook.rst | 2 +- docs/locale/en/LC_MESSAGES/dispatcher/webhook.po | 2 +- docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/dispatcher/webhook.rst b/docs/dispatcher/webhook.rst index 8cff6640..6869124e 100644 --- a/docs/dispatcher/webhook.rst +++ b/docs/dispatcher/webhook.rst @@ -18,7 +18,7 @@ Before start i'll recommend you to read `official Telegram's documentation about After you read it, you can start to read this section. Generally to use webhook with aiogram you should use any async web framework. -Buy out of the box aiogram has an aiohttp integration, so we'll use it. +By out of the box aiogram has an aiohttp integration, so we'll use it. .. note:: diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po index b5cbbcad..6d9f582d 100644 --- a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po +++ b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po @@ -46,7 +46,7 @@ msgstr "" #: ../../dispatcher/webhook.rst:20 msgid "" "Generally to use webhook with aiogram you should use any async web " -"framework. Buy out of the box aiogram has an aiohttp integration, so " +"framework. By out of the box aiogram has an aiohttp integration, so " "we'll use it." msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po index b5cbbcad..6d9f582d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po @@ -46,7 +46,7 @@ msgstr "" #: ../../dispatcher/webhook.rst:20 msgid "" "Generally to use webhook with aiogram you should use any async web " -"framework. Buy out of the box aiogram has an aiohttp integration, so " +"framework. By out of the box aiogram has an aiohttp integration, so " "we'll use it." msgstr "" From 69c2e1282f7717c91226c66aee935ae96a209504 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 10 Sep 2023 22:42:32 +0300 Subject: [PATCH 100/139] Update filtering docs page --- docs/dispatcher/filters/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/dispatcher/filters/index.rst b/docs/dispatcher/filters/index.rst index 33442ec8..795cb4f3 100644 --- a/docs/dispatcher/filters/index.rst +++ b/docs/dispatcher/filters/index.rst @@ -6,8 +6,9 @@ Filtering events Filters is needed for routing updates to the specific handler. Searching of handler is always stops on first match set of filters are pass. +By default, all handlers has empty set of filters, so all updates will be passed to first handler that has empty set of filters. -*aiogram* has some builtin useful filters. +*aiogram* has some builtin useful filters or you can write own filters. Builtin filters =============== From c229cf8c7b310e632a735eaa0dfa3749c40c33f6 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Mon, 11 Sep 2023 00:34:02 +0300 Subject: [PATCH 101/139] Updated migration guide with API server (#1299) * docs: updated migration guide with API server * Update docs/migration_2_to_3.rst Co-authored-by: Alex Root Junior --------- Co-authored-by: Alex Root Junior --- docs/migration_2_to_3.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index 80910f84..93228c4d 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -133,3 +133,10 @@ Webhook - Simplified aiohttp web app configuration - By default added possibility to upload files when you use reply into webhook + + +Telegram API Server +=================== + +- `server` param was moved from `Bot` instance to `api` in `BaseSession`. +- `aiogram.bot.api.TELEGRAM_PRODUCTION` was moved to `aiogram.client.telegram.PRODUCTION`. From 83a01f014cae1a54ca4c27882ae85d63e988bfe2 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 19 Sep 2023 17:42:09 +0300 Subject: [PATCH 102/139] fix: added absent params for button builders (#1304) * fix: added absent params for button builders * docs: added changelog * fix: renamed changelog item --- CHANGES/1303.bugfix | 1 + aiogram/utils/keyboard.py | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1303.bugfix diff --git a/CHANGES/1303.bugfix b/CHANGES/1303.bugfix new file mode 100644 index 00000000..57d3e512 --- /dev/null +++ b/CHANGES/1303.bugfix @@ -0,0 +1 @@ +Added actual param hints for `InlineKeyboardBuilder` and `ReplyKeyboardBuilder`. diff --git a/aiogram/utils/keyboard.py b/aiogram/utils/keyboard.py index 429cbe46..932f5865 100644 --- a/aiogram/utils/keyboard.py +++ b/aiogram/utils/keyboard.py @@ -28,6 +28,8 @@ from aiogram.types import ( KeyboardButtonPollType, LoginUrl, ReplyKeyboardMarkup, + SwitchInlineQueryChosenChat, + WebAppInfo, ) ButtonType = TypeVar("ButtonType", InlineKeyboardButton, KeyboardButton) @@ -299,10 +301,12 @@ class InlineKeyboardBuilder(KeyboardBuilder[InlineKeyboardButton]): *, text: str, url: Optional[str] = None, - login_url: Optional[LoginUrl] = None, callback_data: Optional[Union[str, CallbackData]] = None, + web_app: Optional[WebAppInfo] = None, + login_url: Optional[LoginUrl] = None, switch_inline_query: Optional[str] = None, switch_inline_query_current_chat: Optional[str] = None, + switch_inline_query_chosen_chat: Optional[SwitchInlineQueryChosenChat] = None, callback_game: Optional[CallbackGame] = None, pay: Optional[bool] = None, **kwargs: Any, @@ -349,9 +353,12 @@ class ReplyKeyboardBuilder(KeyboardBuilder[KeyboardButton]): self, *, text: str, + request_user: Optional[bool] = None, + request_chat: Optional[bool] = None, request_contact: Optional[bool] = None, request_location: Optional[bool] = None, request_poll: Optional[KeyboardButtonPollType] = None, + web_app: Optional[WebAppInfo] = None, **kwargs: Any, ) -> "KeyboardBuilder[KeyboardButton]": ... From ac62184443a3d2c19ce7997faf830ea77a5be524 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 19 Sep 2023 17:43:10 +0300 Subject: [PATCH 103/139] fix: new towncrier docs link (#1306) --- .github/workflows/pull_request_changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request_changelog.yml b/.github/workflows/pull_request_changelog.yml index f803153e..7f9d7b86 100644 --- a/.github/workflows/pull_request_changelog.yml +++ b/.github/workflows/pull_request_changelog.yml @@ -57,7 +57,7 @@ jobs: For example, you can run `towncrier create .` to create a file in the change directory and then write a description on that file. - Read more at [Towncrier docs](https://towncrier.readthedocs.io/en/latest/quickstart.html#creating-news-fragments) + Read more at [Towncrier docs](https://towncrier.readthedocs.io/en/latest/tutorial.html#creating-news-fragments) - name: Changelog found if: "success()" From 490381b57fc93b06b8839d404b4f3dafbfa68a54 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 19 Sep 2023 17:43:43 +0300 Subject: [PATCH 104/139] chore: apply lint&reformat (#1307) --- aiogram/utils/deep_linking.py | 4 ++-- examples/multibot.py | 2 +- tests/test_utils/test_deep_linking.py | 5 +---- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/aiogram/utils/deep_linking.py b/aiogram/utils/deep_linking.py index 7f9b3583..bfd62a16 100644 --- a/aiogram/utils/deep_linking.py +++ b/aiogram/utils/deep_linking.py @@ -56,10 +56,10 @@ __all__ = [ ] import re -from typing import Callable, Literal, Optional, TYPE_CHECKING, cast +from typing import TYPE_CHECKING, Callable, Literal, Optional, cast from aiogram.utils.link import create_telegram_link -from aiogram.utils.payload import encode_payload, decode_payload +from aiogram.utils.payload import decode_payload, encode_payload if TYPE_CHECKING: from aiogram import Bot diff --git a/examples/multibot.py b/examples/multibot.py index d5dbe5fc..82fac4a1 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -4,7 +4,6 @@ from os import getenv from typing import Any, Dict, Union from aiohttp import web -from finite_state_machine import form_router from aiogram import Bot, Dispatcher, F, Router from aiogram.client.session.aiohttp import AiohttpSession @@ -19,6 +18,7 @@ from aiogram.webhook.aiohttp_server import ( TokenBasedRequestHandler, setup_application, ) +from finite_state_machine import form_router main_router = Router() diff --git a/tests/test_utils/test_deep_linking.py b/tests/test_utils/test_deep_linking.py index df06c1e5..85a6027b 100644 --- a/tests/test_utils/test_deep_linking.py +++ b/tests/test_utils/test_deep_linking.py @@ -1,9 +1,6 @@ import pytest -from aiogram.utils.deep_linking import ( - create_start_link, - create_startgroup_link, -) +from aiogram.utils.deep_linking import create_start_link, create_startgroup_link from aiogram.utils.payload import decode_payload, encode_payload from tests.mocked_bot import MockedBot From 8a77939d5bf7778be8a65e3531781220245724ff Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 19 Sep 2023 17:44:39 +0300 Subject: [PATCH 105/139] Update deprecated pydantic fields access (#1309) * chore: update deprecated pydantic fields access * chore: add type hints for test * fix: 3.9- type support --- tests/test_api/test_types/test_reply_keyboard_remove.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_api/test_types/test_reply_keyboard_remove.py b/tests/test_api/test_types/test_reply_keyboard_remove.py index 984932a5..1d252cc5 100644 --- a/tests/test_api/test_types/test_reply_keyboard_remove.py +++ b/tests/test_api/test_types/test_reply_keyboard_remove.py @@ -1,3 +1,5 @@ +from typing import Dict + import pytest from aiogram.types import ReplyKeyboardRemove @@ -10,12 +12,12 @@ class TestReplyKeyboardRemove: def test_remove_keyboard_default_is_true(self): assert ( - ReplyKeyboardRemove.__fields__["remove_keyboard"].default is True + ReplyKeyboardRemove.model_fields["remove_keyboard"].default is True ), "Remove keyboard has incorrect default value!" @pytest.mark.parametrize( "kwargs,expected", [[{}, True], [{"remove_keyboard": True}, True]], ) - def test_remove_keyboard_values(self, kwargs, expected): + def test_remove_keyboard_values(self, kwargs: Dict[str, bool], expected: bool): assert ReplyKeyboardRemove(**kwargs).remove_keyboard is expected From a0828f6ddf755d78dd2151513b49348ebfc85a94 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Thu, 21 Sep 2023 22:54:48 +0300 Subject: [PATCH 106/139] #1317 Fixed priority of events isolation (#1318) --- CHANGES/1317.bugfix.rst | 1 + aiogram/fsm/middleware.py | 4 +- .../test_1317_state_vs_isolation.py | 81 +++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1317.bugfix.rst create mode 100644 tests/test_issues/test_1317_state_vs_isolation.py diff --git a/CHANGES/1317.bugfix.rst b/CHANGES/1317.bugfix.rst new file mode 100644 index 00000000..dcdf1e47 --- /dev/null +++ b/CHANGES/1317.bugfix.rst @@ -0,0 +1 @@ +Fixed priority of events isolation, now user state will be loaded only after lock is acquired diff --git a/aiogram/fsm/middleware.py b/aiogram/fsm/middleware.py index 6de91a83..d1f1d973 100644 --- a/aiogram/fsm/middleware.py +++ b/aiogram/fsm/middleware.py @@ -34,8 +34,10 @@ class FSMContextMiddleware(BaseMiddleware): context = self.resolve_event_context(bot, data) data["fsm_storage"] = self.storage if context: - data.update({"state": context, "raw_state": await context.get_state()}) + # Bugfix: https://github.com/aiogram/aiogram/issues/1317 + # State should be loaded after lock is acquired async with self.events_isolation.lock(key=context.key): + data.update({"state": context, "raw_state": await context.get_state()}) return await handler(event, data) return await handler(event, data) diff --git a/tests/test_issues/test_1317_state_vs_isolation.py b/tests/test_issues/test_1317_state_vs_isolation.py new file mode 100644 index 00000000..31613fa4 --- /dev/null +++ b/tests/test_issues/test_1317_state_vs_isolation.py @@ -0,0 +1,81 @@ +import asyncio +from datetime import datetime + +from aiogram import Dispatcher +from aiogram.filters import Command +from aiogram.fsm.context import FSMContext +from aiogram.fsm.state import State, StatesGroup +from aiogram.fsm.storage.memory import SimpleEventIsolation +from aiogram.types import Chat, Message, Update, User +from tests.mocked_bot import MockedBot + + +class TestStateVSIsolation: + async def test_issue(self, bot: MockedBot): + dispatcher = Dispatcher(events_isolation=SimpleEventIsolation()) + first = 0 + second = 0 + third = 0 + stack = [] + + class TestState(StatesGroup): + foo = State() + bar = State() + baz = State() + + @dispatcher.message(Command("test")) + async def command_top(message: Message, state: FSMContext): + nonlocal first + first += 1 + stack.append("command") + await state.set_state(TestState.foo) + + @dispatcher.message(TestState.foo) + async def handle_foo(message: Message, state: FSMContext): + nonlocal second + second += 1 + stack.append("foo") + await state.set_state(TestState.bar) + + @dispatcher.message(TestState.bar) + async def handle_bar(message: Message, state: FSMContext): + nonlocal third + third += 1 + stack.append("bar") + await state.set_state(None) + + @dispatcher.message() + async def handle_all(message: Message): + stack.append("all") + + await asyncio.gather( + *( + dispatcher.feed_update(bot, update) + for update in [ + create_message_update(index=1, text="/test"), + create_message_update(index=2, text="foo"), + create_message_update(index=3, text="bar"), + create_message_update(index=4, text="baz"), + ] + ) + ) + + # Before bug fix: + # first == 1, second == 3, third == 0, stack == ["command", "foo", "foo", "foo"] + assert first == 1 + assert second == 1 + assert third == 1 + assert stack == ["command", "foo", "bar", "all"] + + +def create_message_update(index: int, text: str): + return Update( + update_id=index, + message=Message( + message_id=index, + date=datetime.now(), + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test", username="test"), + text=text, + ), + ) From fec138977db889e2a9ec6e01616bf6269ce54538 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 22 Sep 2023 17:46:57 +0300 Subject: [PATCH 107/139] Telegram Bot API 6.9 (#1319) * Added support for Bot API 6.9 * Bump API * Added changelog --- .apiversion | 2 +- .butcher/methods/banChatMember/entity.json | 6 +- .../methods/restrictChatMember/entity.json | 6 +- .butcher/schema/schema.json | 148 +++++++++++++----- .butcher/types/Chat/entity.json | 6 +- .../types/ChatAdministratorRights/entity.json | 36 ++++- .../types/ChatMemberAdministrator/entity.json | 36 ++++- .butcher/types/ChatMemberBanned/entity.json | 6 +- .../types/ChatMemberRestricted/entity.json | 6 +- .../InlineQueryResultsButton/entity.json | 4 +- .butcher/types/Message/entity.json | 6 +- .butcher/types/WebAppInfo/entity.json | 4 +- .butcher/types/WriteAccessAllowed/entity.json | 28 +++- CHANGES/{1262.feature => 1262.feature.rst} | 0 CHANGES/{1303.bugfix => 1303.bugfix.rst} | 0 CHANGES/1319.feature.rst | 1 + README.rst | 2 +- aiogram/__meta__.py | 4 +- aiogram/client/bot.py | 4 +- aiogram/methods/ban_chat_member.py | 2 +- aiogram/methods/restrict_chat_member.py | 2 +- aiogram/types/chat.py | 6 +- aiogram/types/chat_administrator_rights.py | 16 +- aiogram/types/chat_member_administrator.py | 16 +- aiogram/types/chat_member_banned.py | 2 +- aiogram/types/chat_member_restricted.py | 2 +- aiogram/types/inline_query_results_button.py | 2 +- aiogram/types/message.py | 2 +- aiogram/types/web_app_info.py | 2 +- aiogram/types/write_access_allowed.py | 22 ++- examples/multibot.py | 2 +- pyproject.toml | 6 +- 32 files changed, 277 insertions(+), 110 deletions(-) rename CHANGES/{1262.feature => 1262.feature.rst} (100%) rename CHANGES/{1303.bugfix => 1303.bugfix.rst} (100%) create mode 100644 CHANGES/1319.feature.rst diff --git a/.apiversion b/.apiversion index 21afad37..12e41412 100644 --- a/.apiversion +++ b/.apiversion @@ -1 +1 @@ -6.8 +6.9 diff --git a/.butcher/methods/banChatMember/entity.json b/.butcher/methods/banChatMember/entity.json index c6ee2e8e..9a5eda0d 100644 --- a/.butcher/methods/banChatMember/entity.json +++ b/.butcher/methods/banChatMember/entity.json @@ -30,9 +30,9 @@ { "type": "Integer", "required": false, - "description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", - "html_description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", - "rst_description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n", + "description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", + "html_description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", + "rst_description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n", "name": "until_date" }, { diff --git a/.butcher/methods/restrictChatMember/entity.json b/.butcher/methods/restrictChatMember/entity.json index f0ed7537..38d78844 100644 --- a/.butcher/methods/restrictChatMember/entity.json +++ b/.butcher/methods/restrictChatMember/entity.json @@ -46,9 +46,9 @@ { "type": "Integer", "required": false, - "description": "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", - "html_description": "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", - "rst_description": "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\n", + "description": "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", + "html_description": "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", + "rst_description": "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\n", "name": "until_date" } ], diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json index d4ec9ad1..7f4457cc 100644 --- a/.butcher/schema/schema.json +++ b/.butcher/schema/schema.json @@ -1,7 +1,7 @@ { "api": { - "version": "6.8", - "release_date": "2023-08-18" + "version": "6.9", + "release_date": "2023-09-22" }, "items": [ { @@ -549,9 +549,9 @@ }, { "type": "Integer", - "description": "Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", - "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", - "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", + "description": "Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in getChat.", + "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in getChat.", + "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", "name": "emoji_status_expiration_date", "required": false }, @@ -1167,9 +1167,9 @@ }, { "type": "WriteAccessAllowed", - "description": "Service message: the user allowed the bot added to the attachment menu to write messages", - "html_description": "Optional. Service message: the user allowed the bot added to the attachment menu to write messages", - "rst_description": "*Optional*. Service message: the user allowed the bot added to the attachment menu to write messages\n", + "description": "Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess", + "html_description": "Optional. Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess", + "rst_description": "*Optional*. Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_\n", "name": "write_access_allowed", "required": false }, @@ -2454,17 +2454,33 @@ { "anchor": "writeaccessallowed", "name": "WriteAccessAllowed", - "description": "This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.", - "html_description": "

This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.

", - "rst_description": "This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.", + "description": "This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess.", + "html_description": "

This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess.

", + "rst_description": "This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_.", "annotations": [ + { + "type": "Boolean", + "description": "True, if the access was granted after the user accepted an explicit request from a Web App sent by the method requestWriteAccess", + "html_description": "Optional. True, if the access was granted after the user accepted an explicit request from a Web App sent by the method requestWriteAccess", + "rst_description": "*Optional*. True, if the access was granted after the user accepted an explicit request from a Web App sent by the method `requestWriteAccess `_\n", + "name": "from_request", + "required": false + }, { "type": "String", - "description": "Name of the Web App which was launched from a link", - "html_description": "Optional. Name of the Web App which was launched from a link", - "rst_description": "*Optional*. Name of the Web App which was launched from a link\n", + "description": "Name of the Web App, if the access was granted when the Web App was launched from a link", + "html_description": "Optional. Name of the Web App, if the access was granted when the Web App was launched from a link", + "rst_description": "*Optional*. Name of the Web App, if the access was granted when the Web App was launched from a link\n", "name": "web_app_name", "required": false + }, + { + "type": "Boolean", + "description": "True, if the access was granted when the bot was added to the attachment or side menu", + "html_description": "Optional. True, if the access was granted when the bot was added to the attachment or side menu", + "rst_description": "*Optional*. True, if the access was granted when the bot was added to the attachment or side menu\n", + "name": "from_attachment_menu", + "required": false } ], "category": "types" @@ -2610,8 +2626,8 @@ { "type": "String", "description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", - "html_description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", - "rst_description": "An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_\n", + "html_description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", + "rst_description": "An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_\n", "name": "url", "required": true } @@ -3335,9 +3351,9 @@ }, { "type": "Boolean", - "description": "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", - "html_description": "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", - "rst_description": ":code:`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\n", + "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -3391,9 +3407,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post in the channel; channels only", - "html_description": "Optional. True, if the administrator can post in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", "name": "can_post_messages", "required": false }, @@ -3413,6 +3429,30 @@ "name": "can_pin_messages", "required": false }, + { + "type": "Boolean", + "description": "True, if the administrator can post stories in the channel; channels only", + "html_description": "Optional. True, if the administrator can post stories in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can edit stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can edit stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can delete stories posted by other users", + "html_description": "Optional. True, if the administrator can delete stories posted by other users", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "name": "can_delete_stories", + "required": false + }, { "type": "Boolean", "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only", @@ -3516,9 +3556,9 @@ }, { "type": "Boolean", - "description": "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", - "html_description": "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", - "rst_description": ":code:`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\n", + "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -3572,9 +3612,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post in the channel; channels only", - "html_description": "Optional. True, if the administrator can post in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", "name": "can_post_messages", "required": false }, @@ -3594,6 +3634,30 @@ "name": "can_pin_messages", "required": false }, + { + "type": "Boolean", + "description": "True, if the administrator can post stories in the channel; channels only", + "html_description": "Optional. True, if the administrator can post stories in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can edit stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can edit stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can delete stories posted by other users", + "html_description": "Optional. True, if the administrator can delete stories posted by other users", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "name": "can_delete_stories", + "required": false + }, { "type": "Boolean", "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only", @@ -3784,9 +3848,9 @@ }, { "type": "Integer", - "description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever", - "html_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever", - "rst_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever\n", + "description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever", + "html_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever", + "rst_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever\n", "name": "until_date", "required": true } @@ -3844,9 +3908,9 @@ }, { "type": "Integer", - "description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever", - "html_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever", - "rst_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever\n", + "description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever", + "html_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever", + "rst_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever\n", "name": "until_date", "required": true } @@ -6821,9 +6885,9 @@ { "type": "Integer", "required": false, - "description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", - "html_description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", - "rst_description": "Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n", + "description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", + "html_description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.", + "rst_description": "Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.\n", "name": "until_date" }, { @@ -6913,9 +6977,9 @@ { "type": "Integer", "required": false, - "description": "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", - "html_description": "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", - "rst_description": "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\n", + "description": "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", + "html_description": "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", + "rst_description": "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\n", "name": "until_date" } ], @@ -9681,8 +9745,8 @@ { "type": "WebAppInfo", "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", - "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", - "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", "name": "web_app", "required": false }, diff --git a/.butcher/types/Chat/entity.json b/.butcher/types/Chat/entity.json index 4bc1fb60..0a65849d 100644 --- a/.butcher/types/Chat/entity.json +++ b/.butcher/types/Chat/entity.json @@ -93,9 +93,9 @@ }, { "type": "Integer", - "description": "Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", - "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in getChat.", - "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", + "description": "Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in getChat.", + "html_description": "Optional. Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in getChat.", + "rst_description": "*Optional*. Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.\n", "name": "emoji_status_expiration_date", "required": false }, diff --git a/.butcher/types/ChatAdministratorRights/entity.json b/.butcher/types/ChatAdministratorRights/entity.json index 6d5951e8..eb3b1c14 100644 --- a/.butcher/types/ChatAdministratorRights/entity.json +++ b/.butcher/types/ChatAdministratorRights/entity.json @@ -21,9 +21,9 @@ }, { "type": "Boolean", - "description": "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", - "html_description": "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", - "rst_description": ":code:`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\n", + "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -77,9 +77,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post in the channel; channels only", - "html_description": "Optional. True, if the administrator can post in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", "name": "can_post_messages", "required": false }, @@ -99,6 +99,30 @@ "name": "can_pin_messages", "required": false }, + { + "type": "Boolean", + "description": "True, if the administrator can post stories in the channel; channels only", + "html_description": "Optional. True, if the administrator can post stories in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can edit stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can edit stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can delete stories posted by other users", + "html_description": "Optional. True, if the administrator can delete stories posted by other users", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "name": "can_delete_stories", + "required": false + }, { "type": "Boolean", "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only", diff --git a/.butcher/types/ChatMemberAdministrator/entity.json b/.butcher/types/ChatMemberAdministrator/entity.json index 577d9daf..65981631 100644 --- a/.butcher/types/ChatMemberAdministrator/entity.json +++ b/.butcher/types/ChatMemberAdministrator/entity.json @@ -45,9 +45,9 @@ }, { "type": "Boolean", - "description": "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", - "html_description": "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", - "rst_description": ":code:`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\n", + "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -101,9 +101,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post in the channel; channels only", - "html_description": "Optional. True, if the administrator can post in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", "name": "can_post_messages", "required": false }, @@ -123,6 +123,30 @@ "name": "can_pin_messages", "required": false }, + { + "type": "Boolean", + "description": "True, if the administrator can post stories in the channel; channels only", + "html_description": "Optional. True, if the administrator can post stories in the channel; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can edit stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can edit stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories", + "required": false + }, + { + "type": "Boolean", + "description": "True, if the administrator can delete stories posted by other users", + "html_description": "Optional. True, if the administrator can delete stories posted by other users", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "name": "can_delete_stories", + "required": false + }, { "type": "Boolean", "description": "True, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only", diff --git a/.butcher/types/ChatMemberBanned/entity.json b/.butcher/types/ChatMemberBanned/entity.json index 49d42e20..4da411ec 100644 --- a/.butcher/types/ChatMemberBanned/entity.json +++ b/.butcher/types/ChatMemberBanned/entity.json @@ -29,9 +29,9 @@ }, { "type": "Integer", - "description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever", - "html_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever", - "rst_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever\n", + "description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever", + "html_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever", + "rst_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever\n", "name": "until_date", "required": true } diff --git a/.butcher/types/ChatMemberRestricted/entity.json b/.butcher/types/ChatMemberRestricted/entity.json index 958ad57a..1c46132d 100644 --- a/.butcher/types/ChatMemberRestricted/entity.json +++ b/.butcher/types/ChatMemberRestricted/entity.json @@ -149,9 +149,9 @@ }, { "type": "Integer", - "description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever", - "html_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever", - "rst_description": "Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever\n", + "description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever", + "html_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever", + "rst_description": "Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever\n", "name": "until_date", "required": true } diff --git a/.butcher/types/InlineQueryResultsButton/entity.json b/.butcher/types/InlineQueryResultsButton/entity.json index ce4cdf1e..a66c2f3b 100644 --- a/.butcher/types/InlineQueryResultsButton/entity.json +++ b/.butcher/types/InlineQueryResultsButton/entity.json @@ -22,8 +22,8 @@ { "type": "WebAppInfo", "description": "Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", - "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", - "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", + "html_description": "Optional. Description of the Web App that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method switchInlineQuery inside the Web App.", + "rst_description": "*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.\n", "name": "web_app", "required": false }, diff --git a/.butcher/types/Message/entity.json b/.butcher/types/Message/entity.json index ef639796..993d37eb 100644 --- a/.butcher/types/Message/entity.json +++ b/.butcher/types/Message/entity.json @@ -469,9 +469,9 @@ }, { "type": "WriteAccessAllowed", - "description": "Service message: the user allowed the bot added to the attachment menu to write messages", - "html_description": "Optional. Service message: the user allowed the bot added to the attachment menu to write messages", - "rst_description": "*Optional*. Service message: the user allowed the bot added to the attachment menu to write messages\n", + "description": "Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess", + "html_description": "Optional. Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess", + "rst_description": "*Optional*. Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_\n", "name": "write_access_allowed", "required": false }, diff --git a/.butcher/types/WebAppInfo/entity.json b/.butcher/types/WebAppInfo/entity.json index a0ec3c45..aaeed289 100644 --- a/.butcher/types/WebAppInfo/entity.json +++ b/.butcher/types/WebAppInfo/entity.json @@ -14,8 +14,8 @@ { "type": "String", "description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", - "html_description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", - "rst_description": "An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_\n", + "html_description": "An HTTPS URL of a Web App to be opened with additional data as specified in Initializing Web Apps", + "rst_description": "An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_\n", "name": "url", "required": true } diff --git a/.butcher/types/WriteAccessAllowed/entity.json b/.butcher/types/WriteAccessAllowed/entity.json index 62d83fdd..d054736a 100644 --- a/.butcher/types/WriteAccessAllowed/entity.json +++ b/.butcher/types/WriteAccessAllowed/entity.json @@ -7,17 +7,33 @@ "object": { "anchor": "writeaccessallowed", "name": "WriteAccessAllowed", - "description": "This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.", - "html_description": "

This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.

", - "rst_description": "This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link.", + "description": "This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess.", + "html_description": "

This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method requestWriteAccess.

", + "rst_description": "This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_.", "annotations": [ + { + "type": "Boolean", + "description": "True, if the access was granted after the user accepted an explicit request from a Web App sent by the method requestWriteAccess", + "html_description": "Optional. True, if the access was granted after the user accepted an explicit request from a Web App sent by the method requestWriteAccess", + "rst_description": "*Optional*. True, if the access was granted after the user accepted an explicit request from a Web App sent by the method `requestWriteAccess `_\n", + "name": "from_request", + "required": false + }, { "type": "String", - "description": "Name of the Web App which was launched from a link", - "html_description": "Optional. Name of the Web App which was launched from a link", - "rst_description": "*Optional*. Name of the Web App which was launched from a link\n", + "description": "Name of the Web App, if the access was granted when the Web App was launched from a link", + "html_description": "Optional. Name of the Web App, if the access was granted when the Web App was launched from a link", + "rst_description": "*Optional*. Name of the Web App, if the access was granted when the Web App was launched from a link\n", "name": "web_app_name", "required": false + }, + { + "type": "Boolean", + "description": "True, if the access was granted when the bot was added to the attachment or side menu", + "html_description": "Optional. True, if the access was granted when the bot was added to the attachment or side menu", + "rst_description": "*Optional*. True, if the access was granted when the bot was added to the attachment or side menu\n", + "name": "from_attachment_menu", + "required": false } ], "category": "types" diff --git a/CHANGES/1262.feature b/CHANGES/1262.feature.rst similarity index 100% rename from CHANGES/1262.feature rename to CHANGES/1262.feature.rst diff --git a/CHANGES/1303.bugfix b/CHANGES/1303.bugfix.rst similarity index 100% rename from CHANGES/1303.bugfix rename to CHANGES/1303.bugfix.rst diff --git a/CHANGES/1319.feature.rst b/CHANGES/1319.feature.rst new file mode 100644 index 00000000..2bd75ee4 --- /dev/null +++ b/CHANGES/1319.feature.rst @@ -0,0 +1 @@ +Added full support of `Bot API 6.9 `_ diff --git a/README.rst b/README.rst index af494848..1a2f360a 100644 --- a/README.rst +++ b/README.rst @@ -52,7 +52,7 @@ Features - Asynchronous (`asyncio docs `_, :pep:`492`) - Has type hints (:pep:`484`) and can be used with `mypy `_ - Supports `PyPy `_ -- Supports `Telegram Bot API 6.8 `_ and gets fast updates to the latest versions of the Bot API +- Supports `Telegram Bot API 6.9 `_ and gets fast updates to the latest versions of the Bot API - Telegram Bot API integration code was `autogenerated `_ and can be easily re-generated when API gets updated - Updates router (Blueprints) - Has Finite State Machine diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index bee8e1f3..64923c65 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.0.1" -__api_version__ = "6.8" +__version__ = "3.1.0" +__api_version__ = "6.9" diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index 1bf48356..3a360c25 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -713,7 +713,7 @@ class Bot: :param chat_id: Unique identifier for the target group or username of the target supergroup or channel (in the format :code:`@channelusername`) :param user_id: Unique identifier of the target user - :param until_date: Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only. + :param until_date: Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only. :param revoke_messages: Pass :code:`True` to delete all messages from the chat for the user that is being removed. If :code:`False`, the user will be able to see messages in the group that were sent before the user was removed. Always :code:`True` for supergroups and channels. :param request_timeout: Request timeout :return: Returns :code:`True` on success. @@ -2066,7 +2066,7 @@ class Bot: :param user_id: Unique identifier of the target user :param permissions: A JSON-serialized object for new user permissions :param use_independent_chat_permissions: Pass :code:`True` if chat permissions are set independently. Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*, *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the *can_send_polls* permission will imply the *can_send_messages* permission. - :param until_date: 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 + :param until_date: 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 :param request_timeout: Request timeout :return: Returns :code:`True` on success. """ diff --git a/aiogram/methods/ban_chat_member.py b/aiogram/methods/ban_chat_member.py index bbfc9f75..947fccae 100644 --- a/aiogram/methods/ban_chat_member.py +++ b/aiogram/methods/ban_chat_member.py @@ -21,7 +21,7 @@ class BanChatMember(TelegramMethod[bool]): user_id: int """Unique identifier of the target user""" until_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None - """Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.""" + """Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only.""" revoke_messages: Optional[bool] = None """Pass :code:`True` to delete all messages from the chat for the user that is being removed. If :code:`False`, the user will be able to see messages in the group that were sent before the user was removed. Always :code:`True` for supergroups and channels.""" diff --git a/aiogram/methods/restrict_chat_member.py b/aiogram/methods/restrict_chat_member.py index 331e95f7..5dfbd01d 100644 --- a/aiogram/methods/restrict_chat_member.py +++ b/aiogram/methods/restrict_chat_member.py @@ -26,7 +26,7 @@ class RestrictChatMember(TelegramMethod[bool]): use_independent_chat_permissions: Optional[bool] = None """Pass :code:`True` if chat permissions are set independently. Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*, *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the *can_send_polls* permission will imply the *can_send_messages* permission.""" until_date: Optional[Union[datetime.datetime, datetime.timedelta, int]] = None - """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""" + """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""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index 921ed3e7..b5bcd5d4 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -72,7 +72,7 @@ class Chat(TelegramObject): emoji_status_custom_emoji_id: Optional[str] = None """*Optional*. Custom emoji identifier of emoji status of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" emoji_status_expiration_date: Optional[DateTime] = None - """*Optional*. Expiration date of the emoji status of the other party in a private chat, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" + """*Optional*. Expiration date of the emoji status of the other party in a private chat in Unix time, if any. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" bio: Optional[str] = None """*Optional*. Bio of the other party in a private chat. Returned only in :class:`aiogram.methods.get_chat.GetChat`.""" has_private_forwards: Optional[bool] = None @@ -892,7 +892,7 @@ class Chat(TelegramObject): :param user_id: Unique identifier of the target user :param permissions: A JSON-serialized object for new user permissions :param use_independent_chat_permissions: Pass :code:`True` if chat permissions are set independently. Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*, *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the *can_send_polls* permission will imply the *can_send_messages* permission. - :param until_date: 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 + :param until_date: 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 :return: instance of method :class:`aiogram.methods.restrict_chat_member.RestrictChatMember` """ # DO NOT EDIT MANUALLY!!! @@ -959,7 +959,7 @@ class Chat(TelegramObject): Source: https://core.telegram.org/bots/api#banchatmember :param user_id: Unique identifier of the target user - :param until_date: Date when the user will be unbanned, unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only. + :param until_date: Date when the user will be unbanned; Unix time. If user is banned for more than 366 days or less than 30 seconds from the current time they are considered to be banned forever. Applied for supergroups and channels only. :param revoke_messages: Pass :code:`True` to delete all messages from the chat for the user that is being removed. If :code:`False`, the user will be able to see messages in the group that were sent before the user was removed. Always :code:`True` for supergroups and channels. :return: instance of method :class:`aiogram.methods.ban_chat_member.BanChatMember` """ diff --git a/aiogram/types/chat_administrator_rights.py b/aiogram/types/chat_administrator_rights.py index 1da998d1..da5179b7 100644 --- a/aiogram/types/chat_administrator_rights.py +++ b/aiogram/types/chat_administrator_rights.py @@ -18,7 +18,7 @@ class ChatAdministratorRights(TelegramObject): is_anonymous: bool """:code:`True`, if the user's presence in the chat is hidden""" can_manage_chat: bool - """:code:`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""" + """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" can_delete_messages: bool """:code:`True`, if the administrator can delete messages of other users""" can_manage_video_chats: bool @@ -32,11 +32,17 @@ class ChatAdministratorRights(TelegramObject): can_invite_users: bool """:code:`True`, if the user is allowed to invite new users to the chat""" can_post_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can post in the channel; channels only""" + """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only""" can_edit_messages: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only""" can_pin_messages: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only""" + can_post_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only""" + can_edit_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only""" + can_delete_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can delete stories posted by other users""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" @@ -58,6 +64,9 @@ class ChatAdministratorRights(TelegramObject): can_post_messages: Optional[bool] = None, can_edit_messages: Optional[bool] = None, can_pin_messages: Optional[bool] = None, + can_post_stories: Optional[bool] = None, + can_edit_stories: Optional[bool] = None, + can_delete_stories: Optional[bool] = None, can_manage_topics: Optional[bool] = None, **__pydantic_kwargs: Any, ) -> None: @@ -77,6 +86,9 @@ class ChatAdministratorRights(TelegramObject): can_post_messages=can_post_messages, can_edit_messages=can_edit_messages, can_pin_messages=can_pin_messages, + can_post_stories=can_post_stories, + can_edit_stories=can_edit_stories, + can_delete_stories=can_delete_stories, can_manage_topics=can_manage_topics, **__pydantic_kwargs, ) diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py index 02a3be39..0db04dce 100644 --- a/aiogram/types/chat_member_administrator.py +++ b/aiogram/types/chat_member_administrator.py @@ -25,7 +25,7 @@ class ChatMemberAdministrator(ChatMember): is_anonymous: bool """:code:`True`, if the user's presence in the chat is hidden""" can_manage_chat: bool - """:code:`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""" + """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" can_delete_messages: bool """:code:`True`, if the administrator can delete messages of other users""" can_manage_video_chats: bool @@ -39,11 +39,17 @@ class ChatMemberAdministrator(ChatMember): can_invite_users: bool """:code:`True`, if the user is allowed to invite new users to the chat""" can_post_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can post in the channel; channels only""" + """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only""" can_edit_messages: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only""" can_pin_messages: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to pin messages; groups and supergroups only""" + can_post_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can post stories in the channel; channels only""" + can_edit_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only""" + can_delete_stories: Optional[bool] = None + """*Optional*. :code:`True`, if the administrator can delete stories posted by other users""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" custom_title: Optional[str] = None @@ -70,6 +76,9 @@ class ChatMemberAdministrator(ChatMember): can_post_messages: Optional[bool] = None, can_edit_messages: Optional[bool] = None, can_pin_messages: Optional[bool] = None, + can_post_stories: Optional[bool] = None, + can_edit_stories: Optional[bool] = None, + can_delete_stories: Optional[bool] = None, can_manage_topics: Optional[bool] = None, custom_title: Optional[str] = None, **__pydantic_kwargs: Any, @@ -93,6 +102,9 @@ class ChatMemberAdministrator(ChatMember): can_post_messages=can_post_messages, can_edit_messages=can_edit_messages, can_pin_messages=can_pin_messages, + can_post_stories=can_post_stories, + can_edit_stories=can_edit_stories, + can_delete_stories=can_delete_stories, can_manage_topics=can_manage_topics, custom_title=custom_title, **__pydantic_kwargs, diff --git a/aiogram/types/chat_member_banned.py b/aiogram/types/chat_member_banned.py index 88cfc75e..65776c52 100644 --- a/aiogram/types/chat_member_banned.py +++ b/aiogram/types/chat_member_banned.py @@ -22,7 +22,7 @@ class ChatMemberBanned(ChatMember): user: User """Information about the user""" until_date: DateTime - """Date when restrictions will be lifted for this user; unix time. If 0, then the user is banned forever""" + """Date when restrictions will be lifted for this user; Unix time. If 0, then the user is banned forever""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/chat_member_restricted.py b/aiogram/types/chat_member_restricted.py index 32d4a0dc..b27d72a2 100644 --- a/aiogram/types/chat_member_restricted.py +++ b/aiogram/types/chat_member_restricted.py @@ -52,7 +52,7 @@ class ChatMemberRestricted(ChatMember): can_manage_topics: bool """:code:`True`, if the user is allowed to create forum topics""" until_date: DateTime - """Date when restrictions will be lifted for this user; unix time. If 0, then the user is restricted forever""" + """Date when restrictions will be lifted for this user; Unix time. If 0, then the user is restricted forever""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/inline_query_results_button.py b/aiogram/types/inline_query_results_button.py index c93172bb..6943fb89 100644 --- a/aiogram/types/inline_query_results_button.py +++ b/aiogram/types/inline_query_results_button.py @@ -18,7 +18,7 @@ class InlineQueryResultsButton(TelegramObject): text: str """Label text on the button""" web_app: Optional[WebAppInfo] = None - """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.""" + """*Optional*. Description of the `Web App `_ that will be launched when the user presses the button. The Web App will be able to switch back to the inline mode using the method `switchInlineQuery `_ inside the Web App.""" start_parameter: Optional[str] = None """*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed.""" diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 5ad60d5b..da3e1f98 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -223,7 +223,7 @@ class Message(TelegramObject): connected_website: Optional[str] = None """*Optional*. The domain name of the website on which the user has logged in. `More about Telegram Login » `_""" write_access_allowed: Optional[WriteAccessAllowed] = None - """*Optional*. Service message: the user allowed the bot added to the attachment menu to write messages""" + """*Optional*. Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_""" passport_data: Optional[PassportData] = None """*Optional*. Telegram Passport data""" proximity_alert_triggered: Optional[ProximityAlertTriggered] = None diff --git a/aiogram/types/web_app_info.py b/aiogram/types/web_app_info.py index 01d00d3d..fbf9846e 100644 --- a/aiogram/types/web_app_info.py +++ b/aiogram/types/web_app_info.py @@ -13,7 +13,7 @@ class WebAppInfo(TelegramObject): """ url: str - """An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_""" + """An HTTPS URL of a Web App to be opened with additional data as specified in `Initializing Web Apps `_""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/types/write_access_allowed.py b/aiogram/types/write_access_allowed.py index eb8b1d14..6b8e50a0 100644 --- a/aiogram/types/write_access_allowed.py +++ b/aiogram/types/write_access_allowed.py @@ -5,23 +5,37 @@ from aiogram.types import TelegramObject class WriteAccessAllowed(TelegramObject): """ - This object represents a service message about a user allowing a bot to write messages after adding the bot to the attachment menu or launching a Web App from a link. + This object represents a service message about a user allowing a bot to write messages after adding it to the attachment menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_. Source: https://core.telegram.org/bots/api#writeaccessallowed """ + from_request: Optional[bool] = None + """*Optional*. True, if the access was granted after the user accepted an explicit request from a Web App sent by the method `requestWriteAccess `_""" web_app_name: Optional[str] = None - """*Optional*. Name of the Web App which was launched from a link""" + """*Optional*. Name of the Web App, if the access was granted when the Web App was launched from a link""" + from_attachment_menu: Optional[bool] = None + """*Optional*. True, if the access was granted when the bot was added to the attachment or side menu""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! # This section was auto-generated via `butcher` def __init__( - __pydantic__self__, *, web_app_name: Optional[str] = None, **__pydantic_kwargs: Any + __pydantic__self__, + *, + from_request: Optional[bool] = None, + web_app_name: Optional[str] = None, + from_attachment_menu: Optional[bool] = None, + **__pydantic_kwargs: Any, ) -> None: # DO NOT EDIT MANUALLY!!! # This method was auto-generated via `butcher` # Is needed only for type checking and IDE support without any additional plugins - super().__init__(web_app_name=web_app_name, **__pydantic_kwargs) + super().__init__( + from_request=from_request, + web_app_name=web_app_name, + from_attachment_menu=from_attachment_menu, + **__pydantic_kwargs, + ) diff --git a/examples/multibot.py b/examples/multibot.py index 82fac4a1..d5dbe5fc 100644 --- a/examples/multibot.py +++ b/examples/multibot.py @@ -4,6 +4,7 @@ from os import getenv from typing import Any, Dict, Union from aiohttp import web +from finite_state_machine import form_router from aiogram import Bot, Dispatcher, F, Router from aiogram.client.session.aiohttp import AiohttpSession @@ -18,7 +19,6 @@ from aiogram.webhook.aiohttp_server import ( TokenBasedRequestHandler, setup_application, ) -from finite_state_machine import form_router main_router = Router() diff --git a/pyproject.toml b/pyproject.toml index aa31ab34..2f17fd81 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -154,9 +154,9 @@ features = [ "test", "cli", ] -extra-dependencies = [ - "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22", -] +#extra-dependencies = [ +# "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22", +#] [tool.hatch.envs.dev.scripts] update = [ From c3dc6fe7a8e15867e8aaca960e086df08954e1f3 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 22 Sep 2023 18:11:30 +0300 Subject: [PATCH 108/139] Changelog --- CHANGES.rst | 23 +++++++++++++++++++++++ CHANGES/1262.feature.rst | 1 - CHANGES/1293.feature.rst | 1 - CHANGES/1303.bugfix.rst | 1 - CHANGES/1317.bugfix.rst | 1 - CHANGES/1319.feature.rst | 1 - 6 files changed, 23 insertions(+), 5 deletions(-) delete mode 100644 CHANGES/1262.feature.rst delete mode 100644 CHANGES/1293.feature.rst delete mode 100644 CHANGES/1303.bugfix.rst delete mode 100644 CHANGES/1317.bugfix.rst delete mode 100644 CHANGES/1319.feature.rst diff --git a/CHANGES.rst b/CHANGES.rst index 245c4f49..afeb8f86 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,29 @@ Changelog .. towncrier release notes start +3.1.0 (2023-09-22) +=================== + +Features +-------- + +- Added support for custom encoders/decoders for payload (and also for deep-linking). + `#1262 `_ +- Added :class:`aiogram.utils.input_media.MediaGroupBuilder` for media group construction. + `#1293 `_ +- Added full support of `Bot API 6.9 `_ + `#1319 `_ + + +Bugfixes +-------- + +- Added actual param hints for `InlineKeyboardBuilder` and `ReplyKeyboardBuilder`. + `#1303 `_ +- Fixed priority of events isolation, now user state will be loaded only after lock is acquired + `#1317 `_ + + 3.0.0 (2023-09-01) =================== diff --git a/CHANGES/1262.feature.rst b/CHANGES/1262.feature.rst deleted file mode 100644 index 822c82ae..00000000 --- a/CHANGES/1262.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added support for custom encoders/decoders for payload (and also for deep-linking). diff --git a/CHANGES/1293.feature.rst b/CHANGES/1293.feature.rst deleted file mode 100644 index f561be61..00000000 --- a/CHANGES/1293.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added :class:`aiogram.utils.input_media.MediaGroupBuilder` for media group construction. diff --git a/CHANGES/1303.bugfix.rst b/CHANGES/1303.bugfix.rst deleted file mode 100644 index 57d3e512..00000000 --- a/CHANGES/1303.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Added actual param hints for `InlineKeyboardBuilder` and `ReplyKeyboardBuilder`. diff --git a/CHANGES/1317.bugfix.rst b/CHANGES/1317.bugfix.rst deleted file mode 100644 index dcdf1e47..00000000 --- a/CHANGES/1317.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed priority of events isolation, now user state will be loaded only after lock is acquired diff --git a/CHANGES/1319.feature.rst b/CHANGES/1319.feature.rst deleted file mode 100644 index 2bd75ee4..00000000 --- a/CHANGES/1319.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Added full support of `Bot API 6.9 `_ From 1dcb830b9d1ded0f0e6c300972b0ffca5b67c9dc Mon Sep 17 00:00:00 2001 From: Oleg A Date: Mon, 25 Sep 2023 19:04:16 +0300 Subject: [PATCH 109/139] Fix pydantic version (#1322) * fix: fix pydantic version * docs: changelog add --- CHANGES/1322.bugfix | 1 + pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1322.bugfix diff --git a/CHANGES/1322.bugfix b/CHANGES/1322.bugfix new file mode 100644 index 00000000..a64a80c3 --- /dev/null +++ b/CHANGES/1322.bugfix @@ -0,0 +1 @@ +Fixed `pydantic` version <2.4, since 2.4 has breaking changes. diff --git a/pyproject.toml b/pyproject.toml index 2f17fd81..1908c8d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ classifiers = [ dependencies = [ "magic-filter~=1.0.11", "aiohttp~=3.8.5", - "pydantic>=2.1.1,<3", + "pydantic>=2.1.1,<2.4", "aiofiles~=23.1.0", "certifi>=2023.7.22", "typing-extensions~=4.7.1", From 0895e0f49cdbe2e04c959383d818fbaff969dd06 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 25 Sep 2023 19:07:47 +0300 Subject: [PATCH 110/139] Bump version --- CHANGES.rst | 10 ++++++++++ CHANGES/1322.bugfix | 1 - aiogram/__meta__.py | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) delete mode 100644 CHANGES/1322.bugfix diff --git a/CHANGES.rst b/CHANGES.rst index afeb8f86..359b8f26 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -16,6 +16,16 @@ Changelog .. towncrier release notes start +3.1.1 (2023-09-25) +=================== + +Bugfixes +-------- + +- Fixed `pydantic` version <2.4, since 2.4 has breaking changes. + `#1322 `_ + + 3.1.0 (2023-09-22) =================== diff --git a/CHANGES/1322.bugfix b/CHANGES/1322.bugfix deleted file mode 100644 index a64a80c3..00000000 --- a/CHANGES/1322.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed `pydantic` version <2.4, since 2.4 has breaking changes. diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index 64923c65..b591b842 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.1.0" +__version__ = "3.1.1" __api_version__ = "6.9" From 890a57cd15ca14083534eab981fe4f00c34a9182 Mon Sep 17 00:00:00 2001 From: fulsiram <79424365+fulsiram@users.noreply.github.com> Date: Fri, 29 Sep 2023 10:04:42 +0200 Subject: [PATCH 111/139] Fix broken link in message.rst (#1325) --- docs/dispatcher/class_based_handlers/message.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dispatcher/class_based_handlers/message.rst b/docs/dispatcher/class_based_handlers/message.rst index 1945e8ba..27629901 100644 --- a/docs/dispatcher/class_based_handlers/message.rst +++ b/docs/dispatcher/class_based_handlers/message.rst @@ -21,7 +21,7 @@ Simple usage Extension ========= -This base handler is subclass of [BaseHandler](basics.md#basehandler) with some extensions: +This base handler is subclass of :ref:`BaseHandler ` with some extensions: - :code:`self.chat` is alias for :code:`self.event.chat` - :code:`self.from_user` is alias for :code:`self.event.from_user` From eacea996d430695d4b53fa54733a794185e7de1e Mon Sep 17 00:00:00 2001 From: Oleg A Date: Sun, 1 Oct 2023 15:28:54 +0300 Subject: [PATCH 112/139] Handle expected warnings & raise unexpected warnings (#1315) * chore: replace fixture loop with event_loop * chore: mark expected warnings * chore: raise unexpected warnings * chore: rm unused record * fix: rm parenthesized context manager * chore: warnings shall not pass * chore: replace fixture loop with event_loop * chore: mark expected warnings * chore: raise unexpected warnings * chore: rm unused record * fix: rm parenthesized context manager * chore: warnings shall not pass * Revert "chore: raise unexpected warnings" This reverts commit 4c91df243dcaee7ec1b5d2250675e78cfc2ded96. * chore: warnings shall not pass v2 * fix: graceful aiohttp session close * chore: minor typo * chore: mark expected warnings * fix: temporary mute ResourceWarning #1320 * fix: close pool with redis * chore: code reformat and lint * chore: simplify tests with fixture * chore: make aresponses clear * chore: divide asserts with blank line * chore: rm duplicated assertions * chore: rm unnecessary extra * chore: bump test dependencies * chore: bump test dependencies (fix) --- .github/PULL_REQUEST_TEMPLATE.md | 1 - aiogram/client/session/aiohttp.py | 4 + aiogram/fsm/storage/redis.py | 2 +- pyproject.toml | 14 +- tests/test_api/test_client/test_bot.py | 82 +++++--- .../test_session/test_aiohttp_session.py | 177 +++++++++--------- tests/test_api/test_types/test_input_file.py | 23 ++- tests/test_dispatcher/test_dispatcher.py | 33 ++-- tests/test_filters/test_exception.py | 3 +- tests/test_fsm/storage/test_isolation.py | 3 +- tests/test_utils/test_chat_action.py | 4 +- tests/test_utils/test_i18n.py | 10 +- 12 files changed, 198 insertions(+), 158 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index ade26bd1..9a4d9351 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -30,6 +30,5 @@ Please describe the tests that you ran to verify your changes. Provide instructi - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have made corresponding changes to the documentation -- [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes diff --git a/aiogram/client/session/aiohttp.py b/aiogram/client/session/aiohttp.py index 19a8edbd..b92e32d2 100644 --- a/aiogram/client/session/aiohttp.py +++ b/aiogram/client/session/aiohttp.py @@ -139,6 +139,10 @@ class AiohttpSession(BaseSession): if self._session is not None and not self._session.closed: await self._session.close() + # Wait 250 ms for the underlying SSL connections to close + # https://docs.aiohttp.org/en/stable/client_advanced.html#graceful-shutdown + await asyncio.sleep(0.25) + def build_form_data(self, bot: Bot, method: TelegramMethod[TelegramType]) -> FormData: form = FormData(quote_fields=False) files: Dict[str, InputFile] = {} diff --git a/aiogram/fsm/storage/redis.py b/aiogram/fsm/storage/redis.py index 6a55d881..37352a1d 100644 --- a/aiogram/fsm/storage/redis.py +++ b/aiogram/fsm/storage/redis.py @@ -138,7 +138,7 @@ class RedisStorage(BaseStorage): return RedisEventIsolation(redis=self.redis, key_builder=self.key_builder, **kwargs) async def close(self) -> None: - await self.redis.close() + await self.redis.close(close_connection_pool=True) async def set_state( self, diff --git a/pyproject.toml b/pyproject.toml index 1908c8d8..d43c740a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,16 +70,16 @@ cli = [ ] test = [ "pytest~=7.4.0", - "pytest-html~=3.2.0", + "pytest-html~=4.0.0", "pytest-asyncio~=0.21.0", "pytest-lazy-fixture~=0.6.3", - "pytest-mock~=3.10.0", + "pytest-mock~=3.11.0", "pytest-mypy~=0.10.0", - "pytest-cov~=4.0.0", + "pytest-cov~=4.1.0", "pytest-aiohttp~=1.0.4", "aresponses~=2.1.6", - "pytz~=2022.7.1", - "pycryptodomex~=3.18", + "pytz~=2023.3", + "pycryptodomex~=3.19", ] docs = [ "Sphinx~=7.1.1", @@ -240,6 +240,10 @@ asyncio_mode = "auto" testpaths = [ "tests", ] +filterwarnings = [ + "error", + "ignore::pytest.PytestUnraisableExceptionWarning", +] [tool.coverage.run] branch = false diff --git a/tests/test_api/test_client/test_bot.py b/tests/test_api/test_client/test_bot.py index 1cf94238..d4f2f75f 100644 --- a/tests/test_api/test_client/test_bot.py +++ b/tests/test_api/test_client/test_bot.py @@ -15,6 +15,26 @@ from aiogram.types import File, PhotoSize from tests.mocked_bot import MockedBot +@pytest.fixture() +async def bot(): + """Override mocked bot fixture with real bot.""" + async with Bot("42:TEST").context() as bot: + yield bot + + +@pytest.fixture() +def mocked_bot(): + """Mocked bot fixture.""" + return MockedBot() + + +@pytest.fixture() +async def session(): + """Override session fixture.""" + async with AiohttpSession() as session: + yield session + + class TestBot: def test_init(self): bot = Bot("42:TEST") @@ -30,9 +50,7 @@ class TestBot: assert bot == Bot("42:TEST") assert bot != "42:TEST" - async def test_emit(self): - bot = Bot("42:TEST") - + async def test_emit(self, bot: Bot): method = GetMe() with patch( @@ -42,8 +60,7 @@ class TestBot: await bot(method) mocked_make_request.assert_awaited_with(bot, method, timeout=None) - async def test_close(self): - session = AiohttpSession() + async def test_close(self, session: AiohttpSession): bot = Bot("42:TEST", session=session) await session.create_session() @@ -56,18 +73,23 @@ class TestBot: @pytest.mark.parametrize("close", [True, False]) async def test_context_manager(self, close: bool): with patch( - "aiogram.client.session.aiohttp.AiohttpSession.close", new_callable=AsyncMock + target="aiogram.client.session.aiohttp.AiohttpSession.close", + new_callable=AsyncMock, ) as mocked_close: - async with Bot("42:TEST", session=AiohttpSession()).context(auto_close=close) as bot: + session = AiohttpSession() + async with Bot("42:TEST", session=session).context(auto_close=close) as bot: assert isinstance(bot, Bot) + if close: mocked_close.assert_awaited() else: mocked_close.assert_not_awaited() + await session.close() async def test_download_file(self, aresponses: ResponsesMockServer): aresponses.add( - aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) + method_pattern="get", + response=aresponses.Response(status=200, body=b"\f" * 10), ) # https://github.com/Tinche/aiofiles#writing-tests-for-aiofiles @@ -77,30 +99,34 @@ class TestBot: mock_file = MagicMock() - bot = Bot("42:TEST") - with patch("aiofiles.threadpool.sync_open", return_value=mock_file): - await bot.download_file("TEST", "file.png") - mock_file.write.assert_called_once_with(b"\f" * 10) - - async def test_download_file_default_destination(self, aresponses: ResponsesMockServer): - bot = Bot("42:TEST") + async with Bot("42:TEST").context() as bot: + with patch("aiofiles.threadpool.sync_open", return_value=mock_file): + await bot.download_file("TEST", "file.png") + mock_file.write.assert_called_once_with(b"\f" * 10) + async def test_download_file_default_destination( + self, + bot: Bot, + aresponses: ResponsesMockServer, + ): aresponses.add( - aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) + method_pattern="get", + response=aresponses.Response(status=200, body=b"\f" * 10), ) - result = await bot.download_file("TEST") assert isinstance(result, io.BytesIO) assert result.read() == b"\f" * 10 - async def test_download_file_custom_destination(self, aresponses: ResponsesMockServer): - bot = Bot("42:TEST") - + async def test_download_file_custom_destination( + self, + bot: Bot, + aresponses: ResponsesMockServer, + ): aresponses.add( - aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) + method_pattern="get", + response=aresponses.Response(status=200, body=b"\f" * 10), ) - custom = io.BytesIO() result = await bot.download_file("TEST", custom) @@ -109,19 +135,19 @@ class TestBot: assert result is custom assert result.read() == b"\f" * 10 - async def test_download(self, bot: MockedBot, aresponses: ResponsesMockServer): - bot.add_result_for( + async def test_download(self, mocked_bot: MockedBot): + mocked_bot.add_result_for( GetFile, ok=True, result=File(file_id="file id", file_unique_id="file id") ) - bot.add_result_for( + mocked_bot.add_result_for( GetFile, ok=True, result=File(file_id="file id", file_unique_id="file id") ) - assert await bot.download(File(file_id="file id", file_unique_id="file id")) - assert await bot.download("file id") + assert await mocked_bot.download(File(file_id="file id", file_unique_id="file id")) + assert await mocked_bot.download("file id") with pytest.raises(TypeError): - await bot.download( + await mocked_bot.download( [PhotoSize(file_id="file id", file_unique_id="file id", width=123, height=123)] ) diff --git a/tests/test_api/test_client/test_session/test_aiohttp_session.py b/tests/test_api/test_client/test_session/test_aiohttp_session.py index d79eb875..bc7aff83 100644 --- a/tests/test_api/test_client/test_session/test_aiohttp_session.py +++ b/tests/test_api/test_client/test_session/test_aiohttp_session.py @@ -24,61 +24,53 @@ class BareInputFile(InputFile): class TestAiohttpSession: async def test_create_session(self): session = AiohttpSession() - assert session._session is None aiohttp_session = await session.create_session() assert session._session is not None assert isinstance(aiohttp_session, aiohttp.ClientSession) + await session.close() async def test_create_proxy_session(self): - session = AiohttpSession( - proxy=("socks5://proxy.url/", aiohttp.BasicAuth("login", "password", "encoding")) - ) + auth = aiohttp.BasicAuth("login", "password", "encoding") + async with AiohttpSession(proxy=("socks5://proxy.url/", auth)) as session: + assert session._connector_type == aiohttp_socks.ProxyConnector - assert session._connector_type == aiohttp_socks.ProxyConnector + assert isinstance(session._connector_init, dict) + assert session._connector_init["proxy_type"] is aiohttp_socks.ProxyType.SOCKS5 - assert isinstance(session._connector_init, dict) - assert session._connector_init["proxy_type"] is aiohttp_socks.ProxyType.SOCKS5 - - aiohttp_session = await session.create_session() - assert isinstance(aiohttp_session.connector, aiohttp_socks.ProxyConnector) + aiohttp_session = await session.create_session() + assert isinstance(aiohttp_session.connector, aiohttp_socks.ProxyConnector) async def test_create_proxy_session_proxy_url(self): - session = AiohttpSession(proxy="socks4://proxy.url/") + async with AiohttpSession(proxy="socks4://proxy.url/") as session: + assert isinstance(session.proxy, str) - assert isinstance(session.proxy, str) + assert isinstance(session._connector_init, dict) + assert session._connector_init["proxy_type"] is aiohttp_socks.ProxyType.SOCKS4 - assert isinstance(session._connector_init, dict) - assert session._connector_init["proxy_type"] is aiohttp_socks.ProxyType.SOCKS4 - - aiohttp_session = await session.create_session() - assert isinstance(aiohttp_session.connector, aiohttp_socks.ProxyConnector) + aiohttp_session = await session.create_session() + assert isinstance(aiohttp_session.connector, aiohttp_socks.ProxyConnector) async def test_create_proxy_session_chained_proxies(self): - session = AiohttpSession( - proxy=[ - "socks4://proxy.url/", - "socks5://proxy.url/", - "http://user:password@127.0.0.1:3128", - ] - ) + proxy_chain = [ + "socks4://proxy.url/", + "socks5://proxy.url/", + "http://user:password@127.0.0.1:3128", + ] + async with AiohttpSession(proxy=proxy_chain) as session: + assert isinstance(session.proxy, list) - assert isinstance(session.proxy, list) + assert isinstance(session._connector_init, dict) - assert isinstance(session._connector_init, dict) - assert isinstance(session._connector_init["proxy_infos"], list) - assert isinstance(session._connector_init["proxy_infos"][0], aiohttp_socks.ProxyInfo) + proxy_infos = session._connector_init["proxy_infos"] + assert isinstance(proxy_infos, list) + assert isinstance(proxy_infos[0], aiohttp_socks.ProxyInfo) + assert proxy_infos[0].proxy_type is aiohttp_socks.ProxyType.SOCKS4 + assert proxy_infos[1].proxy_type is aiohttp_socks.ProxyType.SOCKS5 + assert proxy_infos[2].proxy_type is aiohttp_socks.ProxyType.HTTP - assert ( - session._connector_init["proxy_infos"][0].proxy_type is aiohttp_socks.ProxyType.SOCKS4 - ) - assert ( - session._connector_init["proxy_infos"][1].proxy_type is aiohttp_socks.ProxyType.SOCKS5 - ) - assert session._connector_init["proxy_infos"][2].proxy_type is aiohttp_socks.ProxyType.HTTP - - aiohttp_session = await session.create_session() - assert isinstance(aiohttp_session.connector, aiohttp_socks.ChainProxyConnector) + aiohttp_session = await session.create_session() + assert isinstance(aiohttp_session.connector, aiohttp_socks.ChainProxyConnector) async def test_reset_connector(self): session = AiohttpSession() @@ -93,6 +85,7 @@ class TestAiohttpSession: assert session._should_reset_connector await session.create_session() assert session._should_reset_connector is False + await session.close() async def test_close_session(self): @@ -170,54 +163,53 @@ class TestAiohttpSession: ), ) - session = AiohttpSession() + async with AiohttpSession() as session: - class TestMethod(TelegramMethod[int]): - __returning__ = int - __api_method__ = "method" + class TestMethod(TelegramMethod[int]): + __returning__ = int + __api_method__ = "method" - call = TestMethod() + call = TestMethod() - result = await session.make_request(bot, call) - assert isinstance(result, int) - assert result == 42 + result = await session.make_request(bot, call) + assert isinstance(result, int) + assert result == 42 @pytest.mark.parametrize("error", [ClientError("mocked"), asyncio.TimeoutError()]) async def test_make_request_network_error(self, error): - bot = Bot("42:TEST") - async def side_effect(*args, **kwargs): raise error - with patch( - "aiohttp.client.ClientSession._request", - new_callable=AsyncMock, - side_effect=side_effect, - ): - with pytest.raises(TelegramNetworkError): - await bot.get_me() + async with Bot("42:TEST").context() as bot: + with patch( + "aiohttp.client.ClientSession._request", + new_callable=AsyncMock, + side_effect=side_effect, + ): + with pytest.raises(TelegramNetworkError): + await bot.get_me() async def test_stream_content(self, aresponses: ResponsesMockServer): aresponses.add( aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) ) - session = AiohttpSession() - stream = session.stream_content( - "https://www.python.org/static/img/python-logo.png", - timeout=5, - chunk_size=1, - raise_for_status=True, - ) - assert isinstance(stream, AsyncGenerator) + async with AiohttpSession() as session: + stream = session.stream_content( + "https://www.python.org/static/img/python-logo.png", + timeout=5, + chunk_size=1, + raise_for_status=True, + ) + assert isinstance(stream, AsyncGenerator) - size = 0 - async for chunk in stream: - assert isinstance(chunk, bytes) - chunk_size = len(chunk) - assert chunk_size == 1 - size += chunk_size - assert size == 10 + size = 0 + async for chunk in stream: + assert isinstance(chunk, bytes) + chunk_size = len(chunk) + assert chunk_size == 1 + size += chunk_size + assert size == 10 async def test_stream_content_404(self, aresponses: ResponsesMockServer): aresponses.add( @@ -229,29 +221,30 @@ class TestAiohttpSession: body=b"File not found", ), ) - session = AiohttpSession() - stream = session.stream_content( - "https://www.python.org/static/img/python-logo.png", - timeout=5, - chunk_size=1, - raise_for_status=True, - ) + async with AiohttpSession() as session: + stream = session.stream_content( + "https://www.python.org/static/img/python-logo.png", + timeout=5, + chunk_size=1, + raise_for_status=True, + ) - with pytest.raises(ClientError): - async for _ in stream: - ... + with pytest.raises(ClientError): + async for _ in stream: + ... async def test_context_manager(self): - session = AiohttpSession() - assert isinstance(session, AsyncContextManager) + async with AiohttpSession() as session: + assert isinstance(session, AsyncContextManager) - with patch( - "aiogram.client.session.aiohttp.AiohttpSession.create_session", - new_callable=AsyncMock, - ) as mocked_create_session, patch( - "aiogram.client.session.aiohttp.AiohttpSession.close", new_callable=AsyncMock - ) as mocked_close: - async with session as ctx: - assert session == ctx - mocked_close.assert_awaited_once() - mocked_create_session.assert_awaited_once() + with patch( + "aiogram.client.session.aiohttp.AiohttpSession.create_session", + new_callable=AsyncMock, + ) as mocked_create_session, patch( + "aiogram.client.session.aiohttp.AiohttpSession.close", + new_callable=AsyncMock, + ) as mocked_close: + async with session as ctx: + assert session == ctx + mocked_close.assert_awaited_once() + mocked_create_session.assert_awaited_once() diff --git a/tests/test_api/test_types/test_input_file.py b/tests/test_api/test_types/test_input_file.py index 28daa92c..e8716f84 100644 --- a/tests/test_api/test_types/test_input_file.py +++ b/tests/test_api/test_types/test_input_file.py @@ -68,15 +68,18 @@ class TestInputFile: async def test_url_input_file(self, aresponses: ResponsesMockServer): aresponses.add( - aresponses.ANY, aresponses.ANY, "get", aresponses.Response(status=200, body=b"\f" * 10) + aresponses.ANY, + aresponses.ANY, + "get", + aresponses.Response(status=200, body=b"\f" * 10), ) - bot = Bot(token="42:TEST") - file = URLInputFile("https://test.org/", chunk_size=1) + async with Bot(token="42:TEST").context() as bot: + file = URLInputFile("https://test.org/", chunk_size=1) - size = 0 - async for chunk in file.read(bot): - assert chunk == b"\f" - chunk_size = len(chunk) - assert chunk_size == 1 - size += chunk_size - assert size == 10 + size = 0 + async for chunk in file.read(bot): + assert chunk == b"\f" + chunk_size = len(chunk) + assert chunk_size == 1 + size += chunk_size + assert size == 10 diff --git a/tests/test_dispatcher/test_dispatcher.py b/tests/test_dispatcher/test_dispatcher.py index b0cc5b79..b85cfc98 100644 --- a/tests/test_dispatcher/test_dispatcher.py +++ b/tests/test_dispatcher/test_dispatcher.py @@ -187,8 +187,9 @@ class TestDispatcher: async def test_process_update_empty(self, bot: MockedBot): dispatcher = Dispatcher() - result = await dispatcher._process_update(bot=bot, update=Update(update_id=42)) - assert not result + with pytest.warns(RuntimeWarning, match="Detected unknown update type") as record: + result = await dispatcher._process_update(bot=bot, update=Update(update_id=42)) + assert not result async def test_process_update_handled(self, bot: MockedBot): dispatcher = Dispatcher() @@ -197,7 +198,8 @@ class TestDispatcher: async def update_handler(update: Update): pass - assert await dispatcher._process_update(bot=bot, update=Update(update_id=42)) + with pytest.warns(RuntimeWarning, match="Detected unknown update type"): + assert await dispatcher._process_update(bot=bot, update=Update(update_id=42)) @pytest.mark.parametrize( "event_type,update,has_chat,has_user", @@ -479,9 +481,11 @@ class TestDispatcher: async def test_listen_unknown_update(self): dp = Dispatcher() - - with pytest.raises(SkipHandler): + pattern = "Detected unknown update type" + with pytest.raises(SkipHandler), pytest.warns(RuntimeWarning, match=pattern) as record: await dp._listen_update(Update(update_id=42)) + if not record: + pytest.fail("Expected 'Detected unknown update type' warning.") async def test_listen_unhandled_update(self): dp = Dispatcher() @@ -608,7 +612,9 @@ class TestDispatcher: async def update_handler(update: Update): raise Exception("Kaboom!") - assert await dispatcher._process_update(bot=bot, update=Update(update_id=42)) + with pytest.warns(RuntimeWarning, match="Detected unknown update type"): + assert await dispatcher._process_update(bot=bot, update=Update(update_id=42)) + log_records = [rec.message for rec in caplog.records] assert len(log_records) == 1 assert "Cause exception while process update" in log_records[0] @@ -834,12 +840,17 @@ class TestDispatcher: dispatcher = Dispatcher() dispatcher.message.register(invalid_message_handler) - response = await dispatcher.feed_webhook_update(bot, RAW_UPDATE, _timeout=0.1) - assert response is None - await asyncio.sleep(0.5) + pattern = r"Detected slow response into webhook" + with pytest.warns(RuntimeWarning, match=pattern) as record: + response = await dispatcher.feed_webhook_update(bot, RAW_UPDATE, _timeout=0.1) + assert response is None + await asyncio.sleep(0.5) - log_records = [rec.message for rec in caplog.records] - assert "Cause exception while process update" in log_records[0] + log_records = [rec.message for rec in caplog.records] + assert "Cause exception while process update" in log_records[0] + + if not record: + pytest.fail("Expected 'Detected slow response into webhook' warning.") def test_specify_updates_calculation(self): def simple_msg_handler() -> None: diff --git a/tests/test_filters/test_exception.py b/tests/test_filters/test_exception.py index be056b72..dfc7fa80 100644 --- a/tests/test_filters/test_exception.py +++ b/tests/test_filters/test_exception.py @@ -72,4 +72,5 @@ class TestDispatchException: async def handler0(event): return "Handled" - assert await dp.feed_update(bot, Update(update_id=0)) == "Handled" + with pytest.warns(RuntimeWarning, match="Detected unknown update type"): + assert await dp.feed_update(bot, Update(update_id=0)) == "Handled" diff --git a/tests/test_fsm/storage/test_isolation.py b/tests/test_fsm/storage/test_isolation.py index 8212c955..60e240ae 100644 --- a/tests/test_fsm/storage/test_isolation.py +++ b/tests/test_fsm/storage/test_isolation.py @@ -18,10 +18,11 @@ def create_storage_key(bot: MockedBot): ], ) class TestIsolations: + @pytest.mark.filterwarnings("ignore::ResourceWarning") async def test_lock( self, isolation: BaseEventIsolation, storage_key: StorageKey, ): async with isolation.lock(key=storage_key): - assert True, "You are kidding me?" + assert True, "Are you kidding me?" diff --git a/tests/test_utils/test_chat_action.py b/tests/test_utils/test_chat_action.py index d6041c37..b5c0a965 100644 --- a/tests/test_utils/test_chat_action.py +++ b/tests/test_utils/test_chat_action.py @@ -13,9 +13,9 @@ from tests.mocked_bot import MockedBot class TestChatActionSender: - async def test_wait(self, bot: Bot, loop: asyncio.BaseEventLoop): + async def test_wait(self, bot: Bot, event_loop: asyncio.BaseEventLoop): sender = ChatActionSender.typing(bot=bot, chat_id=42) - loop.call_soon(sender._close_event.set) + event_loop.call_soon(sender._close_event.set) start = time.monotonic() await sender._wait(1) assert time.monotonic() - start < 1 diff --git a/tests/test_utils/test_i18n.py b/tests/test_utils/test_i18n.py index 71fa2eb7..aaf58b9e 100644 --- a/tests/test_utils/test_i18n.py +++ b/tests/test_utils/test_i18n.py @@ -175,7 +175,7 @@ class TestConstI18nMiddleware: class TestFSMI18nMiddleware: - async def test_middleware(self, i18n: I18n, bot: MockedBot, extra): + async def test_middleware(self, i18n: I18n, bot: MockedBot): middleware = FSMI18nMiddleware(i18n=i18n) storage = MemoryStorage() state = FSMContext(storage=storage, key=StorageKey(user_id=42, chat_id=42, bot_id=bot.id)) @@ -185,12 +185,14 @@ class TestFSMI18nMiddleware: } result = await middleware(next_call, Update(update_id=42), data) assert result == "test" + await middleware.set_locale(state, "uk") assert i18n.current_locale == "uk" + result = await middleware(next_call, Update(update_id=42), data) assert result == "тест" - async def test_without_state(self, i18n: I18n, bot: MockedBot, extra): + async def test_without_state(self, i18n: I18n, bot: MockedBot): middleware = FSMI18nMiddleware(i18n=i18n) data = { "event_from_user": User(id=42, is_bot=False, language_code="it", first_name="Test"), @@ -198,7 +200,3 @@ class TestFSMI18nMiddleware: result = await middleware(next_call, Update(update_id=42), data) assert i18n.current_locale == "en" assert result == "test" - - assert i18n.current_locale == "en" - result = await middleware(next_call, Update(update_id=42), data) - assert i18n.current_locale == "en" From b5ef05c01a07052dc557c1bed69bbc80c581d6c6 Mon Sep 17 00:00:00 2001 From: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com> Date: Sun, 1 Oct 2023 15:29:18 +0300 Subject: [PATCH 113/139] Corrected grammatical errors, improved sentence structures, translation for migration 2.x-3.x (#1302) * Corrected grammatical errors, improved sentence structures for clarity, added translation to migration_2_to_3.rst * add changelog * Update method name in docs for error handling * Update migration_2_to_3.rst Co-authored-by: Oleg A. * Update migration_2_to_3.rst Co-authored-by: Oleg A. * Update migration_2_to_3.rst Co-authored-by: Oleg A. * Update docs/locale/uk_UA/LC_MESSAGES/api/methods/set_sticker_set_thumb.po Co-authored-by: Oleg A. * rollback unnecessary change for error attribute --------- Co-authored-by: Oleg A. --- CHANGES/1302.doc | 1 + .../api/methods/set_sticker_set_thumb.po | 54 +- .../LC_MESSAGES/dispatcher/dispatcher.po | 13 +- .../LC_MESSAGES/dispatcher/filters/index.po | 145 +++--- .../uk_UA/LC_MESSAGES/migration_2_to_3.po | 467 +++++++++++------- .../uk_UA/LC_MESSAGES/utils/media_group.po | 291 +++++++++++ docs/migration_2_to_3.rst | 123 ++--- 7 files changed, 776 insertions(+), 318 deletions(-) create mode 100644 CHANGES/1302.doc create mode 100644 docs/locale/uk_UA/LC_MESSAGES/utils/media_group.po diff --git a/CHANGES/1302.doc b/CHANGES/1302.doc new file mode 100644 index 00000000..80cc5492 --- /dev/null +++ b/CHANGES/1302.doc @@ -0,0 +1 @@ +Corrected grammatical errors, improved sentence structures, translation for migration 2.x-3.x \ No newline at end of file diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_sticker_set_thumb.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_sticker_set_thumb.po index 8e279db0..786b6309 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_sticker_set_thumb.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_sticker_set_thumb.po @@ -3,19 +3,20 @@ # This file is distributed under the same license as the aiogram package. # FIRST AUTHOR , 2022. # -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: aiogram \n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2023-06-01 20:49+0300\n" +"PO-Revision-Date: 2023-09-14 17:37+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" +"Generated-By: Babel 2.12.1\n" +"X-Generator: Poedit 3.3.2\n" #: ../../api/methods/set_sticker_set_thumb.rst:3 msgid "setStickerSetThumb" @@ -23,15 +24,38 @@ msgstr "" #: ../../api/methods/set_sticker_set_thumb.rst:5 msgid "Returns: :obj:`bool`" -msgstr "" +msgstr "Повертає: :obj:`bool`" + +#: aiogram.methods.set_sticker_set_thumb.SetStickerSetThumbnail:1 of +msgid "Use this method to set the thumbnail of a regular or mask sticker set. The format of the thumbnail file must match the format of the stickers in the set. Returns :code:`True` on success." +msgstr "Використовуйте цей метод, щоб встановити мініатюру звичайного або маскового набору стікерів. Формат файлу мініатюри повинен відповідати формату стікерів у наборі. Повертає :code:`True` при успіху." + +#: aiogram.methods.set_sticker_set_thumb.SetStickerSetThumbnail:3 of +msgid "Source: https://core.telegram.org/bots/api#setstickersetthumbnail" +msgstr "Джерело: https://core.telegram.org/bots/api#setstickersetthumbnail" + +#: ../../docstring +#: aiogram.methods.set_sticker_set_thumb.SetStickerSetThumbnail.name:1 of +msgid "Sticker set name" +msgstr "Назва набору стікерів" + +#: ../../docstring +#: aiogram.methods.set_sticker_set_thumb.SetStickerSetThumbnail.user_id:1 of +msgid "User identifier of the sticker set owner" +msgstr "Ідентифікатор користувача власника набору стікерів " + +#: ../../docstring +#: aiogram.methods.set_sticker_set_thumb.SetStickerSetThumbnail.thumbnail:1 of +msgid "A **.WEBP** or **.PNG** image with the thumbnail, must be up to 128 kilobytes in size and have a width and height of exactly 100px, or a **.TGS** animation with a thumbnail up to 32 kilobytes in size (see `https://core.telegram.org/stickers#animated-sticker-requirements `_`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 `_`https://core.telegram.org/stickers#video-sticker-requirements `_ for video sticker technical requirements. Pass a *file_id* as a String to send a file that already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. :ref:`More information on Sending Files » `. Animated and video sticker set thumbnails can't be uploaded via HTTP URL. If omitted, then the thumbnail is dropped and the first sticker is used as the thumbnail." +msgstr "Зображення у форматі **.WEBP** або **.PNG** з мініатюрою має бути розміром до 128 кілобайт і мати ширину та висоту рівно 100 пікселів, або анімацією у форматі **.TGS** з мініатюрою розміром до 32 кілобайт (див. `https://core.telegram.org/stickers#animated-sticker-requirements `_`https://core.telegram.org/stickers#animated-sticker-requirements `_ технічні вимоги до анімованих наліпок), або **WEBM** відео з мініатюрою розміром до 32 кілобайт; дивіться `https://core.telegram.org/stickers#video-sticker-requirements `_`https://core.telegram.org/stickers#video-sticker-requirements `_ технічні вимоги до відео наліпок. Передайте *file_id* як рядок, щоб надіслати файл, який вже існує на серверах Telegram, передайте HTTP URL як рядок, щоб Telegram отримав файл з Інтернету, або завантажте новий файл за допомогою мультичастини/форма-даних. :ref:`Додаткова інформація про надсилання файлів \" `. Ескізи анімованих і відео-наборів наклейок не можуть бути завантажені через HTTP URL. Якщо цей параметр не вказано, то мініатюру буде вилучено, а замість неї буде використано першу наліпку." #: ../../api/methods/set_sticker_set_thumb.rst:14 msgid "Usage" -msgstr "" +msgstr "Використання" #: ../../api/methods/set_sticker_set_thumb.rst:17 msgid "As bot method" -msgstr "" +msgstr "Як метод в bot" #: ../../api/methods/set_sticker_set_thumb.rst:25 msgid "Method as object" @@ -39,12 +63,10 @@ msgstr "" #: ../../api/methods/set_sticker_set_thumb.rst:27 msgid "Imports:" -msgstr "" +msgstr "Імпорти:" #: ../../api/methods/set_sticker_set_thumb.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_set_thumb import " -"SetStickerSetThumb`" +msgid ":code:`from aiogram.methods.set_sticker_set_thumb import SetStickerSetThumb`" msgstr "" #: ../../api/methods/set_sticker_set_thumb.rst:30 @@ -53,11 +75,11 @@ msgstr "" #: ../../api/methods/set_sticker_set_thumb.rst:33 msgid "With specific bot" -msgstr "" +msgstr "З конкретним bot" #: ../../api/methods/set_sticker_set_thumb.rst:40 msgid "As reply into Webhook in handler" -msgstr "" +msgstr "Як відповідь у Webhook в обробнику" #~ msgid "" #~ "Use this method to set the " diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po index 099f6e08..6ec3c401 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"POT-Creation-Date: 2023-09-14 17:21+0300\n" "PO-Revision-Date: 2022-12-10 19:44+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -30,9 +30,10 @@ msgstr "" "інших маршрутизаторів до диспетчера." #: ../../dispatcher/dispatcher.rst:7 +#, fuzzy msgid "" "Here is only listed base information about Dispatcher. All about writing " -"handlers, filters and etc. you can found in next pages:" +"handlers, filters and etc. you can find in next pages:" msgstr "" "Тут наведена лише базова інформація про диспетчер. Усе про написання " "обробників, фільтрів і т.п. ви можете знайти на наступних сторінках:" @@ -142,7 +143,8 @@ msgid "contextual data" msgstr "контекстні дані" #: aiogram.dispatcher.dispatcher.Dispatcher.run_polling -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling of +#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling +#: aiogram.dispatcher.dispatcher.Dispatcher.stop_polling of msgid "Returns" msgstr "Повертає" @@ -161,6 +163,10 @@ msgid "" "used update types are enabled (resolved from handlers)" msgstr "" +#: aiogram.dispatcher.dispatcher.Dispatcher.stop_polling:1 of +msgid "Execute this method if you want to stop polling programmatically" +msgstr "" + #: ../../dispatcher/dispatcher.rst:18 msgid "Simple usage" msgstr "Просте застосування" @@ -190,3 +196,4 @@ msgstr "" #~ msgid "`Observer `__" #~ msgstr "`Observer `__" + diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/index.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/index.po index efde70b7..a19bb7a1 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/filters/index.po @@ -5,100 +5,103 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-18 01:50+0300\n" +"POT-Creation-Date: 2023-09-14 17:21+0300\n" "PO-Revision-Date: 2022-10-25 15:53+0300\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.12.1\n" -#: ../../dispatcher/filters/index.rst:3 +#: ../../dispatcher/filters/index.rst:5 msgid "Filtering events" msgstr "Фільтрування подій" -#: ../../dispatcher/filters/index.rst:5 +#: ../../dispatcher/filters/index.rst:7 +#, fuzzy msgid "" -"Filters is needed for routing updates to the specific handler. Searching of " -"handler is always stops on first match set of filters are pass." +"Filters is needed for routing updates to the specific handler. Searching " +"of handler is always stops on first match set of filters are pass. By " +"default, all handlers has empty set of filters, so all updates will be " +"passed to first handler that has empty set of filters." msgstr "" "Фільтри потрібні для маршрутизації оновлень до конкретного обробника " -"(handler) . Пошук обробника (handler) завжди зупиняється після першого збігу " -"набору фільтрів." - -#: ../../dispatcher/filters/index.rst:8 -msgid "*aiogram* has some builtin useful filters." -msgstr "*aiogram* має декілька вбудованих корисних фільтрів." +"(handler) . Пошук обробника (handler) завжди зупиняється після першого " +"збігу набору фільтрів." #: ../../dispatcher/filters/index.rst:11 +#, fuzzy +msgid "*aiogram* has some builtin useful filters or you can write own filters." +msgstr "*aiogram* має декілька вбудованих корисних фільтрів." + +#: ../../dispatcher/filters/index.rst:14 msgid "Builtin filters" msgstr "Вбудовані фільтри" -#: ../../dispatcher/filters/index.rst:13 +#: ../../dispatcher/filters/index.rst:16 msgid "Here is list of builtin filters:" msgstr "Ось список вбудованих фільтрів:" -#: ../../dispatcher/filters/index.rst:27 +#: ../../dispatcher/filters/index.rst:29 msgid "Writing own filters" msgstr "Написання власних фільтрів" -#: ../../dispatcher/filters/index.rst:29 +#: ../../dispatcher/filters/index.rst:31 msgid "Filters can be:" msgstr "Фільтри бувають:" -#: ../../dispatcher/filters/index.rst:31 +#: ../../dispatcher/filters/index.rst:33 msgid "Asynchronous function (:code:`async def my_filter(*args, **kwargs): pass`)" msgstr "Асинхронною функцією (:code:`async def my_filter(*args, **kwargs): pass`)" -#: ../../dispatcher/filters/index.rst:32 +#: ../../dispatcher/filters/index.rst:34 msgid "Synchronous function (:code:`def my_filter(*args, **kwargs): pass`)" msgstr "Синхронною функцією (:code:`def my_filter(*args, **kwargs): pass`)" -#: ../../dispatcher/filters/index.rst:33 +#: ../../dispatcher/filters/index.rst:35 msgid "Anonymous function (:code:`lambda event: True`)" msgstr "Анонімною функцією (:code:`lambda event: True`)" -#: ../../dispatcher/filters/index.rst:34 +#: ../../dispatcher/filters/index.rst:36 msgid "Any awaitable object" msgstr "" "Будь-яким очікуваним об'єктом (awaitable object, об'єкт, який може бути " "використаний в :code:`await` виразі)" -#: ../../dispatcher/filters/index.rst:35 +#: ../../dispatcher/filters/index.rst:37 msgid "Subclass of :class:`aiogram.filters.base.Filter`" msgstr "Підкласом :class:`aiogram.filters.base.Filter`" -#: ../../dispatcher/filters/index.rst:36 +#: ../../dispatcher/filters/index.rst:38 msgid "Instances of :ref:`MagicFilter `" msgstr "Екземпляром :ref:`MagicFilter `" -#: ../../dispatcher/filters/index.rst:38 +#: ../../dispatcher/filters/index.rst:40 msgid "" -"and should return bool or dict. If the dictionary is passed as result of filter " -"- resulted data will be propagated to the next filters and handler as keywords " -"arguments." +"and should return bool or dict. If the dictionary is passed as result of " +"filter - resulted data will be propagated to the next filters and handler" +" as keywords arguments." msgstr "" -"і має повертати bool або dict. Якщо словник передається як результат фільтра, " -"отримані дані будуть передані до наступних фільтрів і обробника як аргументи " -"ключових слів." +"і має повертати bool або dict. Якщо словник передається як результат " +"фільтра, отримані дані будуть передані до наступних фільтрів і обробника " +"як аргументи ключових слів." -#: ../../dispatcher/filters/index.rst:43 +#: ../../dispatcher/filters/index.rst:45 msgid "Base class for own filters" msgstr "Базовий клас для власних фільтрів" #: aiogram.filters.base.Filter:1 of msgid "" -"If you want to register own filters like builtin filters you will need to write " -"subclass of this class with overriding the :code:`__call__` method and adding " -"filter attributes." +"If you want to register own filters like builtin filters you will need to" +" write subclass of this class with overriding the :code:`__call__` method" +" and adding filter attributes." msgstr "" -"Якщо Ви хочете зареєструвати власні фільтри, як вбудовані фільтри, Вам потрібно " -"буде написати підклас цього класу з заміною методу :code:`__call__` і " -"додаванням атрибутів фільтра." +"Якщо Ви хочете зареєструвати власні фільтри, як вбудовані фільтри, Вам " +"потрібно буде написати підклас цього класу з заміною методу " +":code:`__call__` і додаванням атрибутів фільтра." #: aiogram.filters.base.Filter.__call__:1 of msgid "This method should be overridden." @@ -118,72 +121,78 @@ msgstr ":class:`bool` or :class:`Dict[str, Any]`" #: aiogram.filters.base.Filter.update_handler_flags:1 of msgid "" -"Also if you want to extend handler flags with using this filter you should " -"implement this method" +"Also if you want to extend handler flags with using this filter you " +"should implement this method" msgstr "" -"Крім того, якщо ви хочете розширити маркери обробника (handler) за допомогою " -"цього фільтра, вам слід реалізувати цей метод" +"Крім того, якщо ви хочете розширити маркери обробника (handler) за " +"допомогою цього фільтра, вам слід реалізувати цей метод" #: aiogram.filters.base.Filter.update_handler_flags of msgid "Parameters" msgstr "Параметри" -#: aiogram.filters.base.Filter.update_handler_flags:3 of +#: aiogram.filters.base.Filter.update_handler_flags:4 of msgid "existing flags, can be updated directly" msgstr "існуючі маркери, можна оновити безпосередньо" -#: ../../dispatcher/filters/index.rst:51 +#: ../../dispatcher/filters/index.rst:53 msgid "Own filter example" msgstr "Приклад власного фільтра" -#: ../../dispatcher/filters/index.rst:53 +#: ../../dispatcher/filters/index.rst:55 msgid "For example if you need to make simple text filter:" msgstr "Наприклад, якщо Вам потрібно створити простий текстовий фільтр:" -#: ../../dispatcher/filters/index.rst:60 +#: ../../dispatcher/filters/index.rst:62 msgid "Combining Filters" msgstr "Комбінування фільтрів" -#: ../../dispatcher/filters/index.rst:62 +#: ../../dispatcher/filters/index.rst:64 msgid "In general, all filters can be combined in two ways" msgstr "Взагалом, усі фільтри можна комбінувати двома способами" -#: ../../dispatcher/filters/index.rst:66 +#: ../../dispatcher/filters/index.rst:68 msgid "Recommended way" msgstr "Рекомендований спосіб" -#: ../../dispatcher/filters/index.rst:68 +#: ../../dispatcher/filters/index.rst:70 msgid "" -"If you specify multiple filters in a row, it will be checked with an \"and\" " -"condition:" +"If you specify multiple filters in a row, it will be checked with an " +"\"and\" condition:" msgstr "" -"Якщо Ви вкажете кілька фільтрів поспіль, це буде перевірено умовою \"and\" :" +"Якщо Ви вкажете кілька фільтрів поспіль, це буде перевірено умовою " +"\"and\" :" -#: ../../dispatcher/filters/index.rst:75 +#: ../../dispatcher/filters/index.rst:77 msgid "" -"Also, if you want to use two alternative ways to run the same handler (\"or\" " -"condition) you can register the handler twice or more times as you like" +"Also, if you want to use two alternative ways to run the same handler " +"(\"or\" condition) you can register the handler twice or more times as " +"you like" msgstr "" -"Крім того, якщо ви хочете використовувати два альтернативні способи запуску " -"одного обробника (умова \"or\"), ви можете зареєструвати обробник двічі або " -"більше разів, як вам подобається" +"Крім того, якщо ви хочете використовувати два альтернативні способи " +"запуску одного обробника (умова \"or\"), ви можете зареєструвати обробник" +" двічі або більше разів, як вам подобається" -#: ../../dispatcher/filters/index.rst:84 +#: ../../dispatcher/filters/index.rst:86 msgid "" -"Also sometimes you will need to invert the filter result, for example you have " -"an *IsAdmin* filter and you want to check if the user is not an admin" +"Also sometimes you will need to invert the filter result, for example you" +" have an *IsAdmin* filter and you want to check if the user is not an " +"admin" msgstr "" -"Також іноді Вам потрібно буде інвертувати результат фільтра, наприклад, у вас є " -"фільтр *IsAdmin* і ви хочете перевірити, чи користувач не є адміністратором" +"Також іноді Вам потрібно буде інвертувати результат фільтра, наприклад, у" +" вас є фільтр *IsAdmin* і ви хочете перевірити, чи користувач не є " +"адміністратором" -#: ../../dispatcher/filters/index.rst:93 +#: ../../dispatcher/filters/index.rst:95 msgid "Another possible way" msgstr "Інший можливий спосіб" -#: ../../dispatcher/filters/index.rst:95 +#: ../../dispatcher/filters/index.rst:97 msgid "" -"An alternative way is to combine using special functions (:func:`and_f`, :func:" -"`or_f`, :func:`invert_f` from :code:`aiogram.filters` module):" +"An alternative way is to combine using special functions (:func:`and_f`, " +":func:`or_f`, :func:`invert_f` from :code:`aiogram.filters` module):" msgstr "" -"Альтернативним способом є об’єднання за допомогою спеціальних функцій (:func:" -"`and_f`, :func:`or_f`, :func:`invert_f` з модуля :code:`aiogram.filters`):" +"Альтернативним способом є об’єднання за допомогою спеціальних функцій " +"(:func:`and_f`, :func:`or_f`, :func:`invert_f` з модуля " +":code:`aiogram.filters`):" + diff --git a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po index 3541ffff..6a8ef6be 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po +++ b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po @@ -3,303 +3,422 @@ # This file is distributed under the same license as the aiogram package. # FIRST AUTHOR , 2023. # -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: aiogram \n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"POT-Creation-Date: 2023-09-14 18:12+0300\n" +"PO-Revision-Date: 2023-09-14 18:34+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: uk_UA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 " +"&& (n%100<10 || n%100>=20) ? 1 : 2);\n" "Generated-By: Babel 2.12.1\n" +"X-Generator: Poedit 3.3.2\n" #: ../../migration_2_to_3.rst:3 msgid "Migration FAQ (2.x -> 3.0)" -msgstr "" +msgstr "FAQ по переходу з версії 2.x на 3.0" #: ../../migration_2_to_3.rst:7 msgid "This guide is still in progress." -msgstr "" +msgstr "Цей посібник все ще в розробці." #: ../../migration_2_to_3.rst:9 msgid "" -"This version introduces much many breaking changes and architectural " -"improvements, helping to reduce global variables count in your code, " -"provides useful mechanisms to separate your code to modules or just make " -"sharable modules via packages on the PyPi, makes middlewares and filters " -"more controllable and others." +"This version introduces numerous breaking changes and architectural " +"improvements. It helps reduce the count of global variables in your code, " +"provides useful mechanisms to modularize your code, and enables the creation of " +"shareable modules via packages on PyPI. It also makes middlewares and filters " +"more controllable, among other improvements." msgstr "" +"Ця версія містить численні суттєві зміни та архітектурні покращення. Вона " +"допомагає зменшити кількість глобальних змінних у вашому коді, надає корисні " +"механізми для модуляризації вашого коду та дозволяє створювати спільні модулі " +"за допомогою пакетів на PyPI. Крім того, серед інших покращень, він робить " +"проміжне програмне забезпечення (мідлварі) та фільтри більш контрольованими." -#: ../../migration_2_to_3.rst:14 +#: ../../migration_2_to_3.rst:15 msgid "" -"On this page you can read about points that changed corresponding to last" -" stable 2.x version." +"On this page, you can read about the changes made in relation to the last " +"stable 2.x version." msgstr "" +"На цій сторінці ви можете прочитати про зміни, внесені в останню стабільну " +"версію 2.x." -#: ../../migration_2_to_3.rst:18 +#: ../../migration_2_to_3.rst:19 msgid "" -"This page is most like a detailed changelog than a migration guide, but " -"it will be updated in the future." +"This page more closely resembles a detailed changelog than a migration guide, " +"but it will be updated in the future." msgstr "" +"Ця сторінка більше нагадує детальний список змін, ніж посібник з міграції, але " +"вона буде оновлюватися в майбутньому." -#: ../../migration_2_to_3.rst:21 +#: ../../migration_2_to_3.rst:22 msgid "" "Feel free to contribute to this page, if you find something that is not " "mentioned here." msgstr "" +"Не соромтеся зробити свій внесок у цю сторінку, якщо ви знайшли щось, про що " +"тут не згадано." -#: ../../migration_2_to_3.rst:25 +#: ../../migration_2_to_3.rst:26 msgid "Dispatcher" msgstr "" -#: ../../migration_2_to_3.rst:27 +#: ../../migration_2_to_3.rst:28 msgid "" -":class:`Dispatcher` class no longer accepts the `Bot` instance into the " -"initializer, it should be passed to dispatcher only for starting polling " -"or handling event from webhook. Also this way adds possibility to use " -"multiple bot instances at the same time (\"multibot\")" +"The :class:`Dispatcher` class no longer accepts a `Bot` instance in its " +"initializer. Instead, the `Bot` instance should be passed to the dispatcher " +"only for starting polling or handling events from webhooks. This approach also " +"allows for the use of multiple bot instances simultaneously (\"multibot\")." msgstr "" +"Клас :class:`Dispatcher` більше не приймає екземпляр `Bot` у своєму " +"ініціалізаторі. Замість цього екземпляр `Bot` слід передавати диспетчеру тільки " +"для запуску полінгу або обробки подій з вебхуків. Такий підхід також дозволяє " +"використовувати декілька екземплярів бота одночасно (\"мультибот\")." -#: ../../migration_2_to_3.rst:30 +#: ../../migration_2_to_3.rst:32 msgid "" -":class:`Dispatcher` now can be extended with another Dispatcher-like " -"thing named :class:`Router` (:ref:`Read more » `). With " -"routes you can easily separate your code to multiple modules and may be " -"share this modules between projects." +":class:`Dispatcher` now can be extended with another Dispatcher-like thing " +"named :class:`Router` (:ref:`Read more » `)." msgstr "" +"Клас :class:`Dispatcher` тепер можна розширити ще одним об'єктом на кшталт " +"диспетчера з назвою :class:`Router` (:ref:`Детальніше » `)." #: ../../migration_2_to_3.rst:34 msgid "" +"With routes, you can easily modularize your code and potentially share these " +"modules between projects." +msgstr "" +"За допомогою роутерів ви можете легко модулювати свій код і потенційно " +"перевикористовувати ці модулі між проектами." + +#: ../../migration_2_to_3.rst:35 +msgid "" "Removed the **_handler** suffix from all event handler decorators and " "registering methods. (:ref:`Read more » `)" msgstr "" - -#: ../../migration_2_to_3.rst:36 -msgid "" -"Executor entirely removed, now you can use Dispatcher directly to start " -"polling or webhook." -msgstr "" +"Видалено суфікс **_handler** з усіх декораторів обробників подій та методів " +"реєстрації. (:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:37 msgid "" -"Throttling method is completely removed, now you can use middlewares to " -"control the execution context and use any throttling mechanism you want." +"The Executor has been entirely removed; you can now use the Dispatcher directly " +"to start polling or handle webhooks." msgstr "" +"Executor було повністю вилучено; тепер ви можете використовувати Dispatcher " +"безпосередньо для запуску полінгу або обробки вебхуків." -#: ../../migration_2_to_3.rst:39 +#: ../../migration_2_to_3.rst:38 msgid "" -"Removed global context variables from the API types, Bot and Dispatcher " -"object, from now if you want to get current bot instance inside handlers " -"or filters you should accept the argument :code:`bot: Bot` and use it " -"instead of :code:`Bot.get_current()` Inside middlewares it can be " -"accessed via :code:`data[\"bot\"]`." +"The throttling method has been completely removed; you can now use middlewares " +"to control the execution context and implement any throttling mechanism you " +"desire." msgstr "" +"Метод дроселювання (Throttling) повністю вилучено; тепер ви можете " +"використовувати проміжне програмне забезпечення (middleware) для керування " +"контекстом виконання та реалізовувати будь-який механізм дроселювання за вашим " +"бажанням." -#: ../../migration_2_to_3.rst:43 +#: ../../migration_2_to_3.rst:40 msgid "" -"Now to skip pending updates, you should call the " -":class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly " -"instead of passing :code:`skip_updates=True` to start polling method." +"Removed global context variables from the API types, Bot and Dispatcher object, " +"From now on, if you want to access the current bot instance within handlers or " +"filters, you should accept the argument :code:`bot: Bot` and use it instead of :" +"code:`Bot.get_current()`. In middlewares, it can be accessed via :code:" +"`data[\"bot\"]`." msgstr "" +"Вилучено глобальні контекстні змінні з типів API, об'єктів Bot та Dispatcher, " +"Відтепер, якщо ви хочете отримати доступ до поточного екземпляру бота в " +"обробниках або фільтрах, ви повинні приймати аргумент :code:`bot: Bot` і " +"використовувати його замість :code:`Bot.get_current()`. У проміжному " +"програмному забезпеченні (middleware) доступ до нього можна отримати через :" +"code:`data[\"bot\"]`." -#: ../../migration_2_to_3.rst:47 -msgid "Filtering events" +#: ../../migration_2_to_3.rst:44 +msgid "" +"To skip pending updates, you should now call the :class:`aiogram.methods." +"delete_webhook.DeleteWebhook` method directly, rather than passing :code:" +"`skip_updates=True` to the start polling method." msgstr "" +"Щоб пропустити очікувані оновлення, тепер вам слід викликати метод :class:" +"`aiogram.methods.delete_webhook.DeleteWebhook` безпосередньо, а не передавати :" +"code:`skip_updates=True` до методу запуску полінгу." #: ../../migration_2_to_3.rst:49 -msgid "" -"Keyword filters can no more be used, use filters explicitly. (`Read more " -"» `_)" -msgstr "" +msgid "Filtering events" +msgstr "Фільтрація подій" -#: ../../migration_2_to_3.rst:50 +#: ../../migration_2_to_3.rst:51 msgid "" -"In due to keyword filters was removed all enabled by default filters " -"(state and content_type now is not enabled), so you should specify them " -"explicitly if you want to use. For example instead of using " -":code:`@dp.message_handler(content_types=ContentType.PHOTO)` you should " -"use :code:`@router.message(F.photo)`" +"Keyword filters can no longer be used; use filters explicitly. (`Read more » " +"`_)" msgstr "" +"Фільтри за ключовими словами більше не можна використовувати; використовуйте " +"фільтри явно. (`Детальніше » `_)" -#: ../../migration_2_to_3.rst:54 +#: ../../migration_2_to_3.rst:52 msgid "" -"Most of common filters is replaced by \"magic filter\". (:ref:`Read more " -"» `)" -msgstr "" - -#: ../../migration_2_to_3.rst:55 -msgid "" -"Now by default message handler receives any content type, if you want " -"specific one just add the filters (Magic or any other)" +"Due to the removal of keyword filters, all previously enabled-by-default " +"filters (such as state and content_type) are now disabled. You must specify " +"them explicitly if you wish to use them. For example instead of using :code:" +"`@dp.message_handler(content_types=ContentType.PHOTO)` you should use :code:" +"`@router.message(F.photo)`" msgstr "" +"У зв'язку з вилученням keyword фільтрів, всі раніше ввімкнені за замовчуванням " +"фільтри (такі як state і content_type) тепер вимкнено. Якщо ви бажаєте їх " +"використовувати, ви повинні вказати їх явно. Наприклад, замість :code:`@dp." +"message_handler(content_types=ContentType.PHOTO)` слід використовувати :code:" +"`@router.message(F.photo)`." #: ../../migration_2_to_3.rst:57 msgid "" -"State filter now is not enabled by default, that's mean if you using " -":code:`state=\"*\"` in v2 then you should not pass any state filter in " -"v3, and vice versa, if the state in v2 is not specified now you should " -"specify the state." +"Most common filters have been replaced by the \"magic filter.\" (:ref:`Read " +"more » `)" msgstr "" +"Більшість звичайних фільтрів було замінено на \"магічний фільтр\". (:ref:`Детальніше " +"далі » `)" + +#: ../../migration_2_to_3.rst:58 +msgid "" +"By default, the message handler now receives any content type. If you want a " +"specific one, simply add the appropriate filters (Magic or any other)." +msgstr "" +"За замовчуванням обробник повідомлень тепер отримує будь-який тип вмісту. Якщо " +"вам потрібен певний тип, просто додайте відповідні фільтри (Magic або будь-який " +"інший)." #: ../../migration_2_to_3.rst:60 msgid "" -"Added possibility to register per-router global filters, that helps to " -"reduces the number of repetitions in the code and makes easily way to " -"control for what each router will be used." +"The state filter is no longer enabled by default. This means that if you used :" +"code:`state=\"*\"` in v2, you should not pass any state filter in v3. " +"Conversely, if the state was not specified in v2, you will now need to specify " +"it in v3." msgstr "" +"Фільтр стану більше не вмикається за замовчуванням. Це означає, що якщо ви " +"використовували :code:`state=\"*\"` у v2, вам не слід передавати фільтр стану у " +"v3. І навпаки, якщо стан не було вказано у v2, вам потрібно буде вказати його у " +"v3." -#: ../../migration_2_to_3.rst:66 +#: ../../migration_2_to_3.rst:63 +msgid "" +"Added the possibility to register global filters for each router, which helps " +"to reduce code repetition and provides an easier way to control the purpose of " +"each router." +msgstr "" +"Додано можливість реєстрації глобальних фільтрів для кожного роутера, що " +"допомагає зменшити повторення коду і полегшує контроль призначення кожного " +"роутера." + +#: ../../migration_2_to_3.rst:69 msgid "Bot API" msgstr "" -#: ../../migration_2_to_3.rst:68 +#: ../../migration_2_to_3.rst:71 msgid "" -"Now all API methods is classes with validation (via `pydantic " -"`_) (all API calls is also available as " -"methods in the Bot class)." +"All API methods are now classes with validation, implemented via `pydantic " +"`. These API calls are also available as methods in " +"the Bot class." msgstr "" +"Всі методи API тепер є класами з валідацією, реалізованими через `pydantic " +"`. Ці виклики API також доступні як методи в класі " +"Bot." -#: ../../migration_2_to_3.rst:70 +#: ../../migration_2_to_3.rst:74 msgid "" -"Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " -"For example chat type enum now is :class:`aiogram.enums.ChatType` instead" -" of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" +"More pre-defined Enums have been added and moved to the `aiogram.enums` sub-" +"package. For example, the chat type enum is now :class:`aiogram.enums.ChatType` " +"instead of :class:`aiogram.types.chat.ChatType`." msgstr "" +"Додано більше попередньо визначених enums та переміщено їх до підпакету " +"`aiogram.enums`. Наприклад, enum типу чату тепер має вигляд :class:`aiogram." +"enums.ChatType` замість :class:`aiogram.types.chat.ChatType`." -#: ../../migration_2_to_3.rst:73 +#: ../../migration_2_to_3.rst:76 msgid "" -"Separated HTTP client session into container that can be reused between " -"different Bot instances in the application." +"The HTTP client session has been separated into a container that can be reused " +"across different Bot instances within the application." msgstr "" +"Клієнтська сесія HTTP була відокремлена в контейнер, який можна повторно " +"використовувати для різних екземплярів бота в додатку." -#: ../../migration_2_to_3.rst:75 +#: ../../migration_2_to_3.rst:78 msgid "" -"API Exceptions is no more classified by specific message in due to " -"Telegram has no documented error codes. But all errors is classified by " -"HTTP status code and for each method only one case can be caused with the" -" same code, so in most cases you should check that only error type (by " -"status-code) without checking error message. (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:82 -msgid "Middlewares" -msgstr "" - -#: ../../migration_2_to_3.rst:84 -msgid "" -"Middlewares can now control a execution context, e.g. using context " -"managers (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:85 -msgid "" -"All contextual data now is shared between middlewares, filters and " -"handlers to end-to-end use. For example now you can easily pass some data" -" into context inside middleware and get it in the filters layer as the " -"same way as in the handlers via keyword arguments." +"API Exceptions are no longer classified by specific messages, as Telegram has " +"no documented error codes. However, all errors are classified by HTTP status " +"codes, and for each method, only one type of error can be associated with a " +"given code. Therefore, in most cases, you should check only the error type (by " +"status code) without inspecting the error message." msgstr "" +"Виключення API більше не класифікуються за конкретними повідомленнями, оскільки " +"Telegram не має задокументованих кодів помилок. Проте всі помилки " +"класифікуються за кодами статусу HTTP, і для кожного методу з певним кодом може " +"бути пов'язаний лише один тип помилки. Тому в більшості випадків слід " +"перевіряти лише тип помилки (за кодом статусу), не перевіряючи повідомлення про " +"помилку." #: ../../migration_2_to_3.rst:88 -msgid "" -"Added mechanism named **flags**, that helps to customize handler behavior" -" in conjunction with middlewares. (:ref:`Read more » `)" -msgstr "" +msgid "Middlewares" +msgstr "Проміжне ПО (Middlewares)" -#: ../../migration_2_to_3.rst:93 -msgid "Keyboard Markup" +#: ../../migration_2_to_3.rst:90 +msgid "" +"Middlewares can now control an execution context, e.g., using context managers. " +"(:ref:`Read more » `)" msgstr "" +"Проміжне програмне забезпечення тепер може керувати контекстом виконання, " +"наприклад, за допомогою менеджерів контексту. (:ref:`Детальніше » " +"`)" + +#: ../../migration_2_to_3.rst:92 +msgid "" +"All contextual data is now shared end-to-end between middlewares, filters, and " +"handlers. For example now you can easily pass some data into context inside " +"middleware and get it in the filters layer as the same way as in the handlers " +"via keyword arguments." +msgstr "" +"Всі контекстні дані тепер наскрізно використовуються між проміжним програмним " +"забезпеченням, фільтрами та обробниками. Наприклад, тепер ви можете легко " +"передати деякі дані в контекст у проміжному програмному забезпеченні і отримати " +"їх у шарі фільтрів так само, як і в обробниках через аргументи ключових слів." #: ../../migration_2_to_3.rst:95 msgid "" -"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " -"and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " -"no methods to extend it, instead you have to use markup builders " -":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " -":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " -"more » `)" +"Added a mechanism named **flags** that helps customize handler behavior in " +"conjunction with middlewares. (:ref:`Read more » `)" msgstr "" +"Додано механізм з назвою **flags**, який допомагає налаштовувати поведінку " +"обробника у поєднанні з проміжним програмним забезпеченням. (:ref:`Детальніше " +"про » `)" -#: ../../migration_2_to_3.rst:103 -msgid "Callbacks data" -msgstr "" +#: ../../migration_2_to_3.rst:100 +msgid "Keyboard Markup" +msgstr "Розмітка клавіатури" -#: ../../migration_2_to_3.rst:105 +#: ../../migration_2_to_3.rst:102 msgid "" -"Callback data factory now is strictly typed via `pydantic " -"`_ models (:ref:`Read more » `)" +"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` and :" +"class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` no longer have " +"methods for extension, instead you have to use markup builders :class:`aiogram." +"utils.keyboard.ReplyKeyboardBuilder` and :class:`aiogram.utils.keyboard." +"KeyboardBuilder` respectively (:ref:`Read more » `)" msgstr "" +"Тепер :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` та :" +"class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` більше не мають " +"методів для розширення, натомість вам слід використовувати будівники розмітки :" +"class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` та :class:`aiogram.utils.keyboard.InlineKeyboardBuilder` " +"відповідно (:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:110 -msgid "Finite State machine" +msgid "Callbacks data" msgstr "" #: ../../migration_2_to_3.rst:112 msgid "" -"State filter will no more added to all handlers, you will need to specify" -" state if you want" +"The callback data factory is now strictly typed using `pydantic `_ models. (:ref:`Read more » `)" msgstr "" +"Фабрику даних зворотного виклику тепер строго типізовано за допомогою моделей " +"`pydantic `_. (:ref:`Детальніше » `)" -#: ../../migration_2_to_3.rst:113 +#: ../../migration_2_to_3.rst:117 +msgid "Finite State machine" +msgstr "Скінченний автомат" + +#: ../../migration_2_to_3.rst:119 msgid "" -"Added possibility to change FSM strategy, for example if you want to " -"control state for each user in chat topics instead of user in chat you " -"can specify it in the Dispatcher." +"State filters will no longer be automatically added to all handlers; you will " +"need to specify the state if you want to use it." msgstr "" +"Фільтри станів більше не будуть автоматично додаватися до всіх обробників; вам " +"потрібно буде вказати стан, якщо ви хочете його використати." -#: ../../migration_2_to_3.rst:115 +#: ../../migration_2_to_3.rst:121 msgid "" -"Now :class:`aiogram.fsm.state.State` and " -":class:`aiogram.fsm.state.StateGroup` don't have helper methods like " -":code:`.set()`, :code:`.next()`, etc." +"Added the possibility to change the FSM strategy. For example, if you want to " +"control the state for each user based on chat topics rather than the user in a " +"chat, you can specify this in the Dispatcher." msgstr "" +"Додано можливість змінювати стратегію FSM. Наприклад, якщо ви хочете " +"контролювати стан для кожного користувача на основі топіків чату, а не " +"користувача в чаті, ви можете вказати це в Диспетчері." -#: ../../migration_2_to_3.rst:118 +#: ../../migration_2_to_3.rst:124 msgid "" -"Instead of this you should set states by passing them directly to " -":class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:120 -msgid "" -"State proxy is deprecated, you should update the state data by calling " -":code:`state.set_data(...)` and :code:`state.get_data()` respectively." -msgstr "" - -#: ../../migration_2_to_3.rst:125 -msgid "Sending Files" +"Now :class:`aiogram.fsm.state.State` and :class:`aiogram.fsm.state.StateGroup` " +"don't have helper methods like :code:`.set()`, :code:`.next()`, etc." msgstr "" +"Тепер :class:`aiogram.fsm.state.State` та :class:`aiogram.fsm.state.StateGroup` " +"не мають допоміжних методів, таких як :code:`.set()`, :code:`.next()` тощо." #: ../../migration_2_to_3.rst:127 msgid "" -"From now you should wrap sending files into InputFile object before send " -"instead of passing IO object directly to the API method. (:ref:`Read more" -" » `)" +"Instead, you should set states by passing them directly to :class:`aiogram.fsm." +"context.FSMContext` (:ref:`Read more » `)" msgstr "" +"Замість цього вам слід встановлювати стани, передаючи їх безпосередньо до :" +"class:`aiogram.fsm.context.FSMContext` (:ref:`Детальніше » `)" -#: ../../migration_2_to_3.rst:132 +#: ../../migration_2_to_3.rst:129 +msgid "" +"The state proxy is deprecated; you should update the state data by calling :" +"code:`state.set_data(...)` and :code:`state.get_data()` respectively." +msgstr "" +"Проксі стану є застарілим; вам слід оновити дані стану, викликавши :code:`state." +"set_data(...)` та :code:`state.get_data()` відповідно." + +#: ../../migration_2_to_3.rst:134 +msgid "Sending Files" +msgstr "Надсилання файлів" + +#: ../../migration_2_to_3.rst:136 +msgid "" +"From now on, you should wrap files in an InputFile object before sending them, " +"instead of passing the IO object directly to the API method. (:ref:`Read more » " +"`)" +msgstr "" +"Відтепер перед відправкою файлів слід обертати їх в об'єкт InputFile замість " +"того, щоб передавати об'єкт вводу-виводу безпосередньо до методу API. (:ref:" +"`Детальніше » `)" + +#: ../../migration_2_to_3.rst:141 msgid "Webhook" msgstr "" -#: ../../migration_2_to_3.rst:134 -msgid "Simplified aiohttp web app configuration" -msgstr "" +#: ../../migration_2_to_3.rst:143 +msgid "The aiohttp web app configuration has been simplified." +msgstr "Спрощено налаштування веб-застосунку aiohttp." -#: ../../migration_2_to_3.rst:135 +#: ../../migration_2_to_3.rst:144 msgid "" -"By default added possibility to upload files when you use reply into " -"webhook" +"By default, the ability to upload files has been added when you use the reply " +"function in a webhook." msgstr "" +"За замовчуванням додана можливість завантажувати файли, коли ви використовуєте " +"функцію відповіді у вебхук." -#~ msgid "" -#~ "Callback data factory now is strictly" -#~ " typed via `pydantic " -#~ "`_ models (:ref:`Read " -#~ "more » `)" -#~ msgstr "" +#: ../../migration_2_to_3.rst:148 +msgid "Telegram API Server" +msgstr "Сервер Telegram API" + +#: ../../migration_2_to_3.rst:150 +msgid "" +"The `server` parameter has been moved from the `Bot` instance to `api` in " +"`BaseSession`." +msgstr "" +"Параметр `server` було перенесено з екземпляра `Bot` до `api` в `BaseSession`." + +#: ../../migration_2_to_3.rst:151 +msgid "" +"The constant `aiogram.bot.api.TELEGRAM_PRODUCTION` has been moved to `aiogram." +"client.telegram.PRODUCTION`." +msgstr "" +"Константа `aiogram.bot.api.TELEGRAM_PRODUCTION` була переміщена на `aiogram." +"client.telegram.PRODUCTION`." diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/media_group.po b/docs/locale/uk_UA/LC_MESSAGES/utils/media_group.po new file mode 100644 index 00000000..adf8c7d2 --- /dev/null +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/media_group.po @@ -0,0 +1,291 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2023, aiogram Team +# This file is distributed under the same license as the aiogram package. +# FIRST AUTHOR , 2023. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: aiogram \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-09-14 17:21+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.12.1\n" + +#: ../../utils/media_group.rst:3 +msgid "Media group builder" +msgstr "" + +#: ../../utils/media_group.rst:5 +msgid "" +"This module provides a builder for media groups, it can be used to build " +"media groups for " +":class:`aiogram.types.input_media_photo.InputMediaPhoto`, " +":class:`aiogram.types.input_media_video.InputMediaVideo`, " +":class:`aiogram.types.input_media_document.InputMediaDocument` and " +":class:`aiogram.types.input_media_audio.InputMediaAudio`." +msgstr "" + +#: ../../utils/media_group.rst:11 +msgid "" +":class:`aiogram.types.input_media_animation.InputMediaAnimation` is not " +"supported yet in the Bot API to send as media group." +msgstr "" + +#: ../../utils/media_group.rst:16 +msgid "Usage" +msgstr "" + +#: ../../utils/media_group.rst:30 +msgid "" +"To send media group use " +":meth:`aiogram.methods.send_media_group.SendMediaGroup` method, but when " +"you use :class:`aiogram.utils.media_group.MediaGroupBuilder` you should " +"pass ``media`` argument as ``media_group.build()``." +msgstr "" + +#: ../../utils/media_group.rst:34 +msgid "" +"If you specify ``caption`` in " +":class:`aiogram.utils.media_group.MediaGroupBuilder` it will be used as " +"``caption`` for first media in group." +msgstr "" + +#: ../../utils/media_group.rst:43 +msgid "References" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add:1 of +msgid "Add a media object to the media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio +#: aiogram.utils.media_group.MediaGroupBuilder.add_document +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo +#: aiogram.utils.media_group.MediaGroupBuilder.add_video of +msgid "Parameters" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add:3 of +msgid "" +"Keyword arguments for the media object. The available keyword arguments " +"depend on the media type." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio +#: aiogram.utils.media_group.MediaGroupBuilder.add_document +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo +#: aiogram.utils.media_group.MediaGroupBuilder.add_video +#: aiogram.utils.media_group.MediaGroupBuilder.build of +msgid "Returns" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add:5 +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:22 +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:27 +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:17 +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:30 of +msgid "None" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:1 of +msgid "Add an audio file to the media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:3 +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:3 of +msgid "" +"File to send. Pass a file_id to send a file that exists on the Telegram " +"servers (recommended), pass an HTTP URL for Telegram to get a file from " +"the Internet, or pass 'attach://' to upload a new one " +"using multipart/form-data under name. :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:3 +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:3 of +msgid "" +"File to send. Pass a file_id to send a file that exists on the Telegram " +"servers (recommended), pass an HTTP URL for Telegram to get a file from " +"the Internet, or pass 'attach://' to upload a new one " +"using multipart/form-data under name." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:7 +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:7 of +msgid ":ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:8 of +msgid "" +"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " +"generation for the file is supported server-side. The thumbnail should be" +" in JPEG format and less than 200 kB in size. A thumbnail's width and " +"height should not exceed 320." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:12 of +msgid "" +"*Optional*. Caption of the audio to be sent, 0-1024 characters after " +"entities parsing" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:14 of +msgid "" +"*Optional*. Mode for parsing entities in the audio caption. See " +"`formatting options `_ for more details." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:17 +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:22 +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:13 +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:21 of +msgid "" +"*Optional*. List of special entities that appear in the caption, which " +"can be specified instead of *parse_mode*" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:19 of +msgid "*Optional*. Duration of the audio in seconds" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:20 of +msgid "*Optional*. Performer of the audio" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_audio:21 of +msgid "*Optional*. Title of the audio" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:1 of +msgid "Add a document to the media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:3 +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:3 of +msgid "" +"File to send. Pass a file_id to send a file that exists on the Telegram " +"servers (recommended), pass an HTTP URL for Telegram to get a file from " +"the Internet, or pass 'attach://' to upload a new one " +"using multipart/form-data under name. :ref:`More " +"information on Sending Files » `" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:8 +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:8 of +msgid "" +"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " +"generation for the file is supported server-side. The thumbnail should be" +" in JPEG format and less than 200 kB in size. A thumbnail's width and " +"height should not exceed 320. Ignored if the file is not uploaded using " +"multipart/form-data. Thumbnails can't be reused and can be only uploaded " +"as a new file, so you can pass 'attach://' if the " +"thumbnail was uploaded using multipart/form-data under " +". :ref:`More information on Sending Files » `" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:17 of +msgid "" +"*Optional*. Caption of the document to be sent, 0-1024 characters after " +"entities parsing" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:19 of +msgid "" +"*Optional*. Mode for parsing entities in the document caption. See " +"`formatting options `_ for more details." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_document:24 of +msgid "" +"*Optional*. Disables automatic server-side content type detection for " +"files uploaded using multipart/form-data. Always :code:`True`, if the " +"document is sent as part of an album." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:1 of +msgid "Add a photo to the media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:8 of +msgid "" +"*Optional*. Caption of the photo to be sent, 0-1024 characters after " +"entities parsing" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:10 of +msgid "" +"*Optional*. Mode for parsing entities in the photo caption. See " +"`formatting options `_ for more details." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_photo:15 of +msgid "" +"*Optional*. Pass :code:`True` if the photo needs to be covered with a " +"spoiler animation" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:1 of +msgid "Add a video to the media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:16 of +msgid "" +"*Optional*. Caption of the video to be sent, 0-1024 characters after " +"entities parsing" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:18 of +msgid "" +"*Optional*. Mode for parsing entities in the video caption. See " +"`formatting options `_ for more details." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:23 of +msgid "*Optional*. Video width" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:24 of +msgid "*Optional*. Video height" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:25 of +msgid "*Optional*. Video duration in seconds" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:26 of +msgid "" +"*Optional*. Pass :code:`True` if the uploaded video is suitable for " +"streaming" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.add_video:28 of +msgid "" +"*Optional*. Pass :code:`True` if the video needs to be covered with a " +"spoiler animation" +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.build:1 of +msgid "Builds a list of media objects for a media group." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.build:3 of +msgid "Adds the caption to the first media object if it is present." +msgstr "" + +#: aiogram.utils.media_group.MediaGroupBuilder.build:5 of +msgid "List of media objects." +msgstr "" + diff --git a/docs/migration_2_to_3.rst b/docs/migration_2_to_3.rst index 93228c4d..0eeef2bf 100644 --- a/docs/migration_2_to_3.rst +++ b/docs/migration_2_to_3.rst @@ -6,16 +6,17 @@ Migration FAQ (2.x -> 3.0) This guide is still in progress. -This version introduces much many breaking changes and architectural improvements, -helping to reduce global variables count in your code, provides useful mechanisms -to separate your code to modules or just make sharable modules via packages on the PyPi, -makes middlewares and filters more controllable and others. +This version introduces numerous breaking changes and architectural improvements. +It helps reduce the count of global variables in your code, provides useful mechanisms +to modularize your code, and enables the creation of shareable modules via packages on PyPI. +It also makes middlewares and filters more controllable, among other improvements. -On this page you can read about points that changed corresponding to last stable 2.x version. + +On this page, you can read about the changes made in relation to the last stable 2.x version. .. note:: - This page is most like a detailed changelog than a migration guide, + This page more closely resembles a detailed changelog than a migration guide, but it will be updated in the future. Feel free to contribute to this page, if you find something that is not mentioned here. @@ -24,68 +25,74 @@ On this page you can read about points that changed corresponding to last stable Dispatcher ========== -- :class:`Dispatcher` class no longer accepts the `Bot` instance into the initializer, - it should be passed to dispatcher only for starting polling or handling event from webhook. - Also this way adds possibility to use multiple bot instances at the same time ("multibot") +- The :class:`Dispatcher` class no longer accepts a `Bot` instance in its initializer. + Instead, the `Bot` instance should be passed to the dispatcher only for starting polling + or handling events from webhooks. This approach also allows for the use of multiple bot + instances simultaneously ("multibot"). - :class:`Dispatcher` now can be extended with another Dispatcher-like thing named :class:`Router` (:ref:`Read more » `). - With routes you can easily separate your code to multiple modules - and may be share this modules between projects. +- With routes, you can easily modularize your code and potentially share these modules between projects. - Removed the **_handler** suffix from all event handler decorators and registering methods. (:ref:`Read more » `) -- Executor entirely removed, now you can use Dispatcher directly to start polling or webhook. -- Throttling method is completely removed, now you can use middlewares to control - the execution context and use any throttling mechanism you want. +- The Executor has been entirely removed; you can now use the Dispatcher directly to start poll the API or handle webhooks from it. +- The throttling method has been completely removed; you can now use middlewares to control + the execution context and implement any throttling mechanism you desire. - Removed global context variables from the API types, Bot and Dispatcher object, - from now if you want to get current bot instance inside handlers or filters you should - accept the argument :code:`bot: Bot` and use it instead of :code:`Bot.get_current()` - Inside middlewares it can be accessed via :code:`data["bot"]`. -- Now to skip pending updates, you should call the :class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly instead of passing :code:`skip_updates=True` to start polling method. + From now on, if you want to access the current bot instance within handlers or filters, + you should accept the argument :code:`bot: Bot` and use it instead of :code:`Bot.get_current()`. + In middlewares, it can be accessed via :code:`data["bot"]`. +- To skip pending updates, you should now call the :class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly, rather than passing :code:`skip_updates=True` to the start polling method. + Filtering events ================ -- Keyword filters can no more be used, use filters explicitly. (`Read more » `_) -- In due to keyword filters was removed all enabled by default filters (state and content_type now is not enabled), - so you should specify them explicitly if you want to use. +- Keyword filters can no longer be used; use filters explicitly. (`Read more » `_) +- Due to the removal of keyword filters, all previously enabled-by-default filters + (such as state and content_type) are now disabled. + You must specify them explicitly if you wish to use them. For example instead of using :code:`@dp.message_handler(content_types=ContentType.PHOTO)` you should use :code:`@router.message(F.photo)` -- Most of common filters is replaced by "magic filter". (:ref:`Read more » `) -- Now by default message handler receives any content type, - if you want specific one just add the filters (Magic or any other) -- State filter now is not enabled by default, that's mean if you using :code:`state="*"` in v2 - then you should not pass any state filter in v3, and vice versa, - if the state in v2 is not specified now you should specify the state. -- Added possibility to register per-router global filters, that helps to reduces - the number of repetitions in the code and makes easily way to control - for what each router will be used. +- Most common filters have been replaced with the "magic filter." (:ref:`Read more » `) +- By default, the message handler now receives any content type. + If you want a specific one, simply add the appropriate filters (Magic or any other). +- The state filter is no longer enabled by default. This means that if you used :code:`state="*"` + in v2, you should not pass any state filter in v3. + Conversely, if the state was not specified in v2, you will now need to specify it in v3. +- Added the possibility to register global filters for each router, which helps to reduce code + repetition and provides an easier way to control the purpose of each router. + Bot API ======= -- Now all API methods is classes with validation (via `pydantic `_) - (all API calls is also available as methods in the Bot class). -- Added more pre-defined Enums and moved into `aiogram.enums` sub-package. For example chat type enum now is - :class:`aiogram.enums.ChatType` instead of :class:`aiogram.types.chat.ChatType`. - (:ref:`Read more » `) -- Separated HTTP client session into container that can be reused between different - Bot instances in the application. -- API Exceptions is no more classified by specific message in due to Telegram has no documented error codes. - But all errors is classified by HTTP status code and for each method only one case can be caused with the same code, - so in most cases you should check that only error type (by status-code) without checking error message. - (:ref:`Read more » `) +- All API methods are now classes with validation, implemented via + `pydantic `. + These API calls are also available as methods in the Bot class. +- More pre-defined Enums have been added and moved to the `aiogram.enums` sub-package. + For example, the chat type enum is now :class:`aiogram.enums.ChatType` instead of :class:`aiogram.types.chat.ChatType`. +- The HTTP client session has been separated into a container that can be reused + across different Bot instances within the application. +- API Exceptions are no longer classified by specific messages, + as Telegram has no documented error codes. + However, all errors are classified by HTTP status codes, and for each method, + only one type of error can be associated with a given code. + Therefore, in most cases, you should check only the error type (by status code) + without inspecting the error message. + Middlewares =========== -- Middlewares can now control a execution context, e.g. using context managers (:ref:`Read more » `) -- All contextual data now is shared between middlewares, filters and handlers to end-to-end use. +- Middlewares can now control an execution context, e.g., using context managers. + (:ref:`Read more » `) +- All contextual data is now shared end-to-end between middlewares, filters, and handlers. For example now you can easily pass some data into context inside middleware and get it in the filters layer as the same way as in the handlers via keyword arguments. -- Added mechanism named **flags**, that helps to customize handler behavior +- Added a mechanism named **flags** that helps customize handler behavior in conjunction with middlewares. (:ref:`Read more » `) @@ -93,7 +100,7 @@ Keyboard Markup =============== - Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` - and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has no methods to extend it, + and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` no longer have methods for extension, instead you have to use markup builders :class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and :class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read more » `) @@ -102,41 +109,43 @@ Keyboard Markup Callbacks data ============== -- Callback data factory now is strictly typed via `pydantic `_ models +- The callback data factory is now strictly typed using `pydantic `_ models. (:ref:`Read more » `) Finite State machine ==================== -- State filter will no more added to all handlers, you will need to specify state if you want -- Added possibility to change FSM strategy, for example if you want to control state - for each user in chat topics instead of user in chat you can specify it in the Dispatcher. +- State filters will no longer be automatically added to all handlers; + you will need to specify the state if you want to use it. +- Added the possibility to change the FSM strategy. For example, + if you want to control the state for each user based on chat topics rather than + the user in a chat, you can specify this in the Dispatcher. - Now :class:`aiogram.fsm.state.State` and :class:`aiogram.fsm.state.StateGroup` don't have helper methods like :code:`.set()`, :code:`.next()`, etc. - Instead of this you should set states by passing them directly to +- Instead, you should set states by passing them directly to :class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `) -- State proxy is deprecated, you should update the state data by calling +- The state proxy is deprecated; you should update the state data by calling :code:`state.set_data(...)` and :code:`state.get_data()` respectively. Sending Files ============= -- From now you should wrap sending files into InputFile object before send instead of passing - IO object directly to the API method. (:ref:`Read more » `) +- From now on, you should wrap files in an InputFile object before sending them, + instead of passing the IO object directly to the API method. (:ref:`Read more » `) Webhook ======= -- Simplified aiohttp web app configuration -- By default added possibility to upload files when you use reply into webhook +- The aiohttp web app configuration has been simplified. +- By default, the ability to upload files has been added when you `make requests in response to updates `_ (available for webhook only). Telegram API Server =================== -- `server` param was moved from `Bot` instance to `api` in `BaseSession`. -- `aiogram.bot.api.TELEGRAM_PRODUCTION` was moved to `aiogram.client.telegram.PRODUCTION`. +- The `server` parameter has been moved from the `Bot` instance to `api` in `BaseSession`. +- The constant `aiogram.bot.api.TELEGRAM_PRODUCTION` has been moved to `aiogram.client.telegram.PRODUCTION`. From 67382553e5329ecc1e9340da7f8c020a856d35e9 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 1 Oct 2023 16:22:26 +0300 Subject: [PATCH 114/139] Update dependencies (#1327) * Update dependencies * Added changelog --- CHANGES/1327.misc.rst | 6 ++++ aiogram/fsm/storage/redis.py | 2 +- pyproject.toml | 55 +++++++++++++++++------------------- 3 files changed, 33 insertions(+), 30 deletions(-) create mode 100644 CHANGES/1327.misc.rst diff --git a/CHANGES/1327.misc.rst b/CHANGES/1327.misc.rst new file mode 100644 index 00000000..fd02654c --- /dev/null +++ b/CHANGES/1327.misc.rst @@ -0,0 +1,6 @@ +Updated dependencies, bumped minimum required version: + +- :code:`magic-filter` - fixed `.resolve` operation +- :code:`pydantic` - fixed compatibility (broken in 2.4) +- :code:`aiodns` - added new dependency to the :code:`fast` extras (:code:`pip install aiogram[fast]`) +- *others...* diff --git a/aiogram/fsm/storage/redis.py b/aiogram/fsm/storage/redis.py index 37352a1d..33e44be4 100644 --- a/aiogram/fsm/storage/redis.py +++ b/aiogram/fsm/storage/redis.py @@ -138,7 +138,7 @@ class RedisStorage(BaseStorage): return RedisEventIsolation(redis=self.redis, key_builder=self.key_builder, **kwargs) async def close(self) -> None: - await self.redis.close(close_connection_pool=True) + await self.redis.aclose(close_connection_pool=True) async def set_state( self, diff --git a/pyproject.toml b/pyproject.toml index d43c740a..1f0ad86c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,12 +40,12 @@ classifiers = [ "Topic :: Communications :: Chat", ] dependencies = [ - "magic-filter~=1.0.11", + "magic-filter>=1.0.12,<1.1", "aiohttp~=3.8.5", - "pydantic>=2.1.1,<2.4", - "aiofiles~=23.1.0", + "pydantic>=2.4.1,<2.5", + "aiofiles~=23.2.1", "certifi>=2023.7.22", - "typing-extensions~=4.7.1", + "typing-extensions~=4.8.0", ] dynamic = ["version"] @@ -55,55 +55,55 @@ path = "aiogram/__meta__.py" [project.optional-dependencies] fast = [ "uvloop>=0.17.0; (sys_platform == 'darwin' or sys_platform == 'linux') and platform_python_implementation != 'PyPy'", + "aiodns>=3.0.0", ] redis = [ - "redis~=4.6.0", + "redis[hiredis]~=5.0.1", ] proxy = [ - "aiohttp-socks~=0.8.0", + "aiohttp-socks~=0.8.3", ] i18n = [ "Babel~=2.12.1", ] cli = [ - "aiogram-cli~=1.0", + "aiogram-cli~=1.0.3", ] test = [ - "pytest~=7.4.0", - "pytest-html~=4.0.0", - "pytest-asyncio~=0.21.0", + "pytest~=7.4.2", + "pytest-html~=4.0.2", + "pytest-asyncio~=0.21.1", "pytest-lazy-fixture~=0.6.3", "pytest-mock~=3.11.0", - "pytest-mypy~=0.10.0", + "pytest-mypy~=0.10.3", "pytest-cov~=4.1.0", - "pytest-aiohttp~=1.0.4", + "pytest-aiohttp~=1.0.5", "aresponses~=2.1.6", "pytz~=2023.3", - "pycryptodomex~=3.19", + "pycryptodomex~=3.19.0", ] docs = [ - "Sphinx~=7.1.1", - "sphinx-intl~=2.0.1", + "Sphinx~=7.2.6", + "sphinx-intl~=2.1.0", "sphinx-autobuild~=2021.3.14", "sphinx-copybutton~=0.5.2", - "furo~=2023.7.26", + "furo~=2023.9.10", "Sphinx-Substitution-Extensions~=2022.2.16", "towncrier~=23.6.0", - "pygments~=2.15.1", - "pymdown-extensions~=10.1", + "pygments~=2.16.1", + "pymdown-extensions~=10.3", "markdown-include~=0.8.1", - "Pygments~=2.15.1", + "Pygments~=2.16.1", "sphinxcontrib-towncrier~=0.3.2a0", ] dev = [ - "black~=23.7.0", - "isort~=5.11", - "ruff~=0.0.280", - "mypy~=1.4.1", + "black~=23.9.1", + "isort~=5.12.0", + "ruff~=0.0.291", + "mypy~=1.5.1", "toml~=0.10.2", - "pre-commit~=3.3.3", - "towncrier~=23.6.0", - "packaging~=23.0", + "pre-commit~=3.4.0", + "packaging~=23.1", ] [project.urls] @@ -154,9 +154,6 @@ features = [ "test", "cli", ] -#extra-dependencies = [ -# "butcher @ git+https://github.com/aiogram/butcher.git@v0.1.22", -#] [tool.hatch.envs.dev.scripts] update = [ From f681afb879ea83c19847b697094485f43e198d30 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 8 Oct 2023 18:00:50 +0300 Subject: [PATCH 115/139] Bump version --- aiogram/__meta__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/__meta__.py b/aiogram/__meta__.py index b591b842..d20e16db 100644 --- a/aiogram/__meta__.py +++ b/aiogram/__meta__.py @@ -1,2 +1,2 @@ -__version__ = "3.1.1" +__version__ = "3.2.0" __api_version__ = "6.9" From cad42580dd8183a0369ff9b76abe590cc5cdb0b6 Mon Sep 17 00:00:00 2001 From: Sergey Akentev Date: Sun, 8 Oct 2023 18:13:06 +0300 Subject: [PATCH 116/139] Prevent update handling task pointers from being garbage collected, backport of #1328 (#1331) * Preserve update handling task pointers, backport of #1328 * Changelog * Typing improvements --- CHANGES/1331.misc | 1 + aiogram/dispatcher/dispatcher.py | 7 +++++-- aiogram/webhook/aiohttp_server.py | 7 +++++-- 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 CHANGES/1331.misc diff --git a/CHANGES/1331.misc b/CHANGES/1331.misc new file mode 100644 index 00000000..375f975c --- /dev/null +++ b/CHANGES/1331.misc @@ -0,0 +1 @@ +Prevent update handling task pointers from being garbage collected, backport from 2.x \ No newline at end of file diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 827b300a..e3eb654a 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -6,7 +6,7 @@ import signal import warnings from asyncio import CancelledError, Event, Future, Lock from contextlib import suppress -from typing import Any, AsyncGenerator, Dict, List, Optional, Union +from typing import Any, AsyncGenerator, Dict, List, Optional, Set, Union from .. import loggers from ..client.bot import Bot @@ -95,6 +95,7 @@ class Dispatcher(Router): self._running_lock = Lock() self._stop_signal: Optional[Event] = None self._stopped_signal: Optional[Event] = None + self._handle_update_tasks: Set[asyncio.Task[Any]] = set() def __getitem__(self, item: str) -> Any: return self.workflow_data[item] @@ -349,7 +350,9 @@ class Dispatcher(Router): ): handle_update = self._process_update(bot=bot, update=update, **kwargs) if handle_as_tasks: - asyncio.create_task(handle_update) + handle_update_task = asyncio.create_task(handle_update) + self._handle_update_tasks.add(handle_update_task) + handle_update_task.add_done_callback(self._handle_update_tasks.discard) else: await handle_update finally: diff --git a/aiogram/webhook/aiohttp_server.py b/aiogram/webhook/aiohttp_server.py index bf9f2aaf..7caa0e15 100644 --- a/aiogram/webhook/aiohttp_server.py +++ b/aiogram/webhook/aiohttp_server.py @@ -2,7 +2,7 @@ import asyncio import secrets from abc import ABC, abstractmethod from asyncio import Transport -from typing import Any, Awaitable, Callable, Dict, Optional, Tuple, cast +from typing import Any, Awaitable, Callable, Dict, Optional, Set, Tuple, cast from aiohttp import MultipartWriter, web from aiohttp.abc import Application @@ -98,6 +98,7 @@ class BaseRequestHandler(ABC): self.dispatcher = dispatcher self.handle_in_background = handle_in_background self.data = data + self._background_feed_update_tasks: Set[asyncio.Task[Any]] = set() def register(self, app: Application, /, path: str, **kwargs: Any) -> None: """ @@ -139,11 +140,13 @@ class BaseRequestHandler(ABC): await self.dispatcher.silent_call_request(bot=bot, result=result) async def _handle_request_background(self, bot: Bot, request: web.Request) -> web.Response: - asyncio.create_task( + feed_update_task = asyncio.create_task( self._background_feed_update( bot=bot, update=await request.json(loads=bot.session.json_loads) ) ) + self._background_feed_update_tasks.add(feed_update_task) + feed_update_task.add_done_callback(self._background_feed_update_tasks.discard) return web.json_response({}, dumps=bot.session.json_dumps) def _build_response_writer( From 564292dd79ac9aed292acdf99ef0ec0c2f02ab28 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Sun, 8 Oct 2023 18:56:30 +0300 Subject: [PATCH 117/139] Fix send_copy helper parse mode (#1332) * Fix send_copy helper parse mode * Add changelog for bugfix 1332 --- CHANGES/1332.bugfix.rst | 1 + aiogram/types/message.py | 5 +++ tests/test_api/test_types/test_message.py | 40 +++++++++++++++++++++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1332.bugfix.rst diff --git a/CHANGES/1332.bugfix.rst b/CHANGES/1332.bugfix.rst new file mode 100644 index 00000000..004cfd1d --- /dev/null +++ b/CHANGES/1332.bugfix.rst @@ -0,0 +1 @@ + Fixed ``parse_mode`` in ``send_copy`` helper. Disable by default. diff --git a/aiogram/types/message.py b/aiogram/types/message.py index da3e1f98..87798b7e 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -2803,6 +2803,7 @@ class Message(TelegramObject): reply_markup: Union[InlineKeyboardMarkup, ReplyKeyboardMarkup, None] = None, allow_sending_without_reply: Optional[bool] = None, message_thread_id: Optional[int] = None, + parse_mode: Optional[str] = None, ) -> Union[ ForwardMessage, SendAnimation, @@ -2837,6 +2838,7 @@ class Message(TelegramObject): :param reply_markup: :param allow_sending_without_reply: :param message_thread_id: + :param parse_mode: :return: """ from ..methods import ( @@ -2864,6 +2866,9 @@ class Message(TelegramObject): "reply_to_message_id": reply_to_message_id, "message_thread_id": message_thread_id, "allow_sending_without_reply": allow_sending_without_reply, + # when sending a copy, we don't need any parse mode + # because all entities are already prepared + "parse_mode": parse_mode, } if self.text: diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 0b600146..4e893d20 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -3,6 +3,7 @@ from typing import Any, Dict, Optional, Type, Union import pytest +from aiogram.enums import ParseMode from aiogram.methods import ( CopyMessage, DeleteMessage, @@ -74,6 +75,7 @@ from aiogram.types import ( VideoNote, Voice, WebAppData, + UNSET_PARSE_MODE, ) from aiogram.types.message import ContentType, Message @@ -688,10 +690,44 @@ class TestMessage: return method = message.send_copy(chat_id=42) - if method: - assert isinstance(method, expected_method) + assert isinstance(method, expected_method) + if hasattr(method, "parse_mode"): + # default parse mode in send_copy + assert method.parse_mode is None # TODO: Check additional fields + @pytest.mark.parametrize( + "custom_parse_mode", + [ + UNSET_PARSE_MODE, + *list(ParseMode), + ], + ) + @pytest.mark.parametrize( + "message,expected_method", + [ + [TEST_MESSAGE_TEXT, SendMessage], + [TEST_MESSAGE_AUDIO, SendAudio], + [TEST_MESSAGE_ANIMATION, SendAnimation], + [TEST_MESSAGE_DOCUMENT, SendDocument], + [TEST_MESSAGE_PHOTO, SendPhoto], + [TEST_MESSAGE_VIDEO, SendVideo], + [TEST_MESSAGE_VOICE, SendVoice], + ], + ) + def test_send_copy_custom_parse_mode( + self, + message: Message, + expected_method: Optional[Type[TelegramMethod]], + custom_parse_mode: Optional[str], + ): + method = message.send_copy( + chat_id=42, + parse_mode=custom_parse_mode, + ) + assert isinstance(method, expected_method) + assert method.parse_mode == custom_parse_mode + def test_edit_text(self): message = Message( message_id=42, chat=Chat(id=42, type="private"), date=datetime.datetime.now() From d180fd7a46462373970f2298b2d436c49365a055 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 8 Oct 2023 19:14:12 +0300 Subject: [PATCH 118/139] Update texts, remove dummy translation files --- Makefile | 5 +- docs/locale/en/LC_MESSAGES/api/bot.po | 167 - .../en/LC_MESSAGES/api/download_file.po | 187 - .../api/enums/bot_command_scope_type.po | 30 - .../en/LC_MESSAGES/api/enums/chat_action.po | 66 - .../api/enums/chat_member_status.po | 30 - .../en/LC_MESSAGES/api/enums/chat_type.po | 30 - .../en/LC_MESSAGES/api/enums/content_type.po | 26 - .../en/LC_MESSAGES/api/enums/currency.po | 30 - .../en/LC_MESSAGES/api/enums/dice_emoji.po | 30 - .../api/enums/encrypted_passport_element.po | 30 - docs/locale/en/LC_MESSAGES/api/enums/index.po | 29 - .../api/enums/inline_query_result_type.po | 36 - .../LC_MESSAGES/api/enums/input_media_type.po | 30 - .../api/enums/mask_position_point.po | 30 - .../LC_MESSAGES/api/enums/menu_button_type.po | 30 - .../api/enums/message_entity_type.po | 30 - .../en/LC_MESSAGES/api/enums/parse_mode.po | 30 - .../api/enums/passport_element_error_type.po | 30 - .../en/LC_MESSAGES/api/enums/poll_type.po | 30 - .../LC_MESSAGES/api/enums/sticker_format.po | 30 - .../en/LC_MESSAGES/api/enums/sticker_type.po | 30 - .../LC_MESSAGES/api/enums/topic_icon_color.po | 32 - .../en/LC_MESSAGES/api/enums/update_type.po | 30 - docs/locale/en/LC_MESSAGES/api/index.po | 34 - .../api/methods/add_sticker_to_set.po | 149 - .../api/methods/answer_callback_query.po | 141 - .../api/methods/answer_inline_query.po | 164 - .../api/methods/answer_pre_checkout_query.po | 108 - .../api/methods/answer_shipping_query.po | 112 - .../api/methods/answer_web_app_query.po | 82 - .../api/methods/approve_chat_join_request.po | 93 - .../api/methods/ban_chat_member.po | 108 - .../api/methods/ban_chat_sender_chat.po | 93 - .../en/LC_MESSAGES/api/methods/close.po | 71 - .../api/methods/close_forum_topic.po | 82 - .../api/methods/close_general_forum_topic.po | 80 - .../LC_MESSAGES/api/methods/copy_message.po | 169 - .../api/methods/create_chat_invite_link.po | 118 - .../api/methods/create_forum_topic.po | 106 - .../api/methods/create_invoice_link.po | 207 -- .../api/methods/create_new_sticker_set.po | 190 - .../api/methods/decline_chat_join_request.po | 93 - .../api/methods/delete_chat_photo.po | 85 - .../api/methods/delete_chat_sticker_set.po | 89 - .../api/methods/delete_forum_topic.po | 82 - .../LC_MESSAGES/api/methods/delete_message.po | 138 - .../api/methods/delete_my_commands.po | 86 - .../api/methods/delete_sticker_from_set.po | 83 - .../api/methods/delete_sticker_set.po | 73 - .../LC_MESSAGES/api/methods/delete_webhook.po | 74 - .../api/methods/edit_chat_invite_link.po | 118 - .../api/methods/edit_forum_topic.po | 96 - .../api/methods/edit_general_forum_topic.po | 84 - .../api/methods/edit_message_caption.po | 138 - .../api/methods/edit_message_live_location.po | 160 - .../api/methods/edit_message_media.po | 126 - .../api/methods/edit_message_reply_markup.po | 124 - .../api/methods/edit_message_text.po | 140 - .../api/methods/export_chat_invite_link.po | 101 - .../api/methods/forward_message.po | 117 - .../en/LC_MESSAGES/api/methods/get_chat.po | 72 - .../api/methods/get_chat_administrators.po | 85 - .../api/methods/get_chat_member.po | 97 - .../api/methods/get_chat_member_count.po | 81 - .../api/methods/get_chat_members_count.po | 72 - .../api/methods/get_chat_menu_button.po | 77 - .../api/methods/get_custom_emoji_stickers.po | 75 - .../en/LC_MESSAGES/api/methods/get_file.po | 77 - .../methods/get_forum_topic_icon_stickers.po | 67 - .../api/methods/get_game_high_scores.po | 100 - .../en/LC_MESSAGES/api/methods/get_me.po | 65 - .../api/methods/get_my_commands.po | 77 - .../get_my_default_administrator_rights.po | 79 - .../api/methods/get_my_description.po | 70 - .../en/LC_MESSAGES/api/methods/get_my_name.po | 68 - .../api/methods/get_my_short_description.po | 74 - .../api/methods/get_sticker_set.po | 68 - .../en/LC_MESSAGES/api/methods/get_updates.po | 133 - .../api/methods/get_user_profile_photos.po | 93 - .../api/methods/get_webhook_info.po | 67 - .../api/methods/hide_general_forum_topic.po | 79 - .../en/LC_MESSAGES/api/methods/index.po | 58 - .../api/methods/kick_chat_member.po | 108 - .../en/LC_MESSAGES/api/methods/leave_chat.po | 82 - .../en/LC_MESSAGES/api/methods/log_out.po | 72 - .../api/methods/pin_chat_message.po | 105 - .../api/methods/promote_chat_member.po | 182 - .../api/methods/reopen_forum_topic.po | 82 - .../api/methods/reopen_general_forum_topic.po | 81 - .../api/methods/restrict_chat_member.po | 118 - .../api/methods/revoke_chat_invite_link.po | 94 - .../LC_MESSAGES/api/methods/send_animation.po | 214 -- .../en/LC_MESSAGES/api/methods/send_audio.po | 201 -- .../api/methods/send_chat_action.po | 122 - .../LC_MESSAGES/api/methods/send_contact.po | 167 - .../en/LC_MESSAGES/api/methods/send_dice.po | 154 - .../LC_MESSAGES/api/methods/send_document.po | 199 -- .../en/LC_MESSAGES/api/methods/send_game.po | 147 - .../LC_MESSAGES/api/methods/send_invoice.po | 277 -- .../LC_MESSAGES/api/methods/send_location.po | 183 - .../api/methods/send_media_group.po | 139 - .../LC_MESSAGES/api/methods/send_message.po | 171 - .../en/LC_MESSAGES/api/methods/send_photo.po | 183 - .../en/LC_MESSAGES/api/methods/send_poll.po | 216 -- .../LC_MESSAGES/api/methods/send_sticker.po | 178 - .../en/LC_MESSAGES/api/methods/send_venue.po | 184 - .../en/LC_MESSAGES/api/methods/send_video.po | 213 -- .../api/methods/send_video_note.po | 182 - .../en/LC_MESSAGES/api/methods/send_voice.po | 183 - .../set_chat_administrator_custom_title.po | 102 - .../api/methods/set_chat_description.po | 92 - .../api/methods/set_chat_menu_button.po | 82 - .../api/methods/set_chat_permissions.po | 105 - .../LC_MESSAGES/api/methods/set_chat_photo.po | 84 - .../api/methods/set_chat_sticker_set.po | 92 - .../LC_MESSAGES/api/methods/set_chat_title.po | 91 - .../set_custom_emoji_sticker_set_thumbnail.po | 90 - .../LC_MESSAGES/api/methods/set_game_score.po | 112 - .../api/methods/set_my_commands.po | 100 - .../set_my_default_administrator_rights.po | 102 - .../api/methods/set_my_description.po | 83 - .../en/LC_MESSAGES/api/methods/set_my_name.po | 78 - .../api/methods/set_my_short_description.po | 88 - .../api/methods/set_passport_data_errors.po | 87 - .../api/methods/set_sticker_emoji_list.po | 81 - .../api/methods/set_sticker_keywords.po | 83 - .../api/methods/set_sticker_mask_position.po | 86 - .../methods/set_sticker_position_in_set.po | 90 - .../api/methods/set_sticker_set_thumb.po | 114 - .../api/methods/set_sticker_set_thumbnail.po | 108 - .../api/methods/set_sticker_set_title.po | 80 - .../en/LC_MESSAGES/api/methods/set_webhook.po | 152 - .../api/methods/stop_message_live_location.po | 123 - .../en/LC_MESSAGES/api/methods/stop_poll.po | 91 - .../api/methods/unban_chat_member.po | 99 - .../api/methods/unban_chat_sender_chat.po | 93 - .../api/methods/unhide_general_forum_topic.po | 80 - .../api/methods/unpin_all_chat_messages.po | 88 - .../methods/unpin_all_forum_topic_messages.po | 88 - .../unpin_all_general_forum_topic_messages.po | 94 - .../api/methods/unpin_chat_message.po | 101 - .../api/methods/upload_sticker_file.po | 105 - .../en/LC_MESSAGES/api/session/aiohttp.po | 97 - .../locale/en/LC_MESSAGES/api/session/base.po | 81 - .../LC_MESSAGES/api/session/custom_server.po | 96 - .../en/LC_MESSAGES/api/session/index.po | 26 - .../en/LC_MESSAGES/api/session/middleware.po | 87 - .../en/LC_MESSAGES/api/types/animation.po | 74 - docs/locale/en/LC_MESSAGES/api/types/audio.po | 74 - .../en/LC_MESSAGES/api/types/bot_command.po | 40 - .../api/types/bot_command_scope.po | 60 - ...t_command_scope_all_chat_administrators.po | 43 - .../bot_command_scope_all_group_chats.po | 41 - .../bot_command_scope_all_private_chats.po | 41 - .../api/types/bot_command_scope_chat.po | 45 - .../bot_command_scope_chat_administrators.po | 51 - .../types/bot_command_scope_chat_member.po | 53 - .../api/types/bot_command_scope_default.po | 40 - .../LC_MESSAGES/api/types/bot_description.po | 35 - .../en/LC_MESSAGES/api/types/bot_name.po | 34 - .../api/types/bot_short_description.po | 36 - .../en/LC_MESSAGES/api/types/callback_game.po | 32 - .../LC_MESSAGES/api/types/callback_query.po | 191 - docs/locale/en/LC_MESSAGES/api/types/chat.po | 1326 ------- .../api/types/chat_administrator_rights.po | 130 - .../LC_MESSAGES/api/types/chat_invite_link.po | 82 - .../api/types/chat_join_request.po | 1618 --------- .../en/LC_MESSAGES/api/types/chat_location.po | 40 - .../en/LC_MESSAGES/api/types/chat_member.po | 223 -- .../api/types/chat_member_administrator.po | 157 - .../api/types/chat_member_banned.po | 49 - .../LC_MESSAGES/api/types/chat_member_left.po | 41 - .../api/types/chat_member_member.po | 42 - .../api/types/chat_member_owner.po | 51 - .../api/types/chat_member_restricted.po | 161 - .../api/types/chat_member_updated.po | 1232 ------- .../LC_MESSAGES/api/types/chat_permissions.po | 150 - .../en/LC_MESSAGES/api/types/chat_photo.po | 56 - .../en/LC_MESSAGES/api/types/chat_shared.po | 49 - .../api/types/chosen_inline_result.po | 69 - .../en/LC_MESSAGES/api/types/contact.po | 57 - docs/locale/en/LC_MESSAGES/api/types/dice.po | 40 - .../en/LC_MESSAGES/api/types/document.po | 64 - .../api/types/encrypted_credentials.po | 56 - .../api/types/encrypted_passport_element.po | 126 - .../en/LC_MESSAGES/api/types/error_event.po | 40 - docs/locale/en/LC_MESSAGES/api/types/file.po | 65 - .../en/LC_MESSAGES/api/types/force_reply.po | 98 - .../en/LC_MESSAGES/api/types/forum_topic.po | 47 - .../api/types/forum_topic_closed.po | 32 - .../api/types/forum_topic_created.po | 48 - .../api/types/forum_topic_edited.po | 41 - .../api/types/forum_topic_reopened.po | 32 - docs/locale/en/LC_MESSAGES/api/types/game.po | 66 - .../LC_MESSAGES/api/types/game_high_score.po | 51 - .../api/types/general_forum_topic_hidden.po | 32 - .../api/types/general_forum_topic_unhidden.po | 32 - docs/locale/en/LC_MESSAGES/api/types/index.po | 60 - .../api/types/inline_keyboard_button.po | 115 - .../api/types/inline_keyboard_markup.po | 56 - .../en/LC_MESSAGES/api/types/inline_query.po | 155 - .../api/types/inline_query_result.po | 118 - .../api/types/inline_query_result_article.po | 104 - .../api/types/inline_query_result_audio.po | 111 - .../types/inline_query_result_cached_audio.po | 99 - .../inline_query_result_cached_document.po | 114 - .../types/inline_query_result_cached_gif.po | 104 - .../inline_query_result_cached_mpeg4_gif.po | 109 - .../types/inline_query_result_cached_photo.po | 112 - .../inline_query_result_cached_sticker.po | 78 - .../types/inline_query_result_cached_video.po | 112 - .../types/inline_query_result_cached_voice.po | 106 - .../api/types/inline_query_result_contact.po | 110 - .../api/types/inline_query_result_document.po | 128 - .../api/types/inline_query_result_game.po | 65 - .../api/types/inline_query_result_gif.po | 127 - .../api/types/inline_query_result_location.po | 136 - .../types/inline_query_result_mpeg4_gif.po | 140 - .../api/types/inline_query_result_photo.po | 126 - .../api/types/inline_query_result_venue.po | 134 - .../api/types/inline_query_result_video.po | 145 - .../api/types/inline_query_result_voice.po | 108 - .../api/types/inline_query_results_button.po | 59 - .../types/input_contact_message_content.po | 59 - .../en/LC_MESSAGES/api/types/input_file.po | 63 - .../types/input_invoice_message_content.po | 192 - .../types/input_location_message_content.po | 80 - .../en/LC_MESSAGES/api/types/input_media.po | 52 - .../api/types/input_media_animation.po | 106 - .../api/types/input_media_audio.po | 91 - .../api/types/input_media_document.po | 90 - .../api/types/input_media_photo.po | 71 - .../api/types/input_media_video.po | 104 - .../api/types/input_message_content.po | 53 - .../en/LC_MESSAGES/api/types/input_sticker.po | 72 - .../api/types/input_text_message_content.po | 62 - .../api/types/input_venue_message_content.po | 86 - .../en/LC_MESSAGES/api/types/invoice.po | 60 - .../LC_MESSAGES/api/types/keyboard_button.po | 124 - .../api/types/keyboard_button_poll_type.po | 41 - .../api/types/keyboard_button_request_chat.po | 113 - .../api/types/keyboard_button_request_user.po | 69 - .../en/LC_MESSAGES/api/types/labeled_price.po | 46 - .../en/LC_MESSAGES/api/types/location.po | 62 - .../en/LC_MESSAGES/api/types/login_url.po | 72 - .../en/LC_MESSAGES/api/types/mask_position.po | 56 - .../en/LC_MESSAGES/api/types/menu_button.po | 72 - .../api/types/menu_button_commands.po | 35 - .../api/types/menu_button_default.po | 35 - .../api/types/menu_button_web_app.po | 49 - .../en/LC_MESSAGES/api/types/message.po | 2591 -------------- .../message_auto_delete_timer_changed.po | 40 - .../LC_MESSAGES/api/types/message_entity.po | 87 - .../en/LC_MESSAGES/api/types/message_id.po | 34 - .../en/LC_MESSAGES/api/types/order_info.po | 46 - .../en/LC_MESSAGES/api/types/passport_data.po | 40 - .../api/types/passport_element_error.po | 68 - .../passport_element_error_data_field.po | 67 - .../api/types/passport_element_error_file.po | 58 - .../api/types/passport_element_error_files.po | 59 - .../passport_element_error_front_side.po | 61 - .../passport_element_error_reverse_side.po | 61 - .../types/passport_element_error_selfie.po | 58 - ...passport_element_error_translation_file.po | 64 - ...assport_element_error_translation_files.po | 64 - .../passport_element_error_unspecified.po | 58 - .../en/LC_MESSAGES/api/types/passport_file.po | 51 - .../en/LC_MESSAGES/api/types/photo_size.po | 55 - docs/locale/en/LC_MESSAGES/api/types/poll.po | 93 - .../en/LC_MESSAGES/api/types/poll_answer.po | 61 - .../en/LC_MESSAGES/api/types/poll_option.po | 38 - .../api/types/pre_checkout_query.po | 128 - .../api/types/proximity_alert_triggered.po | 49 - .../api/types/reply_keyboard_markup.po | 96 - .../api/types/reply_keyboard_remove.po | 55 - .../api/types/response_parameters.po | 48 - .../api/types/sent_web_app_message.po | 41 - .../LC_MESSAGES/api/types/shipping_address.po | 58 - .../LC_MESSAGES/api/types/shipping_option.po | 42 - .../LC_MESSAGES/api/types/shipping_query.po | 107 - .../en/LC_MESSAGES/api/types/sticker.po | 173 - .../en/LC_MESSAGES/api/types/sticker_set.po | 64 - docs/locale/en/LC_MESSAGES/api/types/story.po | 32 - .../api/types/successful_payment.po | 75 - .../types/switch_inline_query_chosen_chat.po | 66 - .../locale/en/LC_MESSAGES/api/types/update.po | 148 - docs/locale/en/LC_MESSAGES/api/types/user.po | 157 - .../api/types/user_profile_photos.po | 40 - .../en/LC_MESSAGES/api/types/user_shared.po | 49 - docs/locale/en/LC_MESSAGES/api/types/venue.po | 63 - docs/locale/en/LC_MESSAGES/api/types/video.po | 72 - .../LC_MESSAGES/api/types/video_chat_ended.po | 36 - .../types/video_chat_participants_invited.po | 40 - .../api/types/video_chat_scheduled.po | 39 - .../api/types/video_chat_started.po | 32 - .../en/LC_MESSAGES/api/types/video_note.po | 61 - docs/locale/en/LC_MESSAGES/api/types/voice.po | 56 - .../en/LC_MESSAGES/api/types/web_app_data.po | 44 - .../en/LC_MESSAGES/api/types/web_app_info.po | 37 - .../en/LC_MESSAGES/api/types/webhook_info.po | 82 - .../api/types/write_access_allowed.po | 46 - docs/locale/en/LC_MESSAGES/api/upload_file.po | 195 - docs/locale/en/LC_MESSAGES/changelog.po | 3159 ----------------- docs/locale/en/LC_MESSAGES/contributing.po | 358 -- .../locale/en/LC_MESSAGES/deployment/index.po | 22 - .../dispatcher/class_based_handlers/base.po | 56 - .../class_based_handlers/callback_query.po | 42 - .../class_based_handlers/chat_member.po | 44 - .../chosen_inline_result.po | 48 - .../dispatcher/class_based_handlers/error.po | 50 - .../dispatcher/class_based_handlers/index.po | 42 - .../class_based_handlers/inline_query.po | 48 - .../class_based_handlers/message.po | 48 - .../dispatcher/class_based_handlers/poll.po | 48 - .../pre_checkout_query.po | 44 - .../class_based_handlers/shipping_query.po | 44 - .../dispatcher/dependency_injection.po | 96 - .../en/LC_MESSAGES/dispatcher/dispatcher.po | 184 - .../en/LC_MESSAGES/dispatcher/errors.po | 159 - .../dispatcher/filters/callback_data.po | 160 - .../dispatcher/filters/chat_member_updated.po | 228 -- .../LC_MESSAGES/dispatcher/filters/command.po | 156 - .../dispatcher/filters/exception.po | 46 - .../LC_MESSAGES/dispatcher/filters/index.po | 178 - .../dispatcher/filters/magic_data.po | 122 - .../dispatcher/filters/magic_filters.po | 175 - .../en/LC_MESSAGES/dispatcher/filters/text.po | 130 - .../dispatcher/finite_state_machine/index.po | 130 - .../finite_state_machine/storages.po | 225 -- .../locale/en/LC_MESSAGES/dispatcher/flags.po | 129 - .../locale/en/LC_MESSAGES/dispatcher/index.po | 76 - .../en/LC_MESSAGES/dispatcher/long_polling.po | 62 - .../en/LC_MESSAGES/dispatcher/middlewares.po | 181 - .../en/LC_MESSAGES/dispatcher/observer.po | 109 - .../en/LC_MESSAGES/dispatcher/router.po | 270 -- .../en/LC_MESSAGES/dispatcher/webhook.po | 303 -- docs/locale/en/LC_MESSAGES/index.po | 249 -- docs/locale/en/LC_MESSAGES/install.po | 44 - .../locale/en/LC_MESSAGES/migration_2_to_3.po | 305 -- .../en/LC_MESSAGES/utils/callback_answer.po | 204 -- .../en/LC_MESSAGES/utils/chat_action.po | 149 - .../locale/en/LC_MESSAGES/utils/formatting.po | 449 --- docs/locale/en/LC_MESSAGES/utils/i18n.po | 339 -- docs/locale/en/LC_MESSAGES/utils/index.po | 22 - docs/locale/en/LC_MESSAGES/utils/keyboard.po | 178 - docs/locale/en/LC_MESSAGES/utils/web_app.po | 228 -- .../api/methods/ban_chat_member.po | 26 +- .../api/methods/restrict_chat_member.po | 34 +- .../uk_UA/LC_MESSAGES/api/types/chat.po | 34 +- .../api/types/chat_administrator_rights.po | 53 +- .../api/types/chat_member_administrator.po | 53 +- .../api/types/chat_member_banned.po | 12 +- .../api/types/chat_member_restricted.po | 12 +- .../api/types/inline_query_results_button.po | 16 +- .../uk_UA/LC_MESSAGES/api/types/message.po | 15 +- .../LC_MESSAGES/api/types/web_app_info.po | 14 +- .../api/types/write_access_allowed.po | 39 +- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 813 ++--- .../class_based_handlers/message.po | 17 +- docs/locale/uk_UA/LC_MESSAGES/index.po | 4 +- .../uk_UA/LC_MESSAGES/migration_2_to_3.po | 419 ++- 362 files changed, 895 insertions(+), 42773 deletions(-) delete mode 100644 docs/locale/en/LC_MESSAGES/api/bot.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/download_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/bot_command_scope_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/chat_action.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/chat_member_status.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/chat_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/content_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/currency.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/dice_emoji.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/inline_query_result_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/input_media_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/mask_position_point.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/menu_button_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/message_entity_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/parse_mode.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/poll_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/sticker_format.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/sticker_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/topic_icon_color.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/enums/update_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/add_sticker_to_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/answer_callback_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/answer_web_app_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/approve_chat_join_request.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/ban_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/ban_chat_sender_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/close.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/close_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/close_general_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/copy_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/create_chat_invite_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/create_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/create_invoice_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/create_new_sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/decline_chat_join_request.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_chat_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_chat_sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_my_commands.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_from_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/delete_webhook.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_chat_invite_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_general_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_message_caption.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_message_live_location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_message_media.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/edit_message_text.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/export_chat_invite_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/forward_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat_administrators.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat_member_count.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat_members_count.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_chat_menu_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_custom_emoji_stickers.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_forum_topic_icon_stickers.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_game_high_scores.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_me.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_commands.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_default_administrator_rights.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_my_short_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_updates.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_user_profile_photos.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/get_webhook_info.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/hide_general_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/kick_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/leave_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/log_out.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/pin_chat_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/promote_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/reopen_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/reopen_general_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/restrict_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/revoke_chat_invite_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_animation.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_audio.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_chat_action.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_contact.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_dice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_document.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_game.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_invoice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_poll.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_venue.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_video.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/send_voice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_administrator_custom_title.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_menu_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_permissions.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_chat_title.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_custom_emoji_sticker_set_thumbnail.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_game_score.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_commands.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_default_administrator_rights.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_my_short_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_passport_data_errors.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_emoji_list.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_keywords.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_mask_position.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_position_in_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumb.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumbnail.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_title.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/set_webhook.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/stop_message_live_location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/stop_poll.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unban_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unban_chat_sender_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unhide_general_forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unpin_all_chat_messages.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unpin_all_forum_topic_messages.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/unpin_chat_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/methods/upload_sticker_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/session/aiohttp.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/session/base.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/session/custom_server.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/session/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/session/middleware.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/animation.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/audio.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_chat_administrators.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_group_chats.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_private_chats.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_administrators.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_default.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_name.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/bot_short_description.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/callback_game.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/callback_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_administrator_rights.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_invite_link.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_administrator.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_banned.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_left.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_owner.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_restricted.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_permissions.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chat_shared.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/chosen_inline_result.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/contact.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/dice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/document.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/encrypted_credentials.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/encrypted_passport_element.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/error_event.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/force_reply.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/forum_topic.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/forum_topic_closed.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/forum_topic_created.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/forum_topic_edited.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/forum_topic_reopened.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/game.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/game_high_score.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_hidden.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_unhidden.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_markup.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_article.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_audio.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_audio.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_document.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_gif.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_mpeg4_gif.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_sticker.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_video.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_voice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_contact.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_document.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_game.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_gif.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_mpeg4_gif.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_venue.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_video.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_result_voice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_contact_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_invoice_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_location_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media_animation.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media_audio.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media_document.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media_photo.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_media_video.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_sticker.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_text_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/input_venue_message_content.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/invoice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/keyboard_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/keyboard_button_poll_type.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/labeled_price.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/location.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/login_url.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/mask_position.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/menu_button.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/menu_button_commands.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/menu_button_default.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/menu_button_web_app.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/message_auto_delete_timer_changed.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/message_entity.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/message_id.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/order_info.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_data.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_data_field.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_files.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_front_side.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_reverse_side.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_selfie.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_files.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_element_error_unspecified.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/passport_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/photo_size.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/poll.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/poll_answer.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/poll_option.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/proximity_alert_triggered.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_markup.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_remove.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/response_parameters.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/sent_web_app_message.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/shipping_address.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/shipping_option.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/shipping_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/sticker.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/sticker_set.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/story.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/successful_payment.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/update.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/user.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/user_profile_photos.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/user_shared.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/venue.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video_chat_ended.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video_chat_participants_invited.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video_chat_scheduled.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video_chat_started.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/video_note.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/voice.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/web_app_data.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/web_app_info.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/webhook_info.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po delete mode 100644 docs/locale/en/LC_MESSAGES/api/upload_file.po delete mode 100644 docs/locale/en/LC_MESSAGES/changelog.po delete mode 100644 docs/locale/en/LC_MESSAGES/contributing.po delete mode 100644 docs/locale/en/LC_MESSAGES/deployment/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/base.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/callback_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chat_member.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chosen_inline_result.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/error.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/inline_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/message.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/poll.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/pre_checkout_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/shipping_query.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/errors.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/callback_data.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/command.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/exception.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_filters.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/filters/text.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/flags.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/middlewares.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/observer.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/router.po delete mode 100644 docs/locale/en/LC_MESSAGES/dispatcher/webhook.po delete mode 100644 docs/locale/en/LC_MESSAGES/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/install.po delete mode 100644 docs/locale/en/LC_MESSAGES/migration_2_to_3.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/callback_answer.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/chat_action.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/formatting.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/i18n.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/index.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/keyboard.po delete mode 100644 docs/locale/en/LC_MESSAGES/utils/web_app.po diff --git a/Makefile b/Makefile index f1557451..327f94df 100644 --- a/Makefile +++ b/Makefile @@ -67,7 +67,7 @@ test-coverage-view: # Docs # ================================================================================================= -locales := en uk_UA +locales := uk_UA locale_targets := $(addprefix docs-serve-, $(locales)) locales_pot := _build/gettext docs_dir := docs @@ -78,8 +78,7 @@ docs-gettext: .PHONY: docs-gettext docs-serve: - #rm -rf docs/_build - sphinx-autobuild --watch aiogram/ --watch CHANGELOG.rst --watch README.rst docs/ docs/_build/ $(OPTS) + hatch run docs:sphinx-autobuild --watch aiogram/ --watch CHANGELOG.rst --watch README.rst docs/ docs/_build/ $(OPTS) .PHONY: docs-serve $(locale_targets): docs-serve-%: diff --git a/docs/locale/en/LC_MESSAGES/api/bot.po b/docs/locale/en/LC_MESSAGES/api/bot.po deleted file mode 100644 index d14cbae4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/bot.po +++ /dev/null @@ -1,167 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/bot.rst:3 -msgid "Bot" -msgstr "" - -#: ../../api/bot.rst:5 -msgid "" -"Bot instance can be created from :code:`aiogram.Bot` (:code:`from aiogram" -" import Bot`) and you can't use methods without instance of bot with " -"configured token." -msgstr "" - -#: ../../api/bot.rst:8 -msgid "" -"This class has aliases for all methods and named in " -":code:`lower_camel_case`." -msgstr "" - -#: ../../api/bot.rst:10 -msgid "" -"For example :code:`sendMessage` named :code:`send_message` and has the " -"same specification with all class-based methods." -msgstr "" - -#: ../../api/bot.rst:14 -msgid "" -"A full list of methods can be found in the appropriate section of the " -"documentation" -msgstr "" - -#: aiogram.client.bot.Bot:1 of -msgid "Bases: :py:class:`object`" -msgstr "" - -#: aiogram.client.bot.Bot.__init__:1 of -msgid "Bot class" -msgstr "" - -#: aiogram.client.bot.Bot.__init__ aiogram.client.bot.Bot.context -#: aiogram.client.bot.Bot.download aiogram.client.bot.Bot.download_file of -msgid "Parameters" -msgstr "" - -#: aiogram.client.bot.Bot.__init__:3 of -msgid "Telegram Bot token `Obtained from @BotFather `_" -msgstr "" - -#: aiogram.client.bot.Bot.__init__:4 of -msgid "" -"HTTP Client session (For example AiohttpSession). If not specified it " -"will be automatically created." -msgstr "" - -#: aiogram.client.bot.Bot.__init__:6 of -msgid "" -"Default parse mode. If specified it will be propagated into the API " -"methods at runtime." -msgstr "" - -#: aiogram.client.bot.Bot.__init__:8 of -msgid "" -"Default disable_web_page_preview mode. If specified it will be propagated" -" into the API methods at runtime." -msgstr "" - -#: aiogram.client.bot.Bot.__init__:10 of -msgid "" -"Default protect_content mode. If specified it will be propagated into the" -" API methods at runtime." -msgstr "" - -#: aiogram.client.bot.Bot.__init__ of -msgid "Raises" -msgstr "" - -#: aiogram.client.bot.Bot.__init__:12 of -msgid "When token has invalid format this exception will be raised" -msgstr "" - -#: aiogram.client.bot.Bot.id:1 of -msgid "Get bot ID from token" -msgstr "" - -#: aiogram.client.bot.Bot.context aiogram.client.bot.Bot.id -#: aiogram.client.bot.Bot.me of -msgid "Returns" -msgstr "" - -#: aiogram.client.bot.Bot.context:1 of -msgid "Generate bot context" -msgstr "" - -#: aiogram.client.bot.Bot.context:3 of -msgid "close session on exit" -msgstr "" - -#: aiogram.client.bot.Bot.me:1 of -msgid "Cached alias for getMe method" -msgstr "" - -#: aiogram.client.bot.Bot.download_file:1 of -msgid "Download file by file_path to destination." -msgstr "" - -#: aiogram.client.bot.Bot.download:3 aiogram.client.bot.Bot.download_file:3 of -msgid "" -"If you want to automatically create destination (:class:`io.BytesIO`) use" -" default value of destination and handle result of this method." -msgstr "" - -#: aiogram.client.bot.Bot.download_file:6 of -msgid "" -"File path on Telegram server (You can get it from " -":obj:`aiogram.types.File`)" -msgstr "" - -#: aiogram.client.bot.Bot.download:7 aiogram.client.bot.Bot.download_file:7 of -msgid "" -"Filename, file path or instance of :class:`io.IOBase`. For e.g. " -":class:`io.BytesIO`, defaults to None" -msgstr "" - -#: aiogram.client.bot.Bot.download:8 aiogram.client.bot.Bot.download_file:8 of -msgid "Total timeout in seconds, defaults to 30" -msgstr "" - -#: aiogram.client.bot.Bot.download:9 aiogram.client.bot.Bot.download_file:9 of -msgid "File chunks size, defaults to 64 kb" -msgstr "" - -#: aiogram.client.bot.Bot.download:10 aiogram.client.bot.Bot.download_file:10 -#: of -msgid "" -"Go to start of file when downloading is finished. Used only for " -"destination with :class:`typing.BinaryIO` type, defaults to True" -msgstr "" - -#: aiogram.client.bot.Bot.download:1 of -msgid "Download file by file_id or Downloadable object to destination." -msgstr "" - -#: aiogram.client.bot.Bot.download:6 of -msgid "file_id or Downloadable object" -msgstr "" - -#~ msgid "" -#~ "Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\" -#~ " [:py:class:`Bot`]" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/download_file.po b/docs/locale/en/LC_MESSAGES/api/download_file.po deleted file mode 100644 index bcd3ec0f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/download_file.po +++ /dev/null @@ -1,187 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/download_file.rst:3 -msgid "How to download file?" -msgstr "" - -#: ../../api/download_file.rst:6 -msgid "Download file manually" -msgstr "" - -#: ../../api/download_file.rst:8 -msgid "" -"First, you must get the `file_id` of the file you want to download. " -"Information about files sent to the bot is contained in `Message " -"`__." -msgstr "" - -#: ../../api/download_file.rst:11 -msgid "For example, download the document that came to the bot." -msgstr "" - -#: ../../api/download_file.rst:17 -msgid "" -"Then use the `getFile `__ method to get " -"`file_path`." -msgstr "" - -#: ../../api/download_file.rst:24 -msgid "" -"After that, use the `download_file <#download-file>`__ method from the " -"bot object." -msgstr "" - -#: ../../api/download_file.rst:27 -msgid "download_file(...)" -msgstr "" - -#: ../../api/download_file.rst:29 -msgid "Download file by `file_path` to destination." -msgstr "" - -#: ../../api/download_file.rst:31 ../../api/download_file.rst:81 -msgid "" -"If you want to automatically create destination (:obj:`io.BytesIO`) use " -"default value of destination and handle result of this method." -msgstr "" - -#: aiogram.client.bot.Bot.download_file:1 of -msgid "Download file by file_path to destination." -msgstr "" - -#: aiogram.client.bot.Bot.download:3 aiogram.client.bot.Bot.download_file:3 of -msgid "" -"If you want to automatically create destination (:class:`io.BytesIO`) use" -" default value of destination and handle result of this method." -msgstr "" - -#: aiogram.client.bot.Bot.download aiogram.client.bot.Bot.download_file of -msgid "Parameters" -msgstr "" - -#: aiogram.client.bot.Bot.download_file:6 of -msgid "" -"File path on Telegram server (You can get it from " -":obj:`aiogram.types.File`)" -msgstr "" - -#: aiogram.client.bot.Bot.download:7 aiogram.client.bot.Bot.download_file:7 of -msgid "" -"Filename, file path or instance of :class:`io.IOBase`. For e.g. " -":class:`io.BytesIO`, defaults to None" -msgstr "" - -#: aiogram.client.bot.Bot.download:8 aiogram.client.bot.Bot.download_file:8 of -msgid "Total timeout in seconds, defaults to 30" -msgstr "" - -#: aiogram.client.bot.Bot.download:9 aiogram.client.bot.Bot.download_file:9 of -msgid "File chunks size, defaults to 64 kb" -msgstr "" - -#: aiogram.client.bot.Bot.download:10 aiogram.client.bot.Bot.download_file:10 -#: of -msgid "" -"Go to start of file when downloading is finished. Used only for " -"destination with :class:`typing.BinaryIO` type, defaults to True" -msgstr "" - -#: ../../api/download_file.rst:38 -msgid "" -"There are two options where you can download the file: to **disk** or to " -"**binary I/O object**." -msgstr "" - -#: ../../api/download_file.rst:41 -msgid "Download file to disk" -msgstr "" - -#: ../../api/download_file.rst:43 -msgid "" -"To download file to disk, you must specify the file name or path where to" -" download the file. In this case, the function will return nothing." -msgstr "" - -#: ../../api/download_file.rst:51 -msgid "Download file to binary I/O object" -msgstr "" - -#: ../../api/download_file.rst:53 -msgid "" -"To download file to binary I/O object, you must specify an object with " -"the :obj:`typing.BinaryIO` type or use the default (:obj:`None`) value." -msgstr "" - -#: ../../api/download_file.rst:56 -msgid "In the first case, the function will return your object:" -msgstr "" - -#: ../../api/download_file.rst:64 -msgid "" -"If you leave the default value, an :obj:`io.BytesIO` object will be " -"created and returned." -msgstr "" - -#: ../../api/download_file.rst:72 -msgid "Download file in short way" -msgstr "" - -#: ../../api/download_file.rst:74 -msgid "" -"Getting `file_path` manually every time is boring, so you should use the " -"`download <#download>`__ method." -msgstr "" - -#: ../../api/download_file.rst:77 -msgid "download(...)" -msgstr "" - -#: ../../api/download_file.rst:79 -msgid "Download file by `file_id` or `Downloadable` object to destination." -msgstr "" - -#: aiogram.client.bot.Bot.download:1 of -msgid "Download file by file_id or Downloadable object to destination." -msgstr "" - -#: aiogram.client.bot.Bot.download:6 of -msgid "file_id or Downloadable object" -msgstr "" - -#: ../../api/download_file.rst:88 -msgid "" -"It differs from `download_file <#download-file>`__ **only** in that it " -"accepts `file_id` or an `Downloadable` object (object that contains the " -"`file_id` attribute) instead of `file_path`." -msgstr "" - -#: ../../api/download_file.rst:91 -msgid "" -"You can download a file to `disk <#download-file-to-disk>`__ or to a " -"`binary I/O <#download-file-to-binary-io-object>`__ object in the same " -"way." -msgstr "" - -#: ../../api/download_file.rst:93 -msgid "Example:" -msgstr "" - -#~ msgid "Bot class" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/bot_command_scope_type.po b/docs/locale/en/LC_MESSAGES/api/enums/bot_command_scope_type.po deleted file mode 100644 index 2d7153f4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/bot_command_scope_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/bot_command_scope_type.rst:3 -msgid "BotCommandScopeType" -msgstr "" - -#: aiogram.enums.bot_command_scope_type.BotCommandScopeType:1 of -msgid "This object represents the scope to which bot commands are applied." -msgstr "" - -#: aiogram.enums.bot_command_scope_type.BotCommandScopeType:3 of -msgid "Source: https://core.telegram.org/bots/api#botcommandscope" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/chat_action.po b/docs/locale/en/LC_MESSAGES/api/enums/chat_action.po deleted file mode 100644 index 0ba8fec1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/chat_action.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/chat_action.rst:3 -msgid "ChatAction" -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:1 of -msgid "This object represents bot actions." -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:3 of -msgid "Choose one, depending on what the user is about to receive:" -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:5 of -msgid "typing for text messages," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:6 of -msgid "upload_photo for photos," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:7 of -msgid "record_video or upload_video for videos," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:8 of -msgid "record_voice or upload_voice for voice notes," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:9 of -msgid "upload_document for general files," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:10 of -msgid "choose_sticker for stickers," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:11 of -msgid "find_location for location data," -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:12 of -msgid "record_video_note or upload_video_note for video notes." -msgstr "" - -#: aiogram.enums.chat_action.ChatAction:14 of -msgid "Source: https://core.telegram.org/bots/api#sendchataction" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/chat_member_status.po b/docs/locale/en/LC_MESSAGES/api/enums/chat_member_status.po deleted file mode 100644 index d5455e57..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/chat_member_status.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/chat_member_status.rst:3 -msgid "ChatMemberStatus" -msgstr "" - -#: aiogram.enums.chat_member_status.ChatMemberStatus:1 of -msgid "This object represents chat member status." -msgstr "" - -#: aiogram.enums.chat_member_status.ChatMemberStatus:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmember" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/chat_type.po b/docs/locale/en/LC_MESSAGES/api/enums/chat_type.po deleted file mode 100644 index daa15092..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/chat_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/chat_type.rst:3 -msgid "ChatType" -msgstr "" - -#: aiogram.enums.chat_type.ChatType:1 of -msgid "This object represents a chat type" -msgstr "" - -#: aiogram.enums.chat_type.ChatType:3 of -msgid "Source: https://core.telegram.org/bots/api#chat" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/content_type.po b/docs/locale/en/LC_MESSAGES/api/enums/content_type.po deleted file mode 100644 index b8d27ec9..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/content_type.po +++ /dev/null @@ -1,26 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/content_type.rst:3 -msgid "ContentType" -msgstr "" - -#: aiogram.enums.content_type.ContentType:1 of -msgid "This object represents a type of content in message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/currency.po b/docs/locale/en/LC_MESSAGES/api/enums/currency.po deleted file mode 100644 index b7a6d732..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/currency.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/enums/currency.rst:3 -msgid "Currency" -msgstr "" - -#: aiogram.enums.currency.Currency:1 of -msgid "Currencies supported by Telegram Bot API" -msgstr "" - -#: aiogram.enums.currency.Currency:3 of -msgid "Source: https://core.telegram.org/bots/payments#supported-currencies" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/dice_emoji.po b/docs/locale/en/LC_MESSAGES/api/enums/dice_emoji.po deleted file mode 100644 index eacb9567..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/dice_emoji.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/dice_emoji.rst:3 -msgid "DiceEmoji" -msgstr "" - -#: aiogram.enums.dice_emoji.DiceEmoji:1 of -msgid "Emoji on which the dice throw animation is based" -msgstr "" - -#: aiogram.enums.dice_emoji.DiceEmoji:3 of -msgid "Source: https://core.telegram.org/bots/api#dice" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po b/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po deleted file mode 100644 index c9fd2760..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/encrypted_passport_element.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/enums/encrypted_passport_element.rst:3 -msgid "EncryptedPassportElement" -msgstr "" - -#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:1 of -msgid "This object represents type of encrypted passport element." -msgstr "" - -#: aiogram.enums.encrypted_passport_element.EncryptedPassportElement:3 of -msgid "Source: https://core.telegram.org/bots/api#encryptedpassportelement" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/index.po b/docs/locale/en/LC_MESSAGES/api/enums/index.po deleted file mode 100644 index ad64f7f1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/index.po +++ /dev/null @@ -1,29 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/index.rst:3 -msgid "Enums" -msgstr "" - -#: ../../api/enums/index.rst:5 -msgid "Here is list of all available enums:" -msgstr "" - -#~ msgid "Types" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/inline_query_result_type.po b/docs/locale/en/LC_MESSAGES/api/enums/inline_query_result_type.po deleted file mode 100644 index b5a7a240..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/inline_query_result_type.po +++ /dev/null @@ -1,36 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/enums/inline_query_result_type.rst:3 -msgid "InlineQueryResultType" -msgstr "" - -#: aiogram.enums.inline_query_result_type.InlineQueryResultType:1 of -msgid "Type of inline query result" -msgstr "" - -#: aiogram.enums.inline_query_result_type.InlineQueryResultType:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresult" -msgstr "" - -#~ msgid "The part of the face relative to which the mask should be placed." -#~ msgstr "" - -#~ msgid "Source: https://core.telegram.org/bots/api#maskposition" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/input_media_type.po b/docs/locale/en/LC_MESSAGES/api/enums/input_media_type.po deleted file mode 100644 index 2115e592..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/input_media_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/input_media_type.rst:3 -msgid "InputMediaType" -msgstr "" - -#: aiogram.enums.input_media_type.InputMediaType:1 of -msgid "This object represents input media type" -msgstr "" - -#: aiogram.enums.input_media_type.InputMediaType:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmedia" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/mask_position_point.po b/docs/locale/en/LC_MESSAGES/api/enums/mask_position_point.po deleted file mode 100644 index fde3a771..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/mask_position_point.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/mask_position_point.rst:3 -msgid "MaskPositionPoint" -msgstr "" - -#: aiogram.enums.mask_position_point.MaskPositionPoint:1 of -msgid "The part of the face relative to which the mask should be placed." -msgstr "" - -#: aiogram.enums.mask_position_point.MaskPositionPoint:3 of -msgid "Source: https://core.telegram.org/bots/api#maskposition" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/menu_button_type.po b/docs/locale/en/LC_MESSAGES/api/enums/menu_button_type.po deleted file mode 100644 index d7c0adc8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/menu_button_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/menu_button_type.rst:3 -msgid "MenuButtonType" -msgstr "" - -#: aiogram.enums.menu_button_type.MenuButtonType:1 of -msgid "This object represents an type of Menu button" -msgstr "" - -#: aiogram.enums.menu_button_type.MenuButtonType:3 of -msgid "Source: https://core.telegram.org/bots/api#menubuttondefault" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/message_entity_type.po b/docs/locale/en/LC_MESSAGES/api/enums/message_entity_type.po deleted file mode 100644 index 3704373b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/message_entity_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/message_entity_type.rst:3 -msgid "MessageEntityType" -msgstr "" - -#: aiogram.enums.message_entity_type.MessageEntityType:1 of -msgid "This object represents type of message entity" -msgstr "" - -#: aiogram.enums.message_entity_type.MessageEntityType:3 of -msgid "Source: https://core.telegram.org/bots/api#messageentity" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/parse_mode.po b/docs/locale/en/LC_MESSAGES/api/enums/parse_mode.po deleted file mode 100644 index cc565d5d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/parse_mode.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/parse_mode.rst:3 -msgid "ParseMode" -msgstr "" - -#: aiogram.enums.parse_mode.ParseMode:1 of -msgid "Formatting options" -msgstr "" - -#: aiogram.enums.parse_mode.ParseMode:3 of -msgid "Source: https://core.telegram.org/bots/api#formatting-options" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po b/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po deleted file mode 100644 index 285d6c8a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/passport_element_error_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/enums/passport_element_error_type.rst:3 -msgid "PassportElementErrorType" -msgstr "" - -#: aiogram.enums.passport_element_error_type.PassportElementErrorType:1 of -msgid "This object represents a passport element error type." -msgstr "" - -#: aiogram.enums.passport_element_error_type.PassportElementErrorType:3 of -msgid "Source: https://core.telegram.org/bots/api#passportelementerror" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/poll_type.po b/docs/locale/en/LC_MESSAGES/api/enums/poll_type.po deleted file mode 100644 index 42d2ab15..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/poll_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/poll_type.rst:3 -msgid "PollType" -msgstr "" - -#: aiogram.enums.poll_type.PollType:1 of -msgid "This object represents poll type" -msgstr "" - -#: aiogram.enums.poll_type.PollType:3 of -msgid "Source: https://core.telegram.org/bots/api#poll" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/sticker_format.po b/docs/locale/en/LC_MESSAGES/api/enums/sticker_format.po deleted file mode 100644 index 57a8b198..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/sticker_format.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/enums/sticker_format.rst:3 -msgid "StickerFormat" -msgstr "" - -#: aiogram.enums.sticker_format.StickerFormat:1 of -msgid "Format of the sticker" -msgstr "" - -#: aiogram.enums.sticker_format.StickerFormat:3 of -msgid "Source: https://core.telegram.org/bots/api#createnewstickerset" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/sticker_type.po b/docs/locale/en/LC_MESSAGES/api/enums/sticker_type.po deleted file mode 100644 index 41da8cbb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/sticker_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 23:19+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/sticker_type.rst:3 -msgid "StickerType" -msgstr "" - -#: aiogram.enums.sticker_type.StickerType:1 of -msgid "The part of the face relative to which the mask should be placed." -msgstr "" - -#: aiogram.enums.sticker_type.StickerType:3 of -msgid "Source: https://core.telegram.org/bots/api#maskposition" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/topic_icon_color.po b/docs/locale/en/LC_MESSAGES/api/enums/topic_icon_color.po deleted file mode 100644 index f1a6c288..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/topic_icon_color.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/topic_icon_color.rst:3 -msgid "TopicIconColor" -msgstr "" - -#: aiogram.enums.topic_icon_color.TopicIconColor:1 of -msgid "Color of the topic icon in RGB format." -msgstr "" - -#: aiogram.enums.topic_icon_color.TopicIconColor:3 of -msgid "" -"Source: " -"https://github.com/telegramdesktop/tdesktop/blob/991fe491c5ae62705d77aa8fdd44a79caf639c45/Telegram/SourceFiles/data/data_forum_topic.cpp#L51-L56" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/enums/update_type.po b/docs/locale/en/LC_MESSAGES/api/enums/update_type.po deleted file mode 100644 index 1a191276..00000000 --- a/docs/locale/en/LC_MESSAGES/api/enums/update_type.po +++ /dev/null @@ -1,30 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/enums/update_type.rst:3 -msgid "UpdateType" -msgstr "" - -#: aiogram.enums.update_type.UpdateType:1 of -msgid "This object represents the complete list of allowed update types" -msgstr "" - -#: aiogram.enums.update_type.UpdateType:3 of -msgid "Source: https://core.telegram.org/bots/api#update" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/index.po b/docs/locale/en/LC_MESSAGES/api/index.po deleted file mode 100644 index 25f384d5..00000000 --- a/docs/locale/en/LC_MESSAGES/api/index.po +++ /dev/null @@ -1,34 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/index.rst:3 -msgid "Bot API" -msgstr "" - -#: ../../api/index.rst:5 -msgid "" -"**aiogram** now is fully support of `Telegram Bot API " -"`_" -msgstr "" - -#: ../../api/index.rst:7 -msgid "" -"All methods and types is fully autogenerated from Telegram Bot API docs " -"by parser with code-generator." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/add_sticker_to_set.po b/docs/locale/en/LC_MESSAGES/api/methods/add_sticker_to_set.po deleted file mode 100644 index 483b44cd..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/add_sticker_to_set.po +++ /dev/null @@ -1,149 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/add_sticker_to_set.rst:3 -msgid "addStickerToSet" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.add_sticker_to_set.AddStickerToSet:1 of -msgid "" -"Use this method to add a new sticker to a set created by the bot. The " -"format of the added sticker must match the format of the other stickers " -"in the set. Emoji sticker sets can have up to 200 stickers. Animated and " -"video sticker sets can have up to 50 stickers. Static sticker sets can " -"have up to 120 stickers. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.add_sticker_to_set.AddStickerToSet:3 of -msgid "Source: https://core.telegram.org/bots/api#addstickertoset" -msgstr "" - -#: ../../docstring aiogram.methods.add_sticker_to_set.AddStickerToSet.user_id:1 -#: of -msgid "User identifier of sticker set owner" -msgstr "" - -#: ../../docstring aiogram.methods.add_sticker_to_set.AddStickerToSet.name:1 of -msgid "Sticker set name" -msgstr "" - -#: ../../docstring aiogram.methods.add_sticker_to_set.AddStickerToSet.sticker:1 -#: of -msgid "" -"A JSON-serialized object with information about the added sticker. If " -"exactly the same sticker had already been added to the set, then the set " -"isn't changed." -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:29 -msgid ":code:`from aiogram.methods.add_sticker_to_set import AddStickerToSet`" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:30 -msgid "alias: :code:`from aiogram.methods import AddStickerToSet`" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/add_sticker_to_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Use this method to add a new " -#~ "sticker to a set created by the" -#~ " bot. You **must** use exactly one" -#~ " of the fields *png_sticker*, " -#~ "*tgs_sticker*, or *webm_sticker*. Animated " -#~ "stickers can be added to animated " -#~ "sticker sets and only to them. " -#~ "Animated sticker sets can have up " -#~ "to 50 stickers. Static sticker sets " -#~ "can have up to 120 stickers. " -#~ "Returns :code:`True` on success." -#~ msgstr "" - -#~ msgid "One or more emoji corresponding to the sticker" -#~ msgstr "" - -#~ msgid "" -#~ "**PNG** image with the sticker, must " -#~ "be up to 512 kilobytes in size," -#~ " dimensions must not exceed 512px, " -#~ "and either width or height must be" -#~ " exactly 512px. Pass a *file_id* as" -#~ " a String to send a file that" -#~ " already exists on the Telegram " -#~ "servers, pass an HTTP URL as a " -#~ "String for Telegram to get a file" -#~ " from the Internet, or upload a " -#~ "new one using multipart/form-data. " -#~ ":ref:`More information on Sending Files " -#~ "» `" -#~ msgstr "" - -#~ msgid "" -#~ "**TGS** animation with the sticker, " -#~ "uploaded using multipart/form-data. See " -#~ "`https://core.telegram.org/stickers#animated-sticker-" -#~ "requirements `_`https://core.telegram.org/stickers" -#~ "#animated-sticker-requirements " -#~ "`_ for technical requirements" -#~ msgstr "" - -#~ msgid "" -#~ "**WEBM** video with the sticker, " -#~ "uploaded using multipart/form-data. See " -#~ "`https://core.telegram.org/stickers#video-sticker-" -#~ "requirements `_`https://core.telegram.org/stickers" -#~ "#video-sticker-requirements " -#~ "`_ for technical requirements" -#~ msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for position" -#~ " where the mask should be placed " -#~ "on faces" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_callback_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_callback_query.po deleted file mode 100644 index 2370aa3c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_callback_query.po +++ /dev/null @@ -1,141 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/answer_callback_query.rst:3 -msgid "answerCallbackQuery" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery:1 of -msgid "" -"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. On success, :code:`True` is returned." -msgstr "" - -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery:3 of -msgid "" -"Alternatively, the user can be redirected to the specified Game URL. For " -"this option to work, you must first create a game for your bot via " -"`@BotFather `_ and accept the terms. Otherwise, " -"you may use links like :code:`t.me/your_bot?start=XXXX` that open your " -"bot with a parameter." -msgstr "" - -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery:5 of -msgid "Source: https://core.telegram.org/bots/api#answercallbackquery" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery.callback_query_id:1 -#: of -msgid "Unique identifier for the query to be answered" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery.text:1 of -msgid "" -"Text of the notification. If not specified, nothing will be shown to the " -"user, 0-200 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery.show_alert:1 of -msgid "" -"If :code:`True`, an alert will be shown by the client instead of a " -"notification at the top of the chat screen. Defaults to *false*." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery.url:1 of -msgid "" -"URL that will be opened by the user's client. If you have created a " -":class:`aiogram.types.game.Game` and accepted the conditions via " -"`@BotFather `_, specify the URL that opens your " -"game - note that this will only work if the query comes from a " -"`https://core.telegram.org/bots/api#inlinekeyboardbutton " -"`_ " -"*callback_game* button." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_callback_query.AnswerCallbackQuery.cache_time:1 of -msgid "" -"The maximum amount of time in seconds that the result of the callback " -"query may be cached client-side. Telegram apps will support caching " -"starting in version 3.14. Defaults to 0." -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:29 -msgid "" -":code:`from aiogram.methods.answer_callback_query import " -"AnswerCallbackQuery`" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:30 -msgid "alias: :code:`from aiogram.methods import AnswerCallbackQuery`" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/answer_callback_query.rst:50 -msgid ":meth:`aiogram.types.callback_query.CallbackQuery.answer`" -msgstr "" - -#~ msgid "" -#~ "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. On success, :code:`True` " -#~ "is returned." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po deleted file mode 100644 index 329640c8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_inline_query.po +++ /dev/null @@ -1,164 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/answer_inline_query.rst:3 -msgid "answerInlineQuery" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.answer_inline_query.AnswerInlineQuery:1 of -msgid "" -"Use this method to send answers to an inline query. On success, " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.answer_inline_query.AnswerInlineQuery:3 of -msgid "No more than **50** results per query are allowed." -msgstr "" - -#: aiogram.methods.answer_inline_query.AnswerInlineQuery:5 of -msgid "Source: https://core.telegram.org/bots/api#answerinlinequery" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.inline_query_id:1 of -msgid "Unique identifier for the answered query" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.results:1 of -msgid "A JSON-serialized array of results for the inline query" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.cache_time:1 of -msgid "" -"The maximum amount of time in seconds that the result of the inline query" -" may be cached on the server. Defaults to 300." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.is_personal:1 of -msgid "" -"Pass :code:`True` if results may be cached on the server side only for " -"the user that sent the query. By default, results may be returned to any " -"user who sends the same query." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.next_offset:1 of -msgid "" -"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." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.button:1 of -msgid "" -"A JSON-serialized object describing a button to be shown above inline " -"query results" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_parameter:1 -#: of -msgid "" -"`Deep-linking `_ " -"parameter for the /start message sent to the bot when user presses the " -"switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " -":code:`0-9`, :code:`_` and :code:`-` are allowed." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_parameter:3 -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:3 of -msgid "https://core.telegram.org/bots/api-changelog#april-21-2023" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_inline_query.AnswerInlineQuery.switch_pm_text:1 of -msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:29 -msgid ":code:`from aiogram.methods.answer_inline_query import AnswerInlineQuery`" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:30 -msgid "alias: :code:`from aiogram.methods import AnswerInlineQuery`" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/answer_inline_query.rst:50 -msgid ":meth:`aiogram.types.inline_query.InlineQuery.answer`" -msgstr "" - -#~ msgid "" -#~ "`Deep-linking `_ parameter for the /start " -#~ "message sent to the bot when user" -#~ " presses the switch button. 1-64 " -#~ "characters, only :code:`A-Z`, :code:`a-z`, " -#~ ":code:`0-9`, :code:`_` and :code:`-` are " -#~ "allowed." -#~ msgstr "" - -#~ msgid "" -#~ "Pass :code:`True` if results may be " -#~ "cached on the server side only for" -#~ " the user that sent the query. " -#~ "By default, results may be returned " -#~ "to any user who sends the same " -#~ "query" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po deleted file mode 100644 index 0686720e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_pre_checkout_query.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/answer_pre_checkout_query.rst:3 -msgid "answerPreCheckoutQuery" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery:1 of -msgid "" -"Once the user has confirmed their payment and shipping details, the Bot " -"API sends the final confirmation in the form of an " -":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." -" Use this method to respond to such pre-checkout queries. On success, " -":code:`True` is returned. **Note:** The Bot API must receive an answer " -"within 10 seconds after the pre-checkout query was sent." -msgstr "" - -#: aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery.pre_checkout_query_id:1 -#: of -msgid "Unique identifier for the query to be answered" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery.ok:1 of -msgid "" -"Specify :code:`True` if everything is alright (goods are available, etc.)" -" and the bot is ready to proceed with the order. Use :code:`False` if " -"there are any problems." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery.error_message:1 -#: of -msgid "" -"Required if *ok* is :code:`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." -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:30 -msgid "" -":code:`from aiogram.methods.answer_pre_checkout_query import " -"AnswerPreCheckoutQuery`" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:31 -msgid "alias: :code:`from aiogram.methods import AnswerPreCheckoutQuery`" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/answer_pre_checkout_query.rst:51 -msgid ":meth:`aiogram.types.pre_checkout_query.PreCheckoutQuery.answer`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po deleted file mode 100644 index 418b9c67..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_shipping_query.po +++ /dev/null @@ -1,112 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/answer_shipping_query.rst:3 -msgid "answerShippingQuery" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery:1 of -msgid "" -"If you sent an invoice requesting a shipping address and the parameter " -"*is_flexible* was specified, the Bot API will send an " -":class:`aiogram.types.update.Update` with a *shipping_query* field to the" -" bot. Use this method to reply to shipping queries. On success, " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#answershippingquery" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery.shipping_query_id:1 -#: of -msgid "Unique identifier for the query to be answered" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery.ok:1 of -msgid "" -"Pass :code:`True` if delivery to the specified address is possible and " -":code:`False` if there are any problems (for example, if delivery to the " -"specified address is not possible)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery.shipping_options:1 -#: of -msgid "" -"Required if *ok* is :code:`True`. A JSON-serialized array of available " -"shipping options." -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_shipping_query.AnswerShippingQuery.error_message:1 of -msgid "" -"Required if *ok* is :code:`False`. Error message in human readable form " -"that explains why it is impossible to complete the order (e.g. \"Sorry, " -"delivery to your desired address is unavailable'). Telegram will display " -"this message to the user." -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:30 -msgid "" -":code:`from aiogram.methods.answer_shipping_query import " -"AnswerShippingQuery`" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:31 -msgid "alias: :code:`from aiogram.methods import AnswerShippingQuery`" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/answer_shipping_query.rst:51 -msgid ":meth:`aiogram.types.shipping_query.ShippingQuery.answer`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/answer_web_app_query.po b/docs/locale/en/LC_MESSAGES/api/methods/answer_web_app_query.po deleted file mode 100644 index 8fd685be..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/answer_web_app_query.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/answer_web_app_query.rst:3 -msgid "answerWebAppQuery" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:5 -msgid "Returns: :obj:`SentWebAppMessage`" -msgstr "" - -#: aiogram.methods.answer_web_app_query.AnswerWebAppQuery:1 of -msgid "" -"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. On success, a " -":class:`aiogram.types.sent_web_app_message.SentWebAppMessage` object is " -"returned." -msgstr "" - -#: aiogram.methods.answer_web_app_query.AnswerWebAppQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#answerwebappquery" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_web_app_query.AnswerWebAppQuery.web_app_query_id:1 of -msgid "Unique identifier for the query to be answered" -msgstr "" - -#: ../../docstring -#: aiogram.methods.answer_web_app_query.AnswerWebAppQuery.result:1 of -msgid "A JSON-serialized object describing the message to be sent" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:29 -msgid ":code:`from aiogram.methods.answer_web_app_query import AnswerWebAppQuery`" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:30 -msgid "alias: :code:`from aiogram.methods import AnswerWebAppQuery`" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/answer_web_app_query.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/approve_chat_join_request.po b/docs/locale/en/LC_MESSAGES/api/methods/approve_chat_join_request.po deleted file mode 100644 index 93504319..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/approve_chat_join_request.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/approve_chat_join_request.rst:3 -msgid "approveChatJoinRequest" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest:1 of -msgid "" -"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 " -"*can_invite_users* administrator right. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest:3 of -msgid "Source: https://core.telegram.org/bots/api#approvechatjoinrequest" -msgstr "" - -#: ../../docstring -#: aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest.user_id:1 -#: of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:29 -msgid "" -":code:`from aiogram.methods.approve_chat_join_request import " -"ApproveChatJoinRequest`" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:30 -msgid "alias: :code:`from aiogram.methods import ApproveChatJoinRequest`" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/approve_chat_join_request.rst:50 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.approve`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_member.po deleted file mode 100644 index 487b0d38..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_member.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/ban_chat_member.rst:3 -msgid "banChatMember" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.ban_chat_member.BanChatMember:1 of -msgid "" -"Use this method to ban a user in a group, a supergroup or a channel. In " -"the case of supergroups and channels, the user will not be able to return" -" to the chat on their own using invite links, etc., unless `unbanned " -"`_ first. The bot " -"must be an administrator in the chat for this to work and must have the " -"appropriate administrator rights. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.ban_chat_member.BanChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#banchatmember" -msgstr "" - -#: ../../docstring aiogram.methods.ban_chat_member.BanChatMember.chat_id:1 of -msgid "" -"Unique identifier for the target group or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.ban_chat_member.BanChatMember.user_id:1 of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring aiogram.methods.ban_chat_member.BanChatMember.until_date:1 -#: of -msgid "" -"Date when the user will be unbanned, unix time. If user is banned for " -"more than 366 days or less than 30 seconds from the current time they are" -" considered to be banned forever. Applied for supergroups and channels " -"only." -msgstr "" - -#: ../../docstring -#: aiogram.methods.ban_chat_member.BanChatMember.revoke_messages:1 of -msgid "" -"Pass :code:`True` to delete all messages from the chat for the user that " -"is being removed. If :code:`False`, the user will be able to see messages" -" in the group that were sent before the user was removed. Always " -":code:`True` for supergroups and channels." -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:29 -msgid ":code:`from aiogram.methods.ban_chat_member import BanChatMember`" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import BanChatMember`" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/ban_chat_member.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.ban`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_sender_chat.po b/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_sender_chat.po deleted file mode 100644 index 410a0c8e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/ban_chat_sender_chat.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/ban_chat_sender_chat.rst:3 -msgid "banChatSenderChat" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.ban_chat_sender_chat.BanChatSenderChat:1 of -msgid "" -"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. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.ban_chat_sender_chat.BanChatSenderChat:3 of -msgid "Source: https://core.telegram.org/bots/api#banchatsenderchat" -msgstr "" - -#: ../../docstring -#: aiogram.methods.ban_chat_sender_chat.BanChatSenderChat.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.ban_chat_sender_chat.BanChatSenderChat.sender_chat_id:1 of -msgid "Unique identifier of the target sender chat" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:29 -msgid ":code:`from aiogram.methods.ban_chat_sender_chat import BanChatSenderChat`" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:30 -msgid "alias: :code:`from aiogram.methods import BanChatSenderChat`" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/ban_chat_sender_chat.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.ban_sender_chat`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/close.po b/docs/locale/en/LC_MESSAGES/api/methods/close.po deleted file mode 100644 index cfdf34fc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/close.po +++ /dev/null @@ -1,71 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/close.rst:3 -msgid "close" -msgstr "" - -#: ../../api/methods/close.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.close.Close:1 of -msgid "" -"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. Returns :code:`True` on success. Requires no parameters." -msgstr "" - -#: aiogram.methods.close.Close:3 of -msgid "Source: https://core.telegram.org/bots/api#close" -msgstr "" - -#: ../../api/methods/close.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/close.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/close.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/close.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/close.rst:29 -msgid ":code:`from aiogram.methods.close import Close`" -msgstr "" - -#: ../../api/methods/close.rst:30 -msgid "alias: :code:`from aiogram.methods import Close`" -msgstr "" - -#: ../../api/methods/close.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/close.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/close_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/close_forum_topic.po deleted file mode 100644 index cf6aa076..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/close_forum_topic.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/close_forum_topic.rst:3 -msgid "closeForumTopic" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.close_forum_topic.CloseForumTopic:1 of -msgid "" -"Use this method to close an open topic in a forum supergroup chat. The " -"bot must be an administrator in the chat for this to work and must have " -"the *can_manage_topics* administrator rights, unless it is the creator of" -" the topic. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.close_forum_topic.CloseForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#closeforumtopic" -msgstr "" - -#: ../../docstring aiogram.methods.close_forum_topic.CloseForumTopic.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.close_forum_topic.CloseForumTopic.message_thread_id:1 of -msgid "Unique identifier for the target message thread of the forum topic" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:29 -msgid ":code:`from aiogram.methods.close_forum_topic import CloseForumTopic`" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import CloseForumTopic`" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/close_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/close_general_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/close_general_forum_topic.po deleted file mode 100644 index f67c10fd..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/close_general_forum_topic.po +++ /dev/null @@ -1,80 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/close_general_forum_topic.rst:3 -msgid "closeGeneralForumTopic" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.close_general_forum_topic.CloseGeneralForumTopic:1 of -msgid "" -"Use this method to close an open 'General' topic in a forum supergroup " -"chat. The bot must be an administrator in the chat for this to work and " -"must have the *can_manage_topics* administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.close_general_forum_topic.CloseGeneralForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#closegeneralforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.close_general_forum_topic.CloseGeneralForumTopic.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:29 -msgid "" -":code:`from aiogram.methods.close_general_forum_topic import " -"CloseGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import CloseGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/close_general_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/copy_message.po b/docs/locale/en/LC_MESSAGES/api/methods/copy_message.po deleted file mode 100644 index f30e9b73..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/copy_message.po +++ /dev/null @@ -1,169 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/copy_message.rst:3 -msgid "copyMessage" -msgstr "" - -#: ../../api/methods/copy_message.rst:5 -msgid "Returns: :obj:`MessageId`" -msgstr "" - -#: aiogram.methods.copy_message.CopyMessage:1 of -msgid "" -"Use this method to copy messages of any kind. Service messages and " -"invoice messages can't be copied. A quiz " -":class:`aiogram.methods.poll.Poll` can be copied only if the value of the" -" field *correct_option_id* is known to the bot. The method is analogous " -"to the method :class:`aiogram.methods.forward_message.ForwardMessage`, " -"but the copied message doesn't have a link to the original message. " -"Returns the :class:`aiogram.types.message_id.MessageId` of the sent " -"message on success." -msgstr "" - -#: aiogram.methods.copy_message.CopyMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#copymessage" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.from_chat_id:1 of -msgid "" -"Unique identifier for the chat where the original message was sent (or " -"channel username in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.message_id:1 of -msgid "Message identifier in the chat specified in *from_chat_id*" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.message_thread_id:1 -#: of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.caption:1 of -msgid "" -"New caption for media, 0-1024 characters after entities parsing. If not " -"specified, the original caption is kept" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.parse_mode:1 of -msgid "" -"Mode for parsing entities in the new caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.caption_entities:1 -#: of -msgid "" -"A JSON-serialized list of special entities that appear in the new " -"caption, which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.copy_message.CopyMessage.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.copy_message.CopyMessage.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.copy_message.CopyMessage.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.copy_message.CopyMessage.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/copy_message.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/copy_message.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/copy_message.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/copy_message.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/copy_message.rst:29 -msgid ":code:`from aiogram.methods.copy_message import CopyMessage`" -msgstr "" - -#: ../../api/methods/copy_message.rst:30 -msgid "alias: :code:`from aiogram.methods import CopyMessage`" -msgstr "" - -#: ../../api/methods/copy_message.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/copy_message.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/copy_message.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/copy_message.rst:50 -msgid ":meth:`aiogram.types.message.Message.copy_to`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/create_chat_invite_link.po b/docs/locale/en/LC_MESSAGES/api/methods/create_chat_invite_link.po deleted file mode 100644 index 7099e1d3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/create_chat_invite_link.po +++ /dev/null @@ -1,118 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/create_chat_invite_link.rst:3 -msgid "createChatInviteLink" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:5 -msgid "Returns: :obj:`ChatInviteLink`" -msgstr "" - -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink:1 of -msgid "" -"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 administrator rights. The link can be revoked using the " -"method " -":class:`aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink`. " -"Returns the new invite link as " -":class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink:3 of -msgid "Source: https://core.telegram.org/bots/api#createchatinvitelink" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink.name:1 of -msgid "Invite link name; 0-32 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink.expire_date:1 -#: of -msgid "Point in time (Unix timestamp) when the link will expire" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink.member_limit:1 -#: of -msgid "" -"The maximum number of users that can be members of the chat " -"simultaneously after joining the chat via this invite link; 1-99999" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_chat_invite_link.CreateChatInviteLink.creates_join_request:1 -#: of -msgid "" -":code:`True`, if users joining the chat via the link need to be approved " -"by chat administrators. If :code:`True`, *member_limit* can't be " -"specified" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:29 -msgid "" -":code:`from aiogram.methods.create_chat_invite_link import " -"CreateChatInviteLink`" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:30 -msgid "alias: :code:`from aiogram.methods import CreateChatInviteLink`" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/create_chat_invite_link.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.create_invite_link`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/create_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/create_forum_topic.po deleted file mode 100644 index 20e71139..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/create_forum_topic.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/create_forum_topic.rst:3 -msgid "createForumTopic" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:5 -msgid "Returns: :obj:`ForumTopic`" -msgstr "" - -#: aiogram.methods.create_forum_topic.CreateForumTopic:1 of -msgid "" -"Use this method to create a topic in a forum supergroup chat. The bot " -"must be an administrator in the chat for this to work and must have the " -"*can_manage_topics* administrator rights. Returns information about the " -"created topic as a :class:`aiogram.types.forum_topic.ForumTopic` object." -msgstr "" - -#: aiogram.methods.create_forum_topic.CreateForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#createforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_forum_topic.CreateForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.create_forum_topic.CreateForumTopic.name:1 -#: of -msgid "Topic name, 1-128 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_forum_topic.CreateForumTopic.icon_color:1 of -msgid "" -"Color of the topic icon in RGB format. Currently, must be one of 7322096 " -"(0x6FB9F0), 16766590 (0xFFD67E), 13338331 (0xCB86DB), 9367192 (0x8EEE98)," -" 16749490 (0xFF93B2), or 16478047 (0xFB6F5F)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_forum_topic.CreateForumTopic.icon_custom_emoji_id:1 -#: of -msgid "" -"Unique identifier of the custom emoji shown as the topic icon. Use " -":class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers`" -" to get all allowed custom emoji identifiers." -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:29 -msgid ":code:`from aiogram.methods.create_forum_topic import CreateForumTopic`" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import CreateForumTopic`" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/create_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Color of the topic icon in RGB " -#~ "format. Currently, must be one of " -#~ "0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, " -#~ "0xFF93B2, or 0xFB6F5F" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/create_invoice_link.po b/docs/locale/en/LC_MESSAGES/api/methods/create_invoice_link.po deleted file mode 100644 index ca18a308..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/create_invoice_link.po +++ /dev/null @@ -1,207 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/create_invoice_link.rst:3 -msgid "createInvoiceLink" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:5 -msgid "Returns: :obj:`str`" -msgstr "" - -#: aiogram.methods.create_invoice_link.CreateInvoiceLink:1 of -msgid "" -"Use this method to create a link for an invoice. Returns the created " -"invoice link as *String* on success." -msgstr "" - -#: aiogram.methods.create_invoice_link.CreateInvoiceLink:3 of -msgid "Source: https://core.telegram.org/bots/api#createinvoicelink" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.title:1 of -msgid "Product name, 1-32 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.description:1 of -msgid "Product description, 1-255 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.payload:1 of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.provider_token:1 of -msgid "Payment provider token, obtained via `BotFather `_" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.currency:1 of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.prices:1 of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.max_tip_amount:1 of -msgid "" -"The maximum accepted amount for tips in the *smallest units* of the " -"currency (integer, **not** float/double). For example, for a maximum tip " -"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " -"parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.suggested_tip_amounts:1 -#: of -msgid "" -"A JSON-serialized 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 " -"*max_tip_amount*." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.provider_data:1 of -msgid "" -"JSON-serialized 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." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.photo_url:1 of -msgid "" -"URL of the product photo for the invoice. Can be a photo of the goods or " -"a marketing image for a service." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.photo_size:1 of -msgid "Photo size in bytes" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.photo_width:1 of -msgid "Photo width" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.photo_height:1 of -msgid "Photo height" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.need_name:1 of -msgid "" -"Pass :code:`True` if you require the user's full name to complete the " -"order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.need_phone_number:1 of -msgid "" -"Pass :code:`True` if you require the user's phone number to complete the " -"order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.need_email:1 of -msgid "" -"Pass :code:`True` if you require the user's email address to complete the" -" order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.need_shipping_address:1 -#: of -msgid "" -"Pass :code:`True` if you require the user's shipping address to complete " -"the order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.send_phone_number_to_provider:1 -#: of -msgid "" -"Pass :code:`True` if the user's phone number should be sent to the " -"provider" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.send_email_to_provider:1 -#: of -msgid "" -"Pass :code:`True` if the user's email address should be sent to the " -"provider" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_invoice_link.CreateInvoiceLink.is_flexible:1 of -msgid "Pass :code:`True` if the final price depends on the shipping method" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:29 -msgid ":code:`from aiogram.methods.create_invoice_link import CreateInvoiceLink`" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:30 -msgid "alias: :code:`from aiogram.methods import CreateInvoiceLink`" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/create_invoice_link.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/create_new_sticker_set.po b/docs/locale/en/LC_MESSAGES/api/methods/create_new_sticker_set.po deleted file mode 100644 index 045ca8f0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/create_new_sticker_set.po +++ /dev/null @@ -1,190 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/create_new_sticker_set.rst:3 -msgid "createNewStickerSet" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet:1 of -msgid "" -"Use this method to create a new sticker set owned by a user. The bot will" -" be able to edit the sticker set thus created. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#createnewstickerset" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.user_id:1 of -msgid "User identifier of created sticker set owner" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.name:1 of -msgid "" -"Short name of sticker set, to be used in :code:`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 :code:`\"_by_\"`. " -":code:`` is case insensitive. 1-64 characters." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.title:1 of -msgid "Sticker set title, 1-64 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.stickers:1 of -msgid "" -"A JSON-serialized list of 1-50 initial stickers to be added to the " -"sticker set" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.sticker_format:1 -#: of -msgid "" -"Format of stickers in the set, must be one of 'static', 'animated', " -"'video'" -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.sticker_type:1 of -msgid "" -"Type of stickers in the set, pass 'regular', 'mask', or 'custom_emoji'. " -"By default, a regular sticker set is created." -msgstr "" - -#: ../../docstring -#: aiogram.methods.create_new_sticker_set.CreateNewStickerSet.needs_repainting:1 -#: of -msgid "" -"Pass :code:`True` if stickers in the sticker set must be repainted to the" -" color of text when used in messages, the accent color if used as emoji " -"status, white on chat photos, or another appropriate color based on " -"context; for custom emoji sticker sets only" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:29 -msgid "" -":code:`from aiogram.methods.create_new_sticker_set import " -"CreateNewStickerSet`" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:30 -msgid "alias: :code:`from aiogram.methods import CreateNewStickerSet`" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/create_new_sticker_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Use this method to create a new" -#~ " sticker set owned by a user. " -#~ "The bot will be able to edit " -#~ "the sticker set thus created. You " -#~ "**must** use exactly one of the " -#~ "fields *png_sticker*, *tgs_sticker*, or " -#~ "*webm_sticker*. Returns :code:`True` on " -#~ "success." -#~ msgstr "" - -#~ msgid "One or more emoji corresponding to the sticker" -#~ msgstr "" - -#~ msgid "" -#~ "**PNG** image with the sticker, must " -#~ "be up to 512 kilobytes in size," -#~ " dimensions must not exceed 512px, " -#~ "and either width or height must be" -#~ " exactly 512px. Pass a *file_id* as" -#~ " a String to send a file that" -#~ " already exists on the Telegram " -#~ "servers, pass an HTTP URL as a " -#~ "String for Telegram to get a file" -#~ " from the Internet, or upload a " -#~ "new one using multipart/form-data. " -#~ ":ref:`More information on Sending Files " -#~ "» `" -#~ msgstr "" - -#~ msgid "" -#~ "**TGS** animation with the sticker, " -#~ "uploaded using multipart/form-data. See " -#~ "`https://core.telegram.org/stickers#animated-sticker-" -#~ "requirements `_`https://core.telegram.org/stickers" -#~ "#animated-sticker-requirements " -#~ "`_ for technical requirements" -#~ msgstr "" - -#~ msgid "" -#~ "**WEBM** video with the sticker, " -#~ "uploaded using multipart/form-data. See " -#~ "`https://core.telegram.org/stickers#video-sticker-" -#~ "requirements `_`https://core.telegram.org/stickers" -#~ "#video-sticker-requirements " -#~ "`_ for technical requirements" -#~ msgstr "" - -#~ msgid "" -#~ "Type of stickers in the set, pass" -#~ " 'regular' or 'mask'. Custom emoji " -#~ "sticker sets can't be created via " -#~ "the Bot API at the moment. By " -#~ "default, a regular sticker set is " -#~ "created." -#~ msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for position" -#~ " where the mask should be placed " -#~ "on faces" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/decline_chat_join_request.po b/docs/locale/en/LC_MESSAGES/api/methods/decline_chat_join_request.po deleted file mode 100644 index 9d632f5d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/decline_chat_join_request.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/decline_chat_join_request.rst:3 -msgid "declineChatJoinRequest" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest:1 of -msgid "" -"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 " -"*can_invite_users* administrator right. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest:3 of -msgid "Source: https://core.telegram.org/bots/api#declinechatjoinrequest" -msgstr "" - -#: ../../docstring -#: aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest.user_id:1 -#: of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:29 -msgid "" -":code:`from aiogram.methods.decline_chat_join_request import " -"DeclineChatJoinRequest`" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:30 -msgid "alias: :code:`from aiogram.methods import DeclineChatJoinRequest`" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/decline_chat_join_request.rst:50 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.decline`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_photo.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_photo.po deleted file mode 100644 index 758102ab..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_photo.po +++ /dev/null @@ -1,85 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_chat_photo.rst:3 -msgid "deleteChatPhoto" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_chat_photo.DeleteChatPhoto:1 of -msgid "" -"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 administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_chat_photo.DeleteChatPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#deletechatphoto" -msgstr "" - -#: ../../docstring aiogram.methods.delete_chat_photo.DeleteChatPhoto.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:29 -msgid ":code:`from aiogram.methods.delete_chat_photo import DeleteChatPhoto`" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteChatPhoto`" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/delete_chat_photo.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.delete_photo`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_sticker_set.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_sticker_set.po deleted file mode 100644 index 3b5e8332..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_chat_sticker_set.po +++ /dev/null @@ -1,89 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_chat_sticker_set.rst:3 -msgid "deleteChatStickerSet" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_chat_sticker_set.DeleteChatStickerSet:1 of -msgid "" -"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 administrator rights. Use the field *can_set_sticker_set* " -"optionally returned in :class:`aiogram.methods.get_chat.GetChat` requests" -" to check if the bot can use this method. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.methods.delete_chat_sticker_set.DeleteChatStickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#deletechatstickerset" -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_chat_sticker_set.DeleteChatStickerSet.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:29 -msgid "" -":code:`from aiogram.methods.delete_chat_sticker_set import " -"DeleteChatStickerSet`" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteChatStickerSet`" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/delete_chat_sticker_set.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.delete_sticker_set`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_forum_topic.po deleted file mode 100644 index 4d2c0306..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_forum_topic.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_forum_topic.rst:3 -msgid "deleteForumTopic" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_forum_topic.DeleteForumTopic:1 of -msgid "" -"Use this method to delete a forum topic along with all its messages in a " -"forum supergroup chat. The bot must be an administrator in the chat for " -"this to work and must have the *can_delete_messages* administrator " -"rights. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_forum_topic.DeleteForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#deleteforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_forum_topic.DeleteForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_forum_topic.DeleteForumTopic.message_thread_id:1 of -msgid "Unique identifier for the target message thread of the forum topic" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:29 -msgid ":code:`from aiogram.methods.delete_forum_topic import DeleteForumTopic`" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteForumTopic`" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_message.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_message.po deleted file mode 100644 index d2a793d3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_message.po +++ /dev/null @@ -1,138 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_message.rst:3 -msgid "deleteMessage" -msgstr "" - -#: ../../api/methods/delete_message.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:1 of -msgid "" -"Use this method to delete a message, including service messages, with the" -" following limitations:" -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:3 of -msgid "A message can only be deleted if it was sent less than 48 hours ago." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:5 of -msgid "" -"Service messages about a supergroup, channel, or forum topic creation " -"can't be deleted." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:7 of -msgid "" -"A dice message in a private chat can only be deleted if it was sent more " -"than 24 hours ago." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:9 of -msgid "" -"Bots can delete outgoing messages in private chats, groups, and " -"supergroups." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:11 of -msgid "Bots can delete incoming messages in private chats." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:13 of -msgid "" -"Bots granted *can_post_messages* permissions can delete outgoing messages" -" in channels." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:15 of -msgid "" -"If the bot is an administrator of a group, it can delete any message " -"there." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:17 of -msgid "" -"If the bot has *can_delete_messages* permission in a supergroup or a " -"channel, it can delete any message there." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:19 of -msgid "Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_message.DeleteMessage:21 of -msgid "Source: https://core.telegram.org/bots/api#deletemessage" -msgstr "" - -#: ../../docstring aiogram.methods.delete_message.DeleteMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.delete_message.DeleteMessage.message_id:1 of -msgid "Identifier of the message to delete" -msgstr "" - -#: ../../api/methods/delete_message.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_message.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_message.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_message.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_message.rst:29 -msgid ":code:`from aiogram.methods.delete_message import DeleteMessage`" -msgstr "" - -#: ../../api/methods/delete_message.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteMessage`" -msgstr "" - -#: ../../api/methods/delete_message.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_message.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/delete_message.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/delete_message.rst:50 -msgid ":meth:`aiogram.types.message.Message.delete`" -msgstr "" - -#: ../../api/methods/delete_message.rst:51 -msgid ":meth:`aiogram.types.chat.Chat.delete_message`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_my_commands.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_my_commands.po deleted file mode 100644 index aaf9cc3a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_my_commands.po +++ /dev/null @@ -1,86 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_my_commands.rst:3 -msgid "deleteMyCommands" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_my_commands.DeleteMyCommands:1 of -msgid "" -"Use this method to delete the list of the bot's commands for the given " -"scope and user language. After deletion, `higher level commands " -"`_ will " -"be shown to affected users. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_my_commands.DeleteMyCommands:3 of -msgid "Source: https://core.telegram.org/bots/api#deletemycommands" -msgstr "" - -#: ../../docstring aiogram.methods.delete_my_commands.DeleteMyCommands.scope:1 -#: of -msgid "" -"A JSON-serialized object, describing scope of users for which the " -"commands are relevant. Defaults to " -":class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`." -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_my_commands.DeleteMyCommands.language_code:1 of -msgid "" -"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" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:29 -msgid ":code:`from aiogram.methods.delete_my_commands import DeleteMyCommands`" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteMyCommands`" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_my_commands.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_from_set.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_from_set.po deleted file mode 100644 index e14f9081..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_from_set.po +++ /dev/null @@ -1,83 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_sticker_from_set.rst:3 -msgid "deleteStickerFromSet" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_sticker_from_set.DeleteStickerFromSet:1 of -msgid "" -"Use this method to delete a sticker from a set created by the bot. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_sticker_from_set.DeleteStickerFromSet:3 of -msgid "Source: https://core.telegram.org/bots/api#deletestickerfromset" -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_sticker_from_set.DeleteStickerFromSet.sticker:1 of -msgid "File identifier of the sticker" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:29 -msgid "" -":code:`from aiogram.methods.delete_sticker_from_set import " -"DeleteStickerFromSet`" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteStickerFromSet`" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/delete_sticker_from_set.rst:50 -msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_set.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_set.po deleted file mode 100644 index b0d56a23..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_sticker_set.po +++ /dev/null @@ -1,73 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/delete_sticker_set.rst:3 -msgid "deleteStickerSet" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_sticker_set.DeleteStickerSet:1 of -msgid "" -"Use this method to delete a sticker set that was created by the bot. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_sticker_set.DeleteStickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#deletestickerset" -msgstr "" - -#: ../../docstring aiogram.methods.delete_sticker_set.DeleteStickerSet.name:1 -#: of -msgid "Sticker set name" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:29 -msgid ":code:`from aiogram.methods.delete_sticker_set import DeleteStickerSet`" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteStickerSet`" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_sticker_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/delete_webhook.po b/docs/locale/en/LC_MESSAGES/api/methods/delete_webhook.po deleted file mode 100644 index bdd1e2ec..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/delete_webhook.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/delete_webhook.rst:3 -msgid "deleteWebhook" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.delete_webhook.DeleteWebhook:1 of -msgid "" -"Use this method to remove webhook integration if you decide to switch " -"back to :class:`aiogram.methods.get_updates.GetUpdates`. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.delete_webhook.DeleteWebhook:3 of -msgid "Source: https://core.telegram.org/bots/api#deletewebhook" -msgstr "" - -#: ../../docstring -#: aiogram.methods.delete_webhook.DeleteWebhook.drop_pending_updates:1 of -msgid "Pass :code:`True` to drop all pending updates" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:29 -msgid ":code:`from aiogram.methods.delete_webhook import DeleteWebhook`" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:30 -msgid "alias: :code:`from aiogram.methods import DeleteWebhook`" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/delete_webhook.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_chat_invite_link.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_chat_invite_link.po deleted file mode 100644 index 6efd01b1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_chat_invite_link.po +++ /dev/null @@ -1,118 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_chat_invite_link.rst:3 -msgid "editChatInviteLink" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:5 -msgid "Returns: :obj:`ChatInviteLink`" -msgstr "" - -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink:1 of -msgid "" -"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 administrator rights. Returns the edited invite link as a" -" :class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink:3 of -msgid "Source: https://core.telegram.org/bots/api#editchatinvitelink" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.invite_link:1 of -msgid "The invite link to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.name:1 of -msgid "Invite link name; 0-32 characters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.expire_date:1 of -msgid "Point in time (Unix timestamp) when the link will expire" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.member_limit:1 of -msgid "" -"The maximum number of users that can be members of the chat " -"simultaneously after joining the chat via this invite link; 1-99999" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_chat_invite_link.EditChatInviteLink.creates_join_request:1 -#: of -msgid "" -":code:`True`, if users joining the chat via the link need to be approved " -"by chat administrators. If :code:`True`, *member_limit* can't be " -"specified" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:29 -msgid "" -":code:`from aiogram.methods.edit_chat_invite_link import " -"EditChatInviteLink`" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:30 -msgid "alias: :code:`from aiogram.methods import EditChatInviteLink`" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_chat_invite_link.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.edit_invite_link`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_forum_topic.po deleted file mode 100644 index bf582c84..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_forum_topic.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:01+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_forum_topic.rst:3 -msgid "editForumTopic" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.edit_forum_topic.EditForumTopic:1 of -msgid "" -"Use this method to edit name and icon of a topic in a forum supergroup " -"chat. The bot must be an administrator in the chat for this to work and " -"must have *can_manage_topics* administrator rights, unless it is the " -"creator of the topic. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.edit_forum_topic.EditForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#editforumtopic" -msgstr "" - -#: ../../docstring aiogram.methods.edit_forum_topic.EditForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_forum_topic.EditForumTopic.message_thread_id:1 of -msgid "Unique identifier for the target message thread of the forum topic" -msgstr "" - -#: ../../docstring aiogram.methods.edit_forum_topic.EditForumTopic.name:1 of -msgid "" -"New topic name, 0-128 characters. If not specified or empty, the current " -"name of the topic will be kept" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_forum_topic.EditForumTopic.icon_custom_emoji_id:1 of -msgid "" -"New unique identifier of the custom emoji shown as the topic icon. Use " -":class:`aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers`" -" to get all allowed custom emoji identifiers. Pass an empty string to " -"remove the icon. If not specified, the current icon will be kept" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:29 -msgid ":code:`from aiogram.methods.edit_forum_topic import EditForumTopic`" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import EditForumTopic`" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_general_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_general_forum_topic.po deleted file mode 100644 index 75700ab7..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_general_forum_topic.po +++ /dev/null @@ -1,84 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_general_forum_topic.rst:3 -msgid "editGeneralForumTopic" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.edit_general_forum_topic.EditGeneralForumTopic:1 of -msgid "" -"Use this method to edit the name of the 'General' topic in a forum " -"supergroup chat. The bot must be an administrator in the chat for this to" -" work and must have *can_manage_topics* administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.edit_general_forum_topic.EditGeneralForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#editgeneralforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_general_forum_topic.EditGeneralForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_general_forum_topic.EditGeneralForumTopic.name:1 of -msgid "New topic name, 1-128 characters" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:29 -msgid "" -":code:`from aiogram.methods.edit_general_forum_topic import " -"EditGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import EditGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_general_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_caption.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_caption.po deleted file mode 100644 index a566ee5e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_caption.po +++ /dev/null @@ -1,138 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_message_caption.rst:3 -msgid "editMessageCaption" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.edit_message_caption.EditMessageCaption:1 of -msgid "" -"Use this method to edit captions of messages. On success, if the edited " -"message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.edit_message_caption.EditMessageCaption:3 of -msgid "Source: https://core.telegram.org/bots/api#editmessagecaption" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.chat_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.message_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.inline_message_id:1 -#: of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.caption:1 of -msgid "New caption of the message, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.parse_mode:1 of -msgid "" -"Mode for parsing entities in the message caption. See `formatting options" -" `_ for more " -"details." -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.caption_entities:1 -#: of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_caption.EditMessageCaption.reply_markup:1 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:29 -msgid "" -":code:`from aiogram.methods.edit_message_caption import " -"EditMessageCaption`" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:30 -msgid "alias: :code:`from aiogram.methods import EditMessageCaption`" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_message_caption.rst:50 -msgid ":meth:`aiogram.types.message.Message.edit_caption`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_live_location.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_live_location.po deleted file mode 100644 index 2e129074..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_live_location.po +++ /dev/null @@ -1,160 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_message_live_location.rst:3 -msgid "editMessageLiveLocation" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation:1 of -msgid "" -"Use this method to edit live location messages. A location can be edited " -"until its *live_period* expires or editing is explicitly disabled by a " -"call to " -":class:`aiogram.methods.stop_message_live_location.StopMessageLiveLocation`." -" On success, if the edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation:3 of -msgid "Source: https://core.telegram.org/bots/api#editmessagelivelocation" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.latitude:1 -#: of -msgid "Latitude of new location" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.longitude:1 -#: of -msgid "Longitude of new location" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.chat_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.message_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.inline_message_id:1 -#: of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.horizontal_accuracy:1 -#: of -msgid "The radius of uncertainty for the location, measured in meters; 0-1500" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.heading:1 -#: of -msgid "" -"Direction in which the user is moving, in degrees. Must be between 1 and " -"360 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.proximity_alert_radius:1 -#: of -msgid "" -"The maximum distance for proximity alerts about approaching another chat " -"member, in meters. Must be between 1 and 100000 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_live_location.EditMessageLiveLocation.reply_markup:1 -#: of -msgid "" -"A JSON-serialized object for a new `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:29 -msgid "" -":code:`from aiogram.methods.edit_message_live_location import " -"EditMessageLiveLocation`" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:30 -msgid "alias: :code:`from aiogram.methods import EditMessageLiveLocation`" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_message_live_location.rst:50 -msgid ":meth:`aiogram.types.message.Message.edit_live_location`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for a new" -#~ " `inline keyboard `_." -#~ msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_media.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_media.po deleted file mode 100644 index afb32662..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_media.po +++ /dev/null @@ -1,126 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_message_media.rst:3 -msgid "editMessageMedia" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.edit_message_media.EditMessageMedia:1 of -msgid "" -"Use this method to edit animation, audio, document, photo, or video " -"messages. If a message is part of a message album, then it can be edited " -"only to an audio for audio albums, only to a document for document albums" -" and to a photo or a video otherwise. When an inline message is edited, a" -" new file can't be uploaded; use a previously uploaded file via its " -"file_id or specify a URL. On success, if the edited message is not an " -"inline message, the edited :class:`aiogram.types.message.Message` is " -"returned, otherwise :code:`True` is returned." -msgstr "" - -#: aiogram.methods.edit_message_media.EditMessageMedia:3 of -msgid "Source: https://core.telegram.org/bots/api#editmessagemedia" -msgstr "" - -#: ../../docstring aiogram.methods.edit_message_media.EditMessageMedia.media:1 -#: of -msgid "A JSON-serialized object for a new media content of the message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_media.EditMessageMedia.chat_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_media.EditMessageMedia.message_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_media.EditMessageMedia.inline_message_id:1 of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_media.EditMessageMedia.reply_markup:1 of -msgid "" -"A JSON-serialized object for a new `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/edit_message_media.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:29 -msgid ":code:`from aiogram.methods.edit_message_media import EditMessageMedia`" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:30 -msgid "alias: :code:`from aiogram.methods import EditMessageMedia`" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_message_media.rst:50 -msgid ":meth:`aiogram.types.message.Message.edit_media`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for a new" -#~ " `inline keyboard `_." -#~ msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po deleted file mode 100644 index b704dd6d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_reply_markup.po +++ /dev/null @@ -1,124 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/edit_message_reply_markup.rst:3 -msgid "editMessageReplyMarkup" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup:1 of -msgid "" -"Use this method to edit only the reply markup of messages. On success, if" -" the edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup:3 of -msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup.chat_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup.message_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup.inline_message_id:1 -#: of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup.reply_markup:1 -#: of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:30 -msgid "" -":code:`from aiogram.methods.edit_message_reply_markup import " -"EditMessageReplyMarkup`" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:31 -msgid "alias: :code:`from aiogram.methods import EditMessageReplyMarkup`" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:51 -msgid ":meth:`aiogram.types.message.Message.edit_reply_markup`" -msgstr "" - -#: ../../api/methods/edit_message_reply_markup.rst:52 -msgid ":meth:`aiogram.types.message.Message.delete_reply_markup`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_text.po b/docs/locale/en/LC_MESSAGES/api/methods/edit_message_text.po deleted file mode 100644 index a4662b9b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/edit_message_text.po +++ /dev/null @@ -1,140 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/edit_message_text.rst:3 -msgid "editMessageText" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.edit_message_text.EditMessageText:1 of -msgid "" -"Use this method to edit text and `game " -"`_ messages. On success, if the" -" edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.methods.edit_message_text.EditMessageText:3 of -msgid "Source: https://core.telegram.org/bots/api#editmessagetext" -msgstr "" - -#: ../../docstring aiogram.methods.edit_message_text.EditMessageText.text:1 of -msgid "New text of the message, 1-4096 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.edit_message_text.EditMessageText.chat_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_text.EditMessageText.message_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message to edit" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_text.EditMessageText.inline_message_id:1 of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_text.EditMessageText.parse_mode:1 of -msgid "" -"Mode for parsing entities in the message text. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.edit_message_text.EditMessageText.entities:1 -#: of -msgid "" -"A JSON-serialized list of special entities that appear in message text, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_text.EditMessageText.disable_web_page_preview:1 -#: of -msgid "Disables link previews for links in this message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.edit_message_text.EditMessageText.reply_markup:1 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/edit_message_text.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:29 -msgid ":code:`from aiogram.methods.edit_message_text import EditMessageText`" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:30 -msgid "alias: :code:`from aiogram.methods import EditMessageText`" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/edit_message_text.rst:50 -msgid ":meth:`aiogram.types.message.Message.edit_text`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/export_chat_invite_link.po b/docs/locale/en/LC_MESSAGES/api/methods/export_chat_invite_link.po deleted file mode 100644 index 3615e48d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/export_chat_invite_link.po +++ /dev/null @@ -1,101 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/export_chat_invite_link.rst:3 -msgid "exportChatInviteLink" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:5 -msgid "Returns: :obj:`str`" -msgstr "" - -#: aiogram.methods.export_chat_invite_link.ExportChatInviteLink:1 of -msgid "" -"Use this method to generate a new primary invite link for a chat; any " -"previously generated primary link is revoked. The bot must be an " -"administrator in the chat for this to work and must have the appropriate " -"administrator rights. Returns the new invite link as *String* on success." -msgstr "" - -#: aiogram.methods.export_chat_invite_link.ExportChatInviteLink:3 of -msgid "" -"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 " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink` or " -"by calling the :class:`aiogram.methods.get_chat.GetChat` method. If your " -"bot needs to generate a new primary invite link replacing its previous " -"one, use " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink` " -"again." -msgstr "" - -#: aiogram.methods.export_chat_invite_link.ExportChatInviteLink:5 of -msgid "Source: https://core.telegram.org/bots/api#exportchatinvitelink" -msgstr "" - -#: ../../docstring -#: aiogram.methods.export_chat_invite_link.ExportChatInviteLink.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:29 -msgid "" -":code:`from aiogram.methods.export_chat_invite_link import " -"ExportChatInviteLink`" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:30 -msgid "alias: :code:`from aiogram.methods import ExportChatInviteLink`" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/export_chat_invite_link.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.export_invite_link`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/forward_message.po b/docs/locale/en/LC_MESSAGES/api/methods/forward_message.po deleted file mode 100644 index 43f90fbf..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/forward_message.po +++ /dev/null @@ -1,117 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/forward_message.rst:3 -msgid "forwardMessage" -msgstr "" - -#: ../../api/methods/forward_message.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.forward_message.ForwardMessage:1 of -msgid "" -"Use this method to forward messages of any kind. Service messages can't " -"be forwarded. On success, the sent :class:`aiogram.types.message.Message`" -" is returned." -msgstr "" - -#: aiogram.methods.forward_message.ForwardMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#forwardmessage" -msgstr "" - -#: ../../docstring aiogram.methods.forward_message.ForwardMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.forward_message.ForwardMessage.from_chat_id:1 of -msgid "" -"Unique identifier for the chat where the original message was sent (or " -"channel username in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.forward_message.ForwardMessage.message_id:1 -#: of -msgid "Message identifier in the chat specified in *from_chat_id*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.forward_message.ForwardMessage.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.forward_message.ForwardMessage.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring -#: aiogram.methods.forward_message.ForwardMessage.protect_content:1 of -msgid "Protects the contents of the forwarded message from forwarding and saving" -msgstr "" - -#: ../../api/methods/forward_message.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/forward_message.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/forward_message.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/forward_message.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/forward_message.rst:29 -msgid ":code:`from aiogram.methods.forward_message import ForwardMessage`" -msgstr "" - -#: ../../api/methods/forward_message.rst:30 -msgid "alias: :code:`from aiogram.methods import ForwardMessage`" -msgstr "" - -#: ../../api/methods/forward_message.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/forward_message.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/forward_message.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/forward_message.rst:50 -msgid ":meth:`aiogram.types.message.Message.forward`" -msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat.po deleted file mode 100644 index 9097c834..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_chat.rst:3 -msgid "getChat" -msgstr "" - -#: ../../api/methods/get_chat.rst:5 -msgid "Returns: :obj:`Chat`" -msgstr "" - -#: aiogram.methods.get_chat.GetChat:1 of -msgid "" -"Use this method to get up to date information about the chat (current " -"name of the user for one-on-one conversations, current username of a " -"user, group or channel, etc.). Returns a :class:`aiogram.types.chat.Chat`" -" object on success." -msgstr "" - -#: aiogram.methods.get_chat.GetChat:3 of -msgid "Source: https://core.telegram.org/bots/api#getchat" -msgstr "" - -#: ../../docstring aiogram.methods.get_chat.GetChat.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/get_chat.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat.rst:29 -msgid ":code:`from aiogram.methods.get_chat import GetChat`" -msgstr "" - -#: ../../api/methods/get_chat.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChat`" -msgstr "" - -#: ../../api/methods/get_chat.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_administrators.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat_administrators.po deleted file mode 100644 index 7700abdc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_administrators.po +++ /dev/null @@ -1,85 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_chat_administrators.rst:3 -msgid "getChatAdministrators" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:5 -msgid "" -"Returns: :obj:`List[Union[ChatMemberOwner, ChatMemberAdministrator, " -"ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, " -"ChatMemberBanned]]`" -msgstr "" - -#: aiogram.methods.get_chat_administrators.GetChatAdministrators:1 of -msgid "" -"Use this method to get a list of administrators in a chat, which aren't " -"bots. Returns an Array of :class:`aiogram.types.chat_member.ChatMember` " -"objects." -msgstr "" - -#: aiogram.methods.get_chat_administrators.GetChatAdministrators:3 of -msgid "Source: https://core.telegram.org/bots/api#getchatadministrators" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_chat_administrators.GetChatAdministrators.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:29 -msgid "" -":code:`from aiogram.methods.get_chat_administrators import " -"GetChatAdministrators`" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChatAdministrators`" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:43 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/get_chat_administrators.rst:45 -msgid ":meth:`aiogram.types.chat.Chat.get_administrators`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member.po deleted file mode 100644 index 0f6b9c1b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member.po +++ /dev/null @@ -1,97 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/get_chat_member.rst:3 -msgid "getChatMember" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:5 -msgid "" -"Returns: :obj:`Union[ChatMemberOwner, ChatMemberAdministrator, " -"ChatMemberMember, ChatMemberRestricted, ChatMemberLeft, " -"ChatMemberBanned]`" -msgstr "" - -#: aiogram.methods.get_chat_member.GetChatMember:1 of -msgid "" -"Use this method to get information about a member of a chat. The method " -"is only guaranteed to work for other users if the bot is an administrator" -" in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` " -"object on success." -msgstr "" - -#: aiogram.methods.get_chat_member.GetChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#getchatmember" -msgstr "" - -#: ../../docstring aiogram.methods.get_chat_member.GetChatMember.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.get_chat_member.GetChatMember.user_id:1 of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:29 -msgid ":code:`from aiogram.methods.get_chat_member import GetChatMember`" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChatMember`" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:43 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/get_chat_member.rst:45 -msgid ":meth:`aiogram.types.chat.Chat.get_member`" -msgstr "" - -#~ msgid "" -#~ "Use this method to get information " -#~ "about a member of a chat. The " -#~ "method is guaranteed to work for " -#~ "other users, only if the bot is" -#~ " an administrator in the chat. " -#~ "Returns a :class:`aiogram.types.chat_member.ChatMember`" -#~ " object on success." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member_count.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member_count.po deleted file mode 100644 index 6fc48c9f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_member_count.po +++ /dev/null @@ -1,81 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_chat_member_count.rst:3 -msgid "getChatMemberCount" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:5 -msgid "Returns: :obj:`int`" -msgstr "" - -#: aiogram.methods.get_chat_member_count.GetChatMemberCount:1 of -msgid "" -"Use this method to get the number of members in a chat. Returns *Int* on " -"success." -msgstr "" - -#: aiogram.methods.get_chat_member_count.GetChatMemberCount:3 of -msgid "Source: https://core.telegram.org/bots/api#getchatmembercount" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_chat_member_count.GetChatMemberCount.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:29 -msgid "" -":code:`from aiogram.methods.get_chat_member_count import " -"GetChatMemberCount`" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChatMemberCount`" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:43 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/get_chat_member_count.rst:45 -msgid ":meth:`aiogram.types.chat.Chat.get_member_count`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_members_count.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat_members_count.po deleted file mode 100644 index e747a5f4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_members_count.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_chat_members_count.rst:3 -msgid "getChatMembersCount" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:5 -msgid "Returns: :obj:`int`" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:29 -msgid "" -":code:`from aiogram.methods.get_chat_members_count import " -"GetChatMembersCount`" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChatMembersCount`" -msgstr "" - -#: ../../api/methods/get_chat_members_count.rst:33 -msgid "With specific bot" -msgstr "" - -#~ msgid "" -#~ "Use this method to get the number" -#~ " of members in a chat. Returns " -#~ "*Int* on success." -#~ msgstr "" - -#~ msgid "Source: https://core.telegram.org/bots/api#getchatmembercount" -#~ msgstr "" - -#~ msgid "" -#~ "Unique identifier for the target chat" -#~ " or username of the target supergroup" -#~ " or channel (in the format " -#~ ":code:`@channelusername`)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_menu_button.po b/docs/locale/en/LC_MESSAGES/api/methods/get_chat_menu_button.po deleted file mode 100644 index 0f5e608b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_chat_menu_button.po +++ /dev/null @@ -1,77 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_chat_menu_button.rst:3 -msgid "getChatMenuButton" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:5 -msgid "" -"Returns: :obj:`Union[MenuButtonDefault, MenuButtonWebApp, " -"MenuButtonCommands]`" -msgstr "" - -#: aiogram.methods.get_chat_menu_button.GetChatMenuButton:1 of -msgid "" -"Use this method to get the current value of the bot's menu button in a " -"private chat, or the default menu button. Returns " -":class:`aiogram.types.menu_button.MenuButton` on success." -msgstr "" - -#: aiogram.methods.get_chat_menu_button.GetChatMenuButton:3 of -msgid "Source: https://core.telegram.org/bots/api#getchatmenubutton" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_chat_menu_button.GetChatMenuButton.chat_id:1 of -msgid "" -"Unique identifier for the target private chat. If not specified, default " -"bot's menu button will be returned" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:29 -msgid ":code:`from aiogram.methods.get_chat_menu_button import GetChatMenuButton`" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:30 -msgid "alias: :code:`from aiogram.methods import GetChatMenuButton`" -msgstr "" - -#: ../../api/methods/get_chat_menu_button.rst:33 -msgid "With specific bot" -msgstr "" - -#~ msgid "Returns: :obj:`MenuButton`" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_custom_emoji_stickers.po b/docs/locale/en/LC_MESSAGES/api/methods/get_custom_emoji_stickers.po deleted file mode 100644 index 421e077e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_custom_emoji_stickers.po +++ /dev/null @@ -1,75 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_custom_emoji_stickers.rst:3 -msgid "getCustomEmojiStickers" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:5 -msgid "Returns: :obj:`List[Sticker]`" -msgstr "" - -#: aiogram.methods.get_custom_emoji_stickers.GetCustomEmojiStickers:1 of -msgid "" -"Use this method to get information about custom emoji stickers by their " -"identifiers. Returns an Array of :class:`aiogram.types.sticker.Sticker` " -"objects." -msgstr "" - -#: aiogram.methods.get_custom_emoji_stickers.GetCustomEmojiStickers:3 of -msgid "Source: https://core.telegram.org/bots/api#getcustomemojistickers" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_custom_emoji_stickers.GetCustomEmojiStickers.custom_emoji_ids:1 -#: of -msgid "" -"List of custom emoji identifiers. At most 200 custom emoji identifiers " -"can be specified." -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:29 -msgid "" -":code:`from aiogram.methods.get_custom_emoji_stickers import " -"GetCustomEmojiStickers`" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:30 -msgid "alias: :code:`from aiogram.methods import GetCustomEmojiStickers`" -msgstr "" - -#: ../../api/methods/get_custom_emoji_stickers.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_file.po b/docs/locale/en/LC_MESSAGES/api/methods/get_file.po deleted file mode 100644 index bb0d8947..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_file.po +++ /dev/null @@ -1,77 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_file.rst:3 -msgid "getFile" -msgstr "" - -#: ../../api/methods/get_file.rst:5 -msgid "Returns: :obj:`File`" -msgstr "" - -#: aiogram.methods.get_file.GetFile:1 of -msgid "" -"Use this method to get basic information about a file and prepare it for " -"downloading. For the moment, bots can download files of up to 20MB in " -"size. On success, a :class:`aiogram.types.file.File` object is returned. " -"The file can then be downloaded via the link " -":code:`https://api.telegram.org/file/bot/`, where " -":code:`` is taken from the response. It is guaranteed that the" -" link will be valid for at least 1 hour. When the link expires, a new one" -" can be requested by calling :class:`aiogram.methods.get_file.GetFile` " -"again. **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." -msgstr "" - -#: aiogram.methods.get_file.GetFile:4 of -msgid "Source: https://core.telegram.org/bots/api#getfile" -msgstr "" - -#: ../../docstring aiogram.methods.get_file.GetFile.file_id:1 of -msgid "File identifier to get information about" -msgstr "" - -#: ../../api/methods/get_file.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_file.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_file.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_file.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_file.rst:29 -msgid ":code:`from aiogram.methods.get_file import GetFile`" -msgstr "" - -#: ../../api/methods/get_file.rst:30 -msgid "alias: :code:`from aiogram.methods import GetFile`" -msgstr "" - -#: ../../api/methods/get_file.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_forum_topic_icon_stickers.po b/docs/locale/en/LC_MESSAGES/api/methods/get_forum_topic_icon_stickers.po deleted file mode 100644 index 7719981e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_forum_topic_icon_stickers.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:3 -msgid "getForumTopicIconStickers" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:5 -msgid "Returns: :obj:`List[Sticker]`" -msgstr "" - -#: aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers:1 of -msgid "" -"Use this method to get custom emoji stickers, which can be used as a " -"forum topic icon by any user. Requires no parameters. Returns an Array of" -" :class:`aiogram.types.sticker.Sticker` objects." -msgstr "" - -#: aiogram.methods.get_forum_topic_icon_stickers.GetForumTopicIconStickers:3 of -msgid "Source: https://core.telegram.org/bots/api#getforumtopiciconstickers" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:29 -msgid "" -":code:`from aiogram.methods.get_forum_topic_icon_stickers import " -"GetForumTopicIconStickers`" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:30 -msgid "alias: :code:`from aiogram.methods import GetForumTopicIconStickers`" -msgstr "" - -#: ../../api/methods/get_forum_topic_icon_stickers.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_game_high_scores.po b/docs/locale/en/LC_MESSAGES/api/methods/get_game_high_scores.po deleted file mode 100644 index 192b0486..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_game_high_scores.po +++ /dev/null @@ -1,100 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_game_high_scores.rst:3 -msgid "getGameHighScores" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:5 -msgid "Returns: :obj:`List[GameHighScore]`" -msgstr "" - -#: aiogram.methods.get_game_high_scores.GetGameHighScores:1 of -msgid "" -"Use this method to get data for high score tables. Will return the score " -"of the specified user and several of their neighbors in a game. Returns " -"an Array of :class:`aiogram.types.game_high_score.GameHighScore` objects." -msgstr "" - -#: aiogram.methods.get_game_high_scores.GetGameHighScores:3 of -msgid "" -"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 their neighbors are not among them. Please note " -"that this behavior is subject to change." -msgstr "" - -#: aiogram.methods.get_game_high_scores.GetGameHighScores:5 of -msgid "Source: https://core.telegram.org/bots/api#getgamehighscores" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_game_high_scores.GetGameHighScores.user_id:1 of -msgid "Target user id" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_game_high_scores.GetGameHighScores.chat_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_game_high_scores.GetGameHighScores.message_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the sent " -"message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_game_high_scores.GetGameHighScores.inline_message_id:1 -#: of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:29 -msgid ":code:`from aiogram.methods.get_game_high_scores import GetGameHighScores`" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:30 -msgid "alias: :code:`from aiogram.methods import GetGameHighScores`" -msgstr "" - -#: ../../api/methods/get_game_high_scores.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_me.po b/docs/locale/en/LC_MESSAGES/api/methods/get_me.po deleted file mode 100644 index 5bcb644a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_me.po +++ /dev/null @@ -1,65 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_me.rst:3 -msgid "getMe" -msgstr "" - -#: ../../api/methods/get_me.rst:5 -msgid "Returns: :obj:`User`" -msgstr "" - -#: aiogram.methods.get_me.GetMe:1 of -msgid "" -"A simple method for testing your bot's authentication token. Requires no " -"parameters. Returns basic information about the bot in form of a " -":class:`aiogram.types.user.User` object." -msgstr "" - -#: aiogram.methods.get_me.GetMe:3 of -msgid "Source: https://core.telegram.org/bots/api#getme" -msgstr "" - -#: ../../api/methods/get_me.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_me.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_me.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_me.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_me.rst:29 -msgid ":code:`from aiogram.methods.get_me import GetMe`" -msgstr "" - -#: ../../api/methods/get_me.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMe`" -msgstr "" - -#: ../../api/methods/get_me.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_commands.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_commands.po deleted file mode 100644 index 1f59318d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_my_commands.po +++ /dev/null @@ -1,77 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_my_commands.rst:3 -msgid "getMyCommands" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:5 -msgid "Returns: :obj:`List[BotCommand]`" -msgstr "" - -#: aiogram.methods.get_my_commands.GetMyCommands:1 of -msgid "" -"Use this method to get the current list of the bot's commands for the " -"given scope and user language. Returns an Array of " -":class:`aiogram.types.bot_command.BotCommand` objects. If commands aren't" -" set, an empty list is returned." -msgstr "" - -#: aiogram.methods.get_my_commands.GetMyCommands:3 of -msgid "Source: https://core.telegram.org/bots/api#getmycommands" -msgstr "" - -#: ../../docstring aiogram.methods.get_my_commands.GetMyCommands.scope:1 of -msgid "" -"A JSON-serialized object, describing scope of users. Defaults to " -":class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`." -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_my_commands.GetMyCommands.language_code:1 of -msgid "A two-letter ISO 639-1 language code or an empty string" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:29 -msgid ":code:`from aiogram.methods.get_my_commands import GetMyCommands`" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMyCommands`" -msgstr "" - -#: ../../api/methods/get_my_commands.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_default_administrator_rights.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_default_administrator_rights.po deleted file mode 100644 index 58861170..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_my_default_administrator_rights.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_my_default_administrator_rights.rst:3 -msgid "getMyDefaultAdministratorRights" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:5 -msgid "Returns: :obj:`ChatAdministratorRights`" -msgstr "" - -#: aiogram.methods.get_my_default_administrator_rights.GetMyDefaultAdministratorRights:1 -#: of -msgid "" -"Use this method to get the current default administrator rights of the " -"bot. Returns " -":class:`aiogram.types.chat_administrator_rights.ChatAdministratorRights` " -"on success." -msgstr "" - -#: aiogram.methods.get_my_default_administrator_rights.GetMyDefaultAdministratorRights:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#getmydefaultadministratorrights" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_my_default_administrator_rights.GetMyDefaultAdministratorRights.for_channels:1 -#: of -msgid "" -"Pass :code:`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." -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:29 -msgid "" -":code:`from aiogram.methods.get_my_default_administrator_rights import " -"GetMyDefaultAdministratorRights`" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMyDefaultAdministratorRights`" -msgstr "" - -#: ../../api/methods/get_my_default_administrator_rights.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_description.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_description.po deleted file mode 100644 index b7ae81ab..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_my_description.po +++ /dev/null @@ -1,70 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/get_my_description.rst:3 -msgid "getMyDescription" -msgstr "" - -#: ../../api/methods/get_my_description.rst:5 -msgid "Returns: :obj:`BotDescription`" -msgstr "" - -#: aiogram.methods.get_my_description.GetMyDescription:1 of -msgid "" -"Use this method to get the current bot description for the given user " -"language. Returns :class:`aiogram.types.bot_description.BotDescription` " -"on success." -msgstr "" - -#: aiogram.methods.get_my_description.GetMyDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#getmydescription" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_my_description.GetMyDescription.language_code:1 of -msgid "A two-letter ISO 639-1 language code or an empty string" -msgstr "" - -#: ../../api/methods/get_my_description.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_my_description.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_my_description.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_my_description.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_my_description.rst:29 -msgid ":code:`from aiogram.methods.get_my_description import GetMyDescription`" -msgstr "" - -#: ../../api/methods/get_my_description.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMyDescription`" -msgstr "" - -#: ../../api/methods/get_my_description.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po deleted file mode 100644 index 0437b444..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_my_name.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/get_my_name.rst:3 -msgid "getMyName" -msgstr "" - -#: ../../api/methods/get_my_name.rst:5 -msgid "Returns: :obj:`BotName`" -msgstr "" - -#: aiogram.methods.get_my_name.GetMyName:1 of -msgid "" -"Use this method to get the current bot name for the given user language. " -"Returns :class:`aiogram.types.bot_name.BotName` on success." -msgstr "" - -#: aiogram.methods.get_my_name.GetMyName:3 of -msgid "Source: https://core.telegram.org/bots/api#getmyname" -msgstr "" - -#: ../../docstring aiogram.methods.get_my_name.GetMyName.language_code:1 of -msgid "A two-letter ISO 639-1 language code or an empty string" -msgstr "" - -#: ../../api/methods/get_my_name.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_my_name.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_my_name.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_my_name.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_my_name.rst:29 -msgid ":code:`from aiogram.methods.get_my_name import GetMyName`" -msgstr "" - -#: ../../api/methods/get_my_name.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMyName`" -msgstr "" - -#: ../../api/methods/get_my_name.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_my_short_description.po b/docs/locale/en/LC_MESSAGES/api/methods/get_my_short_description.po deleted file mode 100644 index 0d4e2e77..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_my_short_description.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/get_my_short_description.rst:3 -msgid "getMyShortDescription" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:5 -msgid "Returns: :obj:`BotShortDescription`" -msgstr "" - -#: aiogram.methods.get_my_short_description.GetMyShortDescription:1 of -msgid "" -"Use this method to get the current bot short description for the given " -"user language. Returns " -":class:`aiogram.types.bot_short_description.BotShortDescription` on " -"success." -msgstr "" - -#: aiogram.methods.get_my_short_description.GetMyShortDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#getmyshortdescription" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_my_short_description.GetMyShortDescription.language_code:1 -#: of -msgid "A two-letter ISO 639-1 language code or an empty string" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:29 -msgid "" -":code:`from aiogram.methods.get_my_short_description import " -"GetMyShortDescription`" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:30 -msgid "alias: :code:`from aiogram.methods import GetMyShortDescription`" -msgstr "" - -#: ../../api/methods/get_my_short_description.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_sticker_set.po b/docs/locale/en/LC_MESSAGES/api/methods/get_sticker_set.po deleted file mode 100644 index 3b71c37d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_sticker_set.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_sticker_set.rst:3 -msgid "getStickerSet" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:5 -msgid "Returns: :obj:`StickerSet`" -msgstr "" - -#: aiogram.methods.get_sticker_set.GetStickerSet:1 of -msgid "" -"Use this method to get a sticker set. On success, a " -":class:`aiogram.types.sticker_set.StickerSet` object is returned." -msgstr "" - -#: aiogram.methods.get_sticker_set.GetStickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#getstickerset" -msgstr "" - -#: ../../docstring aiogram.methods.get_sticker_set.GetStickerSet.name:1 of -msgid "Name of the sticker set" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:29 -msgid ":code:`from aiogram.methods.get_sticker_set import GetStickerSet`" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:30 -msgid "alias: :code:`from aiogram.methods import GetStickerSet`" -msgstr "" - -#: ../../api/methods/get_sticker_set.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po b/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po deleted file mode 100644 index 39a54f54..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_updates.po +++ /dev/null @@ -1,133 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/get_updates.rst:3 -msgid "getUpdates" -msgstr "" - -#: ../../api/methods/get_updates.rst:5 -msgid "Returns: :obj:`List[Update]`" -msgstr "" - -#: aiogram.methods.get_updates.GetUpdates:1 of -msgid "" -"Use this method to receive incoming updates using long polling (`wiki " -"`_). Returns " -"an Array of :class:`aiogram.types.update.Update` objects." -msgstr "" - -#: aiogram.methods.get_updates.GetUpdates:3 of -msgid "**Notes**" -msgstr "" - -#: aiogram.methods.get_updates.GetUpdates:5 of -msgid "**1.** This method will not work if an outgoing webhook is set up." -msgstr "" - -#: aiogram.methods.get_updates.GetUpdates:7 of -msgid "" -"**2.** In order to avoid getting duplicate updates, recalculate *offset* " -"after each server response." -msgstr "" - -#: aiogram.methods.get_updates.GetUpdates:9 of -msgid "Source: https://core.telegram.org/bots/api#getupdates" -msgstr "" - -#: ../../docstring aiogram.methods.get_updates.GetUpdates.offset:1 of -msgid "" -"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 " -"returned. An update is considered confirmed as soon as " -":class:`aiogram.methods.get_updates.GetUpdates` is called with an " -"*offset* higher than its *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 be forgotten." -msgstr "" - -#: ../../docstring aiogram.methods.get_updates.GetUpdates.limit:1 of -msgid "" -"Limits the number of updates to be retrieved. Values between 1-100 are " -"accepted. Defaults to 100." -msgstr "" - -#: ../../docstring aiogram.methods.get_updates.GetUpdates.timeout:1 of -msgid "" -"Timeout in seconds for long polling. Defaults to 0, i.e. usual short " -"polling. Should be positive, short polling should be used for testing " -"purposes only." -msgstr "" - -#: ../../docstring aiogram.methods.get_updates.GetUpdates.allowed_updates:1 of -msgid "" -"A JSON-serialized list of the update types you want your bot to receive. " -"For example, specify ['message', 'edited_channel_post', 'callback_query']" -" to only receive updates of these types. See " -":class:`aiogram.types.update.Update` for a complete list of available " -"update types. Specify an empty list to receive all update types except " -"*chat_member* (default). If not specified, the previous setting will be " -"used." -msgstr "" - -#: ../../api/methods/get_updates.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_updates.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_updates.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_updates.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_updates.rst:29 -msgid ":code:`from aiogram.methods.get_updates import GetUpdates`" -msgstr "" - -#: ../../api/methods/get_updates.rst:30 -msgid "alias: :code:`from aiogram.methods import GetUpdates`" -msgstr "" - -#: ../../api/methods/get_updates.rst:33 -msgid "With specific bot" -msgstr "" - -#~ msgid "" -#~ "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 " -#~ "returned. An update is considered " -#~ "confirmed as soon as " -#~ ":class:`aiogram.methods.get_updates.GetUpdates` is called" -#~ " with an *offset* higher than its " -#~ "*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." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_user_profile_photos.po b/docs/locale/en/LC_MESSAGES/api/methods/get_user_profile_photos.po deleted file mode 100644 index bbbeffbc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_user_profile_photos.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_user_profile_photos.rst:3 -msgid "getUserProfilePhotos" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:5 -msgid "Returns: :obj:`UserProfilePhotos`" -msgstr "" - -#: aiogram.methods.get_user_profile_photos.GetUserProfilePhotos:1 of -msgid "" -"Use this method to get a list of profile pictures for a user. Returns a " -":class:`aiogram.types.user_profile_photos.UserProfilePhotos` object." -msgstr "" - -#: aiogram.methods.get_user_profile_photos.GetUserProfilePhotos:3 of -msgid "Source: https://core.telegram.org/bots/api#getuserprofilephotos" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_user_profile_photos.GetUserProfilePhotos.user_id:1 of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_user_profile_photos.GetUserProfilePhotos.offset:1 of -msgid "" -"Sequential number of the first photo to be returned. By default, all " -"photos are returned." -msgstr "" - -#: ../../docstring -#: aiogram.methods.get_user_profile_photos.GetUserProfilePhotos.limit:1 of -msgid "" -"Limits the number of photos to be retrieved. Values between 1-100 are " -"accepted. Defaults to 100." -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:29 -msgid "" -":code:`from aiogram.methods.get_user_profile_photos import " -"GetUserProfilePhotos`" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:30 -msgid "alias: :code:`from aiogram.methods import GetUserProfilePhotos`" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:43 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/get_user_profile_photos.rst:45 -msgid ":meth:`aiogram.types.user.User.get_profile_photos`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/get_webhook_info.po b/docs/locale/en/LC_MESSAGES/api/methods/get_webhook_info.po deleted file mode 100644 index da85d1b4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/get_webhook_info.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/get_webhook_info.rst:3 -msgid "getWebhookInfo" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:5 -msgid "Returns: :obj:`WebhookInfo`" -msgstr "" - -#: aiogram.methods.get_webhook_info.GetWebhookInfo:1 of -msgid "" -"Use this method to get current webhook status. Requires no parameters. On" -" success, returns a :class:`aiogram.types.webhook_info.WebhookInfo` " -"object. If the bot is using " -":class:`aiogram.methods.get_updates.GetUpdates`, will return an object " -"with the *url* field empty." -msgstr "" - -#: aiogram.methods.get_webhook_info.GetWebhookInfo:3 of -msgid "Source: https://core.telegram.org/bots/api#getwebhookinfo" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:29 -msgid ":code:`from aiogram.methods.get_webhook_info import GetWebhookInfo`" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:30 -msgid "alias: :code:`from aiogram.methods import GetWebhookInfo`" -msgstr "" - -#: ../../api/methods/get_webhook_info.rst:33 -msgid "With specific bot" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/hide_general_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/hide_general_forum_topic.po deleted file mode 100644 index 500edf6d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/hide_general_forum_topic.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/hide_general_forum_topic.rst:3 -msgid "hideGeneralForumTopic" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.hide_general_forum_topic.HideGeneralForumTopic:1 of -msgid "" -"Use this method to hide the 'General' topic in a forum supergroup chat. " -"The bot must be an administrator in the chat for this to work and must " -"have the *can_manage_topics* administrator rights. The topic will be " -"automatically closed if it was open. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.hide_general_forum_topic.HideGeneralForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#hidegeneralforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.hide_general_forum_topic.HideGeneralForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:29 -msgid "" -":code:`from aiogram.methods.hide_general_forum_topic import " -"HideGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import HideGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/hide_general_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/index.po b/docs/locale/en/LC_MESSAGES/api/methods/index.po deleted file mode 100644 index eb6e82bb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/index.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/index.rst:3 -msgid "Methods" -msgstr "" - -#: ../../api/methods/index.rst:5 -msgid "Here is list of all available API methods:" -msgstr "" - -#: ../../api/methods/index.rst:10 -msgid "Getting updates" -msgstr "" - -#: ../../api/methods/index.rst:22 -msgid "Available methods" -msgstr "" - -#: ../../api/methods/index.rst:91 -msgid "Updating messages" -msgstr "" - -#: ../../api/methods/index.rst:104 -msgid "Stickers" -msgstr "" - -#: ../../api/methods/index.rst:120 -msgid "Inline mode" -msgstr "" - -#: ../../api/methods/index.rst:129 -msgid "Payments" -msgstr "" - -#: ../../api/methods/index.rst:140 -msgid "Telegram Passport" -msgstr "" - -#: ../../api/methods/index.rst:148 -msgid "Games" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/kick_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/kick_chat_member.po deleted file mode 100644 index d61507e4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/kick_chat_member.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/kick_chat_member.rst:3 -msgid "kickChatMember" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:29 -msgid ":code:`from aiogram.methods.kick_chat_member import KickChatMember`" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import KickChatMember`" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/kick_chat_member.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Use this method to ban a user " -#~ "in a group, a supergroup or a " -#~ "channel. In the case of supergroups " -#~ "and channels, the user will not be" -#~ " able to return to the chat on" -#~ " their own using invite links, etc.," -#~ " unless `unbanned " -#~ "`_ first." -#~ " The bot must be an administrator " -#~ "in the chat for this to work " -#~ "and must have the appropriate " -#~ "administrator rights. Returns :code:`True` on" -#~ " success." -#~ msgstr "" - -#~ msgid "Source: https://core.telegram.org/bots/api#banchatmember" -#~ msgstr "" - -#~ msgid "" -#~ "Unique identifier for the target group" -#~ " or username of the target supergroup" -#~ " or channel (in the format " -#~ ":code:`@channelusername`)" -#~ msgstr "" - -#~ msgid "Unique identifier of the target user" -#~ msgstr "" - -#~ msgid "" -#~ "Date when the user will be " -#~ "unbanned, unix time. If user is " -#~ "banned for more than 366 days or" -#~ " less than 30 seconds from the " -#~ "current time they are considered to " -#~ "be banned forever. Applied for " -#~ "supergroups and channels only." -#~ msgstr "" - -#~ msgid "" -#~ "Pass :code:`True` to delete all messages" -#~ " from the chat for the user " -#~ "that is being removed. If :code:`False`," -#~ " the user will be able to see" -#~ " messages in the group that were " -#~ "sent before the user was removed. " -#~ "Always :code:`True` for supergroups and " -#~ "channels." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/leave_chat.po b/docs/locale/en/LC_MESSAGES/api/methods/leave_chat.po deleted file mode 100644 index bef135f1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/leave_chat.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/leave_chat.rst:3 -msgid "leaveChat" -msgstr "" - -#: ../../api/methods/leave_chat.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.leave_chat.LeaveChat:1 of -msgid "" -"Use this method for your bot to leave a group, supergroup or channel. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.leave_chat.LeaveChat:3 of -msgid "Source: https://core.telegram.org/bots/api#leavechat" -msgstr "" - -#: ../../docstring aiogram.methods.leave_chat.LeaveChat.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/leave_chat.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/leave_chat.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/leave_chat.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/leave_chat.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/leave_chat.rst:29 -msgid ":code:`from aiogram.methods.leave_chat import LeaveChat`" -msgstr "" - -#: ../../api/methods/leave_chat.rst:30 -msgid "alias: :code:`from aiogram.methods import LeaveChat`" -msgstr "" - -#: ../../api/methods/leave_chat.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/leave_chat.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/leave_chat.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/leave_chat.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.leave`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/log_out.po b/docs/locale/en/LC_MESSAGES/api/methods/log_out.po deleted file mode 100644 index 49f02be5..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/log_out.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/log_out.rst:3 -msgid "logOut" -msgstr "" - -#: ../../api/methods/log_out.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.log_out.LogOut:1 of -msgid "" -"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. Returns :code:`True` on success. Requires no parameters." -msgstr "" - -#: aiogram.methods.log_out.LogOut:3 of -msgid "Source: https://core.telegram.org/bots/api#logout" -msgstr "" - -#: ../../api/methods/log_out.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/log_out.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/log_out.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/log_out.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/log_out.rst:29 -msgid ":code:`from aiogram.methods.log_out import LogOut`" -msgstr "" - -#: ../../api/methods/log_out.rst:30 -msgid "alias: :code:`from aiogram.methods import LogOut`" -msgstr "" - -#: ../../api/methods/log_out.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/log_out.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/pin_chat_message.po b/docs/locale/en/LC_MESSAGES/api/methods/pin_chat_message.po deleted file mode 100644 index 9a1e84e4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/pin_chat_message.po +++ /dev/null @@ -1,105 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/pin_chat_message.rst:3 -msgid "pinChatMessage" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.pin_chat_message.PinChatMessage:1 of -msgid "" -"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 and must have the 'can_pin_messages' " -"administrator right in a supergroup or 'can_edit_messages' administrator " -"right in a channel. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.pin_chat_message.PinChatMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#pinchatmessage" -msgstr "" - -#: ../../docstring aiogram.methods.pin_chat_message.PinChatMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.pin_chat_message.PinChatMessage.message_id:1 -#: of -msgid "Identifier of a message to pin" -msgstr "" - -#: ../../docstring -#: aiogram.methods.pin_chat_message.PinChatMessage.disable_notification:1 of -msgid "" -"Pass :code:`True` if it is not necessary to send a notification to all " -"chat members about the new pinned message. Notifications are always " -"disabled in channels and private chats." -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:29 -msgid ":code:`from aiogram.methods.pin_chat_message import PinChatMessage`" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:30 -msgid "alias: :code:`from aiogram.methods import PinChatMessage`" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:50 -msgid ":meth:`aiogram.types.message.Message.pin`" -msgstr "" - -#: ../../api/methods/pin_chat_message.rst:51 -msgid ":meth:`aiogram.types.chat.Chat.pin_message`" -msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/promote_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/promote_chat_member.po deleted file mode 100644 index 04ff8a9f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/promote_chat_member.po +++ /dev/null @@ -1,182 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/promote_chat_member.rst:3 -msgid "promoteChatMember" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.promote_chat_member.PromoteChatMember:1 of -msgid "" -"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 administrator rights. Pass :code:`False` for all " -"boolean parameters to demote a user. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.promote_chat_member.PromoteChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#promotechatmember" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.user_id:1 of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.is_anonymous:1 of -msgid "Pass :code:`True` if the administrator's presence in the chat is hidden" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_chat:1 of -msgid "" -"Pass :code:`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" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_messages:1 of -msgid "" -"Pass :code:`True` if the administrator can create channel posts, channels" -" only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_messages:1 of -msgid "" -"Pass :code:`True` if the administrator can edit messages of other users " -"and can pin messages, channels only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_delete_messages:1 -#: of -msgid "Pass :code:`True` if the administrator can delete messages of other users" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_video_chats:1 -#: of -msgid "Pass :code:`True` if the administrator can manage video chats" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_restrict_members:1 -#: of -msgid "" -"Pass :code:`True` if the administrator can restrict, ban or unban chat " -"members" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_promote_members:1 -#: of -msgid "" -"Pass :code:`True` if the administrator can add new administrators with a " -"subset of their own privileges or demote administrators that they have " -"promoted, directly or indirectly (promoted by administrators that were " -"appointed by him)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_change_info:1 of -msgid "" -"Pass :code:`True` if the administrator can change chat title, photo and " -"other settings" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_invite_users:1 of -msgid "Pass :code:`True` if the administrator can invite new users to the chat" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_pin_messages:1 of -msgid "Pass :code:`True` if the administrator can pin messages, supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_topics:1 of -msgid "" -"Pass :code:`True` if the user is allowed to create, rename, close, and " -"reopen forum topics, supergroups only" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:29 -msgid ":code:`from aiogram.methods.promote_chat_member import PromoteChatMember`" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import PromoteChatMember`" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/promote_chat_member.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.promote`" -msgstr "" - -#~ msgid "" -#~ "Pass :code:`True` if the administrator " -#~ "can add new administrators with a " -#~ "subset of their own privileges or " -#~ "demote administrators that he has " -#~ "promoted, directly or indirectly (promoted " -#~ "by administrators that were appointed by" -#~ " him)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/reopen_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/reopen_forum_topic.po deleted file mode 100644 index 09b013b4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/reopen_forum_topic.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/reopen_forum_topic.rst:3 -msgid "reopenForumTopic" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.reopen_forum_topic.ReopenForumTopic:1 of -msgid "" -"Use this method to reopen a closed topic in a forum supergroup chat. The " -"bot must be an administrator in the chat for this to work and must have " -"the *can_manage_topics* administrator rights, unless it is the creator of" -" the topic. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.reopen_forum_topic.ReopenForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#reopenforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.reopen_forum_topic.ReopenForumTopic.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.reopen_forum_topic.ReopenForumTopic.message_thread_id:1 of -msgid "Unique identifier for the target message thread of the forum topic" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:29 -msgid ":code:`from aiogram.methods.reopen_forum_topic import ReopenForumTopic`" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import ReopenForumTopic`" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/reopen_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/reopen_general_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/reopen_general_forum_topic.po deleted file mode 100644 index cd6c41db..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/reopen_general_forum_topic.po +++ /dev/null @@ -1,81 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/reopen_general_forum_topic.rst:3 -msgid "reopenGeneralForumTopic" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.reopen_general_forum_topic.ReopenGeneralForumTopic:1 of -msgid "" -"Use this method to reopen a closed 'General' topic in a forum supergroup " -"chat. The bot must be an administrator in the chat for this to work and " -"must have the *can_manage_topics* administrator rights. The topic will be" -" automatically unhidden if it was hidden. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.methods.reopen_general_forum_topic.ReopenGeneralForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#reopengeneralforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.reopen_general_forum_topic.ReopenGeneralForumTopic.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:29 -msgid "" -":code:`from aiogram.methods.reopen_general_forum_topic import " -"ReopenGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import ReopenGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/reopen_general_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/restrict_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/restrict_chat_member.po deleted file mode 100644 index 5bc53fcb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/restrict_chat_member.po +++ /dev/null @@ -1,118 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/restrict_chat_member.rst:3 -msgid "restrictChatMember" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.restrict_chat_member.RestrictChatMember:1 of -msgid "" -"Use this method to restrict a user in a supergroup. The bot must be an " -"administrator in the supergroup for this to work and must have the " -"appropriate administrator rights. Pass :code:`True` for all permissions " -"to lift restrictions from a user. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.restrict_chat_member.RestrictChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#restrictchatmember" -msgstr "" - -#: ../../docstring -#: aiogram.methods.restrict_chat_member.RestrictChatMember.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.restrict_chat_member.RestrictChatMember.user_id:1 of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring -#: aiogram.methods.restrict_chat_member.RestrictChatMember.permissions:1 of -msgid "A JSON-serialized object for new user permissions" -msgstr "" - -#: ../../docstring -#: aiogram.methods.restrict_chat_member.RestrictChatMember.use_independent_chat_permissions:1 -#: of -msgid "" -"Pass :code:`True` if chat permissions are set independently. Otherwise, " -"the *can_send_other_messages* and *can_add_web_page_previews* permissions" -" will imply the *can_send_messages*, *can_send_audios*, " -"*can_send_documents*, *can_send_photos*, *can_send_videos*, " -"*can_send_video_notes*, and *can_send_voice_notes* permissions; the " -"*can_send_polls* permission will imply the *can_send_messages* " -"permission." -msgstr "" - -#: ../../docstring -#: aiogram.methods.restrict_chat_member.RestrictChatMember.until_date:1 of -msgid "" -"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" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:29 -msgid "" -":code:`from aiogram.methods.restrict_chat_member import " -"RestrictChatMember`" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import RestrictChatMember`" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/restrict_chat_member.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.restrict`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/revoke_chat_invite_link.po b/docs/locale/en/LC_MESSAGES/api/methods/revoke_chat_invite_link.po deleted file mode 100644 index b7fee507..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/revoke_chat_invite_link.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/revoke_chat_invite_link.rst:3 -msgid "revokeChatInviteLink" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:5 -msgid "Returns: :obj:`ChatInviteLink`" -msgstr "" - -#: aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink:1 of -msgid "" -"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 administrator rights. Returns the revoked invite link as " -":class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink:3 of -msgid "Source: https://core.telegram.org/bots/api#revokechatinvitelink" -msgstr "" - -#: ../../docstring -#: aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink.chat_id:1 of -msgid "" -"Unique identifier of the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink.invite_link:1 -#: of -msgid "The invite link to revoke" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:29 -msgid "" -":code:`from aiogram.methods.revoke_chat_invite_link import " -"RevokeChatInviteLink`" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:30 -msgid "alias: :code:`from aiogram.methods import RevokeChatInviteLink`" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/revoke_chat_invite_link.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.revoke_invite_link`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po b/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po deleted file mode 100644 index a67de7cf..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_animation.po +++ /dev/null @@ -1,214 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_animation.rst:3 -msgid "sendAnimation" -msgstr "" - -#: ../../api/methods/send_animation.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_animation.SendAnimation:1 of -msgid "" -"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " -"without sound). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send animation files of up to 50 MB in size, this limit may be changed in" -" the future." -msgstr "" - -#: aiogram.methods.send_animation.SendAnimation:3 of -msgid "Source: https://core.telegram.org/bots/api#sendanimation" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.animation:1 of -msgid "" -"Animation to send. Pass a file_id as String to send an animation that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an animation from the Internet, or upload a " -"new animation using multipart/form-data. :ref:`More information on " -"Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.duration:1 of -msgid "Duration of sent animation in seconds" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.width:1 of -msgid "Animation width" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.height:1 of -msgid "Animation height" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.thumbnail:1 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.caption:1 of -msgid "" -"Animation caption (may also be used when resending animation by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.parse_mode:1 of -msgid "" -"Mode for parsing entities in the animation caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.has_spoiler:1 -#: of -msgid "" -"Pass :code:`True` if the animation needs to be covered with a spoiler " -"animation" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_animation.SendAnimation.allow_sending_without_reply:1 -#: of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_animation.SendAnimation.reply_markup:1 -#: of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_animation.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_animation.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_animation.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_animation.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_animation.rst:30 -msgid ":code:`from aiogram.methods.send_animation import SendAnimation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:31 -msgid "alias: :code:`from aiogram.methods import SendAnimation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_animation.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_animation.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_animation.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_animation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_animation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation`" -msgstr "" - -#: ../../api/methods/send_animation.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po b/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po deleted file mode 100644 index 63d6e0fc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_audio.po +++ /dev/null @@ -1,201 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_audio.rst:3 -msgid "sendAudio" -msgstr "" - -#: ../../api/methods/send_audio.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_audio.SendAudio:1 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display them in the music player. Your audio must be in the .MP3 or .M4A " -"format. On success, the sent :class:`aiogram.types.message.Message` is " -"returned. Bots can currently send audio files of up to 50 MB in size, " -"this limit may be changed in the future. For sending voice messages, use " -"the :class:`aiogram.methods.send_voice.SendVoice` method instead." -msgstr "" - -#: aiogram.methods.send_audio.SendAudio:4 of -msgid "Source: https://core.telegram.org/bots/api#sendaudio" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.audio:1 of -msgid "" -"Audio file to send. Pass a file_id as String to send an audio file that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an audio file from the Internet, or upload a " -"new one using multipart/form-data. :ref:`More information on Sending " -"Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.caption:1 of -msgid "Audio caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.parse_mode:1 of -msgid "" -"Mode for parsing entities in the audio caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.duration:1 of -msgid "Duration of the audio in seconds" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.performer:1 of -msgid "Performer" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.title:1 of -msgid "Track name" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.thumbnail:1 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.disable_notification:1 -#: of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.reply_to_message_id:1 -#: of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_audio.SendAudio.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_audio.SendAudio.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_audio.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_audio.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_audio.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_audio.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_audio.rst:30 -msgid ":code:`from aiogram.methods.send_audio import SendAudio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:31 -msgid "alias: :code:`from aiogram.methods import SendAudio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_audio.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_audio.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_audio.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_audio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_audio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio`" -msgstr "" - -#: ../../api/methods/send_audio.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_chat_action.po b/docs/locale/en/LC_MESSAGES/api/methods/send_chat_action.po deleted file mode 100644 index b379f03c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_chat_action.po +++ /dev/null @@ -1,122 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/send_chat_action.rst:3 -msgid "sendChatAction" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.send_chat_action.SendChatAction:1 of -msgid "" -"Use this method when you need to tell the user that something is " -"happening on the bot's side. The status is set for 5 seconds or less " -"(when a message arrives from your bot, Telegram clients clear its typing " -"status). Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.send_chat_action.SendChatAction:3 of -msgid "" -"Example: The `ImageBot `_ needs some time to " -"process a request and upload the image. Instead of sending a text message" -" along the lines of 'Retrieving image, please wait…', the bot may use " -":class:`aiogram.methods.send_chat_action.SendChatAction` with *action* = " -"*upload_photo*. The user will see a 'sending photo' status for the bot." -msgstr "" - -#: aiogram.methods.send_chat_action.SendChatAction:5 of -msgid "" -"We only recommend using this method when a response from the bot will " -"take a **noticeable** amount of time to arrive." -msgstr "" - -#: aiogram.methods.send_chat_action.SendChatAction:7 of -msgid "Source: https://core.telegram.org/bots/api#sendchataction" -msgstr "" - -#: ../../docstring aiogram.methods.send_chat_action.SendChatAction.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_chat_action.SendChatAction.action:1 of -msgid "" -"Type of action to broadcast. Choose one, depending on what the user is " -"about to receive: *typing* for `text messages " -"`_, *upload_photo* for " -"`photos `_, *record_video* " -"or *upload_video* for `videos " -"`_, *record_voice* or " -"*upload_voice* for `voice notes " -"`_, *upload_document* for " -"`general files `_, " -"*choose_sticker* for `stickers " -"`_, *find_location* for " -"`location data `_, " -"*record_video_note* or *upload_video_note* for `video notes " -"`_." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_chat_action.SendChatAction.message_thread_id:1 of -msgid "Unique identifier for the target message thread; supergroups only" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:29 -msgid ":code:`from aiogram.methods.send_chat_action import SendChatAction`" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:30 -msgid "alias: :code:`from aiogram.methods import SendChatAction`" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_chat_action.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.do`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po b/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po deleted file mode 100644 index 927d96ba..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_contact.po +++ /dev/null @@ -1,167 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_contact.rst:3 -msgid "sendContact" -msgstr "" - -#: ../../api/methods/send_contact.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_contact.SendContact:1 of -msgid "" -"Use this method to send phone contacts. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_contact.SendContact:3 of -msgid "Source: https://core.telegram.org/bots/api#sendcontact" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.phone_number:1 of -msgid "Contact's phone number" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.first_name:1 of -msgid "Contact's first name" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.message_thread_id:1 -#: of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.last_name:1 of -msgid "Contact's last name" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.vcard:1 of -msgid "" -"Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_contact.SendContact.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_contact.SendContact.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_contact.SendContact.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_contact.SendContact.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_contact.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_contact.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_contact.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_contact.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_contact.rst:30 -msgid ":code:`from aiogram.methods.send_contact import SendContact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:31 -msgid "alias: :code:`from aiogram.methods import SendContact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_contact.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_contact.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_contact.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_contact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_contact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact`" -msgstr "" - -#: ../../api/methods/send_contact.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove keyboard or to force a" -#~ " reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po b/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po deleted file mode 100644 index 9e9cdd1f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_dice.po +++ /dev/null @@ -1,154 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_dice.rst:3 -msgid "sendDice" -msgstr "" - -#: ../../api/methods/send_dice.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_dice.SendDice:1 of -msgid "" -"Use this method to send an animated emoji that will display a random " -"value. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.methods.send_dice.SendDice:3 of -msgid "Source: https://core.telegram.org/bots/api#senddice" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.emoji:1 of -msgid "" -"Emoji on which the dice throw animation is based. Currently, must be one " -"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" -" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " -"to '🎲'" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_dice.SendDice.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_dice.SendDice.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_dice.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_dice.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_dice.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_dice.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_dice.rst:30 -msgid ":code:`from aiogram.methods.send_dice import SendDice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:31 -msgid "alias: :code:`from aiogram.methods import SendDice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_dice.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_dice.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_dice.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_dice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_dice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice`" -msgstr "" - -#: ../../api/methods/send_dice.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_document.po b/docs/locale/en/LC_MESSAGES/api/methods/send_document.po deleted file mode 100644 index b5b89591..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_document.po +++ /dev/null @@ -1,199 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_document.rst:3 -msgid "sendDocument" -msgstr "" - -#: ../../api/methods/send_document.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_document.SendDocument:1 of -msgid "" -"Use this method to send general files. On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send files of any type of up to 50 MB in size, this limit may be changed " -"in the future." -msgstr "" - -#: aiogram.methods.send_document.SendDocument:3 of -msgid "Source: https://core.telegram.org/bots/api#senddocument" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.document:1 of -msgid "" -"File to send. Pass a file_id as String to send a file that exists on the " -"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" -" to get a file from the Internet, or upload a new one using multipart" -"/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.thumbnail:1 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.caption:1 of -msgid "" -"Document caption (may also be used when resending documents by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.parse_mode:1 of -msgid "" -"Mode for parsing entities in the document caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.disable_content_type_detection:1 -#: of -msgid "" -"Disables automatic server-side content type detection for files uploaded " -"using multipart/form-data" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_document.SendDocument.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_document.SendDocument.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_document.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_document.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_document.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_document.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_document.rst:30 -msgid ":code:`from aiogram.methods.send_document import SendDocument`" -msgstr "" - -#: ../../api/methods/send_document.rst:31 -msgid "alias: :code:`from aiogram.methods import SendDocument`" -msgstr "" - -#: ../../api/methods/send_document.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_document.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_document.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_document.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_document`" -msgstr "" - -#: ../../api/methods/send_document.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_document`" -msgstr "" - -#: ../../api/methods/send_document.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document`" -msgstr "" - -#: ../../api/methods/send_document.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document`" -msgstr "" - -#: ../../api/methods/send_document.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_game.po b/docs/locale/en/LC_MESSAGES/api/methods/send_game.po deleted file mode 100644 index 17feaa58..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_game.po +++ /dev/null @@ -1,147 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_game.rst:3 -msgid "sendGame" -msgstr "" - -#: ../../api/methods/send_game.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_game.SendGame:1 of -msgid "" -"Use this method to send a game. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_game.SendGame:3 of -msgid "Source: https://core.telegram.org/bots/api#sendgame" -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.chat_id:1 of -msgid "Unique identifier for the target chat" -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.game_short_name:1 of -msgid "" -"Short name of the game, serves as the unique identifier for the game. Set" -" up your games via `@BotFather `_." -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_game.SendGame.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_game.SendGame.reply_markup:1 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Play game_title' button will be shown. If not empty, the first " -"button must launch the game." -msgstr "" - -#: ../../api/methods/send_game.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_game.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_game.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_game.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_game.rst:30 -msgid ":code:`from aiogram.methods.send_game import SendGame`" -msgstr "" - -#: ../../api/methods/send_game.rst:31 -msgid "alias: :code:`from aiogram.methods import SendGame`" -msgstr "" - -#: ../../api/methods/send_game.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_game.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_game.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_game.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_game`" -msgstr "" - -#: ../../api/methods/send_game.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_game`" -msgstr "" - -#: ../../api/methods/send_game.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game`" -msgstr "" - -#: ../../api/methods/send_game.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game`" -msgstr "" - -#: ../../api/methods/send_game.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_. If empty, one 'Play " -#~ "game_title' button will be shown. If " -#~ "not empty, the first button must " -#~ "launch the game." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_invoice.po b/docs/locale/en/LC_MESSAGES/api/methods/send_invoice.po deleted file mode 100644 index 52234411..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_invoice.po +++ /dev/null @@ -1,277 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_invoice.rst:3 -msgid "sendInvoice" -msgstr "" - -#: ../../api/methods/send_invoice.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_invoice.SendInvoice:1 of -msgid "" -"Use this method to send invoices. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_invoice.SendInvoice:3 of -msgid "Source: https://core.telegram.org/bots/api#sendinvoice" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.title:1 of -msgid "Product name, 1-32 characters" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.description:1 of -msgid "Product description, 1-255 characters" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.payload:1 of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.provider_token:1 of -msgid "" -"Payment provider token, obtained via `@BotFather " -"`_" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.currency:1 of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.prices:1 of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.message_thread_id:1 -#: of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.max_tip_amount:1 of -msgid "" -"The maximum accepted amount for tips in the *smallest units* of the " -"currency (integer, **not** float/double). For example, for a maximum tip " -"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " -"parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.suggested_tip_amounts:1 of -msgid "" -"A JSON-serialized 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 " -"*max_tip_amount*." -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.start_parameter:1 -#: of -msgid "" -"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" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.provider_data:1 of -msgid "" -"JSON-serialized 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." -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.photo_url:1 of -msgid "" -"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." -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.photo_size:1 of -msgid "Photo size in bytes" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.photo_width:1 of -msgid "Photo width" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.photo_height:1 of -msgid "Photo height" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.need_name:1 of -msgid "" -"Pass :code:`True` if you require the user's full name to complete the " -"order" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.need_phone_number:1 -#: of -msgid "" -"Pass :code:`True` if you require the user's phone number to complete the " -"order" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.need_email:1 of -msgid "" -"Pass :code:`True` if you require the user's email address to complete the" -" order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.need_shipping_address:1 of -msgid "" -"Pass :code:`True` if you require the user's shipping address to complete " -"the order" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.send_phone_number_to_provider:1 of -msgid "Pass :code:`True` if the user's phone number should be sent to provider" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.send_email_to_provider:1 of -msgid "Pass :code:`True` if the user's email address should be sent to provider" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.is_flexible:1 of -msgid "Pass :code:`True` if the final price depends on the shipping method" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_invoice.SendInvoice.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_invoice.SendInvoice.reply_markup:1 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Pay :code:`total price`' button will be shown. If not empty, the " -"first button must be a Pay button." -msgstr "" - -#: ../../api/methods/send_invoice.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_invoice.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_invoice.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_invoice.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_invoice.rst:30 -msgid ":code:`from aiogram.methods.send_invoice import SendInvoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:31 -msgid "alias: :code:`from aiogram.methods import SendInvoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_invoice.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_invoice.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_invoice.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_invoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_invoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice`" -msgstr "" - -#: ../../api/methods/send_invoice.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_. If empty, one 'Pay " -#~ ":code:`total price`' button will be " -#~ "shown. If not empty, the first " -#~ "button must be a Pay button." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_location.po b/docs/locale/en/LC_MESSAGES/api/methods/send_location.po deleted file mode 100644 index d16be5e2..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_location.po +++ /dev/null @@ -1,183 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_location.rst:3 -msgid "sendLocation" -msgstr "" - -#: ../../api/methods/send_location.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_location.SendLocation:1 of -msgid "" -"Use this method to send point on the map. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_location.SendLocation:3 of -msgid "Source: https://core.telegram.org/bots/api#sendlocation" -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.latitude:1 of -msgid "Latitude of the location" -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.longitude:1 of -msgid "Longitude of the location" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.horizontal_accuracy:1 of -msgid "The radius of uncertainty for the location, measured in meters; 0-1500" -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.live_period:1 of -msgid "" -"Period in seconds for which the location will be updated (see `Live " -"Locations `_, should be between" -" 60 and 86400." -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.heading:1 of -msgid "" -"For live locations, a direction in which the user is moving, in degrees. " -"Must be between 1 and 360 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.proximity_alert_radius:1 of -msgid "" -"For live locations, a maximum distance for proximity alerts about " -"approaching another chat member, in meters. Must be between 1 and 100000 " -"if specified." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_location.SendLocation.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_location.SendLocation.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_location.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_location.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_location.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_location.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_location.rst:30 -msgid ":code:`from aiogram.methods.send_location import SendLocation`" -msgstr "" - -#: ../../api/methods/send_location.rst:31 -msgid "alias: :code:`from aiogram.methods import SendLocation`" -msgstr "" - -#: ../../api/methods/send_location.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_location.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_location.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_location.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_location`" -msgstr "" - -#: ../../api/methods/send_location.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_location`" -msgstr "" - -#: ../../api/methods/send_location.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location`" -msgstr "" - -#: ../../api/methods/send_location.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location`" -msgstr "" - -#: ../../api/methods/send_location.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po b/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po deleted file mode 100644 index 8d271fef..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_media_group.po +++ /dev/null @@ -1,139 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_media_group.rst:3 -msgid "sendMediaGroup" -msgstr "" - -#: ../../api/methods/send_media_group.rst:5 -msgid "Returns: :obj:`List[Message]`" -msgstr "" - -#: aiogram.methods.send_media_group.SendMediaGroup:1 of -msgid "" -"Use this method to send a group of photos, videos, documents or audios as" -" an album. Documents and audio files can be only grouped in an album with" -" messages of the same type. On success, an array of `Messages " -"`_ that were sent is " -"returned." -msgstr "" - -#: aiogram.methods.send_media_group.SendMediaGroup:3 of -msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" -msgstr "" - -#: ../../docstring aiogram.methods.send_media_group.SendMediaGroup.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_media_group.SendMediaGroup.media:1 of -msgid "" -"A JSON-serialized array describing messages to be sent, must include 2-10" -" items" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_media_group.SendMediaGroup.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_media_group.SendMediaGroup.disable_notification:1 of -msgid "" -"Sends messages `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_media_group.SendMediaGroup.protect_content:1 of -msgid "Protects the contents of the sent messages from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_media_group.SendMediaGroup.reply_to_message_id:1 of -msgid "If the messages are a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_media_group.SendMediaGroup.allow_sending_without_reply:1 -#: of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../api/methods/send_media_group.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_media_group.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_media_group.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_media_group.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_media_group.rst:30 -msgid ":code:`from aiogram.methods.send_media_group import SendMediaGroup`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:31 -msgid "alias: :code:`from aiogram.methods import SendMediaGroup`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_media_group.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_media_group.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_media_group.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_media_group`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_media_group`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group`" -msgstr "" - -#: ../../api/methods/send_media_group.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_message.po b/docs/locale/en/LC_MESSAGES/api/methods/send_message.po deleted file mode 100644 index fb028b0d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_message.po +++ /dev/null @@ -1,171 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_message.rst:3 -msgid "sendMessage" -msgstr "" - -#: ../../api/methods/send_message.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_message.SendMessage:1 of -msgid "" -"Use this method to send text messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_message.SendMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#sendmessage" -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.text:1 of -msgid "Text of the message to be sent, 1-4096 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.message_thread_id:1 -#: of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.parse_mode:1 of -msgid "" -"Mode for parsing entities in the message text. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in message text, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_message.SendMessage.disable_web_page_preview:1 of -msgid "Disables link previews for links in this message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_message.SendMessage.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_message.SendMessage.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_message.SendMessage.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_message.SendMessage.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_message.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_message.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_message.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_message.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_message.rst:30 -msgid ":code:`from aiogram.methods.send_message import SendMessage`" -msgstr "" - -#: ../../api/methods/send_message.rst:31 -msgid "alias: :code:`from aiogram.methods import SendMessage`" -msgstr "" - -#: ../../api/methods/send_message.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_message.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_message.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_message.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer`" -msgstr "" - -#: ../../api/methods/send_message.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply`" -msgstr "" - -#: ../../api/methods/send_message.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer`" -msgstr "" - -#: ../../api/methods/send_message.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer`" -msgstr "" - -#: ../../api/methods/send_message.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po b/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po deleted file mode 100644 index f733d653..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_photo.po +++ /dev/null @@ -1,183 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_photo.rst:3 -msgid "sendPhoto" -msgstr "" - -#: ../../api/methods/send_photo.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_photo.SendPhoto:1 of -msgid "" -"Use this method to send photos. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_photo.SendPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#sendphoto" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.photo:1 of -msgid "" -"Photo to send. Pass a file_id as String to send a photo that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a photo from the Internet, or upload a new photo using " -"multipart/form-data. The photo must be at most 10 MB in size. The photo's" -" width and height must not exceed 10000 in total. Width and height ratio " -"must be at most 20. :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.caption:1 of -msgid "" -"Photo caption (may also be used when resending photos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.parse_mode:1 of -msgid "" -"Mode for parsing entities in the photo caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.has_spoiler:1 of -msgid "" -"Pass :code:`True` if the photo needs to be covered with a spoiler " -"animation" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.disable_notification:1 -#: of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.reply_to_message_id:1 -#: of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_photo.SendPhoto.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_photo.SendPhoto.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_photo.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_photo.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_photo.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_photo.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_photo.rst:30 -msgid ":code:`from aiogram.methods.send_photo import SendPhoto`" -msgstr "" - -#: ../../api/methods/send_photo.rst:31 -msgid "alias: :code:`from aiogram.methods import SendPhoto`" -msgstr "" - -#: ../../api/methods/send_photo.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_photo.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_photo.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_photo.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_photo`" -msgstr "" - -#: ../../api/methods/send_photo.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_photo`" -msgstr "" - -#: ../../api/methods/send_photo.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo`" -msgstr "" - -#: ../../api/methods/send_photo.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo`" -msgstr "" - -#: ../../api/methods/send_photo.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po b/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po deleted file mode 100644 index f7a0573a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_poll.po +++ /dev/null @@ -1,216 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_poll.rst:3 -msgid "sendPoll" -msgstr "" - -#: ../../api/methods/send_poll.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_poll.SendPoll:1 of -msgid "" -"Use this method to send a native poll. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_poll.SendPoll:3 of -msgid "Source: https://core.telegram.org/bots/api#sendpoll" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.question:1 of -msgid "Poll question, 1-300 characters" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.options:1 of -msgid "" -"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " -"each" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.is_anonymous:1 of -msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.type:1 of -msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.allows_multiple_answers:1 -#: of -msgid "" -":code:`True`, if the poll allows multiple answers, ignored for polls in " -"quiz mode, defaults to :code:`False`" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.correct_option_id:1 of -msgid "" -"0-based identifier of the correct answer option, required for polls in " -"quiz mode" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.explanation:1 of -msgid "" -"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" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.explanation_parse_mode:1 -#: of -msgid "" -"Mode for parsing entities in the explanation. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.explanation_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the poll " -"explanation, which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.open_period:1 of -msgid "" -"Amount of time in seconds the poll will be active after creation, 5-600. " -"Can't be used together with *close_date*." -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.close_date:1 of -msgid "" -"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 *open_period*." -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.is_closed:1 of -msgid "" -"Pass :code:`True` if the poll needs to be immediately closed. This can be" -" useful for poll preview." -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_poll.SendPoll.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_poll.SendPoll.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_poll.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_poll.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_poll.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_poll.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_poll.rst:30 -msgid ":code:`from aiogram.methods.send_poll import SendPoll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:31 -msgid "alias: :code:`from aiogram.methods import SendPoll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_poll.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_poll.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_poll.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_poll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_poll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll`" -msgstr "" - -#: ../../api/methods/send_poll.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po b/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po deleted file mode 100644 index 96a8c342..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_sticker.po +++ /dev/null @@ -1,178 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_sticker.rst:3 -msgid "sendSticker" -msgstr "" - -#: ../../api/methods/send_sticker.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_sticker.SendSticker:1 of -msgid "" -"Use this method to send static .WEBP, `animated " -"`_ .TGS, or `video " -"`_ .WEBM " -"stickers. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.methods.send_sticker.SendSticker:3 of -msgid "Source: https://core.telegram.org/bots/api#sendsticker" -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.sticker:1 of -msgid "" -"Sticker to send. Pass a file_id as String to send a file that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " -"or .TGS sticker using multipart/form-data. :ref:`More information on " -"Sending Files » `. Video stickers can only be sent by a " -"file_id. Animated stickers can't be sent via an HTTP URL." -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.message_thread_id:1 -#: of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.emoji:1 of -msgid "Emoji associated with the sticker; only for just uploaded stickers" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_sticker.SendSticker.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.protect_content:1 -#: of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_sticker.SendSticker.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_sticker.SendSticker.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_sticker.SendSticker.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_sticker.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_sticker.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_sticker.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_sticker.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_sticker.rst:30 -msgid ":code:`from aiogram.methods.send_sticker import SendSticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:31 -msgid "alias: :code:`from aiogram.methods import SendSticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_sticker.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_sticker.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_sticker.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_sticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_sticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker`" -msgstr "" - -#: ../../api/methods/send_sticker.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" - -#~ msgid "" -#~ "Sticker to send. Pass a file_id as" -#~ " String to send a file that " -#~ "exists on the Telegram servers " -#~ "(recommended), pass an HTTP URL as " -#~ "a String for Telegram to get a " -#~ ".WEBP file from the Internet, or " -#~ "upload a new one using multipart" -#~ "/form-data. :ref:`More information on " -#~ "Sending Files » `" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po b/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po deleted file mode 100644 index ea79ba2d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_venue.po +++ /dev/null @@ -1,184 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_venue.rst:3 -msgid "sendVenue" -msgstr "" - -#: ../../api/methods/send_venue.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_venue.SendVenue:1 of -msgid "" -"Use this method to send information about a venue. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_venue.SendVenue:3 of -msgid "Source: https://core.telegram.org/bots/api#sendvenue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.latitude:1 of -msgid "Latitude of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.longitude:1 of -msgid "Longitude of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.title:1 of -msgid "Name of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.address:1 of -msgid "Address of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.foursquare_id:1 of -msgid "Foursquare identifier of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.foursquare_type:1 of -msgid "" -"Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.google_place_id:1 of -msgid "Google Places identifier of the venue" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.google_place_type:1 of -msgid "" -"Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.disable_notification:1 -#: of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.reply_to_message_id:1 -#: of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_venue.SendVenue.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_venue.SendVenue.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_venue.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_venue.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_venue.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_venue.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_venue.rst:30 -msgid ":code:`from aiogram.methods.send_venue import SendVenue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:31 -msgid "alias: :code:`from aiogram.methods import SendVenue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_venue.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_venue.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_venue.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_venue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_venue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue`" -msgstr "" - -#: ../../api/methods/send_venue.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_video.po b/docs/locale/en/LC_MESSAGES/api/methods/send_video.po deleted file mode 100644 index 2e2b836f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_video.po +++ /dev/null @@ -1,213 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_video.rst:3 -msgid "sendVideo" -msgstr "" - -#: ../../api/methods/send_video.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_video.SendVideo:1 of -msgid "" -"Use this method to send video files, Telegram clients support MPEG4 " -"videos (other formats may be sent as " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send video files of up to 50 MB in size, this limit may be changed in the" -" future." -msgstr "" - -#: aiogram.methods.send_video.SendVideo:3 of -msgid "Source: https://core.telegram.org/bots/api#sendvideo" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.video:1 of -msgid "" -"Video to send. Pass a file_id as String to send a video that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a video from the Internet, or upload a new video using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.duration:1 of -msgid "Duration of sent video in seconds" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.width:1 of -msgid "Video width" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.height:1 of -msgid "Video height" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.thumbnail:1 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.caption:1 of -msgid "" -"Video caption (may also be used when resending videos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.parse_mode:1 of -msgid "" -"Mode for parsing entities in the video caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.has_spoiler:1 of -msgid "" -"Pass :code:`True` if the video needs to be covered with a spoiler " -"animation" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.supports_streaming:1 of -msgid "Pass :code:`True` if the uploaded video is suitable for streaming" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.disable_notification:1 -#: of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.reply_to_message_id:1 -#: of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video.SendVideo.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_video.SendVideo.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_video.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_video.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_video.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_video.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_video.rst:30 -msgid ":code:`from aiogram.methods.send_video import SendVideo`" -msgstr "" - -#: ../../api/methods/send_video.rst:31 -msgid "alias: :code:`from aiogram.methods import SendVideo`" -msgstr "" - -#: ../../api/methods/send_video.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_video.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_video.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_video.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_video`" -msgstr "" - -#: ../../api/methods/send_video.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_video`" -msgstr "" - -#: ../../api/methods/send_video.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video`" -msgstr "" - -#: ../../api/methods/send_video.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video`" -msgstr "" - -#: ../../api/methods/send_video.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po b/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po deleted file mode 100644 index f9c80a5e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_video_note.po +++ /dev/null @@ -1,182 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_video_note.rst:3 -msgid "sendVideoNote" -msgstr "" - -#: ../../api/methods/send_video_note.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_video_note.SendVideoNote:1 of -msgid "" -"As of `v.4.0 `_, " -"Telegram clients support rounded square MPEG4 videos of up to 1 minute " -"long. Use this method to send video messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.methods.send_video_note.SendVideoNote:3 of -msgid "Source: https://core.telegram.org/bots/api#sendvideonote" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.video_note:1 -#: of -msgid "" -"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video_note.SendVideoNote.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.duration:1 of -msgid "Duration of sent video in seconds" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.length:1 of -msgid "Video width and height, i.e. diameter of the video message" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.thumbnail:1 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video_note.SendVideoNote.disable_notification:1 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video_note.SendVideoNote.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video_note.SendVideoNote.reply_to_message_id:1 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_video_note.SendVideoNote.allow_sending_without_reply:1 -#: of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_video_note.SendVideoNote.reply_markup:1 -#: of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_video_note.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_video_note.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_video_note.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_video_note.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_video_note.rst:30 -msgid ":code:`from aiogram.methods.send_video_note import SendVideoNote`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:31 -msgid "alias: :code:`from aiogram.methods import SendVideoNote`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_video_note.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_video_note.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_video_note.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_video_note`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_video_note`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note`" -msgstr "" - -#: ../../api/methods/send_video_note.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po b/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po deleted file mode 100644 index d46ac20e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/send_voice.po +++ /dev/null @@ -1,183 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/send_voice.rst:3 -msgid "sendVoice" -msgstr "" - -#: ../../api/methods/send_voice.rst:5 -msgid "Returns: :obj:`Message`" -msgstr "" - -#: aiogram.methods.send_voice.SendVoice:1 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display the file as a playable voice message. For this to work, your " -"audio must be in an .OGG file encoded with OPUS (other formats may be " -"sent as :class:`aiogram.types.audio.Audio` or " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send voice messages of up to 50 MB in size, this limit may be changed in " -"the future." -msgstr "" - -#: aiogram.methods.send_voice.SendVoice:3 of -msgid "Source: https://core.telegram.org/bots/api#sendvoice" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.voice:1 of -msgid "" -"Audio file to send. Pass a file_id as String to send a file that exists " -"on the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.message_thread_id:1 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.caption:1 of -msgid "Voice message caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.parse_mode:1 of -msgid "" -"Mode for parsing entities in the voice message caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.caption_entities:1 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.duration:1 of -msgid "Duration of the voice message in seconds" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.disable_notification:1 -#: of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.protect_content:1 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.reply_to_message_id:1 -#: of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.send_voice.SendVoice.allow_sending_without_reply:1 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: ../../docstring aiogram.methods.send_voice.SendVoice.reply_markup:1 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: ../../api/methods/send_voice.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/send_voice.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/send_voice.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/send_voice.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/send_voice.rst:30 -msgid ":code:`from aiogram.methods.send_voice import SendVoice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:31 -msgid "alias: :code:`from aiogram.methods import SendVoice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/send_voice.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/send_voice.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/send_voice.rst:51 -msgid ":meth:`aiogram.types.message.Message.answer_voice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:52 -msgid ":meth:`aiogram.types.message.Message.reply_voice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:53 -msgid ":meth:`aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:54 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice`" -msgstr "" - -#: ../../api/methods/send_voice.rst:55 -msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm`" -msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_administrator_custom_title.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_administrator_custom_title.po deleted file mode 100644 index ee28db9b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_administrator_custom_title.po +++ /dev/null @@ -1,102 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:3 -msgid "setChatAdministratorCustomTitle" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle:1 -#: of -msgid "" -"Use this method to set a custom title for an administrator in a " -"supergroup promoted by the bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#setchatadministratorcustomtitle" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle.user_id:1 -#: of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle.custom_title:1 -#: of -msgid "" -"New custom title for the administrator; 0-16 characters, emoji are not " -"allowed" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:29 -msgid "" -":code:`from aiogram.methods.set_chat_administrator_custom_title import " -"SetChatAdministratorCustomTitle`" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatAdministratorCustomTitle`" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_administrator_custom_title.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.set_administrator_custom_title`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_description.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_description.po deleted file mode 100644 index 3c42acee..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_description.po +++ /dev/null @@ -1,92 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_description.rst:3 -msgid "setChatDescription" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_description.SetChatDescription:1 of -msgid "" -"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 administrator rights. Returns :code:`True` " -"on success." -msgstr "" - -#: aiogram.methods.set_chat_description.SetChatDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#setchatdescription" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_description.SetChatDescription.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_description.SetChatDescription.description:1 of -msgid "New chat description, 0-255 characters" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:29 -msgid "" -":code:`from aiogram.methods.set_chat_description import " -"SetChatDescription`" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatDescription`" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_description.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.set_description`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_menu_button.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_menu_button.po deleted file mode 100644 index b40236df..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_menu_button.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_menu_button.rst:3 -msgid "setChatMenuButton" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_menu_button.SetChatMenuButton:1 of -msgid "" -"Use this method to change the bot's menu button in a private chat, or the" -" default menu button. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_chat_menu_button.SetChatMenuButton:3 of -msgid "Source: https://core.telegram.org/bots/api#setchatmenubutton" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_menu_button.SetChatMenuButton.chat_id:1 of -msgid "" -"Unique identifier for the target private chat. If not specified, default " -"bot's menu button will be changed" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_menu_button.SetChatMenuButton.menu_button:1 of -msgid "" -"A JSON-serialized object for the bot's new menu button. Defaults to " -":class:`aiogram.types.menu_button_default.MenuButtonDefault`" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:29 -msgid ":code:`from aiogram.methods.set_chat_menu_button import SetChatMenuButton`" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatMenuButton`" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_menu_button.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_permissions.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_permissions.po deleted file mode 100644 index ff34fff6..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_permissions.po +++ /dev/null @@ -1,105 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_chat_permissions.rst:3 -msgid "setChatPermissions" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_permissions.SetChatPermissions:1 of -msgid "" -"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 *can_restrict_members* administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.set_chat_permissions.SetChatPermissions:3 of -msgid "Source: https://core.telegram.org/bots/api#setchatpermissions" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_permissions.SetChatPermissions.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_permissions.SetChatPermissions.permissions:1 of -msgid "A JSON-serialized object for new default chat permissions" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_permissions.SetChatPermissions.use_independent_chat_permissions:1 -#: of -msgid "" -"Pass :code:`True` if chat permissions are set independently. Otherwise, " -"the *can_send_other_messages* and *can_add_web_page_previews* permissions" -" will imply the *can_send_messages*, *can_send_audios*, " -"*can_send_documents*, *can_send_photos*, *can_send_videos*, " -"*can_send_video_notes*, and *can_send_voice_notes* permissions; the " -"*can_send_polls* permission will imply the *can_send_messages* " -"permission." -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:29 -msgid "" -":code:`from aiogram.methods.set_chat_permissions import " -"SetChatPermissions`" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatPermissions`" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_permissions.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.set_permissions`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_photo.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_photo.po deleted file mode 100644 index ab0cc9a7..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_photo.po +++ /dev/null @@ -1,84 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_photo.rst:3 -msgid "setChatPhoto" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_photo.SetChatPhoto:1 of -msgid "" -"Use this method to set a new profile photo for the chat. 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 administrator rights. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_chat_photo.SetChatPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#setchatphoto" -msgstr "" - -#: ../../docstring aiogram.methods.set_chat_photo.SetChatPhoto.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.set_chat_photo.SetChatPhoto.photo:1 of -msgid "New chat photo, uploaded using multipart/form-data" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:29 -msgid ":code:`from aiogram.methods.set_chat_photo import SetChatPhoto`" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatPhoto`" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:43 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_photo.rst:45 -msgid ":meth:`aiogram.types.chat.Chat.set_photo`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_sticker_set.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_sticker_set.po deleted file mode 100644 index b5441109..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_sticker_set.po +++ /dev/null @@ -1,92 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_sticker_set.rst:3 -msgid "setChatStickerSet" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_sticker_set.SetChatStickerSet:1 of -msgid "" -"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 administrator rights. Use the field *can_set_sticker_set* " -"optionally returned in :class:`aiogram.methods.get_chat.GetChat` requests" -" to check if the bot can use this method. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.methods.set_chat_sticker_set.SetChatStickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#setchatstickerset" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_sticker_set.SetChatStickerSet.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_chat_sticker_set.SetChatStickerSet.sticker_set_name:1 of -msgid "Name of the sticker set to be set as the group sticker set" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:29 -msgid ":code:`from aiogram.methods.set_chat_sticker_set import SetChatStickerSet`" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatStickerSet`" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_sticker_set.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.set_sticker_set`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_title.po b/docs/locale/en/LC_MESSAGES/api/methods/set_chat_title.po deleted file mode 100644 index da3c936e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_chat_title.po +++ /dev/null @@ -1,91 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_chat_title.rst:3 -msgid "setChatTitle" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_chat_title.SetChatTitle:1 of -msgid "" -"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 administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.set_chat_title.SetChatTitle:3 of -msgid "Source: https://core.telegram.org/bots/api#setchattitle" -msgstr "" - -#: ../../docstring aiogram.methods.set_chat_title.SetChatTitle.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.set_chat_title.SetChatTitle.title:1 of -msgid "New chat title, 1-128 characters" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:29 -msgid ":code:`from aiogram.methods.set_chat_title import SetChatTitle`" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:30 -msgid "alias: :code:`from aiogram.methods import SetChatTitle`" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_chat_title.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.set_title`" -msgstr "" - -#~ msgid "New chat title, 1-255 characters" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_custom_emoji_sticker_set_thumbnail.po b/docs/locale/en/LC_MESSAGES/api/methods/set_custom_emoji_sticker_set_thumbnail.po deleted file mode 100644 index afadc9a2..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_custom_emoji_sticker_set_thumbnail.po +++ /dev/null @@ -1,90 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:3 -msgid "setCustomEmojiStickerSetThumbnail" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_custom_emoji_sticker_set_thumbnail.SetCustomEmojiStickerSetThumbnail:1 -#: of -msgid "" -"Use this method to set the thumbnail of a custom emoji sticker set. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_custom_emoji_sticker_set_thumbnail.SetCustomEmojiStickerSetThumbnail:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#setcustomemojistickersetthumbnail" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_custom_emoji_sticker_set_thumbnail.SetCustomEmojiStickerSetThumbnail.name:1 -#: of -msgid "Sticker set name" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_custom_emoji_sticker_set_thumbnail.SetCustomEmojiStickerSetThumbnail.custom_emoji_id:1 -#: of -msgid "" -"Custom emoji identifier of a sticker from the sticker set; pass an empty " -"string to drop the thumbnail and use the first sticker as the thumbnail." -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:29 -msgid "" -":code:`from aiogram.methods.set_custom_emoji_sticker_set_thumbnail import" -" SetCustomEmojiStickerSetThumbnail`" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:30 -msgid "" -"alias: :code:`from aiogram.methods import " -"SetCustomEmojiStickerSetThumbnail`" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_custom_emoji_sticker_set_thumbnail.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_game_score.po b/docs/locale/en/LC_MESSAGES/api/methods/set_game_score.po deleted file mode 100644 index 215ab0ab..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_game_score.po +++ /dev/null @@ -1,112 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_game_score.rst:3 -msgid "setGameScore" -msgstr "" - -#: ../../api/methods/set_game_score.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.set_game_score.SetGameScore:1 of -msgid "" -"Use this method to set the score of the specified user in a game message." -" On success, if the message is not an inline message, the " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned. Returns an error, if the new score is not " -"greater than the user's current score in the chat and *force* is " -":code:`False`." -msgstr "" - -#: aiogram.methods.set_game_score.SetGameScore:3 of -msgid "Source: https://core.telegram.org/bots/api#setgamescore" -msgstr "" - -#: ../../docstring aiogram.methods.set_game_score.SetGameScore.user_id:1 of -msgid "User identifier" -msgstr "" - -#: ../../docstring aiogram.methods.set_game_score.SetGameScore.score:1 of -msgid "New score, must be non-negative" -msgstr "" - -#: ../../docstring aiogram.methods.set_game_score.SetGameScore.force:1 of -msgid "" -"Pass :code:`True` if the high score is allowed to decrease. This can be " -"useful when fixing mistakes or banning cheaters" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_game_score.SetGameScore.disable_edit_message:1 of -msgid "" -"Pass :code:`True` if the game message should not be automatically edited " -"to include the current scoreboard" -msgstr "" - -#: ../../docstring aiogram.methods.set_game_score.SetGameScore.chat_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat" -msgstr "" - -#: ../../docstring aiogram.methods.set_game_score.SetGameScore.message_id:1 of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the sent " -"message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_game_score.SetGameScore.inline_message_id:1 of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../api/methods/set_game_score.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_game_score.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_game_score.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_game_score.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_game_score.rst:29 -msgid ":code:`from aiogram.methods.set_game_score import SetGameScore`" -msgstr "" - -#: ../../api/methods/set_game_score.rst:30 -msgid "alias: :code:`from aiogram.methods import SetGameScore`" -msgstr "" - -#: ../../api/methods/set_game_score.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_game_score.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_commands.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_commands.po deleted file mode 100644 index 8a9400fb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_my_commands.po +++ /dev/null @@ -1,100 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_my_commands.rst:3 -msgid "setMyCommands" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_my_commands.SetMyCommands:1 of -msgid "" -"Use this method to change the list of the bot's commands. See `this " -"manual `_ for more " -"details about bot commands. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_my_commands.SetMyCommands:3 of -msgid "Source: https://core.telegram.org/bots/api#setmycommands" -msgstr "" - -#: ../../docstring aiogram.methods.set_my_commands.SetMyCommands.commands:1 of -msgid "" -"A JSON-serialized list of bot commands to be set as the list of the bot's" -" commands. At most 100 commands can be specified." -msgstr "" - -#: ../../docstring aiogram.methods.set_my_commands.SetMyCommands.scope:1 of -msgid "" -"A JSON-serialized object, describing scope of users for which the " -"commands are relevant. Defaults to " -":class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`." -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_commands.SetMyCommands.language_code:1 of -msgid "" -"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" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:29 -msgid ":code:`from aiogram.methods.set_my_commands import SetMyCommands`" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:30 -msgid "alias: :code:`from aiogram.methods import SetMyCommands`" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_my_commands.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Use this method to change the list" -#~ " of the bot's commands. See " -#~ "`https://core.telegram.org/bots#commands " -#~ "`_`https://core.telegram.org/bots#commands" -#~ " `_ for more" -#~ " details about bot commands. Returns " -#~ ":code:`True` on success." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_default_administrator_rights.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_default_administrator_rights.po deleted file mode 100644 index 87382f51..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_my_default_administrator_rights.po +++ /dev/null @@ -1,102 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_my_default_administrator_rights.rst:3 -msgid "setMyDefaultAdministratorRights" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_my_default_administrator_rights.SetMyDefaultAdministratorRights:1 -#: of -msgid "" -"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 free to modify the list " -"before adding the bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_my_default_administrator_rights.SetMyDefaultAdministratorRights:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#setmydefaultadministratorrights" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_default_administrator_rights.SetMyDefaultAdministratorRights.rights:1 -#: of -msgid "" -"A JSON-serialized object describing new default administrator rights. If " -"not specified, the default administrator rights will be cleared." -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_default_administrator_rights.SetMyDefaultAdministratorRights.for_channels:1 -#: of -msgid "" -"Pass :code:`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." -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:29 -msgid "" -":code:`from aiogram.methods.set_my_default_administrator_rights import " -"SetMyDefaultAdministratorRights`" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:30 -msgid "alias: :code:`from aiogram.methods import SetMyDefaultAdministratorRights`" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_my_default_administrator_rights.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "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. Returns :code:`True` on success." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_description.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_description.po deleted file mode 100644 index b266de07..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_my_description.po +++ /dev/null @@ -1,83 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_my_description.rst:3 -msgid "setMyDescription" -msgstr "" - -#: ../../api/methods/set_my_description.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_my_description.SetMyDescription:1 of -msgid "" -"Use this method to change the bot's description, which is shown in the " -"chat with the bot if the chat is empty. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_my_description.SetMyDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#setmydescription" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_description.SetMyDescription.description:1 of -msgid "" -"New bot description; 0-512 characters. Pass an empty string to remove the" -" dedicated description for the given language." -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_description.SetMyDescription.language_code:1 of -msgid "" -"A two-letter ISO 639-1 language code. If empty, the description will be " -"applied to all users for whose language there is no dedicated " -"description." -msgstr "" - -#: ../../api/methods/set_my_description.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_my_description.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_my_description.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_my_description.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_my_description.rst:29 -msgid ":code:`from aiogram.methods.set_my_description import SetMyDescription`" -msgstr "" - -#: ../../api/methods/set_my_description.rst:30 -msgid "alias: :code:`from aiogram.methods import SetMyDescription`" -msgstr "" - -#: ../../api/methods/set_my_description.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_my_description.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po deleted file mode 100644 index b5befc8d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_my_name.po +++ /dev/null @@ -1,78 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/set_my_name.rst:3 -msgid "setMyName" -msgstr "" - -#: ../../api/methods/set_my_name.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_my_name.SetMyName:1 of -msgid "Use this method to change the bot's name. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_my_name.SetMyName:3 of -msgid "Source: https://core.telegram.org/bots/api#setmyname" -msgstr "" - -#: ../../docstring aiogram.methods.set_my_name.SetMyName.name:1 of -msgid "" -"New bot name; 0-64 characters. Pass an empty string to remove the " -"dedicated name for the given language." -msgstr "" - -#: ../../docstring aiogram.methods.set_my_name.SetMyName.language_code:1 of -msgid "" -"A two-letter ISO 639-1 language code. If empty, the name will be shown to" -" all users for whose language there is no dedicated name." -msgstr "" - -#: ../../api/methods/set_my_name.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_my_name.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_my_name.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_my_name.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_my_name.rst:29 -msgid ":code:`from aiogram.methods.set_my_name import SetMyName`" -msgstr "" - -#: ../../api/methods/set_my_name.rst:30 -msgid "alias: :code:`from aiogram.methods import SetMyName`" -msgstr "" - -#: ../../api/methods/set_my_name.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_my_name.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_my_short_description.po b/docs/locale/en/LC_MESSAGES/api/methods/set_my_short_description.po deleted file mode 100644 index eb4e343b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_my_short_description.po +++ /dev/null @@ -1,88 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_my_short_description.rst:3 -msgid "setMyShortDescription" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_my_short_description.SetMyShortDescription:1 of -msgid "" -"Use this method to change the bot's short description, which is shown on " -"the bot's profile page and is sent together with the link when users " -"share the bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_my_short_description.SetMyShortDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#setmyshortdescription" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_short_description.SetMyShortDescription.short_description:1 -#: of -msgid "" -"New short description for the bot; 0-120 characters. Pass an empty string" -" to remove the dedicated short description for the given language." -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_my_short_description.SetMyShortDescription.language_code:1 -#: of -msgid "" -"A two-letter ISO 639-1 language code. If empty, the short description " -"will be applied to all users for whose language there is no dedicated " -"short description." -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:29 -msgid "" -":code:`from aiogram.methods.set_my_short_description import " -"SetMyShortDescription`" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:30 -msgid "alias: :code:`from aiogram.methods import SetMyShortDescription`" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_my_short_description.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_passport_data_errors.po b/docs/locale/en/LC_MESSAGES/api/methods/set_passport_data_errors.po deleted file mode 100644 index 5fb2b563..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_passport_data_errors.po +++ /dev/null @@ -1,87 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_passport_data_errors.rst:3 -msgid "setPassportDataErrors" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_passport_data_errors.SetPassportDataErrors:1 of -msgid "" -"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 (the contents of the field for which you " -"returned the error must change). Returns :code:`True` on success. 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." -msgstr "" - -#: aiogram.methods.set_passport_data_errors.SetPassportDataErrors:4 of -msgid "Source: https://core.telegram.org/bots/api#setpassportdataerrors" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_passport_data_errors.SetPassportDataErrors.user_id:1 of -msgid "User identifier" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_passport_data_errors.SetPassportDataErrors.errors:1 of -msgid "A JSON-serialized array describing the errors" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:29 -msgid "" -":code:`from aiogram.methods.set_passport_data_errors import " -"SetPassportDataErrors`" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:30 -msgid "alias: :code:`from aiogram.methods import SetPassportDataErrors`" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_passport_data_errors.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_emoji_list.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_emoji_list.po deleted file mode 100644 index ad3536b3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_emoji_list.po +++ /dev/null @@ -1,81 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_emoji_list.rst:3 -msgid "setStickerEmojiList" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_emoji_list.SetStickerEmojiList:1 of -msgid "" -"Use this method to change the list of emoji assigned to a regular or " -"custom emoji sticker. The sticker must belong to a sticker set created by" -" the bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_emoji_list.SetStickerEmojiList:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickeremojilist" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_emoji_list.SetStickerEmojiList.sticker:1 of -msgid "File identifier of the sticker" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_emoji_list.SetStickerEmojiList.emoji_list:1 of -msgid "A JSON-serialized list of 1-20 emoji associated with the sticker" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_emoji_list import " -"SetStickerEmojiList`" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerEmojiList`" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_emoji_list.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_keywords.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_keywords.po deleted file mode 100644 index 22dfb120..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_keywords.po +++ /dev/null @@ -1,83 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_keywords.rst:3 -msgid "setStickerKeywords" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_keywords.SetStickerKeywords:1 of -msgid "" -"Use this method to change search keywords assigned to a regular or custom" -" emoji sticker. The sticker must belong to a sticker set created by the " -"bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_keywords.SetStickerKeywords:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickerkeywords" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_keywords.SetStickerKeywords.sticker:1 of -msgid "File identifier of the sticker" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_keywords.SetStickerKeywords.keywords:1 of -msgid "" -"A JSON-serialized list of 0-20 search keywords for the sticker with total" -" length of up to 64 characters" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_keywords import " -"SetStickerKeywords`" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerKeywords`" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_keywords.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_mask_position.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_mask_position.po deleted file mode 100644 index 8efc08ba..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_mask_position.po +++ /dev/null @@ -1,86 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_mask_position.rst:3 -msgid "setStickerMaskPosition" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_mask_position.SetStickerMaskPosition:1 of -msgid "" -"Use this method to change the `mask position " -"`_ of a mask sticker. " -"The sticker must belong to a sticker set that was created by the bot. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_mask_position.SetStickerMaskPosition:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickermaskposition" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_mask_position.SetStickerMaskPosition.sticker:1 -#: of -msgid "File identifier of the sticker" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_mask_position.SetStickerMaskPosition.mask_position:1 -#: of -msgid "" -"A JSON-serialized object with the position where the mask should be " -"placed on faces. Omit the parameter to remove the mask position." -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_mask_position import " -"SetStickerMaskPosition`" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerMaskPosition`" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_mask_position.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_position_in_set.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_position_in_set.po deleted file mode 100644 index c7ef9e7e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_position_in_set.po +++ /dev/null @@ -1,90 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_sticker_position_in_set.rst:3 -msgid "setStickerPositionInSet" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet:1 of -msgid "" -"Use this method to move a sticker in a set created by the bot to a " -"specific position. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickerpositioninset" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet.sticker:1 -#: of -msgid "File identifier of the sticker" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet.position:1 -#: of -msgid "New sticker position in the set, zero-based" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_position_in_set import " -"SetStickerPositionInSet`" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerPositionInSet`" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/set_sticker_position_in_set.rst:50 -msgid ":meth:`aiogram.types.sticker.Sticker.set_position_in_set`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumb.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumb.po deleted file mode 100644 index 8e279db0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumb.po +++ /dev/null @@ -1,114 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_set_thumb.rst:3 -msgid "setStickerSetThumb" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_set_thumb import " -"SetStickerSetThumb`" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerSetThumb`" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumb.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "Use this method to set the " -#~ "thumbnail of a sticker set. Animated " -#~ "thumbnails can be set for animated " -#~ "sticker sets only. Video thumbnails can" -#~ " be set only for video sticker " -#~ "sets only. Returns :code:`True` on " -#~ "success." -#~ msgstr "" - -#~ msgid "Source: https://core.telegram.org/bots/api#setstickersetthumb" -#~ msgstr "" - -#~ msgid "Sticker set name" -#~ msgstr "" - -#~ msgid "User identifier of the sticker set owner" -#~ msgstr "" - -#~ msgid "" -#~ "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 `_`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 `_`https://core.telegram.org/stickers" -#~ "#video-sticker-requirements " -#~ "`_ for video sticker technical" -#~ " requirements. Pass a *file_id* as a" -#~ " String to send a file that " -#~ "already exists on the Telegram servers," -#~ " pass an HTTP URL as a String" -#~ " for Telegram to get a file " -#~ "from the Internet, or upload a new" -#~ " one using multipart/form-data. :ref:`More" -#~ " information on Sending Files » " -#~ "`. Animated sticker set " -#~ "thumbnails can't be uploaded via HTTP" -#~ " URL." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumbnail.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumbnail.po deleted file mode 100644 index c0d9b5ee..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_thumbnail.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:3 -msgid "setStickerSetThumbnail" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_set_thumbnail.SetStickerSetThumbnail:1 of -msgid "" -"Use this method to set the thumbnail of a regular or mask sticker set. " -"The format of the thumbnail file must match the format of the stickers in" -" the set. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_set_thumbnail.SetStickerSetThumbnail:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickersetthumbnail" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_set_thumbnail.SetStickerSetThumbnail.name:1 of -msgid "Sticker set name" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_set_thumbnail.SetStickerSetThumbnail.user_id:1 -#: of -msgid "User identifier of the sticker set owner" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_set_thumbnail.SetStickerSetThumbnail.thumbnail:1 -#: of -msgid "" -"A **.WEBP** or **.PNG** image with the thumbnail, must be up to 128 " -"kilobytes in size and have a width and height of exactly 100px, or a " -"**.TGS** animation with a thumbnail up to 32 kilobytes in size (see " -"`https://core.telegram.org/stickers#animated-sticker-requirements " -"`_`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 " -"`_`https://core.telegram.org/stickers#video-sticker-" -"requirements `_ for video sticker technical requirements. Pass a " -"*file_id* as a String to send a file that already exists on the Telegram " -"servers, pass an HTTP URL as a String for Telegram to get a file from the" -" Internet, or upload a new one using multipart/form-data. :ref:`More " -"information on Sending Files » `. Animated and video " -"sticker set thumbnails can't be uploaded via HTTP URL. If omitted, then " -"the thumbnail is dropped and the first sticker is used as the thumbnail." -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_set_thumbnail import " -"SetStickerSetThumbnail`" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerSetThumbnail`" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_set_thumbnail.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_title.po b/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_title.po deleted file mode 100644 index fb27fdfc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_sticker_set_title.po +++ /dev/null @@ -1,80 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/set_sticker_set_title.rst:3 -msgid "setStickerSetTitle" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_sticker_set_title.SetStickerSetTitle:1 of -msgid "" -"Use this method to set the title of a created sticker set. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.set_sticker_set_title.SetStickerSetTitle:3 of -msgid "Source: https://core.telegram.org/bots/api#setstickersettitle" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_set_title.SetStickerSetTitle.name:1 of -msgid "Sticker set name" -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_sticker_set_title.SetStickerSetTitle.title:1 of -msgid "Sticker set title, 1-64 characters" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:29 -msgid "" -":code:`from aiogram.methods.set_sticker_set_title import " -"SetStickerSetTitle`" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:30 -msgid "alias: :code:`from aiogram.methods import SetStickerSetTitle`" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_sticker_set_title.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/set_webhook.po b/docs/locale/en/LC_MESSAGES/api/methods/set_webhook.po deleted file mode 100644 index 10f3b913..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/set_webhook.po +++ /dev/null @@ -1,152 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/set_webhook.rst:3 -msgid "setWebhook" -msgstr "" - -#: ../../api/methods/set_webhook.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:1 of -msgid "" -"Use this method to specify a URL and receive incoming updates via an " -"outgoing webhook. Whenever there is an update for the bot, we will send " -"an HTTPS POST request to the specified URL, containing a JSON-serialized " -":class:`aiogram.types.update.Update`. In case of an unsuccessful request," -" we will give up after a reasonable amount of attempts. Returns " -":code:`True` on success. If you'd like to make sure that the webhook was " -"set by you, you can specify secret data in the parameter *secret_token*. " -"If specified, the request will contain a header 'X-Telegram-Bot-Api-" -"Secret-Token' with the secret token as content." -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:4 of -msgid "**Notes**" -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:6 of -msgid "" -"**1.** You will not be able to receive updates using " -":class:`aiogram.methods.get_updates.GetUpdates` for as long as an " -"outgoing webhook is set up." -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:8 of -msgid "" -"**2.** To use a self-signed certificate, you need to upload your `public " -"key certificate `_ using " -"*certificate* parameter. Please upload as InputFile, sending a String " -"will not work." -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:10 of -msgid "" -"**3.** Ports currently supported *for webhooks*: **443, 80, 88, 8443**. " -"If you're having any trouble setting up webhooks, please check out this " -"`amazing guide to webhooks `_." -msgstr "" - -#: aiogram.methods.set_webhook.SetWebhook:13 of -msgid "Source: https://core.telegram.org/bots/api#setwebhook" -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.url:1 of -msgid "" -"HTTPS URL to send updates to. Use an empty string to remove webhook " -"integration" -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.certificate:1 of -msgid "" -"Upload your public key certificate so that the root certificate in use " -"can be checked. See our `self-signed guide " -"`_ for details." -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.ip_address:1 of -msgid "" -"The fixed IP address which will be used to send webhook requests instead " -"of the IP address resolved through DNS" -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.max_connections:1 of -msgid "" -"The maximum allowed number of simultaneous HTTPS 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." -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.allowed_updates:1 of -msgid "" -"A JSON-serialized list of the update types you want your bot to receive. " -"For example, specify ['message', 'edited_channel_post', 'callback_query']" -" to only receive updates of these types. See " -":class:`aiogram.types.update.Update` for a complete list of available " -"update types. Specify an empty list to receive all update types except " -"*chat_member* (default). If not specified, the previous setting will be " -"used." -msgstr "" - -#: ../../docstring -#: aiogram.methods.set_webhook.SetWebhook.drop_pending_updates:1 of -msgid "Pass :code:`True` to drop all pending updates" -msgstr "" - -#: ../../docstring aiogram.methods.set_webhook.SetWebhook.secret_token:1 of -msgid "" -"A secret token to be sent in a header 'X-Telegram-Bot-Api-Secret-Token' " -"in every webhook request, 1-256 characters. Only characters :code:`A-Z`, " -":code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. The header" -" is useful to ensure that the request comes from a webhook set by you." -msgstr "" - -#: ../../api/methods/set_webhook.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/set_webhook.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/set_webhook.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/set_webhook.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/set_webhook.rst:29 -msgid ":code:`from aiogram.methods.set_webhook import SetWebhook`" -msgstr "" - -#: ../../api/methods/set_webhook.rst:30 -msgid "alias: :code:`from aiogram.methods import SetWebhook`" -msgstr "" - -#: ../../api/methods/set_webhook.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/set_webhook.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/stop_message_live_location.po b/docs/locale/en/LC_MESSAGES/api/methods/stop_message_live_location.po deleted file mode 100644 index e15b616d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/stop_message_live_location.po +++ /dev/null @@ -1,123 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/stop_message_live_location.rst:3 -msgid "stopMessageLiveLocation" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:5 -msgid "Returns: :obj:`Union[Message, bool]`" -msgstr "" - -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation:1 of -msgid "" -"Use this method to stop updating a live location message before " -"*live_period* expires. On success, if the message is not an inline " -"message, the edited :class:`aiogram.types.message.Message` is returned, " -"otherwise :code:`True` is returned." -msgstr "" - -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation:3 of -msgid "Source: https://core.telegram.org/bots/api#stopmessagelivelocation" -msgstr "" - -#: ../../docstring -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation.chat_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Unique identifier for " -"the target chat or username of the target channel (in the format " -":code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation.message_id:1 -#: of -msgid "" -"Required if *inline_message_id* is not specified. Identifier of the " -"message with live location to stop" -msgstr "" - -#: ../../docstring -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation.inline_message_id:1 -#: of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: ../../docstring -#: aiogram.methods.stop_message_live_location.StopMessageLiveLocation.reply_markup:1 -#: of -msgid "" -"A JSON-serialized object for a new `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:29 -msgid "" -":code:`from aiogram.methods.stop_message_live_location import " -"StopMessageLiveLocation`" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:30 -msgid "alias: :code:`from aiogram.methods import StopMessageLiveLocation`" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/stop_message_live_location.rst:50 -msgid ":meth:`aiogram.types.message.Message.stop_live_location`" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for a new" -#~ " `inline keyboard `_." -#~ msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/stop_poll.po b/docs/locale/en/LC_MESSAGES/api/methods/stop_poll.po deleted file mode 100644 index 269a1e06..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/stop_poll.po +++ /dev/null @@ -1,91 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/stop_poll.rst:3 -msgid "stopPoll" -msgstr "" - -#: ../../api/methods/stop_poll.rst:5 -msgid "Returns: :obj:`Poll`" -msgstr "" - -#: aiogram.methods.stop_poll.StopPoll:1 of -msgid "" -"Use this method to stop a poll which was sent by the bot. On success, the" -" stopped :class:`aiogram.types.poll.Poll` is returned." -msgstr "" - -#: aiogram.methods.stop_poll.StopPoll:3 of -msgid "Source: https://core.telegram.org/bots/api#stoppoll" -msgstr "" - -#: ../../docstring aiogram.methods.stop_poll.StopPoll.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.stop_poll.StopPoll.message_id:1 of -msgid "Identifier of the original message with the poll" -msgstr "" - -#: ../../docstring aiogram.methods.stop_poll.StopPoll.reply_markup:1 of -msgid "" -"A JSON-serialized object for a new message `inline keyboard " -"`_." -msgstr "" - -#: ../../api/methods/stop_poll.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/stop_poll.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/stop_poll.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/stop_poll.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/stop_poll.rst:29 -msgid ":code:`from aiogram.methods.stop_poll import StopPoll`" -msgstr "" - -#: ../../api/methods/stop_poll.rst:30 -msgid "alias: :code:`from aiogram.methods import StopPoll`" -msgstr "" - -#: ../../api/methods/stop_poll.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/stop_poll.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for a new" -#~ " message `inline keyboard " -#~ "`_." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_member.po b/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_member.po deleted file mode 100644 index 1485077b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_member.po +++ /dev/null @@ -1,99 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unban_chat_member.rst:3 -msgid "unbanChatMember" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unban_chat_member.UnbanChatMember:1 of -msgid "" -"Use this method to unban a previously banned user in a supergroup or " -"channel. 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. If you don't want this, use the parameter " -"*only_if_banned*. Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.unban_chat_member.UnbanChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#unbanchatmember" -msgstr "" - -#: ../../docstring aiogram.methods.unban_chat_member.UnbanChatMember.chat_id:1 -#: of -msgid "" -"Unique identifier for the target group or username of the target " -"supergroup or channel (in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring aiogram.methods.unban_chat_member.UnbanChatMember.user_id:1 -#: of -msgid "Unique identifier of the target user" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unban_chat_member.UnbanChatMember.only_if_banned:1 of -msgid "Do nothing if the user is not banned" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:29 -msgid ":code:`from aiogram.methods.unban_chat_member import UnbanChatMember`" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:30 -msgid "alias: :code:`from aiogram.methods import UnbanChatMember`" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/unban_chat_member.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.unban`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_sender_chat.po b/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_sender_chat.po deleted file mode 100644 index 093786e8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unban_chat_sender_chat.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unban_chat_sender_chat.rst:3 -msgid "unbanChatSenderChat" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat:1 of -msgid "" -"Use this method to unban a previously banned channel chat in a supergroup" -" or channel. The bot must be an administrator for this to work and must " -"have the appropriate administrator rights. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat:3 of -msgid "Source: https://core.telegram.org/bots/api#unbanchatsenderchat" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat.sender_chat_id:1 -#: of -msgid "Unique identifier of the target sender chat" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:29 -msgid "" -":code:`from aiogram.methods.unban_chat_sender_chat import " -"UnbanChatSenderChat`" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:30 -msgid "alias: :code:`from aiogram.methods import UnbanChatSenderChat`" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/unban_chat_sender_chat.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.unban_sender_chat`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unhide_general_forum_topic.po b/docs/locale/en/LC_MESSAGES/api/methods/unhide_general_forum_topic.po deleted file mode 100644 index 3432fdfb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unhide_general_forum_topic.po +++ /dev/null @@ -1,80 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unhide_general_forum_topic.rst:3 -msgid "unhideGeneralForumTopic" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unhide_general_forum_topic.UnhideGeneralForumTopic:1 of -msgid "" -"Use this method to unhide the 'General' topic in a forum supergroup chat." -" The bot must be an administrator in the chat for this to work and must " -"have the *can_manage_topics* administrator rights. Returns :code:`True` " -"on success." -msgstr "" - -#: aiogram.methods.unhide_general_forum_topic.UnhideGeneralForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#unhidegeneralforumtopic" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unhide_general_forum_topic.UnhideGeneralForumTopic.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:29 -msgid "" -":code:`from aiogram.methods.unhide_general_forum_topic import " -"UnhideGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:30 -msgid "alias: :code:`from aiogram.methods import UnhideGeneralForumTopic`" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unhide_general_forum_topic.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_chat_messages.po b/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_chat_messages.po deleted file mode 100644 index 879d0ae4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_chat_messages.po +++ /dev/null @@ -1,88 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unpin_all_chat_messages.rst:3 -msgid "unpinAllChatMessages" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unpin_all_chat_messages.UnpinAllChatMessages:1 of -msgid "" -"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 to work and must have the 'can_pin_messages' administrator right" -" in a supergroup or 'can_edit_messages' administrator right in a channel." -" Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.unpin_all_chat_messages.UnpinAllChatMessages:3 of -msgid "Source: https://core.telegram.org/bots/api#unpinallchatmessages" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_all_chat_messages.UnpinAllChatMessages.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:29 -msgid "" -":code:`from aiogram.methods.unpin_all_chat_messages import " -"UnpinAllChatMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:30 -msgid "alias: :code:`from aiogram.methods import UnpinAllChatMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/unpin_all_chat_messages.rst:50 -msgid ":meth:`aiogram.types.chat.Chat.unpin_all_messages`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_forum_topic_messages.po b/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_forum_topic_messages.po deleted file mode 100644 index bbc5d5ac..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_forum_topic_messages.po +++ /dev/null @@ -1,88 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:3 -msgid "unpinAllForumTopicMessages" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unpin_all_forum_topic_messages.UnpinAllForumTopicMessages:1 -#: of -msgid "" -"Use this method to clear the list of pinned messages in a forum topic. " -"The bot must be an administrator in the chat for this to work and must " -"have the *can_pin_messages* administrator right in the supergroup. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.unpin_all_forum_topic_messages.UnpinAllForumTopicMessages:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#unpinallforumtopicmessages" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_all_forum_topic_messages.UnpinAllForumTopicMessages.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_all_forum_topic_messages.UnpinAllForumTopicMessages.message_thread_id:1 -#: of -msgid "Unique identifier for the target message thread of the forum topic" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:29 -msgid "" -":code:`from aiogram.methods.unpin_all_forum_topic_messages import " -"UnpinAllForumTopicMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:30 -msgid "alias: :code:`from aiogram.methods import UnpinAllForumTopicMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unpin_all_forum_topic_messages.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po b/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po deleted file mode 100644 index b4154aa5..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unpin_all_general_forum_topic_messages.po +++ /dev/null @@ -1,94 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:3 -msgid "unpinAllGeneralForumTopicMessages" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:1 -#: of -msgid "" -"Use this method to clear the list of pinned messages in a General forum " -"topic. The bot must be an administrator in the chat for this to work and " -"must have the *can_pin_messages* administrator right in the supergroup. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:15 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:18 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:26 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:28 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:30 -msgid "" -":code:`from aiogram.methods.unpin_all_general_forum_topic_messages import" -" UnpinAllGeneralForumTopicMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:31 -msgid "" -"alias: :code:`from aiogram.methods import " -"UnpinAllGeneralForumTopicMessages`" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:34 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:41 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:49 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/unpin_all_general_forum_topic_messages.rst:51 -msgid ":meth:`aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/unpin_chat_message.po b/docs/locale/en/LC_MESSAGES/api/methods/unpin_chat_message.po deleted file mode 100644 index e184084b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/unpin_chat_message.po +++ /dev/null @@ -1,101 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/methods/unpin_chat_message.rst:3 -msgid "unpinChatMessage" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:5 -msgid "Returns: :obj:`bool`" -msgstr "" - -#: aiogram.methods.unpin_chat_message.UnpinChatMessage:1 of -msgid "" -"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 and must have the " -"'can_pin_messages' administrator right in a supergroup or " -"'can_edit_messages' administrator right in a channel. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.methods.unpin_chat_message.UnpinChatMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#unpinchatmessage" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_chat_message.UnpinChatMessage.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.methods.unpin_chat_message.UnpinChatMessage.message_id:1 of -msgid "" -"Identifier of a message to unpin. If not specified, the most recent " -"pinned message (by sending date) will be unpinned." -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:29 -msgid ":code:`from aiogram.methods.unpin_chat_message import UnpinChatMessage`" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:30 -msgid "alias: :code:`from aiogram.methods import UnpinChatMessage`" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:33 -msgid "With specific bot" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:40 -msgid "As reply into Webhook in handler" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:48 -msgid "As shortcut from received object" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:50 -msgid ":meth:`aiogram.types.message.Message.unpin`" -msgstr "" - -#: ../../api/methods/unpin_chat_message.rst:51 -msgid ":meth:`aiogram.types.chat.Chat.unpin_message`" -msgstr "" - -#~ msgid "As message method" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/methods/upload_sticker_file.po b/docs/locale/en/LC_MESSAGES/api/methods/upload_sticker_file.po deleted file mode 100644 index 4e909bd1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/methods/upload_sticker_file.po +++ /dev/null @@ -1,105 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/methods/upload_sticker_file.rst:3 -msgid "uploadStickerFile" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:5 -msgid "Returns: :obj:`File`" -msgstr "" - -#: aiogram.methods.upload_sticker_file.UploadStickerFile:1 of -msgid "" -"Use this method to upload a file with a sticker for later use in the " -":class:`aiogram.methods.create_new_sticker_set.CreateNewStickerSet` and " -":class:`aiogram.methods.add_sticker_to_set.AddStickerToSet` methods (the " -"file can be used multiple times). Returns the uploaded " -":class:`aiogram.types.file.File` on success." -msgstr "" - -#: aiogram.methods.upload_sticker_file.UploadStickerFile:3 of -msgid "Source: https://core.telegram.org/bots/api#uploadstickerfile" -msgstr "" - -#: ../../docstring -#: aiogram.methods.upload_sticker_file.UploadStickerFile.user_id:1 of -msgid "User identifier of sticker file owner" -msgstr "" - -#: ../../docstring -#: aiogram.methods.upload_sticker_file.UploadStickerFile.sticker:1 of -msgid "" -"A file with the sticker in .WEBP, .PNG, .TGS, or .WEBM format. See " -"`https://core.telegram.org/stickers " -"`_`https://core.telegram.org/stickers" -" `_ for technical requirements. " -":ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.methods.upload_sticker_file.UploadStickerFile.sticker_format:1 of -msgid "Format of the sticker, must be one of 'static', 'animated', 'video'" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:14 -msgid "Usage" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:17 -msgid "As bot method" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:25 -msgid "Method as object" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:27 -msgid "Imports:" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:29 -msgid ":code:`from aiogram.methods.upload_sticker_file import UploadStickerFile`" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:30 -msgid "alias: :code:`from aiogram.methods import UploadStickerFile`" -msgstr "" - -#: ../../api/methods/upload_sticker_file.rst:33 -msgid "With specific bot" -msgstr "" - -#~ msgid "" -#~ "Use this method to upload a .PNG" -#~ " file with a sticker for later " -#~ "use in *createNewStickerSet* and " -#~ "*addStickerToSet* methods (can be used " -#~ "multiple times). Returns the uploaded " -#~ ":class:`aiogram.types.file.File` on success." -#~ msgstr "" - -#~ msgid "" -#~ "**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. :ref:`More information on" -#~ " Sending Files » `" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/aiohttp.po b/docs/locale/en/LC_MESSAGES/api/session/aiohttp.po deleted file mode 100644 index c0e0ef80..00000000 --- a/docs/locale/en/LC_MESSAGES/api/session/aiohttp.po +++ /dev/null @@ -1,97 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/session/aiohttp.rst:3 -msgid "aiohttp" -msgstr "" - -#: ../../api/session/aiohttp.rst:5 -msgid "" -"AiohttpSession represents a wrapper-class around `ClientSession` from " -"`aiohttp `_" -msgstr "" - -#: ../../api/session/aiohttp.rst:7 -msgid "Currently `AiohttpSession` is a default session used in `aiogram.Bot`" -msgstr "" - -#: ../../api/session/aiohttp.rst:12 -msgid "Usage example" -msgstr "" - -#: ../../api/session/aiohttp.rst:24 -msgid "Proxy requests in AiohttpSession" -msgstr "" - -#: ../../api/session/aiohttp.rst:26 -msgid "" -"In order to use AiohttpSession with proxy connector you have to install " -"`aiohttp-socks `_" -msgstr "" - -#: ../../api/session/aiohttp.rst:28 -msgid "Binding session to bot:" -msgstr "" - -#: ../../api/session/aiohttp.rst:41 -msgid "" -"Only following protocols are supported: http(tunneling), socks4(a), " -"socks5 as aiohttp_socks `documentation `_ claims." -msgstr "" - -#: ../../api/session/aiohttp.rst:46 -msgid "Authorization" -msgstr "" - -#: ../../api/session/aiohttp.rst:48 -msgid "" -"Proxy authorization credentials can be specified in proxy URL or come as " -"an instance of :obj:`aiohttp.BasicAuth` containing login and password." -msgstr "" - -#: ../../api/session/aiohttp.rst:51 -msgid "Consider examples:" -msgstr "" - -#: ../../api/session/aiohttp.rst:62 -msgid "or simply include your basic auth credential in URL" -msgstr "" - -#: ../../api/session/aiohttp.rst:71 -msgid "" -"Aiogram prefers `BasicAuth` over username and password in URL, so if " -"proxy URL contains login and password and `BasicAuth` object is passed at" -" the same time aiogram will use login and password from `BasicAuth` " -"instance." -msgstr "" - -#: ../../api/session/aiohttp.rst:77 -msgid "Proxy chains" -msgstr "" - -#: ../../api/session/aiohttp.rst:79 -msgid "" -"Since `aiohttp-socks `_ supports" -" proxy chains, you're able to use them in aiogram" -msgstr "" - -#: ../../api/session/aiohttp.rst:81 -msgid "Example of chain proxies:" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/base.po b/docs/locale/en/LC_MESSAGES/api/session/base.po deleted file mode 100644 index 6466c397..00000000 --- a/docs/locale/en/LC_MESSAGES/api/session/base.po +++ /dev/null @@ -1,81 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/session/base.rst:3 -msgid "Base" -msgstr "" - -#: ../../api/session/base.rst:5 -msgid "Abstract session for all client sessions" -msgstr "" - -#: aiogram.client.session.base.BaseSession:1 of -msgid "This is base class for all HTTP sessions in aiogram." -msgstr "" - -#: aiogram.client.session.base.BaseSession:3 of -msgid "If you want to create your own session, you must inherit from this class." -msgstr "" - -#: aiogram.client.session.base.BaseSession.check_response:1 of -msgid "Check response status" -msgstr "" - -#: aiogram.client.session.base.BaseSession.close:1 of -msgid "Close client session" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request:1 of -msgid "Make request to Telegram Bot API" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request of -msgid "Parameters" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request:3 of -msgid "Bot instance" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request:4 of -msgid "Method instance" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request:5 of -msgid "Request timeout" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request of -msgid "Returns" -msgstr "" - -#: aiogram.client.session.base.BaseSession.make_request of -msgid "Raises" -msgstr "" - -#: aiogram.client.session.base.BaseSession.prepare_value:1 of -msgid "Prepare value before send" -msgstr "" - -#: aiogram.client.session.base.BaseSession.stream_content:1 of -msgid "Stream reader" -msgstr "" - -#~ msgid "Clean data before send" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/custom_server.po b/docs/locale/en/LC_MESSAGES/api/session/custom_server.po deleted file mode 100644 index b5db8d60..00000000 --- a/docs/locale/en/LC_MESSAGES/api/session/custom_server.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/session/custom_server.rst:2 -msgid "Use Custom API server" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer:1 of -msgid "Base config for API Endpoints" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url:1 of -msgid "Generate URL for API methods" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url -#: aiogram.client.telegram.TelegramAPIServer.file_url -#: aiogram.client.telegram.TelegramAPIServer.from_base of -msgid "Parameters" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url:3 -#: aiogram.client.telegram.TelegramAPIServer.file_url:3 of -msgid "Bot token" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url:4 of -msgid "API method name (case insensitive)" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url -#: aiogram.client.telegram.TelegramAPIServer.file_url -#: aiogram.client.telegram.TelegramAPIServer.from_base of -msgid "Returns" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.api_url:5 -#: aiogram.client.telegram.TelegramAPIServer.file_url:5 of -msgid "URL" -msgstr "" - -#: ../../docstring aiogram.client.telegram.TelegramAPIServer.base:1 -#: aiogram.client.telegram.TelegramAPIServer.from_base:3 of -msgid "Base URL" -msgstr "" - -#: ../../docstring aiogram.client.telegram.TelegramAPIServer.file:1 of -msgid "Files URL" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.file_url:1 of -msgid "Generate URL for downloading files" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.file_url:4 of -msgid "file path" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.from_base:1 of -msgid "Use this method to auto-generate TelegramAPIServer instance from base URL" -msgstr "" - -#: aiogram.client.telegram.TelegramAPIServer.from_base:4 of -msgid "instance of :class:`TelegramAPIServer`" -msgstr "" - -#: ../../docstring aiogram.client.telegram.TelegramAPIServer.is_local:1 of -msgid "" -"Mark this server is in `local mode " -"`_." -msgstr "" - -#: ../../docstring aiogram.client.telegram.TelegramAPIServer.wrap_local_file:1 -#: of -msgid "Callback to wrap files path in local mode" -msgstr "" - -#: ../../api/session/custom_server.rst:7 -msgid "For example, if you want to use self-hosted API server:" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/index.po b/docs/locale/en/LC_MESSAGES/api/session/index.po deleted file mode 100644 index c61e72d8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/session/index.po +++ /dev/null @@ -1,26 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/session/index.rst:3 -msgid "Client session" -msgstr "" - -#: ../../api/session/index.rst:5 -msgid "Client sessions is used for interacting with API server." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/session/middleware.po b/docs/locale/en/LC_MESSAGES/api/session/middleware.po deleted file mode 100644 index 137d74ca..00000000 --- a/docs/locale/en/LC_MESSAGES/api/session/middleware.po +++ /dev/null @@ -1,87 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/session/middleware.rst:3 -msgid "Client session middlewares" -msgstr "" - -#: ../../api/session/middleware.rst:5 -msgid "" -"In some cases you may want to add some middlewares to the client session " -"to customize the behavior of the client." -msgstr "" - -#: ../../api/session/middleware.rst:7 -msgid "Some useful cases that is:" -msgstr "" - -#: ../../api/session/middleware.rst:9 -msgid "Log the outgoing requests" -msgstr "" - -#: ../../api/session/middleware.rst:10 -msgid "Customize the request parameters" -msgstr "" - -#: ../../api/session/middleware.rst:11 -msgid "Handle rate limiting errors and retry the request" -msgstr "" - -#: ../../api/session/middleware.rst:12 -msgid "others ..." -msgstr "" - -#: ../../api/session/middleware.rst:14 -msgid "" -"So, you can do it using client session middlewares. A client session " -"middleware is a function (or callable class) that receives the request " -"and the next middleware to call. The middleware can modify the request " -"and then call the next middleware to continue the request processing." -msgstr "" - -#: ../../api/session/middleware.rst:19 -msgid "How to register client session middleware?" -msgstr "" - -#: ../../api/session/middleware.rst:22 -msgid "Register using register method" -msgstr "" - -#: ../../api/session/middleware.rst:29 -msgid "Register using decorator" -msgstr "" - -#: ../../api/session/middleware.rst:44 -msgid "Example" -msgstr "" - -#: ../../api/session/middleware.rst:47 -msgid "Class based session middleware" -msgstr "" - -#: ../../api/session/middleware.rst:56 -msgid "" -"this middlewware is already implemented inside aiogram, so, if you want " -"to use it you can just import it :code:`from " -"aiogram.client.session.middlewares.request_logging import RequestLogging`" -msgstr "" - -#: ../../api/session/middleware.rst:61 -msgid "Function based session middleware" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/animation.po b/docs/locale/en/LC_MESSAGES/api/types/animation.po deleted file mode 100644 index df976078..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/animation.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/animation.rst:3 -msgid "Animation" -msgstr "" - -#: aiogram.types.animation.Animation:1 of -msgid "" -"This object represents an animation file (GIF or H.264/MPEG-4 AVC video " -"without sound)." -msgstr "" - -#: aiogram.types.animation.Animation:3 of -msgid "Source: https://core.telegram.org/bots/api#animation" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.width:1 of -msgid "Video width as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.height:1 of -msgid "Video height as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.duration:1 of -msgid "Duration of the video in seconds as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.thumb:1 of -msgid "*Optional*. Animation thumbnail as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.file_name:1 of -msgid "*Optional*. Original animation filename as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.mime_type:1 of -msgid "*Optional*. MIME type of the file as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.animation.Animation.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/audio.po b/docs/locale/en/LC_MESSAGES/api/types/audio.po deleted file mode 100644 index 81579c4c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/audio.po +++ /dev/null @@ -1,74 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/audio.rst:3 -msgid "Audio" -msgstr "" - -#: aiogram.types.audio.Audio:1 of -msgid "" -"This object represents an audio file to be treated as music by the " -"Telegram clients." -msgstr "" - -#: aiogram.types.audio.Audio:3 of -msgid "Source: https://core.telegram.org/bots/api#audio" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.duration:1 of -msgid "Duration of the audio in seconds as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.performer:1 of -msgid "*Optional*. Performer of the audio as defined by sender or by audio tags" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.title:1 of -msgid "*Optional*. Title of the audio as defined by sender or by audio tags" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.file_name:1 of -msgid "*Optional*. Original filename as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.mime_type:1 of -msgid "*Optional*. MIME type of the file as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" - -#: ../../docstring aiogram.types.audio.Audio.thumb:1 of -msgid "*Optional*. Thumbnail of the album cover to which the music file belongs" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command.po deleted file mode 100644 index 8a4ec997..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command.rst:3 -msgid "BotCommand" -msgstr "" - -#: aiogram.types.bot_command.BotCommand:1 of -msgid "This object represents a bot command." -msgstr "" - -#: aiogram.types.bot_command.BotCommand:3 of -msgid "Source: https://core.telegram.org/bots/api#botcommand" -msgstr "" - -#: ../../docstring aiogram.types.bot_command.BotCommand.command:1 of -msgid "" -"Text of the command; 1-32 characters. Can contain only lowercase English " -"letters, digits and underscores." -msgstr "" - -#: ../../docstring aiogram.types.bot_command.BotCommand.description:1 of -msgid "Description of the command; 1-256 characters." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope.po deleted file mode 100644 index ae5cc0bc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope.rst:3 -msgid "BotCommandScope" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:1 of -msgid "" -"This object represents the scope to which bot commands are applied. " -"Currently, the following 7 scopes are supported:" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:3 of -msgid ":class:`aiogram.types.bot_command_scope_default.BotCommandScopeDefault`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:4 of -msgid ":class:`aiogram.types.bot_command_scope_all_private_chats.BotCommandScopeAllPrivateChats`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:5 of -msgid ":class:`aiogram.types.bot_command_scope_all_group_chats.BotCommandScopeAllGroupChats`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:6 of -msgid ":class:`aiogram.types.bot_command_scope_all_chat_administrators.BotCommandScopeAllChatAdministrators`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:7 of -msgid ":class:`aiogram.types.bot_command_scope_chat.BotCommandScopeChat`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:8 of -msgid ":class:`aiogram.types.bot_command_scope_chat_administrators.BotCommandScopeChatAdministrators`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:9 of -msgid ":class:`aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember`" -msgstr "" - -#: aiogram.types.bot_command_scope.BotCommandScope:11 of -msgid "Source: https://core.telegram.org/bots/api#botcommandscope" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_chat_administrators.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_chat_administrators.po deleted file mode 100644 index 35e5dc6c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_chat_administrators.po +++ /dev/null @@ -1,43 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_all_chat_administrators.rst:3 -msgid "BotCommandScopeAllChatAdministrators" -msgstr "" - -#: aiogram.types.bot_command_scope_all_chat_administrators.BotCommandScopeAllChatAdministrators:1 -#: of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering all group and supergroup chat administrators." -msgstr "" - -#: aiogram.types.bot_command_scope_all_chat_administrators.BotCommandScopeAllChatAdministrators:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#botcommandscopeallchatadministrators" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_all_chat_administrators.BotCommandScopeAllChatAdministrators.type:1 -#: of -msgid "Scope type, must be *all_chat_administrators*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_group_chats.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_group_chats.po deleted file mode 100644 index 550a1103..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_group_chats.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_all_group_chats.rst:3 -msgid "BotCommandScopeAllGroupChats" -msgstr "" - -#: aiogram.types.bot_command_scope_all_group_chats.BotCommandScopeAllGroupChats:1 -#: of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering all group and supergroup chats." -msgstr "" - -#: aiogram.types.bot_command_scope_all_group_chats.BotCommandScopeAllGroupChats:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#botcommandscopeallgroupchats" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_all_group_chats.BotCommandScopeAllGroupChats.type:1 -#: of -msgid "Scope type, must be *all_group_chats*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_private_chats.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_private_chats.po deleted file mode 100644 index 0b2610c3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_all_private_chats.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_all_private_chats.rst:3 -msgid "BotCommandScopeAllPrivateChats" -msgstr "" - -#: aiogram.types.bot_command_scope_all_private_chats.BotCommandScopeAllPrivateChats:1 -#: of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering all private chats." -msgstr "" - -#: aiogram.types.bot_command_scope_all_private_chats.BotCommandScopeAllPrivateChats:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#botcommandscopeallprivatechats" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_all_private_chats.BotCommandScopeAllPrivateChats.type:1 -#: of -msgid "Scope type, must be *all_private_chats*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat.po deleted file mode 100644 index 2114f522..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat.po +++ /dev/null @@ -1,45 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_chat.rst:3 -msgid "BotCommandScopeChat" -msgstr "" - -#: aiogram.types.bot_command_scope_chat.BotCommandScopeChat:1 of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering a specific chat." -msgstr "" - -#: aiogram.types.bot_command_scope_chat.BotCommandScopeChat:3 of -msgid "Source: https://core.telegram.org/bots/api#botcommandscopechat" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat.BotCommandScopeChat.type:1 of -msgid "Scope type, must be *chat*" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat.BotCommandScopeChat.chat_id:1 of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_administrators.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_administrators.po deleted file mode 100644 index 92ab15bc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_administrators.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_chat_administrators.rst:3 -msgid "BotCommandScopeChatAdministrators" -msgstr "" - -#: aiogram.types.bot_command_scope_chat_administrators.BotCommandScopeChatAdministrators:1 -#: of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering all administrators of a specific group or supergroup chat." -msgstr "" - -#: aiogram.types.bot_command_scope_chat_administrators.BotCommandScopeChatAdministrators:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#botcommandscopechatadministrators" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat_administrators.BotCommandScopeChatAdministrators.type:1 -#: of -msgid "Scope type, must be *chat_administrators*" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat_administrators.BotCommandScopeChatAdministrators.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_member.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_member.po deleted file mode 100644 index e09566eb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_chat_member.po +++ /dev/null @@ -1,53 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_chat_member.rst:3 -msgid "BotCommandScopeChatMember" -msgstr "" - -#: aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember:1 of -msgid "" -"Represents the `scope " -"`_ of bot commands, " -"covering a specific member of a group or supergroup chat." -msgstr "" - -#: aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember:3 of -msgid "Source: https://core.telegram.org/bots/api#botcommandscopechatmember" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember.type:1 -#: of -msgid "Scope type, must be *chat_member*" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember.chat_id:1 -#: of -msgid "" -"Unique identifier for the target chat or username of the target " -"supergroup (in the format :code:`@supergroupusername`)" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_chat_member.BotCommandScopeChatMember.user_id:1 -#: of -msgid "Unique identifier of the target user" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_default.po b/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_default.po deleted file mode 100644 index d4f81fde..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_command_scope_default.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/bot_command_scope_default.rst:3 -msgid "BotCommandScopeDefault" -msgstr "" - -#: aiogram.types.bot_command_scope_default.BotCommandScopeDefault:1 of -msgid "" -"Represents the default `scope " -"`_ of bot commands. " -"Default commands are used if no commands with a `narrower scope " -"`_ are " -"specified for the user." -msgstr "" - -#: aiogram.types.bot_command_scope_default.BotCommandScopeDefault:3 of -msgid "Source: https://core.telegram.org/bots/api#botcommandscopedefault" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_command_scope_default.BotCommandScopeDefault.type:1 of -msgid "Scope type, must be *default*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_description.po b/docs/locale/en/LC_MESSAGES/api/types/bot_description.po deleted file mode 100644 index 2f295229..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_description.po +++ /dev/null @@ -1,35 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/bot_description.rst:3 -msgid "BotDescription" -msgstr "" - -#: aiogram.types.bot_description.BotDescription:1 of -msgid "This object represents the bot's description." -msgstr "" - -#: aiogram.types.bot_description.BotDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#botdescription" -msgstr "" - -#: ../../docstring aiogram.types.bot_description.BotDescription.description:1 -#: of -msgid "The bot's description" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_name.po b/docs/locale/en/LC_MESSAGES/api/types/bot_name.po deleted file mode 100644 index 64e89253..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_name.po +++ /dev/null @@ -1,34 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/bot_name.rst:3 -msgid "BotName" -msgstr "" - -#: aiogram.types.bot_name.BotName:1 of -msgid "This object represents the bot's name." -msgstr "" - -#: aiogram.types.bot_name.BotName:3 of -msgid "Source: https://core.telegram.org/bots/api#botname" -msgstr "" - -#: ../../docstring aiogram.types.bot_name.BotName.name:1 of -msgid "The bot's name" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/bot_short_description.po b/docs/locale/en/LC_MESSAGES/api/types/bot_short_description.po deleted file mode 100644 index 8855dc52..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/bot_short_description.po +++ /dev/null @@ -1,36 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/bot_short_description.rst:3 -msgid "BotShortDescription" -msgstr "" - -#: aiogram.types.bot_short_description.BotShortDescription:1 of -msgid "This object represents the bot's short description." -msgstr "" - -#: aiogram.types.bot_short_description.BotShortDescription:3 of -msgid "Source: https://core.telegram.org/bots/api#botshortdescription" -msgstr "" - -#: ../../docstring -#: aiogram.types.bot_short_description.BotShortDescription.short_description:1 -#: of -msgid "The bot's short description" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/callback_game.po b/docs/locale/en/LC_MESSAGES/api/types/callback_game.po deleted file mode 100644 index f564ef56..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/callback_game.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/callback_game.rst:3 -msgid "CallbackGame" -msgstr "" - -#: aiogram.types.callback_game.CallbackGame:1 of -msgid "" -"A placeholder, currently holds no information. Use `BotFather " -"`_ to set up your game." -msgstr "" - -#: aiogram.types.callback_game.CallbackGame:3 of -msgid "Source: https://core.telegram.org/bots/api#callbackgame" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/callback_query.po b/docs/locale/en/LC_MESSAGES/api/types/callback_query.po deleted file mode 100644 index cb74a993..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/callback_query.po +++ /dev/null @@ -1,191 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/callback_query.rst:3 -msgid "CallbackQuery" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery:1 of -msgid "" -"This object represents an incoming callback query from a callback button " -"in an `inline keyboard `_. If the button that originated the query was attached to a " -"message sent by the bot, the field *message* will be present. If the " -"button was attached to a message sent via the bot (in `inline mode " -"`_), the field " -"*inline_message_id* will be present. Exactly one of the fields *data* or " -"*game_short_name* will be present." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery:3 of -msgid "" -"**NOTE:** After the user presses a callback button, Telegram clients will" -" display a progress bar until you call " -":class:`aiogram.methods.answer_callback_query.AnswerCallbackQuery`. It " -"is, therefore, necessary to react by calling " -":class:`aiogram.methods.answer_callback_query.AnswerCallbackQuery` even " -"if no notification to the user is needed (e.g., without specifying any of" -" the optional parameters)." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery:5 of -msgid "Source: https://core.telegram.org/bots/api#callbackquery" -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.id:1 of -msgid "Unique identifier for this query" -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.from_user:1 of -msgid "Sender" -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.chat_instance:1 -#: of -msgid "" -"Global identifier, uniquely corresponding to the chat to which the " -"message with the callback button was sent. Useful for high scores in " -":class:`aiogram.methods.games.Games`." -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.message:1 of -msgid "" -"*Optional*. Message with the callback button that originated the query. " -"Note that message content and message date will not be available if the " -"message is too old" -msgstr "" - -#: ../../docstring -#: aiogram.types.callback_query.CallbackQuery.inline_message_id:1 of -msgid "" -"*Optional*. Identifier of the message sent via the bot in inline mode, " -"that originated the query." -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.data:1 of -msgid "" -"*Optional*. Data associated with the callback button. Be aware that the " -"message originated the query can contain no callback buttons with this " -"data." -msgstr "" - -#: ../../docstring aiogram.types.callback_query.CallbackQuery.game_short_name:1 -#: of -msgid "" -"*Optional*. Short name of a `Game " -"`_ to be returned, serves as " -"the unique identifier for the game" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.answer_callback_query.AnswerCallbackQuery` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:4 of -msgid ":code:`callback_query_id`" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:6 of -msgid "" -"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. On success, :code:`True` is returned." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:8 of -msgid "" -"Alternatively, the user can be redirected to the specified Game URL. For " -"this option to work, you must first create a game for your bot via " -"`@BotFather `_ and accept the terms. Otherwise, " -"you may use links like :code:`t.me/your_bot?start=XXXX` that open your " -"bot with a parameter." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:10 of -msgid "Source: https://core.telegram.org/bots/api#answercallbackquery" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer of -msgid "Parameters" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:12 of -msgid "" -"Text of the notification. If not specified, nothing will be shown to the " -"user, 0-200 characters" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:13 of -msgid "" -"If :code:`True`, an alert will be shown by the client instead of a " -"notification at the top of the chat screen. Defaults to *false*." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:14 of -msgid "" -"URL that will be opened by the user's client. If you have created a " -":class:`aiogram.types.game.Game` and accepted the conditions via " -"`@BotFather `_, specify the URL that opens your " -"game - note that this will only work if the query comes from a " -"`https://core.telegram.org/bots/api#inlinekeyboardbutton " -"`_ " -"*callback_game* button." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:15 of -msgid "" -"The maximum amount of time in seconds that the result of the callback " -"query may be cached client-side. Telegram apps will support caching " -"starting in version 3.14. Defaults to 0." -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer of -msgid "Returns" -msgstr "" - -#: aiogram.types.callback_query.CallbackQuery.answer:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.answer_callback_query.AnswerCallbackQuery`" -msgstr "" - -#~ msgid "" -#~ "This object represents an incoming " -#~ "callback query from a callback button" -#~ " in an `inline keyboard " -#~ "`_. If the " -#~ "button that originated the query was " -#~ "attached to a message sent by the" -#~ " bot, the field *message* will be " -#~ "present. If the button was attached " -#~ "to a message sent via the bot " -#~ "(in `inline mode `_), the field *inline_message_id*" -#~ " will be present. Exactly one of " -#~ "the fields *data* or *game_short_name* " -#~ "will be present." -#~ msgstr "" - -#~ msgid "Answer to callback query" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat.po b/docs/locale/en/LC_MESSAGES/api/types/chat.po deleted file mode 100644 index 9628f5ea..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat.po +++ /dev/null @@ -1,1326 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/chat.rst:3 -msgid "Chat" -msgstr "" - -#: aiogram.types.chat.Chat:1 of -msgid "This object represents a chat." -msgstr "" - -#: aiogram.types.chat.Chat:3 of -msgid "Source: https://core.telegram.org/bots/api#chat" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.id:1 of -msgid "" -"Unique identifier for this chat. This number may have more than 32 " -"significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. But it has at most 52 " -"significant bits, so a signed 64-bit integer or double-precision float " -"type are safe for storing this identifier." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.type:1 of -msgid "Type of chat, can be either 'private', 'group', 'supergroup' or 'channel'" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.title:1 of -msgid "*Optional*. Title, for supergroups, channels and group chats" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.username:1 of -msgid "" -"*Optional*. Username, for private chats, supergroups and channels if " -"available" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.first_name:1 of -msgid "*Optional*. First name of the other party in a private chat" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.last_name:1 of -msgid "*Optional*. Last name of the other party in a private chat" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.is_forum:1 of -msgid "" -"*Optional*. :code:`True`, if the supergroup chat is a forum (has `topics " -"`_ enabled)" -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.photo:1 of -msgid "" -"*Optional*. Chat photo. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.active_usernames:1 of -msgid "" -"*Optional*. If non-empty, the list of all `active chat usernames " -"`_; for private chats, supergroups and channels. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.emoji_status_custom_emoji_id:1 of -msgid "" -"*Optional*. Custom emoji identifier of emoji status of the other party in" -" a private chat. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.emoji_status_expiration_date:1 of -msgid "" -"*Optional*. Expiration date of the emoji status of the other party in a " -"private chat, if any. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.bio:1 of -msgid "" -"*Optional*. Bio of the other party in a private chat. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.has_private_forwards:1 of -msgid "" -"*Optional*. :code:`True`, if privacy settings of the other party in the " -"private chat allows to use :code:`tg://user?id=` links only in " -"chats with the user. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring -#: aiogram.types.chat.Chat.has_restricted_voice_and_video_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the privacy settings of the other party " -"restrict sending voice and video note messages in the private chat. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.join_to_send_messages:1 of -msgid "" -"*Optional*. :code:`True`, if users need to join the supergroup before " -"they can send messages. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.join_by_request:1 of -msgid "" -"*Optional*. :code:`True`, if all users directly joining the supergroup " -"need to be approved by supergroup administrators. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.description:1 of -msgid "" -"*Optional*. Description, for groups, supergroups and channel chats. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.invite_link:1 of -msgid "" -"*Optional*. Primary invite link, for groups, supergroups and channel " -"chats. Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.pinned_message:1 of -msgid "" -"*Optional*. The most recent pinned message (by sending date). Returned " -"only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.permissions:1 of -msgid "" -"*Optional*. Default chat member permissions, for groups and supergroups. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.slow_mode_delay:1 of -msgid "" -"*Optional*. For supergroups, the minimum allowed delay between " -"consecutive messages sent by each unpriviledged user; in seconds. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.message_auto_delete_time:1 of -msgid "" -"*Optional*. The time after which all messages sent to the chat will be " -"automatically deleted; in seconds. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.has_aggressive_anti_spam_enabled:1 -#: of -msgid "" -"*Optional*. :code:`True`, if aggressive anti-spam checks are enabled in " -"the supergroup. The field is only available to chat administrators. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.has_hidden_members:1 of -msgid "" -"*Optional*. :code:`True`, if non-administrators can only get the list of " -"bots and administrators in the chat. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.has_protected_content:1 of -msgid "" -"*Optional*. :code:`True`, if messages from the chat can't be forwarded to" -" other chats. Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.sticker_set_name:1 of -msgid "" -"*Optional*. For supergroups, name of group sticker set. Returned only in " -":class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.can_set_sticker_set:1 of -msgid "" -"*Optional*. :code:`True`, if the bot can change the group sticker set. " -"Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.linked_chat_id:1 of -msgid "" -"*Optional*. Unique identifier for the linked chat, i.e. the discussion " -"group identifier for a channel and vice versa; for supergroups and " -"channel chats. This identifier may be greater than 32 bits and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it is smaller than 52 bits, so a signed 64 bit integer or double-" -"precision float type are safe for storing this identifier. Returned only " -"in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: ../../docstring aiogram.types.chat.Chat.location:1 of -msgid "" -"*Optional*. For supergroups, the location to which the supergroup is " -"connected. Returned only in :class:`aiogram.methods.get_chat.GetChat`." -msgstr "" - -#: aiogram.types.chat.Chat.shifted_id:1 of -msgid "" -"Returns shifted chat ID (positive and without \"-100\" prefix). Mostly " -"used for private links like t.me/c/chat_id/message_id" -msgstr "" - -#: aiogram.types.chat.Chat.shifted_id:4 of -msgid "" -"Currently supergroup/channel IDs have 10-digit ID after \"-100\" prefix " -"removed. However, these IDs might become 11-digit in future. So, first we" -" remove \"-100\" prefix and count remaining number length. Then we " -"multiple -1 * 10 ^ (number_length + 2) Finally, self.id is substracted " -"from that number" -msgstr "" - -#: aiogram.types.chat.Chat.full_name:1 of -msgid "Get full name of the Chat." -msgstr "" - -#: aiogram.types.chat.Chat.full_name:3 of -msgid "" -"For private chat it is first_name + last_name. For other chat types it is" -" title." -msgstr "" - -#: aiogram.types.chat.Chat.ban_sender_chat:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.ban_chat_sender_chat.BanChatSenderChat` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.ban:4 aiogram.types.chat.Chat.ban_sender_chat:4 -#: aiogram.types.chat.Chat.create_invite_link:4 -#: aiogram.types.chat.Chat.delete_message:4 -#: aiogram.types.chat.Chat.delete_photo:4 -#: aiogram.types.chat.Chat.delete_sticker_set:4 aiogram.types.chat.Chat.do:4 -#: aiogram.types.chat.Chat.edit_invite_link:4 -#: aiogram.types.chat.Chat.export_invite_link:4 -#: aiogram.types.chat.Chat.get_administrators:4 -#: aiogram.types.chat.Chat.get_member:4 -#: aiogram.types.chat.Chat.get_member_count:4 aiogram.types.chat.Chat.leave:4 -#: aiogram.types.chat.Chat.pin_message:4 aiogram.types.chat.Chat.promote:4 -#: aiogram.types.chat.Chat.restrict:4 -#: aiogram.types.chat.Chat.revoke_invite_link:4 -#: aiogram.types.chat.Chat.set_administrator_custom_title:4 -#: aiogram.types.chat.Chat.set_description:4 -#: aiogram.types.chat.Chat.set_permissions:4 -#: aiogram.types.chat.Chat.set_photo:4 -#: aiogram.types.chat.Chat.set_sticker_set:4 -#: aiogram.types.chat.Chat.set_title:4 aiogram.types.chat.Chat.unban:4 -#: aiogram.types.chat.Chat.unban_sender_chat:4 -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:4 -#: aiogram.types.chat.Chat.unpin_all_messages:4 -#: aiogram.types.chat.Chat.unpin_message:4 of -msgid ":code:`chat_id`" -msgstr "" - -#: aiogram.types.chat.Chat.ban_sender_chat:6 of -msgid "" -"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. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.ban_sender_chat:8 of -msgid "Source: https://core.telegram.org/bots/api#banchatsenderchat" -msgstr "" - -#: aiogram.types.chat.Chat.ban aiogram.types.chat.Chat.ban_sender_chat -#: aiogram.types.chat.Chat.create_invite_link -#: aiogram.types.chat.Chat.delete_message aiogram.types.chat.Chat.do -#: aiogram.types.chat.Chat.edit_invite_link aiogram.types.chat.Chat.get_member -#: aiogram.types.chat.Chat.pin_message aiogram.types.chat.Chat.promote -#: aiogram.types.chat.Chat.restrict aiogram.types.chat.Chat.revoke_invite_link -#: aiogram.types.chat.Chat.set_administrator_custom_title -#: aiogram.types.chat.Chat.set_description -#: aiogram.types.chat.Chat.set_permissions aiogram.types.chat.Chat.set_photo -#: aiogram.types.chat.Chat.set_sticker_set aiogram.types.chat.Chat.set_title -#: aiogram.types.chat.Chat.unban aiogram.types.chat.Chat.unban_sender_chat -#: aiogram.types.chat.Chat.unpin_message of -msgid "Parameters" -msgstr "" - -#: aiogram.types.chat.Chat.ban_sender_chat:10 -#: aiogram.types.chat.Chat.unban_sender_chat:10 of -msgid "Unique identifier of the target sender chat" -msgstr "" - -#: aiogram.types.chat.Chat.ban aiogram.types.chat.Chat.ban_sender_chat -#: aiogram.types.chat.Chat.create_invite_link -#: aiogram.types.chat.Chat.delete_message aiogram.types.chat.Chat.delete_photo -#: aiogram.types.chat.Chat.delete_sticker_set aiogram.types.chat.Chat.do -#: aiogram.types.chat.Chat.edit_invite_link -#: aiogram.types.chat.Chat.export_invite_link -#: aiogram.types.chat.Chat.get_administrators -#: aiogram.types.chat.Chat.get_member aiogram.types.chat.Chat.get_member_count -#: aiogram.types.chat.Chat.leave aiogram.types.chat.Chat.pin_message -#: aiogram.types.chat.Chat.promote aiogram.types.chat.Chat.restrict -#: aiogram.types.chat.Chat.revoke_invite_link -#: aiogram.types.chat.Chat.set_administrator_custom_title -#: aiogram.types.chat.Chat.set_description -#: aiogram.types.chat.Chat.set_permissions aiogram.types.chat.Chat.set_photo -#: aiogram.types.chat.Chat.set_sticker_set aiogram.types.chat.Chat.set_title -#: aiogram.types.chat.Chat.unban aiogram.types.chat.Chat.unban_sender_chat -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages -#: aiogram.types.chat.Chat.unpin_all_messages -#: aiogram.types.chat.Chat.unpin_message of -msgid "Returns" -msgstr "" - -#: aiogram.types.chat.Chat.ban_sender_chat:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.ban_chat_sender_chat.BanChatSenderChat`" -msgstr "" - -#: aiogram.types.chat.Chat.unban_sender_chat:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.unban_sender_chat:6 of -msgid "" -"Use this method to unban a previously banned channel chat in a supergroup" -" or channel. The bot must be an administrator for this to work and must " -"have the appropriate administrator rights. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.types.chat.Chat.unban_sender_chat:8 of -msgid "Source: https://core.telegram.org/bots/api#unbanchatsenderchat" -msgstr "" - -#: aiogram.types.chat.Chat.unban_sender_chat:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.unban_chat_sender_chat.UnbanChatSenderChat`" -msgstr "" - -#: aiogram.types.chat.Chat.get_administrators:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.get_chat_administrators.GetChatAdministrators` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.get_administrators:6 of -msgid "" -"Use this method to get a list of administrators in a chat, which aren't " -"bots. Returns an Array of :class:`aiogram.types.chat_member.ChatMember` " -"objects." -msgstr "" - -#: aiogram.types.chat.Chat.get_administrators:8 of -msgid "Source: https://core.telegram.org/bots/api#getchatadministrators" -msgstr "" - -#: aiogram.types.chat.Chat.get_administrators:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.get_chat_administrators.GetChatAdministrators`" -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.delete_message.DeleteMessage`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:6 of -msgid "" -"Use this method to delete a message, including service messages, with the" -" following limitations:" -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:8 of -msgid "A message can only be deleted if it was sent less than 48 hours ago." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:10 of -msgid "" -"Service messages about a supergroup, channel, or forum topic creation " -"can't be deleted." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:12 of -msgid "" -"A dice message in a private chat can only be deleted if it was sent more " -"than 24 hours ago." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:14 of -msgid "" -"Bots can delete outgoing messages in private chats, groups, and " -"supergroups." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:16 of -msgid "Bots can delete incoming messages in private chats." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:18 of -msgid "" -"Bots granted *can_post_messages* permissions can delete outgoing messages" -" in channels." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:20 of -msgid "" -"If the bot is an administrator of a group, it can delete any message " -"there." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:22 of -msgid "" -"If the bot has *can_delete_messages* permission in a supergroup or a " -"channel, it can delete any message there." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:24 of -msgid "Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:26 of -msgid "Source: https://core.telegram.org/bots/api#deletemessage" -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:28 of -msgid "Identifier of the message to delete" -msgstr "" - -#: aiogram.types.chat.Chat.delete_message:29 of -msgid "instance of method :class:`aiogram.methods.delete_message.DeleteMessage`" -msgstr "" - -#: aiogram.types.chat.Chat.revoke_invite_link:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.revoke_invite_link:6 of -msgid "" -"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 administrator rights. Returns the revoked invite link as " -":class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.types.chat.Chat.revoke_invite_link:8 of -msgid "Source: https://core.telegram.org/bots/api#revokechatinvitelink" -msgstr "" - -#: aiogram.types.chat.Chat.revoke_invite_link:10 of -msgid "The invite link to revoke" -msgstr "" - -#: aiogram.types.chat.Chat.revoke_invite_link:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink`" -msgstr "" - -#: aiogram.types.chat.Chat.edit_invite_link:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_chat_invite_link.EditChatInviteLink` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.edit_invite_link:6 of -msgid "" -"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 administrator rights. Returns the edited invite link as a" -" :class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.types.chat.Chat.edit_invite_link:8 of -msgid "Source: https://core.telegram.org/bots/api#editchatinvitelink" -msgstr "" - -#: aiogram.types.chat.Chat.edit_invite_link:10 of -msgid "The invite link to edit" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:10 -#: aiogram.types.chat.Chat.edit_invite_link:11 of -msgid "Invite link name; 0-32 characters" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:11 -#: aiogram.types.chat.Chat.edit_invite_link:12 of -msgid "Point in time (Unix timestamp) when the link will expire" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:12 -#: aiogram.types.chat.Chat.edit_invite_link:13 of -msgid "" -"The maximum number of users that can be members of the chat " -"simultaneously after joining the chat via this invite link; 1-99999" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:13 -#: aiogram.types.chat.Chat.edit_invite_link:14 of -msgid "" -":code:`True`, if users joining the chat via the link need to be approved " -"by chat administrators. If :code:`True`, *member_limit* can't be " -"specified" -msgstr "" - -#: aiogram.types.chat.Chat.edit_invite_link:15 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_chat_invite_link.EditChatInviteLink`" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.create_chat_invite_link.CreateChatInviteLink` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:6 of -msgid "" -"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 administrator rights. The link can be revoked using the " -"method " -":class:`aiogram.methods.revoke_chat_invite_link.RevokeChatInviteLink`. " -"Returns the new invite link as " -":class:`aiogram.types.chat_invite_link.ChatInviteLink` object." -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:8 of -msgid "Source: https://core.telegram.org/bots/api#createchatinvitelink" -msgstr "" - -#: aiogram.types.chat.Chat.create_invite_link:14 of -msgid "" -"instance of method " -":class:`aiogram.methods.create_chat_invite_link.CreateChatInviteLink`" -msgstr "" - -#: aiogram.types.chat.Chat.export_invite_link:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.export_invite_link:6 of -msgid "" -"Use this method to generate a new primary invite link for a chat; any " -"previously generated primary link is revoked. The bot must be an " -"administrator in the chat for this to work and must have the appropriate " -"administrator rights. Returns the new invite link as *String* on success." -msgstr "" - -#: aiogram.types.chat.Chat.export_invite_link:8 of -msgid "" -"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 " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink` or " -"by calling the :class:`aiogram.methods.get_chat.GetChat` method. If your " -"bot needs to generate a new primary invite link replacing its previous " -"one, use " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink` " -"again." -msgstr "" - -#: aiogram.types.chat.Chat.export_invite_link:10 of -msgid "Source: https://core.telegram.org/bots/api#exportchatinvitelink" -msgstr "" - -#: aiogram.types.chat.Chat.export_invite_link:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.export_chat_invite_link.ExportChatInviteLink`" -msgstr "" - -#: aiogram.types.chat.Chat.do:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_chat_action.SendChatAction` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.do:6 of -msgid "" -"Use this method when you need to tell the user that something is " -"happening on the bot's side. The status is set for 5 seconds or less " -"(when a message arrives from your bot, Telegram clients clear its typing " -"status). Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.do:8 of -msgid "" -"Example: The `ImageBot `_ needs some time to " -"process a request and upload the image. Instead of sending a text message" -" along the lines of 'Retrieving image, please wait…', the bot may use " -":class:`aiogram.methods.send_chat_action.SendChatAction` with *action* = " -"*upload_photo*. The user will see a 'sending photo' status for the bot." -msgstr "" - -#: aiogram.types.chat.Chat.do:10 of -msgid "" -"We only recommend using this method when a response from the bot will " -"take a **noticeable** amount of time to arrive." -msgstr "" - -#: aiogram.types.chat.Chat.do:12 of -msgid "Source: https://core.telegram.org/bots/api#sendchataction" -msgstr "" - -#: aiogram.types.chat.Chat.do:14 of -msgid "" -"Type of action to broadcast. Choose one, depending on what the user is " -"about to receive: *typing* for `text messages " -"`_, *upload_photo* for " -"`photos `_, *record_video* " -"or *upload_video* for `videos " -"`_, *record_voice* or " -"*upload_voice* for `voice notes " -"`_, *upload_document* for " -"`general files `_, " -"*choose_sticker* for `stickers " -"`_, *find_location* for " -"`location data `_, " -"*record_video_note* or *upload_video_note* for `video notes " -"`_." -msgstr "" - -#: aiogram.types.chat.Chat.do:15 of -msgid "Unique identifier for the target message thread; supergroups only" -msgstr "" - -#: aiogram.types.chat.Chat.do:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.send_chat_action.SendChatAction`" -msgstr "" - -#: aiogram.types.chat.Chat.delete_sticker_set:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.delete_chat_sticker_set.DeleteChatStickerSet` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.delete_sticker_set:6 of -msgid "" -"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 administrator rights. Use the field *can_set_sticker_set* " -"optionally returned in :class:`aiogram.methods.get_chat.GetChat` requests" -" to check if the bot can use this method. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.types.chat.Chat.delete_sticker_set:8 of -msgid "Source: https://core.telegram.org/bots/api#deletechatstickerset" -msgstr "" - -#: aiogram.types.chat.Chat.delete_sticker_set:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.delete_chat_sticker_set.DeleteChatStickerSet`" -msgstr "" - -#: aiogram.types.chat.Chat.set_sticker_set:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.set_chat_sticker_set.SetChatStickerSet` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_sticker_set:6 of -msgid "" -"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 administrator rights. Use the field *can_set_sticker_set* " -"optionally returned in :class:`aiogram.methods.get_chat.GetChat` requests" -" to check if the bot can use this method. Returns :code:`True` on " -"success." -msgstr "" - -#: aiogram.types.chat.Chat.set_sticker_set:8 of -msgid "Source: https://core.telegram.org/bots/api#setchatstickerset" -msgstr "" - -#: aiogram.types.chat.Chat.set_sticker_set:10 of -msgid "Name of the sticker set to be set as the group sticker set" -msgstr "" - -#: aiogram.types.chat.Chat.set_sticker_set:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.set_chat_sticker_set.SetChatStickerSet`" -msgstr "" - -#: aiogram.types.chat.Chat.get_member:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.get_chat_member.GetChatMember` will automatically" -" fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.get_member:6 of -msgid "" -"Use this method to get information about a member of a chat. The method " -"is only guaranteed to work for other users if the bot is an administrator" -" in the chat. Returns a :class:`aiogram.types.chat_member.ChatMember` " -"object on success." -msgstr "" - -#: aiogram.types.chat.Chat.get_member:8 of -msgid "Source: https://core.telegram.org/bots/api#getchatmember" -msgstr "" - -#: aiogram.types.chat.Chat.ban:10 aiogram.types.chat.Chat.get_member:10 -#: aiogram.types.chat.Chat.promote:10 aiogram.types.chat.Chat.restrict:10 -#: aiogram.types.chat.Chat.set_administrator_custom_title:10 -#: aiogram.types.chat.Chat.unban:10 of -msgid "Unique identifier of the target user" -msgstr "" - -#: aiogram.types.chat.Chat.get_member:11 of -msgid "instance of method :class:`aiogram.methods.get_chat_member.GetChatMember`" -msgstr "" - -#: aiogram.types.chat.Chat.get_member_count:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.get_chat_member_count.GetChatMemberCount` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.get_member_count:6 of -msgid "" -"Use this method to get the number of members in a chat. Returns *Int* on " -"success." -msgstr "" - -#: aiogram.types.chat.Chat.get_member_count:8 of -msgid "Source: https://core.telegram.org/bots/api#getchatmembercount" -msgstr "" - -#: aiogram.types.chat.Chat.get_member_count:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.get_chat_member_count.GetChatMemberCount`" -msgstr "" - -#: aiogram.types.chat.Chat.leave:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.leave_chat.LeaveChat` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.leave:6 of -msgid "" -"Use this method for your bot to leave a group, supergroup or channel. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.leave:8 of -msgid "Source: https://core.telegram.org/bots/api#leavechat" -msgstr "" - -#: aiogram.types.chat.Chat.leave:10 of -msgid "instance of method :class:`aiogram.methods.leave_chat.LeaveChat`" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_messages:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unpin_all_chat_messages.UnpinAllChatMessages` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_messages:6 of -msgid "" -"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 to work and must have the 'can_pin_messages' administrator right" -" in a supergroup or 'can_edit_messages' administrator right in a channel." -" Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_messages:8 of -msgid "Source: https://core.telegram.org/bots/api#unpinallchatmessages" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_messages:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.unpin_all_chat_messages.UnpinAllChatMessages`" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_message:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unpin_chat_message.UnpinChatMessage` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_message:6 of -msgid "" -"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 and must have the " -"'can_pin_messages' administrator right in a supergroup or " -"'can_edit_messages' administrator right in a channel. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.unpin_message:8 of -msgid "Source: https://core.telegram.org/bots/api#unpinchatmessage" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_message:10 of -msgid "" -"Identifier of a message to unpin. If not specified, the most recent " -"pinned message (by sending date) will be unpinned." -msgstr "" - -#: aiogram.types.chat.Chat.unpin_message:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.unpin_chat_message.UnpinChatMessage`" -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.pin_chat_message.PinChatMessage` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:6 of -msgid "" -"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 and must have the 'can_pin_messages' " -"administrator right in a supergroup or 'can_edit_messages' administrator " -"right in a channel. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:8 of -msgid "Source: https://core.telegram.org/bots/api#pinchatmessage" -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:10 of -msgid "Identifier of a message to pin" -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:11 of -msgid "" -"Pass :code:`True` if it is not necessary to send a notification to all " -"chat members about the new pinned message. Notifications are always " -"disabled in channels and private chats." -msgstr "" - -#: aiogram.types.chat.Chat.pin_message:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.pin_chat_message.PinChatMessage`" -msgstr "" - -#: aiogram.types.chat.Chat.set_administrator_custom_title:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_administrator_custom_title:6 of -msgid "" -"Use this method to set a custom title for an administrator in a " -"supergroup promoted by the bot. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.set_administrator_custom_title:8 of -msgid "Source: https://core.telegram.org/bots/api#setchatadministratorcustomtitle" -msgstr "" - -#: aiogram.types.chat.Chat.set_administrator_custom_title:11 of -msgid "" -"New custom title for the administrator; 0-16 characters, emoji are not " -"allowed" -msgstr "" - -#: aiogram.types.chat.Chat.set_administrator_custom_title:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.set_chat_administrator_custom_title.SetChatAdministratorCustomTitle`" -msgstr "" - -#: aiogram.types.chat.Chat.set_permissions:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.set_chat_permissions.SetChatPermissions` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_permissions:6 of -msgid "" -"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 *can_restrict_members* administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.set_permissions:8 of -msgid "Source: https://core.telegram.org/bots/api#setchatpermissions" -msgstr "" - -#: aiogram.types.chat.Chat.set_permissions:10 of -msgid "A JSON-serialized object for new default chat permissions" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:12 -#: aiogram.types.chat.Chat.set_permissions:11 of -msgid "" -"Pass :code:`True` if chat permissions are set independently. Otherwise, " -"the *can_send_other_messages* and *can_add_web_page_previews* permissions" -" will imply the *can_send_messages*, *can_send_audios*, " -"*can_send_documents*, *can_send_photos*, *can_send_videos*, " -"*can_send_video_notes*, and *can_send_voice_notes* permissions; the " -"*can_send_polls* permission will imply the *can_send_messages* " -"permission." -msgstr "" - -#: aiogram.types.chat.Chat.set_permissions:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.set_chat_permissions.SetChatPermissions`" -msgstr "" - -#: aiogram.types.chat.Chat.promote:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.promote_chat_member.PromoteChatMember` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.promote:6 of -msgid "" -"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 administrator rights. Pass :code:`False` for all " -"boolean parameters to demote a user. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.promote:8 of -msgid "Source: https://core.telegram.org/bots/api#promotechatmember" -msgstr "" - -#: aiogram.types.chat.Chat.promote:11 of -msgid "Pass :code:`True` if the administrator's presence in the chat is hidden" -msgstr "" - -#: aiogram.types.chat.Chat.promote:12 of -msgid "" -"Pass :code:`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" -msgstr "" - -#: aiogram.types.chat.Chat.promote:13 of -msgid "" -"Pass :code:`True` if the administrator can create channel posts, channels" -" only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:14 of -msgid "" -"Pass :code:`True` if the administrator can edit messages of other users " -"and can pin messages, channels only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:15 of -msgid "Pass :code:`True` if the administrator can delete messages of other users" -msgstr "" - -#: aiogram.types.chat.Chat.promote:16 of -msgid "Pass :code:`True` if the administrator can manage video chats" -msgstr "" - -#: aiogram.types.chat.Chat.promote:17 of -msgid "" -"Pass :code:`True` if the administrator can restrict, ban or unban chat " -"members" -msgstr "" - -#: aiogram.types.chat.Chat.promote:18 of -msgid "" -"Pass :code:`True` if the administrator can add new administrators with a " -"subset of their own privileges or demote administrators that they have " -"promoted, directly or indirectly (promoted by administrators that were " -"appointed by him)" -msgstr "" - -#: aiogram.types.chat.Chat.promote:19 of -msgid "" -"Pass :code:`True` if the administrator can change chat title, photo and " -"other settings" -msgstr "" - -#: aiogram.types.chat.Chat.promote:20 of -msgid "Pass :code:`True` if the administrator can invite new users to the chat" -msgstr "" - -#: aiogram.types.chat.Chat.promote:21 of -msgid "Pass :code:`True` if the administrator can pin messages, supergroups only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:22 of -msgid "" -"Pass :code:`True` if the user is allowed to create, rename, close, and " -"reopen forum topics, supergroups only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:23 of -msgid "" -"instance of method " -":class:`aiogram.methods.promote_chat_member.PromoteChatMember`" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.restrict_chat_member.RestrictChatMember` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:6 of -msgid "" -"Use this method to restrict a user in a supergroup. The bot must be an " -"administrator in the supergroup for this to work and must have the " -"appropriate administrator rights. Pass :code:`True` for all permissions " -"to lift restrictions from a user. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.restrict:8 of -msgid "Source: https://core.telegram.org/bots/api#restrictchatmember" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:11 of -msgid "A JSON-serialized object for new user permissions" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:13 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.chat.Chat.restrict:14 of -msgid "" -"instance of method " -":class:`aiogram.methods.restrict_chat_member.RestrictChatMember`" -msgstr "" - -#: aiogram.types.chat.Chat.unban:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unban_chat_member.UnbanChatMember` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.unban:6 of -msgid "" -"Use this method to unban a previously banned user in a supergroup or " -"channel. 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. If you don't want this, use the parameter " -"*only_if_banned*. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.unban:8 of -msgid "Source: https://core.telegram.org/bots/api#unbanchatmember" -msgstr "" - -#: aiogram.types.chat.Chat.unban:11 of -msgid "Do nothing if the user is not banned" -msgstr "" - -#: aiogram.types.chat.Chat.unban:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.unban_chat_member.UnbanChatMember`" -msgstr "" - -#: aiogram.types.chat.Chat.ban:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.ban_chat_member.BanChatMember` will automatically" -" fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.ban:6 of -msgid "" -"Use this method to ban a user in a group, a supergroup or a channel. In " -"the case of supergroups and channels, the user will not be able to return" -" to the chat on their own using invite links, etc., unless `unbanned " -"`_ first. The bot " -"must be an administrator in the chat for this to work and must have the " -"appropriate administrator rights. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.ban:8 of -msgid "Source: https://core.telegram.org/bots/api#banchatmember" -msgstr "" - -#: aiogram.types.chat.Chat.ban:11 of -msgid "" -"Date when the user will be unbanned, unix time. If user is banned for " -"more than 366 days or less than 30 seconds from the current time they are" -" considered to be banned forever. Applied for supergroups and channels " -"only." -msgstr "" - -#: aiogram.types.chat.Chat.ban:12 of -msgid "" -"Pass :code:`True` to delete all messages from the chat for the user that " -"is being removed. If :code:`False`, the user will be able to see messages" -" in the group that were sent before the user was removed. Always " -":code:`True` for supergroups and channels." -msgstr "" - -#: aiogram.types.chat.Chat.ban:13 of -msgid "instance of method :class:`aiogram.methods.ban_chat_member.BanChatMember`" -msgstr "" - -#: aiogram.types.chat.Chat.set_description:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.set_chat_description.SetChatDescription` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_description:6 of -msgid "" -"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 administrator rights. Returns :code:`True` " -"on success." -msgstr "" - -#: aiogram.types.chat.Chat.set_description:8 of -msgid "Source: https://core.telegram.org/bots/api#setchatdescription" -msgstr "" - -#: aiogram.types.chat.Chat.set_description:10 of -msgid "New chat description, 0-255 characters" -msgstr "" - -#: aiogram.types.chat.Chat.set_description:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.set_chat_description.SetChatDescription`" -msgstr "" - -#: aiogram.types.chat.Chat.set_title:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.set_chat_title.SetChatTitle` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_title:6 of -msgid "" -"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 administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.set_title:8 of -msgid "Source: https://core.telegram.org/bots/api#setchattitle" -msgstr "" - -#: aiogram.types.chat.Chat.set_title:10 of -msgid "New chat title, 1-128 characters" -msgstr "" - -#: aiogram.types.chat.Chat.set_title:11 of -msgid "instance of method :class:`aiogram.methods.set_chat_title.SetChatTitle`" -msgstr "" - -#: aiogram.types.chat.Chat.delete_photo:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.delete_chat_photo.DeleteChatPhoto` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.delete_photo:6 of -msgid "" -"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 administrator rights. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.delete_photo:8 of -msgid "Source: https://core.telegram.org/bots/api#deletechatphoto" -msgstr "" - -#: aiogram.types.chat.Chat.delete_photo:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.delete_chat_photo.DeleteChatPhoto`" -msgstr "" - -#: aiogram.types.chat.Chat.set_photo:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.set_chat_photo.SetChatPhoto` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.set_photo:6 of -msgid "" -"Use this method to set a new profile photo for the chat. 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 administrator rights. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.set_photo:8 of -msgid "Source: https://core.telegram.org/bots/api#setchatphoto" -msgstr "" - -#: aiogram.types.chat.Chat.set_photo:10 of -msgid "New chat photo, uploaded using multipart/form-data" -msgstr "" - -#: aiogram.types.chat.Chat.set_photo:11 of -msgid "instance of method :class:`aiogram.methods.set_chat_photo.SetChatPhoto`" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:6 of -msgid "" -"Use this method to clear the list of pinned messages in a General forum " -"topic. The bot must be an administrator in the chat for this to work and " -"must have the *can_pin_messages* administrator right in the supergroup. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:8 of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#unpinallgeneralforumtopicmessages" -msgstr "" - -#: aiogram.types.chat.Chat.unpin_all_general_forum_topic_messages:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.unpin_all_general_forum_topic_messages.UnpinAllGeneralForumTopicMessages`" -msgstr "" - -#~ msgid "" -#~ "Use this method to get information " -#~ "about a member of a chat. The " -#~ "method is guaranteed to work for " -#~ "other users, only if the bot is" -#~ " an administrator in the chat. " -#~ "Returns a :class:`aiogram.types.chat_member.ChatMember`" -#~ " object on success." -#~ msgstr "" - -#~ msgid "" -#~ "Pass :code:`True` if the administrator " -#~ "can add new administrators with a " -#~ "subset of their own privileges or " -#~ "demote administrators that he has " -#~ "promoted, directly or indirectly (promoted " -#~ "by administrators that were appointed by" -#~ " him)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_administrator_rights.po b/docs/locale/en/LC_MESSAGES/api/types/chat_administrator_rights.po deleted file mode 100644 index fc696d31..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_administrator_rights.po +++ /dev/null @@ -1,130 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/chat_administrator_rights.rst:3 -msgid "ChatAdministratorRights" -msgstr "" - -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights:1 of -msgid "Represents the rights of an administrator in a chat." -msgstr "" - -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights:3 of -msgid "Source: https://core.telegram.org/bots/api#chatadministratorrights" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.is_anonymous:1 -#: of -msgid ":code:`True`, if the user's presence in the chat is hidden" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_chat:1 -#: of -msgid "" -":code:`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" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_delete_messages:1 -#: of -msgid ":code:`True`, if the administrator can delete messages of other users" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_video_chats:1 -#: of -msgid ":code:`True`, if the administrator can manage video chats" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_restrict_members:1 -#: of -msgid ":code:`True`, if the administrator can restrict, ban or unban chat members" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_promote_members:1 -#: of -msgid "" -":code:`True`, if the administrator can add new administrators with a " -"subset of their own privileges or demote administrators that they have " -"promoted, directly or indirectly (promoted by administrators that were " -"appointed by the user)" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_change_info:1 -#: of -msgid "" -":code:`True`, if the user is allowed to change the chat title, photo and " -"other settings" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_invite_users:1 -#: of -msgid ":code:`True`, if the user is allowed to invite new users to the chat" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_post_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_edit_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can edit messages of other" -" users and can pin messages; channels only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_pin_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to pin messages; groups " -"and supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_topics:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to create, rename, " -"close, and reopen forum topics; supergroups only" -msgstr "" - -#~ msgid "" -#~ ":code:`True`, if the administrator can " -#~ "add new administrators with a subset " -#~ "of their own privileges or demote " -#~ "administrators that he has promoted, " -#~ "directly or indirectly (promoted by " -#~ "administrators that were appointed by " -#~ "the user)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_invite_link.po b/docs/locale/en/LC_MESSAGES/api/types/chat_invite_link.po deleted file mode 100644 index 15c1a9e0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_invite_link.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_invite_link.rst:3 -msgid "ChatInviteLink" -msgstr "" - -#: aiogram.types.chat_invite_link.ChatInviteLink:1 of -msgid "Represents an invite link for a chat." -msgstr "" - -#: aiogram.types.chat_invite_link.ChatInviteLink:3 of -msgid "Source: https://core.telegram.org/bots/api#chatinvitelink" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.invite_link:1 -#: of -msgid "" -"The invite link. If the link was created by another chat administrator, " -"then the second part of the link will be replaced with '…'." -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.creator:1 of -msgid "Creator of the link" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_invite_link.ChatInviteLink.creates_join_request:1 of -msgid "" -":code:`True`, if users joining the chat via the link need to be approved " -"by chat administrators" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.is_primary:1 -#: of -msgid ":code:`True`, if the link is primary" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.is_revoked:1 -#: of -msgid ":code:`True`, if the link is revoked" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.name:1 of -msgid "*Optional*. Invite link name" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.expire_date:1 -#: of -msgid "" -"*Optional*. Point in time (Unix timestamp) when the link will expire or " -"has been expired" -msgstr "" - -#: ../../docstring aiogram.types.chat_invite_link.ChatInviteLink.member_limit:1 -#: of -msgid "" -"*Optional*. The maximum number of users that can be members of the chat " -"simultaneously after joining the chat via this invite link; 1-99999" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_invite_link.ChatInviteLink.pending_join_request_count:1 -#: of -msgid "*Optional*. Number of pending join requests created using this link" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po b/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po deleted file mode 100644 index c6884b77..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_join_request.po +++ /dev/null @@ -1,1618 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/chat_join_request.rst:3 -msgid "ChatJoinRequest" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest:1 of -msgid "Represents a join request sent to a chat." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest:3 of -msgid "Source: https://core.telegram.org/bots/api#chatjoinrequest" -msgstr "" - -#: ../../docstring aiogram.types.chat_join_request.ChatJoinRequest.chat:1 of -msgid "Chat to which the request was sent" -msgstr "" - -#: ../../docstring aiogram.types.chat_join_request.ChatJoinRequest.from_user:1 -#: of -msgid "User that sent the join request" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_join_request.ChatJoinRequest.user_chat_id:1 of -msgid "" -"Identifier of a private chat with the user who sent the join request. " -"This number may have more than 32 significant bits and some programming " -"languages may have difficulty/silent defects in interpreting it. But it " -"has at most 52 significant bits, so a 64-bit integer or double-precision " -"float type are safe for storing this identifier. The bot can use this " -"identifier for 24 hours to send messages until the join request is " -"processed, assuming no other administrator contacted the user." -msgstr "" - -#: ../../docstring aiogram.types.chat_join_request.ChatJoinRequest.date:1 of -msgid "Date the request was sent in Unix time" -msgstr "" - -#: ../../docstring aiogram.types.chat_join_request.ChatJoinRequest.bio:1 of -msgid "*Optional*. Bio of the user." -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_join_request.ChatJoinRequest.invite_link:1 of -msgid "" -"*Optional*. Chat invite link that was used by the user to send the join " -"request" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:4 -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:4 of -msgid ":code:`chat_id`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:5 -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:5 of -msgid ":code:`user_id`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:7 of -msgid "" -"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 " -"*can_invite_users* administrator right. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:9 of -msgid "Source: https://core.telegram.org/bots/api#approvechatjoinrequest" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.approve -#: aiogram.types.chat_join_request.ChatJoinRequest.decline of -msgid "Returns" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.approve:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.approve_chat_join_request.ApproveChatJoinRequest`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:7 of -msgid "" -"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 " -"*can_invite_users* administrator right. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:9 of -msgid "Source: https://core.telegram.org/bots/api#declinechatjoinrequest" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.decline:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.decline_chat_join_request.DeclineChatJoinRequest`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:6 of -msgid "" -"Use this method to send text messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendmessage" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm of -msgid "Parameters" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:10 of -msgid "Text of the message to be sent, 1-4096 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:11 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:12 of -msgid "" -"Mode for parsing entities in the message text. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:13 of -msgid "" -"A JSON-serialized list of special entities that appear in message text, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:14 of -msgid "Disables link previews for links in this message" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:32 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:32 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:16 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:33 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:33 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:17 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:34 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:34 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:18 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:35 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:35 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:26 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:26 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:19 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:27 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:27 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:20 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_pm:20 of -msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:6 of -msgid "" -"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " -"without sound). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send animation files of up to 50 MB in size, this limit may be changed in" -" the future." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendanimation" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:10 of -msgid "" -"Animation to send. Pass a file_id as String to send an animation that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an animation from the Internet, or upload a " -"new animation using multipart/form-data. :ref:`More information on " -"Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:12 of -msgid "Duration of sent animation in seconds" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:13 of -msgid "Animation width" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:14 of -msgid "Animation height" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:15 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:16 of -msgid "" -"Animation caption (may also be used when resending animation by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:17 of -msgid "" -"Mode for parsing entities in the animation caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:14 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:19 of -msgid "" -"Pass :code:`True` if the animation needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_animation_pm:25 of -msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:6 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display them in the music player. Your audio must be in the .MP3 or .M4A " -"format. On success, the sent :class:`aiogram.types.message.Message` is " -"returned. Bots can currently send audio files of up to 50 MB in size, " -"this limit may be changed in the future. For sending voice messages, use " -"the :class:`aiogram.methods.send_voice.SendVoice` method instead." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:9 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:9 of -msgid "Source: https://core.telegram.org/bots/api#sendaudio" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:11 of -msgid "" -"Audio file to send. Pass a file_id as String to send an audio file that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an audio file from the Internet, or upload a " -"new one using multipart/form-data. :ref:`More information on Sending " -"Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:13 of -msgid "Audio caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:14 of -msgid "" -"Mode for parsing entities in the audio caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:16 of -msgid "Duration of the audio in seconds" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:17 of -msgid "Performer" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:18 of -msgid "Track name" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_audio_pm:25 of -msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:6 of -msgid "" -"Use this method to send phone contacts. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendcontact" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:10 of -msgid "Contact's phone number" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:11 of -msgid "Contact's first name" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:13 of -msgid "Contact's last name" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:14 of -msgid "" -"Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_contact_pm:20 of -msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:6 of -msgid "" -"Use this method to send general files. On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send files of any type of up to 50 MB in size, this limit may be changed " -"in the future." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#senddocument" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:10 of -msgid "" -"File to send. Pass a file_id as String to send a file that exists on the " -"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" -" to get a file from the Internet, or upload a new one using multipart" -"/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:13 of -msgid "" -"Document caption (may also be used when resending documents by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:14 of -msgid "" -"Mode for parsing entities in the document caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:16 of -msgid "" -"Disables automatic server-side content type detection for files uploaded " -"using multipart/form-data" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_document_pm:22 of -msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:6 of -msgid "" -"Use this method to send a game. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendgame" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:10 of -msgid "" -"Short name of the game, serves as the unique identifier for the game. Set" -" up your games via `@BotFather `_." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:16 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Play game_title' button will be shown. If not empty, the first " -"button must launch the game." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_game_pm:17 of -msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:6 of -msgid "" -"Use this method to send invoices. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendinvoice" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:10 of -msgid "Product name, 1-32 characters" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:11 of -msgid "Product description, 1-255 characters" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:12 of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:13 of -msgid "" -"Payment provider token, obtained via `@BotFather " -"`_" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:14 of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:15 of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:17 of -msgid "" -"The maximum accepted amount for tips in the *smallest units* of the " -"currency (integer, **not** float/double). For example, for a maximum tip " -"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " -"parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:18 of -msgid "" -"A JSON-serialized 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 " -"*max_tip_amount*." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:19 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:20 of -msgid "" -"JSON-serialized 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." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:21 of -msgid "" -"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." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:22 of -msgid "Photo size in bytes" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:23 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:23 of -msgid "Photo width" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:24 of -msgid "Photo height" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:25 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:25 of -msgid "" -"Pass :code:`True` if you require the user's full name to complete the " -"order" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:26 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:26 of -msgid "" -"Pass :code:`True` if you require the user's phone number to complete the " -"order" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:27 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:27 of -msgid "" -"Pass :code:`True` if you require the user's email address to complete the" -" order" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:28 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:28 of -msgid "" -"Pass :code:`True` if you require the user's shipping address to complete " -"the order" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:29 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:29 of -msgid "Pass :code:`True` if the user's phone number should be sent to provider" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:30 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:30 of -msgid "Pass :code:`True` if the user's email address should be sent to provider" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:31 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:31 of -msgid "Pass :code:`True` if the final price depends on the shipping method" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:36 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:36 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Pay :code:`total price`' button will be shown. If not empty, the " -"first button must be a Pay button." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice:37 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_invoice_pm:37 of -msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:6 of -msgid "" -"Use this method to send point on the map. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendlocation" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:10 of -msgid "Latitude of the location" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:11 of -msgid "Longitude of the location" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:13 of -msgid "The radius of uncertainty for the location, measured in meters; 0-1500" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:14 of -msgid "" -"Period in seconds for which the location will be updated (see `Live " -"Locations `_, should be between" -" 60 and 86400." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:15 of -msgid "" -"For live locations, a direction in which the user is moving, in degrees. " -"Must be between 1 and 360 if specified." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:16 of -msgid "" -"For live locations, a maximum distance for proximity alerts about " -"approaching another chat member, in meters. Must be between 1 and 100000 " -"if specified." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_location_pm:22 of -msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_media_group.SendMediaGroup` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:6 of -msgid "" -"Use this method to send a group of photos, videos, documents or audios as" -" an album. Documents and audio files can be only grouped in an album with" -" messages of the same type. On success, an array of `Messages " -"`_ that were sent is " -"returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:10 of -msgid "" -"A JSON-serialized array describing messages to be sent, must include 2-10" -" items" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:12 of -msgid "" -"Sends messages `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:13 of -msgid "Protects the contents of the sent messages from forwarding and saving" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:14 of -msgid "If the messages are a reply, ID of the original message" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_media_group_pm:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.send_media_group.SendMediaGroup`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:6 of -msgid "" -"Use this method to send photos. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendphoto" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:10 of -msgid "" -"Photo to send. Pass a file_id as String to send a photo that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a photo from the Internet, or upload a new photo using " -"multipart/form-data. The photo must be at most 10 MB in size. The photo's" -" width and height must not exceed 10000 in total. Width and height ratio " -"must be at most 20. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:12 of -msgid "" -"Photo caption (may also be used when resending photos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:13 of -msgid "" -"Mode for parsing entities in the photo caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:15 of -msgid "" -"Pass :code:`True` if the photo needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm:21 of -msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:6 of -msgid "" -"Use this method to send a native poll. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendpoll" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:10 of -msgid "Poll question, 1-300 characters" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:11 of -msgid "" -"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " -"each" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:13 of -msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:14 of -msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:15 of -msgid "" -":code:`True`, if the poll allows multiple answers, ignored for polls in " -"quiz mode, defaults to :code:`False`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:16 of -msgid "" -"0-based identifier of the correct answer option, required for polls in " -"quiz mode" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:17 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:18 of -msgid "" -"Mode for parsing entities in the explanation. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:19 of -msgid "" -"A JSON-serialized list of special entities that appear in the poll " -"explanation, which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:20 of -msgid "" -"Amount of time in seconds the poll will be active after creation, 5-600. " -"Can't be used together with *close_date*." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:21 of -msgid "" -"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 *open_period*." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:22 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:22 of -msgid "" -"Pass :code:`True` if the poll needs to be immediately closed. This can be" -" useful for poll preview." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll:28 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_poll_pm:28 of -msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:6 of -msgid "" -"Use this method to send an animated emoji that will display a random " -"value. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#senddice" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:11 of -msgid "" -"Emoji on which the dice throw animation is based. Currently, must be one " -"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" -" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " -"to '🎲'" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:13 of -msgid "Protects the contents of the sent message from forwarding" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm:17 of -msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:6 of -msgid "" -"Use this method to send static .WEBP, `animated " -"`_ .TGS, or `video " -"`_ .WEBM " -"stickers. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendsticker" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:10 of -msgid "" -"Sticker to send. Pass a file_id as String to send a file that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " -"or .TGS sticker using multipart/form-data. :ref:`More information on " -"Sending Files » `. Video stickers can only be sent by a " -"file_id. Animated stickers can't be sent via an HTTP URL." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:12 of -msgid "Emoji associated with the sticker; only for just uploaded stickers" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_sticker_pm:18 of -msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:6 of -msgid "" -"Use this method to send information about a venue. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvenue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:10 of -msgid "Latitude of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:11 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:11 of -msgid "Longitude of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:12 of -msgid "Name of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:13 of -msgid "Address of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:15 of -msgid "Foursquare identifier of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:16 of -msgid "" -"Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:17 of -msgid "Google Places identifier of the venue" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:18 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:18 of -msgid "" -"Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue:24 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_venue_pm:24 of -msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:6 of -msgid "" -"Use this method to send video files, Telegram clients support MPEG4 " -"videos (other formats may be sent as " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send video files of up to 50 MB in size, this limit may be changed in the" -" future." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvideo" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:10 of -msgid "" -"Video to send. Pass a file_id as String to send a video that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a video from the Internet, or upload a new video using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:12 of -msgid "Duration of sent video in seconds" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:13 of -msgid "Video width" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:14 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:14 of -msgid "Video height" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:16 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:16 of -msgid "" -"Video caption (may also be used when resending videos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:17 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:17 of -msgid "" -"Mode for parsing entities in the video caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:19 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:19 of -msgid "" -"Pass :code:`True` if the video needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:20 of -msgid "Pass :code:`True` if the uploaded video is suitable for streaming" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video:26 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_pm:26 of -msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" -" fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:6 of -msgid "" -"As of `v.4.0 `_, " -"Telegram clients support rounded square MPEG4 videos of up to 1 minute " -"long. Use this method to send video messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvideonote" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:10 of -msgid "" -"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:13 of -msgid "Video width and height, i.e. diameter of the video message" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note:20 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_video_note_pm:20 of -msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:1 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:6 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:6 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display the file as a playable voice message. For this to work, your " -"audio must be in an .OGG file encoded with OPUS (other formats may be " -"sent as :class:`aiogram.types.audio.Audio` or " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send voice messages of up to 50 MB in size, this limit may be changed in " -"the future." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:8 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvoice" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:10 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:10 of -msgid "" -"Audio file to send. Pass a file_id as String to send a file that exists " -"on the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:12 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:12 of -msgid "Voice message caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:13 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:13 of -msgid "" -"Mode for parsing entities in the voice message caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:15 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:15 of -msgid "Duration of the voice message in seconds" -msgstr "" - -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice:21 -#: aiogram.types.chat_join_request.ChatJoinRequest.answer_voice_pm:21 of -msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" -msgstr "" - -#~ msgid "Use this method to approve a chat join request." -#~ msgstr "" - -#~ msgid "Use this method to decline a chat join request." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_location.po b/docs/locale/en/LC_MESSAGES/api/types/chat_location.po deleted file mode 100644 index ce065a0e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_location.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_location.rst:3 -msgid "ChatLocation" -msgstr "" - -#: aiogram.types.chat_location.ChatLocation:1 of -msgid "Represents a location to which a chat is connected." -msgstr "" - -#: aiogram.types.chat_location.ChatLocation:3 of -msgid "Source: https://core.telegram.org/bots/api#chatlocation" -msgstr "" - -#: ../../docstring aiogram.types.chat_location.ChatLocation.location:1 of -msgid "" -"The location to which the supergroup is connected. Can't be a live " -"location." -msgstr "" - -#: ../../docstring aiogram.types.chat_location.ChatLocation.address:1 of -msgid "Location address; 1-64 characters, as defined by the chat owner" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member.po deleted file mode 100644 index 49bf21a4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member.po +++ /dev/null @@ -1,223 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/chat_member.rst:3 -msgid "ChatMember" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:1 of -msgid "" -"This object contains information about one member of a chat. Currently, " -"the following 6 types of chat members are supported:" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:3 of -msgid ":class:`aiogram.types.chat_member_owner.ChatMemberOwner`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:4 of -msgid ":class:`aiogram.types.chat_member_administrator.ChatMemberAdministrator`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:5 of -msgid ":class:`aiogram.types.chat_member_member.ChatMemberMember`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:6 of -msgid ":class:`aiogram.types.chat_member_restricted.ChatMemberRestricted`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:7 of -msgid ":class:`aiogram.types.chat_member_left.ChatMemberLeft`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:8 of -msgid ":class:`aiogram.types.chat_member_banned.ChatMemberBanned`" -msgstr "" - -#: aiogram.types.chat_member.ChatMember:10 of -msgid "Source: https://core.telegram.org/bots/api#chatmember" -msgstr "" - -#~ msgid "..." -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can add new administrators with a" -#~ " subset of their own privileges or" -#~ " demote administrators that he has " -#~ "promoted, directly or indirectly (promoted " -#~ "by administrators that were appointed by" -#~ " the user)" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send text messages, " -#~ "contacts, locations and venues" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send audios, documents, " -#~ "photos, videos, video notes and voice" -#~ " notes" -#~ msgstr "" - -#~ msgid "The member's status in the chat" -#~ msgstr "" - -#~ msgid "*Optional*. Information about the user" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user's presence in the chat is hidden" -#~ msgstr "" - -#~ msgid "*Optional*. Custom title for this user" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the bot is" -#~ " allowed to edit administrator privileges" -#~ " of that user" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`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" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can delete messages of other users" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the administrator can manage video chats" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can restrict, ban or unban chat " -#~ "members" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can add new administrators with a" -#~ " subset of their own privileges or" -#~ " demote administrators that they have " -#~ "promoted, directly or indirectly (promoted " -#~ "by administrators that were appointed by" -#~ " the user)" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to change the chat title," -#~ " photo and other settings" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to invite new users to " -#~ "the chat" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can post in the channel; channels" -#~ " only" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the administrator" -#~ " can edit messages of other users " -#~ "and can pin messages; channels only" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to pin messages; groups and" -#~ " supergroups only" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to create, rename, close, " -#~ "and reopen forum topics; supergroups " -#~ "only" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " a member of the chat at the" -#~ " moment of the request" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send text messages, " -#~ "contacts, invoices, locations and venues" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send audios" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send documents" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send photos" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send videos" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" -#~ msgstr "" - -#~ msgid "*Optional*. :code:`True`, if the user is allowed to send polls" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send animations, games, " -#~ "stickers and use inline bots" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to add web page previews " -#~ "to their messages" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. Date when restrictions will " -#~ "be lifted for this user; unix " -#~ "time. If 0, then the user is " -#~ "restricted forever" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_administrator.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_administrator.po deleted file mode 100644 index 9b51540f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_administrator.po +++ /dev/null @@ -1,157 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/chat_member_administrator.rst:3 -msgid "ChatMemberAdministrator" -msgstr "" - -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator:1 of -msgid "" -"Represents a `chat member " -"`_ that has some " -"additional privileges." -msgstr "" - -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberadministrator" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.status:1 of -msgid "The member's status in the chat, always 'administrator'" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.user:1 of -msgid "Information about the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_be_edited:1 -#: of -msgid "" -":code:`True`, if the bot is allowed to edit administrator privileges of " -"that user" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.is_anonymous:1 -#: of -msgid ":code:`True`, if the user's presence in the chat is hidden" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_chat:1 -#: of -msgid "" -":code:`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" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_delete_messages:1 -#: of -msgid ":code:`True`, if the administrator can delete messages of other users" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_video_chats:1 -#: of -msgid ":code:`True`, if the administrator can manage video chats" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_restrict_members:1 -#: of -msgid ":code:`True`, if the administrator can restrict, ban or unban chat members" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_promote_members:1 -#: of -msgid "" -":code:`True`, if the administrator can add new administrators with a " -"subset of their own privileges or demote administrators that they have " -"promoted, directly or indirectly (promoted by administrators that were " -"appointed by the user)" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_change_info:1 -#: of -msgid "" -":code:`True`, if the user is allowed to change the chat title, photo and " -"other settings" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_invite_users:1 -#: of -msgid ":code:`True`, if the user is allowed to invite new users to the chat" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_post_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_edit_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the administrator can edit messages of other" -" users and can pin messages; channels only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_pin_messages:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to pin messages; groups " -"and supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_topics:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to create, rename, " -"close, and reopen forum topics; supergroups only" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.custom_title:1 -#: of -msgid "*Optional*. Custom title for this user" -msgstr "" - -#~ msgid "" -#~ ":code:`True`, if the administrator can " -#~ "add new administrators with a subset " -#~ "of their own privileges or demote " -#~ "administrators that he has promoted, " -#~ "directly or indirectly (promoted by " -#~ "administrators that were appointed by " -#~ "the user)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_banned.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_banned.po deleted file mode 100644 index 5b7267fb..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_banned.po +++ /dev/null @@ -1,49 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_member_banned.rst:3 -msgid "ChatMemberBanned" -msgstr "" - -#: aiogram.types.chat_member_banned.ChatMemberBanned:1 of -msgid "" -"Represents a `chat member " -"`_ that was banned in the " -"chat and can't return to the chat or view chat messages." -msgstr "" - -#: aiogram.types.chat_member_banned.ChatMemberBanned:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberbanned" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_banned.ChatMemberBanned.status:1 -#: of -msgid "The member's status in the chat, always 'kicked'" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_banned.ChatMemberBanned.user:1 of -msgid "Information about the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_banned.ChatMemberBanned.until_date:1 of -msgid "" -"Date when restrictions will be lifted for this user; unix time. If 0, " -"then the user is banned forever" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_left.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_left.po deleted file mode 100644 index cae2e7b8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_left.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_member_left.rst:3 -msgid "ChatMemberLeft" -msgstr "" - -#: aiogram.types.chat_member_left.ChatMemberLeft:1 of -msgid "" -"Represents a `chat member " -"`_ that isn't currently a " -"member of the chat, but may join it themselves." -msgstr "" - -#: aiogram.types.chat_member_left.ChatMemberLeft:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberleft" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_left.ChatMemberLeft.status:1 of -msgid "The member's status in the chat, always 'left'" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_left.ChatMemberLeft.user:1 of -msgid "Information about the user" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_member.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_member.po deleted file mode 100644 index 8bc63e6e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_member.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_member_member.rst:3 -msgid "ChatMemberMember" -msgstr "" - -#: aiogram.types.chat_member_member.ChatMemberMember:1 of -msgid "" -"Represents a `chat member " -"`_ that has no additional " -"privileges or restrictions." -msgstr "" - -#: aiogram.types.chat_member_member.ChatMemberMember:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmembermember" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_member.ChatMemberMember.status:1 -#: of -msgid "The member's status in the chat, always 'member'" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_member.ChatMemberMember.user:1 of -msgid "Information about the user" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_owner.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_owner.po deleted file mode 100644 index 25470e8c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_owner.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_member_owner.rst:3 -msgid "ChatMemberOwner" -msgstr "" - -#: aiogram.types.chat_member_owner.ChatMemberOwner:1 of -msgid "" -"Represents a `chat member " -"`_ that owns the chat and " -"has all administrator privileges." -msgstr "" - -#: aiogram.types.chat_member_owner.ChatMemberOwner:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberowner" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_owner.ChatMemberOwner.status:1 of -msgid "The member's status in the chat, always 'creator'" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_owner.ChatMemberOwner.user:1 of -msgid "Information about the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_owner.ChatMemberOwner.is_anonymous:1 of -msgid ":code:`True`, if the user's presence in the chat is hidden" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_owner.ChatMemberOwner.custom_title:1 of -msgid "*Optional*. Custom title for this user" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_restricted.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_restricted.po deleted file mode 100644 index a0f2f184..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_restricted.po +++ /dev/null @@ -1,161 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/chat_member_restricted.rst:3 -msgid "ChatMemberRestricted" -msgstr "" - -#: aiogram.types.chat_member_restricted.ChatMemberRestricted:1 of -msgid "" -"Represents a `chat member " -"`_ that is under certain " -"restrictions in the chat. Supergroups only." -msgstr "" - -#: aiogram.types.chat_member_restricted.ChatMemberRestricted:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberrestricted" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.status:1 of -msgid "The member's status in the chat, always 'restricted'" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.user:1 of -msgid "Information about the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.is_member:1 of -msgid "" -":code:`True`, if the user is a member of the chat at the moment of the " -"request" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_messages:1 -#: of -msgid "" -":code:`True`, if the user is allowed to send text messages, contacts, " -"invoices, locations and venues" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_audios:1 -#: of -msgid ":code:`True`, if the user is allowed to send audios" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_documents:1 -#: of -msgid ":code:`True`, if the user is allowed to send documents" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_photos:1 -#: of -msgid ":code:`True`, if the user is allowed to send photos" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_videos:1 -#: of -msgid ":code:`True`, if the user is allowed to send videos" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_video_notes:1 -#: of -msgid ":code:`True`, if the user is allowed to send video notes" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_voice_notes:1 -#: of -msgid ":code:`True`, if the user is allowed to send voice notes" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_polls:1 -#: of -msgid ":code:`True`, if the user is allowed to send polls" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_send_other_messages:1 -#: of -msgid "" -":code:`True`, if the user is allowed to send animations, games, stickers " -"and use inline bots" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_add_web_page_previews:1 -#: of -msgid "" -":code:`True`, if the user is allowed to add web page previews to their " -"messages" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_change_info:1 -#: of -msgid "" -":code:`True`, if the user is allowed to change the chat title, photo and " -"other settings" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_invite_users:1 -#: of -msgid ":code:`True`, if the user is allowed to invite new users to the chat" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_pin_messages:1 -#: of -msgid ":code:`True`, if the user is allowed to pin messages" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.can_manage_topics:1 -#: of -msgid ":code:`True`, if the user is allowed to create forum topics" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_restricted.ChatMemberRestricted.until_date:1 of -msgid "" -"Date when restrictions will be lifted for this user; unix time. If 0, " -"then the user is restricted forever" -msgstr "" - -#~ msgid "" -#~ ":code:`True`, if the user is allowed " -#~ "to send text messages, contacts, " -#~ "locations and venues" -#~ msgstr "" - -#~ msgid "" -#~ ":code:`True`, if the user is allowed " -#~ "to send audios, documents, photos, " -#~ "videos, video notes and voice notes" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po b/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po deleted file mode 100644 index dec952fe..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_member_updated.po +++ /dev/null @@ -1,1232 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/chat_member_updated.rst:3 -msgid "ChatMemberUpdated" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated:1 of -msgid "This object represents changes in the status of a chat member." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated:3 of -msgid "Source: https://core.telegram.org/bots/api#chatmemberupdated" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_updated.ChatMemberUpdated.chat:1 -#: of -msgid "Chat the user belongs to" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_updated.ChatMemberUpdated.from_user:1 of -msgid "Performer of the action, which resulted in the change" -msgstr "" - -#: ../../docstring aiogram.types.chat_member_updated.ChatMemberUpdated.date:1 -#: of -msgid "Date the change was done in Unix time" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_updated.ChatMemberUpdated.old_chat_member:1 of -msgid "Previous information about the chat member" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_updated.ChatMemberUpdated.new_chat_member:1 of -msgid "New information about the chat member" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_updated.ChatMemberUpdated.invite_link:1 of -msgid "" -"*Optional*. Chat invite link, which was used by the user to join the " -"chat; for joining by invite link events only." -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_member_updated.ChatMemberUpdated.via_chat_folder_invite_link:1 -#: of -msgid "" -"*Optional*. True, if the user joined the chat via a chat folder invite " -"link" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:4 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:4 of -msgid ":code:`chat_id`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:6 of -msgid "" -"Use this method to send text messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:8 of -msgid "Source: https://core.telegram.org/bots/api#sendmessage" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of -msgid "Parameters" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:10 of -msgid "Text of the message to be sent, 1-4096 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:10 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:14 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:11 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:11 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:12 of -msgid "" -"Mode for parsing entities in the message text. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:13 of -msgid "" -"A JSON-serialized list of special entities that appear in message text, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:14 of -msgid "Disables link previews for links in this message" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:32 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:23 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:13 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:16 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:13 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:33 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:24 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:14 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:22 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:17 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:22 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:22 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:14 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:14 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:34 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:25 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:23 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:18 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:23 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:23 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:35 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:26 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:22 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:24 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:19 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:24 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:24 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:16 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:21 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:20 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:27 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:17 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:23 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:25 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:20 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice of -msgid "Returns" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer:20 of -msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:6 of -msgid "" -"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " -"without sound). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send animation files of up to 50 MB in size, this limit may be changed in" -" the future." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:8 of -msgid "Source: https://core.telegram.org/bots/api#sendanimation" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:10 of -msgid "" -"Animation to send. Pass a file_id as String to send an animation that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an animation from the Internet, or upload a " -"new animation using multipart/form-data. :ref:`More information on " -"Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:12 of -msgid "Duration of sent animation in seconds" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:13 of -msgid "Animation width" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:14 of -msgid "Animation height" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:19 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:14 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:16 of -msgid "" -"Animation caption (may also be used when resending animation by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:17 of -msgid "" -"Mode for parsing entities in the animation caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:15 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:14 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:18 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:14 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:19 of -msgid "" -"Pass :code:`True` if the animation needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_animation:25 of -msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:6 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display them in the music player. Your audio must be in the .MP3 or .M4A " -"format. On success, the sent :class:`aiogram.types.message.Message` is " -"returned. Bots can currently send audio files of up to 50 MB in size, " -"this limit may be changed in the future. For sending voice messages, use " -"the :class:`aiogram.methods.send_voice.SendVoice` method instead." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:9 of -msgid "Source: https://core.telegram.org/bots/api#sendaudio" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:11 of -msgid "" -"Audio file to send. Pass a file_id as String to send an audio file that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an audio file from the Internet, or upload a " -"new one using multipart/form-data. :ref:`More information on Sending " -"Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:13 of -msgid "Audio caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:14 of -msgid "" -"Mode for parsing entities in the audio caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:16 of -msgid "Duration of the audio in seconds" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:17 of -msgid "Performer" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:18 of -msgid "Track name" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_audio:25 of -msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:6 of -msgid "" -"Use this method to send phone contacts. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:8 of -msgid "Source: https://core.telegram.org/bots/api#sendcontact" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:10 of -msgid "Contact's phone number" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:11 of -msgid "Contact's first name" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:13 of -msgid "Contact's last name" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:14 of -msgid "" -"Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_contact:20 of -msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:6 of -msgid "" -"Use this method to send general files. On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send files of any type of up to 50 MB in size, this limit may be changed " -"in the future." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:8 of -msgid "Source: https://core.telegram.org/bots/api#senddocument" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:10 of -msgid "" -"File to send. Pass a file_id as String to send a file that exists on the " -"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" -" to get a file from the Internet, or upload a new one using multipart" -"/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:13 of -msgid "" -"Document caption (may also be used when resending documents by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:14 of -msgid "" -"Mode for parsing entities in the document caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:16 of -msgid "" -"Disables automatic server-side content type detection for files uploaded " -"using multipart/form-data" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_document:22 of -msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:6 of -msgid "" -"Use this method to send a game. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:8 of -msgid "Source: https://core.telegram.org/bots/api#sendgame" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:10 of -msgid "" -"Short name of the game, serves as the unique identifier for the game. Set" -" up your games via `@BotFather `_." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:16 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Play game_title' button will be shown. If not empty, the first " -"button must launch the game." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_game:17 of -msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:6 of -msgid "" -"Use this method to send invoices. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:8 of -msgid "Source: https://core.telegram.org/bots/api#sendinvoice" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:10 of -msgid "Product name, 1-32 characters" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:11 of -msgid "Product description, 1-255 characters" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:12 of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:13 of -msgid "" -"Payment provider token, obtained via `@BotFather " -"`_" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:14 of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:15 of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:17 of -msgid "" -"The maximum accepted amount for tips in the *smallest units* of the " -"currency (integer, **not** float/double). For example, for a maximum tip " -"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " -"parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:18 of -msgid "" -"A JSON-serialized 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 " -"*max_tip_amount*." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:19 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:20 of -msgid "" -"JSON-serialized 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." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:21 of -msgid "" -"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." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:22 of -msgid "Photo size in bytes" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:23 of -msgid "Photo width" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:24 of -msgid "Photo height" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:25 of -msgid "" -"Pass :code:`True` if you require the user's full name to complete the " -"order" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:26 of -msgid "" -"Pass :code:`True` if you require the user's phone number to complete the " -"order" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:27 of -msgid "" -"Pass :code:`True` if you require the user's email address to complete the" -" order" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:28 of -msgid "" -"Pass :code:`True` if you require the user's shipping address to complete " -"the order" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:29 of -msgid "Pass :code:`True` if the user's phone number should be sent to provider" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:30 of -msgid "Pass :code:`True` if the user's email address should be sent to provider" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:31 of -msgid "Pass :code:`True` if the final price depends on the shipping method" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:36 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Pay :code:`total price`' button will be shown. If not empty, the " -"first button must be a Pay button." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_invoice:37 of -msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:6 of -msgid "" -"Use this method to send point on the map. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:8 of -msgid "Source: https://core.telegram.org/bots/api#sendlocation" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:10 of -msgid "Latitude of the location" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:11 of -msgid "Longitude of the location" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:13 of -msgid "The radius of uncertainty for the location, measured in meters; 0-1500" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:14 of -msgid "" -"Period in seconds for which the location will be updated (see `Live " -"Locations `_, should be between" -" 60 and 86400." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:15 of -msgid "" -"For live locations, a direction in which the user is moving, in degrees. " -"Must be between 1 and 360 if specified." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:16 of -msgid "" -"For live locations, a maximum distance for proximity alerts about " -"approaching another chat member, in meters. Must be between 1 and 100000 " -"if specified." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_location:22 of -msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_media_group.SendMediaGroup` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:6 of -msgid "" -"Use this method to send a group of photos, videos, documents or audios as" -" an album. Documents and audio files can be only grouped in an album with" -" messages of the same type. On success, an array of `Messages " -"`_ that were sent is " -"returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:8 of -msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:10 of -msgid "" -"A JSON-serialized array describing messages to be sent, must include 2-10" -" items" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:12 of -msgid "" -"Sends messages `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:13 of -msgid "Protects the contents of the sent messages from forwarding and saving" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:14 of -msgid "If the messages are a reply, ID of the original message" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_media_group:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.send_media_group.SendMediaGroup`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:6 of -msgid "" -"Use this method to send photos. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:8 of -msgid "Source: https://core.telegram.org/bots/api#sendphoto" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:10 of -msgid "" -"Photo to send. Pass a file_id as String to send a photo that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a photo from the Internet, or upload a new photo using " -"multipart/form-data. The photo must be at most 10 MB in size. The photo's" -" width and height must not exceed 10000 in total. Width and height ratio " -"must be at most 20. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:12 of -msgid "" -"Photo caption (may also be used when resending photos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:13 of -msgid "" -"Mode for parsing entities in the photo caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:15 of -msgid "" -"Pass :code:`True` if the photo needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_photo:21 of -msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:6 of -msgid "" -"Use this method to send a native poll. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:8 of -msgid "Source: https://core.telegram.org/bots/api#sendpoll" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:10 of -msgid "Poll question, 1-300 characters" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:11 of -msgid "" -"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " -"each" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:13 of -msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:14 of -msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:15 of -msgid "" -":code:`True`, if the poll allows multiple answers, ignored for polls in " -"quiz mode, defaults to :code:`False`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:16 of -msgid "" -"0-based identifier of the correct answer option, required for polls in " -"quiz mode" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:17 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:18 of -msgid "" -"Mode for parsing entities in the explanation. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:19 of -msgid "" -"A JSON-serialized list of special entities that appear in the poll " -"explanation, which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:20 of -msgid "" -"Amount of time in seconds the poll will be active after creation, 5-600. " -"Can't be used together with *close_date*." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:21 of -msgid "" -"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 *open_period*." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:22 of -msgid "" -"Pass :code:`True` if the poll needs to be immediately closed. This can be" -" useful for poll preview." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_poll:28 of -msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:6 of -msgid "" -"Use this method to send an animated emoji that will display a random " -"value. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:8 of -msgid "Source: https://core.telegram.org/bots/api#senddice" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:11 of -msgid "" -"Emoji on which the dice throw animation is based. Currently, must be one " -"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" -" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " -"to '🎲'" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:13 of -msgid "Protects the contents of the sent message from forwarding" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_dice:17 of -msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:6 of -msgid "" -"Use this method to send static .WEBP, `animated " -"`_ .TGS, or `video " -"`_ .WEBM " -"stickers. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:8 of -msgid "Source: https://core.telegram.org/bots/api#sendsticker" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:10 of -msgid "" -"Sticker to send. Pass a file_id as String to send a file that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " -"or .TGS sticker using multipart/form-data. :ref:`More information on " -"Sending Files » `. Video stickers can only be sent by a " -"file_id. Animated stickers can't be sent via an HTTP URL." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:12 of -msgid "Emoji associated with the sticker; only for just uploaded stickers" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_sticker:18 of -msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:6 of -msgid "" -"Use this method to send information about a venue. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvenue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:10 of -msgid "Latitude of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:11 of -msgid "Longitude of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:12 of -msgid "Name of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:13 of -msgid "Address of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:15 of -msgid "Foursquare identifier of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:16 of -msgid "" -"Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:17 of -msgid "Google Places identifier of the venue" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:18 of -msgid "" -"Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_venue:24 of -msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:6 of -msgid "" -"Use this method to send video files, Telegram clients support MPEG4 " -"videos (other formats may be sent as " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send video files of up to 50 MB in size, this limit may be changed in the" -" future." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvideo" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:10 of -msgid "" -"Video to send. Pass a file_id as String to send a video that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a video from the Internet, or upload a new video using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:12 -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:12 of -msgid "Duration of sent video in seconds" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:13 of -msgid "Video width" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:14 of -msgid "Video height" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:16 of -msgid "" -"Video caption (may also be used when resending videos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:17 of -msgid "" -"Mode for parsing entities in the video caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:19 of -msgid "" -"Pass :code:`True` if the video needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:20 of -msgid "Pass :code:`True` if the uploaded video is suitable for streaming" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video:26 of -msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" -" fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:6 of -msgid "" -"As of `v.4.0 `_, " -"Telegram clients support rounded square MPEG4 videos of up to 1 minute " -"long. Use this method to send video messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvideonote" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:10 of -msgid "" -"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:13 of -msgid "Video width and height, i.e. diameter of the video message" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_video_note:20 of -msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:6 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display the file as a playable voice message. For this to work, your " -"audio must be in an .OGG file encoded with OPUS (other formats may be " -"sent as :class:`aiogram.types.audio.Audio` or " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send voice messages of up to 50 MB in size, this limit may be changed in " -"the future." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:8 of -msgid "Source: https://core.telegram.org/bots/api#sendvoice" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:10 of -msgid "" -"Audio file to send. Pass a file_id as String to send a file that exists " -"on the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:12 of -msgid "Voice message caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:13 of -msgid "" -"Mode for parsing entities in the voice message caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:15 of -msgid "Duration of the voice message in seconds" -msgstr "" - -#: aiogram.types.chat_member_updated.ChatMemberUpdated.answer_voice:21 of -msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_permissions.po b/docs/locale/en/LC_MESSAGES/api/types/chat_permissions.po deleted file mode 100644 index 8dd59fb3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_permissions.po +++ /dev/null @@ -1,150 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/chat_permissions.rst:3 -msgid "ChatPermissions" -msgstr "" - -#: aiogram.types.chat_permissions.ChatPermissions:1 of -msgid "" -"Describes actions that a non-administrator user is allowed to take in a " -"chat." -msgstr "" - -#: aiogram.types.chat_permissions.ChatPermissions:3 of -msgid "Source: https://core.telegram.org/bots/api#chatpermissions" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send text messages, " -"contacts, invoices, locations and venues" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_audios:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send audios" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_documents:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send documents" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_photos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send photos" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_videos:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send videos" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_video_notes:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send video notes" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_voice_notes:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send voice notes" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_polls:1 of -msgid "*Optional*. :code:`True`, if the user is allowed to send polls" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_send_other_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to send animations, " -"games, stickers and use inline bots" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_add_web_page_previews:1 -#: of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to add web page previews" -" to their messages" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_change_info:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to change the chat " -"title, photo and other settings. Ignored in public supergroups" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_invite_users:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to invite new users to " -"the chat" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_pin_messages:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to pin messages. Ignored" -" in public supergroups" -msgstr "" - -#: ../../docstring -#: aiogram.types.chat_permissions.ChatPermissions.can_manage_topics:1 of -msgid "" -"*Optional*. :code:`True`, if the user is allowed to create forum topics. " -"If omitted defaults to the value of can_pin_messages" -msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send text messages, " -#~ "contacts, locations and venues" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send audios, documents, " -#~ "photos, videos, video notes and voice" -#~ " notes, implies can_send_messages" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send polls, implies " -#~ "can_send_messages" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to send animations, games, " -#~ "stickers and use inline bots, implies" -#~ " can_send_media_messages" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if the user is" -#~ " allowed to add web page previews " -#~ "to their messages, implies " -#~ "can_send_media_messages" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_photo.po b/docs/locale/en/LC_MESSAGES/api/types/chat_photo.po deleted file mode 100644 index 67bbfafe..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_photo.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chat_photo.rst:3 -msgid "ChatPhoto" -msgstr "" - -#: aiogram.types.chat_photo.ChatPhoto:1 of -msgid "This object represents a chat photo." -msgstr "" - -#: aiogram.types.chat_photo.ChatPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#chatphoto" -msgstr "" - -#: ../../docstring aiogram.types.chat_photo.ChatPhoto.small_file_id:1 of -msgid "" -"File identifier of small (160x160) chat photo. This file_id can be used " -"only for photo download and only for as long as the photo is not changed." -msgstr "" - -#: ../../docstring aiogram.types.chat_photo.ChatPhoto.small_file_unique_id:1 of -msgid "" -"Unique file identifier of small (160x160) chat photo, which is supposed " -"to be the same over time and for different bots. Can't be used to " -"download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.chat_photo.ChatPhoto.big_file_id:1 of -msgid "" -"File identifier of big (640x640) chat photo. This file_id can be used " -"only for photo download and only for as long as the photo is not changed." -msgstr "" - -#: ../../docstring aiogram.types.chat_photo.ChatPhoto.big_file_unique_id:1 of -msgid "" -"Unique file identifier of big (640x640) chat photo, which is supposed to " -"be the same over time and for different bots. Can't be used to download " -"or reuse the file." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chat_shared.po b/docs/locale/en/LC_MESSAGES/api/types/chat_shared.po deleted file mode 100644 index def83f98..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chat_shared.po +++ /dev/null @@ -1,49 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/chat_shared.rst:3 -msgid "ChatShared" -msgstr "" - -#: aiogram.types.chat_shared.ChatShared:1 of -msgid "" -"This object contains information about the chat whose identifier was " -"shared with the bot using a " -":class:`aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat`" -" button." -msgstr "" - -#: aiogram.types.chat_shared.ChatShared:3 of -msgid "Source: https://core.telegram.org/bots/api#chatshared" -msgstr "" - -#: ../../docstring aiogram.types.chat_shared.ChatShared.request_id:1 of -msgid "Identifier of the request" -msgstr "" - -#: ../../docstring aiogram.types.chat_shared.ChatShared.chat_id:1 of -msgid "" -"Identifier of the shared chat. This number may have more than 32 " -"significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. But it has at most 52 " -"significant bits, so a 64-bit integer or double-precision float type are " -"safe for storing this identifier. The bot may not have access to the chat" -" and could be unable to use this identifier, unless the chat is already " -"known to the bot by some other means." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/chosen_inline_result.po b/docs/locale/en/LC_MESSAGES/api/types/chosen_inline_result.po deleted file mode 100644 index ebbc8e52..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/chosen_inline_result.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/chosen_inline_result.rst:3 -msgid "ChosenInlineResult" -msgstr "" - -#: aiogram.types.chosen_inline_result.ChosenInlineResult:1 of -msgid "" -"Represents a `result " -"`_ of an inline " -"query that was chosen by the user and sent to their chat partner. " -"**Note:** It is necessary to enable `inline feedback " -"`_ via " -"`@BotFather `_ in order to receive these objects " -"in updates." -msgstr "" - -#: aiogram.types.chosen_inline_result.ChosenInlineResult:4 of -msgid "Source: https://core.telegram.org/bots/api#choseninlineresult" -msgstr "" - -#: ../../docstring -#: aiogram.types.chosen_inline_result.ChosenInlineResult.result_id:1 of -msgid "The unique identifier for the result that was chosen" -msgstr "" - -#: ../../docstring -#: aiogram.types.chosen_inline_result.ChosenInlineResult.from_user:1 of -msgid "The user that chose the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.chosen_inline_result.ChosenInlineResult.query:1 of -msgid "The query that was used to obtain the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.chosen_inline_result.ChosenInlineResult.location:1 of -msgid "*Optional*. Sender location, only for bots that require user location" -msgstr "" - -#: ../../docstring -#: aiogram.types.chosen_inline_result.ChosenInlineResult.inline_message_id:1 of -msgid "" -"*Optional*. Identifier of the sent inline message. Available only if " -"there is an `inline keyboard " -"`_ attached to " -"the message. Will be also received in `callback queries " -"`_ and can be used to " -"`edit `_ the " -"message." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/contact.po b/docs/locale/en/LC_MESSAGES/api/types/contact.po deleted file mode 100644 index 7e9f5102..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/contact.po +++ /dev/null @@ -1,57 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/contact.rst:3 -msgid "Contact" -msgstr "" - -#: aiogram.types.contact.Contact:1 of -msgid "This object represents a phone contact." -msgstr "" - -#: aiogram.types.contact.Contact:3 of -msgid "Source: https://core.telegram.org/bots/api#contact" -msgstr "" - -#: ../../docstring aiogram.types.contact.Contact.phone_number:1 of -msgid "Contact's phone number" -msgstr "" - -#: ../../docstring aiogram.types.contact.Contact.first_name:1 of -msgid "Contact's first name" -msgstr "" - -#: ../../docstring aiogram.types.contact.Contact.last_name:1 of -msgid "*Optional*. Contact's last name" -msgstr "" - -#: ../../docstring aiogram.types.contact.Contact.user_id:1 of -msgid "" -"*Optional*. Contact's user identifier in Telegram. This number may have " -"more than 32 significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. But it has at most 52 " -"significant bits, so a 64-bit integer or double-precision float type are " -"safe for storing this identifier." -msgstr "" - -#: ../../docstring aiogram.types.contact.Contact.vcard:1 of -msgid "" -"*Optional*. Additional data about the contact in the form of a `vCard " -"`_" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/dice.po b/docs/locale/en/LC_MESSAGES/api/types/dice.po deleted file mode 100644 index 55baf589..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/dice.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/dice.rst:3 -msgid "Dice" -msgstr "" - -#: aiogram.types.dice.Dice:1 of -msgid "This object represents an animated emoji that displays a random value." -msgstr "" - -#: aiogram.types.dice.Dice:3 of -msgid "Source: https://core.telegram.org/bots/api#dice" -msgstr "" - -#: ../../docstring aiogram.types.dice.Dice.emoji:1 of -msgid "Emoji on which the dice throw animation is based" -msgstr "" - -#: ../../docstring aiogram.types.dice.Dice.value:1 of -msgid "" -"Value of the dice, 1-6 for '🎲', '🎯' and '🎳' base emoji, 1-5 for '🏀' and " -"'⚽' base emoji, 1-64 for '🎰' base emoji" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/document.po b/docs/locale/en/LC_MESSAGES/api/types/document.po deleted file mode 100644 index 0295a948..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/document.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/document.rst:3 -msgid "Document" -msgstr "" - -#: aiogram.types.document.Document:1 of -msgid "" -"This object represents a general file (as opposed to `photos " -"`_, `voice messages " -"`_ and `audio files " -"`_)." -msgstr "" - -#: aiogram.types.document.Document:3 of -msgid "Source: https://core.telegram.org/bots/api#document" -msgstr "" - -#: ../../docstring aiogram.types.document.Document.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.document.Document.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.document.Document.thumb:1 of -msgid "*Optional*. Document thumbnail as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.document.Document.file_name:1 of -msgid "*Optional*. Original filename as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.document.Document.mime_type:1 of -msgid "*Optional*. MIME type of the file as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.document.Document.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/encrypted_credentials.po b/docs/locale/en/LC_MESSAGES/api/types/encrypted_credentials.po deleted file mode 100644 index ef407694..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/encrypted_credentials.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/encrypted_credentials.rst:3 -msgid "EncryptedCredentials" -msgstr "" - -#: aiogram.types.encrypted_credentials.EncryptedCredentials:1 of -msgid "" -"Describes data required for decrypting and authenticating " -":class:`aiogram.types.encrypted_passport_element.EncryptedPassportElement`." -" See the `Telegram Passport Documentation " -"`_ for a " -"complete description of the data decryption and authentication processes." -msgstr "" - -#: aiogram.types.encrypted_credentials.EncryptedCredentials:3 of -msgid "Source: https://core.telegram.org/bots/api#encryptedcredentials" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_credentials.EncryptedCredentials.data:1 of -msgid "" -"Base64-encoded encrypted JSON-serialized data with unique user's payload," -" data hashes and secrets required for " -":class:`aiogram.types.encrypted_passport_element.EncryptedPassportElement`" -" decryption and authentication" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_credentials.EncryptedCredentials.hash:1 of -msgid "Base64-encoded data hash for data authentication" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_credentials.EncryptedCredentials.secret:1 of -msgid "" -"Base64-encoded secret, encrypted with the bot's public RSA key, required " -"for data decryption" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/encrypted_passport_element.po b/docs/locale/en/LC_MESSAGES/api/types/encrypted_passport_element.po deleted file mode 100644 index d0a915ce..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/encrypted_passport_element.po +++ /dev/null @@ -1,126 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/encrypted_passport_element.rst:3 -msgid "EncryptedPassportElement" -msgstr "" - -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement:1 of -msgid "" -"Describes documents or other Telegram Passport elements shared with the " -"bot by the user." -msgstr "" - -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement:3 of -msgid "Source: https://core.telegram.org/bots/api#encryptedpassportelement" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.type:1 of -msgid "" -"Element type. One of 'personal_details', 'passport', 'driver_license', " -"'identity_card', 'internal_passport', 'address', 'utility_bill', " -"'bank_statement', 'rental_agreement', 'passport_registration', " -"'temporary_registration', 'phone_number', 'email'." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.hash:1 of -msgid "" -"Base64-encoded element hash for using in " -":class:`aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified`" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.data:1 of -msgid "" -"*Optional*. Base64-encoded encrypted Telegram Passport element data " -"provided by the user, available for 'personal_details', 'passport', " -"'driver_license', 'identity_card', 'internal_passport' and 'address' " -"types. Can be decrypted and verified using the accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.phone_number:1 -#: of -msgid "" -"*Optional*. User's verified phone number, available only for " -"'phone_number' type" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.email:1 of -msgid "*Optional*. User's verified email address, available only for 'email' type" -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.files:1 of -msgid "" -"*Optional*. Array of encrypted files with documents provided by the user," -" available for 'utility_bill', 'bank_statement', 'rental_agreement', " -"'passport_registration' and 'temporary_registration' types. Files can be " -"decrypted and verified using the accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.front_side:1 -#: of -msgid "" -"*Optional*. Encrypted file with the front side of the document, provided " -"by the user. Available for 'passport', 'driver_license', 'identity_card' " -"and 'internal_passport'. The file can be decrypted and verified using the" -" accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.reverse_side:1 -#: of -msgid "" -"*Optional*. Encrypted file with the reverse side of the document, " -"provided by the user. Available for 'driver_license' and 'identity_card'." -" The file can be decrypted and verified using the accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.selfie:1 -#: of -msgid "" -"*Optional*. Encrypted file with the selfie of the user holding a " -"document, provided by the user; available for 'passport', " -"'driver_license', 'identity_card' and 'internal_passport'. The file can " -"be decrypted and verified using the accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" - -#: ../../docstring -#: aiogram.types.encrypted_passport_element.EncryptedPassportElement.translation:1 -#: of -msgid "" -"*Optional*. Array of encrypted files with translated versions of " -"documents provided by the user. Available if requested for 'passport', " -"'driver_license', 'identity_card', 'internal_passport', 'utility_bill', " -"'bank_statement', 'rental_agreement', 'passport_registration' and " -"'temporary_registration' types. Files can be decrypted and verified using" -" the accompanying " -":class:`aiogram.types.encrypted_credentials.EncryptedCredentials`." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/error_event.po b/docs/locale/en/LC_MESSAGES/api/types/error_event.po deleted file mode 100644 index fbaceb09..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/error_event.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/error_event.rst:3 -msgid "ErrorEvent" -msgstr "" - -#: aiogram.types.error_event.ErrorEvent:1 of -msgid "" -"Internal event, should be used to receive errors while processing Updates" -" from Telegram" -msgstr "" - -#: aiogram.types.error_event.ErrorEvent:3 of -msgid "Source: https://core.telegram.org/bots/api#error-event" -msgstr "" - -#: ../../docstring aiogram.types.error_event.ErrorEvent.update:1 of -msgid "Received update" -msgstr "" - -#: ../../docstring aiogram.types.error_event.ErrorEvent.exception:1 of -msgid "Exception" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/file.po b/docs/locale/en/LC_MESSAGES/api/types/file.po deleted file mode 100644 index 7b0c0c2c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/file.po +++ /dev/null @@ -1,65 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/file.rst:3 -msgid "File" -msgstr "" - -#: aiogram.types.file.File:1 of -msgid "" -"This object represents a file ready to be downloaded. The file can be " -"downloaded via the link " -":code:`https://api.telegram.org/file/bot/`. It is " -"guaranteed that the link will be valid for at least 1 hour. When the link" -" expires, a new one can be requested by calling " -":class:`aiogram.methods.get_file.GetFile`." -msgstr "" - -#: aiogram.types.file.File:3 of -msgid "The maximum file size to download is 20 MB" -msgstr "" - -#: aiogram.types.file.File:5 of -msgid "Source: https://core.telegram.org/bots/api#file" -msgstr "" - -#: ../../docstring aiogram.types.file.File.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.file.File.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.file.File.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" - -#: ../../docstring aiogram.types.file.File.file_path:1 of -msgid "" -"*Optional*. File path. Use " -":code:`https://api.telegram.org/file/bot/` to get the " -"file." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/force_reply.po b/docs/locale/en/LC_MESSAGES/api/types/force_reply.po deleted file mode 100644 index 6e408b99..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/force_reply.po +++ /dev/null @@ -1,98 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/force_reply.rst:3 -msgid "ForceReply" -msgstr "" - -#: aiogram.types.force_reply.ForceReply:1 of -msgid "" -"Upon receiving a message with this object, Telegram clients will display " -"a reply interface to the user (act as if the user has selected the bot's " -"message and tapped 'Reply'). This can be extremely useful if you want to " -"create user-friendly step-by-step interfaces without having to sacrifice " -"`privacy mode `_." -msgstr "" - -#: aiogram.types.force_reply.ForceReply:3 of -msgid "" -"**Example:** A `poll bot `_ for groups runs in " -"privacy mode (only receives commands, replies to its messages and " -"mentions). There could be two ways to create a new poll:" -msgstr "" - -#: aiogram.types.force_reply.ForceReply:5 of -msgid "" -"Explain the user how to send a command with parameters (e.g. /newpoll " -"question answer1 answer2). May be appealing for hardcore users but lacks " -"modern day polish." -msgstr "" - -#: aiogram.types.force_reply.ForceReply:6 of -msgid "" -"Guide the user through a step-by-step process. 'Please send me your " -"question', 'Cool, now let's add the first answer option', 'Great. Keep " -"adding answer options, then send /done when you're ready'." -msgstr "" - -#: aiogram.types.force_reply.ForceReply:8 of -msgid "" -"The last option is definitely more attractive. And if you use " -":class:`aiogram.types.force_reply.ForceReply` in your bot's questions, it" -" will receive the user's answers even if it only receives replies, " -"commands and mentions - without any extra work for the user." -msgstr "" - -#: aiogram.types.force_reply.ForceReply:10 of -msgid "Source: https://core.telegram.org/bots/api#forcereply" -msgstr "" - -#: ../../docstring aiogram.types.force_reply.ForceReply.force_reply:1 of -msgid "" -"Shows reply interface to the user, as if they manually selected the bot's" -" message and tapped 'Reply'" -msgstr "" - -#: ../../docstring -#: aiogram.types.force_reply.ForceReply.input_field_placeholder:1 of -msgid "" -"*Optional*. The placeholder to be shown in the input field when the reply" -" is active; 1-64 characters" -msgstr "" - -#: ../../docstring aiogram.types.force_reply.ForceReply.selective:1 of -msgid "" -"*Optional*. Use this parameter if you want to force reply from specific " -"users only. Targets: 1) users that are @mentioned in the *text* of the " -":class:`aiogram.types.message.Message` object; 2) if the bot's message is" -" a reply (has *reply_to_message_id*), sender of the original message." -msgstr "" - -#~ msgid "" -#~ "Upon receiving a message with this " -#~ "object, Telegram clients will display a" -#~ " reply interface to the user (act " -#~ "as if the user has selected the" -#~ " bot's message and tapped 'Reply'). " -#~ "This can be extremely useful if " -#~ "you want to create user-friendly " -#~ "step-by-step interfaces without having " -#~ "to sacrifice `privacy mode " -#~ "`_." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/forum_topic.po b/docs/locale/en/LC_MESSAGES/api/types/forum_topic.po deleted file mode 100644 index c59c0698..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/forum_topic.po +++ /dev/null @@ -1,47 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/forum_topic.rst:3 -msgid "ForumTopic" -msgstr "" - -#: aiogram.types.forum_topic.ForumTopic:1 of -msgid "This object represents a forum topic." -msgstr "" - -#: aiogram.types.forum_topic.ForumTopic:3 of -msgid "Source: https://core.telegram.org/bots/api#forumtopic" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic.ForumTopic.message_thread_id:1 of -msgid "Unique identifier of the forum topic" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic.ForumTopic.name:1 of -msgid "Name of the topic" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic.ForumTopic.icon_color:1 of -msgid "Color of the topic icon in RGB format" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic.ForumTopic.icon_custom_emoji_id:1 -#: of -msgid "*Optional*. Unique identifier of the custom emoji shown as the topic icon" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_closed.po b/docs/locale/en/LC_MESSAGES/api/types/forum_topic_closed.po deleted file mode 100644 index 9fadeb3d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_closed.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/forum_topic_closed.rst:3 -msgid "ForumTopicClosed" -msgstr "" - -#: aiogram.types.forum_topic_closed.ForumTopicClosed:1 of -msgid "" -"This object represents a service message about a forum topic closed in " -"the chat. Currently holds no information." -msgstr "" - -#: aiogram.types.forum_topic_closed.ForumTopicClosed:3 of -msgid "Source: https://core.telegram.org/bots/api#forumtopicclosed" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_created.po b/docs/locale/en/LC_MESSAGES/api/types/forum_topic_created.po deleted file mode 100644 index 59855d81..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_created.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/forum_topic_created.rst:3 -msgid "ForumTopicCreated" -msgstr "" - -#: aiogram.types.forum_topic_created.ForumTopicCreated:1 of -msgid "" -"This object represents a service message about a new forum topic created " -"in the chat." -msgstr "" - -#: aiogram.types.forum_topic_created.ForumTopicCreated:3 of -msgid "Source: https://core.telegram.org/bots/api#forumtopiccreated" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic_created.ForumTopicCreated.name:1 -#: of -msgid "Name of the topic" -msgstr "" - -#: ../../docstring -#: aiogram.types.forum_topic_created.ForumTopicCreated.icon_color:1 of -msgid "Color of the topic icon in RGB format" -msgstr "" - -#: ../../docstring -#: aiogram.types.forum_topic_created.ForumTopicCreated.icon_custom_emoji_id:1 -#: of -msgid "*Optional*. Unique identifier of the custom emoji shown as the topic icon" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_edited.po b/docs/locale/en/LC_MESSAGES/api/types/forum_topic_edited.po deleted file mode 100644 index 26fe021a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_edited.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/forum_topic_edited.rst:3 -msgid "ForumTopicEdited" -msgstr "" - -#: aiogram.types.forum_topic_edited.ForumTopicEdited:1 of -msgid "This object represents a service message about an edited forum topic." -msgstr "" - -#: aiogram.types.forum_topic_edited.ForumTopicEdited:3 of -msgid "Source: https://core.telegram.org/bots/api#forumtopicedited" -msgstr "" - -#: ../../docstring aiogram.types.forum_topic_edited.ForumTopicEdited.name:1 of -msgid "*Optional*. New name of the topic, if it was edited" -msgstr "" - -#: ../../docstring -#: aiogram.types.forum_topic_edited.ForumTopicEdited.icon_custom_emoji_id:1 of -msgid "" -"*Optional*. New identifier of the custom emoji shown as the topic icon, " -"if it was edited; an empty string if the icon was removed" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_reopened.po b/docs/locale/en/LC_MESSAGES/api/types/forum_topic_reopened.po deleted file mode 100644 index 0d202ed8..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/forum_topic_reopened.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/forum_topic_reopened.rst:3 -msgid "ForumTopicReopened" -msgstr "" - -#: aiogram.types.forum_topic_reopened.ForumTopicReopened:1 of -msgid "" -"This object represents a service message about a forum topic reopened in " -"the chat. Currently holds no information." -msgstr "" - -#: aiogram.types.forum_topic_reopened.ForumTopicReopened:3 of -msgid "Source: https://core.telegram.org/bots/api#forumtopicreopened" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/game.po b/docs/locale/en/LC_MESSAGES/api/types/game.po deleted file mode 100644 index 2e2df85b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/game.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/game.rst:3 -msgid "Game" -msgstr "" - -#: aiogram.types.game.Game:1 of -msgid "" -"This object represents a game. Use BotFather to create and edit games, " -"their short names will act as unique identifiers." -msgstr "" - -#: aiogram.types.game.Game:3 of -msgid "Source: https://core.telegram.org/bots/api#game" -msgstr "" - -#: ../../docstring aiogram.types.game.Game.title:1 of -msgid "Title of the game" -msgstr "" - -#: ../../docstring aiogram.types.game.Game.description:1 of -msgid "Description of the game" -msgstr "" - -#: ../../docstring aiogram.types.game.Game.photo:1 of -msgid "Photo that will be displayed in the game message in chats." -msgstr "" - -#: ../../docstring aiogram.types.game.Game.text:1 of -msgid "" -"*Optional*. Brief description of the game or high scores included in the " -"game message. Can be automatically edited to include current high scores " -"for the game when the bot calls " -":class:`aiogram.methods.set_game_score.SetGameScore`, or manually edited " -"using :class:`aiogram.methods.edit_message_text.EditMessageText`. 0-4096 " -"characters." -msgstr "" - -#: ../../docstring aiogram.types.game.Game.text_entities:1 of -msgid "" -"*Optional*. Special entities that appear in *text*, such as usernames, " -"URLs, bot commands, etc." -msgstr "" - -#: ../../docstring aiogram.types.game.Game.animation:1 of -msgid "" -"*Optional*. Animation that will be displayed in the game message in " -"chats. Upload via `BotFather `_" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/game_high_score.po b/docs/locale/en/LC_MESSAGES/api/types/game_high_score.po deleted file mode 100644 index bcfb27bd..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/game_high_score.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/game_high_score.rst:3 -msgid "GameHighScore" -msgstr "" - -#: aiogram.types.game_high_score.GameHighScore:1 of -msgid "" -"This object represents one row of the high scores table for a game. And " -"that's about all we've got for now." -msgstr "" - -#: aiogram.types.game_high_score.GameHighScore:4 of -msgid "" -"If you've got any questions, please check out our " -"`https://core.telegram.org/bots/faq " -"`_ **Bot FAQ »**" -msgstr "" - -#: aiogram.types.game_high_score.GameHighScore:6 of -msgid "Source: https://core.telegram.org/bots/api#gamehighscore" -msgstr "" - -#: ../../docstring aiogram.types.game_high_score.GameHighScore.position:1 of -msgid "Position in high score table for the game" -msgstr "" - -#: ../../docstring aiogram.types.game_high_score.GameHighScore.user:1 of -msgid "User" -msgstr "" - -#: ../../docstring aiogram.types.game_high_score.GameHighScore.score:1 of -msgid "Score" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_hidden.po b/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_hidden.po deleted file mode 100644 index 0cb7dbe1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_hidden.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/general_forum_topic_hidden.rst:3 -msgid "GeneralForumTopicHidden" -msgstr "" - -#: aiogram.types.general_forum_topic_hidden.GeneralForumTopicHidden:1 of -msgid "" -"This object represents a service message about General forum topic hidden" -" in the chat. Currently holds no information." -msgstr "" - -#: aiogram.types.general_forum_topic_hidden.GeneralForumTopicHidden:3 of -msgid "Source: https://core.telegram.org/bots/api#generalforumtopichidden" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_unhidden.po b/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_unhidden.po deleted file mode 100644 index 84782543..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/general_forum_topic_unhidden.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/general_forum_topic_unhidden.rst:3 -msgid "GeneralForumTopicUnhidden" -msgstr "" - -#: aiogram.types.general_forum_topic_unhidden.GeneralForumTopicUnhidden:1 of -msgid "" -"This object represents a service message about General forum topic " -"unhidden in the chat. Currently holds no information." -msgstr "" - -#: aiogram.types.general_forum_topic_unhidden.GeneralForumTopicUnhidden:3 of -msgid "Source: https://core.telegram.org/bots/api#generalforumtopicunhidden" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/index.po b/docs/locale/en/LC_MESSAGES/api/types/index.po deleted file mode 100644 index dd347157..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/index.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/index.rst:3 -msgid "Types" -msgstr "" - -#: ../../api/types/index.rst:5 -msgid "Here is list of all available API types:" -msgstr "" - -#: ../../api/types/index.rst:9 -msgid "Inline mode" -msgstr "" - -#: ../../api/types/index.rst:47 -msgid "Available types" -msgstr "" - -#: ../../api/types/index.rst:143 -msgid "Telegram Passport" -msgstr "" - -#: ../../api/types/index.rst:164 -msgid "Getting updates" -msgstr "" - -#: ../../api/types/index.rst:173 -msgid "Stickers" -msgstr "" - -#: ../../api/types/index.rst:184 -msgid "Payments" -msgstr "" - -#: ../../api/types/index.rst:199 -msgid "Games" -msgstr "" - -#~ msgid "Internal events" -#~ msgstr "" - -#~ msgid "Internals" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po b/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po deleted file mode 100644 index 3db47e31..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_button.po +++ /dev/null @@ -1,115 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/inline_keyboard_button.rst:3 -msgid "InlineKeyboardButton" -msgstr "" - -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton:1 of -msgid "" -"This object represents one button of an inline keyboard. You **must** use" -" exactly one of the optional fields." -msgstr "" - -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinekeyboardbutton" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.text:1 of -msgid "Label text on the button" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.url:1 of -msgid "" -"*Optional*. HTTP or tg:// URL to be opened when the button is pressed. " -"Links :code:`tg://user?id=` can be used to mention a user by " -"their ID without using a username, if this is allowed by their privacy " -"settings." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.callback_data:1 of -msgid "" -"*Optional*. Data to be sent in a `callback query " -"`_ to the bot when " -"button is pressed, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.web_app:1 of -msgid "" -"*Optional*. Description of the `Web App " -"`_ that will be launched when the" -" user presses the button. The Web App will be able to send an arbitrary " -"message on behalf of the user using the method " -":class:`aiogram.methods.answer_web_app_query.AnswerWebAppQuery`. " -"Available only in private chats between a user and the bot." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.login_url:1 of -msgid "" -"*Optional*. An HTTPS URL used to automatically authorize the user. Can be" -" used as a replacement for the `Telegram Login Widget " -"`_." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.switch_inline_query:1 -#: of -msgid "" -"*Optional*. If set, pressing the button will prompt the user to select " -"one of their chats, open that chat and insert the bot's username and the " -"specified inline query in the input field. May be empty, in which case " -"just the bot's username will be inserted." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.switch_inline_query_current_chat:1 -#: of -msgid "" -"*Optional*. If set, pressing the button will insert the bot's username " -"and the specified inline query in the current chat's input field. May be " -"empty, in which case only the bot's username will be inserted." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.switch_inline_query_chosen_chat:1 -#: of -msgid "" -"*Optional*. If set, pressing the button will prompt the user to select " -"one of their chats of the specified type, open that chat and insert the " -"bot's username and the specified inline query in the input field" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.callback_game:1 of -msgid "" -"*Optional*. Description of the game that will be launched when the user " -"presses the button." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_button.InlineKeyboardButton.pay:1 of -msgid "" -"*Optional*. Specify :code:`True`, to send a `Pay button " -"`_." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_markup.po b/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_markup.po deleted file mode 100644 index b516034d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_keyboard_markup.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_keyboard_markup.rst:3 -msgid "InlineKeyboardMarkup" -msgstr "" - -#: aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup:1 of -msgid "" -"This object represents an `inline keyboard " -"`_ that appears" -" right next to the message it belongs to. **Note:** This will only work " -"in Telegram versions released after 9 April, 2016. Older clients will " -"display *unsupported message*." -msgstr "" - -#: aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinekeyboardmarkup" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup.inline_keyboard:1 -#: of -msgid "" -"Array of button rows, each represented by an Array of " -":class:`aiogram.types.inline_keyboard_button.InlineKeyboardButton` " -"objects" -msgstr "" - -#~ msgid "" -#~ "This object represents an `inline " -#~ "keyboard `_ " -#~ "that appears right next to the " -#~ "message it belongs to. **Note:** This" -#~ " will only work in Telegram versions" -#~ " released after 9 April, 2016. Older" -#~ " clients will display *unsupported " -#~ "message*." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query.po deleted file mode 100644 index f848f5d0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query.po +++ /dev/null @@ -1,155 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/inline_query.rst:3 -msgid "InlineQuery" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery:1 of -msgid "" -"This object represents an incoming inline query. When the user sends an " -"empty query, your bot could return some default or trending results." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequery" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.id:1 of -msgid "Unique identifier for this query" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.from_user:1 of -msgid "Sender" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.query:1 of -msgid "Text of the query (up to 256 characters)" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.offset:1 of -msgid "Offset of the results to be returned, can be controlled by the bot" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.chat_type:1 of -msgid "" -"*Optional*. Type of the chat from which the inline query was sent. Can be" -" either 'sender' for a private chat with the inline query sender, " -"'private', 'group', 'supergroup', or 'channel'. The chat type should be " -"always known for requests sent from official clients and most third-party" -" clients, unless the request was sent from a secret chat" -msgstr "" - -#: ../../docstring aiogram.types.inline_query.InlineQuery.location:1 of -msgid "*Optional*. Sender location, only for bots that request user location" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.answer_inline_query.AnswerInlineQuery` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:4 of -msgid ":code:`inline_query_id`" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:6 of -msgid "" -"Use this method to send answers to an inline query. On success, " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:8 of -msgid "No more than **50** results per query are allowed." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:10 of -msgid "Source: https://core.telegram.org/bots/api#answerinlinequery" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer of -msgid "Parameters" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:12 of -msgid "A JSON-serialized array of results for the inline query" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:13 of -msgid "" -"The maximum amount of time in seconds that the result of the inline query" -" may be cached on the server. Defaults to 300." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:14 of -msgid "" -"Pass :code:`True` if results may be cached on the server side only for " -"the user that sent the query. By default, results may be returned to any " -"user who sends the same query." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:15 of -msgid "" -"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." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:16 of -msgid "" -"A JSON-serialized object describing a button to be shown above inline " -"query results" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:17 of -msgid "" -"`Deep-linking `_ " -"parameter for the /start message sent to the bot when user presses the " -"switch button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " -":code:`0-9`, :code:`_` and :code:`-` are allowed." -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:18 of -msgid "" -"If passed, clients will display a button with specified text that " -"switches the user to a private chat with the bot and sends the bot a " -"start message with the parameter *switch_pm_parameter*" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer of -msgid "Returns" -msgstr "" - -#: aiogram.types.inline_query.InlineQuery.answer:19 of -msgid "" -"instance of method " -":class:`aiogram.methods.answer_inline_query.AnswerInlineQuery`" -msgstr "" - -#~ msgid "" -#~ "Pass :code:`True` if results may be " -#~ "cached on the server side only for" -#~ " the user that sent the query. " -#~ "By default, results may be returned " -#~ "to any user who sends the same " -#~ "query" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result.po deleted file mode 100644 index e5213929..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result.po +++ /dev/null @@ -1,118 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result.rst:3 -msgid "InlineQueryResult" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:1 of -msgid "" -"This object represents one result of an inline query. Telegram clients " -"currently support results of the following 20 types:" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:3 of -msgid ":class:`aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:4 of -msgid ":class:`aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:5 of -msgid ":class:`aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:6 of -msgid ":class:`aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:7 of -msgid ":class:`aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:8 of -msgid ":class:`aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:9 of -msgid ":class:`aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:10 of -msgid ":class:`aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:11 of -msgid ":class:`aiogram.types.inline_query_result_article.InlineQueryResultArticle`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:12 of -msgid ":class:`aiogram.types.inline_query_result_audio.InlineQueryResultAudio`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:13 of -msgid ":class:`aiogram.types.inline_query_result_contact.InlineQueryResultContact`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:14 of -msgid ":class:`aiogram.types.inline_query_result_game.InlineQueryResultGame`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:15 of -msgid ":class:`aiogram.types.inline_query_result_document.InlineQueryResultDocument`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:16 of -msgid ":class:`aiogram.types.inline_query_result_gif.InlineQueryResultGif`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:17 of -msgid ":class:`aiogram.types.inline_query_result_location.InlineQueryResultLocation`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:18 of -msgid ":class:`aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:19 of -msgid ":class:`aiogram.types.inline_query_result_photo.InlineQueryResultPhoto`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:20 of -msgid ":class:`aiogram.types.inline_query_result_venue.InlineQueryResultVenue`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:21 of -msgid ":class:`aiogram.types.inline_query_result_video.InlineQueryResultVideo`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:22 of -msgid ":class:`aiogram.types.inline_query_result_voice.InlineQueryResultVoice`" -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:24 of -msgid "" -"**Note:** All URLs passed in inline query results will be available to " -"end users and therefore must be assumed to be **public**." -msgstr "" - -#: aiogram.types.inline_query_result.InlineQueryResult:26 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresult" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_article.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_article.po deleted file mode 100644 index 6615989c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_article.po +++ /dev/null @@ -1,104 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_article.rst:3 -msgid "InlineQueryResultArticle" -msgstr "" - -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle:1 of -msgid "Represents a link to an article or web page." -msgstr "" - -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultarticle" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.type:1 of -msgid "Type of the result, must be *article*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.id:1 of -msgid "Unique identifier for this result, 1-64 Bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.title:1 -#: of -msgid "Title of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.input_message_content:1 -#: of -msgid "Content of the message to be sent" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.url:1 of -msgid "*Optional*. URL of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.hide_url:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if you don't want the URL to be shown in " -"the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.thumb_url:1 -#: of -msgid "*Optional*. Url of the thumbnail for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.thumb_width:1 -#: of -msgid "*Optional*. Thumbnail width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_article.InlineQueryResultArticle.thumb_height:1 -#: of -msgid "*Optional*. Thumbnail height" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_audio.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_audio.po deleted file mode 100644 index 9ee8ea87..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_audio.po +++ /dev/null @@ -1,111 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_audio.rst:3 -msgid "InlineQueryResultAudio" -msgstr "" - -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio:1 of -msgid "" -"Represents a link to an MP3 audio file. By default, this audio file will " -"be sent by the user. Alternatively, you can use *input_message_content* " -"to send a message with the specified content instead of the audio. " -"**Note:** This will only work in Telegram versions released after 9 " -"April, 2016. Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultaudio" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.type:1 of -msgid "Type of the result, must be *audio*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.audio_url:1 -#: of -msgid "A valid URL for the audio file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.title:1 of -msgid "Title" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.caption:1 of -msgid "*Optional*. Caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the audio caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.performer:1 -#: of -msgid "*Optional*. Performer" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.audio_duration:1 -#: of -msgid "*Optional*. Audio duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_audio.InlineQueryResultAudio.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the audio" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_audio.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_audio.po deleted file mode 100644 index 5accdb13..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_audio.po +++ /dev/null @@ -1,99 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_audio.rst:3 -msgid "InlineQueryResultCachedAudio" -msgstr "" - -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio:1 -#: of -msgid "" -"Represents a link to an MP3 audio file stored on the Telegram servers. By" -" default, this audio file will be sent by the user. Alternatively, you " -"can use *input_message_content* to send a message with the specified " -"content instead of the audio. **Note:** This will only work in Telegram " -"versions released after 9 April, 2016. Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio:4 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedaudio" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.type:1 -#: of -msgid "Type of the result, must be *audio*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.audio_file_id:1 -#: of -msgid "A valid file identifier for the audio file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.caption:1 -#: of -msgid "*Optional*. Caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the audio caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_audio.InlineQueryResultCachedAudio.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the audio" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_document.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_document.po deleted file mode 100644 index eb805a02..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_document.po +++ /dev/null @@ -1,114 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_document.rst:3 -msgid "InlineQueryResultCachedDocument" -msgstr "" - -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument:1 -#: of -msgid "" -"Represents a link to a file stored on the Telegram servers. By default, " -"this file will be sent by the user with an optional caption. " -"Alternatively, you can use *input_message_content* to send a message with" -" the specified content instead of the file. **Note:** This will only work" -" in Telegram versions released after 9 April, 2016. Older clients will " -"ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument:4 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcacheddocument" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.type:1 -#: of -msgid "Type of the result, must be *document*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.title:1 -#: of -msgid "Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.document_file_id:1 -#: of -msgid "A valid file identifier for the file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.caption:1 -#: of -msgid "" -"*Optional*. Caption of the document to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the document caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_document.InlineQueryResultCachedDocument.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the file" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_gif.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_gif.po deleted file mode 100644 index ffc4e8f0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_gif.po +++ /dev/null @@ -1,104 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_gif.rst:3 -msgid "InlineQueryResultCachedGif" -msgstr "" - -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif:1 of -msgid "" -"Represents a link to an animated GIF file stored on the Telegram servers." -" By default, this animated GIF file will be sent by the user with an " -"optional caption. Alternatively, you can use *input_message_content* to " -"send a message with specified content instead of the animation." -msgstr "" - -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedgif" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.type:1 -#: of -msgid "Type of the result, must be *gif*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.gif_file_id:1 -#: of -msgid "A valid file identifier for the GIF file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.title:1 -#: of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.caption:1 -#: of -msgid "" -"*Optional*. Caption of the GIF file to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_gif.InlineQueryResultCachedGif.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the GIF animation" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_mpeg4_gif.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_mpeg4_gif.po deleted file mode 100644 index 96885946..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_mpeg4_gif.po +++ /dev/null @@ -1,109 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_mpeg4_gif.rst:3 -msgid "InlineQueryResultCachedMpeg4Gif" -msgstr "" - -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif:1 -#: of -msgid "" -"Represents a link to a video animation (H.264/MPEG-4 AVC video without " -"sound) stored on the Telegram servers. By default, this animated MPEG-4 " -"file will be sent by the user with an optional caption. Alternatively, " -"you can use *input_message_content* to send a message with the specified " -"content instead of the animation." -msgstr "" - -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedmpeg4gif" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.type:1 -#: of -msgid "Type of the result, must be *mpeg4_gif*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.mpeg4_file_id:1 -#: of -msgid "A valid file identifier for the MPEG4 file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.title:1 -#: of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.caption:1 -#: of -msgid "" -"*Optional*. Caption of the MPEG-4 file to be sent, 0-1024 characters " -"after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_mpeg4_gif.InlineQueryResultCachedMpeg4Gif.input_message_content:1 -#: of -msgid "" -"*Optional*. Content of the message to be sent instead of the video " -"animation" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_photo.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_photo.po deleted file mode 100644 index 965f8ad7..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_photo.po +++ /dev/null @@ -1,112 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_photo.rst:3 -msgid "InlineQueryResultCachedPhoto" -msgstr "" - -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto:1 -#: of -msgid "" -"Represents a link to a photo stored on the Telegram servers. By default, " -"this photo will be sent by the user with an optional caption. " -"Alternatively, you can use *input_message_content* to send a message with" -" the specified content instead of the photo." -msgstr "" - -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedphoto" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.type:1 -#: of -msgid "Type of the result, must be *photo*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.photo_file_id:1 -#: of -msgid "A valid file identifier of the photo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.title:1 -#: of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.caption:1 -#: of -msgid "" -"*Optional*. Caption of the photo to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the photo caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_photo.InlineQueryResultCachedPhoto.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the photo" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_sticker.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_sticker.po deleted file mode 100644 index dc79cbca..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_sticker.po +++ /dev/null @@ -1,78 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_sticker.rst:3 -msgid "InlineQueryResultCachedSticker" -msgstr "" - -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker:1 -#: of -msgid "" -"Represents a link to a sticker stored on the Telegram servers. By " -"default, this sticker will be sent by the user. Alternatively, you can " -"use *input_message_content* to send a message with the specified content " -"instead of the sticker. **Note:** This will only work in Telegram " -"versions released after 9 April, 2016 for static stickers and after 06 " -"July, 2019 for `animated stickers `_. Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker:4 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedsticker" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker.type:1 -#: of -msgid "Type of the result, must be *sticker*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker.sticker_file_id:1 -#: of -msgid "A valid file identifier of the sticker" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_sticker.InlineQueryResultCachedSticker.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the sticker" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_video.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_video.po deleted file mode 100644 index 3836cf30..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_video.po +++ /dev/null @@ -1,112 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_video.rst:3 -msgid "InlineQueryResultCachedVideo" -msgstr "" - -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo:1 -#: of -msgid "" -"Represents a link to a video file stored on the Telegram servers. By " -"default, this video file will be sent by the user with an optional " -"caption. Alternatively, you can use *input_message_content* to send a " -"message with the specified content instead of the video." -msgstr "" - -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedvideo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.type:1 -#: of -msgid "Type of the result, must be *video*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.video_file_id:1 -#: of -msgid "A valid file identifier for the video file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.title:1 -#: of -msgid "Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.caption:1 -#: of -msgid "" -"*Optional*. Caption of the video to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the video caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_video.InlineQueryResultCachedVideo.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the video" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_voice.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_voice.po deleted file mode 100644 index d2bb9f10..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_cached_voice.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_cached_voice.rst:3 -msgid "InlineQueryResultCachedVoice" -msgstr "" - -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice:1 -#: of -msgid "" -"Represents a link to a voice message stored on the Telegram servers. By " -"default, this voice message will be sent by the user. Alternatively, you " -"can use *input_message_content* to send a message with the specified " -"content instead of the voice message. **Note:** This will only work in " -"Telegram versions released after 9 April, 2016. Older clients will ignore" -" them." -msgstr "" - -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice:4 -#: of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcachedvoice" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.type:1 -#: of -msgid "Type of the result, must be *voice*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.voice_file_id:1 -#: of -msgid "A valid file identifier for the voice message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.title:1 -#: of -msgid "Voice message title" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.caption:1 -#: of -msgid "*Optional*. Caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the voice message caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_cached_voice.InlineQueryResultCachedVoice.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the voice message" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_contact.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_contact.po deleted file mode 100644 index d9620a12..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_contact.po +++ /dev/null @@ -1,110 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_contact.rst:3 -msgid "InlineQueryResultContact" -msgstr "" - -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact:1 of -msgid "" -"Represents a contact with a phone number. By default, this contact will " -"be sent by the user. Alternatively, you can use *input_message_content* " -"to send a message with the specified content instead of the contact. " -"**Note:** This will only work in Telegram versions released after 9 " -"April, 2016. Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultcontact" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.type:1 of -msgid "Type of the result, must be *contact*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.id:1 of -msgid "Unique identifier for this result, 1-64 Bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.phone_number:1 -#: of -msgid "Contact's phone number" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.first_name:1 -#: of -msgid "Contact's first name" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.last_name:1 -#: of -msgid "*Optional*. Contact's last name" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.vcard:1 -#: of -msgid "" -"*Optional*. Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the contact" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.thumb_url:1 -#: of -msgid "*Optional*. Url of the thumbnail for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.thumb_width:1 -#: of -msgid "*Optional*. Thumbnail width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_contact.InlineQueryResultContact.thumb_height:1 -#: of -msgid "*Optional*. Thumbnail height" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_document.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_document.po deleted file mode 100644 index 9931e7ee..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_document.po +++ /dev/null @@ -1,128 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_document.rst:3 -msgid "InlineQueryResultDocument" -msgstr "" - -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument:1 of -msgid "" -"Represents a link to a file. By default, this file will be sent by the " -"user with an optional caption. Alternatively, you can use " -"*input_message_content* to send a message with the specified content " -"instead of the file. Currently, only **.PDF** and **.ZIP** files can be " -"sent using this method. **Note:** This will only work in Telegram " -"versions released after 9 April, 2016. Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultdocument" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.type:1 -#: of -msgid "Type of the result, must be *document*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.title:1 -#: of -msgid "Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.document_url:1 -#: of -msgid "A valid URL for the file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.mime_type:1 -#: of -msgid "" -"MIME type of the content of the file, either 'application/pdf' or " -"'application/zip'" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.caption:1 -#: of -msgid "" -"*Optional*. Caption of the document to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the document caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.reply_markup:1 -#: of -msgid "*Optional*. Inline keyboard attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.thumb_url:1 -#: of -msgid "*Optional*. URL of the thumbnail (JPEG only) for the file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.thumb_width:1 -#: of -msgid "*Optional*. Thumbnail width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_document.InlineQueryResultDocument.thumb_height:1 -#: of -msgid "*Optional*. Thumbnail height" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_game.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_game.po deleted file mode 100644 index a82f430f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_game.po +++ /dev/null @@ -1,65 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_game.rst:3 -msgid "InlineQueryResultGame" -msgstr "" - -#: aiogram.types.inline_query_result_game.InlineQueryResultGame:1 of -msgid "" -"Represents a `Game `_. " -"**Note:** This will only work in Telegram versions released after October" -" 1, 2016. Older clients will not display any inline results if a game " -"result is among them." -msgstr "" - -#: aiogram.types.inline_query_result_game.InlineQueryResultGame:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultgame" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_game.InlineQueryResultGame.type:1 of -msgid "Type of the result, must be *game*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_game.InlineQueryResultGame.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_game.InlineQueryResultGame.game_short_name:1 -#: of -msgid "Short name of the game" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_game.InlineQueryResultGame.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_gif.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_gif.po deleted file mode 100644 index 0e298f7f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_gif.po +++ /dev/null @@ -1,127 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_gif.rst:3 -msgid "InlineQueryResultGif" -msgstr "" - -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif:1 of -msgid "" -"Represents a link to an animated GIF file. By default, this animated GIF " -"file will be sent by the user with optional caption. Alternatively, you " -"can use *input_message_content* to send a message with the specified " -"content instead of the animation." -msgstr "" - -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultgif" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.type:1 of -msgid "Type of the result, must be *gif*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.gif_url:1 of -msgid "A valid URL for the GIF file. File size must not exceed 1MB" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.thumb_url:1 of -msgid "" -"URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the " -"result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.gif_width:1 of -msgid "*Optional*. Width of the GIF" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.gif_height:1 of -msgid "*Optional*. Height of the GIF" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.gif_duration:1 of -msgid "*Optional*. Duration of the GIF in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.thumb_mime_type:1 -#: of -msgid "" -"*Optional*. MIME type of the thumbnail, must be one of 'image/jpeg', " -"'image/gif', or 'video/mp4'. Defaults to 'image/jpeg'" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.title:1 of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.caption:1 of -msgid "" -"*Optional*. Caption of the GIF file to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.parse_mode:1 of -msgid "" -"*Optional*. Mode for parsing entities in the caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.reply_markup:1 of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_gif.InlineQueryResultGif.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the GIF animation" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_location.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_location.po deleted file mode 100644 index aee2b822..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_location.po +++ /dev/null @@ -1,136 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_location.rst:3 -msgid "InlineQueryResultLocation" -msgstr "" - -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation:1 of -msgid "" -"Represents a location on a map. By default, the location will be sent by " -"the user. Alternatively, you can use *input_message_content* to send a " -"message with the specified content instead of the location. **Note:** " -"This will only work in Telegram versions released after 9 April, 2016. " -"Older clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultlocation" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.type:1 -#: of -msgid "Type of the result, must be *location*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.id:1 of -msgid "Unique identifier for this result, 1-64 Bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.latitude:1 -#: of -msgid "Location latitude in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.longitude:1 -#: of -msgid "Location longitude in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.title:1 -#: of -msgid "Location title" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.horizontal_accuracy:1 -#: of -msgid "" -"*Optional*. The radius of uncertainty for the location, measured in " -"meters; 0-1500" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.live_period:1 -#: of -msgid "" -"*Optional*. Period in seconds for which the location can be updated, " -"should be between 60 and 86400." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.heading:1 -#: of -msgid "" -"*Optional*. For live locations, a direction in which the user is moving, " -"in degrees. Must be between 1 and 360 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.proximity_alert_radius:1 -#: of -msgid "" -"*Optional*. For live locations, a maximum distance for proximity alerts " -"about approaching another chat member, in meters. Must be between 1 and " -"100000 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the location" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.thumb_url:1 -#: of -msgid "*Optional*. Url of the thumbnail for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.thumb_width:1 -#: of -msgid "*Optional*. Thumbnail width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_location.InlineQueryResultLocation.thumb_height:1 -#: of -msgid "*Optional*. Thumbnail height" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_mpeg4_gif.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_mpeg4_gif.po deleted file mode 100644 index 56c4da50..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_mpeg4_gif.po +++ /dev/null @@ -1,140 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_mpeg4_gif.rst:3 -msgid "InlineQueryResultMpeg4Gif" -msgstr "" - -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif:1 of -msgid "" -"Represents a link to a video animation (H.264/MPEG-4 AVC video without " -"sound). By default, this animated MPEG-4 file will be sent by the user " -"with optional caption. Alternatively, you can use *input_message_content*" -" to send a message with the specified content instead of the animation." -msgstr "" - -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultmpeg4gif" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.type:1 -#: of -msgid "Type of the result, must be *mpeg4_gif*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.id:1 -#: of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.mpeg4_url:1 -#: of -msgid "A valid URL for the MPEG4 file. File size must not exceed 1MB" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.thumb_url:1 -#: of -msgid "" -"URL of the static (JPEG or GIF) or animated (MPEG4) thumbnail for the " -"result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.mpeg4_width:1 -#: of -msgid "*Optional*. Video width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.mpeg4_height:1 -#: of -msgid "*Optional*. Video height" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.mpeg4_duration:1 -#: of -msgid "*Optional*. Video duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.thumb_mime_type:1 -#: of -msgid "" -"*Optional*. MIME type of the thumbnail, must be one of 'image/jpeg', " -"'image/gif', or 'video/mp4'. Defaults to 'image/jpeg'" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.title:1 -#: of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.caption:1 -#: of -msgid "" -"*Optional*. Caption of the MPEG-4 file to be sent, 0-1024 characters " -"after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_mpeg4_gif.InlineQueryResultMpeg4Gif.input_message_content:1 -#: of -msgid "" -"*Optional*. Content of the message to be sent instead of the video " -"animation" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_photo.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_photo.po deleted file mode 100644 index 6d189167..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_photo.po +++ /dev/null @@ -1,126 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_photo.rst:3 -msgid "InlineQueryResultPhoto" -msgstr "" - -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto:1 of -msgid "" -"Represents a link to a photo. By default, this photo will be sent by the " -"user with optional caption. Alternatively, you can use " -"*input_message_content* to send a message with the specified content " -"instead of the photo." -msgstr "" - -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultphoto" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.type:1 of -msgid "Type of the result, must be *photo*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.photo_url:1 -#: of -msgid "" -"A valid URL of the photo. Photo must be in **JPEG** format. Photo size " -"must not exceed 5MB" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.thumb_url:1 -#: of -msgid "URL of the thumbnail for the photo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.photo_width:1 -#: of -msgid "*Optional*. Width of the photo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.photo_height:1 -#: of -msgid "*Optional*. Height of the photo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.title:1 of -msgid "*Optional*. Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.caption:1 of -msgid "" -"*Optional*. Caption of the photo to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the photo caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_photo.InlineQueryResultPhoto.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the photo" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_venue.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_venue.po deleted file mode 100644 index 2867f687..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_venue.po +++ /dev/null @@ -1,134 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_venue.rst:3 -msgid "InlineQueryResultVenue" -msgstr "" - -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue:1 of -msgid "" -"Represents a venue. By default, the venue will be sent by the user. " -"Alternatively, you can use *input_message_content* to send a message with" -" the specified content instead of the venue. **Note:** This will only " -"work in Telegram versions released after 9 April, 2016. Older clients " -"will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultvenue" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.type:1 of -msgid "Type of the result, must be *venue*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.id:1 of -msgid "Unique identifier for this result, 1-64 Bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.latitude:1 of -msgid "Latitude of the venue location in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.longitude:1 -#: of -msgid "Longitude of the venue location in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.title:1 of -msgid "Title of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.address:1 of -msgid "Address of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.foursquare_id:1 -#: of -msgid "*Optional*. Foursquare identifier of the venue if known" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.foursquare_type:1 -#: of -msgid "" -"*Optional*. Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.google_place_id:1 -#: of -msgid "*Optional*. Google Places identifier of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.google_place_type:1 -#: of -msgid "" -"*Optional*. Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.input_message_content:1 -#: of -msgid "*Optional*. Content of the message to be sent instead of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.thumb_url:1 -#: of -msgid "*Optional*. Url of the thumbnail for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.thumb_width:1 -#: of -msgid "*Optional*. Thumbnail width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_venue.InlineQueryResultVenue.thumb_height:1 -#: of -msgid "*Optional*. Thumbnail height" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_video.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_video.po deleted file mode 100644 index 379ba6ed..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_video.po +++ /dev/null @@ -1,145 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_video.rst:3 -msgid "InlineQueryResultVideo" -msgstr "" - -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo:1 of -msgid "" -"Represents a link to a page containing an embedded video player or a " -"video file. By default, this video file will be sent by the user with an " -"optional caption. Alternatively, you can use *input_message_content* to " -"send a message with the specified content instead of the video." -msgstr "" - -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo:3 of -msgid "" -"If an InlineQueryResultVideo message contains an embedded video (e.g., " -"YouTube), you **must** replace its content using *input_message_content*." -msgstr "" - -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo:5 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultvideo" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.type:1 of -msgid "Type of the result, must be *video*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.video_url:1 -#: of -msgid "A valid URL for the embedded video player or video file" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.mime_type:1 -#: of -msgid "MIME type of the content of the video URL, 'text/html' or 'video/mp4'" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.thumb_url:1 -#: of -msgid "URL of the thumbnail (JPEG only) for the video" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.title:1 of -msgid "Title for the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.caption:1 of -msgid "" -"*Optional*. Caption of the video to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the video caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.video_width:1 -#: of -msgid "*Optional*. Video width" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.video_height:1 -#: of -msgid "*Optional*. Video height" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.video_duration:1 -#: of -msgid "*Optional*. Video duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.description:1 -#: of -msgid "*Optional*. Short description of the result" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_video.InlineQueryResultVideo.input_message_content:1 -#: of -msgid "" -"*Optional*. Content of the message to be sent instead of the video. This " -"field is **required** if InlineQueryResultVideo is used to send an HTML-" -"page as a result (e.g., a YouTube video)." -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_voice.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_voice.po deleted file mode 100644 index 4f87318b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_result_voice.po +++ /dev/null @@ -1,108 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-06 14:18+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/inline_query_result_voice.rst:3 -msgid "InlineQueryResultVoice" -msgstr "" - -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice:1 of -msgid "" -"Represents a link to a voice recording in an .OGG container encoded with " -"OPUS. By default, this voice recording will be sent by the user. " -"Alternatively, you can use *input_message_content* to send a message with" -" the specified content instead of the the voice message. **Note:** This " -"will only work in Telegram versions released after 9 April, 2016. Older " -"clients will ignore them." -msgstr "" - -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice:4 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultvoice" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.type:1 of -msgid "Type of the result, must be *voice*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.id:1 of -msgid "Unique identifier for this result, 1-64 bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.voice_url:1 -#: of -msgid "A valid URL for the voice recording" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.title:1 of -msgid "Recording title" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.caption:1 of -msgid "*Optional*. Caption, 0-1024 characters after entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the voice message caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.voice_duration:1 -#: of -msgid "*Optional*. Recording duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.reply_markup:1 -#: of -msgid "" -"*Optional*. `Inline keyboard `_ attached to the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_result_voice.InlineQueryResultVoice.input_message_content:1 -#: of -msgid "" -"*Optional*. Content of the message to be sent instead of the voice " -"recording" -msgstr "" - -#~ msgid "" -#~ "*Optional*. `Inline keyboard " -#~ "`_ attached to " -#~ "the message" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po b/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po deleted file mode 100644 index 3dcf4f0f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/inline_query_results_button.po +++ /dev/null @@ -1,59 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/inline_query_results_button.rst:3 -msgid "InlineQueryResultsButton" -msgstr "" - -#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:1 of -msgid "" -"This object represents a button to be shown above inline query results. " -"You **must** use exactly one of the optional fields." -msgstr "" - -#: aiogram.types.inline_query_results_button.InlineQueryResultsButton:3 of -msgid "Source: https://core.telegram.org/bots/api#inlinequeryresultsbutton" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.text:1 of -msgid "Label text on the button" -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.web_app:1 -#: of -msgid "" -"*Optional*. Description of the `Web App " -"`_ that will be launched when the" -" user presses the button. The Web App will be able to switch back to the " -"inline mode using the method `switchInlineQuery " -"`_ inside " -"the Web App." -msgstr "" - -#: ../../docstring -#: aiogram.types.inline_query_results_button.InlineQueryResultsButton.start_parameter:1 -#: of -msgid "" -"*Optional*. `Deep-linking `_ parameter for the /start message sent to the bot when a user " -"presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " -":code:`0-9`, :code:`_` and :code:`-` are allowed." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_contact_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_contact_message_content.po deleted file mode 100644 index 16c4ac2b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_contact_message_content.po +++ /dev/null @@ -1,59 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_contact_message_content.rst:3 -msgid "InputContactMessageContent" -msgstr "" - -#: aiogram.types.input_contact_message_content.InputContactMessageContent:1 of -msgid "" -"Represents the `content " -"`_ of a contact " -"message to be sent as the result of an inline query." -msgstr "" - -#: aiogram.types.input_contact_message_content.InputContactMessageContent:3 of -msgid "Source: https://core.telegram.org/bots/api#inputcontactmessagecontent" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_contact_message_content.InputContactMessageContent.phone_number:1 -#: of -msgid "Contact's phone number" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_contact_message_content.InputContactMessageContent.first_name:1 -#: of -msgid "Contact's first name" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_contact_message_content.InputContactMessageContent.last_name:1 -#: of -msgid "*Optional*. Contact's last name" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_contact_message_content.InputContactMessageContent.vcard:1 -#: of -msgid "" -"*Optional*. Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_file.po b/docs/locale/en/LC_MESSAGES/api/types/input_file.po deleted file mode 100644 index 908e1a50..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_file.po +++ /dev/null @@ -1,63 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_file.rst:3 -msgid "InputFile" -msgstr "" - -#: aiogram.types.input_file.InputFile:1 of -msgid "" -"This object represents the contents of a file to be uploaded. Must be " -"posted using multipart/form-data in the usual way that files are uploaded" -" via the browser." -msgstr "" - -#: aiogram.types.input_file.InputFile:3 of -msgid "Source: https://core.telegram.org/bots/api#inputfile" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file:1 of -msgid "Create buffer from file" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file of -msgid "Parameters" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file:3 of -msgid "Path to file" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file:4 of -msgid "" -"Filename to be propagated to telegram. By default, will be parsed from " -"path" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file:6 of -msgid "Uploading chunk size" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file of -msgid "Returns" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.from_file:7 of -msgid "instance of :obj:`BufferedInputFile`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_invoice_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_invoice_message_content.po deleted file mode 100644 index cab32cc6..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_invoice_message_content.po +++ /dev/null @@ -1,192 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_invoice_message_content.rst:3 -msgid "InputInvoiceMessageContent" -msgstr "" - -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent:1 of -msgid "" -"Represents the `content " -"`_ of an invoice " -"message to be sent as the result of an inline query." -msgstr "" - -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent:3 of -msgid "Source: https://core.telegram.org/bots/api#inputinvoicemessagecontent" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.title:1 -#: of -msgid "Product name, 1-32 characters" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.description:1 -#: of -msgid "Product description, 1-255 characters" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.payload:1 -#: of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.provider_token:1 -#: of -msgid "" -"Payment provider token, obtained via `@BotFather " -"`_" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.currency:1 -#: of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.prices:1 -#: of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.max_tip_amount:1 -#: of -msgid "" -"*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 :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See " -"the *exp* parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.suggested_tip_amounts:1 -#: of -msgid "" -"*Optional*. A JSON-serialized array of suggested amounts of tip in the " -"*smallest units* of the currency (integer, **not** float/double). At most" -" 4 suggested tip amounts can be specified. The suggested tip amounts must" -" be positive, passed in a strictly increased order and must not exceed " -"*max_tip_amount*." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.provider_data:1 -#: of -msgid "" -"*Optional*. A JSON-serialized object for data about the invoice, which " -"will be shared with the payment provider. A detailed description of the " -"required fields should be provided by the payment provider." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.photo_url:1 -#: of -msgid "" -"*Optional*. URL of the product photo for the invoice. Can be a photo of " -"the goods or a marketing image for a service." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.photo_size:1 -#: of -msgid "*Optional*. Photo size in bytes" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.photo_width:1 -#: of -msgid "*Optional*. Photo width" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.photo_height:1 -#: of -msgid "*Optional*. Photo height" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.need_name:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if you require the user's full name to " -"complete the order" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.need_phone_number:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if you require the user's phone number to " -"complete the order" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.need_email:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if you require the user's email address to " -"complete the order" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.need_shipping_address:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if you require the user's shipping address " -"to complete the order" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.send_phone_number_to_provider:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if the user's phone number should be sent " -"to provider" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.send_email_to_provider:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if the user's email address should be sent " -"to provider" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_invoice_message_content.InputInvoiceMessageContent.is_flexible:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` if the final price depends on the shipping " -"method" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_location_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_location_message_content.po deleted file mode 100644 index 63866b93..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_location_message_content.po +++ /dev/null @@ -1,80 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_location_message_content.rst:3 -msgid "InputLocationMessageContent" -msgstr "" - -#: aiogram.types.input_location_message_content.InputLocationMessageContent:1 -#: of -msgid "" -"Represents the `content " -"`_ of a location " -"message to be sent as the result of an inline query." -msgstr "" - -#: aiogram.types.input_location_message_content.InputLocationMessageContent:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#inputlocationmessagecontent" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.latitude:1 -#: of -msgid "Latitude of the location in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.longitude:1 -#: of -msgid "Longitude of the location in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.horizontal_accuracy:1 -#: of -msgid "" -"*Optional*. The radius of uncertainty for the location, measured in " -"meters; 0-1500" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.live_period:1 -#: of -msgid "" -"*Optional*. Period in seconds for which the location can be updated, " -"should be between 60 and 86400." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.heading:1 -#: of -msgid "" -"*Optional*. For live locations, a direction in which the user is moving, " -"in degrees. Must be between 1 and 360 if specified." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_location_message_content.InputLocationMessageContent.proximity_alert_radius:1 -#: of -msgid "" -"*Optional*. For live locations, a maximum distance for proximity alerts " -"about approaching another chat member, in meters. Must be between 1 and " -"100000 if specified." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media.po b/docs/locale/en/LC_MESSAGES/api/types/input_media.po deleted file mode 100644 index b6740e36..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media.po +++ /dev/null @@ -1,52 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media.rst:3 -msgid "InputMedia" -msgstr "" - -#: aiogram.types.input_media.InputMedia:1 of -msgid "" -"This object represents the content of a media message to be sent. It " -"should be one of" -msgstr "" - -#: aiogram.types.input_media.InputMedia:3 of -msgid ":class:`aiogram.types.input_media_animation.InputMediaAnimation`" -msgstr "" - -#: aiogram.types.input_media.InputMedia:4 of -msgid ":class:`aiogram.types.input_media_document.InputMediaDocument`" -msgstr "" - -#: aiogram.types.input_media.InputMedia:5 of -msgid ":class:`aiogram.types.input_media_audio.InputMediaAudio`" -msgstr "" - -#: aiogram.types.input_media.InputMedia:6 of -msgid ":class:`aiogram.types.input_media_photo.InputMediaPhoto`" -msgstr "" - -#: aiogram.types.input_media.InputMedia:7 of -msgid ":class:`aiogram.types.input_media_video.InputMediaVideo`" -msgstr "" - -#: aiogram.types.input_media.InputMedia:9 of -msgid "Source: https://core.telegram.org/bots/api#inputmedia" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media_animation.po b/docs/locale/en/LC_MESSAGES/api/types/input_media_animation.po deleted file mode 100644 index e19c352d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media_animation.po +++ /dev/null @@ -1,106 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media_animation.rst:3 -msgid "InputMediaAnimation" -msgstr "" - -#: aiogram.types.input_media_animation.InputMediaAnimation:1 of -msgid "" -"Represents an animation file (GIF or H.264/MPEG-4 AVC video without " -"sound) to be sent." -msgstr "" - -#: aiogram.types.input_media_animation.InputMediaAnimation:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmediaanimation" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.type:1 of -msgid "Type of the result, must be *animation*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.media:1 of -msgid "" -"File to send. Pass a file_id to send a file that exists on the Telegram " -"servers (recommended), pass an HTTP URL for Telegram to get a file from " -"the Internet, or pass 'attach://' to upload a new one " -"using multipart/form-data under name. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.thumb:1 of -msgid "" -"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " -"generation for the file is supported server-side. The thumbnail should be" -" in JPEG format and less than 200 kB in size. A thumbnail's width and " -"height should not exceed 320. Ignored if the file is not uploaded using " -"multipart/form-data. Thumbnails can't be reused and can be only uploaded " -"as a new file, so you can pass 'attach://' if the " -"thumbnail was uploaded using multipart/form-data under " -". :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.caption:1 of -msgid "" -"*Optional*. Caption of the animation to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.parse_mode:1 of -msgid "" -"*Optional*. Mode for parsing entities in the animation caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.caption_entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.width:1 of -msgid "*Optional*. Animation width" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.height:1 of -msgid "*Optional*. Animation height" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.duration:1 of -msgid "*Optional*. Animation duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_animation.InputMediaAnimation.has_spoiler:1 of -msgid "" -"*Optional*. Pass :code:`True` if the animation needs to be covered with a" -" spoiler animation" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media_audio.po b/docs/locale/en/LC_MESSAGES/api/types/input_media_audio.po deleted file mode 100644 index 7273e1ac..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media_audio.po +++ /dev/null @@ -1,91 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media_audio.rst:3 -msgid "InputMediaAudio" -msgstr "" - -#: aiogram.types.input_media_audio.InputMediaAudio:1 of -msgid "Represents an audio file to be treated as music to be sent." -msgstr "" - -#: aiogram.types.input_media_audio.InputMediaAudio:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmediaaudio" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.type:1 of -msgid "Type of the result, must be *audio*" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.media:1 of -msgid "" -"File to send. Pass a file_id to send a file that exists on the Telegram " -"servers (recommended), pass an HTTP URL for Telegram to get a file from " -"the Internet, or pass 'attach://' to upload a new one " -"using multipart/form-data under name. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.thumb:1 of -msgid "" -"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " -"generation for the file is supported server-side. The thumbnail should be" -" in JPEG format and less than 200 kB in size. A thumbnail's width and " -"height should not exceed 320. Ignored if the file is not uploaded using " -"multipart/form-data. Thumbnails can't be reused and can be only uploaded " -"as a new file, so you can pass 'attach://' if the " -"thumbnail was uploaded using multipart/form-data under " -". :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.caption:1 of -msgid "" -"*Optional*. Caption of the audio to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the audio caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_audio.InputMediaAudio.caption_entities:1 of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.duration:1 -#: of -msgid "*Optional*. Duration of the audio in seconds" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.performer:1 -#: of -msgid "*Optional*. Performer of the audio" -msgstr "" - -#: ../../docstring aiogram.types.input_media_audio.InputMediaAudio.title:1 of -msgid "*Optional*. Title of the audio" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media_document.po b/docs/locale/en/LC_MESSAGES/api/types/input_media_document.po deleted file mode 100644 index 5ea2a3d9..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media_document.po +++ /dev/null @@ -1,90 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media_document.rst:3 -msgid "InputMediaDocument" -msgstr "" - -#: aiogram.types.input_media_document.InputMediaDocument:1 of -msgid "Represents a general file to be sent." -msgstr "" - -#: aiogram.types.input_media_document.InputMediaDocument:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmediadocument" -msgstr "" - -#: ../../docstring aiogram.types.input_media_document.InputMediaDocument.type:1 -#: of -msgid "Type of the result, must be *document*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.media:1 of -msgid "" -"File to send. Pass a file_id to send a file that exists on the Telegram " -"servers (recommended), pass an HTTP URL for Telegram to get a file from " -"the Internet, or pass 'attach://' to upload a new one " -"using multipart/form-data under name. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.thumb:1 of -msgid "" -"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " -"generation for the file is supported server-side. The thumbnail should be" -" in JPEG format and less than 200 kB in size. A thumbnail's width and " -"height should not exceed 320. Ignored if the file is not uploaded using " -"multipart/form-data. Thumbnails can't be reused and can be only uploaded " -"as a new file, so you can pass 'attach://' if the " -"thumbnail was uploaded using multipart/form-data under " -". :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.caption:1 of -msgid "" -"*Optional*. Caption of the document to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.parse_mode:1 of -msgid "" -"*Optional*. Mode for parsing entities in the document caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.caption_entities:1 of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_document.InputMediaDocument.disable_content_type_detection:1 -#: of -msgid "" -"*Optional*. Disables automatic server-side content type detection for " -"files uploaded using multipart/form-data. Always :code:`True`, if the " -"document is sent as part of an album." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media_photo.po b/docs/locale/en/LC_MESSAGES/api/types/input_media_photo.po deleted file mode 100644 index 10a634e9..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media_photo.po +++ /dev/null @@ -1,71 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media_photo.rst:3 -msgid "InputMediaPhoto" -msgstr "" - -#: aiogram.types.input_media_photo.InputMediaPhoto:1 of -msgid "Represents a photo to be sent." -msgstr "" - -#: aiogram.types.input_media_photo.InputMediaPhoto:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmediaphoto" -msgstr "" - -#: ../../docstring aiogram.types.input_media_photo.InputMediaPhoto.type:1 of -msgid "Type of the result, must be *photo*" -msgstr "" - -#: ../../docstring aiogram.types.input_media_photo.InputMediaPhoto.media:1 of -msgid "" -"File to send. Pass a file_id to send a file that exists on the Telegram " -"servers (recommended), pass an HTTP URL for Telegram to get a file from " -"the Internet, or pass 'attach://' to upload a new one " -"using multipart/form-data under name. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_media_photo.InputMediaPhoto.caption:1 of -msgid "" -"*Optional*. Caption of the photo to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring aiogram.types.input_media_photo.InputMediaPhoto.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the photo caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_photo.InputMediaPhoto.caption_entities:1 of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_photo.InputMediaPhoto.has_spoiler:1 of -msgid "" -"*Optional*. Pass :code:`True` if the photo needs to be covered with a " -"spoiler animation" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_media_video.po b/docs/locale/en/LC_MESSAGES/api/types/input_media_video.po deleted file mode 100644 index eef2e134..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_media_video.po +++ /dev/null @@ -1,104 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_media_video.rst:3 -msgid "InputMediaVideo" -msgstr "" - -#: aiogram.types.input_media_video.InputMediaVideo:1 of -msgid "Represents a video to be sent." -msgstr "" - -#: aiogram.types.input_media_video.InputMediaVideo:3 of -msgid "Source: https://core.telegram.org/bots/api#inputmediavideo" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.type:1 of -msgid "Type of the result, must be *video*" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.media:1 of -msgid "" -"File to send. Pass a file_id to send a file that exists on the Telegram " -"servers (recommended), pass an HTTP URL for Telegram to get a file from " -"the Internet, or pass 'attach://' to upload a new one " -"using multipart/form-data under name. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.thumb:1 of -msgid "" -"*Optional*. Thumbnail of the file sent; can be ignored if thumbnail " -"generation for the file is supported server-side. The thumbnail should be" -" in JPEG format and less than 200 kB in size. A thumbnail's width and " -"height should not exceed 320. Ignored if the file is not uploaded using " -"multipart/form-data. Thumbnails can't be reused and can be only uploaded " -"as a new file, so you can pass 'attach://' if the " -"thumbnail was uploaded using multipart/form-data under " -". :ref:`More information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.caption:1 of -msgid "" -"*Optional*. Caption of the video to be sent, 0-1024 characters after " -"entities parsing" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the video caption. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_video.InputMediaVideo.caption_entities:1 of -msgid "" -"*Optional*. List of special entities that appear in the caption, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.width:1 of -msgid "*Optional*. Video width" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.height:1 of -msgid "*Optional*. Video height" -msgstr "" - -#: ../../docstring aiogram.types.input_media_video.InputMediaVideo.duration:1 -#: of -msgid "*Optional*. Video duration in seconds" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_video.InputMediaVideo.supports_streaming:1 of -msgid "" -"*Optional*. Pass :code:`True` if the uploaded video is suitable for " -"streaming" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_media_video.InputMediaVideo.has_spoiler:1 of -msgid "" -"*Optional*. Pass :code:`True` if the video needs to be covered with a " -"spoiler animation" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_message_content.po deleted file mode 100644 index cb7a6f5f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_message_content.po +++ /dev/null @@ -1,53 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_message_content.rst:3 -msgid "InputMessageContent" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:1 of -msgid "" -"This object represents the content of a message to be sent as a result of" -" an inline query. Telegram clients currently support the following 5 " -"types:" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:3 of -msgid ":class:`aiogram.types.input_text_message_content.InputTextMessageContent`" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:4 of -msgid ":class:`aiogram.types.input_location_message_content.InputLocationMessageContent`" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:5 of -msgid ":class:`aiogram.types.input_venue_message_content.InputVenueMessageContent`" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:6 of -msgid ":class:`aiogram.types.input_contact_message_content.InputContactMessageContent`" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:7 of -msgid ":class:`aiogram.types.input_invoice_message_content.InputInvoiceMessageContent`" -msgstr "" - -#: aiogram.types.input_message_content.InputMessageContent:9 of -msgid "Source: https://core.telegram.org/bots/api#inputmessagecontent" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po b/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po deleted file mode 100644 index fb2433c4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_sticker.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/input_sticker.rst:3 -msgid "InputSticker" -msgstr "" - -#: aiogram.types.input_sticker.InputSticker:1 of -msgid "This object describes a sticker to be added to a sticker set." -msgstr "" - -#: aiogram.types.input_sticker.InputSticker:3 of -msgid "Source: https://core.telegram.org/bots/api#inputsticker" -msgstr "" - -#: ../../docstring aiogram.types.input_sticker.InputSticker.sticker:1 of -msgid "" -"The added sticker. Pass a *file_id* as a String to send a file that " -"already exists on the Telegram servers, pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, upload a new one using " -"multipart/form-data, or pass 'attach://' to upload a " -"new one using multipart/form-data under name. Animated" -" and video stickers can't be uploaded via HTTP URL. :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: ../../docstring aiogram.types.input_sticker.InputSticker.emoji_list:1 of -msgid "List of 1-20 emoji associated with the sticker" -msgstr "" - -#: ../../docstring aiogram.types.input_sticker.InputSticker.mask_position:1 of -msgid "" -"*Optional*. Position where the mask should be placed on faces. For 'mask'" -" stickers only." -msgstr "" - -#: ../../docstring aiogram.types.input_sticker.InputSticker.keywords:1 of -msgid "" -"*Optional*. List of 0-20 search keywords for the sticker with total " -"length of up to 64 characters. For 'regular' and 'custom_emoji' stickers " -"only." -msgstr "" - -#~ msgid "" -#~ "The added sticker. Pass a *file_id* " -#~ "as a String to send a file " -#~ "that already exists on the Telegram " -#~ "servers, pass an HTTP URL as a " -#~ "String for Telegram to get a file" -#~ " from the Internet, or upload a " -#~ "new one using multipart/form-data. " -#~ "Animated and video stickers can't be " -#~ "uploaded via HTTP URL. :ref:`More " -#~ "information on Sending Files » " -#~ "`" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_text_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_text_message_content.po deleted file mode 100644 index 071e0c64..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_text_message_content.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_text_message_content.rst:3 -msgid "InputTextMessageContent" -msgstr "" - -#: aiogram.types.input_text_message_content.InputTextMessageContent:1 of -msgid "" -"Represents the `content " -"`_ of a text " -"message to be sent as the result of an inline query." -msgstr "" - -#: aiogram.types.input_text_message_content.InputTextMessageContent:3 of -msgid "Source: https://core.telegram.org/bots/api#inputtextmessagecontent" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_text_message_content.InputTextMessageContent.message_text:1 -#: of -msgid "Text of the message to be sent, 1-4096 characters" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_text_message_content.InputTextMessageContent.parse_mode:1 -#: of -msgid "" -"*Optional*. Mode for parsing entities in the message text. See " -"`formatting options `_ for more details." -msgstr "" - -#: ../../docstring -#: aiogram.types.input_text_message_content.InputTextMessageContent.entities:1 -#: of -msgid "" -"*Optional*. List of special entities that appear in message text, which " -"can be specified instead of *parse_mode*" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_text_message_content.InputTextMessageContent.disable_web_page_preview:1 -#: of -msgid "*Optional*. Disables link previews for links in the sent message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/input_venue_message_content.po b/docs/locale/en/LC_MESSAGES/api/types/input_venue_message_content.po deleted file mode 100644 index 631d4d2b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/input_venue_message_content.po +++ /dev/null @@ -1,86 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/input_venue_message_content.rst:3 -msgid "InputVenueMessageContent" -msgstr "" - -#: aiogram.types.input_venue_message_content.InputVenueMessageContent:1 of -msgid "" -"Represents the `content " -"`_ of a venue " -"message to be sent as the result of an inline query." -msgstr "" - -#: aiogram.types.input_venue_message_content.InputVenueMessageContent:3 of -msgid "Source: https://core.telegram.org/bots/api#inputvenuemessagecontent" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.latitude:1 -#: of -msgid "Latitude of the venue in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.longitude:1 -#: of -msgid "Longitude of the venue in degrees" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.title:1 -#: of -msgid "Name of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.address:1 -#: of -msgid "Address of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.foursquare_id:1 -#: of -msgid "*Optional*. Foursquare identifier of the venue, if known" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.foursquare_type:1 -#: of -msgid "" -"*Optional*. Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.google_place_id:1 -#: of -msgid "*Optional*. Google Places identifier of the venue" -msgstr "" - -#: ../../docstring -#: aiogram.types.input_venue_message_content.InputVenueMessageContent.google_place_type:1 -#: of -msgid "" -"*Optional*. Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/invoice.po b/docs/locale/en/LC_MESSAGES/api/types/invoice.po deleted file mode 100644 index 85c30c9e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/invoice.po +++ /dev/null @@ -1,60 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/invoice.rst:3 -msgid "Invoice" -msgstr "" - -#: aiogram.types.invoice.Invoice:1 of -msgid "This object contains basic information about an invoice." -msgstr "" - -#: aiogram.types.invoice.Invoice:3 of -msgid "Source: https://core.telegram.org/bots/api#invoice" -msgstr "" - -#: ../../docstring aiogram.types.invoice.Invoice.title:1 of -msgid "Product name" -msgstr "" - -#: ../../docstring aiogram.types.invoice.Invoice.description:1 of -msgid "Product description" -msgstr "" - -#: ../../docstring aiogram.types.invoice.Invoice.start_parameter:1 of -msgid "" -"Unique bot deep-linking parameter that can be used to generate this " -"invoice" -msgstr "" - -#: ../../docstring aiogram.types.invoice.Invoice.currency:1 of -msgid "" -"Three-letter ISO 4217 `currency `_ code" -msgstr "" - -#: ../../docstring aiogram.types.invoice.Invoice.total_amount:1 of -msgid "" -"Total price in the *smallest units* of the currency (integer, **not** " -"float/double). For example, for a price of :code:`US$ 1.45` pass " -":code:`amount = 145`. See the *exp* parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies)." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button.po deleted file mode 100644 index a2578af9..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button.po +++ /dev/null @@ -1,124 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/keyboard_button.rst:3 -msgid "KeyboardButton" -msgstr "" - -#: aiogram.types.keyboard_button.KeyboardButton:1 of -msgid "" -"This object represents one button of the reply keyboard. For simple text " -"buttons, *String* can be used instead of this object to specify the " -"button text. The optional fields *web_app*, *request_user*, " -"*request_chat*, *request_contact*, *request_location*, and *request_poll*" -" are mutually exclusive. **Note:** *request_contact* and " -"*request_location* options will only work in Telegram versions released " -"after 9 April, 2016. Older clients will display *unsupported message*." -msgstr "" - -#: aiogram.types.keyboard_button.KeyboardButton:4 of -msgid "" -"**Note:** *request_poll* option will only work in Telegram versions " -"released after 23 January, 2020. Older clients will display *unsupported " -"message*." -msgstr "" - -#: aiogram.types.keyboard_button.KeyboardButton:6 of -msgid "" -"**Note:** *web_app* option will only work in Telegram versions released " -"after 16 April, 2022. Older clients will display *unsupported message*." -msgstr "" - -#: aiogram.types.keyboard_button.KeyboardButton:8 of -msgid "" -"**Note:** *request_user* and *request_chat* options will only work in " -"Telegram versions released after 3 February, 2023. Older clients will " -"display *unsupported message*." -msgstr "" - -#: aiogram.types.keyboard_button.KeyboardButton:10 of -msgid "Source: https://core.telegram.org/bots/api#keyboardbutton" -msgstr "" - -#: ../../docstring aiogram.types.keyboard_button.KeyboardButton.text:1 of -msgid "" -"Text of the button. If none of the optional fields are used, it will be " -"sent as a message when the button is pressed" -msgstr "" - -#: ../../docstring aiogram.types.keyboard_button.KeyboardButton.request_user:1 -#: of -msgid "" -"*Optional.* If specified, pressing the button will open a list of " -"suitable users. Tapping on any user will send their identifier to the bot" -" in a 'user_shared' service message. Available in private chats only." -msgstr "" - -#: ../../docstring aiogram.types.keyboard_button.KeyboardButton.request_chat:1 -#: of -msgid "" -"*Optional.* If specified, pressing the button will open a list of " -"suitable chats. Tapping on a chat will send its identifier to the bot in " -"a 'chat_shared' service message. Available in private chats only." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button.KeyboardButton.request_contact:1 of -msgid "" -"*Optional*. If :code:`True`, the user's phone number will be sent as a " -"contact when the button is pressed. Available in private chats only." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button.KeyboardButton.request_location:1 of -msgid "" -"*Optional*. If :code:`True`, the user's current location will be sent " -"when the button is pressed. Available in private chats only." -msgstr "" - -#: ../../docstring aiogram.types.keyboard_button.KeyboardButton.request_poll:1 -#: of -msgid "" -"*Optional*. If specified, the user will be asked to create a poll and " -"send it to the bot when the button is pressed. Available in private chats" -" only." -msgstr "" - -#: ../../docstring aiogram.types.keyboard_button.KeyboardButton.web_app:1 of -msgid "" -"*Optional*. If specified, the described `Web App " -"`_ will be launched when the " -"button is pressed. The Web App will be able to send a 'web_app_data' " -"service message. Available in private chats only." -msgstr "" - -#~ msgid "" -#~ "This object represents one button of " -#~ "the reply keyboard. For simple text " -#~ "buttons *String* can be used instead " -#~ "of this object to specify text of" -#~ " the button. Optional fields *web_app*, " -#~ "*request_contact*, *request_location*, and " -#~ "*request_poll* are mutually exclusive. " -#~ "**Note:** *request_contact* and *request_location*" -#~ " options will only work in Telegram" -#~ " versions released after 9 April, " -#~ "2016. Older clients will display " -#~ "*unsupported message*." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_poll_type.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_poll_type.po deleted file mode 100644 index 32adde2e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_poll_type.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/keyboard_button_poll_type.rst:3 -msgid "KeyboardButtonPollType" -msgstr "" - -#: aiogram.types.keyboard_button_poll_type.KeyboardButtonPollType:1 of -msgid "" -"This object represents type of a poll, which is allowed to be created and" -" sent when the corresponding button is pressed." -msgstr "" - -#: aiogram.types.keyboard_button_poll_type.KeyboardButtonPollType:3 of -msgid "Source: https://core.telegram.org/bots/api#keyboardbuttonpolltype" -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_poll_type.KeyboardButtonPollType.type:1 of -msgid "" -"*Optional*. If *quiz* is passed, the user will be allowed to create only " -"polls in the quiz mode. If *regular* is passed, only regular polls will " -"be allowed. Otherwise, the user will be allowed to create a poll of any " -"type." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po deleted file mode 100644 index 2912a3f0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_chat.po +++ /dev/null @@ -1,113 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/keyboard_button_request_chat.rst:3 -msgid "KeyboardButtonRequestChat" -msgstr "" - -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat:1 of -msgid "" -"This object defines the criteria used to request a suitable chat. The " -"identifier of the selected chat will be shared with the bot when the " -"corresponding button is pressed. `More about requesting chats » " -"`_" -msgstr "" - -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat:3 of -msgid "Source: https://core.telegram.org/bots/api#keyboardbuttonrequestchat" -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.request_id:1 -#: of -msgid "" -"Signed 32-bit identifier of the request, which will be received back in " -"the :class:`aiogram.types.chat_shared.ChatShared` object. Must be unique " -"within the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.chat_is_channel:1 -#: of -msgid "" -"Pass :code:`True` to request a channel chat, pass :code:`False` to " -"request a group or a supergroup chat." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.chat_is_forum:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a forum supergroup, pass " -":code:`False` to request a non-forum chat. If not specified, no " -"additional restrictions are applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.chat_has_username:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a supergroup or a channel with a" -" username, pass :code:`False` to request a chat without a username. If " -"not specified, no additional restrictions are applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.chat_is_created:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a chat owned by the user. " -"Otherwise, no additional restrictions are applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.user_administrator_rights:1 -#: of -msgid "" -"*Optional*. A JSON-serialized object listing the required administrator " -"rights of the user in the chat. The rights must be a superset of " -"*bot_administrator_rights*. If not specified, no additional restrictions " -"are applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.bot_administrator_rights:1 -#: of -msgid "" -"*Optional*. A JSON-serialized object listing the required administrator " -"rights of the bot in the chat. The rights must be a subset of " -"*user_administrator_rights*. If not specified, no additional restrictions" -" are applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_chat.KeyboardButtonRequestChat.bot_is_member:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a chat with the bot as a member." -" Otherwise, no additional restrictions are applied." -msgstr "" - -#~ msgid "" -#~ "This object defines the criteria used" -#~ " to request a suitable chat. The " -#~ "identifier of the selected chat will " -#~ "be shared with the bot when the" -#~ " corresponding button is pressed." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po b/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po deleted file mode 100644 index 1e0bca68..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/keyboard_button_request_user.po +++ /dev/null @@ -1,69 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/keyboard_button_request_user.rst:3 -msgid "KeyboardButtonRequestUser" -msgstr "" - -#: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser:1 of -msgid "" -"This object defines the criteria used to request a suitable user. The " -"identifier of the selected user will be shared with the bot when the " -"corresponding button is pressed. `More about requesting users » " -"`_" -msgstr "" - -#: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser:3 of -msgid "Source: https://core.telegram.org/bots/api#keyboardbuttonrequestuser" -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser.request_id:1 -#: of -msgid "" -"Signed 32-bit identifier of the request, which will be received back in " -"the :class:`aiogram.types.user_shared.UserShared` object. Must be unique " -"within the message" -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser.user_is_bot:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a bot, pass :code:`False` to " -"request a regular user. If not specified, no additional restrictions are " -"applied." -msgstr "" - -#: ../../docstring -#: aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser.user_is_premium:1 -#: of -msgid "" -"*Optional*. Pass :code:`True` to request a premium user, pass " -":code:`False` to request a non-premium user. If not specified, no " -"additional restrictions are applied." -msgstr "" - -#~ msgid "" -#~ "This object defines the criteria used" -#~ " to request a suitable user. The " -#~ "identifier of the selected user will " -#~ "be shared with the bot when the" -#~ " corresponding button is pressed." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/labeled_price.po b/docs/locale/en/LC_MESSAGES/api/types/labeled_price.po deleted file mode 100644 index 6b3f1406..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/labeled_price.po +++ /dev/null @@ -1,46 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/labeled_price.rst:3 -msgid "LabeledPrice" -msgstr "" - -#: aiogram.types.labeled_price.LabeledPrice:1 of -msgid "This object represents a portion of the price for goods or services." -msgstr "" - -#: aiogram.types.labeled_price.LabeledPrice:3 of -msgid "Source: https://core.telegram.org/bots/api#labeledprice" -msgstr "" - -#: ../../docstring aiogram.types.labeled_price.LabeledPrice.label:1 of -msgid "Portion label" -msgstr "" - -#: ../../docstring aiogram.types.labeled_price.LabeledPrice.amount:1 of -msgid "" -"Price of the product in the *smallest units* of the `currency " -"`_ " -"(integer, **not** float/double). For example, for a price of :code:`US$ " -"1.45` pass :code:`amount = 145`. See the *exp* parameter in " -"`currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies)." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/location.po b/docs/locale/en/LC_MESSAGES/api/types/location.po deleted file mode 100644 index c3826725..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/location.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/location.rst:3 -msgid "Location" -msgstr "" - -#: aiogram.types.location.Location:1 of -msgid "This object represents a point on the map." -msgstr "" - -#: aiogram.types.location.Location:3 of -msgid "Source: https://core.telegram.org/bots/api#location" -msgstr "" - -#: ../../docstring aiogram.types.location.Location.longitude:1 of -msgid "Longitude as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.location.Location.latitude:1 of -msgid "Latitude as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.location.Location.horizontal_accuracy:1 of -msgid "" -"*Optional*. The radius of uncertainty for the location, measured in " -"meters; 0-1500" -msgstr "" - -#: ../../docstring aiogram.types.location.Location.live_period:1 of -msgid "" -"*Optional*. Time relative to the message sending date, during which the " -"location can be updated; in seconds. For active live locations only." -msgstr "" - -#: ../../docstring aiogram.types.location.Location.heading:1 of -msgid "" -"*Optional*. The direction in which user is moving, in degrees; 1-360. For" -" active live locations only." -msgstr "" - -#: ../../docstring aiogram.types.location.Location.proximity_alert_radius:1 of -msgid "" -"*Optional*. The maximum distance for proximity alerts about approaching " -"another chat member, in meters. For sent live locations only." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/login_url.po b/docs/locale/en/LC_MESSAGES/api/types/login_url.po deleted file mode 100644 index 1aca7150..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/login_url.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/login_url.rst:3 -msgid "LoginUrl" -msgstr "" - -#: aiogram.types.login_url.LoginUrl:1 of -msgid "" -"This object represents a parameter of the inline keyboard button used to " -"automatically authorize a user. Serves as a great replacement for the " -"`Telegram Login Widget `_ when " -"the user is coming from Telegram. All the user needs to do is tap/click a" -" button and confirm that they want to log in: Telegram apps support these" -" buttons as of `version 5.7 `_." -msgstr "" - -#: aiogram.types.login_url.LoginUrl:4 of -msgid "Sample bot: `@discussbot `_" -msgstr "" - -#: aiogram.types.login_url.LoginUrl:6 of -msgid "Source: https://core.telegram.org/bots/api#loginurl" -msgstr "" - -#: ../../docstring aiogram.types.login_url.LoginUrl.url:1 of -msgid "" -"An HTTPS URL to be opened with user authorization data added to the query" -" string when the button is pressed. If the user refuses to provide " -"authorization data, the original URL without information about the user " -"will be opened. The data added is the same as described in `Receiving " -"authorization data `_." -msgstr "" - -#: ../../docstring aiogram.types.login_url.LoginUrl.forward_text:1 of -msgid "*Optional*. New text of the button in forwarded messages." -msgstr "" - -#: ../../docstring aiogram.types.login_url.LoginUrl.bot_username:1 of -msgid "" -"*Optional*. Username of a bot, which will be used for user authorization." -" See `Setting up a bot `_ for more details. If not specified, the current bot's " -"username will be assumed. The *url*'s domain must be the same as the " -"domain linked with the bot. See `Linking your domain to the bot " -"`_ for more details." -msgstr "" - -#: ../../docstring aiogram.types.login_url.LoginUrl.request_write_access:1 of -msgid "" -"*Optional*. Pass :code:`True` to request the permission for your bot to " -"send messages to the user." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/mask_position.po b/docs/locale/en/LC_MESSAGES/api/types/mask_position.po deleted file mode 100644 index 5ab98120..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/mask_position.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/mask_position.rst:3 -msgid "MaskPosition" -msgstr "" - -#: aiogram.types.mask_position.MaskPosition:1 of -msgid "" -"This object describes the position on faces where a mask should be placed" -" by default." -msgstr "" - -#: aiogram.types.mask_position.MaskPosition:3 of -msgid "Source: https://core.telegram.org/bots/api#maskposition" -msgstr "" - -#: ../../docstring aiogram.types.mask_position.MaskPosition.point:1 of -msgid "" -"The part of the face relative to which the mask should be placed. One of " -"'forehead', 'eyes', 'mouth', or 'chin'." -msgstr "" - -#: ../../docstring aiogram.types.mask_position.MaskPosition.x_shift:1 of -msgid "" -"Shift by X-axis measured in widths of the mask scaled to the face size, " -"from left to right. For example, choosing -1.0 will place mask just to " -"the left of the default mask position." -msgstr "" - -#: ../../docstring aiogram.types.mask_position.MaskPosition.y_shift:1 of -msgid "" -"Shift by Y-axis measured in heights of the mask scaled to the face size, " -"from top to bottom. For example, 1.0 will place the mask just below the " -"default mask position." -msgstr "" - -#: ../../docstring aiogram.types.mask_position.MaskPosition.scale:1 of -msgid "Mask scaling coefficient. For example, 2.0 means double size." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/menu_button.po b/docs/locale/en/LC_MESSAGES/api/types/menu_button.po deleted file mode 100644 index ad862f22..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/menu_button.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/menu_button.rst:3 -msgid "MenuButton" -msgstr "" - -#: aiogram.types.menu_button.MenuButton:1 of -msgid "" -"This object describes the bot's menu button in a private chat. It should " -"be one of" -msgstr "" - -#: aiogram.types.menu_button.MenuButton:3 of -msgid ":class:`aiogram.types.menu_button_commands.MenuButtonCommands`" -msgstr "" - -#: aiogram.types.menu_button.MenuButton:4 of -msgid ":class:`aiogram.types.menu_button_web_app.MenuButtonWebApp`" -msgstr "" - -#: aiogram.types.menu_button.MenuButton:5 of -msgid ":class:`aiogram.types.menu_button_default.MenuButtonDefault`" -msgstr "" - -#: aiogram.types.menu_button.MenuButton:7 of -msgid "" -"If a menu button other than " -":class:`aiogram.types.menu_button_default.MenuButtonDefault` is set for a" -" private chat, then it is applied in the chat. Otherwise the default menu" -" button is applied. By default, the menu button opens the list of bot " -"commands." -msgstr "" - -#: aiogram.types.menu_button.MenuButton:9 of -msgid "Source: https://core.telegram.org/bots/api#menubutton" -msgstr "" - -#: ../../docstring aiogram.types.menu_button.MenuButton.type:1 of -msgid "Type of the button" -msgstr "" - -#: ../../docstring aiogram.types.menu_button.MenuButton.text:1 of -msgid "*Optional*. Text on the button" -msgstr "" - -#: ../../docstring aiogram.types.menu_button.MenuButton.web_app:1 of -msgid "" -"*Optional*. Description of the Web App that will be launched when the " -"user presses the button. The Web App will be able to send an arbitrary " -"message on behalf of the user using the method " -":class:`aiogram.methods.answer_web_app_query.AnswerWebAppQuery`." -msgstr "" - -#~ msgid "..." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/menu_button_commands.po b/docs/locale/en/LC_MESSAGES/api/types/menu_button_commands.po deleted file mode 100644 index 6e0e12cc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/menu_button_commands.po +++ /dev/null @@ -1,35 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/menu_button_commands.rst:3 -msgid "MenuButtonCommands" -msgstr "" - -#: aiogram.types.menu_button_commands.MenuButtonCommands:1 of -msgid "Represents a menu button, which opens the bot's list of commands." -msgstr "" - -#: aiogram.types.menu_button_commands.MenuButtonCommands:3 of -msgid "Source: https://core.telegram.org/bots/api#menubuttoncommands" -msgstr "" - -#: ../../docstring aiogram.types.menu_button_commands.MenuButtonCommands.type:1 -#: of -msgid "Type of the button, must be *commands*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/menu_button_default.po b/docs/locale/en/LC_MESSAGES/api/types/menu_button_default.po deleted file mode 100644 index 93e8b337..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/menu_button_default.po +++ /dev/null @@ -1,35 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/menu_button_default.rst:3 -msgid "MenuButtonDefault" -msgstr "" - -#: aiogram.types.menu_button_default.MenuButtonDefault:1 of -msgid "Describes that no specific value for the menu button was set." -msgstr "" - -#: aiogram.types.menu_button_default.MenuButtonDefault:3 of -msgid "Source: https://core.telegram.org/bots/api#menubuttondefault" -msgstr "" - -#: ../../docstring aiogram.types.menu_button_default.MenuButtonDefault.type:1 -#: of -msgid "Type of the button, must be *default*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/menu_button_web_app.po b/docs/locale/en/LC_MESSAGES/api/types/menu_button_web_app.po deleted file mode 100644 index 21b08c57..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/menu_button_web_app.po +++ /dev/null @@ -1,49 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/menu_button_web_app.rst:3 -msgid "MenuButtonWebApp" -msgstr "" - -#: aiogram.types.menu_button_web_app.MenuButtonWebApp:1 of -msgid "" -"Represents a menu button, which launches a `Web App " -"`_." -msgstr "" - -#: aiogram.types.menu_button_web_app.MenuButtonWebApp:3 of -msgid "Source: https://core.telegram.org/bots/api#menubuttonwebapp" -msgstr "" - -#: ../../docstring aiogram.types.menu_button_web_app.MenuButtonWebApp.type:1 of -msgid "Type of the button, must be *web_app*" -msgstr "" - -#: ../../docstring aiogram.types.menu_button_web_app.MenuButtonWebApp.text:1 of -msgid "Text on the button" -msgstr "" - -#: ../../docstring aiogram.types.menu_button_web_app.MenuButtonWebApp.web_app:1 -#: of -msgid "" -"Description of the Web App that will be launched when the user presses " -"the button. The Web App will be able to send an arbitrary message on " -"behalf of the user using the method " -":class:`aiogram.methods.answer_web_app_query.AnswerWebAppQuery`." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/message.po b/docs/locale/en/LC_MESSAGES/api/types/message.po deleted file mode 100644 index 8c20ee62..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/message.po +++ /dev/null @@ -1,2591 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/message.rst:3 -msgid "Message" -msgstr "" - -#: aiogram.types.message.Message:1 of -msgid "This object represents a message." -msgstr "" - -#: aiogram.types.message.Message:3 of -msgid "Source: https://core.telegram.org/bots/api#message" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.message_id:1 of -msgid "Unique message identifier inside this chat" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.date:1 of -msgid "Date the message was sent in Unix time" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.chat:1 of -msgid "Conversation the message belongs to" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.message_thread_id:1 of -msgid "" -"*Optional*. Unique identifier of a message thread to which the message " -"belongs; for supergroups only" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.from_user:1 of -msgid "" -"*Optional*. Sender of the message; empty for messages sent to channels. " -"For backward compatibility, the field contains a fake sender user in non-" -"channel chats, if the message was sent on behalf of a chat." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.sender_chat:1 of -msgid "" -"*Optional*. Sender of the message, sent on behalf of a chat. For example," -" the channel itself for channel posts, the supergroup itself for messages" -" from anonymous group administrators, the linked channel for messages " -"automatically forwarded to the discussion group. For backward " -"compatibility, the field *from* contains a fake sender user in non-" -"channel chats, if the message was sent on behalf of a chat." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_from:1 of -msgid "*Optional*. For forwarded messages, sender of the original message" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_from_chat:1 of -msgid "" -"*Optional*. For messages forwarded from channels or from anonymous " -"administrators, information about the original sender chat" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_from_message_id:1 of -msgid "" -"*Optional*. For messages forwarded from channels, identifier of the " -"original message in the channel" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_signature:1 of -msgid "" -"*Optional*. For forwarded messages that were originally sent in channels " -"or by an anonymous chat administrator, signature of the message sender if" -" present" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_sender_name:1 of -msgid "" -"*Optional*. Sender's name for messages forwarded from users who disallow " -"adding a link to their account in forwarded messages" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forward_date:1 of -msgid "" -"*Optional*. For forwarded messages, date the original message was sent in" -" Unix time" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.is_topic_message:1 of -msgid "*Optional*. :code:`True`, if the message is sent to a forum topic" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.is_automatic_forward:1 of -msgid "" -"*Optional*. :code:`True`, if the message is a channel post that was " -"automatically forwarded to the connected discussion group" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.reply_to_message:1 of -msgid "" -"*Optional*. For replies, the original message. Note that the Message " -"object in this field will not contain further *reply_to_message* fields " -"even if it itself is a reply." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.via_bot:1 of -msgid "*Optional*. Bot through which the message was sent" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.edit_date:1 of -msgid "*Optional*. Date the message was last edited in Unix time" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.has_protected_content:1 of -msgid "*Optional*. :code:`True`, if the message can't be forwarded" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.media_group_id:1 of -msgid "" -"*Optional*. The unique identifier of a media message group this message " -"belongs to" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.author_signature:1 of -msgid "" -"*Optional*. Signature of the post author for messages in channels, or the" -" custom title of an anonymous group administrator" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.text:1 of -msgid "*Optional*. For text messages, the actual UTF-8 text of the message" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.entities:1 of -msgid "" -"*Optional*. For text messages, special entities like usernames, URLs, bot" -" commands, etc. that appear in the text" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.animation:1 of -msgid "" -"*Optional*. Message is an animation, information about the animation. For" -" backward compatibility, when this field is set, the *document* field " -"will also be set" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.audio:1 of -msgid "*Optional*. Message is an audio file, information about the file" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.document:1 of -msgid "*Optional*. Message is a general file, information about the file" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.photo:1 of -msgid "*Optional*. Message is a photo, available sizes of the photo" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.sticker:1 of -msgid "*Optional*. Message is a sticker, information about the sticker" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.story:1 of -msgid "*Optional*. Message is a forwarded story" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.video:1 of -msgid "*Optional*. Message is a video, information about the video" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.video_note:1 of -msgid "" -"*Optional*. Message is a `video note `_, information about the video message" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.voice:1 of -msgid "*Optional*. Message is a voice message, information about the file" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.caption:1 of -msgid "" -"*Optional*. Caption for the animation, audio, document, photo, video or " -"voice" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.caption_entities:1 of -msgid "" -"*Optional*. For messages with a caption, special entities like usernames," -" URLs, bot commands, etc. that appear in the caption" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.has_media_spoiler:1 of -msgid "" -"*Optional*. :code:`True`, if the message media is covered by a spoiler " -"animation" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.contact:1 of -msgid "*Optional*. Message is a shared contact, information about the contact" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.dice:1 of -msgid "*Optional*. Message is a dice with random value" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.game:1 of -msgid "" -"*Optional*. Message is a game, information about the game. `More about " -"games » `_" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.poll:1 of -msgid "*Optional*. Message is a native poll, information about the poll" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.venue:1 of -msgid "" -"*Optional*. Message is a venue, information about the venue. For backward" -" compatibility, when this field is set, the *location* field will also be" -" set" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.location:1 of -msgid "*Optional*. Message is a shared location, information about the location" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.new_chat_members:1 of -msgid "" -"*Optional*. New members that were added to the group or supergroup and " -"information about them (the bot itself may be one of these members)" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.left_chat_member:1 of -msgid "" -"*Optional*. A member was removed from the group, information about them " -"(this member may be the bot itself)" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.new_chat_title:1 of -msgid "*Optional*. A chat title was changed to this value" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.new_chat_photo:1 of -msgid "*Optional*. A chat photo was change to this value" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.delete_chat_photo:1 of -msgid "*Optional*. Service message: the chat photo was deleted" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.group_chat_created:1 of -msgid "*Optional*. Service message: the group has been created" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.supergroup_chat_created:1 of -msgid "" -"*Optional*. Service message: the supergroup has been created. This field " -"can't be received in a message coming through updates, because bot can't " -"be a member of a supergroup when it is created. It can only be found in " -"reply_to_message if someone replies to a very first message in a directly" -" created supergroup." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.channel_chat_created:1 of -msgid "" -"*Optional*. Service message: the channel has been created. This field " -"can't be received in a message coming through updates, because bot can't " -"be a member of a channel when it is created. It can only be found in " -"reply_to_message if someone replies to a very first message in a channel." -msgstr "" - -#: ../../docstring -#: aiogram.types.message.Message.message_auto_delete_timer_changed:1 of -msgid "" -"*Optional*. Service message: auto-delete timer settings changed in the " -"chat" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.migrate_to_chat_id:1 of -msgid "" -"*Optional*. The group has been migrated to a supergroup with the " -"specified identifier. This number may have more than 32 significant bits " -"and some programming languages may have difficulty/silent defects in " -"interpreting it. But it has at most 52 significant bits, so a signed " -"64-bit integer or double-precision float type are safe for storing this " -"identifier." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.migrate_from_chat_id:1 of -msgid "" -"*Optional*. The supergroup has been migrated from a group with the " -"specified identifier. This number may have more than 32 significant bits " -"and some programming languages may have difficulty/silent defects in " -"interpreting it. But it has at most 52 significant bits, so a signed " -"64-bit integer or double-precision float type are safe for storing this " -"identifier." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.pinned_message:1 of -msgid "" -"*Optional*. Specified message was pinned. Note that the Message object in" -" this field will not contain further *reply_to_message* fields even if it" -" is itself a reply." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.invoice:1 of -msgid "" -"*Optional*. Message is an invoice for a `payment " -"`_, information about the " -"invoice. `More about payments » " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.successful_payment:1 of -msgid "" -"*Optional*. Message is a service message about a successful payment, " -"information about the payment. `More about payments » " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.user_shared:1 of -msgid "*Optional*. Service message: a user was shared with the bot" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.chat_shared:1 of -msgid "*Optional*. Service message: a chat was shared with the bot" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.connected_website:1 of -msgid "" -"*Optional*. The domain name of the website on which the user has logged " -"in. `More about Telegram Login » " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.write_access_allowed:1 of -msgid "" -"*Optional*. Service message: the user allowed the bot added to the " -"attachment menu to write messages" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.passport_data:1 of -msgid "*Optional*. Telegram Passport data" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.proximity_alert_triggered:1 of -msgid "" -"*Optional*. Service message. A user in the chat triggered another user's " -"proximity alert while sharing Live Location." -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forum_topic_created:1 of -msgid "*Optional*. Service message: forum topic created" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forum_topic_edited:1 of -msgid "*Optional*. Service message: forum topic edited" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forum_topic_closed:1 of -msgid "*Optional*. Service message: forum topic closed" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.forum_topic_reopened:1 of -msgid "*Optional*. Service message: forum topic reopened" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.general_forum_topic_hidden:1 -#: of -msgid "*Optional*. Service message: the 'General' forum topic hidden" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.general_forum_topic_unhidden:1 -#: of -msgid "*Optional*. Service message: the 'General' forum topic unhidden" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.video_chat_scheduled:1 of -msgid "*Optional*. Service message: video chat scheduled" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.video_chat_started:1 of -msgid "*Optional*. Service message: video chat started" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.video_chat_ended:1 of -msgid "*Optional*. Service message: video chat ended" -msgstr "" - -#: ../../docstring -#: aiogram.types.message.Message.video_chat_participants_invited:1 of -msgid "*Optional*. Service message: new participants invited to a video chat" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.web_app_data:1 of -msgid "*Optional*. Service message: data sent by a Web App" -msgstr "" - -#: ../../docstring aiogram.types.message.Message.reply_markup:1 of -msgid "" -"*Optional*. Inline keyboard attached to the message. :code:`login_url` " -"buttons are represented as ordinary :code:`url` buttons." -msgstr "" - -#: aiogram.types.message.Message.answer_animation:1 -#: aiogram.types.message.Message.reply_animation:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_animation.SendAnimation`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer:4 -#: aiogram.types.message.Message.answer_animation:4 -#: aiogram.types.message.Message.answer_audio:4 -#: aiogram.types.message.Message.answer_contact:4 -#: aiogram.types.message.Message.answer_dice:4 -#: aiogram.types.message.Message.answer_document:4 -#: aiogram.types.message.Message.answer_game:4 -#: aiogram.types.message.Message.answer_invoice:4 -#: aiogram.types.message.Message.answer_location:4 -#: aiogram.types.message.Message.answer_media_group:4 -#: aiogram.types.message.Message.answer_photo:4 -#: aiogram.types.message.Message.answer_poll:4 -#: aiogram.types.message.Message.answer_sticker:4 -#: aiogram.types.message.Message.answer_venue:4 -#: aiogram.types.message.Message.answer_video:4 -#: aiogram.types.message.Message.answer_video_note:4 -#: aiogram.types.message.Message.answer_voice:4 -#: aiogram.types.message.Message.delete:4 -#: aiogram.types.message.Message.delete_reply_markup:4 -#: aiogram.types.message.Message.edit_caption:4 -#: aiogram.types.message.Message.edit_live_location:4 -#: aiogram.types.message.Message.edit_media:4 -#: aiogram.types.message.Message.edit_reply_markup:4 -#: aiogram.types.message.Message.edit_text:4 -#: aiogram.types.message.Message.pin:4 aiogram.types.message.Message.reply:4 -#: aiogram.types.message.Message.reply_animation:4 -#: aiogram.types.message.Message.reply_audio:4 -#: aiogram.types.message.Message.reply_contact:4 -#: aiogram.types.message.Message.reply_dice:4 -#: aiogram.types.message.Message.reply_document:4 -#: aiogram.types.message.Message.reply_game:4 -#: aiogram.types.message.Message.reply_invoice:4 -#: aiogram.types.message.Message.reply_location:4 -#: aiogram.types.message.Message.reply_media_group:4 -#: aiogram.types.message.Message.reply_photo:4 -#: aiogram.types.message.Message.reply_poll:4 -#: aiogram.types.message.Message.reply_sticker:4 -#: aiogram.types.message.Message.reply_venue:4 -#: aiogram.types.message.Message.reply_video:4 -#: aiogram.types.message.Message.reply_video_note:4 -#: aiogram.types.message.Message.reply_voice:4 -#: aiogram.types.message.Message.stop_live_location:4 -#: aiogram.types.message.Message.unpin:4 of -msgid ":code:`chat_id`" -msgstr "" - -#: aiogram.types.message.Message.answer:5 -#: aiogram.types.message.Message.answer_animation:5 -#: aiogram.types.message.Message.answer_audio:5 -#: aiogram.types.message.Message.answer_contact:5 -#: aiogram.types.message.Message.answer_dice:5 -#: aiogram.types.message.Message.answer_document:5 -#: aiogram.types.message.Message.answer_game:5 -#: aiogram.types.message.Message.answer_invoice:5 -#: aiogram.types.message.Message.answer_location:5 -#: aiogram.types.message.Message.answer_media_group:5 -#: aiogram.types.message.Message.answer_photo:5 -#: aiogram.types.message.Message.answer_poll:5 -#: aiogram.types.message.Message.answer_sticker:5 -#: aiogram.types.message.Message.answer_venue:5 -#: aiogram.types.message.Message.answer_video:5 -#: aiogram.types.message.Message.answer_video_note:5 -#: aiogram.types.message.Message.answer_voice:5 -#: aiogram.types.message.Message.reply:5 -#: aiogram.types.message.Message.reply_animation:5 -#: aiogram.types.message.Message.reply_audio:5 -#: aiogram.types.message.Message.reply_contact:5 -#: aiogram.types.message.Message.reply_dice:5 -#: aiogram.types.message.Message.reply_document:5 -#: aiogram.types.message.Message.reply_game:5 -#: aiogram.types.message.Message.reply_invoice:5 -#: aiogram.types.message.Message.reply_location:5 -#: aiogram.types.message.Message.reply_media_group:5 -#: aiogram.types.message.Message.reply_photo:5 -#: aiogram.types.message.Message.reply_poll:5 -#: aiogram.types.message.Message.reply_sticker:5 -#: aiogram.types.message.Message.reply_venue:5 -#: aiogram.types.message.Message.reply_video:5 -#: aiogram.types.message.Message.reply_video_note:5 -#: aiogram.types.message.Message.reply_voice:5 of -msgid ":code:`message_thread_id`" -msgstr "" - -#: aiogram.types.message.Message.reply:6 -#: aiogram.types.message.Message.reply_animation:6 -#: aiogram.types.message.Message.reply_audio:6 -#: aiogram.types.message.Message.reply_contact:6 -#: aiogram.types.message.Message.reply_dice:6 -#: aiogram.types.message.Message.reply_document:6 -#: aiogram.types.message.Message.reply_game:6 -#: aiogram.types.message.Message.reply_invoice:6 -#: aiogram.types.message.Message.reply_location:6 -#: aiogram.types.message.Message.reply_media_group:6 -#: aiogram.types.message.Message.reply_photo:6 -#: aiogram.types.message.Message.reply_poll:6 -#: aiogram.types.message.Message.reply_sticker:6 -#: aiogram.types.message.Message.reply_venue:6 -#: aiogram.types.message.Message.reply_video:6 -#: aiogram.types.message.Message.reply_video_note:6 -#: aiogram.types.message.Message.reply_voice:6 of -msgid ":code:`reply_to_message_id`" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:7 -#: aiogram.types.message.Message.reply_animation:8 of -msgid "" -"Use this method to send animation files (GIF or H.264/MPEG-4 AVC video " -"without sound). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send animation files of up to 50 MB in size, this limit may be changed in" -" the future." -msgstr "" - -#: aiogram.types.message.Message.answer_animation:9 -#: aiogram.types.message.Message.reply_animation:10 of -msgid "Source: https://core.telegram.org/bots/api#sendanimation" -msgstr "" - -#: aiogram.types.message.Message.answer -#: aiogram.types.message.Message.answer_animation -#: aiogram.types.message.Message.answer_audio -#: aiogram.types.message.Message.answer_contact -#: aiogram.types.message.Message.answer_dice -#: aiogram.types.message.Message.answer_document -#: aiogram.types.message.Message.answer_game -#: aiogram.types.message.Message.answer_invoice -#: aiogram.types.message.Message.answer_location -#: aiogram.types.message.Message.answer_media_group -#: aiogram.types.message.Message.answer_photo -#: aiogram.types.message.Message.answer_poll -#: aiogram.types.message.Message.answer_sticker -#: aiogram.types.message.Message.answer_venue -#: aiogram.types.message.Message.answer_video -#: aiogram.types.message.Message.answer_video_note -#: aiogram.types.message.Message.answer_voice -#: aiogram.types.message.Message.copy_to -#: aiogram.types.message.Message.delete_reply_markup -#: aiogram.types.message.Message.edit_caption -#: aiogram.types.message.Message.edit_live_location -#: aiogram.types.message.Message.edit_media -#: aiogram.types.message.Message.edit_reply_markup -#: aiogram.types.message.Message.edit_text -#: aiogram.types.message.Message.forward aiogram.types.message.Message.get_url -#: aiogram.types.message.Message.pin aiogram.types.message.Message.reply -#: aiogram.types.message.Message.reply_animation -#: aiogram.types.message.Message.reply_audio -#: aiogram.types.message.Message.reply_contact -#: aiogram.types.message.Message.reply_dice -#: aiogram.types.message.Message.reply_document -#: aiogram.types.message.Message.reply_game -#: aiogram.types.message.Message.reply_invoice -#: aiogram.types.message.Message.reply_location -#: aiogram.types.message.Message.reply_media_group -#: aiogram.types.message.Message.reply_photo -#: aiogram.types.message.Message.reply_poll -#: aiogram.types.message.Message.reply_sticker -#: aiogram.types.message.Message.reply_venue -#: aiogram.types.message.Message.reply_video -#: aiogram.types.message.Message.reply_video_note -#: aiogram.types.message.Message.reply_voice -#: aiogram.types.message.Message.send_copy -#: aiogram.types.message.Message.stop_live_location of -msgid "Parameters" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:11 -#: aiogram.types.message.Message.reply_animation:12 of -msgid "" -"Animation to send. Pass a file_id as String to send an animation that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an animation from the Internet, or upload a " -"new animation using multipart/form-data. :ref:`More information on " -"Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:12 -#: aiogram.types.message.Message.reply_animation:13 of -msgid "Duration of sent animation in seconds" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:13 -#: aiogram.types.message.Message.reply_animation:14 of -msgid "Animation width" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:14 -#: aiogram.types.message.Message.reply_animation:15 of -msgid "Animation height" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:15 -#: aiogram.types.message.Message.answer_audio:19 -#: aiogram.types.message.Message.answer_document:12 -#: aiogram.types.message.Message.answer_video:15 -#: aiogram.types.message.Message.answer_video_note:14 -#: aiogram.types.message.Message.reply_animation:16 -#: aiogram.types.message.Message.reply_audio:20 -#: aiogram.types.message.Message.reply_document:13 -#: aiogram.types.message.Message.reply_video:16 -#: aiogram.types.message.Message.reply_video_note:15 of -msgid "" -"Thumbnail of the file sent; can be ignored if thumbnail generation for " -"the file is supported server-side. The thumbnail should be in JPEG format" -" and less than 200 kB in size. A thumbnail's width and height should not " -"exceed 320. Ignored if the file is not uploaded using multipart/form-" -"data. Thumbnails can't be reused and can be only uploaded as a new file, " -"so you can pass 'attach://' if the thumbnail was " -"uploaded using multipart/form-data under . :ref:`More " -"information on Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:16 -#: aiogram.types.message.Message.reply_animation:17 of -msgid "" -"Animation caption (may also be used when resending animation by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:17 -#: aiogram.types.message.Message.reply_animation:18 of -msgid "" -"Mode for parsing entities in the animation caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.message.Message.answer_animation:18 -#: aiogram.types.message.Message.answer_audio:15 -#: aiogram.types.message.Message.answer_document:15 -#: aiogram.types.message.Message.answer_photo:14 -#: aiogram.types.message.Message.answer_video:18 -#: aiogram.types.message.Message.answer_voice:14 -#: aiogram.types.message.Message.edit_caption:14 -#: aiogram.types.message.Message.reply_animation:19 -#: aiogram.types.message.Message.reply_audio:16 -#: aiogram.types.message.Message.reply_document:16 -#: aiogram.types.message.Message.reply_photo:15 -#: aiogram.types.message.Message.reply_video:19 -#: aiogram.types.message.Message.reply_voice:15 of -msgid "" -"A JSON-serialized list of special entities that appear in the caption, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:19 -#: aiogram.types.message.Message.reply_animation:20 of -msgid "" -"Pass :code:`True` if the animation needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.message.Message.answer:15 -#: aiogram.types.message.Message.answer_animation:20 -#: aiogram.types.message.Message.answer_audio:20 -#: aiogram.types.message.Message.answer_contact:15 -#: aiogram.types.message.Message.answer_dice:12 -#: aiogram.types.message.Message.answer_document:17 -#: aiogram.types.message.Message.answer_game:12 -#: aiogram.types.message.Message.answer_invoice:32 -#: aiogram.types.message.Message.answer_location:17 -#: aiogram.types.message.Message.answer_photo:16 -#: aiogram.types.message.Message.answer_poll:23 -#: aiogram.types.message.Message.answer_sticker:13 -#: aiogram.types.message.Message.answer_venue:19 -#: aiogram.types.message.Message.answer_video:21 -#: aiogram.types.message.Message.answer_video_note:15 -#: aiogram.types.message.Message.answer_voice:16 -#: aiogram.types.message.Message.copy_to:16 -#: aiogram.types.message.Message.forward:13 -#: aiogram.types.message.Message.reply:16 -#: aiogram.types.message.Message.reply_animation:21 -#: aiogram.types.message.Message.reply_audio:21 -#: aiogram.types.message.Message.reply_contact:16 -#: aiogram.types.message.Message.reply_dice:13 -#: aiogram.types.message.Message.reply_document:18 -#: aiogram.types.message.Message.reply_game:13 -#: aiogram.types.message.Message.reply_invoice:33 -#: aiogram.types.message.Message.reply_location:18 -#: aiogram.types.message.Message.reply_photo:17 -#: aiogram.types.message.Message.reply_poll:24 -#: aiogram.types.message.Message.reply_sticker:14 -#: aiogram.types.message.Message.reply_venue:20 -#: aiogram.types.message.Message.reply_video:22 -#: aiogram.types.message.Message.reply_video_note:16 -#: aiogram.types.message.Message.reply_voice:17 of -msgid "" -"Sends the message `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.message.Message.answer:16 -#: aiogram.types.message.Message.answer_animation:21 -#: aiogram.types.message.Message.answer_audio:21 -#: aiogram.types.message.Message.answer_contact:16 -#: aiogram.types.message.Message.answer_document:18 -#: aiogram.types.message.Message.answer_game:13 -#: aiogram.types.message.Message.answer_invoice:33 -#: aiogram.types.message.Message.answer_location:18 -#: aiogram.types.message.Message.answer_photo:17 -#: aiogram.types.message.Message.answer_poll:24 -#: aiogram.types.message.Message.answer_sticker:14 -#: aiogram.types.message.Message.answer_venue:20 -#: aiogram.types.message.Message.answer_video:22 -#: aiogram.types.message.Message.answer_video_note:16 -#: aiogram.types.message.Message.answer_voice:17 -#: aiogram.types.message.Message.copy_to:17 -#: aiogram.types.message.Message.reply:17 -#: aiogram.types.message.Message.reply_animation:22 -#: aiogram.types.message.Message.reply_audio:22 -#: aiogram.types.message.Message.reply_contact:17 -#: aiogram.types.message.Message.reply_document:19 -#: aiogram.types.message.Message.reply_game:14 -#: aiogram.types.message.Message.reply_invoice:34 -#: aiogram.types.message.Message.reply_location:19 -#: aiogram.types.message.Message.reply_photo:18 -#: aiogram.types.message.Message.reply_poll:25 -#: aiogram.types.message.Message.reply_sticker:15 -#: aiogram.types.message.Message.reply_venue:21 -#: aiogram.types.message.Message.reply_video:23 -#: aiogram.types.message.Message.reply_video_note:17 -#: aiogram.types.message.Message.reply_voice:18 of -msgid "Protects the contents of the sent message from forwarding and saving" -msgstr "" - -#: aiogram.types.message.Message.answer:18 -#: aiogram.types.message.Message.answer_animation:23 -#: aiogram.types.message.Message.answer_audio:23 -#: aiogram.types.message.Message.answer_contact:18 -#: aiogram.types.message.Message.answer_dice:15 -#: aiogram.types.message.Message.answer_document:20 -#: aiogram.types.message.Message.answer_game:15 -#: aiogram.types.message.Message.answer_invoice:35 -#: aiogram.types.message.Message.answer_location:20 -#: aiogram.types.message.Message.answer_media_group:15 -#: aiogram.types.message.Message.answer_photo:19 -#: aiogram.types.message.Message.answer_poll:26 -#: aiogram.types.message.Message.answer_sticker:16 -#: aiogram.types.message.Message.answer_venue:22 -#: aiogram.types.message.Message.answer_video:24 -#: aiogram.types.message.Message.answer_video_note:18 -#: aiogram.types.message.Message.answer_voice:19 -#: aiogram.types.message.Message.copy_to:19 -#: aiogram.types.message.Message.reply:18 -#: aiogram.types.message.Message.reply_animation:23 -#: aiogram.types.message.Message.reply_audio:23 -#: aiogram.types.message.Message.reply_contact:18 -#: aiogram.types.message.Message.reply_dice:15 -#: aiogram.types.message.Message.reply_document:20 -#: aiogram.types.message.Message.reply_game:15 -#: aiogram.types.message.Message.reply_invoice:35 -#: aiogram.types.message.Message.reply_location:20 -#: aiogram.types.message.Message.reply_media_group:15 -#: aiogram.types.message.Message.reply_photo:19 -#: aiogram.types.message.Message.reply_poll:26 -#: aiogram.types.message.Message.reply_sticker:16 -#: aiogram.types.message.Message.reply_venue:22 -#: aiogram.types.message.Message.reply_video:24 -#: aiogram.types.message.Message.reply_video_note:18 -#: aiogram.types.message.Message.reply_voice:19 of -msgid "" -"Pass :code:`True` if the message should be sent even if the specified " -"replied-to message is not found" -msgstr "" - -#: aiogram.types.message.Message.answer:19 -#: aiogram.types.message.Message.answer_animation:24 -#: aiogram.types.message.Message.answer_audio:24 -#: aiogram.types.message.Message.answer_contact:19 -#: aiogram.types.message.Message.answer_dice:16 -#: aiogram.types.message.Message.answer_document:21 -#: aiogram.types.message.Message.answer_location:21 -#: aiogram.types.message.Message.answer_photo:20 -#: aiogram.types.message.Message.answer_poll:27 -#: aiogram.types.message.Message.answer_sticker:17 -#: aiogram.types.message.Message.answer_venue:23 -#: aiogram.types.message.Message.answer_video:25 -#: aiogram.types.message.Message.answer_video_note:19 -#: aiogram.types.message.Message.answer_voice:20 -#: aiogram.types.message.Message.copy_to:20 -#: aiogram.types.message.Message.reply:19 -#: aiogram.types.message.Message.reply_animation:24 -#: aiogram.types.message.Message.reply_audio:24 -#: aiogram.types.message.Message.reply_contact:19 -#: aiogram.types.message.Message.reply_dice:16 -#: aiogram.types.message.Message.reply_document:21 -#: aiogram.types.message.Message.reply_location:21 -#: aiogram.types.message.Message.reply_photo:20 -#: aiogram.types.message.Message.reply_poll:27 -#: aiogram.types.message.Message.reply_sticker:17 -#: aiogram.types.message.Message.reply_venue:23 -#: aiogram.types.message.Message.reply_video:25 -#: aiogram.types.message.Message.reply_video_note:19 -#: aiogram.types.message.Message.reply_voice:20 of -msgid "" -"Additional interface options. A JSON-serialized object for an `inline " -"keyboard `_, " -"`custom reply keyboard " -"`_, instructions to " -"remove reply keyboard or to force a reply from the user." -msgstr "" - -#: aiogram.types.message.Message.answer -#: aiogram.types.message.Message.answer_animation -#: aiogram.types.message.Message.answer_audio -#: aiogram.types.message.Message.answer_contact -#: aiogram.types.message.Message.answer_dice -#: aiogram.types.message.Message.answer_document -#: aiogram.types.message.Message.answer_game -#: aiogram.types.message.Message.answer_invoice -#: aiogram.types.message.Message.answer_location -#: aiogram.types.message.Message.answer_media_group -#: aiogram.types.message.Message.answer_photo -#: aiogram.types.message.Message.answer_poll -#: aiogram.types.message.Message.answer_sticker -#: aiogram.types.message.Message.answer_venue -#: aiogram.types.message.Message.answer_video -#: aiogram.types.message.Message.answer_video_note -#: aiogram.types.message.Message.answer_voice -#: aiogram.types.message.Message.copy_to aiogram.types.message.Message.delete -#: aiogram.types.message.Message.delete_reply_markup -#: aiogram.types.message.Message.edit_caption -#: aiogram.types.message.Message.edit_live_location -#: aiogram.types.message.Message.edit_media -#: aiogram.types.message.Message.edit_reply_markup -#: aiogram.types.message.Message.edit_text -#: aiogram.types.message.Message.forward aiogram.types.message.Message.get_url -#: aiogram.types.message.Message.pin aiogram.types.message.Message.reply -#: aiogram.types.message.Message.reply_animation -#: aiogram.types.message.Message.reply_audio -#: aiogram.types.message.Message.reply_contact -#: aiogram.types.message.Message.reply_dice -#: aiogram.types.message.Message.reply_document -#: aiogram.types.message.Message.reply_game -#: aiogram.types.message.Message.reply_invoice -#: aiogram.types.message.Message.reply_location -#: aiogram.types.message.Message.reply_media_group -#: aiogram.types.message.Message.reply_photo -#: aiogram.types.message.Message.reply_poll -#: aiogram.types.message.Message.reply_sticker -#: aiogram.types.message.Message.reply_venue -#: aiogram.types.message.Message.reply_video -#: aiogram.types.message.Message.reply_video_note -#: aiogram.types.message.Message.reply_voice -#: aiogram.types.message.Message.send_copy -#: aiogram.types.message.Message.stop_live_location -#: aiogram.types.message.Message.unpin of -msgid "Returns" -msgstr "" - -#: aiogram.types.message.Message.answer_animation:25 -#: aiogram.types.message.Message.reply_animation:25 of -msgid "instance of method :class:`aiogram.methods.send_animation.SendAnimation`" -msgstr "" - -#: aiogram.types.message.Message.answer:17 -#: aiogram.types.message.Message.answer_animation:22 -#: aiogram.types.message.Message.answer_audio:22 -#: aiogram.types.message.Message.answer_contact:17 -#: aiogram.types.message.Message.answer_dice:14 -#: aiogram.types.message.Message.answer_document:19 -#: aiogram.types.message.Message.answer_game:14 -#: aiogram.types.message.Message.answer_invoice:34 -#: aiogram.types.message.Message.answer_location:19 -#: aiogram.types.message.Message.answer_photo:18 -#: aiogram.types.message.Message.answer_poll:25 -#: aiogram.types.message.Message.answer_sticker:15 -#: aiogram.types.message.Message.answer_venue:21 -#: aiogram.types.message.Message.answer_video:23 -#: aiogram.types.message.Message.answer_video_note:17 -#: aiogram.types.message.Message.answer_voice:18 -#: aiogram.types.message.Message.copy_to:18 of -msgid "If the message is a reply, ID of the original message" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:1 -#: aiogram.types.message.Message.reply_audio:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_audio.SendAudio` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:7 -#: aiogram.types.message.Message.reply_audio:8 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display them in the music player. Your audio must be in the .MP3 or .M4A " -"format. On success, the sent :class:`aiogram.types.message.Message` is " -"returned. Bots can currently send audio files of up to 50 MB in size, " -"this limit may be changed in the future. For sending voice messages, use " -"the :class:`aiogram.methods.send_voice.SendVoice` method instead." -msgstr "" - -#: aiogram.types.message.Message.answer_audio:10 -#: aiogram.types.message.Message.reply_audio:11 of -msgid "Source: https://core.telegram.org/bots/api#sendaudio" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:12 -#: aiogram.types.message.Message.reply_audio:13 of -msgid "" -"Audio file to send. Pass a file_id as String to send an audio file that " -"exists on the Telegram servers (recommended), pass an HTTP URL as a " -"String for Telegram to get an audio file from the Internet, or upload a " -"new one using multipart/form-data. :ref:`More information on Sending " -"Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:13 -#: aiogram.types.message.Message.reply_audio:14 of -msgid "Audio caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:14 -#: aiogram.types.message.Message.reply_audio:15 of -msgid "" -"Mode for parsing entities in the audio caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.answer_audio:16 -#: aiogram.types.message.Message.reply_audio:17 of -msgid "Duration of the audio in seconds" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:17 -#: aiogram.types.message.Message.reply_audio:18 of -msgid "Performer" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:18 -#: aiogram.types.message.Message.reply_audio:19 of -msgid "Track name" -msgstr "" - -#: aiogram.types.message.Message.answer_audio:25 -#: aiogram.types.message.Message.reply_audio:25 of -msgid "instance of method :class:`aiogram.methods.send_audio.SendAudio`" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:1 -#: aiogram.types.message.Message.reply_contact:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_contact.SendContact` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:7 -#: aiogram.types.message.Message.reply_contact:8 of -msgid "" -"Use this method to send phone contacts. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_contact:9 -#: aiogram.types.message.Message.reply_contact:10 of -msgid "Source: https://core.telegram.org/bots/api#sendcontact" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:11 -#: aiogram.types.message.Message.reply_contact:12 of -msgid "Contact's phone number" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:12 -#: aiogram.types.message.Message.reply_contact:13 of -msgid "Contact's first name" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:13 -#: aiogram.types.message.Message.reply_contact:14 of -msgid "Contact's last name" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:14 -#: aiogram.types.message.Message.reply_contact:15 of -msgid "" -"Additional data about the contact in the form of a `vCard " -"`_, 0-2048 bytes" -msgstr "" - -#: aiogram.types.message.Message.answer_contact:20 -#: aiogram.types.message.Message.reply_contact:20 of -msgid "instance of method :class:`aiogram.methods.send_contact.SendContact`" -msgstr "" - -#: aiogram.types.message.Message.answer_document:1 -#: aiogram.types.message.Message.reply_document:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_document.SendDocument` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_document:7 -#: aiogram.types.message.Message.reply_document:8 of -msgid "" -"Use this method to send general files. On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send files of any type of up to 50 MB in size, this limit may be changed " -"in the future." -msgstr "" - -#: aiogram.types.message.Message.answer_document:9 -#: aiogram.types.message.Message.reply_document:10 of -msgid "Source: https://core.telegram.org/bots/api#senddocument" -msgstr "" - -#: aiogram.types.message.Message.answer_document:11 -#: aiogram.types.message.Message.reply_document:12 of -msgid "" -"File to send. Pass a file_id as String to send a file that exists on the " -"Telegram servers (recommended), pass an HTTP URL as a String for Telegram" -" to get a file from the Internet, or upload a new one using multipart" -"/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_document:13 -#: aiogram.types.message.Message.reply_document:14 of -msgid "" -"Document caption (may also be used when resending documents by " -"*file_id*), 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_document:14 -#: aiogram.types.message.Message.reply_document:15 of -msgid "" -"Mode for parsing entities in the document caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.message.Message.answer_document:16 -#: aiogram.types.message.Message.reply_document:17 of -msgid "" -"Disables automatic server-side content type detection for files uploaded " -"using multipart/form-data" -msgstr "" - -#: aiogram.types.message.Message.answer_document:22 -#: aiogram.types.message.Message.reply_document:22 of -msgid "instance of method :class:`aiogram.methods.send_document.SendDocument`" -msgstr "" - -#: aiogram.types.message.Message.answer_game:1 -#: aiogram.types.message.Message.reply_game:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_game.SendGame` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_game:7 -#: aiogram.types.message.Message.reply_game:8 of -msgid "" -"Use this method to send a game. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_game:9 -#: aiogram.types.message.Message.reply_game:10 of -msgid "Source: https://core.telegram.org/bots/api#sendgame" -msgstr "" - -#: aiogram.types.message.Message.answer_game:11 -#: aiogram.types.message.Message.reply_game:12 of -msgid "" -"Short name of the game, serves as the unique identifier for the game. Set" -" up your games via `@BotFather `_." -msgstr "" - -#: aiogram.types.message.Message.answer_game:16 -#: aiogram.types.message.Message.reply_game:16 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Play game_title' button will be shown. If not empty, the first " -"button must launch the game." -msgstr "" - -#: aiogram.types.message.Message.answer_game:17 -#: aiogram.types.message.Message.reply_game:17 of -msgid "instance of method :class:`aiogram.methods.send_game.SendGame`" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:1 -#: aiogram.types.message.Message.reply_invoice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_invoice.SendInvoice` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:7 -#: aiogram.types.message.Message.reply_invoice:8 of -msgid "" -"Use this method to send invoices. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:9 -#: aiogram.types.message.Message.reply_invoice:10 of -msgid "Source: https://core.telegram.org/bots/api#sendinvoice" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:11 -#: aiogram.types.message.Message.reply_invoice:12 of -msgid "Product name, 1-32 characters" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:12 -#: aiogram.types.message.Message.reply_invoice:13 of -msgid "Product description, 1-255 characters" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:13 -#: aiogram.types.message.Message.reply_invoice:14 of -msgid "" -"Bot-defined invoice payload, 1-128 bytes. This will not be displayed to " -"the user, use for your internal processes." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:14 -#: aiogram.types.message.Message.reply_invoice:15 of -msgid "" -"Payment provider token, obtained via `@BotFather " -"`_" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:15 -#: aiogram.types.message.Message.reply_invoice:16 of -msgid "" -"Three-letter ISO 4217 currency code, see `more on currencies " -"`_" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:16 -#: aiogram.types.message.Message.reply_invoice:17 of -msgid "" -"Price breakdown, a JSON-serialized list of components (e.g. product " -"price, tax, discount, delivery cost, delivery tax, bonus, etc.)" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:17 -#: aiogram.types.message.Message.reply_invoice:18 of -msgid "" -"The maximum accepted amount for tips in the *smallest units* of the " -"currency (integer, **not** float/double). For example, for a maximum tip " -"of :code:`US$ 1.45` pass :code:`max_tip_amount = 145`. See the *exp* " -"parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies). Defaults to 0" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:18 -#: aiogram.types.message.Message.reply_invoice:19 of -msgid "" -"A JSON-serialized 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 " -"*max_tip_amount*." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:19 -#: aiogram.types.message.Message.reply_invoice:20 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:20 -#: aiogram.types.message.Message.reply_invoice:21 of -msgid "" -"JSON-serialized 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." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:21 -#: aiogram.types.message.Message.reply_invoice:22 of -msgid "" -"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." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:22 -#: aiogram.types.message.Message.reply_invoice:23 of -msgid "Photo size in bytes" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:23 -#: aiogram.types.message.Message.reply_invoice:24 of -msgid "Photo width" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:24 -#: aiogram.types.message.Message.reply_invoice:25 of -msgid "Photo height" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:25 -#: aiogram.types.message.Message.reply_invoice:26 of -msgid "" -"Pass :code:`True` if you require the user's full name to complete the " -"order" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:26 -#: aiogram.types.message.Message.reply_invoice:27 of -msgid "" -"Pass :code:`True` if you require the user's phone number to complete the " -"order" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:27 -#: aiogram.types.message.Message.reply_invoice:28 of -msgid "" -"Pass :code:`True` if you require the user's email address to complete the" -" order" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:28 -#: aiogram.types.message.Message.reply_invoice:29 of -msgid "" -"Pass :code:`True` if you require the user's shipping address to complete " -"the order" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:29 -#: aiogram.types.message.Message.reply_invoice:30 of -msgid "Pass :code:`True` if the user's phone number should be sent to provider" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:30 -#: aiogram.types.message.Message.reply_invoice:31 of -msgid "Pass :code:`True` if the user's email address should be sent to provider" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:31 -#: aiogram.types.message.Message.reply_invoice:32 of -msgid "Pass :code:`True` if the final price depends on the shipping method" -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:36 -#: aiogram.types.message.Message.reply_invoice:36 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_. If empty, " -"one 'Pay :code:`total price`' button will be shown. If not empty, the " -"first button must be a Pay button." -msgstr "" - -#: aiogram.types.message.Message.answer_invoice:37 -#: aiogram.types.message.Message.reply_invoice:37 of -msgid "instance of method :class:`aiogram.methods.send_invoice.SendInvoice`" -msgstr "" - -#: aiogram.types.message.Message.answer_location:1 -#: aiogram.types.message.Message.reply_location:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_location.SendLocation` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_location:7 -#: aiogram.types.message.Message.reply_location:8 of -msgid "" -"Use this method to send point on the map. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_location:9 -#: aiogram.types.message.Message.reply_location:10 of -msgid "Source: https://core.telegram.org/bots/api#sendlocation" -msgstr "" - -#: aiogram.types.message.Message.answer_location:11 -#: aiogram.types.message.Message.reply_location:12 of -msgid "Latitude of the location" -msgstr "" - -#: aiogram.types.message.Message.answer_location:12 -#: aiogram.types.message.Message.reply_location:13 of -msgid "Longitude of the location" -msgstr "" - -#: aiogram.types.message.Message.answer_location:13 -#: aiogram.types.message.Message.edit_live_location:14 -#: aiogram.types.message.Message.reply_location:14 of -msgid "The radius of uncertainty for the location, measured in meters; 0-1500" -msgstr "" - -#: aiogram.types.message.Message.answer_location:14 -#: aiogram.types.message.Message.reply_location:15 of -msgid "" -"Period in seconds for which the location will be updated (see `Live " -"Locations `_, should be between" -" 60 and 86400." -msgstr "" - -#: aiogram.types.message.Message.answer_location:15 -#: aiogram.types.message.Message.reply_location:16 of -msgid "" -"For live locations, a direction in which the user is moving, in degrees. " -"Must be between 1 and 360 if specified." -msgstr "" - -#: aiogram.types.message.Message.answer_location:16 -#: aiogram.types.message.Message.reply_location:17 of -msgid "" -"For live locations, a maximum distance for proximity alerts about " -"approaching another chat member, in meters. Must be between 1 and 100000 " -"if specified." -msgstr "" - -#: aiogram.types.message.Message.answer_location:22 -#: aiogram.types.message.Message.reply_location:22 of -msgid "instance of method :class:`aiogram.methods.send_location.SendLocation`" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:1 -#: aiogram.types.message.Message.reply_media_group:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_media_group.SendMediaGroup` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:7 -#: aiogram.types.message.Message.reply_media_group:8 of -msgid "" -"Use this method to send a group of photos, videos, documents or audios as" -" an album. Documents and audio files can be only grouped in an album with" -" messages of the same type. On success, an array of `Messages " -"`_ that were sent is " -"returned." -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:9 -#: aiogram.types.message.Message.reply_media_group:10 of -msgid "Source: https://core.telegram.org/bots/api#sendmediagroup" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:11 -#: aiogram.types.message.Message.reply_media_group:12 of -msgid "" -"A JSON-serialized array describing messages to be sent, must include 2-10" -" items" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:12 -#: aiogram.types.message.Message.reply_media_group:13 of -msgid "" -"Sends messages `silently `_. Users will receive a notification with no sound." -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:13 -#: aiogram.types.message.Message.reply_media_group:14 of -msgid "Protects the contents of the sent messages from forwarding and saving" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:16 -#: aiogram.types.message.Message.reply_media_group:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.send_media_group.SendMediaGroup`" -msgstr "" - -#: aiogram.types.message.Message.answer_media_group:14 of -msgid "If the messages are a reply, ID of the original message" -msgstr "" - -#: aiogram.types.message.Message.answer:1 aiogram.types.message.Message.reply:1 -#: of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_message.SendMessage` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer:7 aiogram.types.message.Message.reply:8 -#: of -msgid "" -"Use this method to send text messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer:9 -#: aiogram.types.message.Message.reply:10 of -msgid "Source: https://core.telegram.org/bots/api#sendmessage" -msgstr "" - -#: aiogram.types.message.Message.answer:11 -#: aiogram.types.message.Message.reply:12 of -msgid "Text of the message to be sent, 1-4096 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer:12 -#: aiogram.types.message.Message.edit_text:13 -#: aiogram.types.message.Message.reply:13 of -msgid "" -"Mode for parsing entities in the message text. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.answer:13 -#: aiogram.types.message.Message.edit_text:14 -#: aiogram.types.message.Message.reply:14 of -msgid "" -"A JSON-serialized list of special entities that appear in message text, " -"which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.message.Message.answer:14 -#: aiogram.types.message.Message.edit_text:15 -#: aiogram.types.message.Message.reply:15 of -msgid "Disables link previews for links in this message" -msgstr "" - -#: aiogram.types.message.Message.answer:20 -#: aiogram.types.message.Message.reply:20 of -msgid "instance of method :class:`aiogram.methods.send_message.SendMessage`" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:1 -#: aiogram.types.message.Message.reply_photo:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_photo.SendPhoto` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:7 -#: aiogram.types.message.Message.reply_photo:8 of -msgid "" -"Use this method to send photos. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_photo:9 -#: aiogram.types.message.Message.reply_photo:10 of -msgid "Source: https://core.telegram.org/bots/api#sendphoto" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:11 -#: aiogram.types.message.Message.reply_photo:12 of -msgid "" -"Photo to send. Pass a file_id as String to send a photo that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a photo from the Internet, or upload a new photo using " -"multipart/form-data. The photo must be at most 10 MB in size. The photo's" -" width and height must not exceed 10000 in total. Width and height ratio " -"must be at most 20. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:12 -#: aiogram.types.message.Message.reply_photo:13 of -msgid "" -"Photo caption (may also be used when resending photos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:13 -#: aiogram.types.message.Message.reply_photo:14 of -msgid "" -"Mode for parsing entities in the photo caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.answer_photo:15 -#: aiogram.types.message.Message.reply_photo:16 of -msgid "" -"Pass :code:`True` if the photo needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.message.Message.answer_photo:21 -#: aiogram.types.message.Message.reply_photo:21 of -msgid "instance of method :class:`aiogram.methods.send_photo.SendPhoto`" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:1 -#: aiogram.types.message.Message.reply_poll:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_poll.SendPoll` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:7 -#: aiogram.types.message.Message.reply_poll:8 of -msgid "" -"Use this method to send a native poll. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_poll:9 -#: aiogram.types.message.Message.reply_poll:10 of -msgid "Source: https://core.telegram.org/bots/api#sendpoll" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:11 -#: aiogram.types.message.Message.reply_poll:12 of -msgid "Poll question, 1-300 characters" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:12 -#: aiogram.types.message.Message.reply_poll:13 of -msgid "" -"A JSON-serialized list of answer options, 2-10 strings 1-100 characters " -"each" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:13 -#: aiogram.types.message.Message.reply_poll:14 of -msgid ":code:`True`, if the poll needs to be anonymous, defaults to :code:`True`" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:14 -#: aiogram.types.message.Message.reply_poll:15 of -msgid "Poll type, 'quiz' or 'regular', defaults to 'regular'" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:15 -#: aiogram.types.message.Message.reply_poll:16 of -msgid "" -":code:`True`, if the poll allows multiple answers, ignored for polls in " -"quiz mode, defaults to :code:`False`" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:16 -#: aiogram.types.message.Message.reply_poll:17 of -msgid "" -"0-based identifier of the correct answer option, required for polls in " -"quiz mode" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:17 -#: aiogram.types.message.Message.reply_poll:18 of -msgid "" -"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" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:18 -#: aiogram.types.message.Message.reply_poll:19 of -msgid "" -"Mode for parsing entities in the explanation. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.answer_poll:19 -#: aiogram.types.message.Message.reply_poll:20 of -msgid "" -"A JSON-serialized list of special entities that appear in the poll " -"explanation, which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.message.Message.answer_poll:20 -#: aiogram.types.message.Message.reply_poll:21 of -msgid "" -"Amount of time in seconds the poll will be active after creation, 5-600. " -"Can't be used together with *close_date*." -msgstr "" - -#: aiogram.types.message.Message.answer_poll:21 -#: aiogram.types.message.Message.reply_poll:22 of -msgid "" -"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 *open_period*." -msgstr "" - -#: aiogram.types.message.Message.answer_poll:22 -#: aiogram.types.message.Message.reply_poll:23 of -msgid "" -"Pass :code:`True` if the poll needs to be immediately closed. This can be" -" useful for poll preview." -msgstr "" - -#: aiogram.types.message.Message.answer_poll:28 -#: aiogram.types.message.Message.reply_poll:28 of -msgid "instance of method :class:`aiogram.methods.send_poll.SendPoll`" -msgstr "" - -#: aiogram.types.message.Message.answer_dice:1 -#: aiogram.types.message.Message.reply_dice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_dice.SendDice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_dice:7 -#: aiogram.types.message.Message.reply_dice:8 of -msgid "" -"Use this method to send an animated emoji that will display a random " -"value. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.message.Message.answer_dice:9 -#: aiogram.types.message.Message.reply_dice:10 of -msgid "Source: https://core.telegram.org/bots/api#senddice" -msgstr "" - -#: aiogram.types.message.Message.answer_dice:11 -#: aiogram.types.message.Message.reply_dice:12 of -msgid "" -"Emoji on which the dice throw animation is based. Currently, must be one " -"of '🎲', '🎯', '🏀', '⚽', '🎳', or '🎰'. Dice can have values 1-6 for '🎲', '🎯'" -" and '🎳', values 1-5 for '🏀' and '⚽', and values 1-64 for '🎰'. Defaults " -"to '🎲'" -msgstr "" - -#: aiogram.types.message.Message.answer_dice:13 -#: aiogram.types.message.Message.reply_dice:14 of -msgid "Protects the contents of the sent message from forwarding" -msgstr "" - -#: aiogram.types.message.Message.answer_dice:17 -#: aiogram.types.message.Message.reply_dice:17 of -msgid "instance of method :class:`aiogram.methods.send_dice.SendDice`" -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:1 -#: aiogram.types.message.Message.reply_sticker:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_sticker.SendSticker` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:7 -#: aiogram.types.message.Message.reply_sticker:8 of -msgid "" -"Use this method to send static .WEBP, `animated " -"`_ .TGS, or `video " -"`_ .WEBM " -"stickers. On success, the sent :class:`aiogram.types.message.Message` is " -"returned." -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:9 -#: aiogram.types.message.Message.reply_sticker:10 of -msgid "Source: https://core.telegram.org/bots/api#sendsticker" -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:11 -#: aiogram.types.message.Message.reply_sticker:12 of -msgid "" -"Sticker to send. Pass a file_id as String to send a file that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a .WEBP sticker from the Internet, or upload a new .WEBP " -"or .TGS sticker using multipart/form-data. :ref:`More information on " -"Sending Files » `. Video stickers can only be sent by a " -"file_id. Animated stickers can't be sent via an HTTP URL." -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:12 -#: aiogram.types.message.Message.reply_sticker:13 of -msgid "Emoji associated with the sticker; only for just uploaded stickers" -msgstr "" - -#: aiogram.types.message.Message.answer_sticker:18 -#: aiogram.types.message.Message.reply_sticker:18 of -msgid "instance of method :class:`aiogram.methods.send_sticker.SendSticker`" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:1 -#: aiogram.types.message.Message.reply_venue:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_venue.SendVenue` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:7 -#: aiogram.types.message.Message.reply_venue:8 of -msgid "" -"Use this method to send information about a venue. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_venue:9 -#: aiogram.types.message.Message.reply_venue:10 of -msgid "Source: https://core.telegram.org/bots/api#sendvenue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:11 -#: aiogram.types.message.Message.reply_venue:12 of -msgid "Latitude of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:12 -#: aiogram.types.message.Message.reply_venue:13 of -msgid "Longitude of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:13 -#: aiogram.types.message.Message.reply_venue:14 of -msgid "Name of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:14 -#: aiogram.types.message.Message.reply_venue:15 of -msgid "Address of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:15 -#: aiogram.types.message.Message.reply_venue:16 of -msgid "Foursquare identifier of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:16 -#: aiogram.types.message.Message.reply_venue:17 of -msgid "" -"Foursquare type of the venue, if known. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:17 -#: aiogram.types.message.Message.reply_venue:18 of -msgid "Google Places identifier of the venue" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:18 -#: aiogram.types.message.Message.reply_venue:19 of -msgid "" -"Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" - -#: aiogram.types.message.Message.answer_venue:24 -#: aiogram.types.message.Message.reply_venue:24 of -msgid "instance of method :class:`aiogram.methods.send_venue.SendVenue`" -msgstr "" - -#: aiogram.types.message.Message.answer_video:1 -#: aiogram.types.message.Message.reply_video:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_video.SendVideo` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_video:7 -#: aiogram.types.message.Message.reply_video:8 of -msgid "" -"Use this method to send video files, Telegram clients support MPEG4 " -"videos (other formats may be sent as " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send video files of up to 50 MB in size, this limit may be changed in the" -" future." -msgstr "" - -#: aiogram.types.message.Message.answer_video:9 -#: aiogram.types.message.Message.reply_video:10 of -msgid "Source: https://core.telegram.org/bots/api#sendvideo" -msgstr "" - -#: aiogram.types.message.Message.answer_video:11 -#: aiogram.types.message.Message.reply_video:12 of -msgid "" -"Video to send. Pass a file_id as String to send a video that exists on " -"the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a video from the Internet, or upload a new video using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_video:12 -#: aiogram.types.message.Message.answer_video_note:12 -#: aiogram.types.message.Message.reply_video:13 -#: aiogram.types.message.Message.reply_video_note:13 of -msgid "Duration of sent video in seconds" -msgstr "" - -#: aiogram.types.message.Message.answer_video:13 -#: aiogram.types.message.Message.reply_video:14 of -msgid "Video width" -msgstr "" - -#: aiogram.types.message.Message.answer_video:14 -#: aiogram.types.message.Message.reply_video:15 of -msgid "Video height" -msgstr "" - -#: aiogram.types.message.Message.answer_video:16 -#: aiogram.types.message.Message.reply_video:17 of -msgid "" -"Video caption (may also be used when resending videos by *file_id*), " -"0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_video:17 -#: aiogram.types.message.Message.reply_video:18 of -msgid "" -"Mode for parsing entities in the video caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.answer_video:19 -#: aiogram.types.message.Message.reply_video:20 of -msgid "" -"Pass :code:`True` if the video needs to be covered with a spoiler " -"animation" -msgstr "" - -#: aiogram.types.message.Message.answer_video:20 -#: aiogram.types.message.Message.reply_video:21 of -msgid "Pass :code:`True` if the uploaded video is suitable for streaming" -msgstr "" - -#: aiogram.types.message.Message.answer_video:26 -#: aiogram.types.message.Message.reply_video:26 of -msgid "instance of method :class:`aiogram.methods.send_video.SendVideo`" -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:1 -#: aiogram.types.message.Message.reply_video_note:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.send_video_note.SendVideoNote` will automatically" -" fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:7 -#: aiogram.types.message.Message.reply_video_note:8 of -msgid "" -"As of `v.4.0 `_, " -"Telegram clients support rounded square MPEG4 videos of up to 1 minute " -"long. Use this method to send video messages. On success, the sent " -":class:`aiogram.types.message.Message` is returned." -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:9 -#: aiogram.types.message.Message.reply_video_note:10 of -msgid "Source: https://core.telegram.org/bots/api#sendvideonote" -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:11 -#: aiogram.types.message.Message.reply_video_note:12 of -msgid "" -"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. :ref:`More information on Sending Files » `. Sending video notes by a URL is currently unsupported" -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:13 -#: aiogram.types.message.Message.reply_video_note:14 of -msgid "Video width and height, i.e. diameter of the video message" -msgstr "" - -#: aiogram.types.message.Message.answer_video_note:20 -#: aiogram.types.message.Message.reply_video_note:20 of -msgid "instance of method :class:`aiogram.methods.send_video_note.SendVideoNote`" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:1 -#: aiogram.types.message.Message.reply_voice:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.send_voice.SendVoice` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:7 -#: aiogram.types.message.Message.reply_voice:8 of -msgid "" -"Use this method to send audio files, if you want Telegram clients to " -"display the file as a playable voice message. For this to work, your " -"audio must be in an .OGG file encoded with OPUS (other formats may be " -"sent as :class:`aiogram.types.audio.Audio` or " -":class:`aiogram.types.document.Document`). On success, the sent " -":class:`aiogram.types.message.Message` is returned. Bots can currently " -"send voice messages of up to 50 MB in size, this limit may be changed in " -"the future." -msgstr "" - -#: aiogram.types.message.Message.answer_voice:9 -#: aiogram.types.message.Message.reply_voice:10 of -msgid "Source: https://core.telegram.org/bots/api#sendvoice" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:11 -#: aiogram.types.message.Message.reply_voice:12 of -msgid "" -"Audio file to send. Pass a file_id as String to send a file that exists " -"on the Telegram servers (recommended), pass an HTTP URL as a String for " -"Telegram to get a file from the Internet, or upload a new one using " -"multipart/form-data. :ref:`More information on Sending Files » `" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:12 -#: aiogram.types.message.Message.reply_voice:13 of -msgid "Voice message caption, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:13 -#: aiogram.types.message.Message.reply_voice:14 of -msgid "" -"Mode for parsing entities in the voice message caption. See `formatting " -"options `_ for " -"more details." -msgstr "" - -#: aiogram.types.message.Message.answer_voice:15 -#: aiogram.types.message.Message.reply_voice:16 of -msgid "Duration of the voice message in seconds" -msgstr "" - -#: aiogram.types.message.Message.answer_voice:21 -#: aiogram.types.message.Message.reply_voice:21 of -msgid "instance of method :class:`aiogram.methods.send_voice.SendVoice`" -msgstr "" - -#: aiogram.types.message.Message.send_copy:1 of -msgid "Send copy of a message." -msgstr "" - -#: aiogram.types.message.Message.send_copy:3 of -msgid "" -"Is similar to :meth:`aiogram.client.bot.Bot.copy_message` but returning " -"the sent message instead of :class:`aiogram.types.message_id.MessageId`" -msgstr "" - -#: aiogram.types.message.Message.send_copy:8 of -msgid "" -"This method doesn't use the API method named `copyMessage` and " -"historically implemented before the similar method is added to API" -msgstr "" - -#: aiogram.types.message.Message.copy_to:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.copy_message.CopyMessage` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.copy_to:4 -#: aiogram.types.message.Message.forward:4 of -msgid ":code:`from_chat_id`" -msgstr "" - -#: aiogram.types.message.Message.copy_to:5 -#: aiogram.types.message.Message.delete:5 -#: aiogram.types.message.Message.delete_reply_markup:5 -#: aiogram.types.message.Message.edit_caption:5 -#: aiogram.types.message.Message.edit_live_location:5 -#: aiogram.types.message.Message.edit_media:5 -#: aiogram.types.message.Message.edit_reply_markup:5 -#: aiogram.types.message.Message.edit_text:5 -#: aiogram.types.message.Message.forward:5 aiogram.types.message.Message.pin:5 -#: aiogram.types.message.Message.stop_live_location:5 -#: aiogram.types.message.Message.unpin:5 of -msgid ":code:`message_id`" -msgstr "" - -#: aiogram.types.message.Message.copy_to:7 of -msgid "" -"Use this method to copy messages of any kind. Service messages and " -"invoice messages can't be copied. A quiz " -":class:`aiogram.methods.poll.Poll` can be copied only if the value of the" -" field *correct_option_id* is known to the bot. The method is analogous " -"to the method :class:`aiogram.methods.forward_message.ForwardMessage`, " -"but the copied message doesn't have a link to the original message. " -"Returns the :class:`aiogram.types.message_id.MessageId` of the sent " -"message on success." -msgstr "" - -#: aiogram.types.message.Message.copy_to:9 of -msgid "Source: https://core.telegram.org/bots/api#copymessage" -msgstr "" - -#: aiogram.types.message.Message.copy_to:11 -#: aiogram.types.message.Message.forward:11 of -msgid "" -"Unique identifier for the target chat or username of the target channel " -"(in the format :code:`@channelusername`)" -msgstr "" - -#: aiogram.types.message.Message.copy_to:12 -#: aiogram.types.message.Message.forward:12 of -msgid "" -"Unique identifier for the target message thread (topic) of the forum; for" -" forum supergroups only" -msgstr "" - -#: aiogram.types.message.Message.copy_to:13 of -msgid "" -"New caption for media, 0-1024 characters after entities parsing. If not " -"specified, the original caption is kept" -msgstr "" - -#: aiogram.types.message.Message.copy_to:14 of -msgid "" -"Mode for parsing entities in the new caption. See `formatting options " -"`_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.copy_to:15 of -msgid "" -"A JSON-serialized list of special entities that appear in the new " -"caption, which can be specified instead of *parse_mode*" -msgstr "" - -#: aiogram.types.message.Message.copy_to:21 of -msgid "instance of method :class:`aiogram.methods.copy_message.CopyMessage`" -msgstr "" - -#: aiogram.types.message.Message.edit_text:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_message_text.EditMessageText` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.edit_text:7 of -msgid "" -"Use this method to edit text and `game " -"`_ messages. On success, if the" -" edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.edit_text:9 of -msgid "Source: https://core.telegram.org/bots/api#editmessagetext" -msgstr "" - -#: aiogram.types.message.Message.edit_text:11 of -msgid "New text of the message, 1-4096 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:12 -#: aiogram.types.message.Message.edit_caption:11 -#: aiogram.types.message.Message.edit_live_location:13 -#: aiogram.types.message.Message.edit_media:12 -#: aiogram.types.message.Message.edit_reply_markup:11 -#: aiogram.types.message.Message.edit_text:12 -#: aiogram.types.message.Message.stop_live_location:11 of -msgid "" -"Required if *chat_id* and *message_id* are not specified. Identifier of " -"the inline message" -msgstr "" - -#: aiogram.types.message.Message.edit_caption:15 -#: aiogram.types.message.Message.edit_reply_markup:12 -#: aiogram.types.message.Message.edit_text:16 of -msgid "" -"A JSON-serialized object for an `inline keyboard " -"`_." -msgstr "" - -#: aiogram.types.message.Message.edit_text:17 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_message_text.EditMessageText`" -msgstr "" - -#: aiogram.types.message.Message.forward:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.forward_message.ForwardMessage` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.forward:7 of -msgid "" -"Use this method to forward messages of any kind. Service messages can't " -"be forwarded. On success, the sent :class:`aiogram.types.message.Message`" -" is returned." -msgstr "" - -#: aiogram.types.message.Message.forward:9 of -msgid "Source: https://core.telegram.org/bots/api#forwardmessage" -msgstr "" - -#: aiogram.types.message.Message.forward:14 of -msgid "Protects the contents of the forwarded message from forwarding and saving" -msgstr "" - -#: aiogram.types.message.Message.forward:15 of -msgid "instance of method :class:`aiogram.methods.forward_message.ForwardMessage`" -msgstr "" - -#: aiogram.types.message.Message.edit_media:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_message_media.EditMessageMedia` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.edit_media:7 of -msgid "" -"Use this method to edit animation, audio, document, photo, or video " -"messages. If a message is part of a message album, then it can be edited " -"only to an audio for audio albums, only to a document for document albums" -" and to a photo or a video otherwise. When an inline message is edited, a" -" new file can't be uploaded; use a previously uploaded file via its " -"file_id or specify a URL. On success, if the edited message is not an " -"inline message, the edited :class:`aiogram.types.message.Message` is " -"returned, otherwise :code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.edit_media:9 of -msgid "Source: https://core.telegram.org/bots/api#editmessagemedia" -msgstr "" - -#: aiogram.types.message.Message.edit_media:11 of -msgid "A JSON-serialized object for a new media content of the message" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:17 -#: aiogram.types.message.Message.edit_media:13 -#: aiogram.types.message.Message.stop_live_location:12 of -msgid "" -"A JSON-serialized object for a new `inline keyboard " -"`_." -msgstr "" - -#: aiogram.types.message.Message.edit_media:14 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_message_media.EditMessageMedia`" -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:1 -#: aiogram.types.message.Message.edit_reply_markup:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:8 -#: aiogram.types.message.Message.edit_reply_markup:7 of -msgid "" -"Use this method to edit only the reply markup of messages. On success, if" -" the edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:10 -#: aiogram.types.message.Message.edit_reply_markup:9 of -msgid "Source: https://core.telegram.org/bots/api#editmessagereplymarkup" -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:13 -#: aiogram.types.message.Message.edit_reply_markup:13 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_message_reply_markup.EditMessageReplyMarkup`" -msgstr "" - -#: aiogram.types.message.Message.delete_reply_markup:6 of -msgid ":code:`reply_markup`" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_message_live_location.EditMessageLiveLocation`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:7 of -msgid "" -"Use this method to edit live location messages. A location can be edited " -"until its *live_period* expires or editing is explicitly disabled by a " -"call to " -":class:`aiogram.methods.stop_message_live_location.StopMessageLiveLocation`." -" On success, if the edited message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:9 of -msgid "Source: https://core.telegram.org/bots/api#editmessagelivelocation" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:11 of -msgid "Latitude of new location" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:12 of -msgid "Longitude of new location" -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:15 of -msgid "" -"Direction in which the user is moving, in degrees. Must be between 1 and " -"360 if specified." -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:16 of -msgid "" -"The maximum distance for proximity alerts about approaching another chat " -"member, in meters. Must be between 1 and 100000 if specified." -msgstr "" - -#: aiogram.types.message.Message.edit_live_location:18 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_message_live_location.EditMessageLiveLocation`" -msgstr "" - -#: aiogram.types.message.Message.stop_live_location:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.stop_message_live_location.StopMessageLiveLocation`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.stop_live_location:7 of -msgid "" -"Use this method to stop updating a live location message before " -"*live_period* expires. On success, if the message is not an inline " -"message, the edited :class:`aiogram.types.message.Message` is returned, " -"otherwise :code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.stop_live_location:9 of -msgid "Source: https://core.telegram.org/bots/api#stopmessagelivelocation" -msgstr "" - -#: aiogram.types.message.Message.stop_live_location:13 of -msgid "" -"instance of method " -":class:`aiogram.methods.stop_message_live_location.StopMessageLiveLocation`" -msgstr "" - -#: aiogram.types.message.Message.edit_caption:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.edit_message_caption.EditMessageCaption` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.edit_caption:7 of -msgid "" -"Use this method to edit captions of messages. On success, if the edited " -"message is not an inline message, the edited " -":class:`aiogram.types.message.Message` is returned, otherwise " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.message.Message.edit_caption:9 of -msgid "Source: https://core.telegram.org/bots/api#editmessagecaption" -msgstr "" - -#: aiogram.types.message.Message.edit_caption:12 of -msgid "New caption of the message, 0-1024 characters after entities parsing" -msgstr "" - -#: aiogram.types.message.Message.edit_caption:13 of -msgid "" -"Mode for parsing entities in the message caption. See `formatting options" -" `_ for more " -"details." -msgstr "" - -#: aiogram.types.message.Message.edit_caption:16 of -msgid "" -"instance of method " -":class:`aiogram.methods.edit_message_caption.EditMessageCaption`" -msgstr "" - -#: aiogram.types.message.Message.delete:1 of -msgid "" -"Shortcut for method :class:`aiogram.methods.delete_message.DeleteMessage`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.delete:7 of -msgid "" -"Use this method to delete a message, including service messages, with the" -" following limitations:" -msgstr "" - -#: aiogram.types.message.Message.delete:9 of -msgid "A message can only be deleted if it was sent less than 48 hours ago." -msgstr "" - -#: aiogram.types.message.Message.delete:11 of -msgid "" -"Service messages about a supergroup, channel, or forum topic creation " -"can't be deleted." -msgstr "" - -#: aiogram.types.message.Message.delete:13 of -msgid "" -"A dice message in a private chat can only be deleted if it was sent more " -"than 24 hours ago." -msgstr "" - -#: aiogram.types.message.Message.delete:15 of -msgid "" -"Bots can delete outgoing messages in private chats, groups, and " -"supergroups." -msgstr "" - -#: aiogram.types.message.Message.delete:17 of -msgid "Bots can delete incoming messages in private chats." -msgstr "" - -#: aiogram.types.message.Message.delete:19 of -msgid "" -"Bots granted *can_post_messages* permissions can delete outgoing messages" -" in channels." -msgstr "" - -#: aiogram.types.message.Message.delete:21 of -msgid "" -"If the bot is an administrator of a group, it can delete any message " -"there." -msgstr "" - -#: aiogram.types.message.Message.delete:23 of -msgid "" -"If the bot has *can_delete_messages* permission in a supergroup or a " -"channel, it can delete any message there." -msgstr "" - -#: aiogram.types.message.Message.delete:25 of -msgid "Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.message.Message.delete:27 of -msgid "Source: https://core.telegram.org/bots/api#deletemessage" -msgstr "" - -#: aiogram.types.message.Message.delete:29 of -msgid "instance of method :class:`aiogram.methods.delete_message.DeleteMessage`" -msgstr "" - -#: aiogram.types.message.Message.pin:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.pin_chat_message.PinChatMessage` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.pin:7 of -msgid "" -"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 and must have the 'can_pin_messages' " -"administrator right in a supergroup or 'can_edit_messages' administrator " -"right in a channel. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.message.Message.pin:9 of -msgid "Source: https://core.telegram.org/bots/api#pinchatmessage" -msgstr "" - -#: aiogram.types.message.Message.pin:11 of -msgid "" -"Pass :code:`True` if it is not necessary to send a notification to all " -"chat members about the new pinned message. Notifications are always " -"disabled in channels and private chats." -msgstr "" - -#: aiogram.types.message.Message.pin:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.pin_chat_message.PinChatMessage`" -msgstr "" - -#: aiogram.types.message.Message.unpin:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.unpin_chat_message.UnpinChatMessage` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.message.Message.unpin:7 of -msgid "" -"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 and must have the " -"'can_pin_messages' administrator right in a supergroup or " -"'can_edit_messages' administrator right in a channel. Returns " -":code:`True` on success." -msgstr "" - -#: aiogram.types.message.Message.unpin:9 of -msgid "Source: https://core.telegram.org/bots/api#unpinchatmessage" -msgstr "" - -#: aiogram.types.message.Message.unpin:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.unpin_chat_message.UnpinChatMessage`" -msgstr "" - -#: aiogram.types.message.Message.get_url:1 of -msgid "" -"Returns message URL. Cannot be used in private (one-to-one) chats. If " -"chat has a username, returns URL like https://t.me/username/message_id " -"Otherwise (or if {force_private} flag is set), returns " -"https://t.me/c/shifted_chat_id/message_id" -msgstr "" - -#: aiogram.types.message.Message.get_url:5 of -msgid "if set, a private URL is returned even for a public chat" -msgstr "" - -#: aiogram.types.message.Message.get_url:6 of -msgid "string with full message URL" -msgstr "" - -#~ msgid "Reply with animation" -#~ msgstr "" - -#~ msgid "Answer with animation" -#~ msgstr "" - -#~ msgid "Reply with audio" -#~ msgstr "" - -#~ msgid "Answer with audio" -#~ msgstr "" - -#~ msgid "Reply with contact" -#~ msgstr "" - -#~ msgid "Answer with contact" -#~ msgstr "" - -#~ msgid "Reply with document" -#~ msgstr "" - -#~ msgid "Answer with document" -#~ msgstr "" - -#~ msgid "Reply with game" -#~ msgstr "" - -#~ msgid "Answer with game" -#~ msgstr "" - -#~ msgid "Reply with invoice" -#~ msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for an " -#~ "`inline keyboard `_. If empty, one 'Pay " -#~ ":code:`total price`' button will be " -#~ "shown. If not empty, the first " -#~ "button must be a Pay button." -#~ msgstr "" - -#~ msgid "On success, the sent Message is returned." -#~ msgstr "" - -#~ msgid "Answer with invoice" -#~ msgstr "" - -#~ msgid "Reply with location" -#~ msgstr "" - -#~ msgid "Answer with location" -#~ msgstr "" - -#~ msgid "Reply with media group" -#~ msgstr "" - -#~ msgid "Answer with media group" -#~ msgstr "" - -#~ msgid "Reply with text message" -#~ msgstr "" - -#~ msgid "Answer with text message" -#~ msgstr "" - -#~ msgid "Reply with photo" -#~ msgstr "" - -#~ msgid "Answer with photo" -#~ msgstr "" - -#~ msgid "Reply with poll" -#~ msgstr "" - -#~ msgid "Answer with poll" -#~ msgstr "" - -#~ msgid ":param explanation:" -#~ msgstr "" - -#~ msgid "param explanation" -#~ msgstr "" - -#~ msgid "Reply with dice" -#~ msgstr "" - -#~ msgid "Answer with dice" -#~ msgstr "" - -#~ msgid "Reply with sticker" -#~ msgstr "" - -#~ msgid "Answer with sticker" -#~ msgstr "" - -#~ msgid "Reply with venue" -#~ msgstr "" - -#~ msgid "Answer with venue" -#~ msgstr "" - -#~ msgid "Reply with video" -#~ msgstr "" - -#~ msgid "Answer with video" -#~ msgstr "" - -#~ msgid "Reply wit video note" -#~ msgstr "" - -#~ msgid "Answer wit video note" -#~ msgstr "" - -#~ msgid "Reply with voice" -#~ msgstr "" - -#~ msgid "Answer with voice" -#~ msgstr "" - -#~ msgid "Copy message" -#~ msgstr "" - -#~ msgid "" -#~ "Sticker to send. Pass a file_id as" -#~ " String to send a file that " -#~ "exists on the Telegram servers " -#~ "(recommended), pass an HTTP URL as " -#~ "a String for Telegram to get a " -#~ ".WEBP file from the Internet, or " -#~ "upload a new one using multipart" -#~ "/form-data. :ref:`More information on " -#~ "Sending Files » `" -#~ msgstr "" - -#~ msgid "Send copy of message." -#~ msgstr "" - -#~ msgid "" -#~ "This method don't use the API " -#~ "method named `copyMessage` and historically" -#~ " implemented before the similar method " -#~ "is added to API" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/message_auto_delete_timer_changed.po b/docs/locale/en/LC_MESSAGES/api/types/message_auto_delete_timer_changed.po deleted file mode 100644 index a4094144..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/message_auto_delete_timer_changed.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/message_auto_delete_timer_changed.rst:3 -msgid "MessageAutoDeleteTimerChanged" -msgstr "" - -#: aiogram.types.message_auto_delete_timer_changed.MessageAutoDeleteTimerChanged:1 -#: of -msgid "" -"This object represents a service message about a change in auto-delete " -"timer settings." -msgstr "" - -#: aiogram.types.message_auto_delete_timer_changed.MessageAutoDeleteTimerChanged:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#messageautodeletetimerchanged" -msgstr "" - -#: ../../docstring -#: aiogram.types.message_auto_delete_timer_changed.MessageAutoDeleteTimerChanged.message_auto_delete_time:1 -#: of -msgid "New auto-delete time for messages in the chat; in seconds" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/message_entity.po b/docs/locale/en/LC_MESSAGES/api/types/message_entity.po deleted file mode 100644 index 806b3cd0..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/message_entity.po +++ /dev/null @@ -1,87 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/message_entity.rst:3 -msgid "MessageEntity" -msgstr "" - -#: aiogram.types.message_entity.MessageEntity:1 of -msgid "" -"This object represents one special entity in a text message. For example," -" hashtags, usernames, URLs, etc." -msgstr "" - -#: aiogram.types.message_entity.MessageEntity:3 of -msgid "Source: https://core.telegram.org/bots/api#messageentity" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.type:1 of -msgid "" -"Type of the entity. Currently, can be 'mention' (:code:`@username`), " -"'hashtag' (:code:`#hashtag`), 'cashtag' (:code:`$USD`), 'bot_command' " -"(:code:`/start@jobs_bot`), 'url' (:code:`https://telegram.org`), 'email' " -"(:code:`do-not-reply@telegram.org`), 'phone_number' " -"(:code:`+1-212-555-0123`), 'bold' (**bold text**), 'italic' (*italic " -"text*), 'underline' (underlined text), 'strikethrough' (strikethrough " -"text), 'spoiler' (spoiler message), 'code' (monowidth string), 'pre' " -"(monowidth block), 'text_link' (for clickable text URLs), 'text_mention' " -"(for users `without usernames `_), 'custom_emoji' (for inline custom emoji stickers)" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.offset:1 of -msgid "" -"Offset in `UTF-16 code units `_ to the start of the entity" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.length:1 of -msgid "" -"Length of the entity in `UTF-16 code units " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.url:1 of -msgid "" -"*Optional*. For 'text_link' only, URL that will be opened after user taps" -" on the text" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.user:1 of -msgid "*Optional*. For 'text_mention' only, the mentioned user" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.language:1 of -msgid "*Optional*. For 'pre' only, the programming language of the entity text" -msgstr "" - -#: ../../docstring aiogram.types.message_entity.MessageEntity.custom_emoji_id:1 -#: of -msgid "" -"*Optional*. For 'custom_emoji' only, unique identifier of the custom " -"emoji. Use " -":class:`aiogram.methods.get_custom_emoji_stickers.GetCustomEmojiStickers`" -" to get full information about the sticker" -msgstr "" - -#~ msgid "Offset in UTF-16 code units to the start of the entity" -#~ msgstr "" - -#~ msgid "Length of the entity in UTF-16 code units" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/message_id.po b/docs/locale/en/LC_MESSAGES/api/types/message_id.po deleted file mode 100644 index fd2da80c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/message_id.po +++ /dev/null @@ -1,34 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/message_id.rst:3 -msgid "MessageId" -msgstr "" - -#: aiogram.types.message_id.MessageId:1 of -msgid "This object represents a unique message identifier." -msgstr "" - -#: aiogram.types.message_id.MessageId:3 of -msgid "Source: https://core.telegram.org/bots/api#messageid" -msgstr "" - -#: ../../docstring aiogram.types.message_id.MessageId.message_id:1 of -msgid "Unique message identifier" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/order_info.po b/docs/locale/en/LC_MESSAGES/api/types/order_info.po deleted file mode 100644 index bbf98947..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/order_info.po +++ /dev/null @@ -1,46 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/order_info.rst:3 -msgid "OrderInfo" -msgstr "" - -#: aiogram.types.order_info.OrderInfo:1 of -msgid "This object represents information about an order." -msgstr "" - -#: aiogram.types.order_info.OrderInfo:3 of -msgid "Source: https://core.telegram.org/bots/api#orderinfo" -msgstr "" - -#: ../../docstring aiogram.types.order_info.OrderInfo.name:1 of -msgid "*Optional*. User name" -msgstr "" - -#: ../../docstring aiogram.types.order_info.OrderInfo.phone_number:1 of -msgid "*Optional*. User's phone number" -msgstr "" - -#: ../../docstring aiogram.types.order_info.OrderInfo.email:1 of -msgid "*Optional*. User email" -msgstr "" - -#: ../../docstring aiogram.types.order_info.OrderInfo.shipping_address:1 of -msgid "*Optional*. User shipping address" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_data.po b/docs/locale/en/LC_MESSAGES/api/types/passport_data.po deleted file mode 100644 index 528f756b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_data.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_data.rst:3 -msgid "PassportData" -msgstr "" - -#: aiogram.types.passport_data.PassportData:1 of -msgid "Describes Telegram Passport data shared with the bot by the user." -msgstr "" - -#: aiogram.types.passport_data.PassportData:3 of -msgid "Source: https://core.telegram.org/bots/api#passportdata" -msgstr "" - -#: ../../docstring aiogram.types.passport_data.PassportData.data:1 of -msgid "" -"Array with information about documents and other Telegram Passport " -"elements that was shared with the bot" -msgstr "" - -#: ../../docstring aiogram.types.passport_data.PassportData.credentials:1 of -msgid "Encrypted credentials required to decrypt the data" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error.po deleted file mode 100644 index 53acdac9..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error.po +++ /dev/null @@ -1,68 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error.rst:3 -msgid "PassportElementError" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:1 of -msgid "" -"This object represents an error in the Telegram Passport element which " -"was submitted that should be resolved by the user. It should be one of:" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:3 of -msgid ":class:`aiogram.types.passport_element_error_data_field.PassportElementErrorDataField`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:4 of -msgid ":class:`aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:5 of -msgid ":class:`aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:6 of -msgid ":class:`aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:7 of -msgid ":class:`aiogram.types.passport_element_error_file.PassportElementErrorFile`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:8 of -msgid ":class:`aiogram.types.passport_element_error_files.PassportElementErrorFiles`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:9 of -msgid ":class:`aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:10 of -msgid ":class:`aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:11 of -msgid ":class:`aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified`" -msgstr "" - -#: aiogram.types.passport_element_error.PassportElementError:13 of -msgid "Source: https://core.telegram.org/bots/api#passportelementerror" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_data_field.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_data_field.po deleted file mode 100644 index e3f9454c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_data_field.po +++ /dev/null @@ -1,67 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_data_field.rst:3 -msgid "PassportElementErrorDataField" -msgstr "" - -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField:1 -#: of -msgid "" -"Represents an issue in one of the data fields that was provided by the " -"user. The error is considered resolved when the field's value changes." -msgstr "" - -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrordatafield" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField.source:1 -#: of -msgid "Error source, must be *data*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField.type:1 -#: of -msgid "" -"The section of the user's Telegram Passport which has the error, one of " -"'personal_details', 'passport', 'driver_license', 'identity_card', " -"'internal_passport', 'address'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField.field_name:1 -#: of -msgid "Name of the data field which has the error" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField.data_hash:1 -#: of -msgid "Base64-encoded data hash" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_data_field.PassportElementErrorDataField.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_file.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_file.po deleted file mode 100644 index 96079e3e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_file.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_file.rst:3 -msgid "PassportElementErrorFile" -msgstr "" - -#: aiogram.types.passport_element_error_file.PassportElementErrorFile:1 of -msgid "" -"Represents an issue with a document scan. The error is considered " -"resolved when the file with the document scan changes." -msgstr "" - -#: aiogram.types.passport_element_error_file.PassportElementErrorFile:3 of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorfile" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_file.PassportElementErrorFile.source:1 -#: of -msgid "Error source, must be *file*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_file.PassportElementErrorFile.type:1 of -msgid "" -"The section of the user's Telegram Passport which has the issue, one of " -"'utility_bill', 'bank_statement', 'rental_agreement', " -"'passport_registration', 'temporary_registration'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_file.PassportElementErrorFile.file_hash:1 -#: of -msgid "Base64-encoded file hash" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_file.PassportElementErrorFile.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_files.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_files.po deleted file mode 100644 index 259754a3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_files.po +++ /dev/null @@ -1,59 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_files.rst:3 -msgid "PassportElementErrorFiles" -msgstr "" - -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles:1 of -msgid "" -"Represents an issue with a list of scans. The error is considered " -"resolved when the list of files containing the scans changes." -msgstr "" - -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles:3 of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorfiles" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles.source:1 -#: of -msgid "Error source, must be *files*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles.type:1 -#: of -msgid "" -"The section of the user's Telegram Passport which has the issue, one of " -"'utility_bill', 'bank_statement', 'rental_agreement', " -"'passport_registration', 'temporary_registration'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles.file_hashes:1 -#: of -msgid "List of base64-encoded file hashes" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_files.PassportElementErrorFiles.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_front_side.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_front_side.po deleted file mode 100644 index c8223d9e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_front_side.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_front_side.rst:3 -msgid "PassportElementErrorFrontSide" -msgstr "" - -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide:1 -#: of -msgid "" -"Represents an issue with the front side of a document. The error is " -"considered resolved when the file with the front side of the document " -"changes." -msgstr "" - -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorfrontside" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide.source:1 -#: of -msgid "Error source, must be *front_side*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide.type:1 -#: of -msgid "" -"The section of the user's Telegram Passport which has the issue, one of " -"'passport', 'driver_license', 'identity_card', 'internal_passport'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide.file_hash:1 -#: of -msgid "Base64-encoded hash of the file with the front side of the document" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_front_side.PassportElementErrorFrontSide.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_reverse_side.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_reverse_side.po deleted file mode 100644 index 301e3b56..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_reverse_side.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_reverse_side.rst:3 -msgid "PassportElementErrorReverseSide" -msgstr "" - -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide:1 -#: of -msgid "" -"Represents an issue with the reverse side of a document. The error is " -"considered resolved when the file with reverse side of the document " -"changes." -msgstr "" - -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorreverseside" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide.source:1 -#: of -msgid "Error source, must be *reverse_side*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide.type:1 -#: of -msgid "" -"The section of the user's Telegram Passport which has the issue, one of " -"'driver_license', 'identity_card'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide.file_hash:1 -#: of -msgid "Base64-encoded hash of the file with the reverse side of the document" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_reverse_side.PassportElementErrorReverseSide.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_selfie.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_selfie.po deleted file mode 100644 index 9e37ef2a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_selfie.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_selfie.rst:3 -msgid "PassportElementErrorSelfie" -msgstr "" - -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie:1 of -msgid "" -"Represents an issue with the selfie with a document. The error is " -"considered resolved when the file with the selfie changes." -msgstr "" - -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie:3 of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorselfie" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie.source:1 -#: of -msgid "Error source, must be *selfie*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie.type:1 -#: of -msgid "" -"The section of the user's Telegram Passport which has the issue, one of " -"'passport', 'driver_license', 'identity_card', 'internal_passport'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie.file_hash:1 -#: of -msgid "Base64-encoded hash of the file with the selfie" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_selfie.PassportElementErrorSelfie.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_file.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_file.po deleted file mode 100644 index 9bf84e16..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_file.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_translation_file.rst:3 -msgid "PassportElementErrorTranslationFile" -msgstr "" - -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile:1 -#: of -msgid "" -"Represents an issue with one of the files that constitute the translation" -" of a document. The error is considered resolved when the file changes." -msgstr "" - -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#passportelementerrortranslationfile" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile.source:1 -#: of -msgid "Error source, must be *translation_file*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile.type:1 -#: of -msgid "" -"Type of element of the user's Telegram Passport which has the issue, one " -"of 'passport', 'driver_license', 'identity_card', 'internal_passport', " -"'utility_bill', 'bank_statement', 'rental_agreement', " -"'passport_registration', 'temporary_registration'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile.file_hash:1 -#: of -msgid "Base64-encoded file hash" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_file.PassportElementErrorTranslationFile.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_files.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_files.po deleted file mode 100644 index a7eb749c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_translation_files.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_translation_files.rst:3 -msgid "PassportElementErrorTranslationFiles" -msgstr "" - -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles:1 -#: of -msgid "" -"Represents an issue with the translated version of a document. The error " -"is considered resolved when a file with the document translation change." -msgstr "" - -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles:3 -#: of -msgid "" -"Source: " -"https://core.telegram.org/bots/api#passportelementerrortranslationfiles" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles.source:1 -#: of -msgid "Error source, must be *translation_files*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles.type:1 -#: of -msgid "" -"Type of element of the user's Telegram Passport which has the issue, one " -"of 'passport', 'driver_license', 'identity_card', 'internal_passport', " -"'utility_bill', 'bank_statement', 'rental_agreement', " -"'passport_registration', 'temporary_registration'" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles.file_hashes:1 -#: of -msgid "List of base64-encoded file hashes" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_translation_files.PassportElementErrorTranslationFiles.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_unspecified.po b/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_unspecified.po deleted file mode 100644 index 899c416c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_element_error_unspecified.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_element_error_unspecified.rst:3 -msgid "PassportElementErrorUnspecified" -msgstr "" - -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified:1 -#: of -msgid "" -"Represents an issue in an unspecified place. The error is considered " -"resolved when new data is added." -msgstr "" - -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#passportelementerrorunspecified" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified.source:1 -#: of -msgid "Error source, must be *unspecified*" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified.type:1 -#: of -msgid "Type of element of the user's Telegram Passport which has the issue" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified.element_hash:1 -#: of -msgid "Base64-encoded element hash" -msgstr "" - -#: ../../docstring -#: aiogram.types.passport_element_error_unspecified.PassportElementErrorUnspecified.message:1 -#: of -msgid "Error message" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/passport_file.po b/docs/locale/en/LC_MESSAGES/api/types/passport_file.po deleted file mode 100644 index 06142ecf..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/passport_file.po +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/passport_file.rst:3 -msgid "PassportFile" -msgstr "" - -#: aiogram.types.passport_file.PassportFile:1 of -msgid "" -"This object represents a file uploaded to Telegram Passport. Currently " -"all Telegram Passport files are in JPEG format when decrypted and don't " -"exceed 10MB." -msgstr "" - -#: aiogram.types.passport_file.PassportFile:3 of -msgid "Source: https://core.telegram.org/bots/api#passportfile" -msgstr "" - -#: ../../docstring aiogram.types.passport_file.PassportFile.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.passport_file.PassportFile.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.passport_file.PassportFile.file_size:1 of -msgid "File size in bytes" -msgstr "" - -#: ../../docstring aiogram.types.passport_file.PassportFile.file_date:1 of -msgid "Unix time when the file was uploaded" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/photo_size.po b/docs/locale/en/LC_MESSAGES/api/types/photo_size.po deleted file mode 100644 index d24a773c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/photo_size.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/photo_size.rst:3 -msgid "PhotoSize" -msgstr "" - -#: aiogram.types.photo_size.PhotoSize:1 of -msgid "" -"This object represents one size of a photo or a `file " -"`_ / " -":class:`aiogram.methods.sticker.Sticker` thumbnail." -msgstr "" - -#: aiogram.types.photo_size.PhotoSize:3 of -msgid "Source: https://core.telegram.org/bots/api#photosize" -msgstr "" - -#: ../../docstring aiogram.types.photo_size.PhotoSize.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.photo_size.PhotoSize.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.photo_size.PhotoSize.width:1 of -msgid "Photo width" -msgstr "" - -#: ../../docstring aiogram.types.photo_size.PhotoSize.height:1 of -msgid "Photo height" -msgstr "" - -#: ../../docstring aiogram.types.photo_size.PhotoSize.file_size:1 of -msgid "*Optional*. File size in bytes" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/poll.po b/docs/locale/en/LC_MESSAGES/api/types/poll.po deleted file mode 100644 index 34ce17a6..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/poll.po +++ /dev/null @@ -1,93 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/poll.rst:3 -msgid "Poll" -msgstr "" - -#: aiogram.types.poll.Poll:1 of -msgid "This object contains information about a poll." -msgstr "" - -#: aiogram.types.poll.Poll:3 of -msgid "Source: https://core.telegram.org/bots/api#poll" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.id:1 of -msgid "Unique poll identifier" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.question:1 of -msgid "Poll question, 1-300 characters" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.options:1 of -msgid "List of poll options" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.total_voter_count:1 of -msgid "Total number of users that voted in the poll" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.is_closed:1 of -msgid ":code:`True`, if the poll is closed" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.is_anonymous:1 of -msgid ":code:`True`, if the poll is anonymous" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.type:1 of -msgid "Poll type, currently can be 'regular' or 'quiz'" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.allows_multiple_answers:1 of -msgid ":code:`True`, if the poll allows multiple answers" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.correct_option_id:1 of -msgid "" -"*Optional*. 0-based identifier of the correct answer option. Available " -"only for polls in the quiz mode, which are closed, or was sent (not " -"forwarded) by the bot or to the private chat with the bot." -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.explanation:1 of -msgid "" -"*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" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.explanation_entities:1 of -msgid "" -"*Optional*. Special entities like usernames, URLs, bot commands, etc. " -"that appear in the *explanation*" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.open_period:1 of -msgid "" -"*Optional*. Amount of time in seconds the poll will be active after " -"creation" -msgstr "" - -#: ../../docstring aiogram.types.poll.Poll.close_date:1 of -msgid "" -"*Optional*. Point in time (Unix timestamp) when the poll will be " -"automatically closed" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po b/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po deleted file mode 100644 index 63fb9b5d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/poll_answer.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/poll_answer.rst:3 -msgid "PollAnswer" -msgstr "" - -#: aiogram.types.poll_answer.PollAnswer:1 of -msgid "This object represents an answer of a user in a non-anonymous poll." -msgstr "" - -#: aiogram.types.poll_answer.PollAnswer:3 of -msgid "Source: https://core.telegram.org/bots/api#pollanswer" -msgstr "" - -#: ../../docstring aiogram.types.poll_answer.PollAnswer.poll_id:1 of -msgid "Unique poll identifier" -msgstr "" - -#: ../../docstring aiogram.types.poll_answer.PollAnswer.option_ids:1 of -msgid "" -"0-based identifiers of chosen answer options. May be empty if the vote " -"was retracted." -msgstr "" - -#: ../../docstring aiogram.types.poll_answer.PollAnswer.voter_chat:1 of -msgid "" -"*Optional*. The chat that changed the answer to the poll, if the voter is" -" anonymous" -msgstr "" - -#: ../../docstring aiogram.types.poll_answer.PollAnswer.user:1 of -msgid "" -"*Optional*. The user that changed the answer to the poll, if the voter " -"isn't anonymous" -msgstr "" - -#~ msgid "The user, who changed the answer to the poll" -#~ msgstr "" - -#~ msgid "" -#~ "0-based identifiers of answer options, " -#~ "chosen by the user. May be empty" -#~ " if the user retracted their vote." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/poll_option.po b/docs/locale/en/LC_MESSAGES/api/types/poll_option.po deleted file mode 100644 index 27ecd197..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/poll_option.po +++ /dev/null @@ -1,38 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/poll_option.rst:3 -msgid "PollOption" -msgstr "" - -#: aiogram.types.poll_option.PollOption:1 of -msgid "This object contains information about one answer option in a poll." -msgstr "" - -#: aiogram.types.poll_option.PollOption:3 of -msgid "Source: https://core.telegram.org/bots/api#polloption" -msgstr "" - -#: ../../docstring aiogram.types.poll_option.PollOption.text:1 of -msgid "Option text, 1-100 characters" -msgstr "" - -#: ../../docstring aiogram.types.poll_option.PollOption.voter_count:1 of -msgid "Number of users that voted for this option" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po deleted file mode 100644 index 59009813..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/pre_checkout_query.po +++ /dev/null @@ -1,128 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/pre_checkout_query.rst:3 -msgid "PreCheckoutQuery" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery:1 of -msgid "This object contains information about an incoming pre-checkout query." -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#precheckoutquery" -msgstr "" - -#: ../../docstring aiogram.types.pre_checkout_query.PreCheckoutQuery.id:1 of -msgid "Unique query identifier" -msgstr "" - -#: ../../docstring -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.from_user:1 of -msgid "User who sent the query" -msgstr "" - -#: ../../docstring aiogram.types.pre_checkout_query.PreCheckoutQuery.currency:1 -#: of -msgid "" -"Three-letter ISO 4217 `currency `_ code" -msgstr "" - -#: ../../docstring -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.total_amount:1 of -msgid "" -"Total price in the *smallest units* of the currency (integer, **not** " -"float/double). For example, for a price of :code:`US$ 1.45` pass " -":code:`amount = 145`. See the *exp* parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies)." -msgstr "" - -#: ../../docstring -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.invoice_payload:1 of -msgid "Bot specified invoice payload" -msgstr "" - -#: ../../docstring -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.shipping_option_id:1 of -msgid "*Optional*. Identifier of the shipping option chosen by the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.order_info:1 of -msgid "*Optional*. Order information provided by the user" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:4 of -msgid ":code:`pre_checkout_query_id`" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:6 of -msgid "" -"Once the user has confirmed their payment and shipping details, the Bot " -"API sends the final confirmation in the form of an " -":class:`aiogram.types.update.Update` with the field *pre_checkout_query*." -" Use this method to respond to such pre-checkout queries. On success, " -":code:`True` is returned. **Note:** The Bot API must receive an answer " -"within 10 seconds after the pre-checkout query was sent." -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:8 of -msgid "Source: https://core.telegram.org/bots/api#answerprecheckoutquery" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of -msgid "Parameters" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:10 of -msgid "" -"Specify :code:`True` if everything is alright (goods are available, etc.)" -" and the bot is ready to proceed with the order. Use :code:`False` if " -"there are any problems." -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:11 of -msgid "" -"Required if *ok* is :code:`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." -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer of -msgid "Returns" -msgstr "" - -#: aiogram.types.pre_checkout_query.PreCheckoutQuery.answer:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.answer_pre_checkout_query.AnswerPreCheckoutQuery`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/proximity_alert_triggered.po b/docs/locale/en/LC_MESSAGES/api/types/proximity_alert_triggered.po deleted file mode 100644 index bbfc27d1..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/proximity_alert_triggered.po +++ /dev/null @@ -1,49 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/proximity_alert_triggered.rst:3 -msgid "ProximityAlertTriggered" -msgstr "" - -#: aiogram.types.proximity_alert_triggered.ProximityAlertTriggered:1 of -msgid "" -"This object represents the content of a service message, sent whenever a " -"user in the chat triggers a proximity alert set by another user." -msgstr "" - -#: aiogram.types.proximity_alert_triggered.ProximityAlertTriggered:3 of -msgid "Source: https://core.telegram.org/bots/api#proximityalerttriggered" -msgstr "" - -#: ../../docstring -#: aiogram.types.proximity_alert_triggered.ProximityAlertTriggered.traveler:1 -#: of -msgid "User that triggered the alert" -msgstr "" - -#: ../../docstring -#: aiogram.types.proximity_alert_triggered.ProximityAlertTriggered.watcher:1 of -msgid "User that set the alert" -msgstr "" - -#: ../../docstring -#: aiogram.types.proximity_alert_triggered.ProximityAlertTriggered.distance:1 -#: of -msgid "The distance between the users" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_markup.po b/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_markup.po deleted file mode 100644 index 4f2b1f86..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_markup.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-30 22:28+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/reply_keyboard_markup.rst:3 -msgid "ReplyKeyboardMarkup" -msgstr "" - -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup:1 of -msgid "" -"This object represents a `custom keyboard " -"`_ with reply options " -"(see `Introduction to bots " -"`_ for details and " -"examples)." -msgstr "" - -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup:3 of -msgid "Source: https://core.telegram.org/bots/api#replykeyboardmarkup" -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.keyboard:1 of -msgid "" -"Array of button rows, each represented by an Array of " -":class:`aiogram.types.keyboard_button.KeyboardButton` objects" -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.is_persistent:1 of -msgid "" -"*Optional*. Requests clients to always show the keyboard when the regular" -" keyboard is hidden. Defaults to *false*, in which case the custom " -"keyboard can be hidden and opened with a keyboard icon." -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.resize_keyboard:1 of -msgid "" -"*Optional*. Requests clients to resize the keyboard vertically for " -"optimal fit (e.g., make the keyboard smaller if there are just two rows " -"of buttons). Defaults to *false*, in which case the custom keyboard is " -"always of the same height as the app's standard keyboard." -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.one_time_keyboard:1 -#: of -msgid "" -"*Optional*. Requests clients to hide the keyboard as soon as it's been " -"used. The keyboard will still be available, but clients will " -"automatically display the usual letter-keyboard in the chat - the user " -"can press a special button in the input field to see the custom keyboard " -"again. Defaults to *false*." -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.input_field_placeholder:1 -#: of -msgid "" -"*Optional*. The placeholder to be shown in the input field when the " -"keyboard is active; 1-64 characters" -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup.selective:1 of -msgid "" -"*Optional*. Use this parameter if you want to show the keyboard to " -"specific users only. Targets: 1) users that are @mentioned in the *text* " -"of the :class:`aiogram.types.message.Message` object; 2) if the bot's " -"message is a reply (has *reply_to_message_id*), sender of the original " -"message." -msgstr "" - -#~ msgid "" -#~ "This object represents a `custom " -#~ "keyboard `_ with" -#~ " reply options (see `Introduction to " -#~ "bots `_ for " -#~ "details and examples)." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_remove.po b/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_remove.po deleted file mode 100644 index 26e7d05c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/reply_keyboard_remove.po +++ /dev/null @@ -1,55 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/reply_keyboard_remove.rst:3 -msgid "ReplyKeyboardRemove" -msgstr "" - -#: aiogram.types.reply_keyboard_remove.ReplyKeyboardRemove:1 of -msgid "" -"Upon receiving a message with this object, Telegram clients will remove " -"the current custom keyboard and display the default letter-keyboard. By " -"default, custom keyboards are displayed until a new keyboard is sent by a" -" bot. An exception is made for one-time keyboards that are hidden " -"immediately after the user presses a button (see " -":class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup`)." -msgstr "" - -#: aiogram.types.reply_keyboard_remove.ReplyKeyboardRemove:3 of -msgid "Source: https://core.telegram.org/bots/api#replykeyboardremove" -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_remove.ReplyKeyboardRemove.remove_keyboard:1 of -msgid "" -"Requests clients to remove the custom keyboard (user will not be able to " -"summon this keyboard; if you want to hide the keyboard from sight but " -"keep it accessible, use *one_time_keyboard* in " -":class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup`)" -msgstr "" - -#: ../../docstring -#: aiogram.types.reply_keyboard_remove.ReplyKeyboardRemove.selective:1 of -msgid "" -"*Optional*. Use this parameter if you want to remove the keyboard for " -"specific users only. Targets: 1) users that are @mentioned in the *text* " -"of the :class:`aiogram.types.message.Message` object; 2) if the bot's " -"message is a reply (has *reply_to_message_id*), sender of the original " -"message." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/response_parameters.po b/docs/locale/en/LC_MESSAGES/api/types/response_parameters.po deleted file mode 100644 index 44650c07..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/response_parameters.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/response_parameters.rst:3 -msgid "ResponseParameters" -msgstr "" - -#: aiogram.types.response_parameters.ResponseParameters:1 of -msgid "Describes why a request was unsuccessful." -msgstr "" - -#: aiogram.types.response_parameters.ResponseParameters:3 of -msgid "Source: https://core.telegram.org/bots/api#responseparameters" -msgstr "" - -#: ../../docstring -#: aiogram.types.response_parameters.ResponseParameters.migrate_to_chat_id:1 of -msgid "" -"*Optional*. The group has been migrated to a supergroup with the " -"specified identifier. This number may have more than 32 significant bits " -"and some programming languages may have difficulty/silent defects in " -"interpreting it. But it has at most 52 significant bits, so a signed " -"64-bit integer or double-precision float type are safe for storing this " -"identifier." -msgstr "" - -#: ../../docstring -#: aiogram.types.response_parameters.ResponseParameters.retry_after:1 of -msgid "" -"*Optional*. In case of exceeding flood control, the number of seconds " -"left to wait before the request can be repeated" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/sent_web_app_message.po b/docs/locale/en/LC_MESSAGES/api/types/sent_web_app_message.po deleted file mode 100644 index 1464542c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/sent_web_app_message.po +++ /dev/null @@ -1,41 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/sent_web_app_message.rst:3 -msgid "SentWebAppMessage" -msgstr "" - -#: aiogram.types.sent_web_app_message.SentWebAppMessage:1 of -msgid "" -"Describes an inline message sent by a `Web App " -"`_ on behalf of a user." -msgstr "" - -#: aiogram.types.sent_web_app_message.SentWebAppMessage:3 of -msgid "Source: https://core.telegram.org/bots/api#sentwebappmessage" -msgstr "" - -#: ../../docstring -#: aiogram.types.sent_web_app_message.SentWebAppMessage.inline_message_id:1 of -msgid "" -"*Optional*. Identifier of the sent inline message. Available only if " -"there is an `inline keyboard " -"`_ attached to " -"the message." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/shipping_address.po b/docs/locale/en/LC_MESSAGES/api/types/shipping_address.po deleted file mode 100644 index a5b1df15..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/shipping_address.po +++ /dev/null @@ -1,58 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/shipping_address.rst:3 -msgid "ShippingAddress" -msgstr "" - -#: aiogram.types.shipping_address.ShippingAddress:1 of -msgid "This object represents a shipping address." -msgstr "" - -#: aiogram.types.shipping_address.ShippingAddress:3 of -msgid "Source: https://core.telegram.org/bots/api#shippingaddress" -msgstr "" - -#: ../../docstring -#: aiogram.types.shipping_address.ShippingAddress.country_code:1 of -msgid "Two-letter ISO 3166-1 alpha-2 country code" -msgstr "" - -#: ../../docstring aiogram.types.shipping_address.ShippingAddress.state:1 of -msgid "State, if applicable" -msgstr "" - -#: ../../docstring aiogram.types.shipping_address.ShippingAddress.city:1 of -msgid "City" -msgstr "" - -#: ../../docstring -#: aiogram.types.shipping_address.ShippingAddress.street_line1:1 of -msgid "First line for the address" -msgstr "" - -#: ../../docstring -#: aiogram.types.shipping_address.ShippingAddress.street_line2:1 of -msgid "Second line for the address" -msgstr "" - -#: ../../docstring aiogram.types.shipping_address.ShippingAddress.post_code:1 -#: of -msgid "Address post code" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/shipping_option.po b/docs/locale/en/LC_MESSAGES/api/types/shipping_option.po deleted file mode 100644 index e9f95db7..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/shipping_option.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/shipping_option.rst:3 -msgid "ShippingOption" -msgstr "" - -#: aiogram.types.shipping_option.ShippingOption:1 of -msgid "This object represents one shipping option." -msgstr "" - -#: aiogram.types.shipping_option.ShippingOption:3 of -msgid "Source: https://core.telegram.org/bots/api#shippingoption" -msgstr "" - -#: ../../docstring aiogram.types.shipping_option.ShippingOption.id:1 of -msgid "Shipping option identifier" -msgstr "" - -#: ../../docstring aiogram.types.shipping_option.ShippingOption.title:1 of -msgid "Option title" -msgstr "" - -#: ../../docstring aiogram.types.shipping_option.ShippingOption.prices:1 of -msgid "List of price portions" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po b/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po deleted file mode 100644 index b17b8c63..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/shipping_query.po +++ /dev/null @@ -1,107 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/shipping_query.rst:3 -msgid "ShippingQuery" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery:1 of -msgid "This object contains information about an incoming shipping query." -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery:3 of -msgid "Source: https://core.telegram.org/bots/api#shippingquery" -msgstr "" - -#: ../../docstring aiogram.types.shipping_query.ShippingQuery.id:1 of -msgid "Unique query identifier" -msgstr "" - -#: ../../docstring aiogram.types.shipping_query.ShippingQuery.from_user:1 of -msgid "User who sent the query" -msgstr "" - -#: ../../docstring aiogram.types.shipping_query.ShippingQuery.invoice_payload:1 -#: of -msgid "Bot specified invoice payload" -msgstr "" - -#: ../../docstring -#: aiogram.types.shipping_query.ShippingQuery.shipping_address:1 of -msgid "User specified shipping address" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery` will " -"automatically fill method attributes:" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:4 of -msgid ":code:`shipping_query_id`" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:6 of -msgid "" -"If you sent an invoice requesting a shipping address and the parameter " -"*is_flexible* was specified, the Bot API will send an " -":class:`aiogram.types.update.Update` with a *shipping_query* field to the" -" bot. Use this method to reply to shipping queries. On success, " -":code:`True` is returned." -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:8 of -msgid "Source: https://core.telegram.org/bots/api#answershippingquery" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer of -msgid "Parameters" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:10 of -msgid "" -"Pass :code:`True` if delivery to the specified address is possible and " -":code:`False` if there are any problems (for example, if delivery to the " -"specified address is not possible)" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:11 of -msgid "" -"Required if *ok* is :code:`True`. A JSON-serialized array of available " -"shipping options." -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:12 of -msgid "" -"Required if *ok* is :code:`False`. Error message in human readable form " -"that explains why it is impossible to complete the order (e.g. \"Sorry, " -"delivery to your desired address is unavailable'). Telegram will display " -"this message to the user." -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer of -msgid "Returns" -msgstr "" - -#: aiogram.types.shipping_query.ShippingQuery.answer:13 of -msgid "" -"instance of method " -":class:`aiogram.methods.answer_shipping_query.AnswerShippingQuery`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/sticker.po b/docs/locale/en/LC_MESSAGES/api/types/sticker.po deleted file mode 100644 index fe98cecc..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/sticker.po +++ /dev/null @@ -1,173 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/sticker.rst:3 -msgid "Sticker" -msgstr "" - -#: aiogram.types.sticker.Sticker:1 of -msgid "This object represents a sticker." -msgstr "" - -#: aiogram.types.sticker.Sticker:3 of -msgid "Source: https://core.telegram.org/bots/api#sticker" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.type:1 of -msgid "" -"Type of the sticker, currently one of 'regular', 'mask', 'custom_emoji'. " -"The type of the sticker is independent from its format, which is " -"determined by the fields *is_animated* and *is_video*." -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.width:1 of -msgid "Sticker width" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.height:1 of -msgid "Sticker height" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.is_animated:1 of -msgid "" -":code:`True`, if the sticker is `animated `_" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.is_video:1 of -msgid "" -":code:`True`, if the sticker is a `video sticker " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.thumbnail:1 of -msgid "*Optional*. Sticker thumbnail in the .WEBP or .JPG format" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.emoji:1 of -msgid "*Optional*. Emoji associated with the sticker" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.set_name:1 of -msgid "*Optional*. Name of the sticker set to which the sticker belongs" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.premium_animation:1 of -msgid "" -"*Optional*. For premium regular stickers, premium animation for the " -"sticker" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.mask_position:1 of -msgid "" -"*Optional*. For mask stickers, the position where the mask should be " -"placed" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.custom_emoji_id:1 of -msgid "" -"*Optional*. For custom emoji stickers, unique identifier of the custom " -"emoji" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.needs_repainting:1 of -msgid "" -"*Optional*. :code:`True`, if the sticker must be repainted to a text " -"color in messages, the color of the Telegram Premium badge in emoji " -"status, white color on chat photos, or another appropriate color in other" -" places" -msgstr "" - -#: ../../docstring aiogram.types.sticker.Sticker.file_size:1 of -msgid "*Optional*. File size in bytes" -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet`" -" will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set:4 -#: aiogram.types.sticker.Sticker.set_position_in_set:4 of -msgid ":code:`sticker`" -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set:6 of -msgid "" -"Use this method to move a sticker in a set created by the bot to a " -"specific position. Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set:8 of -msgid "Source: https://core.telegram.org/bots/api#setstickerpositioninset" -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set of -msgid "Parameters" -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set:10 of -msgid "New sticker position in the set, zero-based" -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set -#: aiogram.types.sticker.Sticker.set_position_in_set of -msgid "Returns" -msgstr "" - -#: aiogram.types.sticker.Sticker.set_position_in_set:11 of -msgid "" -"instance of method " -":class:`aiogram.methods.set_sticker_position_in_set.SetStickerPositionInSet`" -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.delete_sticker_from_set.DeleteStickerFromSet` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set:6 of -msgid "" -"Use this method to delete a sticker from a set created by the bot. " -"Returns :code:`True` on success." -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set:8 of -msgid "Source: https://core.telegram.org/bots/api#deletestickerfromset" -msgstr "" - -#: aiogram.types.sticker.Sticker.delete_from_set:10 of -msgid "" -"instance of method " -":class:`aiogram.methods.delete_sticker_from_set.DeleteStickerFromSet`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/sticker_set.po b/docs/locale/en/LC_MESSAGES/api/types/sticker_set.po deleted file mode 100644 index 6e76be18..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/sticker_set.po +++ /dev/null @@ -1,64 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/sticker_set.rst:3 -msgid "StickerSet" -msgstr "" - -#: aiogram.types.sticker_set.StickerSet:1 of -msgid "This object represents a sticker set." -msgstr "" - -#: aiogram.types.sticker_set.StickerSet:3 of -msgid "Source: https://core.telegram.org/bots/api#stickerset" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.name:1 of -msgid "Sticker set name" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.title:1 of -msgid "Sticker set title" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.sticker_type:1 of -msgid "" -"Type of stickers in the set, currently one of 'regular', 'mask', " -"'custom_emoji'" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.is_animated:1 of -msgid "" -":code:`True`, if the sticker set contains `animated stickers " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.is_video:1 of -msgid "" -":code:`True`, if the sticker set contains `video stickers " -"`_" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.stickers:1 of -msgid "List of all set stickers" -msgstr "" - -#: ../../docstring aiogram.types.sticker_set.StickerSet.thumb:1 of -msgid "*Optional*. Sticker set thumbnail in the .WEBP, .TGS, or .WEBM format" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/story.po b/docs/locale/en/LC_MESSAGES/api/types/story.po deleted file mode 100644 index 92bf0e3a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/story.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/story.rst:3 -msgid "Story" -msgstr "" - -#: aiogram.types.story.Story:1 of -msgid "" -"This object represents a message about a forwarded story in the chat. " -"Currently holds no information." -msgstr "" - -#: aiogram.types.story.Story:3 of -msgid "Source: https://core.telegram.org/bots/api#story" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/successful_payment.po b/docs/locale/en/LC_MESSAGES/api/types/successful_payment.po deleted file mode 100644 index d6152e59..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/successful_payment.po +++ /dev/null @@ -1,75 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/successful_payment.rst:3 -msgid "SuccessfulPayment" -msgstr "" - -#: aiogram.types.successful_payment.SuccessfulPayment:1 of -msgid "This object contains basic information about a successful payment." -msgstr "" - -#: aiogram.types.successful_payment.SuccessfulPayment:3 of -msgid "Source: https://core.telegram.org/bots/api#successfulpayment" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.currency:1 of -msgid "" -"Three-letter ISO 4217 `currency `_ code" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.total_amount:1 of -msgid "" -"Total price in the *smallest units* of the currency (integer, **not** " -"float/double). For example, for a price of :code:`US$ 1.45` pass " -":code:`amount = 145`. See the *exp* parameter in `currencies.json " -"`_, it shows the" -" number of digits past the decimal point for each currency (2 for the " -"majority of currencies)." -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.invoice_payload:1 of -msgid "Bot specified invoice payload" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.telegram_payment_charge_id:1 -#: of -msgid "Telegram payment identifier" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.provider_payment_charge_id:1 -#: of -msgid "Provider payment identifier" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.shipping_option_id:1 of -msgid "*Optional*. Identifier of the shipping option chosen by the user" -msgstr "" - -#: ../../docstring -#: aiogram.types.successful_payment.SuccessfulPayment.order_info:1 of -msgid "*Optional*. Order information provided by the user" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po b/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po deleted file mode 100644 index 3b8f431d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/switch_inline_query_chosen_chat.po +++ /dev/null @@ -1,66 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/switch_inline_query_chosen_chat.rst:3 -msgid "SwitchInlineQueryChosenChat" -msgstr "" - -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:1 -#: of -msgid "" -"This object represents an inline button that switches the current user to" -" inline mode in a chosen chat, with an optional default inline query." -msgstr "" - -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#switchinlinequerychosenchat" -msgstr "" - -#: ../../docstring -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.query:1 -#: of -msgid "" -"*Optional*. The default inline query to be inserted in the input field. " -"If left empty, only the bot's username will be inserted" -msgstr "" - -#: ../../docstring -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_user_chats:1 -#: of -msgid "*Optional*. True, if private chats with users can be chosen" -msgstr "" - -#: ../../docstring -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_bot_chats:1 -#: of -msgid "*Optional*. True, if private chats with bots can be chosen" -msgstr "" - -#: ../../docstring -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_group_chats:1 -#: of -msgid "*Optional*. True, if group and supergroup chats can be chosen" -msgstr "" - -#: ../../docstring -#: aiogram.types.switch_inline_query_chosen_chat.SwitchInlineQueryChosenChat.allow_channel_chats:1 -#: of -msgid "*Optional*. True, if channel chats can be chosen" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/update.po b/docs/locale/en/LC_MESSAGES/api/types/update.po deleted file mode 100644 index 940848f4..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/update.po +++ /dev/null @@ -1,148 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/update.rst:3 -msgid "Update" -msgstr "" - -#: aiogram.types.update.Update:1 of -msgid "" -"This `object `_ " -"represents an incoming update." -msgstr "" - -#: aiogram.types.update.Update:3 of -msgid "" -"At most **one** of the optional parameters can be present in any given " -"update." -msgstr "" - -#: aiogram.types.update.Update:5 of -msgid "Source: https://core.telegram.org/bots/api#update" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.update_id:1 of -msgid "" -"The update's unique identifier. Update identifiers start from a certain " -"positive number and increase sequentially. This ID becomes especially " -"handy if you're using `webhooks " -"`_, since it allows you to" -" ignore repeated updates or to restore the correct update sequence, " -"should they get out of order. If there are no new updates for at least a " -"week, then identifier of the next update will be chosen randomly instead " -"of sequentially." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.message:1 of -msgid "*Optional*. New incoming message of any kind - text, photo, sticker, etc." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.edited_message:1 of -msgid "" -"*Optional*. New version of a message that is known to the bot and was " -"edited" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.channel_post:1 of -msgid "" -"*Optional*. New incoming channel post of any kind - text, photo, sticker," -" etc." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.edited_channel_post:1 of -msgid "" -"*Optional*. New version of a channel post that is known to the bot and " -"was edited" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.inline_query:1 of -msgid "" -"*Optional*. New incoming `inline `_ query" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.chosen_inline_result:1 of -msgid "" -"*Optional*. The result of an `inline `_ query that was chosen by a user and sent to their chat " -"partner. Please see our documentation on the `feedback collecting " -"`_ for details" -" on how to enable these updates for your bot." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.callback_query:1 of -msgid "*Optional*. New incoming callback query" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.shipping_query:1 of -msgid "" -"*Optional*. New incoming shipping query. Only for invoices with flexible " -"price" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.pre_checkout_query:1 of -msgid "" -"*Optional*. New incoming pre-checkout query. Contains full information " -"about checkout" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.poll:1 of -msgid "" -"*Optional*. New poll state. Bots receive only updates about stopped polls" -" and polls, which are sent by the bot" -msgstr "" - -#: ../../docstring aiogram.types.update.Update.poll_answer:1 of -msgid "" -"*Optional*. A user changed their answer in a non-anonymous poll. Bots " -"receive new votes only in polls that were sent by the bot itself." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.my_chat_member:1 of -msgid "" -"*Optional*. The bot's chat member status was updated in a chat. For " -"private chats, this update is received only when the bot is blocked or " -"unblocked by the user." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.chat_member:1 of -msgid "" -"*Optional*. A chat member's status was updated in a chat. The bot must be" -" an administrator in the chat and must explicitly specify 'chat_member' " -"in the list of *allowed_updates* to receive these updates." -msgstr "" - -#: ../../docstring aiogram.types.update.Update.chat_join_request:1 of -msgid "" -"*Optional*. A request to join the chat has been sent. The bot must have " -"the *can_invite_users* administrator right in the chat to receive these " -"updates." -msgstr "" - -#: aiogram.types.update.Update.event_type:1 of -msgid "Detect update type If update type is unknown, raise UpdateTypeLookupError" -msgstr "" - -#: aiogram.types.update.Update.event_type of -msgid "Returns" -msgstr "" - -#: aiogram.types.update.UpdateTypeLookupError:1 of -msgid "Update does not contain any known event type." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/user.po b/docs/locale/en/LC_MESSAGES/api/types/user.po deleted file mode 100644 index b7e590b3..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/user.po +++ /dev/null @@ -1,157 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/user.rst:3 -msgid "User" -msgstr "" - -#: aiogram.types.user.User:1 of -msgid "This object represents a Telegram user or bot." -msgstr "" - -#: aiogram.types.user.User:3 of -msgid "Source: https://core.telegram.org/bots/api#user" -msgstr "" - -#: ../../docstring aiogram.types.user.User.id:1 of -msgid "" -"Unique identifier for this user or bot. This number may have more than 32" -" significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. But it has at most 52 " -"significant bits, so a 64-bit integer or double-precision float type are " -"safe for storing this identifier." -msgstr "" - -#: ../../docstring aiogram.types.user.User.is_bot:1 of -msgid ":code:`True`, if this user is a bot" -msgstr "" - -#: ../../docstring aiogram.types.user.User.first_name:1 of -msgid "User's or bot's first name" -msgstr "" - -#: ../../docstring aiogram.types.user.User.last_name:1 of -msgid "*Optional*. User's or bot's last name" -msgstr "" - -#: ../../docstring aiogram.types.user.User.username:1 of -msgid "*Optional*. User's or bot's username" -msgstr "" - -#: ../../docstring aiogram.types.user.User.language_code:1 of -msgid "" -"*Optional*. `IETF language tag " -"`_ of the user's " -"language" -msgstr "" - -#: ../../docstring aiogram.types.user.User.is_premium:1 of -msgid "*Optional*. :code:`True`, if this user is a Telegram Premium user" -msgstr "" - -#: ../../docstring aiogram.types.user.User.added_to_attachment_menu:1 of -msgid "" -"*Optional*. :code:`True`, if this user added the bot to the attachment " -"menu" -msgstr "" - -#: ../../docstring aiogram.types.user.User.can_join_groups:1 of -msgid "" -"*Optional*. :code:`True`, if the bot can be invited to groups. Returned " -"only in :class:`aiogram.methods.get_me.GetMe`." -msgstr "" - -#: ../../docstring aiogram.types.user.User.can_read_all_group_messages:1 of -msgid "" -"*Optional*. :code:`True`, if `privacy mode " -"`_ is disabled for " -"the bot. Returned only in :class:`aiogram.methods.get_me.GetMe`." -msgstr "" - -#: ../../docstring aiogram.types.user.User.supports_inline_queries:1 of -msgid "" -"*Optional*. :code:`True`, if the bot supports inline queries. Returned " -"only in :class:`aiogram.methods.get_me.GetMe`." -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:1 of -msgid "" -"Shortcut for method " -":class:`aiogram.methods.get_user_profile_photos.GetUserProfilePhotos` " -"will automatically fill method attributes:" -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:4 of -msgid ":code:`user_id`" -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:6 of -msgid "" -"Use this method to get a list of profile pictures for a user. Returns a " -":class:`aiogram.types.user_profile_photos.UserProfilePhotos` object." -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:8 of -msgid "Source: https://core.telegram.org/bots/api#getuserprofilephotos" -msgstr "" - -#: aiogram.types.user.User.get_profile_photos of -msgid "Parameters" -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:10 of -msgid "" -"Sequential number of the first photo to be returned. By default, all " -"photos are returned." -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:11 of -msgid "" -"Limits the number of photos to be retrieved. Values between 1-100 are " -"accepted. Defaults to 100." -msgstr "" - -#: aiogram.types.user.User.get_profile_photos of -msgid "Returns" -msgstr "" - -#: aiogram.types.user.User.get_profile_photos:12 of -msgid "" -"instance of method " -":class:`aiogram.methods.get_user_profile_photos.GetUserProfilePhotos`" -msgstr "" - -#~ msgid "This object represents a Telegram user or bot." -#~ msgstr "" - -#~ msgid "Source: https://core.telegram.org/bots/api#user" -#~ msgstr "" - -#~ msgid "" -#~ "This object represents a Telegram user" -#~ " or bot. Source: " -#~ "https://core.telegram.org/bots/api#user" -#~ msgstr "" - -#~ msgid "" -#~ "*Optional*. :code:`True`, if `privacy mode " -#~ "`_ is " -#~ "disabled for the bot. Returned only " -#~ "in :class:`aiogram.methods.get_me.GetMe`." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/user_profile_photos.po b/docs/locale/en/LC_MESSAGES/api/types/user_profile_photos.po deleted file mode 100644 index a1a37319..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/user_profile_photos.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/user_profile_photos.rst:3 -msgid "UserProfilePhotos" -msgstr "" - -#: aiogram.types.user_profile_photos.UserProfilePhotos:1 of -msgid "This object represent a user's profile pictures." -msgstr "" - -#: aiogram.types.user_profile_photos.UserProfilePhotos:3 of -msgid "Source: https://core.telegram.org/bots/api#userprofilephotos" -msgstr "" - -#: ../../docstring -#: aiogram.types.user_profile_photos.UserProfilePhotos.total_count:1 of -msgid "Total number of profile pictures the target user has" -msgstr "" - -#: ../../docstring aiogram.types.user_profile_photos.UserProfilePhotos.photos:1 -#: of -msgid "Requested profile pictures (in up to 4 sizes each)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/user_shared.po b/docs/locale/en/LC_MESSAGES/api/types/user_shared.po deleted file mode 100644 index d725744c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/user_shared.po +++ /dev/null @@ -1,49 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../api/types/user_shared.rst:3 -msgid "UserShared" -msgstr "" - -#: aiogram.types.user_shared.UserShared:1 of -msgid "" -"This object contains information about the user whose identifier was " -"shared with the bot using a " -":class:`aiogram.types.keyboard_button_request_user.KeyboardButtonRequestUser`" -" button." -msgstr "" - -#: aiogram.types.user_shared.UserShared:3 of -msgid "Source: https://core.telegram.org/bots/api#usershared" -msgstr "" - -#: ../../docstring aiogram.types.user_shared.UserShared.request_id:1 of -msgid "Identifier of the request" -msgstr "" - -#: ../../docstring aiogram.types.user_shared.UserShared.user_id:1 of -msgid "" -"Identifier of the shared user. This number may have more than 32 " -"significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. But it has at most 52 " -"significant bits, so a 64-bit integer or double-precision float type are " -"safe for storing this identifier. The bot may not have access to the user" -" and could be unable to use this identifier, unless the user is already " -"known to the bot by some other means." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/venue.po b/docs/locale/en/LC_MESSAGES/api/types/venue.po deleted file mode 100644 index 949a414e..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/venue.po +++ /dev/null @@ -1,63 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/venue.rst:3 -msgid "Venue" -msgstr "" - -#: aiogram.types.venue.Venue:1 of -msgid "This object represents a venue." -msgstr "" - -#: aiogram.types.venue.Venue:3 of -msgid "Source: https://core.telegram.org/bots/api#venue" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.location:1 of -msgid "Venue location. Can't be a live location" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.title:1 of -msgid "Name of the venue" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.address:1 of -msgid "Address of the venue" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.foursquare_id:1 of -msgid "*Optional*. Foursquare identifier of the venue" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.foursquare_type:1 of -msgid "" -"*Optional*. Foursquare type of the venue. (For example, " -"'arts_entertainment/default', 'arts_entertainment/aquarium' or " -"'food/icecream'.)" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.google_place_id:1 of -msgid "*Optional*. Google Places identifier of the venue" -msgstr "" - -#: ../../docstring aiogram.types.venue.Venue.google_place_type:1 of -msgid "" -"*Optional*. Google Places type of the venue. (See `supported types " -"`_.)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video.po b/docs/locale/en/LC_MESSAGES/api/types/video.po deleted file mode 100644 index d3df202b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video.po +++ /dev/null @@ -1,72 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video.rst:3 -msgid "Video" -msgstr "" - -#: aiogram.types.video.Video:1 of -msgid "This object represents a video file." -msgstr "" - -#: aiogram.types.video.Video:3 of -msgid "Source: https://core.telegram.org/bots/api#video" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.video.Video.width:1 of -msgid "Video width as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.height:1 of -msgid "Video height as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.duration:1 of -msgid "Duration of the video in seconds as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.thumb:1 of -msgid "*Optional*. Video thumbnail" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.file_name:1 of -msgid "*Optional*. Original filename as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.mime_type:1 of -msgid "*Optional*. MIME type of the file as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video.Video.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video_chat_ended.po b/docs/locale/en/LC_MESSAGES/api/types/video_chat_ended.po deleted file mode 100644 index 85fca928..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video_chat_ended.po +++ /dev/null @@ -1,36 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video_chat_ended.rst:3 -msgid "VideoChatEnded" -msgstr "" - -#: aiogram.types.video_chat_ended.VideoChatEnded:1 of -msgid "" -"This object represents a service message about a video chat ended in the " -"chat." -msgstr "" - -#: aiogram.types.video_chat_ended.VideoChatEnded:3 of -msgid "Source: https://core.telegram.org/bots/api#videochatended" -msgstr "" - -#: ../../docstring aiogram.types.video_chat_ended.VideoChatEnded.duration:1 of -msgid "Video chat duration in seconds" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video_chat_participants_invited.po b/docs/locale/en/LC_MESSAGES/api/types/video_chat_participants_invited.po deleted file mode 100644 index 003f340f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video_chat_participants_invited.po +++ /dev/null @@ -1,40 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video_chat_participants_invited.rst:3 -msgid "VideoChatParticipantsInvited" -msgstr "" - -#: aiogram.types.video_chat_participants_invited.VideoChatParticipantsInvited:1 -#: of -msgid "" -"This object represents a service message about new members invited to a " -"video chat." -msgstr "" - -#: aiogram.types.video_chat_participants_invited.VideoChatParticipantsInvited:3 -#: of -msgid "Source: https://core.telegram.org/bots/api#videochatparticipantsinvited" -msgstr "" - -#: ../../docstring -#: aiogram.types.video_chat_participants_invited.VideoChatParticipantsInvited.users:1 -#: of -msgid "New members that were invited to the video chat" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video_chat_scheduled.po b/docs/locale/en/LC_MESSAGES/api/types/video_chat_scheduled.po deleted file mode 100644 index cefac90b..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video_chat_scheduled.po +++ /dev/null @@ -1,39 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video_chat_scheduled.rst:3 -msgid "VideoChatScheduled" -msgstr "" - -#: aiogram.types.video_chat_scheduled.VideoChatScheduled:1 of -msgid "" -"This object represents a service message about a video chat scheduled in " -"the chat." -msgstr "" - -#: aiogram.types.video_chat_scheduled.VideoChatScheduled:3 of -msgid "Source: https://core.telegram.org/bots/api#videochatscheduled" -msgstr "" - -#: ../../docstring -#: aiogram.types.video_chat_scheduled.VideoChatScheduled.start_date:1 of -msgid "" -"Point in time (Unix timestamp) when the video chat is supposed to be " -"started by a chat administrator" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video_chat_started.po b/docs/locale/en/LC_MESSAGES/api/types/video_chat_started.po deleted file mode 100644 index c4b7b655..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video_chat_started.po +++ /dev/null @@ -1,32 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video_chat_started.rst:3 -msgid "VideoChatStarted" -msgstr "" - -#: aiogram.types.video_chat_started.VideoChatStarted:1 of -msgid "" -"This object represents a service message about a video chat started in " -"the chat. Currently holds no information." -msgstr "" - -#: aiogram.types.video_chat_started.VideoChatStarted:3 of -msgid "Source: https://core.telegram.org/bots/api#videochatstarted" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/video_note.po b/docs/locale/en/LC_MESSAGES/api/types/video_note.po deleted file mode 100644 index e2a1f689..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/video_note.po +++ /dev/null @@ -1,61 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/video_note.rst:3 -msgid "VideoNote" -msgstr "" - -#: aiogram.types.video_note.VideoNote:1 of -msgid "" -"This object represents a `video message `_ (available in Telegram apps as of `v.4.0 " -"`_)." -msgstr "" - -#: aiogram.types.video_note.VideoNote:3 of -msgid "Source: https://core.telegram.org/bots/api#videonote" -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.length:1 of -msgid "" -"Video width and height (diameter of the video message) as defined by " -"sender" -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.duration:1 of -msgid "Duration of the video in seconds as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.thumb:1 of -msgid "*Optional*. Video thumbnail" -msgstr "" - -#: ../../docstring aiogram.types.video_note.VideoNote.file_size:1 of -msgid "*Optional*. File size in bytes" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/voice.po b/docs/locale/en/LC_MESSAGES/api/types/voice.po deleted file mode 100644 index 1f0abe93..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/voice.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/voice.rst:3 -msgid "Voice" -msgstr "" - -#: aiogram.types.voice.Voice:1 of -msgid "This object represents a voice note." -msgstr "" - -#: aiogram.types.voice.Voice:3 of -msgid "Source: https://core.telegram.org/bots/api#voice" -msgstr "" - -#: ../../docstring aiogram.types.voice.Voice.file_id:1 of -msgid "Identifier for this file, which can be used to download or reuse the file" -msgstr "" - -#: ../../docstring aiogram.types.voice.Voice.file_unique_id:1 of -msgid "" -"Unique identifier for this file, which is supposed to be the same over " -"time and for different bots. Can't be used to download or reuse the file." -msgstr "" - -#: ../../docstring aiogram.types.voice.Voice.duration:1 of -msgid "Duration of the audio in seconds as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.voice.Voice.mime_type:1 of -msgid "*Optional*. MIME type of the file as defined by sender" -msgstr "" - -#: ../../docstring aiogram.types.voice.Voice.file_size:1 of -msgid "" -"*Optional*. File size in bytes. It can be bigger than 2^31 and some " -"programming languages may have difficulty/silent defects in interpreting " -"it. But it has at most 52 significant bits, so a signed 64-bit integer or" -" double-precision float type are safe for storing this value." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/web_app_data.po b/docs/locale/en/LC_MESSAGES/api/types/web_app_data.po deleted file mode 100644 index 812f3b5c..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/web_app_data.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/web_app_data.rst:3 -msgid "WebAppData" -msgstr "" - -#: aiogram.types.web_app_data.WebAppData:1 of -msgid "" -"Describes data sent from a `Web App " -"`_ to the bot." -msgstr "" - -#: aiogram.types.web_app_data.WebAppData:3 of -msgid "Source: https://core.telegram.org/bots/api#webappdata" -msgstr "" - -#: ../../docstring aiogram.types.web_app_data.WebAppData.data:1 of -msgid "" -"The data. Be aware that a bad client can send arbitrary data in this " -"field." -msgstr "" - -#: ../../docstring aiogram.types.web_app_data.WebAppData.button_text:1 of -msgid "" -"Text of the *web_app* keyboard button from which the Web App was opened. " -"Be aware that a bad client can send arbitrary data in this field." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/web_app_info.po b/docs/locale/en/LC_MESSAGES/api/types/web_app_info.po deleted file mode 100644 index 4a2e122f..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/web_app_info.po +++ /dev/null @@ -1,37 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/web_app_info.rst:3 -msgid "WebAppInfo" -msgstr "" - -#: aiogram.types.web_app_info.WebAppInfo:1 of -msgid "Describes a `Web App `_." -msgstr "" - -#: aiogram.types.web_app_info.WebAppInfo:3 of -msgid "Source: https://core.telegram.org/bots/api#webappinfo" -msgstr "" - -#: ../../docstring aiogram.types.web_app_info.WebAppInfo.url:1 of -msgid "" -"An HTTPS URL of a Web App to be opened with additional data as specified " -"in `Initializing Web Apps `_" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/webhook_info.po b/docs/locale/en/LC_MESSAGES/api/types/webhook_info.po deleted file mode 100644 index f8433f9d..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/webhook_info.po +++ /dev/null @@ -1,82 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../api/types/webhook_info.rst:3 -msgid "WebhookInfo" -msgstr "" - -#: aiogram.types.webhook_info.WebhookInfo:1 of -msgid "Describes the current status of a webhook." -msgstr "" - -#: aiogram.types.webhook_info.WebhookInfo:3 of -msgid "Source: https://core.telegram.org/bots/api#webhookinfo" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.url:1 of -msgid "Webhook URL, may be empty if webhook is not set up" -msgstr "" - -#: ../../docstring -#: aiogram.types.webhook_info.WebhookInfo.has_custom_certificate:1 of -msgid "" -":code:`True`, if a custom certificate was provided for webhook " -"certificate checks" -msgstr "" - -#: ../../docstring -#: aiogram.types.webhook_info.WebhookInfo.pending_update_count:1 of -msgid "Number of updates awaiting delivery" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.ip_address:1 of -msgid "*Optional*. Currently used webhook IP address" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.last_error_date:1 of -msgid "" -"*Optional*. Unix time for the most recent error that happened when trying" -" to deliver an update via webhook" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.last_error_message:1 -#: of -msgid "" -"*Optional*. Error message in human-readable format for the most recent " -"error that happened when trying to deliver an update via webhook" -msgstr "" - -#: ../../docstring -#: aiogram.types.webhook_info.WebhookInfo.last_synchronization_error_date:1 of -msgid "" -"*Optional*. Unix time of the most recent error that happened when trying " -"to synchronize available updates with Telegram datacenters" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.max_connections:1 of -msgid "" -"*Optional*. The maximum allowed number of simultaneous HTTPS connections " -"to the webhook for update delivery" -msgstr "" - -#: ../../docstring aiogram.types.webhook_info.WebhookInfo.allowed_updates:1 of -msgid "" -"*Optional*. A list of update types the bot is subscribed to. Defaults to " -"all update types except *chat_member*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po b/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po deleted file mode 100644 index 4fee2157..00000000 --- a/docs/locale/en/LC_MESSAGES/api/types/write_access_allowed.po +++ /dev/null @@ -1,46 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/types/write_access_allowed.rst:3 -msgid "WriteAccessAllowed" -msgstr "" - -#: aiogram.types.write_access_allowed.WriteAccessAllowed:1 of -msgid "" -"This object represents a service message about a user allowing a bot to " -"write messages after adding the bot to the attachment menu or launching a" -" Web App from a link." -msgstr "" - -#: aiogram.types.write_access_allowed.WriteAccessAllowed:3 of -msgid "Source: https://core.telegram.org/bots/api#writeaccessallowed" -msgstr "" - -#: ../../docstring -#: aiogram.types.write_access_allowed.WriteAccessAllowed.web_app_name:1 of -msgid "*Optional*. Name of the Web App which was launched from a link" -msgstr "" - -#~ msgid "" -#~ "This object represents a service message" -#~ " about a user allowing a bot " -#~ "added to the attachment menu to " -#~ "write messages. Currently holds no " -#~ "information." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/api/upload_file.po b/docs/locale/en/LC_MESSAGES/api/upload_file.po deleted file mode 100644 index a7ff966a..00000000 --- a/docs/locale/en/LC_MESSAGES/api/upload_file.po +++ /dev/null @@ -1,195 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../api/upload_file.rst:5 -msgid "How to upload file?" -msgstr "" - -#: ../../api/upload_file.rst:7 -msgid "" -"As says `official Telegram Bot API documentation " -"`_ there are three ways" -" to send files (photos, stickers, audio, media, etc.):" -msgstr "" - -#: ../../api/upload_file.rst:10 -msgid "" -"If the file is already stored somewhere on the Telegram servers or file " -"is available by the URL, you don't need to reupload it." -msgstr "" - -#: ../../api/upload_file.rst:13 -msgid "" -"But if you need to upload a new file just use subclasses of `InputFile " -"`__." -msgstr "" - -#: ../../api/upload_file.rst:15 -msgid "Here are the three different available builtin types of input file:" -msgstr "" - -#: ../../api/upload_file.rst:17 -msgid "" -":class:`aiogram.types.input_file.FSInputFile` - `uploading from file " -"system <#upload-from-file-system>`__" -msgstr "" - -#: ../../api/upload_file.rst:18 -msgid "" -":class:`aiogram.types.input_file.BufferedInputFile` - `uploading from " -"buffer <#upload-from-buffer>`__" -msgstr "" - -#: ../../api/upload_file.rst:19 -msgid "" -":class:`aiogram.types.input_file.URLInputFile` - `uploading from URL " -"<#upload-from-url>`__" -msgstr "" - -#: ../../api/upload_file.rst:23 -msgid "**Be respectful with Telegram**" -msgstr "" - -#: ../../api/upload_file.rst:25 -msgid "" -"Instances of `InputFile` are reusable. That's mean you can create " -"instance of InputFile and sent this file multiple times but Telegram does" -" not recommend to do that and when you upload file once just save their " -"`file_id` and use it in next times." -msgstr "" - -#: ../../api/upload_file.rst:31 -msgid "Upload from file system" -msgstr "" - -#: ../../api/upload_file.rst:33 -msgid "By first step you will need to import InputFile wrapper:" -msgstr "" - -#: ../../api/upload_file.rst:39 -msgid "Then you can use it:" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.__init__:1 -#: aiogram.types.input_file.FSInputFile.__init__:1 of -msgid "Represents object for uploading files from filesystem" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.__init__ -#: aiogram.types.input_file.FSInputFile.__init__ of -msgid "Parameters" -msgstr "" - -#: aiogram.types.input_file.FSInputFile.__init__:3 of -msgid "Path to file" -msgstr "" - -#: aiogram.types.input_file.FSInputFile.__init__:4 of -msgid "" -"Filename to be propagated to telegram. By default, will be parsed from " -"path" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.__init__:5 -#: aiogram.types.input_file.FSInputFile.__init__:6 of -msgid "Uploading chunk size" -msgstr "" - -#: ../../api/upload_file.rst:52 -msgid "Upload from buffer" -msgstr "" - -#: ../../api/upload_file.rst:54 -msgid "" -"Files can be also passed from buffer (For example you generate image " -"using `Pillow `_ and you want " -"to send it to Telegram):" -msgstr "" - -#: ../../api/upload_file.rst:58 ../../api/upload_file.rst:80 -msgid "Import wrapper:" -msgstr "" - -#: ../../api/upload_file.rst:64 ../../api/upload_file.rst:86 -msgid "And then you can use it:" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.__init__:3 of -msgid "Bytes" -msgstr "" - -#: aiogram.types.input_file.BufferedInputFile.__init__:4 of -msgid "Filename to be propagated to telegram." -msgstr "" - -#: ../../api/upload_file.rst:74 -msgid "Upload from url" -msgstr "" - -#: ../../api/upload_file.rst:76 -msgid "" -"If you need to upload a file from another server, but the direct link is " -"bound to your server's IP, or you want to bypass native `upload limits " -"`_ by URL, you can use " -":obj:`aiogram.types.input_file.URLInputFile`." -msgstr "" - -#~ msgid "Create buffer from file" -#~ msgstr "" - -#~ msgid "Returns" -#~ msgstr "" - -#~ msgid "instance of :obj:`BufferedInputFile`" -#~ msgstr "" - -#~ msgid "" -#~ "But if you need to upload new " -#~ "file just use subclasses of `InputFile" -#~ " `__." -#~ msgstr "" - -#~ msgid "Here is available three different builtin types of input file:" -#~ msgstr "" - -#~ msgid "" -#~ "Instances of `InputFile` is reusable. " -#~ "That's mean you can create instance " -#~ "of InputFile and sent this file " -#~ "multiple times but Telegram is not " -#~ "recommend to do that and when you" -#~ " upload file once just save their " -#~ "`file_id` and use it in next " -#~ "times." -#~ msgstr "" - -#~ msgid "" -#~ "Files can be also passed from " -#~ "buffer (For example you generate image" -#~ " using `Pillow " -#~ "`_ and the " -#~ "want's to sent it to the " -#~ "Telegram):" -#~ msgstr "" - -#~ msgid "" -#~ "But if you need to upload a " -#~ "new file just use subclasses of " -#~ "`InputFile `__." -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/changelog.po b/docs/locale/en/LC_MESSAGES/changelog.po deleted file mode 100644 index ff98abc8..00000000 --- a/docs/locale/en/LC_MESSAGES/changelog.po +++ /dev/null @@ -1,3159 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../../CHANGES.rst:3 -msgid "Changelog" -msgstr "" - -#: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-26)" -msgstr "" - -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:92 ../../../CHANGES.rst:137 -#: ../../../CHANGES.rst:207 ../../../CHANGES.rst:393 ../../../CHANGES.rst:456 -#: ../../../CHANGES.rst:505 ../../../CHANGES.rst:566 ../../../CHANGES.rst:624 -#: ../../../CHANGES.rst:670 ../../../CHANGES.rst:718 ../../../CHANGES.rst:774 -#: ../../../CHANGES.rst:859 ../../../CHANGES.rst:891 -#: ../../[towncrier-fragments]:5 -msgid "Bugfixes" -msgstr "" - -#: ../../[towncrier-fragments]:7 -msgid "" -"Fixed magic :code:`.as_(...)` operation for values that can be " -"interpreted as `False` (e.g. `0`). `#1281 " -"`_" -msgstr "" - -#: ../../[towncrier-fragments]:9 -msgid "" -"Italic markdown from utils now uses correct decorators `#1282 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:20 -msgid "3.0.0rc2 (2023-08-18)" -msgstr "" - -#: ../../../CHANGES.rst:25 -msgid "" -"Fixed missing message content types (:code:`ContentType.USER_SHARED`, " -":code:`ContentType.CHAT_SHARED`) `#1252 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:27 -msgid "" -"Fixed nested hashtag, cashtag and email message entities not being parsed" -" correctly when these entities are inside another entity. `#1259 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:29 -msgid "" -"Moved global filters check placement into router to add chance to pass " -"context from global filters into handlers in the same way as it possible " -"in other places `#1266 `_" -msgstr "" - -#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:150 -#: ../../../CHANGES.rst:235 ../../../CHANGES.rst:468 ../../../CHANGES.rst:518 -#: ../../../CHANGES.rst:898 -msgid "Improved Documentation" -msgstr "" - -#: ../../../CHANGES.rst:37 -msgid "" -"Added error handling example `examples/error_handling.py` `#1099 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:39 -msgid "" -"Added a few words about skipping pending updates `#1251 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:41 -msgid "" -"Added a section on Dependency Injection technology `#1253 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:43 -msgid "" -"This update includes the addition of a multi-file bot example to the " -"repository. `#1254 `_" -msgstr "" - -#: ../../../CHANGES.rst:45 -msgid "" -"Refactored examples code to use aiogram enumerations and enhanced chat " -"messages with markdown beautification's for a more user-friendly display." -" `#1256 `_" -msgstr "" - -#: ../../../CHANGES.rst:48 -msgid "" -"Supplemented \"Finite State Machine\" section in Migration FAQ `#1264 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:50 -msgid "" -"Removed extra param in docstring of TelegramEventObserver's filter method" -" and fixed typo in I18n documentation. `#1268 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:112 ../../../CHANGES.rst:251 -#: ../../../CHANGES.rst:402 ../../../CHANGES.rst:479 ../../../CHANGES.rst:532 -#: ../../../CHANGES.rst:583 ../../../CHANGES.rst:637 ../../../CHANGES.rst:679 -#: ../../../CHANGES.rst:725 ../../../CHANGES.rst:785 ../../../CHANGES.rst:806 -#: ../../../CHANGES.rst:829 ../../../CHANGES.rst:866 ../../../CHANGES.rst:905 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:58 -msgid "" -"Enhanced the warning message in dispatcher to include a JSON dump of the " -"update when update type is not known. `#1269 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:60 -msgid "" -"Added support for `Bot API 6.8 `_ `#1275 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:65 -msgid "3.0.0rc1 (2023-08-06)" -msgstr "" - -#: ../../../CHANGES.rst:68 ../../../CHANGES.rst:126 ../../../CHANGES.rst:168 -#: ../../../CHANGES.rst:331 ../../../CHANGES.rst:431 ../../../CHANGES.rst:491 -#: ../../../CHANGES.rst:542 ../../../CHANGES.rst:615 ../../../CHANGES.rst:656 -#: ../../../CHANGES.rst:694 ../../../CHANGES.rst:742 ../../../CHANGES.rst:818 -#: ../../../CHANGES.rst:851 ../../../CHANGES.rst:882 -msgid "Features" -msgstr "" - -#: ../../../CHANGES.rst:70 -msgid "Added Currency enum. You can use it like this:" -msgstr "" - -#: ../../../CHANGES.rst:82 -msgid "`#1194 `_" -msgstr "" - -#: ../../../CHANGES.rst:83 -msgid "" -"Updated keyboard builders with new methods for integrating buttons and " -"keyboard creation more seamlessly. Added functionality to create buttons " -"from existing markup and attach another builder. This improvement aims to" -" make the keyboard building process more user-friendly and flexible. " -"`#1236 `_" -msgstr "" - -#: ../../../CHANGES.rst:87 -msgid "" -"Added support for message_thread_id in ChatActionSender `#1249 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:94 -msgid "" -"Fixed polling startup when \"bot\" key is passed manually into dispatcher" -" workflow data `#1242 `_" -msgstr "" - -#: ../../../CHANGES.rst:96 -msgid "Added codegen configuration for lost shortcuts:" -msgstr "" - -#: ../../../CHANGES.rst:98 -msgid "ShippingQuery.answer" -msgstr "" - -#: ../../../CHANGES.rst:99 -msgid "PreCheckoutQuery.answer" -msgstr "" - -#: ../../../CHANGES.rst:100 -msgid "Message.delete_reply_markup" -msgstr "" - -#: ../../../CHANGES.rst:101 -msgid "`#1244 `_" -msgstr "" - -#: ../../../CHANGES.rst:107 -msgid "" -"Added documentation for webhook and polling modes. `#1241 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:114 -msgid "" -"Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" -" Bot` argument to the :code:`.read(...)` method, so, from now " -"URLInputFile can be used without specifying bot instance. `#1238 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:118 -msgid "" -"Code-generated :code:`__init__` typehints in types and methods to make " -"IDE happy without additional pydantic plugin `#1245 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:123 -msgid "3.0.0b9 (2023-07-30)" -msgstr "" - -#: ../../../CHANGES.rst:128 -msgid "" -"Added new shortcuts for " -":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " -"message to chat that member joined/left. `#1234 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:131 -msgid "" -"Added new shortcuts for " -":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " -"access to sending messages to users who wants to join to chat. `#1235 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:139 -msgid "" -"Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:141 -msgid "" -"Added model validation to remove UNSET before field validation. This " -"change was necessary to correctly handle parse_mode where 'UNSET' is used" -" as a sentinel value. Without the removal of 'UNSET', it would create " -"issues when passed to model initialization from Bot.method_name. 'UNSET' " -"was also added to typing. `#1233 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:146 -msgid "Updated pydantic to 2.1 with few bugfixes" -msgstr "" - -#: ../../../CHANGES.rst:152 -msgid "" -"Improved docs, added basic migration guide (will be expanded later) " -"`#1143 `_" -msgstr "" - -#: ../../../CHANGES.rst:157 ../../../CHANGES.rst:242 ../../../CHANGES.rst:525 -msgid "Deprecations and Removals" -msgstr "" - -#: ../../../CHANGES.rst:159 -msgid "" -"Removed the use of the context instance (Bot.get_current) from all " -"placements that were used previously. This is to avoid the use of the " -"context instance in the wrong place. `#1230 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:165 -msgid "3.0.0b8 (2023-07-17)" -msgstr "" - -#: ../../../CHANGES.rst:170 -msgid "" -"Added possibility to use custom events in routers (If router does not " -"support custom event it does not break and passes it to included " -"routers). `#1147 `_" -msgstr "" - -#: ../../../CHANGES.rst:172 -msgid "Added support for FSM in Forum topics." -msgstr "" - -#: ../../../CHANGES.rst:174 -msgid "The strategy can be changed in dispatcher:" -msgstr "" - -#: ../../../CHANGES.rst:187 -msgid "" -"If you have implemented you own storages you should extend record key " -"generation with new one attribute - :code:`thread_id`" -msgstr "" - -#: ../../../CHANGES.rst:189 -msgid "`#1161 `_" -msgstr "" - -#: ../../../CHANGES.rst:190 -msgid "Improved CallbackData serialization." -msgstr "" - -#: ../../../CHANGES.rst:192 -msgid "Minimized UUID (hex without dashes)" -msgstr "" - -#: ../../../CHANGES.rst:193 -msgid "Replaced bool values with int (true=1, false=0)" -msgstr "" - -#: ../../../CHANGES.rst:194 -msgid "`#1163 `_" -msgstr "" - -#: ../../../CHANGES.rst:195 -msgid "" -"Added a tool to make text formatting flexible and easy. More details on " -"the :ref:`corresponding documentation page ` `#1172 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:198 -msgid "" -"Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:200 -msgid "" -"Made :code:`allowed_updates` list to revolve automatically in " -"start_polling method if not set explicitly. `#1178 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:202 -msgid "" -"Added possibility to pass custom headers to :class:`URLInputFile` object " -"`#1191 `_" -msgstr "" - -#: ../../../CHANGES.rst:209 -msgid "" -"Change type of result in InlineQueryResult enum for " -":code:`InlineQueryResultCachedMpeg4Gif` and " -":code:`InlineQueryResultMpeg4Gif` to more correct according to " -"documentation." -msgstr "" - -#: ../../../CHANGES.rst:212 -msgid "" -"Change regexp for entities parsing to more correct " -"(:code:`InlineQueryResultType.yml`). `#1146 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:214 -msgid "" -"Fixed signature of startup/shutdown events to include the " -":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:216 -msgid "" -"Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " -"`#1160 `_" -msgstr "" - -#: ../../../CHANGES.rst:218 -msgid "" -"Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:220 -msgid "" -"Fixed the markdown spoiler parser. `#1176 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:222 -msgid "" -"Fixed workflow data propagation `#1196 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:224 -msgid "" -"Fixed the serialization error associated with nested subtypes like " -"InputMedia, ChatMember, etc." -msgstr "" - -#: ../../../CHANGES.rst:227 -msgid "" -"The previously generated code resulted in an invalid schema under " -"pydantic v2, which has stricter type parsing. Hence, subtypes without the" -" specification of all subtype unions were generating an empty object. " -"This has been rectified now. `#1213 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:237 -msgid "" -"Changed small grammar typos for :code:`upload_file` `#1133 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:244 -msgid "" -"Removed text filter in due to is planned to remove this filter few " -"versions ago." -msgstr "" - -#: ../../../CHANGES.rst:246 -msgid "" -"Use :code:`F.text` instead `#1170 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:253 -msgid "" -"Added full support of `Bot API 6.6 `_" -msgstr "" - -#: ../../../CHANGES.rst:257 -msgid "" -"Note that this issue has breaking changes described in in the Bot API " -"changelog, this changes is not breaking in the API but breaking inside " -"aiogram because Beta stage is not finished." -msgstr "" - -#: ../../../CHANGES.rst:260 -msgid "`#1139 `_" -msgstr "" - -#: ../../../CHANGES.rst:261 -msgid "" -"Added full support of `Bot API 6.7 `_" -msgstr "" - -#: ../../../CHANGES.rst:265 -msgid "" -"Note that arguments *switch_pm_parameter* and *switch_pm_text* was " -"deprecated and should be changed to *button* argument as described in API" -" docs." -msgstr "" - -#: ../../../CHANGES.rst:267 -msgid "`#1168 `_" -msgstr "" - -#: ../../../CHANGES.rst:268 -msgid "Updated `Pydantic to V2 `_" -msgstr "" - -#: ../../../CHANGES.rst:272 -msgid "Be careful, not all libraries is already updated to using V2" -msgstr "" - -#: ../../../CHANGES.rst:273 -msgid "`#1202 `_" -msgstr "" - -#: ../../../CHANGES.rst:274 -msgid "" -"Added global defaults :code:`disable_web_page_preview` and " -":code:`protect_content` in addition to :code:`parse_mode` to the Bot " -"instance, reworked internal request builder mechanism. `#1142 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:277 -msgid "" -"Removed bot parameters from storages `#1144 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:280 -msgid "" -"Replaced ContextVar's with a new feature called `Validation Context " -"`_" -" in Pydantic to improve the clarity, usability, and versatility of " -"handling the Bot instance within method shortcuts." -msgstr "" - -#: ../../../CHANGES.rst:285 -msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" -msgstr "" - -#: ../../../CHANGES.rst:286 -msgid "`#1210 `_" -msgstr "" - -#: ../../../CHANGES.rst:287 -msgid "Updated magic-filter with new features" -msgstr "" - -#: ../../../CHANGES.rst:289 -msgid "Added hint for :code:`len(F)` error" -msgstr "" - -#: ../../../CHANGES.rst:290 -msgid "Added not in operation" -msgstr "" - -#: ../../../CHANGES.rst:291 -msgid "`#1221 `_" -msgstr "" - -#: ../../../CHANGES.rst:295 -msgid "3.0.0b7 (2023-02-18)" -msgstr "" - -#: ../../../CHANGES.rst:299 -msgid "" -"Note that this version has incompatibility with Python 3.8-3.9 in case " -"when you create an instance of Dispatcher outside of the any coroutine." -msgstr "" - -#: ../../../CHANGES.rst:301 -msgid "Sorry for the inconvenience, it will be fixed in the next version." -msgstr "" - -#: ../../../CHANGES.rst:303 -msgid "This code will not work:" -msgstr "" - -#: ../../../CHANGES.rst:315 -msgid "But if you change it like this it should works as well:" -msgstr "" - -#: ../../../CHANGES.rst:333 -msgid "Added missing shortcuts, new enums, reworked old stuff" -msgstr "" - -#: ../../../CHANGES.rst:335 -msgid "" -"**Breaking** All previously added enums is re-generated in new place - " -"`aiogram.enums` instead of `aiogram.types`" -msgstr "" - -#: ../../../CHANGES.rst:353 -msgid "" -"**Added enums:** " -":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," -msgstr "" - -#: ../../../CHANGES.rst:339 -msgid "" -":class:`aiogram.enums.chat_action.ChatAction`, " -":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " -":class:`aiogram.enums.chat_type.ChatType`, " -":class:`aiogram.enums.content_type.ContentType`, " -":class:`aiogram.enums.dice_emoji.DiceEmoji`, " -":class:`aiogram.enums.inline_query_result_type.InlineQueryResultType`, " -":class:`aiogram.enums.input_media_type.InputMediaType`, " -":class:`aiogram.enums.mask_position_point.MaskPositionPoint`, " -":class:`aiogram.enums.menu_button_type.MenuButtonType`, " -":class:`aiogram.enums.message_entity_type.MessageEntityType`, " -":class:`aiogram.enums.parse_mode.ParseMode`, " -":class:`aiogram.enums.poll_type.PollType`, " -":class:`aiogram.enums.sticker_type.StickerType`, " -":class:`aiogram.enums.topic_icon_color.TopicIconColor`, " -":class:`aiogram.enums.update_type.UpdateType`," -msgstr "" - -#: ../../../CHANGES.rst:355 -msgid "**Added shortcuts**:" -msgstr "" - -#: ../../../CHANGES.rst:380 -msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," -msgstr "" - -#: ../../../CHANGES.rst:358 -msgid "" -":meth:`aiogram.types.chat.Chat.delete_message`, " -":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " -":meth:`aiogram.types.chat.Chat.edit_invite_link`, " -":meth:`aiogram.types.chat.Chat.create_invite_link`, " -":meth:`aiogram.types.chat.Chat.export_invite_link`, " -":meth:`aiogram.types.chat.Chat.do`, " -":meth:`aiogram.types.chat.Chat.delete_sticker_set`, " -":meth:`aiogram.types.chat.Chat.set_sticker_set`, " -":meth:`aiogram.types.chat.Chat.get_member`, " -":meth:`aiogram.types.chat.Chat.get_member_count`, " -":meth:`aiogram.types.chat.Chat.leave`, " -":meth:`aiogram.types.chat.Chat.unpin_all_messages`, " -":meth:`aiogram.types.chat.Chat.unpin_message`, " -":meth:`aiogram.types.chat.Chat.pin_message`, " -":meth:`aiogram.types.chat.Chat.set_administrator_custom_title`, " -":meth:`aiogram.types.chat.Chat.set_permissions`, " -":meth:`aiogram.types.chat.Chat.promote`, " -":meth:`aiogram.types.chat.Chat.restrict`, " -":meth:`aiogram.types.chat.Chat.unban`, " -":meth:`aiogram.types.chat.Chat.ban`, " -":meth:`aiogram.types.chat.Chat.set_description`, " -":meth:`aiogram.types.chat.Chat.set_title`, " -":meth:`aiogram.types.chat.Chat.delete_photo`, " -":meth:`aiogram.types.chat.Chat.set_photo`," -msgstr "" - -#: ../../../CHANGES.rst:382 -msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," -msgstr "" - -#: ../../../CHANGES.rst:383 -msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," -msgstr "" - -#: ../../../CHANGES.rst:384 -msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" -msgstr "" - -#: ../../../CHANGES.rst:385 -msgid "`#952 `_" -msgstr "" - -#: ../../../CHANGES.rst:386 -msgid "" -"Added :ref:`callback answer ` feature `#1091 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:388 -msgid "" -"Added a method that allows you to compactly register routers `#1117 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:395 -msgid "" -"Check status code when downloading file `#816 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:397 -msgid "" -"Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " -"filter `#1106 `_" -msgstr "" - -#: ../../../CHANGES.rst:404 -msgid "" -"Added integration with new code-generator named `Butcher " -"`_ `#1069 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:406 -msgid "" -"Added full support of `Bot API 6.4 `_ `#1088 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:408 -msgid "" -"Updated package metadata, moved build internals from Poetry to Hatch, " -"added contributing guides. `#1095 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:410 -msgid "" -"Added full support of `Bot API 6.5 `_" -msgstr "" - -#: ../../../CHANGES.rst:414 -msgid "" -"Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " -"updated without backward compatibility, so now this object has no " -":code:`can_send_media_messages` attribute" -msgstr "" - -#: ../../../CHANGES.rst:416 -msgid "`#1112 `_" -msgstr "" - -#: ../../../CHANGES.rst:417 -msgid "" -"Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " -"unexpected keyword argument ''` with a more understandable one for " -"developers and with a link to the documentation. `#1114 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:420 -msgid "" -"Added possibility to reply into webhook with files `#1120 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:422 -msgid "" -"Reworked graceful shutdown. Added method to stop polling. Now polling " -"started from dispatcher can be stopped by signals gracefully without " -"errors (on Linux and Mac). `#1124 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:428 -msgid "3.0.0b6 (2022-11-18)" -msgstr "" - -#: ../../../CHANGES.rst:433 -msgid "" -"(again) Added possibility to combine filters with an *and*/*or* " -"operations." -msgstr "" - -#: ../../../CHANGES.rst:435 -msgid "" -"Read more in \":ref:`Combining filters `\" " -"documentation section `#1018 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:437 -msgid "Added following methods to ``Message`` class:" -msgstr "" - -#: ../../../CHANGES.rst:439 -msgid ":code:`Message.forward(...)`" -msgstr "" - -#: ../../../CHANGES.rst:440 -msgid ":code:`Message.edit_media(...)`" -msgstr "" - -#: ../../../CHANGES.rst:441 -msgid ":code:`Message.edit_live_location(...)`" -msgstr "" - -#: ../../../CHANGES.rst:442 -msgid ":code:`Message.stop_live_location(...)`" -msgstr "" - -#: ../../../CHANGES.rst:443 -msgid ":code:`Message.pin(...)`" -msgstr "" - -#: ../../../CHANGES.rst:444 -msgid ":code:`Message.unpin()`" -msgstr "" - -#: ../../../CHANGES.rst:445 -msgid "`#1030 `_" -msgstr "" - -#: ../../../CHANGES.rst:446 -msgid "Added following methods to :code:`User` class:" -msgstr "" - -#: ../../../CHANGES.rst:448 -msgid ":code:`User.mention_markdown(...)`" -msgstr "" - -#: ../../../CHANGES.rst:449 -msgid ":code:`User.mention_html(...)`" -msgstr "" - -#: ../../../CHANGES.rst:450 -msgid "`#1049 `_" -msgstr "" - -#: ../../../CHANGES.rst:451 -msgid "" -"Added full support of `Bot API 6.3 `_ `#1057 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:458 -msgid "" -"Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " -"added missing arguments `#1047 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:460 -msgid "Fixed copy and forward in:" -msgstr "" - -#: ../../../CHANGES.rst:462 -msgid ":code:`Message.answer(...)`" -msgstr "" - -#: ../../../CHANGES.rst:463 -msgid ":code:`Message.copy_to(...)`" -msgstr "" - -#: ../../../CHANGES.rst:464 -msgid "`#1064 `_" -msgstr "" - -#: ../../../CHANGES.rst:470 -msgid "" -"Fixed UA translations in index.po `#1017 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:472 -msgid "" -"Fix typehints for :code:`Message`, :code:`reply_media_group` and " -":code:`answer_media_group` methods `#1029 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:474 -msgid "" -"Removed an old now non-working feature `#1060 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:481 -msgid "" -"Enabled testing on Python 3.11 `#1044 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:483 -msgid "" -"Added a mandatory dependency :code:`certifi` in due to in some cases on " -"systems that doesn't have updated ca-certificates the requests to Bot API" -" fails with reason :code:`[SSL: CERTIFICATE_VERIFY_FAILED] certificate " -"verify failed: self signed certificate in certificate chain` `#1066 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:488 -msgid "3.0.0b5 (2022-10-02)" -msgstr "" - -#: ../../../CHANGES.rst:493 -msgid "" -"Add PyPy support and run tests under PyPy `#985 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:495 -msgid "" -"Added message text to aiogram exceptions representation `#988 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:497 -msgid "" -"Added warning about using magic filter from `magic_filter` instead of " -"`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " -"of `from magic_filter import F` `#990 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:500 -msgid "" -"Added more detailed error when server response can't be deserialized. " -"This feature will help to debug unexpected responses from the Server " -"`#1014 `_" -msgstr "" - -#: ../../../CHANGES.rst:507 -msgid "" -"Reworked error event, introduced " -":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:509 -msgid "" -"Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:511 -msgid "" -"Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " -"`#995 `_" -msgstr "" - -#: ../../../CHANGES.rst:513 -msgid "" -"Fixed empty mention in command parsing, now it will be None instead of an" -" empty string `#1013 `_" -msgstr "" - -#: ../../../CHANGES.rst:520 -msgid "" -"Initialized Docs translation (added Ukrainian language) `#925 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:527 -msgid "" -"Removed filters factory as described in corresponding issue. `#942 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:534 -msgid "" -"Now Router/Dispatcher accepts only keyword arguments. `#982 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:539 -msgid "3.0.0b4 (2022-08-14)" -msgstr "" - -#: ../../../CHANGES.rst:544 -msgid "" -"Add class helper ChatAction for constants that Telegram BotAPI uses in " -"sendChatAction request. In my opinion, this will help users and will also" -" improve compatibility with 2.x version where similar class was called " -"\"ChatActions\". `#803 `_" -msgstr "" - -#: ../../../CHANGES.rst:548 -msgid "Added possibility to combine filters or invert result" -msgstr "" - -#: ../../../CHANGES.rst:550 -msgid "Example:" -msgstr "" - -#: ../../../CHANGES.rst:558 -msgid "`#894 `_" -msgstr "" - -#: ../../../CHANGES.rst:559 -msgid "" -"Fixed type hints for redis TTL params. `#922 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:561 -msgid "" -"Added `full_name` shortcut for `Chat` object `#929 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:568 -msgid "" -"Fixed false-positive coercing of Union types in API methods `#901 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:570 -msgid "Added 3 missing content types:" -msgstr "" - -#: ../../../CHANGES.rst:572 -msgid "proximity_alert_triggered" -msgstr "" - -#: ../../../CHANGES.rst:573 -msgid "supergroup_chat_created" -msgstr "" - -#: ../../../CHANGES.rst:574 -msgid "channel_chat_created" -msgstr "" - -#: ../../../CHANGES.rst:575 -msgid "`#906 `_" -msgstr "" - -#: ../../../CHANGES.rst:576 -msgid "" -"Fixed the ability to compare the state, now comparison to copy of the " -"state will return `True`. `#927 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:578 -msgid "" -"Fixed default lock kwargs in RedisEventIsolation. `#972 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:585 -msgid "" -"Restrict including routers with strings `#896 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:587 -msgid "" -"Changed CommandPatterType to CommandPatternType in " -"`aiogram/dispatcher/filters/command.py` `#907 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:589 -msgid "" -"Added full support of `Bot API 6.1 `_ `#936 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:591 -msgid "**Breaking!** More flat project structure" -msgstr "" - -#: ../../../CHANGES.rst:593 -msgid "These packages was moved, imports in your code should be fixed:" -msgstr "" - -#: ../../../CHANGES.rst:595 -msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" -msgstr "" - -#: ../../../CHANGES.rst:596 -msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" -msgstr "" - -#: ../../../CHANGES.rst:597 -msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" -msgstr "" - -#: ../../../CHANGES.rst:598 -msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" -msgstr "" - -#: ../../../CHANGES.rst:599 -msgid "" -":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " -"(single module instead of package)" -msgstr "" - -#: ../../../CHANGES.rst:600 -msgid "`#938 `_" -msgstr "" - -#: ../../../CHANGES.rst:601 -msgid "" -"Removed deprecated :code:`router._handler` and " -":code:`router.register__handler` methods. `#941 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:603 -msgid "" -"Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" -" `_" -msgstr "" - -#: ../../../CHANGES.rst:605 -msgid "" -"`MessageEntity` method `get_text` was removed and `extract` was renamed " -"to `extract_from` `#944 `_" -msgstr "" - -#: ../../../CHANGES.rst:607 -msgid "" -"Added full support of `Bot API 6.2 `_ `#975 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:612 -msgid "3.0.0b3 (2022-04-19)" -msgstr "" - -#: ../../../CHANGES.rst:617 -msgid "" -"Added possibility to get command magic result as handler argument `#889 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:619 -msgid "" -"Added full support of `Telegram Bot API 6.0 " -"`_ `#890 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:626 -msgid "" -"Fixed I18n lazy-proxy. Disabled caching. `#839 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:628 -msgid "" -"Added parsing of spoiler message entity `#865 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:630 -msgid "" -"Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:632 -msgid "" -"Fixed CallbackData factory parsing IntEnum's `#885 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:639 -msgid "" -"Added automated check that pull-request adds a changes description to " -"**CHANGES** directory `#873 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:641 -msgid "" -"Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " -"behaviour when message has no text. The empty string will be used instead" -" of raising error. `#874 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:644 -msgid "" -"Used `redis-py` instead of `aioredis` package in due to this packages was" -" merged into single one `#882 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:646 -msgid "" -"Solved common naming problem with middlewares that confusing too much " -"developers - now you can't see the `middleware` and `middlewares` " -"attributes at the same point because this functionality encapsulated to " -"special interface. `#883 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:653 -msgid "3.0.0b2 (2022-02-19)" -msgstr "" - -#: ../../../CHANGES.rst:658 -msgid "" -"Added possibility to pass additional arguments into the aiohttp webhook " -"handler to use this arguments inside handlers as the same as it possible " -"in polling mode. `#785 `_" -msgstr "" - -#: ../../../CHANGES.rst:661 -msgid "" -"Added possibility to add handler flags via decorator (like `pytest.mark` " -"decorator but `aiogram.flags`) `#836 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:663 -msgid "" -"Added :code:`ChatActionSender` utility to automatically sends chat action" -" while long process is running." -msgstr "" - -#: ../../../CHANGES.rst:665 -msgid "" -"It also can be used as message middleware and can be customized via " -":code:`chat_action` flag. `#837 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:672 -msgid "" -"Fixed unexpected behavior of sequences in the StateFilter. `#791 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:674 -msgid "" -"Fixed exceptions filters `#827 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:681 -msgid "" -"Logger name for processing events is changed to :code:`aiogram.events`. " -"`#830 `_" -msgstr "" - -#: ../../../CHANGES.rst:683 -msgid "" -"Added full support of Telegram Bot API 5.6 and 5.7 `#835 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:685 -msgid "" -"**BREAKING** Events isolation mechanism is moved from FSM storages to " -"standalone managers `#838 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:691 -msgid "3.0.0b1 (2021-12-12)" -msgstr "" - -#: ../../../CHANGES.rst:696 -msgid "Added new custom operation for MagicFilter named :code:`as_`" -msgstr "" - -#: ../../../CHANGES.rst:698 -msgid "Now you can use it to get magic filter result as handler argument" -msgstr "" - -#: ../../../CHANGES.rst:714 -msgid "`#759 `_" -msgstr "" - -#: ../../../CHANGES.rst:720 -msgid "" -"Fixed: Missing :code:`ChatMemberHandler` import in " -":code:`aiogram/dispatcher/handler` `#751 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:727 -msgid "" -"Check :code:`destiny` in case of no :code:`with_destiny` enabled in " -"RedisStorage key builder `#776 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:729 -msgid "" -"Added full support of `Bot API 5.5 `_ `#777 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:731 -msgid "" -"Stop using feature from #336. From now settings of client-session should " -"be placed as initializer arguments instead of changing instance " -"attributes. `#778 `_" -msgstr "" - -#: ../../../CHANGES.rst:733 -msgid "" -"Make TelegramAPIServer files wrapper in local mode bi-directional " -"(server-client, client-server) Now you can convert local path to server " -"path and server path to local path. `#779 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:739 -msgid "3.0.0a18 (2021-11-10)" -msgstr "" - -#: ../../../CHANGES.rst:744 -msgid "" -"Breaking: Changed the signature of the session middlewares Breaking: " -"Renamed AiohttpSession.make_request method parameter from call to method " -"to match the naming in the base class Added middleware for logging " -"outgoing requests `#716 `_" -msgstr "" - -#: ../../../CHANGES.rst:748 -msgid "" -"Improved description of filters resolving error. For example when you try" -" to pass wrong type of argument to the filter but don't know why filter " -"is not resolved now you can get error like this:" -msgstr "" - -#: ../../../CHANGES.rst:758 -msgid "`#717 `_" -msgstr "" - -#: ../../../CHANGES.rst:759 -msgid "" -"**Breaking internal API change** Reworked FSM Storage record keys " -"propagation `#723 `_" -msgstr "" - -#: ../../../CHANGES.rst:762 -msgid "" -"Implemented new filter named :code:`MagicData(magic_data)` that helps to " -"filter event by data from middlewares or other filters" -msgstr "" - -#: ../../../CHANGES.rst:764 -msgid "" -"For example your bot is running with argument named :code:`config` that " -"contains the application config then you can filter event by value from " -"this config:" -msgstr "" - -#: ../../../CHANGES.rst:770 -msgid "`#724 `_" -msgstr "" - -#: ../../../CHANGES.rst:776 -msgid "" -"Fixed I18n context inside error handlers `#726 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:778 -msgid "" -"Fixed bot session closing before emit shutdown `#734 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:780 -msgid "" -"Fixed: bound filter resolving does not require children routers `#736 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:787 -msgid "" -"Enabled testing on Python 3.10 Removed `async_lru` dependency (is " -"incompatible with Python 3.10) and replaced usage with protected property" -" `#719 `_" -msgstr "" - -#: ../../../CHANGES.rst:790 -msgid "" -"Converted README.md to README.rst and use it as base file for docs `#725 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:792 -msgid "Rework filters resolving:" -msgstr "" - -#: ../../../CHANGES.rst:794 -msgid "Automatically apply Bound Filters with default values to handlers" -msgstr "" - -#: ../../../CHANGES.rst:795 -msgid "Fix data transfer from parent to included routers filters" -msgstr "" - -#: ../../../CHANGES.rst:796 -msgid "`#727 `_" -msgstr "" - -#: ../../../CHANGES.rst:797 -msgid "" -"Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" -"changelog#november-5-2021 `#744 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:803 -msgid "3.0.0a17 (2021-09-24)" -msgstr "" - -#: ../../../CHANGES.rst:808 -msgid "" -"Added :code:`html_text` and :code:`md_text` to Message object `#708 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:810 -msgid "" -"Refactored I18n, added context managers for I18n engine and current " -"locale `#709 `_" -msgstr "" - -#: ../../../CHANGES.rst:815 -msgid "3.0.0a16 (2021-09-22)" -msgstr "" - -#: ../../../CHANGES.rst:820 -msgid "Added support of local Bot API server files downloading" -msgstr "" - -#: ../../../CHANGES.rst:822 -msgid "" -"When Local API is enabled files can be downloaded via " -"`bot.download`/`bot.download_file` methods. `#698 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:824 -msgid "" -"Implemented I18n & L10n support `#701 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:831 -msgid "" -"Covered by tests and docs KeyboardBuilder util `#699 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:833 -msgid "**Breaking!!!**. Refactored and renamed exceptions." -msgstr "" - -#: ../../../CHANGES.rst:835 -msgid "" -"Exceptions module was moved from :code:`aiogram.utils.exceptions` to " -":code:`aiogram.exceptions`" -msgstr "" - -#: ../../../CHANGES.rst:836 -msgid "Added prefix `Telegram` for all error classes" -msgstr "" - -#: ../../../CHANGES.rst:837 -msgid "`#700 `_" -msgstr "" - -#: ../../../CHANGES.rst:838 -msgid "" -"Replaced all :code:`pragma: no cover` marks via global " -":code:`.coveragerc` config `#702 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:840 -msgid "Updated dependencies." -msgstr "" - -#: ../../../CHANGES.rst:842 -msgid "" -"**Breaking for framework developers** Now all optional dependencies " -"should be installed as extra: `poetry install -E fast -E redis -E proxy " -"-E i18n -E docs` `#703 `_" -msgstr "" - -#: ../../../CHANGES.rst:848 -msgid "3.0.0a15 (2021-09-10)" -msgstr "" - -#: ../../../CHANGES.rst:853 -msgid "" -"Ability to iterate over all states in StatesGroup. Aiogram already had in" -" check for states group so this is relative feature. `#666 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:861 -msgid "" -"Fixed incorrect type checking in the " -":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:868 -msgid "" -"Disable ContentType filter by default `#668 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:870 -msgid "" -"Moved update type detection from Dispatcher to Update object `#669 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:872 -msgid "" -"Updated **pre-commit** config `#681 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:874 -msgid "" -"Reworked **handlers_in_use** util. Function moved to Router as method " -"**.resolve_used_update_types()** `#682 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:879 -msgid "3.0.0a14 (2021-08-17)" -msgstr "" - -#: ../../../CHANGES.rst:884 -msgid "" -"add aliases for edit/delete reply markup to Message `#662 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:886 -msgid "" -"Reworked outer middleware chain. Prevent to call many times the outer " -"middleware for each nested router `#664 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:893 -msgid "" -"Prepare parse mode for InputMessageContent in AnswerInlineQuery method " -"`#660 `_" -msgstr "" - -#: ../../../CHANGES.rst:900 -msgid "" -"Added integration with :code:`towncrier` `#602 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:907 -msgid "" -"Added `.editorconfig` `#650 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:909 -msgid "" -"Redis storage speedup globals `#651 " -"`_" -msgstr "" - -#: ../../../CHANGES.rst:911 -msgid "" -"add allow_sending_without_reply param to Message reply aliases `#663 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:7 -msgid "2.14.3 (2021-07-21)" -msgstr "" - -#: ../../../HISTORY.rst:9 -msgid "" -"Fixed :code:`ChatMember` type detection via adding customizable object " -"serialization mechanism (`#624 " -"`_, `#623 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:13 -msgid "2.14.2 (2021-07-26)" -msgstr "" - -#: ../../../HISTORY.rst:15 -msgid "" -"Fixed :code:`MemoryStorage` cleaner (`#619 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:16 -msgid "" -"Fixed unused default locale in :code:`I18nMiddleware` (`#562 " -"`_, `#563 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:20 -msgid "2.14 (2021-07-27)" -msgstr "" - -#: ../../../HISTORY.rst:22 -msgid "" -"Full support of Bot API 5.3 (`#610 " -"`_, `#614 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:23 -msgid "" -"Fixed :code:`Message.send_copy` method for polls (`#603 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:24 -msgid "" -"Updated pattern for :code:`GroupDeactivated` exception (`#549 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:25 -msgid "" -"Added :code:`caption_entities` field in :code:`InputMedia` base class " -"(`#583 `_)" -msgstr "" - -#: ../../../HISTORY.rst:26 -msgid "" -"Fixed HTML text decorations for tag :code:`pre` (`#597 " -"`_ fixes issues `#596 " -"`_ and `#481 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:27 -msgid "" -"Fixed :code:`Message.get_full_command` method for messages with caption " -"(`#576 `_)" -msgstr "" - -#: ../../../HISTORY.rst:28 -msgid "" -"Improved :code:`MongoStorage`: remove documents with empty data from " -":code:`aiogram_data` collection to save memory. (`#609 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:32 -msgid "2.13 (2021-04-28)" -msgstr "" - -#: ../../../HISTORY.rst:34 -msgid "" -"Added full support of Bot API 5.2 (`#572 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:35 -msgid "" -"Fixed usage of :code:`provider_data` argument in :code:`sendInvoice` " -"method call" -msgstr "" - -#: ../../../HISTORY.rst:36 -msgid "" -"Fixed builtin command filter args (`#556 " -"`_) (`#558 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:37 -msgid "" -"Allowed to use State instances FSM storage directly (`#542 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:38 -msgid "" -"Added possibility to get i18n locale without User instance (`#546 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:39 -msgid "" -"Fixed returning type of :code:`Bot.*_chat_invite_link()` methods `#548 " -"`_ (`#549 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:40 -msgid "" -"Fixed deep-linking util (`#569 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:41 -msgid "" -"Small changes in documentation - describe limits in docstrings " -"corresponding to the current limit. (`#565 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:42 -msgid "" -"Fixed internal call to deprecated 'is_private' method (`#553 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:43 -msgid "" -"Added possibility to use :code:`allowed_updates` argument in Polling mode" -" (`#564 `_)" -msgstr "" - -#: ../../../HISTORY.rst:47 -msgid "2.12.1 (2021-03-22)" -msgstr "" - -#: ../../../HISTORY.rst:49 -msgid "" -"Fixed :code:`TypeError: Value should be instance of 'User' not " -"'NoneType'` (`#527 `_)" -msgstr "" - -#: ../../../HISTORY.rst:50 -msgid "" -"Added missing :code:`Chat.message_auto_delete_time` field (`#535 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:51 -msgid "" -"Added :code:`MediaGroup` filter (`#528 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:52 -msgid "" -"Added :code:`Chat.delete_message` shortcut (`#526 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:53 -msgid "" -"Added mime types parsing for :code:`aiogram.types.Document` (`#431 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:54 -msgid "" -"Added warning in :code:`TelegramObject.__setitem__` when Telegram adds a " -"new field (`#532 `_)" -msgstr "" - -#: ../../../HISTORY.rst:55 -msgid "" -"Fixed :code:`examples/chat_type_filter.py` (`#533 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:56 -msgid "" -"Removed redundant definitions in framework code (`#531 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:60 -msgid "2.12 (2021-03-14)" -msgstr "" - -#: ../../../HISTORY.rst:62 -msgid "" -"Full support for Telegram Bot API 5.1 (`#519 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:63 -msgid "" -"Fixed sending playlist of audio files and documents (`#465 " -"`_, `#468 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:64 -msgid "" -"Fixed :code:`FSMContextProxy.setdefault` method (`#491 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:65 -msgid "" -"Fixed :code:`Message.answer_location` and :code:`Message.reply_location` " -"unable to send live location (`#497 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:66 -msgid "" -"Fixed :code:`user_id` and :code:`chat_id` getters from the context at " -"Dispatcher :code:`check_key`, :code:`release_key` and :code:`throttle` " -"methods (`#520 `_)" -msgstr "" - -#: ../../../HISTORY.rst:67 -msgid "" -"Fixed :code:`Chat.update_chat` method and all similar situations (`#516 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:68 -msgid "" -"Fixed :code:`MediaGroup` attach methods (`#514 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:69 -msgid "" -"Fixed state filter for inline keyboard query callback in groups (`#508 " -"`_, `#510 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:70 -msgid "" -"Added missing :code:`ContentTypes.DICE` (`#466 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:71 -msgid "" -"Added missing vcard argument to :code:`InputContactMessageContent` " -"constructor (`#473 `_)" -msgstr "" - -#: ../../../HISTORY.rst:72 -msgid "" -"Add missing exceptions: :code:`MessageIdInvalid`, " -":code:`CantRestrictChatOwner` and :code:`UserIsAnAdministratorOfTheChat` " -"(`#474 `_, `#512 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:73 -msgid "" -"Added :code:`answer_chat_action` to the :code:`Message` object (`#501 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:74 -msgid "" -"Added dice to :code:`message.send_copy` method (`#511 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:75 -msgid "Removed deprecation warning from :code:`Message.send_copy`" -msgstr "" - -#: ../../../HISTORY.rst:76 -msgid "" -"Added an example of integration between externally created aiohttp " -"Application and aiogram (`#433 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:77 -msgid "" -"Added :code:`split_separator` argument to :code:`safe_split_text` (`#515 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:78 -msgid "" -"Fixed some typos in docs and examples (`#489 " -"`_, `#490 " -"`_, `#498 " -"`_, `#504 " -"`_, `#514 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:82 -msgid "2.11.2 (2021-11-10)" -msgstr "" - -#: ../../../HISTORY.rst:84 -msgid "Fixed default parse mode" -msgstr "" - -#: ../../../HISTORY.rst:85 -msgid "" -"Added missing \"supports_streaming\" argument to answer_video method " -"`#462 `_" -msgstr "" - -#: ../../../HISTORY.rst:89 -msgid "2.11.1 (2021-11-10)" -msgstr "" - -#: ../../../HISTORY.rst:91 -msgid "Fixed files URL template" -msgstr "" - -#: ../../../HISTORY.rst:92 -msgid "" -"Fix MessageEntity serialization for API calls `#457 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:93 -msgid "" -"When entities are set, default parse_mode become disabled (`#461 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:94 -msgid "" -"Added parameter supports_streaming to reply_video, remove redundant " -"docstrings (`#459 `_)" -msgstr "" - -#: ../../../HISTORY.rst:95 -msgid "" -"Added missing parameter to promoteChatMember alias (`#458 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:99 -msgid "2.11 (2021-11-08)" -msgstr "" - -#: ../../../HISTORY.rst:101 -msgid "" -"Added full support of Telegram Bot API 5.0 (`#454 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:102 -msgid "Added possibility to more easy specify custom API Server (example)" -msgstr "" - -#: ../../../HISTORY.rst:103 -msgid "" -"WARNING: API method :code:`close` was named in Bot class as close_bot in " -"due to Bot instance already has method with the same name. It will be " -"changed in :code:`aiogram 3.0`" -msgstr "" - -#: ../../../HISTORY.rst:104 -msgid "" -"Added alias to Message object :code:`Message.copy_to` with deprecation of" -" :code:`Message.send_copy`" -msgstr "" - -#: ../../../HISTORY.rst:105 -msgid "" -":code:`ChatType.SUPER_GROUP` renamed to :code:`ChatType.SUPERGROUP` " -"(`#438 `_)" -msgstr "" - -#: ../../../HISTORY.rst:109 -msgid "2.10.1 (2021-09-14)" -msgstr "" - -#: ../../../HISTORY.rst:111 -msgid "" -"Fixed critical bug with getting asyncio event loop in executor. (`#424 " -"`_) :code:`AttributeError:" -" 'NoneType' object has no attribute 'run_until_complete'`" -msgstr "" - -#: ../../../HISTORY.rst:115 -msgid "2.10 (2021-09-13)" -msgstr "" - -#: ../../../HISTORY.rst:117 -msgid "" -"Breaking change: Stop using _MainThread event loop in bot/dispatcher " -"instances (`#397 `_)" -msgstr "" - -#: ../../../HISTORY.rst:118 -msgid "" -"Breaking change: Replaced aiomongo with motor (`#368 " -"`_, `#380 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:119 -msgid "" -"Fixed: TelegramObject's aren't destroyed after update handling `#307 " -"`_ (`#371 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:120 -msgid "" -"Add setting current context of Telegram types (`#369 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:121 -msgid "" -"Fixed markdown escaping issues (`#363 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:122 -msgid "" -"Fixed HTML characters escaping (`#409 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:123 -msgid "Fixed italic and underline decorations when parse entities to Markdown" -msgstr "" - -#: ../../../HISTORY.rst:124 -msgid "" -"Fixed `#413 `_: parse " -"entities positioning (`#414 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:125 -msgid "" -"Added missing thumb parameter (`#362 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:126 -msgid "" -"Added public methods to register filters and middlewares (`#370 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:127 -msgid "" -"Added ChatType builtin filter (`#356 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:128 -msgid "" -"Fixed IDFilter checking message from channel (`#376 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:129 -msgid "" -"Added missed answer_poll and reply_poll (`#384 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:130 -msgid "" -"Added possibility to ignore message caption in commands filter (`#383 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:131 -msgid "Fixed addStickerToSet method" -msgstr "" - -#: ../../../HISTORY.rst:132 -msgid "" -"Added preparing thumb in send_document method (`#391 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:133 -msgid "" -"Added exception MessageToPinNotFound (`#404 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:134 -msgid "" -"Fixed handlers parameter-spec solving (`#408 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:135 -msgid "" -"Fixed CallbackQuery.answer() returns nothing (`#420 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:136 -msgid "" -"CHOSEN_INLINE_RESULT is a correct API-term (`#415 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:137 -msgid "" -"Fixed missing attributes for Animation class (`#422 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:138 -msgid "" -"Added missed emoji argument to reply_dice (`#395 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:139 -msgid "" -"Added is_chat_creator method to ChatMemberStatus (`#394 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:140 -msgid "" -"Added missed ChatPermissions to __all__ (`#393 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:141 -msgid "" -"Added is_forward method to Message (`#390 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:142 -msgid "" -"Fixed usage of deprecated is_private function (`#421 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:144 -msgid "and many others documentation and examples changes:" -msgstr "" - -#: ../../../HISTORY.rst:146 -msgid "" -"Updated docstring of RedisStorage2 (`#423 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:147 -msgid "" -"Updated I18n example (added docs and fixed typos) (`#419 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:148 -msgid "" -"A little documentation revision (`#381 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:149 -msgid "" -"Added comments about correct errors_handlers usage (`#398 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:150 -msgid "" -"Fixed typo rexex -> regex (`#386 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:151 -msgid "" -"Fixed docs Quick start page code blocks (`#417 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:152 -msgid "" -"fixed type hints of callback_data (`#400 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:153 -msgid "" -"Prettify readme, update downloads stats badge (`#406 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:157 -msgid "2.9.2 (2021-06-13)" -msgstr "" - -#: ../../../HISTORY.rst:159 -msgid "" -"Fixed :code:`Message.get_full_command()` `#352 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:160 -msgid "" -"Fixed markdown util `#353 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:164 -msgid "2.9 (2021-06-08)" -msgstr "" - -#: ../../../HISTORY.rst:166 -msgid "Added full support of Telegram Bot API 4.9" -msgstr "" - -#: ../../../HISTORY.rst:167 -msgid "" -"Fixed user context at poll_answer update (`#322 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:168 -msgid "" -"Fix Chat.set_description (`#325 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:169 -msgid "" -"Add lazy session generator (`#326 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:170 -msgid "" -"Fix text decorations (`#315 " -"`_, `#316 " -"`_, `#328 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:171 -msgid "" -"Fix missing :code:`InlineQueryResultPhoto` :code:`parse_mode` field " -"(`#331 `_)" -msgstr "" - -#: ../../../HISTORY.rst:172 -msgid "" -"Fix fields from parent object in :code:`KeyboardButton` (`#344 " -"`_ fixes `#343 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:173 -msgid "" -"Add possibility to get bot id without calling :code:`get_me` (`#296 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:177 -msgid "2.8 (2021-04-26)" -msgstr "" - -#: ../../../HISTORY.rst:179 -msgid "Added full support of Bot API 4.8" -msgstr "" - -#: ../../../HISTORY.rst:180 -msgid "" -"Added :code:`Message.answer_dice` and :code:`Message.reply_dice` methods " -"(`#306 `_)" -msgstr "" - -#: ../../../HISTORY.rst:184 -msgid "2.7 (2021-04-07)" -msgstr "" - -#: ../../../HISTORY.rst:186 -msgid "" -"Added full support of Bot API 4.7 (`#294 " -"`_ `#289 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:187 -msgid "" -"Added default parse mode for send_animation method (`#293 " -"`_ `#292 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:188 -msgid "" -"Added new API exception when poll requested in public chats (`#270 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:189 -msgid "" -"Make correct User and Chat get_mention methods (`#277 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:190 -msgid "Small changes and other minor improvements" -msgstr "" - -#: ../../../HISTORY.rst:194 -msgid "2.6.1 (2021-01-25)" -msgstr "" - -#: ../../../HISTORY.rst:196 -msgid "" -"Fixed reply :code:`KeyboardButton` initializer with :code:`request_poll` " -"argument (`#266 `_)" -msgstr "" - -#: ../../../HISTORY.rst:197 -msgid "Added helper for poll types (:code:`aiogram.types.PollType`)" -msgstr "" - -#: ../../../HISTORY.rst:198 -msgid "" -"Changed behavior of Telegram_object :code:`.as_*` and :code:`.to_*` " -"methods. It will no more mutate the object. (`#247 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:202 -msgid "2.6 (2021-01-23)" -msgstr "" - -#: ../../../HISTORY.rst:204 -msgid "" -"Full support of Telegram Bot API v4.6 (Polls 2.0) `#265 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:205 -msgid "Aded new filter - IsContactSender (commit)" -msgstr "" - -#: ../../../HISTORY.rst:206 -msgid "" -"Fixed proxy extra dependencies version `#262 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:210 -msgid "2.5.3 (2021-01-05)" -msgstr "" - -#: ../../../HISTORY.rst:212 -msgid "" -"`#255 `_ Updated " -"CallbackData factory validity check. More correct for non-latin symbols" -msgstr "" - -#: ../../../HISTORY.rst:213 -msgid "" -"`#256 `_ Fixed " -":code:`renamed_argument` decorator error" -msgstr "" - -#: ../../../HISTORY.rst:214 -msgid "" -"`#257 `_ One more fix of " -"CommandStart filter" -msgstr "" - -#: ../../../HISTORY.rst:218 -msgid "2.5.2 (2021-01-01)" -msgstr "" - -#: ../../../HISTORY.rst:220 -msgid "Get back :code:`quote_html` and :code:`escape_md` functions" -msgstr "" - -#: ../../../HISTORY.rst:224 -msgid "2.5.1 (2021-01-01)" -msgstr "" - -#: ../../../HISTORY.rst:226 -msgid "Hot-fix of :code:`CommandStart` filter" -msgstr "" - -#: ../../../HISTORY.rst:230 -msgid "2.5 (2021-01-01)" -msgstr "" - -#: ../../../HISTORY.rst:232 -msgid "" -"Added full support of Telegram Bot API 4.5 (`#250 " -"`_, `#251 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:233 -msgid "" -"`#239 `_ Fixed " -":code:`check_token` method" -msgstr "" - -#: ../../../HISTORY.rst:234 -msgid "" -"`#238 `_, `#241 " -"`_: Added deep-linking " -"utils" -msgstr "" - -#: ../../../HISTORY.rst:235 -msgid "" -"`#248 `_ Fixed support of " -"aiohttp-socks" -msgstr "" - -#: ../../../HISTORY.rst:236 -msgid "Updated setup.py. No more use of internal pip API" -msgstr "" - -#: ../../../HISTORY.rst:237 -msgid "Updated links to documentations (https://docs.aiogram.dev)" -msgstr "" - -#: ../../../HISTORY.rst:238 -msgid "" -"Other small changes and minor improvements (`#223 " -"`_ and others...)" -msgstr "" - -#: ../../../HISTORY.rst:242 -msgid "2.4 (2021-10-29)" -msgstr "" - -#: ../../../HISTORY.rst:244 -msgid "Added Message.send_copy method (forward message without forwarding)" -msgstr "" - -#: ../../../HISTORY.rst:245 -msgid "" -"Safe close of aiohttp client session (no more exception when application " -"is shutdown)" -msgstr "" - -#: ../../../HISTORY.rst:246 -msgid "" -"No more \"adWanced\" words in project `#209 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:247 -msgid "" -"Arguments user and chat is renamed to user_id and chat_id in " -"Dispatcher.throttle method `#196 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:248 -msgid "" -"Fixed set_chat_permissions `#198 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:249 -msgid "" -"Fixed Dispatcher polling task does not process cancellation `#199 " -"`_, `#201 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:250 -msgid "" -"Fixed compatibility with latest asyncio version `#200 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:251 -msgid "" -"Disabled caching by default for lazy_gettext method of I18nMiddleware " -"`#203 `_" -msgstr "" - -#: ../../../HISTORY.rst:252 -msgid "" -"Fixed HTML user mention parser `#205 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:253 -msgid "" -"Added IsReplyFilter `#210 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:254 -msgid "" -"Fixed send_poll method arguments `#211 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:255 -msgid "" -"Added OrderedHelper `#215 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:256 -msgid "" -"Fix incorrect completion order. `#217 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:260 -msgid "2.3 (2021-08-16)" -msgstr "" - -#: ../../../HISTORY.rst:262 -msgid "Full support of Telegram Bot API 4.4" -msgstr "" - -#: ../../../HISTORY.rst:263 -msgid "Fixed `#143 `_" -msgstr "" - -#: ../../../HISTORY.rst:264 -msgid "" -"Added new filters from issue `#151 " -"`_: `#172 " -"`_, `#176 " -"`_, `#182 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:265 -msgid "" -"Added expire argument to RedisStorage2 and other storage fixes `#145 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:266 -msgid "" -"Fixed JSON and Pickle storages `#138 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:267 -msgid "" -"Implemented MongoStorage `#153 " -"`_ based on aiomongo (soon" -" motor will be also added)" -msgstr "" - -#: ../../../HISTORY.rst:268 -msgid "Improved tests" -msgstr "" - -#: ../../../HISTORY.rst:269 -msgid "Updated examples" -msgstr "" - -#: ../../../HISTORY.rst:270 -msgid "" -"Warning: Updated auth widget util. `#190 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:271 -msgid "" -"Implemented throttle decorator `#181 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:275 -msgid "2.2 (2021-06-09)" -msgstr "" - -#: ../../../HISTORY.rst:277 -msgid "Provides latest Telegram Bot API (4.3)" -msgstr "" - -#: ../../../HISTORY.rst:278 -msgid "Updated docs for filters" -msgstr "" - -#: ../../../HISTORY.rst:279 -msgid "" -"Added opportunity to use different bot tokens from single bot instance " -"(via context manager, `#100 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:280 -msgid "" -"IMPORTANT: Fixed Typo: :code:`data` -> :code:`bucket` in " -":code:`update_bucket` for RedisStorage2 (`#132 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:284 -msgid "2.1 (2021-04-18)" -msgstr "" - -#: ../../../HISTORY.rst:286 -msgid "Implemented all new features from Telegram Bot API 4.2" -msgstr "" - -#: ../../../HISTORY.rst:287 -msgid "" -":code:`is_member` and :code:`is_admin` methods of :code:`ChatMember` and " -":code:`ChatMemberStatus` was renamed to :code:`is_chat_member` and " -":code:`is_chat_admin`" -msgstr "" - -#: ../../../HISTORY.rst:288 -msgid "Remover func filter" -msgstr "" - -#: ../../../HISTORY.rst:289 -msgid "" -"Added some useful Message edit functions (:code:`Message.edit_caption`, " -":code:`Message.edit_media`, :code:`Message.edit_reply_markup`) (`#121 " -"`_, `#103 " -"`_, `#104 " -"`_, `#112 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:290 -msgid "" -"Added requests timeout for all methods (`#110 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:291 -msgid "" -"Added :code:`answer*` methods to :code:`Message` object (`#112 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:292 -msgid "Maked some improvements of :code:`CallbackData` factory" -msgstr "" - -#: ../../../HISTORY.rst:293 -msgid "Added deep-linking parameter filter to :code:`CommandStart` filter" -msgstr "" - -#: ../../../HISTORY.rst:294 -msgid "" -"Implemented opportunity to use DNS over socks (`#97 " -"`_ -> `#98 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:295 -msgid "" -"Implemented logging filter for extending LogRecord attributes (Will be " -"usefull with external logs collector utils like GrayLog, Kibana and etc.)" -msgstr "" - -#: ../../../HISTORY.rst:296 -msgid "Updated :code:`requirements.txt` and :code:`dev_requirements.txt` files" -msgstr "" - -#: ../../../HISTORY.rst:297 -msgid "Other small changes and minor improvements" -msgstr "" - -#: ../../../HISTORY.rst:301 -msgid "2.0.1 (2021-12-31)" -msgstr "" - -#: ../../../HISTORY.rst:303 -msgid "" -"Implemented CallbackData factory (`example " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:304 -msgid "" -"Implemented methods for answering to inline query from context and reply " -"with animation to the messages. `#85 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:305 -msgid "" -"Fixed installation from tar.gz `#84 " -"`_" -msgstr "" - -#: ../../../HISTORY.rst:306 -msgid "" -"More exceptions (:code:`ChatIdIsEmpty` and " -":code:`NotEnoughRightsToRestrict`)" -msgstr "" - -#: ../../../HISTORY.rst:310 -msgid "2.0 (2021-10-28)" -msgstr "" - -#: ../../../HISTORY.rst:312 -msgid "" -"This update will break backward compability with Python 3.6 and works " -"only with Python 3.7+: - contextvars (PEP-567); - New syntax for " -"annotations (PEP-563)." -msgstr "" - -#: ../../../HISTORY.rst:316 -msgid "" -"Changes: - Used contextvars instead of :code:`aiogram.utils.context`; - " -"Implemented filters factory; - Implemented new filters mechanism; - " -"Allowed to customize command prefix in CommandsFilter; - Implemented " -"mechanism of passing results from filters (as dicts) as kwargs in " -"handlers (like fixtures in pytest); - Implemented states group feature; -" -" Implemented FSM storage's proxy; - Changed files uploading mechanism; - " -"Implemented pipe for uploading files from URL; - Implemented I18n " -"Middleware; - Errors handlers now should accept only two arguments " -"(current update and exception); - Used :code:`aiohttp_socks` instead of " -":code:`aiosocksy` for Socks4/5 proxy; - types.ContentType was divided to " -":code:`types.ContentType` and :code:`types.ContentTypes`; - Allowed to " -"use rapidjson instead of ujson/json; - :code:`.current()` method in bot " -"and dispatcher objects was renamed to :code:`get_current()`;" -msgstr "" - -#: ../../../HISTORY.rst:333 -msgid "" -"Full changelog - You can read more details about this release in " -"migration FAQ: " -"``_" -msgstr "" - -#: ../../../HISTORY.rst:338 -msgid "1.4 (2021-08-03)" -msgstr "" - -#: ../../../HISTORY.rst:340 -msgid "Bot API 4.0 (`#57 `_)" -msgstr "" - -#: ../../../HISTORY.rst:344 -msgid "1.3.3 (2021-07-16)" -msgstr "" - -#: ../../../HISTORY.rst:346 -msgid "Fixed markup-entities parsing;" -msgstr "" - -#: ../../../HISTORY.rst:347 -msgid "Added more API exceptions;" -msgstr "" - -#: ../../../HISTORY.rst:348 -msgid "Now InlineQueryResultLocation has live_period;" -msgstr "" - -#: ../../../HISTORY.rst:349 -msgid "Added more message content types;" -msgstr "" - -#: ../../../HISTORY.rst:350 -msgid "Other small changes and minor improvements." -msgstr "" - -#: ../../../HISTORY.rst:354 -msgid "1.3.2 (2021-05-27)" -msgstr "" - -#: ../../../HISTORY.rst:356 -msgid "Fixed crashing of polling process. (i think)" -msgstr "" - -#: ../../../HISTORY.rst:357 -msgid "Added parse_mode field into input query results according to Bot API Docs." -msgstr "" - -#: ../../../HISTORY.rst:358 -msgid "" -"Added new methods for Chat object. (`#42 " -"`_, `#43 " -"`_)" -msgstr "" - -#: ../../../HISTORY.rst:359 -msgid "**Warning**: disabled connections limit for bot aiohttp session." -msgstr "" - -#: ../../../HISTORY.rst:360 -msgid "**Warning**: Destroyed \"temp sessions\" mechanism." -msgstr "" - -#: ../../../HISTORY.rst:361 -msgid "Added new error types." -msgstr "" - -#: ../../../HISTORY.rst:362 -msgid "Refactored detection of error type." -msgstr "" - -#: ../../../HISTORY.rst:363 -msgid "Small fixes of executor util." -msgstr "" - -#: ../../../HISTORY.rst:364 -msgid "Fixed RethinkDBStorage" -msgstr "" - -#: ../../../HISTORY.rst:367 -msgid "1.3.1 (2018-05-27)" -msgstr "" - -#: ../../../HISTORY.rst:371 -msgid "1.3 (2021-04-22)" -msgstr "" - -#: ../../../HISTORY.rst:373 -msgid "Allow to use Socks5 proxy (need manually install :code:`aiosocksy`)." -msgstr "" - -#: ../../../HISTORY.rst:374 -msgid "Refactored :code:`aiogram.utils.executor` module." -msgstr "" - -#: ../../../HISTORY.rst:375 -msgid "**[Warning]** Updated requirements list." -msgstr "" - -#: ../../../HISTORY.rst:379 -msgid "1.2.3 (2018-04-14)" -msgstr "" - -#: ../../../HISTORY.rst:381 -msgid "Fixed API errors detection" -msgstr "" - -#: ../../../HISTORY.rst:382 -msgid "Fixed compability of :code:`setup.py` with pip 10.0.0" -msgstr "" - -#: ../../../HISTORY.rst:386 -msgid "1.2.2 (2018-04-08)" -msgstr "" - -#: ../../../HISTORY.rst:388 -msgid "Added more error types." -msgstr "" - -#: ../../../HISTORY.rst:389 -msgid "" -"Implemented method :code:`InputFile.from_url(url: str)` for downloading " -"files." -msgstr "" - -#: ../../../HISTORY.rst:390 -msgid "Implemented big part of API method tests." -msgstr "" - -#: ../../../HISTORY.rst:391 -msgid "Other small changes and mminor improvements." -msgstr "" - -#: ../../../HISTORY.rst:395 -msgid "1.2.1 (2018-03-25)" -msgstr "" - -#: ../../../HISTORY.rst:397 -msgid "" -"Fixed handling Venue's [`#27 " -"`_, `#26 " -"`_]" -msgstr "" - -#: ../../../HISTORY.rst:398 -msgid "" -"Added parse_mode to all medias (Bot API 3.6 support) [`#23 " -"`_]" -msgstr "" - -#: ../../../HISTORY.rst:399 -msgid "" -"Now regexp filter can be used with callback query data [`#19 " -"`_]" -msgstr "" - -#: ../../../HISTORY.rst:400 -msgid "" -"Improvements in :code:`InlineKeyboardMarkup` & " -":code:`ReplyKeyboardMarkup` objects [`#21 " -"`_]" -msgstr "" - -#: ../../../HISTORY.rst:401 -msgid "Other bug & typo fixes and minor improvements." -msgstr "" - -#: ../../../HISTORY.rst:405 -msgid "1.2 (2018-02-23)" -msgstr "" - -#: ../../../HISTORY.rst:407 -msgid "Full provide Telegram Bot API 3.6" -msgstr "" - -#: ../../../HISTORY.rst:408 -msgid "" -"Fixed critical error: :code:`Fatal Python error: PyImport_GetModuleDict: " -"no module dictionary!`" -msgstr "" - -#: ../../../HISTORY.rst:409 -msgid "Implemented connection pool in RethinkDB driver" -msgstr "" - -#: ../../../HISTORY.rst:410 ../../../HISTORY.rst:418 -msgid "Typo fixes of documentstion" -msgstr "" - -#: ../../../HISTORY.rst:411 ../../../HISTORY.rst:464 -msgid "Other bug fixes and minor improvements." -msgstr "" - -#: ../../../HISTORY.rst:415 -msgid "1.1 (2018-01-27)" -msgstr "" - -#: ../../../HISTORY.rst:417 -msgid "" -"Added more methods for data types (like " -":code:`message.reply_sticker(...)` or :code:`file.download(...)`" -msgstr "" - -#: ../../../HISTORY.rst:419 -msgid "" -"Allow to set default parse mode for messages (:code:`Bot( ... , " -"parse_mode='HTML')`)" -msgstr "" - -#: ../../../HISTORY.rst:420 -msgid "" -"Allowed to cancel event from the :code:`Middleware.on_pre_process_`" -msgstr "" - -#: ../../../HISTORY.rst:421 -msgid "Fixed sending files with correct names." -msgstr "" - -#: ../../../HISTORY.rst:422 -msgid "Fixed MediaGroup" -msgstr "" - -#: ../../../HISTORY.rst:423 -msgid "" -"Added RethinkDB storage for FSM " -"(:code:`aiogram.contrib.fsm_storage.rethinkdb`)" -msgstr "" - -#: ../../../HISTORY.rst:427 -msgid "1.0.4 (2018-01-10)" -msgstr "" - -#: ../../../HISTORY.rst:431 -msgid "1.0.3 (2018-01-07)" -msgstr "" - -#: ../../../HISTORY.rst:433 -msgid "Added middlewares mechanism." -msgstr "" - -#: ../../../HISTORY.rst:434 -msgid "Added example for middlewares and throttling manager." -msgstr "" - -#: ../../../HISTORY.rst:435 -msgid "" -"Added logging middleware " -"(:code:`aiogram.contrib.middlewares.logging.LoggingMiddleware`)" -msgstr "" - -#: ../../../HISTORY.rst:436 -msgid "Fixed handling errors in async tasks (marked as 'async_task')" -msgstr "" - -#: ../../../HISTORY.rst:437 -msgid "Small fixes and other minor improvements." -msgstr "" - -#: ../../../HISTORY.rst:441 -msgid "1.0.2 (2017-11-29)" -msgstr "" - -#: ../../../HISTORY.rst:445 -msgid "1.0.1 (2017-11-21)" -msgstr "" - -#: ../../../HISTORY.rst:447 -msgid "Implemented :code:`types.InputFile` for more easy sending local files" -msgstr "" - -#: ../../../HISTORY.rst:448 -msgid "" -"**Danger!** Fixed typo in word pooling. Now whatever all methods with " -"that word marked as deprecated and original methods is renamed to " -"polling. Check it in you'r code before updating!" -msgstr "" - -#: ../../../HISTORY.rst:449 -msgid "Fixed helper for chat actions (:code:`types.ChatActions`)" -msgstr "" - -#: ../../../HISTORY.rst:450 -msgid "" -"Added `example " -"`_" -" for media group." -msgstr "" - -#: ../../../HISTORY.rst:454 -msgid "1.0 (2017-11-19)" -msgstr "" - -#: ../../../HISTORY.rst:456 -msgid "Remaked data types serialozation/deserialization mechanism (Speed up)." -msgstr "" - -#: ../../../HISTORY.rst:457 -msgid "Fully rewrited all Telegram data types." -msgstr "" - -#: ../../../HISTORY.rst:458 -msgid "Bot object was fully rewritted (regenerated)." -msgstr "" - -#: ../../../HISTORY.rst:459 -msgid "Full provide Telegram Bot API 3.4+ (with sendMediaGroup)" -msgstr "" - -#: ../../../HISTORY.rst:460 -msgid "Warning: Now :code:`BaseStorage.close()` is awaitable! (FSM)" -msgstr "" - -#: ../../../HISTORY.rst:461 -msgid "Fixed compability with uvloop." -msgstr "" - -#: ../../../HISTORY.rst:462 -msgid "More employments for :code:`aiogram.utils.context`." -msgstr "" - -#: ../../../HISTORY.rst:463 -msgid "Allowed to disable :code:`ujson`." -msgstr "" - -#: ../../../HISTORY.rst:465 -msgid "Migrated from Bitbucket to Github." -msgstr "" - -#: ../../../HISTORY.rst:469 -msgid "0.4.1 (2017-08-03)" -msgstr "" - -#: ../../../HISTORY.rst:473 -msgid "0.4 (2017-08-05)" -msgstr "" - -#: ../../../HISTORY.rst:477 -msgid "0.3.4 (2017-08-04)" -msgstr "" - -#: ../../../HISTORY.rst:481 -msgid "0.3.3 (2017-07-05)" -msgstr "" - -#: ../../../HISTORY.rst:485 -msgid "0.3.2 (2017-07-04)" -msgstr "" - -#: ../../../HISTORY.rst:489 -msgid "0.3.1 (2017-07-04)" -msgstr "" - -#: ../../../HISTORY.rst:493 -msgid "0.2b1 (2017-06-00)" -msgstr "" - -#: ../../../HISTORY.rst:497 -msgid "0.1 (2017-06-03)" -msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-01-07)" -#~ msgstr "" - -#~ msgid "" -#~ ":class:`aiogram.enums.chat_action.ChatActions`, " -#~ ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " -#~ ":class:`aiogram.enums.chat_type.ChatType`, " -#~ ":class:`aiogram.enums.content_type.ContentType`, " -#~ ":class:`aiogram.enums.dice_emoji.DiceEmoji`, " -#~ ":class:`aiogram.enums.inline_query_result_type.InlineQueryResultType`," -#~ " :class:`aiogram.enums.input_media_type.InputMediaType`, " -#~ ":class:`aiogram.enums.mask_position_point.MaskPositionPoint`, " -#~ ":class:`aiogram.enums.menu_button_type.MenuButtonType`, " -#~ ":class:`aiogram.enums.message_entity_type.MessageEntityType`, " -#~ ":class:`aiogram.enums.parse_mode.ParseMode`, " -#~ ":class:`aiogram.enums.poll_type.PollType`, " -#~ ":class:`aiogram.enums.sticker_type.StickerType`, " -#~ ":class:`aiogram.enums.topic_icon_color.TopicIconColor`, " -#~ ":class:`aiogram.enums.update_type.UpdateType`," -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" -#~ msgstr "" - -#~ msgid "" -#~ "If router does not support custom " -#~ "event it does not break and passes" -#~ " it to included routers `#1147 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "If you have implemented you own " -#~ "storages you should extend record key" -#~ " generation with new one attribute -" -#~ " `thread_id`" -#~ msgstr "" - -#~ msgid "" -#~ "Added X-Telegram-Bot-Api-Secret-Token" -#~ " header check `#1173 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added possibility to pass custom headers" -#~ " to URLInputFile object `#1191 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Change type of result in " -#~ "InlineQueryResult enum for " -#~ "`InlineQueryResultCachedMpeg4Gif` and " -#~ "`InlineQueryResultMpeg4Gif` to more correct " -#~ "according to documentation." -#~ msgstr "" - -#~ msgid "" -#~ "Change regexp for entities parsing to" -#~ " more correct (`InlineQueryResultType.yml`). " -#~ "`#1146 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Fixed signature of startup/shutdown events " -#~ "to include the **dispatcher.workflow_data as" -#~ " the handler arguments. `#1155 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added missing FORUM_TOPIC_EDITED value to " -#~ "content_type property `#1160 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Fixed compatibility with Python 3.8-3.9 " -#~ "`#1162 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Changed small grammar typos for " -#~ "`upload_file` `#1133 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added global defaults `disable_web_page_preview` " -#~ "and `protect_content` in addition to " -#~ "`parse_mode` to the Bot instance, " -#~ "reworked internal request builder mechanism." -#~ " `#1142 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Be careful, not all libraries is " -#~ "already updated to using V2 (for " -#~ "example at the time, when this " -#~ "warning was added FastAPI still not " -#~ "support V2)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/contributing.po b/docs/locale/en/LC_MESSAGES/contributing.po deleted file mode 100644 index 7cf1b5d8..00000000 --- a/docs/locale/en/LC_MESSAGES/contributing.po +++ /dev/null @@ -1,358 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../contributing.rst:3 -msgid "Contributing" -msgstr "" - -#: ../../contributing.rst:5 -msgid "You're welcome to contribute to aiogram!" -msgstr "" - -#: ../../contributing.rst:7 -msgid "" -"*aiogram* is an open-source project, and anyone can contribute to it in " -"any possible way" -msgstr "" - -#: ../../contributing.rst:11 -msgid "Developing" -msgstr "" - -#: ../../contributing.rst:13 -msgid "" -"Before making any changes in the framework code, it is necessary to fork " -"the project and clone the project to your PC and know how to do a pull-" -"request." -msgstr "" - -#: ../../contributing.rst:16 -msgid "" -"How to work with pull-request you can read in the `GitHub docs " -"`_" -msgstr "" - -#: ../../contributing.rst:18 -msgid "" -"Also in due to this project is written in Python, you will need Python to" -" be installed (is recommended to use latest Python versions, but any " -"version starting from 3.8 can be used)" -msgstr "" - -#: ../../contributing.rst:23 -msgid "Use virtualenv" -msgstr "" - -#: ../../contributing.rst:25 -msgid "" -"You can create a virtual environment in a directory using :code:`venv` " -"module (it should be pre-installed by default):" -msgstr "" - -#: ../../contributing.rst:31 -msgid "" -"This action will create a :code:`.venv` directory with the Python " -"binaries and then you will be able to install packages into that isolated" -" environment." -msgstr "" - -#: ../../contributing.rst:36 -msgid "Activate the environment" -msgstr "" - -#: ../../contributing.rst:38 ../../contributing.rst:77 -msgid "Linux / macOS:" -msgstr "" - -#: ../../contributing.rst:44 -msgid "Windows cmd" -msgstr "" - -#: ../../contributing.rst:50 -msgid "Windows PowerShell" -msgstr "" - -#: ../../contributing.rst:56 -msgid "" -"To check it worked, use described command, it should show the :code:`pip`" -" version and location inside the isolated environment" -msgstr "" - -#: ../../contributing.rst:64 -msgid "" -"Also make sure you have the latest pip version in your virtual " -"environment to avoid errors on next steps:" -msgstr "" - -#: ../../contributing.rst:73 -msgid "Setup project" -msgstr "" - -#: ../../contributing.rst:75 -msgid "" -"After activating the environment install `aiogram` from sources and their" -" dependencies." -msgstr "" - -#: ../../contributing.rst:83 -msgid "Windows:" -msgstr "" - -#: ../../contributing.rst:89 -msgid "" -"It will install :code:`aiogram` in editable mode into your virtual " -"environment and all dependencies." -msgstr "" - -#: ../../contributing.rst:92 -msgid "Making changes in code" -msgstr "" - -#: ../../contributing.rst:94 -msgid "" -"At this point you can make any changes in the code that you want, it can " -"be any fixes, implementing new features or experimenting." -msgstr "" - -#: ../../contributing.rst:99 -msgid "Format the code (code-style)" -msgstr "" - -#: ../../contributing.rst:101 -msgid "" -"Note that this project is Black-formatted, so you should follow that " -"code-style, too be sure You're correctly doing this let's reformat the " -"code automatically:" -msgstr "" - -#: ../../contributing.rst:111 -msgid "Run tests" -msgstr "" - -#: ../../contributing.rst:113 -msgid "All changes should be tested:" -msgstr "" - -#: ../../contributing.rst:119 -msgid "" -"Also if you are doing something with Redis-storage, you will need to test" -" everything works with Redis:" -msgstr "" - -#: ../../contributing.rst:126 -msgid "Docs" -msgstr "" - -#: ../../contributing.rst:128 -msgid "" -"We are using `Sphinx` to render docs in different languages, all sources " -"located in `docs` directory, you can change the sources and to test it " -"you can start live-preview server and look what you are doing:" -msgstr "" - -#: ../../contributing.rst:137 -msgid "Docs translations" -msgstr "" - -#: ../../contributing.rst:139 -msgid "" -"Translation of the documentation is very necessary and cannot be done " -"without the help of the community from all over the world, so you are " -"welcome to translate the documentation into different languages." -msgstr "" - -#: ../../contributing.rst:143 -msgid "Before start, let's up to date all texts:" -msgstr "" - -#: ../../contributing.rst:151 -msgid "" -"Change the :code:`` in example below to the target " -"language code, after that you can modify texts inside " -":code:`docs/locale//LC_MESSAGES` as :code:`*.po` files by " -"using any text-editor or specialized utilites for GNU Gettext, for " -"example via `poedit `_." -msgstr "" - -#: ../../contributing.rst:156 -msgid "To view results:" -msgstr "" - -#: ../../contributing.rst:164 -msgid "Describe changes" -msgstr "" - -#: ../../contributing.rst:166 -msgid "" -"Describe your changes in one or more sentences so that bot developers " -"know what's changed in their favorite framework - create " -"`..rst` file and write the description." -msgstr "" - -#: ../../contributing.rst:169 -msgid "" -":code:`` is Issue or Pull-request number, after release link to " -"this issue will be published to the *Changelog* page." -msgstr "" - -#: ../../contributing.rst:172 -msgid ":code:`` is a changes category marker, it can be one of:" -msgstr "" - -#: ../../contributing.rst:174 -msgid ":code:`feature` - when you are implementing new feature" -msgstr "" - -#: ../../contributing.rst:175 -msgid ":code:`bugfix` - when you fix a bug" -msgstr "" - -#: ../../contributing.rst:176 -msgid ":code:`doc` - when you improve the docs" -msgstr "" - -#: ../../contributing.rst:177 -msgid ":code:`removal` - when you remove something from the framework" -msgstr "" - -#: ../../contributing.rst:178 -msgid "" -":code:`misc` - when changed something inside the Core or project " -"configuration" -msgstr "" - -#: ../../contributing.rst:180 -msgid "" -"If you have troubles with changing category feel free to ask Core-" -"contributors to help with choosing it." -msgstr "" - -#: ../../contributing.rst:183 -msgid "Complete" -msgstr "" - -#: ../../contributing.rst:185 -msgid "" -"After you have made all your changes, publish them to the repository and " -"create a pull request as mentioned at the beginning of the article and " -"wait for a review of these changes." -msgstr "" - -#: ../../contributing.rst:190 -msgid "Star on GitHub" -msgstr "" - -#: ../../contributing.rst:192 -msgid "" -"You can \"star\" repository on GitHub - " -"https://github.com/aiogram/aiogram (click the star button at the top " -"right)" -msgstr "" - -#: ../../contributing.rst:194 -msgid "" -"Adding stars makes it easier for other people to find this project and " -"understand how useful it is." -msgstr "" - -#: ../../contributing.rst:197 -msgid "Guides" -msgstr "" - -#: ../../contributing.rst:199 -msgid "" -"You can write guides how to develop Bots on top of aiogram and publish it" -" into YouTube, Medium, GitHub Books, any Courses platform or any other " -"platform that you know." -msgstr "" - -#: ../../contributing.rst:202 -msgid "" -"This will help more people learn about the framework and learn how to use" -" it" -msgstr "" - -#: ../../contributing.rst:206 -msgid "Take answers" -msgstr "" - -#: ../../contributing.rst:208 -msgid "" -"The developers is always asks for any question in our chats or any other " -"platforms like GitHub Discussions, StackOverflow and others, feel free to" -" answer to this questions." -msgstr "" - -#: ../../contributing.rst:212 -msgid "Funding" -msgstr "" - -#: ../../contributing.rst:214 -msgid "" -"The development of the project is free and not financed by commercial " -"organizations, it is my personal initiative (`@JRootJunior " -"`_) and I am engaged in the development of the " -"project in my free time." -msgstr "" - -#: ../../contributing.rst:218 -msgid "" -"So, if you want to financially support the project, or, for example, give" -" me a pizza or a beer, you can do it on `OpenCollective " -"`_." -msgstr "" - -#~ msgid "" -#~ "So, if you want to financially " -#~ "support the project, or, for example," -#~ " give me a pizza or a beer, " -#~ "you can do it on `OpenCollective " -#~ "`_ or `Patreon " -#~ "`_." -#~ msgstr "" - -#~ msgid "Linux/ macOS:" -#~ msgstr "" - -#~ msgid "Windows PoweShell" -#~ msgstr "" - -#~ msgid "" -#~ "To check it worked, use described " -#~ "command, it should show the :code:`pip`" -#~ " location inside the isolated environment" -#~ msgstr "" - -#~ msgid "Linux, macOS:" -#~ msgstr "" - -#~ msgid "" -#~ "Also make you shure you have the" -#~ " latest pip version in your virtual" -#~ " environment to avoid errors on next" -#~ " steps:" -#~ msgstr "" - -#~ msgid "" -#~ "After activating the environment install " -#~ "`aiogram` from sources and their " -#~ "dependencies:" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/deployment/index.po b/docs/locale/en/LC_MESSAGES/deployment/index.po deleted file mode 100644 index e5fe6ce8..00000000 --- a/docs/locale/en/LC_MESSAGES/deployment/index.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../deployment/index.rst:3 -msgid "Deployment" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/base.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/base.po deleted file mode 100644 index 0237e667..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/base.po +++ /dev/null @@ -1,56 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/base.rst:5 -msgid "BaseHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:7 -msgid "" -"Base handler is generic abstract class and should be used in all other " -"class-based handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:9 -msgid "Import: :code:`from aiogram.handler import BaseHandler`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:11 -msgid "" -"By default you will need to override only method :code:`async def " -"handle(self) -> Any: ...`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:13 -msgid "" -"This class is also have an default initializer and you don't need to " -"change it. Initializer accepts current event and all contextual data and " -"which can be accessed from the handler through attributes: :code:`event: " -"TelegramEvent` and :code:`data: Dict[Any, str]`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:17 -msgid "" -"If instance of the bot is specified in context data or current context it" -" can be accessed through *bot* class attribute." -msgstr "" - -#: ../../dispatcher/class_based_handlers/base.rst:20 -msgid "Example" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/callback_query.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/callback_query.po deleted file mode 100644 index d7d31d0c..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/callback_query.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/callback_query.rst:3 -msgid "CallbackQueryHandler" -msgstr "" - -#: aiogram.handlers.callback_query.CallbackQueryHandler:1 of -msgid "There is base class for callback query handlers." -msgstr "" - -#: aiogram.handlers.callback_query.CallbackQueryHandler:13 of -msgid "Example:" -msgstr "" - -#: aiogram.handlers.callback_query.CallbackQueryHandler.from_user:1 of -msgid "Is alias for `event.from_user`" -msgstr "" - -#: aiogram.handlers.callback_query.CallbackQueryHandler.message:1 of -msgid "Is alias for `event.message`" -msgstr "" - -#: aiogram.handlers.callback_query.CallbackQueryHandler.callback_data:1 of -msgid "Is alias for `event.data`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chat_member.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chat_member.po deleted file mode 100644 index 19d4b9b0..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chat_member.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:3 -msgid "ChatMemberHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:5 -msgid "There is base class for chat member updated events." -msgstr "" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:23 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:25 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chat_member.rst:27 -msgid ":code:`self.chat` is alias for :code:`self.event.chat`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chosen_inline_result.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chosen_inline_result.po deleted file mode 100644 index 558adf89..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/chosen_inline_result.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:3 -msgid "ChosenInlineResultHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:5 -msgid "There is base class for chosen inline result handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:22 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:24 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:26 -msgid ":code:`self.chat` is alias for :code:`self.event.chat`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/chosen_inline_result.rst:27 -msgid ":code:`self.from_user` is alias for :code:`self.event.from_user`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/error.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/error.po deleted file mode 100644 index 0d6e9328..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/error.po +++ /dev/null @@ -1,50 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/error.rst:3 -msgid "ErrorHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:5 -msgid "There is base class for error handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:27 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:29 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:31 -msgid "" -":code:`self.exception_name` is alias for " -":code:`self.event.__class__.__name__`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/error.rst:32 -msgid ":code:`self.exception_message` is alias for :code:`str(self.event)`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/index.po deleted file mode 100644 index 780ca896..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/index.po +++ /dev/null @@ -1,42 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/index.rst:3 -msgid "Class based handlers" -msgstr "" - -#: ../../dispatcher/class_based_handlers/index.rst:5 -msgid "" -"A handler is a async callable which takes a event with contextual data " -"and returns a response." -msgstr "" - -#: ../../dispatcher/class_based_handlers/index.rst:7 -msgid "" -"In **aiogram** it can be more than just an async function, these allow " -"you to use classes which can be used as Telegram event handlers to " -"structure your event handlers and reuse code by harnessing inheritance " -"and mixins." -msgstr "" - -#: ../../dispatcher/class_based_handlers/index.rst:10 -msgid "" -"There are some base class based handlers what you need to use in your own" -" handlers:" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/inline_query.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/inline_query.po deleted file mode 100644 index b8a5fdef..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/inline_query.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:3 -msgid "InlineQueryHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:5 -msgid "There is base class for inline query handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:22 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:24 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:26 -msgid ":code:`self.chat` is alias for :code:`self.event.chat`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/inline_query.rst:27 -msgid ":code:`self.query` is alias for :code:`self.event.query`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/message.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/message.po deleted file mode 100644 index 247cd4de..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/message.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/message.rst:3 -msgid "MessageHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:5 -msgid "There is base class for message handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:22 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:24 -msgid "" -"This base handler is subclass of [BaseHandler](basics.md#basehandler) " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:26 -msgid ":code:`self.chat` is alias for :code:`self.event.chat`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/message.rst:27 -msgid ":code:`self.from_user` is alias for :code:`self.event.from_user`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/poll.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/poll.po deleted file mode 100644 index c8717a1d..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/poll.po +++ /dev/null @@ -1,48 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/poll.rst:3 -msgid "PollHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:5 -msgid "There is base class for poll handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:21 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:23 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:25 -msgid ":code:`self.question` is alias for :code:`self.event.question`" -msgstr "" - -#: ../../dispatcher/class_based_handlers/poll.rst:26 -msgid ":code:`self.options` is alias for :code:`self.event.options`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/pre_checkout_query.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/pre_checkout_query.po deleted file mode 100644 index 2f868119..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/pre_checkout_query.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:3 -msgid "PreCheckoutQueryHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:5 -msgid "There is base class for callback query handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:21 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:23 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/pre_checkout_query.rst:25 -msgid ":code:`self.from_user` is alias for :code:`self.event.from_user`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/shipping_query.po b/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/shipping_query.po deleted file mode 100644 index ccc60897..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/class_based_handlers/shipping_query.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:3 -msgid "ShippingQueryHandler" -msgstr "" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:5 -msgid "There is base class for callback query handlers." -msgstr "" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:8 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:21 -msgid "Extension" -msgstr "" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:23 -msgid "" -"This base handler is subclass of :ref:`BaseHandler ` " -"with some extensions:" -msgstr "" - -#: ../../dispatcher/class_based_handlers/shipping_query.rst:25 -msgid ":code:`self.from_user` is alias for :code:`self.event.from_user`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po b/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po deleted file mode 100644 index b3e158d8..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/dependency_injection.po +++ /dev/null @@ -1,96 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/dependency_injection.rst:3 -msgid "Dependency injection" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:5 -msgid "" -"Dependency injection is a programming technique that makes a class " -"independent of its dependencies. It achieves that by decoupling the usage" -" of an object from its creation. This helps you to follow `SOLID's " -"`_ dependency inversion and single " -"responsibility principles." -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:12 -msgid "How it works in aiogram" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:14 -msgid "" -"For each update :class:`aiogram.dispatcher.dispatcher.Dispatcher` passes " -"handling context data. Filters and middleware can also make changes to " -"the context." -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:17 -msgid "" -"To access contextual data you should specify corresponding keyword " -"parameter in handler or filter. For example, to get " -":class:`aiogram.fsm.context.FSMContext` we do it like that:" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:30 -msgid "Injecting own dependencies" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:32 -msgid "Aiogram provides several ways to complement / modify contextual data." -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:34 -msgid "" -"The first and easiest way is to simply specify the named arguments in " -":class:`aiogram.dispatcher.dispatcher.Dispatcher` initialization, polling" -" start methods or " -":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` " -"initialization if you use webhooks." -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:46 -msgid "Analogy for webhook:" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:55 -msgid "" -":class:`aiogram.dispatcher.dispatcher.Dispatcher`'s workflow data also " -"can be supplemented by setting values as in a dictionary:" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:63 -msgid "" -"The middlewares updates the context quite often. You can read more about " -"them on this page:" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:66 -msgid ":ref:`Middlewares `" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:68 -msgid "The last way is to return a dictionary from the filter:" -msgstr "" - -#: ../../dispatcher/dependency_injection.rst:72 -msgid "" -"...or using :ref:`MagicFilter ` with :code:`.as_(...)` " -"method." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po deleted file mode 100644 index e5a8a9f2..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/dispatcher.po +++ /dev/null @@ -1,184 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/dispatcher.rst:3 -msgid "Dispatcher" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:5 -msgid "" -"Dispatcher is root :obj:`Router` and in code Dispatcher can be used " -"directly for routing updates or attach another routers into dispatcher." -msgstr "" - -#: ../../dispatcher/dispatcher.rst:7 -msgid "" -"Here is only listed base information about Dispatcher. All about writing " -"handlers, filters and etc. you can found in next pages:" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:9 -msgid ":ref:`Router `" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:10 -msgid ":ref:`Filtering events`" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher:1 -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:1 of -msgid "Root router" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__ -#: aiogram.dispatcher.dispatcher.Dispatcher.feed_raw_update -#: aiogram.dispatcher.dispatcher.Dispatcher.feed_update -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling of -msgid "Parameters" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:3 of -msgid "Storage for FSM" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:4 of -msgid "FSM strategy" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:5 of -msgid "Events isolation" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:6 of -msgid "" -"Disable FSM, note that if you disable FSM then you should not use storage" -" and events isolation" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.__init__:8 of -msgid "Other arguments, will be passed as keyword arguments to handlers" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.feed_raw_update:1 of -msgid "" -"Main entry point for incoming updates with automatic Dict->Update " -"serializer" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.feed_update:1 of -msgid "" -"Main entry point for incoming updates Response of this method can be used" -" as Webhook response" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:1 of -msgid "Run many bots with polling" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:3 of -msgid "Bot instances (one or mre)" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:4 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:4 of -msgid "Long-polling wait time" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:5 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:5 of -msgid "Run task for each event and no wait result" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:6 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:6 of -msgid "backoff-retry config" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:7 of -msgid "List of the update types you want your bot to receive" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:8 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:9 of -msgid "handle signals (SIGINT/SIGTERM)" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:9 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:10 of -msgid "close bot sessions on shutdown" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling:10 -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:11 of -msgid "contextual data" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.run_polling -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling of -msgid "Returns" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:1 of -msgid "Polling runner" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:3 of -msgid "Bot instances (one or more)" -msgstr "" - -#: aiogram.dispatcher.dispatcher.Dispatcher.start_polling:7 of -msgid "" -"List of the update types you want your bot to receive By default, all " -"used update types are enabled (resolved from handlers)" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:18 -msgid "Simple usage" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:20 ../../dispatcher/dispatcher.rst:33 -msgid "Example:" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:31 -msgid "Including routers" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:43 -msgid "Handling updates" -msgstr "" - -#: ../../dispatcher/dispatcher.rst:45 -msgid "" -"All updates can be propagated to the dispatcher by " -":obj:`Dispatcher.feed_update(bot=..., update=...)` method:" -msgstr "" - -#~ msgid "Bot instances" -#~ msgstr "" - -#~ msgid "Poling timeout" -#~ msgstr "" - -#~ msgid "`Router `__" -#~ msgstr "" - -#~ msgid "`Observer `__" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/errors.po b/docs/locale/en/LC_MESSAGES/dispatcher/errors.po deleted file mode 100644 index d9f28e0a..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/errors.po +++ /dev/null @@ -1,159 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/errors.rst:3 -msgid "Errors" -msgstr "" - -#: ../../dispatcher/errors.rst:7 -msgid "Handling errors" -msgstr "" - -#: ../../dispatcher/errors.rst:9 -msgid "" -"Is recommended way that you should use errors inside handlers using try-" -"except block, but in common cases you can use global errors handler at " -"router or dispatcher level." -msgstr "" - -#: ../../dispatcher/errors.rst:12 -msgid "" -"If you specify errors handler for router - it will be used for all " -"handlers inside this router." -msgstr "" - -#: ../../dispatcher/errors.rst:14 -msgid "" -"If you specify errors handler for dispatcher - it will be used for all " -"handlers inside all routers." -msgstr "" - -#: ../../dispatcher/errors.rst:34 -msgid "ErrorEvent" -msgstr "" - -#: aiogram.types.error_event.ErrorEvent:1 of -msgid "" -"Internal event, should be used to receive errors while processing Updates" -" from Telegram" -msgstr "" - -#: aiogram.types.error_event.ErrorEvent:3 of -msgid "Source: https://core.telegram.org/bots/api#error-event" -msgstr "" - -#: ../../docstring aiogram.types.error_event.ErrorEvent.update:1 of -msgid "Received update" -msgstr "" - -#: ../../docstring aiogram.types.error_event.ErrorEvent.exception:1 of -msgid "Exception" -msgstr "" - -#: ../../dispatcher/errors.rst:45 -msgid "Error types" -msgstr "" - -#: aiogram.exceptions.AiogramError:1 of -msgid "Base exception for all aiogram errors." -msgstr "" - -#: aiogram.exceptions.DetailedAiogramError:1 of -msgid "Base exception for all aiogram errors with detailed message." -msgstr "" - -#: aiogram.exceptions.CallbackAnswerException:1 of -msgid "Exception for callback answer." -msgstr "" - -#: aiogram.exceptions.UnsupportedKeywordArgument:1 of -msgid "Exception raised when a keyword argument is passed as filter." -msgstr "" - -#: aiogram.exceptions.TelegramAPIError:1 of -msgid "Base exception for all Telegram API errors." -msgstr "" - -#: aiogram.exceptions.TelegramNetworkError:1 of -msgid "Base exception for all Telegram network errors." -msgstr "" - -#: aiogram.exceptions.TelegramRetryAfter:1 of -msgid "Exception raised when flood control exceeds." -msgstr "" - -#: aiogram.exceptions.TelegramMigrateToChat:1 of -msgid "Exception raised when chat has been migrated to a supergroup." -msgstr "" - -#: aiogram.exceptions.TelegramBadRequest:1 of -msgid "Exception raised when request is malformed." -msgstr "" - -#: aiogram.exceptions.TelegramNotFound:1 of -msgid "Exception raised when chat, message, user, etc. not found." -msgstr "" - -#: aiogram.exceptions.TelegramConflictError:1 of -msgid "" -"Exception raised when bot token is already used by another application in" -" polling mode." -msgstr "" - -#: aiogram.exceptions.TelegramUnauthorizedError:1 of -msgid "Exception raised when bot token is invalid." -msgstr "" - -#: aiogram.exceptions.TelegramForbiddenError:1 of -msgid "Exception raised when bot is kicked from chat or etc." -msgstr "" - -#: aiogram.exceptions.TelegramServerError:1 of -msgid "Exception raised when Telegram server returns 5xx error." -msgstr "" - -#: aiogram.exceptions.RestartingTelegram:1 of -msgid "Exception raised when Telegram server is restarting." -msgstr "" - -#: aiogram.exceptions.RestartingTelegram:3 of -msgid "" -"It seems like this error is not used by Telegram anymore, but it's still " -"here for backward compatibility." -msgstr "" - -#: aiogram.exceptions.RestartingTelegram:6 of -msgid "" -"Currently, you should expect that Telegram can raise RetryAfter (with " -"timeout 5 seconds)" -msgstr "" - -#: aiogram.exceptions.RestartingTelegram:7 of -msgid "error instead of this one." -msgstr "" - -#: aiogram.exceptions.TelegramEntityTooLarge:1 of -msgid "Exception raised when you are trying to send a file that is too large." -msgstr "" - -#: aiogram.exceptions.ClientDecodeError:1 of -msgid "" -"Exception raised when client can't decode response. (Malformed response, " -"etc.)" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/callback_data.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/callback_data.po deleted file mode 100644 index 559bf6be..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/callback_data.po +++ /dev/null @@ -1,160 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/callback_data.rst:3 -msgid "Callback Data Factory & Filter" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData:1 of -msgid "Base class for callback data wrapper" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData:3 of -msgid "This class should be used as super-class of user-defined callbacks." -msgstr "" - -#: aiogram.filters.callback_data.CallbackData:5 of -msgid "" -"The class-keyword :code:`prefix` is required to define prefix and also " -"the argument :code:`sep` can be passed to define separator (default is " -":code:`:`)." -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.pack:1 of -msgid "Generate callback data string" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.filter -#: aiogram.filters.callback_data.CallbackData.pack -#: aiogram.filters.callback_data.CallbackData.unpack of -msgid "Returns" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.pack:3 of -msgid "valid callback data for Telegram Bot API" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.unpack:1 of -msgid "Parse callback data string" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.filter -#: aiogram.filters.callback_data.CallbackData.unpack of -msgid "Parameters" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.unpack:3 of -msgid "value from Telegram" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.unpack:4 of -msgid "instance of CallbackData" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.filter:1 of -msgid "Generates a filter for callback query with rule" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.filter:3 of -msgid "magic rule" -msgstr "" - -#: aiogram.filters.callback_data.CallbackData.filter:4 of -msgid "instance of filter" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:11 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:13 -msgid "Create subclass of :code:`CallbackData`:" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:21 -msgid "After that you can generate any callback based on this class, for example:" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:29 -msgid "" -"So... Now you can use this class to generate any callbacks with defined " -"structure" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:41 -msgid "... and handle by specific rules" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:52 -msgid "Also can be used in :doc:`Keyboard builder `:" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:63 -msgid "Another abstract example:" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:101 -msgid "Known limitations" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:103 -msgid "Allowed types and their subclasses:" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:105 -msgid ":code:`str`" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:106 -msgid ":code:`int`" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:107 -msgid ":code:`bool`" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:108 -msgid ":code:`float`" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:109 -msgid ":code:`Decimal` (:code:`from decimal import Decimal`)" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:110 -msgid ":code:`Fraction` (:code:`from fractions import Fraction`)" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:111 -msgid ":code:`UUID` (:code:`from uuid import UUID`)" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:112 -msgid ":code:`Enum` (:code:`from enum import Enum`, only for string enums)" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:113 -msgid ":code:`IntEnum` (:code:`from enum import IntEnum`, only for int enums)" -msgstr "" - -#: ../../dispatcher/filters/callback_data.rst:118 -msgid "" -"Note that the integer Enum's should be always is subclasses of " -":code:`IntEnum` in due to parsing issues." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po deleted file mode 100644 index f20ee663..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/chat_member_updated.po +++ /dev/null @@ -1,228 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/filters/chat_member_updated.rst:3 -msgid "ChatMemberUpdated" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:6 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:8 -msgid "Handle user leave or join events" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:20 -msgid "" -"Or construct your own terms via using pre-defined set of statuses and " -"transitions." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:24 -msgid "Explanation" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:31 -msgid "" -"You can import from :code:`aiogram.filters` all available variants of " -"`statuses`_, `status groups`_ or `transitions`_:" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:35 -msgid "Statuses" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:38 -#: ../../dispatcher/filters/chat_member_updated.rst:63 -#: ../../dispatcher/filters/chat_member_updated.rst:83 -msgid "name" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:38 -#: ../../dispatcher/filters/chat_member_updated.rst:63 -#: ../../dispatcher/filters/chat_member_updated.rst:83 -msgid "Description" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:40 -msgid ":code:`CREATOR`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:40 -msgid "Chat owner" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:42 -msgid ":code:`ADMINISTRATOR`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:42 -msgid "Chat administrator" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:44 -msgid ":code:`MEMBER`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:44 -msgid "Member of the chat" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:46 -msgid ":code:`RESTRICTED`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:46 -msgid "Restricted user (can be not member)" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:48 -msgid ":code:`LEFT`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:48 -msgid "Isn't member of the chat" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:50 -msgid ":code:`KICKED`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:50 -msgid "Kicked member by administrators" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:53 -msgid "" -"Statuses can be extended with `is_member` flag by prefixing with " -":code:`+` (for :code:`is_member == True)` or :code:`-` (for " -":code:`is_member == False`) symbol, like :code:`+RESTRICTED` or " -":code:`-RESTRICTED`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:58 -msgid "Status groups" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:60 -msgid "" -"The particular statuses can be combined via bitwise :code:`or` operator, " -"like :code:`CREATOR | ADMINISTRATOR`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:65 -msgid ":code:`IS_MEMBER`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:65 -msgid "" -"Combination of :code:`(CREATOR | ADMINISTRATOR | MEMBER | +RESTRICTED)` " -"statuses." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:67 -msgid ":code:`IS_ADMIN`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:67 -msgid "Combination of :code:`(CREATOR | ADMINISTRATOR)` statuses." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:69 -msgid ":code:`IS_NOT_MEMBER`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:69 -msgid "Combination of :code:`(LEFT | KICKED | -RESTRICTED)` statuses." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:73 -msgid "Transitions" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:75 -msgid "" -"Transitions can be defined via bitwise shift operators :code:`>>` and " -":code:`<<`. Old chat member status should be defined in the left side for" -" :code:`>>` operator (right side for :code:`<<`) and new status should be" -" specified on the right side for :code:`>>` operator (left side for " -":code:`<<`)" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:79 -msgid "" -"The direction of transition can be changed via bitwise inversion " -"operator: :code:`~JOIN_TRANSITION` will produce swap of old and new " -"statuses." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:85 -msgid ":code:`JOIN_TRANSITION`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:85 -msgid "" -"Means status changed from :code:`IS_NOT_MEMBER` to :code:`IS_MEMBER` " -"(:code:`IS_NOT_MEMBER >> IS_MEMBER`)" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:88 -msgid ":code:`LEAVE_TRANSITION`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:88 -msgid "" -"Means status changed from :code:`IS_MEMBER` to :code:`IS_NOT_MEMBER` " -"(:code:`~JOIN_TRANSITION`)" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:91 -msgid ":code:`PROMOTED_TRANSITION`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:91 -msgid "" -"Means status changed from :code:`(MEMBER | RESTRICTED | LEFT | KICKED) >>" -" ADMINISTRATOR` (:code:`(MEMBER | RESTRICTED | LEFT | KICKED) >> " -"ADMINISTRATOR`)" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:98 -msgid "" -"Note that if you define the status unions (via :code:`|`) you will need " -"to add brackets for the statement before use shift operator in due to " -"operator priorities." -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:103 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:105 -msgid "Allowed update types for this filter:" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:107 -msgid "`my_chat_member`" -msgstr "" - -#: ../../dispatcher/filters/chat_member_updated.rst:108 -msgid "`chat_member`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/command.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/command.po deleted file mode 100644 index 846f439e..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/command.po +++ /dev/null @@ -1,156 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/command.rst:3 -msgid "Command" -msgstr "" - -#: aiogram.filters.command.Command:1 of -msgid "This filter can be helpful for handling commands from the text messages." -msgstr "" - -#: aiogram.filters.command.Command:3 of -msgid "" -"Works only with :class:`aiogram.types.message.Message` events which have " -"the :code:`text`." -msgstr "" - -#: aiogram.filters.command.Command.__init__:1 of -msgid "List of commands (string or compiled regexp patterns)" -msgstr "" - -#: aiogram.filters.command.Command.__init__ of -msgid "Parameters" -msgstr "" - -#: aiogram.filters.command.Command.__init__:3 of -msgid "" -"Prefix for command. Prefix is always a single char but here you can pass " -"all of allowed prefixes, for example: :code:`\"/!\"` will work with " -"commands prefixed by :code:`\"/\"` or :code:`\"!\"`." -msgstr "" - -#: aiogram.filters.command.Command.__init__:7 of -msgid "Ignore case (Does not work with regexp, use flags instead)" -msgstr "" - -#: aiogram.filters.command.Command.__init__:8 of -msgid "" -"Ignore bot mention. By default, bot can not handle commands intended for " -"other bots" -msgstr "" - -#: aiogram.filters.command.Command.__init__:10 of -msgid "Validate command object via Magic filter after all checks done" -msgstr "" - -#: ../../dispatcher/filters/command.rst:10 -msgid "" -"When filter is passed the :class:`aiogram.filters.command.CommandObject` " -"will be passed to the handler argument :code:`command`" -msgstr "" - -#: aiogram.filters.command.CommandObject:1 of -msgid "" -"Instance of this object is always has command and it prefix. Can be " -"passed as keyword argument **command** to the handler" -msgstr "" - -#: ../../docstring aiogram.filters.command.CommandObject.prefix:1 of -msgid "Command prefix" -msgstr "" - -#: ../../docstring aiogram.filters.command.CommandObject.command:1 of -msgid "Command without prefix and mention" -msgstr "" - -#: ../../docstring aiogram.filters.command.CommandObject.mention:1 of -msgid "Mention (if available)" -msgstr "" - -#: ../../docstring aiogram.filters.command.CommandObject.args:1 of -msgid "Command argument" -msgstr "" - -#: ../../docstring aiogram.filters.command.CommandObject.regexp_match:1 of -msgid "" -"Will be presented match result if the command is presented as regexp in " -"filter" -msgstr "" - -#: aiogram.filters.command.CommandObject.mentioned:1 of -msgid "This command has mention?" -msgstr "" - -#: aiogram.filters.command.CommandObject.text:1 of -msgid "Generate original text from object" -msgstr "" - -#: ../../dispatcher/filters/command.rst:19 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/command.rst:21 -msgid "Filter single variant of commands: :code:`Command(\"start\")`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:22 -msgid "" -"Handle command by regexp pattern: " -":code:`Command(re.compile(r\"item_(\\d+)\"))`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:23 -msgid "" -"Match command by multiple variants: :code:`Command(\"item\", " -"re.compile(r\"item_(\\d+)\"))`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:24 -msgid "" -"Handle commands in public chats intended for other bots: " -":code:`Command(\"command\", ignore_mention=True)`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:25 -msgid "" -"Use :class:`aiogram.types.bot_command.BotCommand` object as command " -"reference :code:`Command(BotCommand(command=\"command\", description=\"My" -" awesome command\")`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:29 -msgid "Command cannot include spaces or any whitespace" -msgstr "" - -#: ../../dispatcher/filters/command.rst:32 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/command.rst:34 -msgid "Allowed update types for this filter:" -msgstr "" - -#: ../../dispatcher/filters/command.rst:36 -msgid "`message`" -msgstr "" - -#: ../../dispatcher/filters/command.rst:37 -msgid "`edited_message`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/exception.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/exception.po deleted file mode 100644 index 75292abb..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/exception.po +++ /dev/null @@ -1,46 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/exception.rst:3 -msgid "Exceptions" -msgstr "" - -#: ../../dispatcher/filters/exception.rst:5 -msgid "This filters can be helpful for handling errors from the text messages." -msgstr "" - -#: aiogram.filters.exception.ExceptionTypeFilter:1 of -msgid "Allows to match exception by type" -msgstr "" - -#: aiogram.filters.exception.ExceptionMessageFilter:1 of -msgid "Allow to match exception by message" -msgstr "" - -#: ../../dispatcher/filters/exception.rst:18 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/exception.rst:20 -msgid "Allowed update types for this filters:" -msgstr "" - -#: ../../dispatcher/filters/exception.rst:22 -msgid ":code:`error`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/index.po deleted file mode 100644 index 5151825e..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/index.po +++ /dev/null @@ -1,178 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-18 01:50+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/index.rst:3 -msgid "Filtering events" -msgstr "" - -#: ../../dispatcher/filters/index.rst:5 -msgid "" -"Filters is needed for routing updates to the specific handler. Searching " -"of handler is always stops on first match set of filters are pass." -msgstr "" - -#: ../../dispatcher/filters/index.rst:8 -msgid "*aiogram* has some builtin useful filters." -msgstr "" - -#: ../../dispatcher/filters/index.rst:11 -msgid "Builtin filters" -msgstr "" - -#: ../../dispatcher/filters/index.rst:13 -msgid "Here is list of builtin filters:" -msgstr "" - -#: ../../dispatcher/filters/index.rst:27 -msgid "Writing own filters" -msgstr "" - -#: ../../dispatcher/filters/index.rst:29 -msgid "Filters can be:" -msgstr "" - -#: ../../dispatcher/filters/index.rst:31 -msgid "Asynchronous function (:code:`async def my_filter(*args, **kwargs): pass`)" -msgstr "" - -#: ../../dispatcher/filters/index.rst:32 -msgid "Synchronous function (:code:`def my_filter(*args, **kwargs): pass`)" -msgstr "" - -#: ../../dispatcher/filters/index.rst:33 -msgid "Anonymous function (:code:`lambda event: True`)" -msgstr "" - -#: ../../dispatcher/filters/index.rst:34 -msgid "Any awaitable object" -msgstr "" - -#: ../../dispatcher/filters/index.rst:35 -msgid "Subclass of :class:`aiogram.filters.base.Filter`" -msgstr "" - -#: ../../dispatcher/filters/index.rst:36 -msgid "Instances of :ref:`MagicFilter `" -msgstr "" - -#: ../../dispatcher/filters/index.rst:38 -msgid "" -"and should return bool or dict. If the dictionary is passed as result of " -"filter - resulted data will be propagated to the next filters and handler" -" as keywords arguments." -msgstr "" - -#: ../../dispatcher/filters/index.rst:43 -msgid "Base class for own filters" -msgstr "" - -#: aiogram.filters.base.Filter:1 of -msgid "" -"If you want to register own filters like builtin filters you will need to" -" write subclass of this class with overriding the :code:`__call__` method" -" and adding filter attributes." -msgstr "" - -#: aiogram.filters.base.Filter.__call__:1 of -msgid "This method should be overridden." -msgstr "" - -#: aiogram.filters.base.Filter.__call__:3 of -msgid "Accepts incoming event and should return boolean or dict." -msgstr "" - -#: aiogram.filters.base.Filter.__call__ of -msgid "Returns" -msgstr "" - -#: aiogram.filters.base.Filter.__call__:5 of -msgid ":class:`bool` or :class:`Dict[str, Any]`" -msgstr "" - -#: aiogram.filters.base.Filter.update_handler_flags:1 of -msgid "" -"Also if you want to extend handler flags with using this filter you " -"should implement this method" -msgstr "" - -#: aiogram.filters.base.Filter.update_handler_flags of -msgid "Parameters" -msgstr "" - -#: aiogram.filters.base.Filter.update_handler_flags:3 of -msgid "existing flags, can be updated directly" -msgstr "" - -#: ../../dispatcher/filters/index.rst:51 -msgid "Own filter example" -msgstr "" - -#: ../../dispatcher/filters/index.rst:53 -msgid "For example if you need to make simple text filter:" -msgstr "" - -#: ../../dispatcher/filters/index.rst:60 -msgid "Combining Filters" -msgstr "" - -#: ../../dispatcher/filters/index.rst:62 -msgid "In general, all filters can be combined in two ways" -msgstr "" - -#: ../../dispatcher/filters/index.rst:66 -msgid "Recommended way" -msgstr "" - -#: ../../dispatcher/filters/index.rst:68 -msgid "" -"If you specify multiple filters in a row, it will be checked with an " -"\"and\" condition:" -msgstr "" - -#: ../../dispatcher/filters/index.rst:75 -msgid "" -"Also, if you want to use two alternative ways to run the same handler " -"(\"or\" condition) you can register the handler twice or more times as " -"you like" -msgstr "" - -#: ../../dispatcher/filters/index.rst:84 -msgid "" -"Also sometimes you will need to invert the filter result, for example you" -" have an *IsAdmin* filter and you want to check if the user is not an " -"admin" -msgstr "" - -#: ../../dispatcher/filters/index.rst:93 -msgid "Another possible way" -msgstr "" - -#: ../../dispatcher/filters/index.rst:95 -msgid "" -"An alternative way is to combine using special functions (:func:`and_f`, " -":func:`or_f`, :func:`invert_f` from :code:`aiogram.filters` module):" -msgstr "" - -#~ msgid "" -#~ "Also, if you want to use two " -#~ "alternative ways to run the sage " -#~ "handler (\"or\" condition) you can " -#~ "register the handler twice or more " -#~ "times as you like" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po deleted file mode 100644 index 5a39eaf0..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_data.po +++ /dev/null @@ -1,122 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/filters/magic_data.rst:3 -msgid "MagicData" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:6 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:8 -msgid "" -":code:`MagicData(F.event.from_user.id == F.config.admin_id)` (Note that " -":code:`config` should be passed from middleware)" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:11 -msgid "Explanation" -msgstr "" - -#: aiogram.filters.magic_data.MagicData:1 of -msgid "This filter helps to filter event with contextual data" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:18 -msgid "Can be imported:" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:20 -msgid ":code:`from aiogram.filters import MagicData`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:24 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:26 -msgid "Allowed update types for this filter:" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:28 -msgid ":code:`message`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:29 -msgid ":code:`edited_message`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:30 -msgid ":code:`channel_post`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:31 -msgid ":code:`edited_channel_post`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:32 -msgid ":code:`inline_query`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:33 -msgid ":code:`chosen_inline_result`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:34 -msgid ":code:`callback_query`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:35 -msgid ":code:`shipping_query`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:36 -msgid ":code:`pre_checkout_query`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:37 -msgid ":code:`poll`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:38 -msgid ":code:`poll_answer`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:39 -msgid ":code:`my_chat_member`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:40 -msgid ":code:`chat_member`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:41 -msgid ":code:`chat_join_request`" -msgstr "" - -#: ../../dispatcher/filters/magic_data.rst:42 -msgid ":code:`error`" -msgstr "" - -#~ msgid "" -#~ "Or used from filters factory by " -#~ "passing corresponding arguments to handler " -#~ "registration line" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_filters.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_filters.po deleted file mode 100644 index 6f7bd698..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/magic_filters.po +++ /dev/null @@ -1,175 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/magic_filters.rst:5 -msgid "Magic filters" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:9 -msgid "This page still in progress. Has many incorrectly worded sentences." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:11 -msgid "Is external package maintained by *aiogram* core team." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:13 -msgid "" -"By default installs with *aiogram* and also is available on `PyPi - " -"magic-filter `_. That's mean you " -"can install it and use with any other libraries and in own projects " -"without depending *aiogram* installed." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:17 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:19 -msgid "" -"The **magic_filter** package implements class shortly named " -":class:`magic_filter.F` that's mean :code:`F` can be imported from " -":code:`aiogram` or :code:`magic_filter`. :class:`F` is alias for " -":class:`MagicFilter`." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:23 -msgid "" -"Note that *aiogram* has an small extension over magic-filter and if you " -"want to use this extension you should import magic from *aiogram* instead" -" of *magic_filter* package" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:25 -msgid "" -"The :class:`MagicFilter` object is callable, supports :ref:`some actions " -"` and memorize the attributes chain and " -"the action which should be checked on demand." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:28 -msgid "" -"So that's mean you can chain attribute getters, describe simple data " -"validations and then call the resulted object passing single object as " -"argument, for example make attributes chain :code:`F.foo.bar.baz` then " -"add action ':code:`F.foo.bar.baz == 'spam'` and then call the resulted " -"object - :code:`(F.foo.bar.baz == 'spam').resolve(obj)`" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:36 -msgid "Possible actions" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:38 -msgid "" -"Magic filter object supports some of basic logical operations over object" -" attributes" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:41 -msgid "Exists or not None" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:43 -msgid "Default actions." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:50 -msgid "Equals" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:58 -msgid "Is one of" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:60 -msgid "" -"Can be used as method named :code:`in_` or as matmul operator :code:`@` " -"with any iterable" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:68 -msgid "Contains" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:75 -msgid "String startswith/endswith" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:77 -msgid "Can be applied only for text attributes" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:85 -msgid "Regexp" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:92 -msgid "Custom function" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:94 -msgid "Accepts any callable. Callback will be called when filter checks result" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:101 -msgid "Inverting result" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:103 -msgid "" -"Any of available operation can be inverted by bitwise inversion - " -":code:`~`" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:111 -msgid "Combining" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:113 -msgid "" -"All operations can be combined via bitwise and/or operators - " -":code:`&`/:code:`|`" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:123 -msgid "Attribute modifiers - string manipulations" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:125 -msgid "Make text upper- or lower-case" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:127 -msgid "Can be used only with string attributes." -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:137 -msgid "Get filter result as handler argument" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:139 -msgid "" -"This part is not available in *magic-filter* directly but can be used " -"with *aiogram*" -msgstr "" - -#: ../../dispatcher/filters/magic_filters.rst:152 -msgid "Usage in *aiogram*" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/filters/text.po b/docs/locale/en/LC_MESSAGES/dispatcher/filters/text.po deleted file mode 100644 index f267c57f..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/filters/text.po +++ /dev/null @@ -1,130 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-25 22:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/filters/text.rst:3 -msgid "Text" -msgstr "" - -#: aiogram.filters.text.Text:1 of -msgid "" -"Is useful for filtering text :class:`aiogram.types.message.Message`, any " -":class:`aiogram.types.callback_query.CallbackQuery` with `data`, " -":class:`aiogram.types.inline_query.InlineQuery` or " -":class:`aiogram.types.poll.Poll` question." -msgstr "" - -#: aiogram.filters.text.Text:7 of -msgid "" -"Only one of `text`, `contains`, `startswith` or `endswith` argument can " -"be used at once. Any of that arguments can be string, list, set or tuple " -"of strings." -msgstr "" - -#: aiogram.filters.text.Text:12 of -msgid "" -"use :ref:`magic-filter `. For example do :pycode:`F.text " -"== \"text\"` instead" -msgstr "" - -#: ../../dispatcher/filters/text.rst:10 -msgid "Can be imported:" -msgstr "" - -#: ../../dispatcher/filters/text.rst:12 -msgid ":code:`from aiogram.filters.text import Text`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:13 -msgid ":code:`from aiogram.filters import Text`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:16 -msgid "Usage" -msgstr "" - -#: ../../dispatcher/filters/text.rst:18 -msgid "" -"Text equals with the specified value: :code:`Text(text=\"text\") # value" -" == 'text'`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:19 -msgid "" -"Text starts with the specified value: :code:`Text(startswith=\"text\") #" -" value.startswith('text')`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:20 -msgid "" -"Text ends with the specified value: :code:`Text(endswith=\"text\") # " -"value.endswith('text')`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:21 -msgid "" -"Text contains the specified value: :code:`Text(contains=\"text\") # " -"value in 'text'`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:22 -msgid "" -"Any of previous listed filters can be list, set or tuple of strings " -"that's mean any of listed value should be " -"equals/startswith/endswith/contains: :code:`Text(text=[\"text\", " -"\"spam\"])`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:23 -msgid "" -"Ignore case can be combined with any previous listed filter: " -":code:`Text(text=\"Text\", ignore_case=True) # value.lower() == " -"'text'.lower()`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:26 -msgid "Allowed handlers" -msgstr "" - -#: ../../dispatcher/filters/text.rst:28 -msgid "Allowed update types for this filter:" -msgstr "" - -#: ../../dispatcher/filters/text.rst:30 -msgid ":code:`message`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:31 -msgid ":code:`edited_message`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:32 -msgid ":code:`channel_post`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:33 -msgid ":code:`edited_channel_post`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:34 -msgid ":code:`inline_query`" -msgstr "" - -#: ../../dispatcher/filters/text.rst:35 -msgid ":code:`callback_query`" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/index.po deleted file mode 100644 index 0d9353d2..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/index.po +++ /dev/null @@ -1,130 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/finite_state_machine/index.rst:3 -msgid "Finite State Machine" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:5 -msgid "" -"A finite-state machine (FSM) or finite-state automaton (FSA, plural: " -"automata), finite automaton, or simply a state machine, is a mathematical" -" model of computation." -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:8 -msgid "" -"It is an abstract machine that can be in exactly one of a finite number " -"of states at any given time. The FSM can change from one state to another" -" in response to some inputs; the change from one state to another is " -"called a transition." -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:12 -msgid "" -"An FSM is defined by a list of its states, its initial state, and the " -"inputs that trigger each transition." -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:19 -msgid "Source: `WikiPedia `_" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:22 -msgid "Usage example" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:24 -msgid "" -"Not all functionality of the bot can be implemented as single handler, " -"for example you will need to collect some data from user in separated " -"steps you will need to use FSM." -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:-1 -msgid "FSM Example" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:31 -msgid "Let's see how to do that step-by-step" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:34 -msgid "Step by step" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:36 -msgid "" -"Before handle any states you will need to specify what kind of states you" -" want to handle" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:44 -msgid "And then write handler for each state separately from the start of dialog" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:46 -msgid "" -"Here is dialog can be started only via command :code:`/start`, so lets " -"handle it and make transition user to state :code:`Form.name`" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:54 -msgid "" -"After that you will need to save some data to the storage and make " -"transition to next step." -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:62 -msgid "" -"At the next steps user can make different answers, it can be `yes`, `no` " -"or any other" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:64 -msgid "Handle :code:`yes` and soon we need to handle :code:`Form.language` state" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:72 -msgid "Handle :code:`no`" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:80 -msgid "And handle any other answers" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:88 -msgid "" -"All possible cases of `like_bots` step was covered, let's implement " -"finally step" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:96 -msgid "" -"And now you have covered all steps from the image, but you can make " -"possibility to cancel conversation, lets do that via command or text" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:105 -msgid "Complete example" -msgstr "" - -#: ../../dispatcher/finite_state_machine/index.rst:112 -msgid "Read more" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po b/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po deleted file mode 100644 index f8669452..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/finite_state_machine/storages.po +++ /dev/null @@ -1,225 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/finite_state_machine/storages.rst:3 -msgid "Storages" -msgstr "" - -#: ../../dispatcher/finite_state_machine/storages.rst:6 -msgid "Storages out of the box" -msgstr "" - -#: ../../dispatcher/finite_state_machine/storages.rst:9 -msgid "MemoryStorage" -msgstr "" - -#: aiogram.fsm.storage.memory.MemoryStorage:1 of -msgid "" -"Default FSM storage, stores all data in :class:`dict` and loss everything" -" on shutdown" -msgstr "" - -#: aiogram.fsm.storage.memory.MemoryStorage:5 of -msgid "" -"Is not recommended using in production in due to you will lose all data " -"when your bot restarts" -msgstr "" - -#: ../../dispatcher/finite_state_machine/storages.rst:16 -msgid "RedisStorage" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage:1 of -msgid "" -"Redis storage required :code:`redis` package installed (:code:`pip " -"install redis`)" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data -#: aiogram.fsm.storage.base.BaseStorage.get_state -#: aiogram.fsm.storage.base.BaseStorage.set_data -#: aiogram.fsm.storage.base.BaseStorage.set_state -#: aiogram.fsm.storage.base.BaseStorage.update_data -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build -#: aiogram.fsm.storage.redis.KeyBuilder.build -#: aiogram.fsm.storage.redis.RedisStorage.__init__ -#: aiogram.fsm.storage.redis.RedisStorage.from_url of -msgid "Parameters" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.__init__:1 of -msgid "Instance of Redis connection" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.__init__:2 of -msgid "builder that helps to convert contextual key to string" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.__init__:3 of -msgid "TTL for state records" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.__init__:4 of -msgid "TTL for data records" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.from_url:1 of -msgid "" -"Create an instance of :class:`RedisStorage` with specifying the " -"connection string" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.from_url:3 of -msgid "for example :code:`redis://user:password@host:port/db`" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.from_url:4 of -msgid "see :code:`redis` docs" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.from_url:5 of -msgid "arguments to be passed to :class:`RedisStorage`" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data -#: aiogram.fsm.storage.base.BaseStorage.get_state -#: aiogram.fsm.storage.base.BaseStorage.update_data -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build -#: aiogram.fsm.storage.redis.KeyBuilder.build -#: aiogram.fsm.storage.redis.RedisStorage.from_url of -msgid "Returns" -msgstr "" - -#: aiogram.fsm.storage.redis.RedisStorage.from_url:6 of -msgid "an instance of :class:`RedisStorage`" -msgstr "" - -#: ../../dispatcher/finite_state_machine/storages.rst:22 -msgid "Keys inside storage can be customized via key builders:" -msgstr "" - -#: aiogram.fsm.storage.redis.KeyBuilder:1 of -msgid "Base class for Redis key builder" -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build:1 -#: aiogram.fsm.storage.redis.KeyBuilder.build:1 of -msgid "This method should be implemented in subclasses" -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build:3 -#: aiogram.fsm.storage.redis.KeyBuilder.build:3 of -msgid "contextual key" -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build:4 -#: aiogram.fsm.storage.redis.KeyBuilder.build:4 of -msgid "part of the record" -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder.build:5 -#: aiogram.fsm.storage.redis.KeyBuilder.build:5 of -msgid "key to be used in Redis queries" -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder:1 of -msgid "Simple Redis key builder with default prefix." -msgstr "" - -#: aiogram.fsm.storage.redis.DefaultKeyBuilder:3 of -msgid "" -"Generates a colon-joined string with prefix, chat_id, user_id, optional " -"bot_id and optional destiny." -msgstr "" - -#: ../../dispatcher/finite_state_machine/storages.rst:34 -msgid "Writing own storages" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage:1 of -msgid "Base class for all FSM storages" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.set_state:1 of -msgid "Set state for specified key" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data:3 -#: aiogram.fsm.storage.base.BaseStorage.get_state:3 -#: aiogram.fsm.storage.base.BaseStorage.set_data:3 -#: aiogram.fsm.storage.base.BaseStorage.set_state:3 -#: aiogram.fsm.storage.base.BaseStorage.update_data:3 of -msgid "storage key" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.set_state:4 of -msgid "new state" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_state:1 of -msgid "Get key state" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_state:4 of -msgid "current state" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.set_data:1 of -msgid "Write data (replace)" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.set_data:4 -#: aiogram.fsm.storage.base.BaseStorage.update_data:5 of -msgid "new data" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data:1 of -msgid "Get current data for key" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.get_data:4 of -msgid "current data" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.update_data:1 of -msgid "Update date in the storage for key (like dict.update)" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.update_data:4 of -msgid "partial data" -msgstr "" - -#: aiogram.fsm.storage.base.BaseStorage.close:1 of -msgid "Close storage (database connection, file or etc.)" -msgstr "" - -#~ msgid "" -#~ "Redis storage required :code:`aioredis` " -#~ "package installed (:code:`pip install " -#~ "aioredis`)" -#~ msgstr "" - -#~ msgid "see :code:`aioredis` docs" -#~ msgstr "" - -#~ msgid "Custom arguments for Redis lock" -#~ msgstr "" - -#~ msgid "instance of the current bot" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/flags.po b/docs/locale/en/LC_MESSAGES/dispatcher/flags.po deleted file mode 100644 index 0ad40047..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/flags.po +++ /dev/null @@ -1,129 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-07 23:33+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/flags.rst:3 -msgid "Flags" -msgstr "" - -#: ../../dispatcher/flags.rst:5 -msgid "" -"Flags is a markers for handlers that can be used in `middlewares <#use-" -"in-middlewares>`_ or special `utilities <#use-in-utilities>`_ to make " -"classification of the handlers." -msgstr "" - -#: ../../dispatcher/flags.rst:8 -msgid "" -"Flags can be added to the handler via `decorators <#via-decorators>`_, " -"`handlers registration <#via-handler-registration-method>`_ or `filters " -"`_." -msgstr "" - -#: ../../dispatcher/flags.rst:13 -msgid "Via decorators" -msgstr "" - -#: ../../dispatcher/flags.rst:15 -msgid "For example mark handler with `chat_action` flag" -msgstr "" - -#: ../../dispatcher/flags.rst:24 -msgid "Or just for rate-limit or something else" -msgstr "" - -#: ../../dispatcher/flags.rst:34 -msgid "Via handler registration method" -msgstr "" - -#: ../../dispatcher/flags.rst:41 -msgid "Via filters" -msgstr "" - -#: ../../dispatcher/flags.rst:55 -msgid "Use in middlewares" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags:1 of -msgid "Check flags via magic filter" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags aiogram.dispatcher.flags.extract_flags -#: aiogram.dispatcher.flags.get_flag of -msgid "Parameters" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags:3 -#: aiogram.dispatcher.flags.extract_flags:3 aiogram.dispatcher.flags.get_flag:3 -#: of -msgid "handler object or data" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags:4 of -msgid "instance of the magic" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags aiogram.dispatcher.flags.extract_flags -#: aiogram.dispatcher.flags.get_flag of -msgid "Returns" -msgstr "" - -#: aiogram.dispatcher.flags.check_flags:5 of -msgid "the result of magic filter check" -msgstr "" - -#: aiogram.dispatcher.flags.extract_flags:1 of -msgid "Extract flags from handler or middleware context data" -msgstr "" - -#: aiogram.dispatcher.flags.extract_flags:4 of -msgid "dictionary with all handler flags" -msgstr "" - -#: aiogram.dispatcher.flags.get_flag:1 of -msgid "Get flag by name" -msgstr "" - -#: aiogram.dispatcher.flags.get_flag:4 of -msgid "name of the flag" -msgstr "" - -#: aiogram.dispatcher.flags.get_flag:5 of -msgid "default value (None)" -msgstr "" - -#: aiogram.dispatcher.flags.get_flag:6 of -msgid "value of the flag or default" -msgstr "" - -#: ../../dispatcher/flags.rst:62 -msgid "Example in middlewares" -msgstr "" - -#: ../../dispatcher/flags.rst:75 -msgid "Use in utilities" -msgstr "" - -#: ../../dispatcher/flags.rst:77 -msgid "" -"For example you can collect all registered commands with handler " -"description and then it can be used for generating commands help" -msgstr "" - -#~ msgid "FlagDecorator(flag: aiogram.dispatcher.flags.Flag)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/index.po b/docs/locale/en/LC_MESSAGES/dispatcher/index.po deleted file mode 100644 index 1f0a0e02..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/index.po +++ /dev/null @@ -1,76 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/index.rst:3 -msgid "Handling events" -msgstr "" - -#: ../../dispatcher/index.rst:5 -msgid "" -"*aiogram* includes Dispatcher mechanism. Dispatcher is needed for " -"handling incoming updates from Telegram." -msgstr "" - -#: ../../dispatcher/index.rst:8 -msgid "With dispatcher you can do:" -msgstr "" - -#: ../../dispatcher/index.rst:10 -msgid "Handle incoming updates;" -msgstr "" - -#: ../../dispatcher/index.rst:11 -msgid "Filter incoming events before it will be processed by specific handler;" -msgstr "" - -#: ../../dispatcher/index.rst:12 -msgid "Modify event and related data in middlewares;" -msgstr "" - -#: ../../dispatcher/index.rst:13 -msgid "" -"Separate bot functionality between different handlers, modules and " -"packages" -msgstr "" - -#: ../../dispatcher/index.rst:15 -msgid "" -"Dispatcher is also separated into two entities - Router and Dispatcher. " -"Dispatcher is subclass of router and should be always is root router." -msgstr "" - -#: ../../dispatcher/index.rst:18 -msgid "Telegram supports two ways of receiving updates:" -msgstr "" - -#: ../../dispatcher/index.rst:20 -msgid "" -":ref:`Webhook ` - you should configure your web server to " -"receive updates from Telegram;" -msgstr "" - -#: ../../dispatcher/index.rst:21 -msgid "" -":ref:`Long polling ` - you should request updates from " -"Telegram." -msgstr "" - -#: ../../dispatcher/index.rst:23 -msgid "So, you can use both of them with *aiogram*." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po b/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po deleted file mode 100644 index d5581be5..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/long_polling.po +++ /dev/null @@ -1,62 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/long_polling.rst:5 -msgid "Long-polling" -msgstr "" - -#: ../../dispatcher/long_polling.rst:7 -msgid "" -"Long-polling is a technology that allows a Telegram server to send " -"updates in case when you don't have dedicated IP address or port to " -"receive webhooks for example on a developer machine." -msgstr "" - -#: ../../dispatcher/long_polling.rst:11 -msgid "" -"To use long-polling mode you should use " -":meth:`aiogram.dispatcher.dispatcher.Dispatcher.start_polling` or " -":meth:`aiogram.dispatcher.dispatcher.Dispatcher.run_polling` methods." -msgstr "" - -#: ../../dispatcher/long_polling.rst:16 -msgid "" -"You can use polling from only one polling process per single Bot token, " -"in other case Telegram server will return an error." -msgstr "" - -#: ../../dispatcher/long_polling.rst:21 -msgid "" -"If you will need to scale your bot, you should use webhooks instead of " -"long-polling." -msgstr "" - -#: ../../dispatcher/long_polling.rst:25 -msgid "If you will use multibot mode, you should use webhook mode for all bots." -msgstr "" - -#: ../../dispatcher/long_polling.rst:28 -msgid "Example" -msgstr "" - -#: ../../dispatcher/long_polling.rst:30 -msgid "" -"This example will show you how to create simple echo bot based on long-" -"polling." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/middlewares.po b/docs/locale/en/LC_MESSAGES/dispatcher/middlewares.po deleted file mode 100644 index e562e992..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/middlewares.po +++ /dev/null @@ -1,181 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/middlewares.rst:3 -msgid "Middlewares" -msgstr "" - -#: ../../dispatcher/middlewares.rst:5 -msgid "" -"**aiogram** provides powerful mechanism for customizing event handlers " -"via middlewares." -msgstr "" - -#: ../../dispatcher/middlewares.rst:7 -msgid "" -"Middlewares in bot framework seems like Middlewares mechanism in web-" -"frameworks like `aiohttp " -"`_, `fastapi " -"`_, `Django " -"`_ or " -"etc.) with small difference - here is implemented two layers of " -"middlewares (before and after filters)." -msgstr "" - -#: ../../dispatcher/middlewares.rst:15 -msgid "" -"Middleware is function that triggered on every event received from " -"Telegram Bot API in many points on processing pipeline." -msgstr "" - -#: ../../dispatcher/middlewares.rst:19 -msgid "Base theory" -msgstr "" - -#: ../../dispatcher/middlewares.rst:21 -msgid "As many books and other literature in internet says:" -msgstr "" - -#: ../../dispatcher/middlewares.rst:23 -msgid "" -"Middleware is reusable software that leverages patterns and frameworks to" -" bridge the gap between the functional requirements of applications and " -"the underlying operating systems, network protocol stacks, and databases." -msgstr "" - -#: ../../dispatcher/middlewares.rst:27 -msgid "" -"Middleware can modify, extend or reject processing event in many places " -"of pipeline." -msgstr "" - -#: ../../dispatcher/middlewares.rst:30 -msgid "Basics" -msgstr "" - -#: ../../dispatcher/middlewares.rst:32 -msgid "" -"Middleware instance can be applied for every type of Telegram Event " -"(Update, Message, etc.) in two places" -msgstr "" - -#: ../../dispatcher/middlewares.rst:34 -msgid "" -"Outer scope - before processing filters " -"(:code:`..outer_middleware(...)`)" -msgstr "" - -#: ../../dispatcher/middlewares.rst:35 -msgid "" -"Inner scope - after processing filters but before handler " -"(:code:`..middleware(...)`)" -msgstr "" - -#: ../../dispatcher/middlewares.rst:-1 -msgid "Middleware basics" -msgstr "" - -#: ../../dispatcher/middlewares.rst:42 -msgid "" -"Middleware should be subclass of :code:`BaseMiddleware` (:code:`from " -"aiogram import BaseMiddleware`) or any async callable" -msgstr "" - -#: ../../dispatcher/middlewares.rst:45 -msgid "Arguments specification" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware:1 of -msgid "Bases: :py:class:`~abc.ABC`" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware:1 of -msgid "Generic middleware class" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__:1 of -msgid "Execute middleware" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__ of -msgid "Parameters" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__:3 of -msgid "Wrapped handler in middlewares chain" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__:4 of -msgid "Incoming event (Subclass of :class:`aiogram.types.base.TelegramObject`)" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__:5 of -msgid "Contextual data. Will be mapped to handler arguments" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__ of -msgid "Returns" -msgstr "" - -#: aiogram.dispatcher.middlewares.base.BaseMiddleware.__call__:6 of -msgid ":class:`Any`" -msgstr "" - -#: ../../dispatcher/middlewares.rst:56 -msgid "Examples" -msgstr "" - -#: ../../dispatcher/middlewares.rst:60 -msgid "" -"Middleware should always call :code:`await handler(event, data)` to " -"propagate event for next middleware/handler" -msgstr "" - -#: ../../dispatcher/middlewares.rst:64 -msgid "Class-based" -msgstr "" - -#: ../../dispatcher/middlewares.rst:85 -msgid "and then" -msgstr "" - -#: ../../dispatcher/middlewares.rst:94 -msgid "Function-based" -msgstr "" - -#: ../../dispatcher/middlewares.rst:109 -msgid "Facts" -msgstr "" - -#: ../../dispatcher/middlewares.rst:111 -msgid "Middlewares from outer scope will be called on every incoming event" -msgstr "" - -#: ../../dispatcher/middlewares.rst:112 -msgid "Middlewares from inner scope will be called only when filters pass" -msgstr "" - -#: ../../dispatcher/middlewares.rst:113 -msgid "" -"Inner middlewares is always calls for " -":class:`aiogram.types.update.Update` event type in due to all incoming " -"updates going to specific event type handler through built in update " -"handler" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/observer.po b/docs/locale/en/LC_MESSAGES/dispatcher/observer.po deleted file mode 100644 index b8a61e72..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/observer.po +++ /dev/null @@ -1,109 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-19 22:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../dispatcher/observer.rst:3 -msgid "Observer" -msgstr "" - -#: ../../dispatcher/observer.rst:5 -msgid "" -"Observer is used for filtering and handling different events. That is " -"part of internal API with some public methods and is recommended to don't" -" use methods is not listed here." -msgstr "" - -#: ../../dispatcher/observer.rst:7 -msgid "In `aiogram` framework is available two variants of observer:" -msgstr "" - -#: ../../dispatcher/observer.rst:9 -msgid "`EventObserver <#eventobserver>`__" -msgstr "" - -#: ../../dispatcher/observer.rst:10 -msgid "`TelegramEventObserver <#telegrameventobserver>`__" -msgstr "" - -#: ../../dispatcher/observer.rst:14 -msgid "EventObserver" -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver:1 of -msgid "Simple events observer" -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver:3 of -msgid "" -"Is used for managing events is not related with Telegram (For example " -"startup/shutdown processes)" -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver:5 of -msgid "Handlers can be registered via decorator or method" -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver.register:1 of -msgid "Register callback with filters" -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver.trigger:1 of -msgid "" -"Propagate event to handlers. Handler will be called when all its filters " -"is pass." -msgstr "" - -#: aiogram.dispatcher.event.event.EventObserver.__call__:1 -#: aiogram.dispatcher.event.telegram.TelegramEventObserver.__call__:1 of -msgid "Decorator for registering event handlers" -msgstr "" - -#: ../../dispatcher/observer.rst:22 -msgid "TelegramEventObserver" -msgstr "" - -#: aiogram.dispatcher.event.telegram.TelegramEventObserver:1 of -msgid "Event observer for Telegram events" -msgstr "" - -#: aiogram.dispatcher.event.telegram.TelegramEventObserver:3 of -msgid "" -"Here you can register handler with filter. This observer will stop event " -"propagation when first handler is pass." -msgstr "" - -#: aiogram.dispatcher.event.telegram.TelegramEventObserver.register:1 of -msgid "Register event handler" -msgstr "" - -#: aiogram.dispatcher.event.telegram.TelegramEventObserver.trigger:1 of -msgid "" -"Propagate event to handlers and stops propagation on first match. Handler" -" will be called when all its filters is pass." -msgstr "" - -#~ msgid "" -#~ "Here you can register handler with " -#~ "filters or bounded filters which can " -#~ "be used as keyword arguments instead " -#~ "of writing full references when you " -#~ "register new handlers. This observer " -#~ "will stop event propagation when first" -#~ " handler is pass." -#~ msgstr "" - diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/router.po b/docs/locale/en/LC_MESSAGES/dispatcher/router.po deleted file mode 100644 index 8e88e944..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/router.po +++ /dev/null @@ -1,270 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/router.rst:5 -msgid "Router" -msgstr "" - -#: ../../dispatcher/router.rst:7 -msgid "Usage:" -msgstr "" - -#: aiogram.dispatcher.router.Router:1 of -msgid "Bases: :py:class:`object`" -msgstr "" - -#: aiogram.dispatcher.router.Router:1 of -msgid "" -"Router can route update, and it nested update types like messages, " -"callback query, polls and all other event types." -msgstr "" - -#: aiogram.dispatcher.router.Router:4 of -msgid "Event handlers can be registered in observer by two ways:" -msgstr "" - -#: aiogram.dispatcher.router.Router:6 of -msgid "" -"By observer method - :obj:`router..register(handler, " -")`" -msgstr "" - -#: aiogram.dispatcher.router.Router:7 of -msgid "By decorator - :obj:`@router.()`" -msgstr "" - -#: aiogram.dispatcher.router.Router.__init__ -#: aiogram.dispatcher.router.Router.include_router -#: aiogram.dispatcher.router.Router.include_routers -#: aiogram.dispatcher.router.Router.resolve_used_update_types of -msgid "Parameters" -msgstr "" - -#: aiogram.dispatcher.router.Router.__init__:1 of -msgid "Optional router name, can be useful for debugging" -msgstr "" - -#: aiogram.dispatcher.router.Router.include_router:1 of -msgid "Attach another router." -msgstr "" - -#: aiogram.dispatcher.router.Router.include_router -#: aiogram.dispatcher.router.Router.include_routers -#: aiogram.dispatcher.router.Router.resolve_used_update_types of -msgid "Returns" -msgstr "" - -#: aiogram.dispatcher.router.Router.include_routers:1 of -msgid "Attach multiple routers." -msgstr "" - -#: aiogram.dispatcher.router.Router.resolve_used_update_types:1 of -msgid "Resolve registered event names" -msgstr "" - -#: aiogram.dispatcher.router.Router.resolve_used_update_types:3 of -msgid "Is useful for getting updates only for registered event types." -msgstr "" - -#: aiogram.dispatcher.router.Router.resolve_used_update_types:5 of -msgid "skip specified event names" -msgstr "" - -#: aiogram.dispatcher.router.Router.resolve_used_update_types:6 of -msgid "set of registered names" -msgstr "" - -#: ../../dispatcher/router.rst:29 -msgid "Event observers" -msgstr "" - -#: ../../dispatcher/router.rst:33 -msgid "" -"All handlers always should be asynchronous. The name of the handler " -"function is not important. The event argument name is also not important " -"but it is recommended to not overlap the name with contextual data in due" -" to function can not accept two arguments with the same name." -msgstr "" - -#: ../../dispatcher/router.rst:36 -msgid "" -"Here is the list of available observers and examples of how to register " -"handlers" -msgstr "" - -#: ../../dispatcher/router.rst:38 -msgid "" -"In these examples only decorator-style registering handlers are used, but" -" if you don't like @decorators just use :obj:`.register(...)`" -" method instead." -msgstr "" - -#: ../../dispatcher/router.rst:41 -msgid "Message" -msgstr "" - -#: ../../dispatcher/router.rst:46 -msgid "Be attentive with filtering this event" -msgstr "" - -#: ../../dispatcher/router.rst:48 -msgid "" -"You should expect that this event can be with different sets of " -"attributes in different cases" -msgstr "" - -#: ../../dispatcher/router.rst:50 -msgid "" -"(For example text, sticker and document are always of different content " -"types of message)" -msgstr "" - -#: ../../dispatcher/router.rst:52 -msgid "" -"Recommended way to check field availability before usage, for example via" -" :ref:`magic filter `: :code:`F.text` to handle text, " -":code:`F.sticker` to handle stickers only and etc." -msgstr "" - -#: ../../dispatcher/router.rst:63 -msgid "Edited message" -msgstr "" - -#: ../../dispatcher/router.rst:71 -msgid "Channel post" -msgstr "" - -#: ../../dispatcher/router.rst:79 -msgid "Edited channel post" -msgstr "" - -#: ../../dispatcher/router.rst:88 -msgid "Inline query" -msgstr "" - -#: ../../dispatcher/router.rst:96 -msgid "Chosen inline query" -msgstr "" - -#: ../../dispatcher/router.rst:104 -msgid "Callback query" -msgstr "" - -#: ../../dispatcher/router.rst:112 -msgid "Shipping query" -msgstr "" - -#: ../../dispatcher/router.rst:120 -msgid "Pre checkout query" -msgstr "" - -#: ../../dispatcher/router.rst:128 -msgid "Poll" -msgstr "" - -#: ../../dispatcher/router.rst:136 -msgid "Poll answer" -msgstr "" - -#: ../../dispatcher/router.rst:144 -msgid "Errors" -msgstr "" - -#: ../../dispatcher/router.rst:151 -msgid "" -"Is useful for handling errors from other handlers, error event described " -":ref:`here `" -msgstr "" - -#: ../../dispatcher/router.rst:158 -msgid "Nested routers" -msgstr "" - -#: ../../dispatcher/router.rst:163 -msgid "" -"Routers by the way can be nested to an another routers with some " -"limitations:" -msgstr "" - -#: ../../dispatcher/router.rst:163 -msgid "" -"1. Router **CAN NOT** include itself 1. Routers **CAN NOT** be used for " -"circular including (router 1 include router 2, router 2 include router 3," -" router 3 include router 1)" -msgstr "" - -#: ../../dispatcher/router.rst:167 -msgid "Example:" -msgstr "" - -#: ../../dispatcher/router.rst:169 -msgid "module_1.py" -msgstr "" - -#: ../../dispatcher/router.rst:179 -msgid "module_2.py" -msgstr "" - -#: ../../dispatcher/router.rst:191 -msgid "Update" -msgstr "" - -#: ../../dispatcher/router.rst:200 -msgid "The only root Router (Dispatcher) can handle this type of event." -msgstr "" - -#: ../../dispatcher/router.rst:204 -msgid "" -"Dispatcher already has default handler for this event type, so you can " -"use it for handling all updates that are not handled by any other " -"handlers." -msgstr "" - -#: ../../dispatcher/router.rst:207 -msgid "How it works?" -msgstr "" - -#: ../../dispatcher/router.rst:209 -msgid "" -"For example, dispatcher has 2 routers, the last router also has one " -"nested router:" -msgstr "" - -#: ../../dispatcher/router.rst:-1 -msgid "Nested routers example" -msgstr "" - -#: ../../dispatcher/router.rst:214 -msgid "In this case update propagation flow will have form:" -msgstr "" - -#~ msgid "" -#~ "Can be attached directly or by " -#~ "import string in format " -#~ "\":\"" -#~ msgstr "" - -#~ msgid "" -#~ "By default Router already has an " -#~ "update handler which route all event " -#~ "types to another observers." -#~ msgstr "" - -#~ msgid "Is useful for handling errors from other handlers" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po deleted file mode 100644 index 6d9f582d..00000000 --- a/docs/locale/en/LC_MESSAGES/dispatcher/webhook.po +++ /dev/null @@ -1,303 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../dispatcher/webhook.rst:5 -msgid "Webhook" -msgstr "" - -#: ../../dispatcher/webhook.rst:7 -msgid "" -"Telegram Bot API supports webhook. If you set webhook for your bot, " -"Telegram will send updates to the specified url. You can use " -":meth:`aiogram.methods.set_webhook.SetWebhook` method to specify a url " -"and receive incoming updates on it." -msgstr "" - -#: ../../dispatcher/webhook.rst:14 -msgid "If you use webhook, you can't use long polling at the same time." -msgstr "" - -#: ../../dispatcher/webhook.rst:16 -msgid "" -"Before start i'll recommend you to read `official Telegram's " -"documentation about webhook `_" -msgstr "" - -#: ../../dispatcher/webhook.rst:18 -msgid "After you read it, you can start to read this section." -msgstr "" - -#: ../../dispatcher/webhook.rst:20 -msgid "" -"Generally to use webhook with aiogram you should use any async web " -"framework. By out of the box aiogram has an aiohttp integration, so " -"we'll use it." -msgstr "" - -#: ../../dispatcher/webhook.rst:25 -msgid "" -"You can use any async web framework you want, but you should write your " -"own integration if you don't use aiohttp." -msgstr "" - -#: ../../dispatcher/webhook.rst:29 -msgid "aiohttp integration" -msgstr "" - -#: ../../dispatcher/webhook.rst:31 -msgid "Out of the box aiogram has aiohttp integration, so you can use it." -msgstr "" - -#: ../../dispatcher/webhook.rst:33 -msgid "" -"Here is available few ways to do it using different implementations of " -"the webhook controller:" -msgstr "" - -#: ../../dispatcher/webhook.rst:35 -msgid "" -":class:`aiogram.webhook.aiohttp_server.BaseRequestHandler` - Abstract " -"class for aiohttp webhook controller" -msgstr "" - -#: ../../dispatcher/webhook.rst:36 -msgid "" -":class:`aiogram.webhook.aiohttp_server.SimpleRequestHandler` - Simple " -"webhook controller, uses single Bot instance" -msgstr "" - -#: ../../dispatcher/webhook.rst:37 -msgid "" -":class:`aiogram.webhook.aiohttp_server.TokenBasedRequestHandler` - Token" -" based webhook controller, uses multiple Bot instances and tokens" -msgstr "" - -#: ../../dispatcher/webhook.rst:39 -msgid "You can use it as is or inherit from it and override some methods." -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:1 of -msgid "" -"Base handler that helps to handle incoming request from aiohttp and " -"propagate it to the Dispatcher" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__ -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__ -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__ -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.ip_filter_middleware of -msgid "Parameters" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:4 -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:3 -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:9 of -msgid "instance of :class:`aiogram.dispatcher.dispatcher.Dispatcher`" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.__init__:5 of -msgid "" -"immediately responds to the Telegram instead of a waiting end of a " -"handler process" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:1 of -msgid "Register route and shutdown callback" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:3 -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:3 of -msgid "instance of aiohttp Application" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.register:4 -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:4 of -msgid "route path" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:1 -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:1 of -msgid "This method should be implemented in subclasses of this class." -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:3 -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:3 of -msgid "Resolve Bot instance from request." -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot -#: aiogram.webhook.aiohttp_server.ip_filter_middleware of -msgid "Returns" -msgstr "" - -#: aiogram.webhook.aiohttp_server.BaseRequestHandler.resolve_bot:6 -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.resolve_bot:6 of -msgid "Bot instance" -msgstr "" - -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:1 of -msgid "Handler for single Bot instance" -msgstr "" - -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:4 -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:10 of -msgid "" -"immediately responds to the Telegram instead of a waiting end of handler " -"process" -msgstr "" - -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.__init__:6 of -msgid "instance of :class:`aiogram.client.bot.Bot`" -msgstr "" - -#: aiogram.webhook.aiohttp_server.SimpleRequestHandler.close:1 of -msgid "Close bot session" -msgstr "" - -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:1 of -msgid "" -"Handler that supports multiple bots the context will be resolved from " -"path variable 'bot_token'" -msgstr "" - -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:6 of -msgid "" -"This handler is not recommended in due to token is available in URL and " -"can be logged by reverse proxy server or other middleware." -msgstr "" - -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.__init__:12 of -msgid "kwargs that will be passed to new Bot instance" -msgstr "" - -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.register:1 of -msgid "Validate path, register route and shutdown callback" -msgstr "" - -#: aiogram.webhook.aiohttp_server.TokenBasedRequestHandler.resolve_bot:1 of -msgid "Get bot token from a path and create or get from cache Bot instance" -msgstr "" - -#: ../../dispatcher/webhook.rst:51 -msgid "Security" -msgstr "" - -#: ../../dispatcher/webhook.rst:53 -msgid "" -"Telegram supports two methods to verify incoming requests that they are " -"from Telegram:" -msgstr "" - -#: ../../dispatcher/webhook.rst:56 -msgid "Using a secret token" -msgstr "" - -#: ../../dispatcher/webhook.rst:58 -msgid "" -"When you set webhook, you can specify a secret token and then use it to " -"verify incoming requests." -msgstr "" - -#: ../../dispatcher/webhook.rst:61 -msgid "Using IP filtering" -msgstr "" - -#: ../../dispatcher/webhook.rst:63 -msgid "" -"You can specify a list of IP addresses from which you expect incoming " -"requests, and then use it to verify incoming requests." -msgstr "" - -#: ../../dispatcher/webhook.rst:65 -msgid "" -"It can be acy using firewall rules or nginx configuration or middleware " -"on application level." -msgstr "" - -#: ../../dispatcher/webhook.rst:67 -msgid "" -"So, aiogram has an implementation of the IP filtering middleware for " -"aiohttp." -msgstr "" - -#: ../../dispatcher/webhook.rst:75 -msgid "Examples" -msgstr "" - -#: ../../dispatcher/webhook.rst:78 -msgid "Behind reverse proxy" -msgstr "" - -#: ../../dispatcher/webhook.rst:80 -msgid "" -"In this example we'll use aiohttp as web framework and nginx as reverse " -"proxy." -msgstr "" - -#: ../../dispatcher/webhook.rst:84 -msgid "" -"When you use nginx as reverse proxy, you should set `proxy_pass` to your " -"aiohttp server address." -msgstr "" - -#: ../../dispatcher/webhook.rst:98 -msgid "Without reverse proxy (not recommended)" -msgstr "" - -#: ../../dispatcher/webhook.rst:100 -msgid "" -"In case you want can't use reverse proxy, you can use aiohttp's ssl " -"context." -msgstr "" - -#: ../../dispatcher/webhook.rst:102 -msgid "Also this example contains usage with self-signed certificate." -msgstr "" - -#: ../../dispatcher/webhook.rst:108 -msgid "With using other web framework" -msgstr "" - -#: ../../dispatcher/webhook.rst:110 -msgid "" -"You can pass incoming request to aiogram's webhook controller from any " -"web framework you want." -msgstr "" - -#: ../../dispatcher/webhook.rst:112 -msgid "" -"Read more about it in " -":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_webhook_update` or " -":meth:`aiogram.dispatcher.dispatcher.Dispatcher.feed_update` methods." -msgstr "" - -#: ../../dispatcher/webhook.rst:123 -msgid "" -"If you want to use reply into webhook, you should check that result of " -"the :code:`feed_update` methods is an instance of API method and build " -":code:`multipart/form-data` or :code:`application/json` response body " -"manually." -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/index.po b/docs/locale/en/LC_MESSAGES/index.po deleted file mode 100644 index 6e7d2a46..00000000 --- a/docs/locale/en/LC_MESSAGES/index.po +++ /dev/null @@ -1,249 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../../README.rst:3 -msgid "aiogram" -msgstr "" - -#: ../../../README.rst:-1 -msgid "MIT License" -msgstr "" - -#: ../../../README.rst:-1 -msgid "PyPi status" -msgstr "" - -#: ../../../README.rst:-1 -msgid "PyPi Package Version" -msgstr "" - -#: ../../../README.rst:-1 -msgid "Downloads" -msgstr "" - -#: ../../../README.rst:-1 -msgid "Supported python versions" -msgstr "" - -#: ../../../README.rst:-1 -msgid "Telegram Bot API" -msgstr "" - -#: ../../../README.rst:-1 -msgid "Tests" -msgstr "" - -#: ../../../README.rst:-1 -msgid "Codecov" -msgstr "" - -#: ../../../README.rst:37 -msgid "" -"**aiogram** is a modern and fully asynchronous framework for `Telegram " -"Bot API `_ written in Python 3.8 " -"using `asyncio `_ and " -"`aiohttp `_." -msgstr "" - -#: ../../../README.rst:42 -msgid "Make your bots faster and more powerful!" -msgstr "" - -#: ../../../README.rst:47 -msgid "Documentation:" -msgstr "" - -#: ../../../README.rst:45 -msgid "🇺🇸 `English `_" -msgstr "" - -#: ../../../README.rst:46 -msgid "🇺🇦 `Ukrainian `_" -msgstr "" - -#: ../../../README.rst:50 -msgid "Features" -msgstr "" - -#: ../../../README.rst:52 -msgid "" -"Asynchronous (`asyncio docs " -"`_, :pep:`492`)" -msgstr "" - -#: ../../../README.rst:53 -msgid "" -"Has type hints (:pep:`484`) and can be used with `mypy `_" -msgstr "" - -#: ../../../README.rst:54 -msgid "Supports `PyPy `_" -msgstr "" - -#: ../../../README.rst:55 -msgid "" -"Supports `Telegram Bot API 6.8 `_ and" -" gets fast updates to the latest versions of the Bot API" -msgstr "" - -#: ../../../README.rst:56 -msgid "" -"Telegram Bot API integration code was `autogenerated " -"`_ and can be easily re-generated " -"when API gets updated" -msgstr "" - -#: ../../../README.rst:57 -msgid "Updates router (Blueprints)" -msgstr "" - -#: ../../../README.rst:58 -msgid "Has Finite State Machine" -msgstr "" - -#: ../../../README.rst:59 -msgid "" -"Uses powerful `magic filters " -"`_" -msgstr "" - -#: ../../../README.rst:60 -msgid "Middlewares (incoming updates and API calls)" -msgstr "" - -#: ../../../README.rst:61 -msgid "" -"Provides `Replies into Webhook `_" -msgstr "" - -#: ../../../README.rst:62 -msgid "Integrated I18n/L10n support with GNU Gettext (or Fluent)" -msgstr "" - -#: ../../../README.rst:67 -msgid "" -"It is strongly advised that you have prior experience working with " -"`asyncio `_ before " -"beginning to use **aiogram**." -msgstr "" - -#: ../../../README.rst:71 -msgid "If you have any questions, you can visit our community chats on Telegram:" -msgstr "" - -#: ../../../README.rst:73 -msgid "🇺🇸 `@aiogram `_" -msgstr "" - -#: ../../../README.rst:74 -msgid "🇺🇦 `@aiogramua `_" -msgstr "" - -#: ../../../README.rst:75 -msgid "🇺🇿 `@aiogram_uz `_" -msgstr "" - -#: ../../../README.rst:76 -msgid "🇰🇿 `@aiogram_kz `_" -msgstr "" - -#: ../../../README.rst:77 -msgid "🇷🇺 `@aiogram_ru `_" -msgstr "" - -#: ../../../README.rst:78 -msgid "🇮🇷 `@aiogram_fa `_" -msgstr "" - -#: ../../../README.rst:79 -msgid "🇮🇹 `@aiogram_it `_" -msgstr "" - -#: ../../../README.rst:80 -msgid "🇧🇷 `@aiogram_br `_" -msgstr "" - -#: ../../index.rst:4 -msgid "Simple usage" -msgstr "" - -#: ../../index.rst:9 -msgid "Contents" -msgstr "" - -#~ msgid "Uses powerful :ref:`magic filters `" -#~ msgstr "" - -#~ msgid "" -#~ "Supports `Telegram Bot API 6.3 " -#~ "`_ and gets fast" -#~ " updates to the latest versions of" -#~ " the Bot API" -#~ msgstr "" - -#~ msgid "[Telegram] aiogram live" -#~ msgstr "" - -#~ msgid "" -#~ "Supports `Telegram Bot API 6.4 " -#~ "`_ and gets fast" -#~ " updates to the latest versions of" -#~ " the Bot API" -#~ msgstr "" - -#~ msgid "" -#~ "Supports `Telegram Bot API 6.6 " -#~ "`_ and gets fast" -#~ " updates to the latest versions of" -#~ " the Bot API" -#~ msgstr "" - -#~ msgid "aiogram |beta badge|" -#~ msgstr "" - -#~ msgid "Beta badge" -#~ msgstr "" - -#~ msgid "This version is still in development!" -#~ msgstr "" - -#~ msgid "**Breaking News:**" -#~ msgstr "" - -#~ msgid "*aiogram* 3.0 has breaking changes." -#~ msgstr "" - -#~ msgid "It breaks backward compatibility by introducing new breaking changes!" -#~ msgstr "" - -#~ msgid "" -#~ "Supports `Telegram Bot API 6.7 " -#~ "`_ and gets fast" -#~ " updates to the latest versions of" -#~ " the Bot API" -#~ msgstr "" - -#~ msgid "" -#~ "Uses powerful `magic filters " -#~ "`" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/install.po b/docs/locale/en/LC_MESSAGES/install.po deleted file mode 100644 index bc4ae706..00000000 --- a/docs/locale/en/LC_MESSAGES/install.po +++ /dev/null @@ -1,44 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../install.rst:3 -msgid "Installation" -msgstr "" - -#: ../../install.rst:6 ../../install.rst:23 -msgid "From PyPI" -msgstr "" - -#: ../../install.rst:13 -msgid "From Arch Linux Repository" -msgstr "" - -#: ../../install.rst:20 -msgid "Development build (3.x)" -msgstr "" - -#: ../../install.rst:30 -msgid "From GitHub" -msgstr "" - -#~ msgid "Stable (2.x)" -#~ msgstr "" - -#~ msgid "From AUR" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/migration_2_to_3.po b/docs/locale/en/LC_MESSAGES/migration_2_to_3.po deleted file mode 100644 index 3541ffff..00000000 --- a/docs/locale/en/LC_MESSAGES/migration_2_to_3.po +++ /dev/null @@ -1,305 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../migration_2_to_3.rst:3 -msgid "Migration FAQ (2.x -> 3.0)" -msgstr "" - -#: ../../migration_2_to_3.rst:7 -msgid "This guide is still in progress." -msgstr "" - -#: ../../migration_2_to_3.rst:9 -msgid "" -"This version introduces much many breaking changes and architectural " -"improvements, helping to reduce global variables count in your code, " -"provides useful mechanisms to separate your code to modules or just make " -"sharable modules via packages on the PyPi, makes middlewares and filters " -"more controllable and others." -msgstr "" - -#: ../../migration_2_to_3.rst:14 -msgid "" -"On this page you can read about points that changed corresponding to last" -" stable 2.x version." -msgstr "" - -#: ../../migration_2_to_3.rst:18 -msgid "" -"This page is most like a detailed changelog than a migration guide, but " -"it will be updated in the future." -msgstr "" - -#: ../../migration_2_to_3.rst:21 -msgid "" -"Feel free to contribute to this page, if you find something that is not " -"mentioned here." -msgstr "" - -#: ../../migration_2_to_3.rst:25 -msgid "Dispatcher" -msgstr "" - -#: ../../migration_2_to_3.rst:27 -msgid "" -":class:`Dispatcher` class no longer accepts the `Bot` instance into the " -"initializer, it should be passed to dispatcher only for starting polling " -"or handling event from webhook. Also this way adds possibility to use " -"multiple bot instances at the same time (\"multibot\")" -msgstr "" - -#: ../../migration_2_to_3.rst:30 -msgid "" -":class:`Dispatcher` now can be extended with another Dispatcher-like " -"thing named :class:`Router` (:ref:`Read more » `). With " -"routes you can easily separate your code to multiple modules and may be " -"share this modules between projects." -msgstr "" - -#: ../../migration_2_to_3.rst:34 -msgid "" -"Removed the **_handler** suffix from all event handler decorators and " -"registering methods. (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:36 -msgid "" -"Executor entirely removed, now you can use Dispatcher directly to start " -"polling or webhook." -msgstr "" - -#: ../../migration_2_to_3.rst:37 -msgid "" -"Throttling method is completely removed, now you can use middlewares to " -"control the execution context and use any throttling mechanism you want." -msgstr "" - -#: ../../migration_2_to_3.rst:39 -msgid "" -"Removed global context variables from the API types, Bot and Dispatcher " -"object, from now if you want to get current bot instance inside handlers " -"or filters you should accept the argument :code:`bot: Bot` and use it " -"instead of :code:`Bot.get_current()` Inside middlewares it can be " -"accessed via :code:`data[\"bot\"]`." -msgstr "" - -#: ../../migration_2_to_3.rst:43 -msgid "" -"Now to skip pending updates, you should call the " -":class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly " -"instead of passing :code:`skip_updates=True` to start polling method." -msgstr "" - -#: ../../migration_2_to_3.rst:47 -msgid "Filtering events" -msgstr "" - -#: ../../migration_2_to_3.rst:49 -msgid "" -"Keyword filters can no more be used, use filters explicitly. (`Read more " -"» `_)" -msgstr "" - -#: ../../migration_2_to_3.rst:50 -msgid "" -"In due to keyword filters was removed all enabled by default filters " -"(state and content_type now is not enabled), so you should specify them " -"explicitly if you want to use. For example instead of using " -":code:`@dp.message_handler(content_types=ContentType.PHOTO)` you should " -"use :code:`@router.message(F.photo)`" -msgstr "" - -#: ../../migration_2_to_3.rst:54 -msgid "" -"Most of common filters is replaced by \"magic filter\". (:ref:`Read more " -"» `)" -msgstr "" - -#: ../../migration_2_to_3.rst:55 -msgid "" -"Now by default message handler receives any content type, if you want " -"specific one just add the filters (Magic or any other)" -msgstr "" - -#: ../../migration_2_to_3.rst:57 -msgid "" -"State filter now is not enabled by default, that's mean if you using " -":code:`state=\"*\"` in v2 then you should not pass any state filter in " -"v3, and vice versa, if the state in v2 is not specified now you should " -"specify the state." -msgstr "" - -#: ../../migration_2_to_3.rst:60 -msgid "" -"Added possibility to register per-router global filters, that helps to " -"reduces the number of repetitions in the code and makes easily way to " -"control for what each router will be used." -msgstr "" - -#: ../../migration_2_to_3.rst:66 -msgid "Bot API" -msgstr "" - -#: ../../migration_2_to_3.rst:68 -msgid "" -"Now all API methods is classes with validation (via `pydantic " -"`_) (all API calls is also available as " -"methods in the Bot class)." -msgstr "" - -#: ../../migration_2_to_3.rst:70 -msgid "" -"Added more pre-defined Enums and moved into `aiogram.enums` sub-package. " -"For example chat type enum now is :class:`aiogram.enums.ChatType` instead" -" of :class:`aiogram.types.chat.ChatType`. (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:73 -msgid "" -"Separated HTTP client session into container that can be reused between " -"different Bot instances in the application." -msgstr "" - -#: ../../migration_2_to_3.rst:75 -msgid "" -"API Exceptions is no more classified by specific message in due to " -"Telegram has no documented error codes. But all errors is classified by " -"HTTP status code and for each method only one case can be caused with the" -" same code, so in most cases you should check that only error type (by " -"status-code) without checking error message. (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:82 -msgid "Middlewares" -msgstr "" - -#: ../../migration_2_to_3.rst:84 -msgid "" -"Middlewares can now control a execution context, e.g. using context " -"managers (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:85 -msgid "" -"All contextual data now is shared between middlewares, filters and " -"handlers to end-to-end use. For example now you can easily pass some data" -" into context inside middleware and get it in the filters layer as the " -"same way as in the handlers via keyword arguments." -msgstr "" - -#: ../../migration_2_to_3.rst:88 -msgid "" -"Added mechanism named **flags**, that helps to customize handler behavior" -" in conjunction with middlewares. (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:93 -msgid "Keyboard Markup" -msgstr "" - -#: ../../migration_2_to_3.rst:95 -msgid "" -"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " -"and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` has " -"no methods to extend it, instead you have to use markup builders " -":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " -":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " -"more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:103 -msgid "Callbacks data" -msgstr "" - -#: ../../migration_2_to_3.rst:105 -msgid "" -"Callback data factory now is strictly typed via `pydantic " -"`_ models (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:110 -msgid "Finite State machine" -msgstr "" - -#: ../../migration_2_to_3.rst:112 -msgid "" -"State filter will no more added to all handlers, you will need to specify" -" state if you want" -msgstr "" - -#: ../../migration_2_to_3.rst:113 -msgid "" -"Added possibility to change FSM strategy, for example if you want to " -"control state for each user in chat topics instead of user in chat you " -"can specify it in the Dispatcher." -msgstr "" - -#: ../../migration_2_to_3.rst:115 -msgid "" -"Now :class:`aiogram.fsm.state.State` and " -":class:`aiogram.fsm.state.StateGroup` don't have helper methods like " -":code:`.set()`, :code:`.next()`, etc." -msgstr "" - -#: ../../migration_2_to_3.rst:118 -msgid "" -"Instead of this you should set states by passing them directly to " -":class:`aiogram.fsm.context.FSMContext` (:ref:`Read more » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:120 -msgid "" -"State proxy is deprecated, you should update the state data by calling " -":code:`state.set_data(...)` and :code:`state.get_data()` respectively." -msgstr "" - -#: ../../migration_2_to_3.rst:125 -msgid "Sending Files" -msgstr "" - -#: ../../migration_2_to_3.rst:127 -msgid "" -"From now you should wrap sending files into InputFile object before send " -"instead of passing IO object directly to the API method. (:ref:`Read more" -" » `)" -msgstr "" - -#: ../../migration_2_to_3.rst:132 -msgid "Webhook" -msgstr "" - -#: ../../migration_2_to_3.rst:134 -msgid "Simplified aiohttp web app configuration" -msgstr "" - -#: ../../migration_2_to_3.rst:135 -msgid "" -"By default added possibility to upload files when you use reply into " -"webhook" -msgstr "" - -#~ msgid "" -#~ "Callback data factory now is strictly" -#~ " typed via `pydantic " -#~ "`_ models (:ref:`Read " -#~ "more » `)" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/callback_answer.po b/docs/locale/en/LC_MESSAGES/utils/callback_answer.po deleted file mode 100644 index daa3c973..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/callback_answer.po +++ /dev/null @@ -1,204 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-11 01:52+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.11.0\n" - -#: ../../utils/callback_answer.rst:4 -msgid "Callback answer" -msgstr "" - -#: ../../utils/callback_answer.rst:6 -msgid "" -"Helper for callback query handlers, can be useful in bots with a lot of " -"callback handlers to automatically take answer to all requests." -msgstr "" - -#: ../../utils/callback_answer.rst:10 -msgid "Simple usage" -msgstr "" - -#: ../../utils/callback_answer.rst:12 -msgid "" -"For use, it is enough to register the inner middleware " -":class:`aiogram.utils.callback_answer.CallbackAnswerMiddleware` in " -"dispatcher or specific router:" -msgstr "" - -#: ../../utils/callback_answer.rst:18 -msgid "" -"After that all handled callback queries will be answered automatically " -"after processing the handler." -msgstr "" - -#: ../../utils/callback_answer.rst:21 -msgid "Advanced usage" -msgstr "" - -#: ../../utils/callback_answer.rst:23 -msgid "" -"In some cases you need to have some non-standard response parameters, " -"this can be done in several ways:" -msgstr "" - -#: ../../utils/callback_answer.rst:26 -msgid "Global defaults" -msgstr "" - -#: ../../utils/callback_answer.rst:28 -msgid "" -"Change default parameters while initializing middleware, for example " -"change answer to `pre` mode and text \"OK\":" -msgstr "" - -#: ../../utils/callback_answer.rst:35 -msgid "" -"Look at :class:`aiogram.utils.callback_answer.CallbackAnswerMiddleware` " -"to get all available parameters" -msgstr "" - -#: ../../utils/callback_answer.rst:39 -msgid "Handler specific" -msgstr "" - -#: ../../utils/callback_answer.rst:41 -msgid "" -"By using :ref:`flags ` you can change the behavior for specific " -"handler" -msgstr "" - -#: ../../utils/callback_answer.rst:50 -msgid "" -"Flag arguments is the same as in " -":class:`aiogram.utils.callback_answer.CallbackAnswerMiddleware` with " -"additional one :code:`disabled` to disable answer." -msgstr "" - -#: ../../utils/callback_answer.rst:54 -msgid "A special case" -msgstr "" - -#: ../../utils/callback_answer.rst:56 -msgid "" -"It is not always correct to answer the same in every case, so there is an" -" option to change the answer inside the handler. You can get an instance " -"of :class:`aiogram.utils.callback_answer.CallbackAnswer` object inside " -"handler and change whatever you want." -msgstr "" - -#: ../../utils/callback_answer.rst:61 -msgid "" -"Note that is impossible to change callback answer attributes when you use" -" :code:`pre=True` mode." -msgstr "" - -#: ../../utils/callback_answer.rst:76 -msgid "Combine that all at once" -msgstr "" - -#: ../../utils/callback_answer.rst:78 -msgid "" -"For example you want to answer in most of cases before handler with text " -"\"🤔\" but at some cases need to answer after the handler with custom " -"text, so you can do it:" -msgstr "" - -#: ../../utils/callback_answer.rst:94 -msgid "Description of objects" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware:1 of -msgid "Bases: :py:class:`~aiogram.dispatcher.middlewares.base.BaseMiddleware`" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:1 of -msgid "" -"Inner middleware for callback query handlers, can be useful in bots with " -"a lot of callback handlers to automatically take answer to all requests" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__ -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__ of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:4 of -msgid "send answer before execute handler" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:5 -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:5 of -msgid "answer with text" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:6 -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:6 of -msgid "show alert" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:7 -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:7 of -msgid "game url" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:8 -#: aiogram.utils.callback_answer.CallbackAnswerMiddleware.__init__:8 of -msgid "cache answer for some time" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer:1 of -msgid "Bases: :py:class:`object`" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:1 of -msgid "Callback answer configuration" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:3 of -msgid "this request is already answered by middleware" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.__init__:4 of -msgid "answer will not be performed" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.disable:1 of -msgid "Deactivate answering for this handler" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.disabled:1 of -msgid "Indicates that automatic answer is disabled in this handler" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.answered:1 of -msgid "Indicates that request is already answered by middleware" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.text:1 of -msgid "Response text :return:" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.show_alert:1 of -msgid "Whether to display an alert" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.url:1 of -msgid "Game url" -msgstr "" - -#: aiogram.utils.callback_answer.CallbackAnswer.cache_time:1 of -msgid "Response cache time" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/chat_action.po b/docs/locale/en/LC_MESSAGES/utils/chat_action.po deleted file mode 100644 index abc33c56..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/chat_action.po +++ /dev/null @@ -1,149 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../utils/chat_action.rst:3 -msgid "Chat action sender" -msgstr "" - -#: ../../utils/chat_action.rst:6 -msgid "Sender" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender:1 of -msgid "" -"This utility helps to automatically send chat action until long actions " -"is done to take acknowledge bot users the bot is doing something and not " -"crashed." -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender:4 of -msgid "Provides simply to use context manager." -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender:6 of -msgid "" -"Technically sender start background task with infinity loop which works " -"until action will be finished and sends the `chat action " -"`_ every 5 seconds." -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__ of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__:1 of -msgid "instance of the bot" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__:2 of -msgid "target chat id" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__:3 of -msgid "chat action type" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__:4 of -msgid "interval between iterations" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.__init__:5 of -msgid "sleep before first iteration" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.choose_sticker:1 of -msgid "Create instance of the sender with `choose_sticker` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.find_location:1 of -msgid "Create instance of the sender with `find_location` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.record_video:1 of -msgid "Create instance of the sender with `record_video` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.record_video_note:1 of -msgid "Create instance of the sender with `record_video_note` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.record_voice:1 of -msgid "Create instance of the sender with `record_voice` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.typing:1 of -msgid "Create instance of the sender with `typing` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.upload_document:1 of -msgid "Create instance of the sender with `upload_document` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.upload_photo:1 of -msgid "Create instance of the sender with `upload_photo` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.upload_video:1 of -msgid "Create instance of the sender with `upload_video` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.upload_video_note:1 of -msgid "Create instance of the sender with `upload_video_note` action" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionSender.upload_voice:1 of -msgid "Create instance of the sender with `upload_voice` action" -msgstr "" - -#: ../../utils/chat_action.rst:12 ../../utils/chat_action.rst:29 -msgid "Usage" -msgstr "" - -#: ../../utils/chat_action.rst:23 -msgid "Middleware" -msgstr "" - -#: aiogram.utils.chat_action.ChatActionMiddleware:1 of -msgid "Helps to automatically use chat action sender for all message handlers" -msgstr "" - -#: ../../utils/chat_action.rst:31 -msgid "Before usa should be registered for the `message` event" -msgstr "" - -#: ../../utils/chat_action.rst:37 -msgid "" -"After this action all handlers which works longer than `initial_sleep` " -"will produce the '`typing`' chat action." -msgstr "" - -#: ../../utils/chat_action.rst:39 -msgid "Also sender can be customized via flags feature for particular handler." -msgstr "" - -#: ../../utils/chat_action.rst:41 -msgid "Change only action type:" -msgstr "" - -#: ../../utils/chat_action.rst:50 -msgid "Change sender configuration:" -msgstr "" - -#~ msgid "instance of the bot, can be omitted from the context" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/formatting.po b/docs/locale/en/LC_MESSAGES/utils/formatting.po deleted file mode 100644 index bb92b9f9..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/formatting.po +++ /dev/null @@ -1,449 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2023, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2023. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../utils/formatting.rst:5 -msgid "Formatting" -msgstr "" - -#: ../../utils/formatting.rst:7 -msgid "Make your message formatting flexible and simple" -msgstr "" - -#: ../../utils/formatting.rst:9 -msgid "" -"This instrument works on top of Message entities instead of using HTML or" -" Markdown markups, you can easily construct your message and sent it to " -"the Telegram without the need to remember tag parity (opening and " -"closing) or escaping user input." -msgstr "" - -#: ../../utils/formatting.rst:14 -msgid "Usage" -msgstr "" - -#: ../../utils/formatting.rst:17 -msgid "Basic scenario" -msgstr "" - -#: ../../utils/formatting.rst:19 -msgid "Construct your message and send it to the Telegram." -msgstr "" - -#: ../../utils/formatting.rst:26 -msgid "Is the same as the next example, but without usage markup" -msgstr "" - -#: ../../utils/formatting.rst:35 -msgid "" -"Literally when you execute :code:`as_kwargs` method the Text object is " -"converted into text :code:`Hello, Alex!` with entities list " -":code:`[MessageEntity(type='bold', offset=7, length=4)]` and passed into " -"dict which can be used as :code:`**kwargs` in API call." -msgstr "" - -#: ../../utils/formatting.rst:39 -msgid "" -"The complete list of elements is listed `on this page below <#available-" -"elements>`_." -msgstr "" - -#: ../../utils/formatting.rst:42 -msgid "Advanced scenario" -msgstr "" - -#: ../../utils/formatting.rst:44 -msgid "" -"On top of base elements can be implemented content rendering structures, " -"so, out of the box aiogram has a few already implemented functions that " -"helps you to format your messages:" -msgstr "" - -#: aiogram.utils.formatting.as_line:1 of -msgid "Wrap multiple nodes into line with :code:`\\\\n` at the end of line." -msgstr "" - -#: aiogram.utils.formatting.Text.as_kwargs -#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line -#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list -#: aiogram.utils.formatting.as_marked_section -#: aiogram.utils.formatting.as_numbered_list -#: aiogram.utils.formatting.as_numbered_section -#: aiogram.utils.formatting.as_section of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.formatting.as_line:3 of -msgid "Text or Any" -msgstr "" - -#: aiogram.utils.formatting.as_line:4 of -msgid "ending of the line, by default is :code:`\\\\n`" -msgstr "" - -#: aiogram.utils.formatting.as_line:5 of -msgid "separator between items, by default is empty string" -msgstr "" - -#: aiogram.utils.formatting.Text.as_kwargs aiogram.utils.formatting.Text.render -#: aiogram.utils.formatting.as_key_value aiogram.utils.formatting.as_line -#: aiogram.utils.formatting.as_list aiogram.utils.formatting.as_marked_list -#: aiogram.utils.formatting.as_marked_section -#: aiogram.utils.formatting.as_numbered_list -#: aiogram.utils.formatting.as_numbered_section -#: aiogram.utils.formatting.as_section of -msgid "Returns" -msgstr "" - -#: aiogram.utils.formatting.as_key_value:5 aiogram.utils.formatting.as_line:6 -#: aiogram.utils.formatting.as_marked_list:5 -#: aiogram.utils.formatting.as_numbered_list:6 -#: aiogram.utils.formatting.as_section:5 of -msgid "Text" -msgstr "" - -#: aiogram.utils.formatting.as_list:1 of -msgid "Wrap each element to separated lines" -msgstr "" - -#: aiogram.utils.formatting.as_marked_list:1 of -msgid "Wrap elements as marked list" -msgstr "" - -#: aiogram.utils.formatting.as_marked_list:4 of -msgid "line marker, by default is '- '" -msgstr "" - -#: aiogram.utils.formatting.as_numbered_list:1 of -msgid "Wrap elements as numbered list" -msgstr "" - -#: aiogram.utils.formatting.as_numbered_list:4 of -msgid "initial number, by default 1" -msgstr "" - -#: aiogram.utils.formatting.as_numbered_list:5 of -msgid "number format, by default '{}. '" -msgstr "" - -#: aiogram.utils.formatting.as_section:1 of -msgid "Wrap elements as simple section, section has title and body" -msgstr "" - -#: aiogram.utils.formatting.as_marked_section:1 of -msgid "Wrap elements as section with marked list" -msgstr "" - -#: aiogram.utils.formatting.as_numbered_section:1 of -msgid "Wrap elements as section with numbered list" -msgstr "" - -#: aiogram.utils.formatting.as_key_value:1 of -msgid "Wrap elements pair as key-value line. (:code:`{key}: {value}`)" -msgstr "" - -#: ../../utils/formatting.rst:64 -msgid "and lets complete them all:" -msgstr "" - -#: ../../utils/formatting.rst:92 -msgid "Will be rendered into:" -msgstr "" - -#: ../../utils/formatting.rst:94 -msgid "**Success:**" -msgstr "" - -#: ../../utils/formatting.rst:96 -msgid "✅ Test 1" -msgstr "" - -#: ../../utils/formatting.rst:98 -msgid "✅ Test 3" -msgstr "" - -#: ../../utils/formatting.rst:100 -msgid "✅ Test 4" -msgstr "" - -#: ../../utils/formatting.rst:102 -msgid "**Failed:**" -msgstr "" - -#: ../../utils/formatting.rst:104 -msgid "❌ Test 2" -msgstr "" - -#: ../../utils/formatting.rst:106 -msgid "**Summary:**" -msgstr "" - -#: ../../utils/formatting.rst:108 -msgid "**Total**: 4" -msgstr "" - -#: ../../utils/formatting.rst:110 -msgid "**Success**: 3" -msgstr "" - -#: ../../utils/formatting.rst:112 -msgid "**Failed**: 1" -msgstr "" - -#: ../../utils/formatting.rst:114 -msgid "#test" -msgstr "" - -#: ../../utils/formatting.rst:117 -msgid "Or as HTML:" -msgstr "" - -#: ../../utils/formatting.rst:137 -msgid "Available methods" -msgstr "" - -#: aiogram.utils.formatting.Text:1 of -msgid "Bases: :py:class:`~typing.Iterable`\\ [:py:obj:`~typing.Any`]" -msgstr "" - -#: aiogram.utils.formatting.Text:1 of -msgid "Simple text element" -msgstr "" - -#: aiogram.utils.formatting.Text.render:1 of -msgid "Render elements tree as text with entities list" -msgstr "" - -#: aiogram.utils.formatting.Text.as_kwargs:1 of -msgid "" -"Render elements tree as keyword arguments for usage in the API call, for " -"example:" -msgstr "" - -#: aiogram.utils.formatting.Text.as_html:1 of -msgid "Render elements tree as HTML markup" -msgstr "" - -#: aiogram.utils.formatting.Text.as_markdown:1 of -msgid "Render elements tree as MarkdownV2 markup" -msgstr "" - -#: ../../utils/formatting.rst:147 -msgid "Available elements" -msgstr "" - -#: aiogram.utils.formatting.Bold:1 aiogram.utils.formatting.BotCommand:1 -#: aiogram.utils.formatting.CashTag:1 aiogram.utils.formatting.Code:1 -#: aiogram.utils.formatting.CustomEmoji:1 aiogram.utils.formatting.Email:1 -#: aiogram.utils.formatting.HashTag:1 aiogram.utils.formatting.Italic:1 -#: aiogram.utils.formatting.PhoneNumber:1 aiogram.utils.formatting.Pre:1 -#: aiogram.utils.formatting.Spoiler:1 aiogram.utils.formatting.Strikethrough:1 -#: aiogram.utils.formatting.TextLink:1 aiogram.utils.formatting.TextMention:1 -#: aiogram.utils.formatting.Underline:1 aiogram.utils.formatting.Url:1 of -msgid "Bases: :py:class:`~aiogram.utils.formatting.Text`" -msgstr "" - -#: aiogram.utils.formatting.HashTag:1 of -msgid "Hashtag element." -msgstr "" - -#: aiogram.utils.formatting.HashTag:5 of -msgid "The value should always start with '#' symbol" -msgstr "" - -#: aiogram.utils.formatting.HashTag:7 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.HASHTAG`" -msgstr "" - -#: aiogram.utils.formatting.CashTag:1 of -msgid "Cashtag element." -msgstr "" - -#: aiogram.utils.formatting.CashTag:5 of -msgid "The value should always start with '$' symbol" -msgstr "" - -#: aiogram.utils.formatting.CashTag:7 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.CASHTAG`" -msgstr "" - -#: aiogram.utils.formatting.BotCommand:1 of -msgid "Bot command element." -msgstr "" - -#: aiogram.utils.formatting.BotCommand:5 of -msgid "The value should always start with '/' symbol" -msgstr "" - -#: aiogram.utils.formatting.BotCommand:7 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.BOT_COMMAND`" -msgstr "" - -#: aiogram.utils.formatting.Url:1 of -msgid "Url element." -msgstr "" - -#: aiogram.utils.formatting.Url:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.URL`" -msgstr "" - -#: aiogram.utils.formatting.Email:1 of -msgid "Email element." -msgstr "" - -#: aiogram.utils.formatting.Email:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.EMAIL`" -msgstr "" - -#: aiogram.utils.formatting.PhoneNumber:1 of -msgid "Phone number element." -msgstr "" - -#: aiogram.utils.formatting.PhoneNumber:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.PHONE_NUMBER`" -msgstr "" - -#: aiogram.utils.formatting.Bold:1 of -msgid "Bold element." -msgstr "" - -#: aiogram.utils.formatting.Bold:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.BOLD`" -msgstr "" - -#: aiogram.utils.formatting.Italic:1 of -msgid "Italic element." -msgstr "" - -#: aiogram.utils.formatting.Italic:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.ITALIC`" -msgstr "" - -#: aiogram.utils.formatting.Underline:1 of -msgid "Underline element." -msgstr "" - -#: aiogram.utils.formatting.Underline:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.UNDERLINE`" -msgstr "" - -#: aiogram.utils.formatting.Strikethrough:1 of -msgid "Strikethrough element." -msgstr "" - -#: aiogram.utils.formatting.Strikethrough:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.STRIKETHROUGH`" -msgstr "" - -#: aiogram.utils.formatting.Spoiler:1 of -msgid "Spoiler element." -msgstr "" - -#: aiogram.utils.formatting.Spoiler:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.SPOILER`" -msgstr "" - -#: aiogram.utils.formatting.Code:1 of -msgid "Code element." -msgstr "" - -#: aiogram.utils.formatting.Code:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.CODE`" -msgstr "" - -#: aiogram.utils.formatting.Pre:1 of -msgid "Pre element." -msgstr "" - -#: aiogram.utils.formatting.Pre:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type :obj:`aiogram.enums.message_entity_type.MessageEntityType.PRE`" -msgstr "" - -#: aiogram.utils.formatting.TextLink:1 of -msgid "Text link element." -msgstr "" - -#: aiogram.utils.formatting.TextLink:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_LINK`" -msgstr "" - -#: aiogram.utils.formatting.TextMention:1 of -msgid "Text mention element." -msgstr "" - -#: aiogram.utils.formatting.TextMention:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.TEXT_MENTION`" -msgstr "" - -#: aiogram.utils.formatting.CustomEmoji:1 of -msgid "Custom emoji element." -msgstr "" - -#: aiogram.utils.formatting.CustomEmoji:3 of -msgid "" -"Will be wrapped into :obj:`aiogram.types.message_entity.MessageEntity` " -"with type " -":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" -msgstr "" - -#~ msgid "line marker, by default is :code:`- `" -#~ msgstr "" - -#~ msgid "number format, by default :code:`{}. `" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/i18n.po b/docs/locale/en/LC_MESSAGES/utils/i18n.po deleted file mode 100644 index de674640..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/i18n.po +++ /dev/null @@ -1,339 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-14 19:29+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../utils/i18n.rst:3 -msgid "Translation" -msgstr "" - -#: ../../utils/i18n.rst:5 -msgid "" -"In order to make you bot translatable you have to add a minimal number of" -" hooks to your Python code." -msgstr "" - -#: ../../utils/i18n.rst:7 -msgid "These hooks are called translation strings." -msgstr "" - -#: ../../utils/i18n.rst:9 -msgid "" -"The aiogram translation utils is build on top of `GNU gettext Python " -"module `_ and `Babel " -"library `_." -msgstr "" - -#: ../../utils/i18n.rst:13 -msgid "Installation" -msgstr "" - -#: ../../utils/i18n.rst:15 -msgid "" -"Babel is required to make simple way to extract translation strings from " -"your code" -msgstr "" - -#: ../../utils/i18n.rst:17 -msgid "Can be installed from pip directly:" -msgstr "" - -#: ../../utils/i18n.rst:24 -msgid "or as `aiogram` extra dependency:" -msgstr "" - -#: ../../utils/i18n.rst:32 -msgid "Make messages translatable" -msgstr "" - -#: ../../utils/i18n.rst:34 -msgid "" -"In order to gettext need to know what the strings should be translated " -"you will need to write translation strings." -msgstr "" - -#: ../../utils/i18n.rst:36 -msgid "For example:" -msgstr "" - -#: ../../utils/i18n.rst:54 -msgid "" -"f-strings can't be used as translations string because any dynamic " -"variables should be added to message after getting translated message" -msgstr "" - -#: ../../utils/i18n.rst:57 -msgid "" -"Also if you want to use translated string in keyword- or magic- filters " -"you will need to use lazy gettext calls:" -msgstr "" - -#: ../../utils/i18n.rst:72 -msgid "" -"Lazy gettext calls should always be used when the current language is not" -" know at the moment" -msgstr "" - -#: ../../utils/i18n.rst:77 -msgid "" -"Lazy gettext can't be used as value for API methods or any Telegram " -"Object (like " -":class:`aiogram.types.inline_keyboard_button.InlineKeyboardButton` or " -"etc.)" -msgstr "" - -#: ../../utils/i18n.rst:80 -msgid "Configuring engine" -msgstr "" - -#: ../../utils/i18n.rst:82 -msgid "" -"After you messages is already done to use gettext your bot should know " -"how to detect user language" -msgstr "" - -#: ../../utils/i18n.rst:84 -msgid "" -"On top of your application the instance of " -":class:`aiogram.utils.i18n.I18n` should be created" -msgstr "" - -#: ../../utils/i18n.rst:92 -msgid "" -"After that you will need to choose one of builtin I18n middleware or " -"write your own." -msgstr "" - -#: ../../utils/i18n.rst:94 -msgid "Builtin middlewares:" -msgstr "" - -#: ../../utils/i18n.rst:98 -msgid "SimpleI18nMiddleware" -msgstr "" - -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware:1 of -msgid "Simple I18n middleware." -msgstr "" - -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware:3 of -msgid "Chooses language code from the User object received in event" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware.__init__:1 -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.__init__:1 -#: aiogram.utils.i18n.middleware.I18nMiddleware.__init__:1 -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware.__init__:1 of -msgid "Create an instance of middleware" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware.__init__ -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.__init__ -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.set_locale -#: aiogram.utils.i18n.middleware.I18nMiddleware.__init__ -#: aiogram.utils.i18n.middleware.I18nMiddleware.get_locale -#: aiogram.utils.i18n.middleware.I18nMiddleware.setup -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware.__init__ of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware.__init__:3 -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.__init__:3 -#: aiogram.utils.i18n.middleware.I18nMiddleware.__init__:3 -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware.__init__:3 of -msgid "instance of I18n" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware.__init__:4 -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.__init__:4 -#: aiogram.utils.i18n.middleware.I18nMiddleware.__init__:4 -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware.__init__:4 of -msgid "context key for I18n instance" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware.__init__:5 -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.__init__:5 -#: aiogram.utils.i18n.middleware.I18nMiddleware.__init__:5 -#: aiogram.utils.i18n.middleware.SimpleI18nMiddleware.__init__:5 of -msgid "context key for this middleware" -msgstr "" - -#: ../../utils/i18n.rst:104 -msgid "ConstI18nMiddleware" -msgstr "" - -#: aiogram.utils.i18n.middleware.ConstI18nMiddleware:1 of -msgid "Const middleware chooses statically defined locale" -msgstr "" - -#: ../../utils/i18n.rst:110 -msgid "FSMI18nMiddleware" -msgstr "" - -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware:1 of -msgid "This middleware stores locale in the FSM storage" -msgstr "" - -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.set_locale:1 of -msgid "Write new locale to the storage" -msgstr "" - -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.set_locale:3 of -msgid "instance of FSMContext" -msgstr "" - -#: aiogram.utils.i18n.middleware.FSMI18nMiddleware.set_locale:4 of -msgid "new locale" -msgstr "" - -#: ../../utils/i18n.rst:117 -msgid "I18nMiddleware" -msgstr "" - -#: ../../utils/i18n.rst:119 -msgid "or define you own based on abstract I18nMiddleware middleware:" -msgstr "" - -#: aiogram.utils.i18n.middleware.I18nMiddleware:1 of -msgid "Abstract I18n middleware." -msgstr "" - -#: aiogram.utils.i18n.middleware.I18nMiddleware.get_locale:1 of -msgid "Detect current user locale based on event and context." -msgstr "" - -#: aiogram.utils.i18n.middleware.I18nMiddleware.get_locale:3 of -msgid "**This method must be defined in child classes**" -msgstr "" - -#: aiogram.utils.i18n.middleware.I18nMiddleware.get_locale -#: aiogram.utils.i18n.middleware.I18nMiddleware.setup of -msgid "Returns" -msgstr "" - -#: aiogram.utils.i18n.middleware.I18nMiddleware.setup:1 of -msgid "Register middleware for all events in the Router" -msgstr "" - -#: ../../utils/i18n.rst:126 -msgid "Deal with Babel" -msgstr "" - -#: ../../utils/i18n.rst:129 -msgid "Step 1 Extract messages" -msgstr "" - -#: ../../utils/i18n.rst:136 -msgid "" -"Here is :code:`--input-dirs=.` - path to code and the " -":code:`locales/messages.pot` is template where messages will be extracted" -" and `messages` is translation domain." -msgstr "" - -#: ../../utils/i18n.rst:141 -msgid "Some useful options:" -msgstr "" - -#: ../../utils/i18n.rst:143 -msgid "Extract texts with pluralization support :code:`-k __:1,2`" -msgstr "" - -#: ../../utils/i18n.rst:144 -msgid "" -"Add comments for translators, you can use another tag if you want (TR) " -":code:`--add-comments=NOTE`" -msgstr "" - -#: ../../utils/i18n.rst:145 -msgid "Disable comments with string location in code :code:`--no-location`" -msgstr "" - -#: ../../utils/i18n.rst:146 -msgid "Set project name :code:`--project=MySuperBot`" -msgstr "" - -#: ../../utils/i18n.rst:147 -msgid "Set version :code:`--version=2.2`" -msgstr "" - -#: ../../utils/i18n.rst:151 -msgid "Step 2: Init language" -msgstr "" - -#: ../../utils/i18n.rst:157 -msgid ":code:`-i locales/messages.pot` - pre-generated template" -msgstr "" - -#: ../../utils/i18n.rst:158 -msgid ":code:`-d locales` - translations directory" -msgstr "" - -#: ../../utils/i18n.rst:159 -msgid ":code:`-D messages` - translations domain" -msgstr "" - -#: ../../utils/i18n.rst:160 -msgid "" -":code:`-l en` - language. Can be changed to any other valid language code" -" (For example :code:`-l uk` for ukrainian language)" -msgstr "" - -#: ../../utils/i18n.rst:164 -msgid "Step 3: Translate texts" -msgstr "" - -#: ../../utils/i18n.rst:166 -msgid "" -"To open .po file you can use basic text editor or any PO editor, e.g. " -"`Poedit `_" -msgstr "" - -#: ../../utils/i18n.rst:168 -msgid "" -"Just open the file named " -":code:`locales/{language}/LC_MESSAGES/messages.po` and write translations" -msgstr "" - -#: ../../utils/i18n.rst:171 -msgid "Step 4: Compile translations" -msgstr "" - -#: ../../utils/i18n.rst:179 -msgid "Step 5: Updating messages" -msgstr "" - -#: ../../utils/i18n.rst:181 -msgid "When you change the code of your bot you need to update po & mo files" -msgstr "" - -#: ../../utils/i18n.rst:183 -msgid "Step 5.1: regenerate pot file: command from step 1" -msgstr "" - -#: ../../utils/i18n.rst:187 -msgid "Step 5.2: update po files" -msgstr "" - -#: ../../utils/i18n.rst:189 -msgid "" -"Step 5.3: update your translations: location and tools you know from step" -" 3" -msgstr "" - -#: ../../utils/i18n.rst:190 -msgid "Step 5.4: compile mo files: command from step 4" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/index.po b/docs/locale/en/LC_MESSAGES/utils/index.po deleted file mode 100644 index 2ed18085..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/index.po +++ /dev/null @@ -1,22 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" - -#: ../../utils/index.rst:3 -msgid "Utils" -msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/keyboard.po b/docs/locale/en/LC_MESSAGES/utils/keyboard.po deleted file mode 100644 index ea00376e..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/keyboard.po +++ /dev/null @@ -1,178 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../utils/keyboard.rst:4 -msgid "Keyboard builder" -msgstr "" - -#: ../../utils/keyboard.rst:6 -msgid "Keyboard builder helps to dynamically generate markup." -msgstr "" - -#: ../../utils/keyboard.rst:10 -msgid "" -"Note that if you have static markup, it's best to define it explicitly " -"rather than using builder, but if you have dynamic markup configuration, " -"feel free to use builder as you wish." -msgstr "" - -#: ../../utils/keyboard.rst:15 -msgid "Usage example" -msgstr "" - -#: ../../utils/keyboard.rst:17 -msgid "For example you want to generate inline keyboard with 10 buttons" -msgstr "" - -#: ../../utils/keyboard.rst:27 -msgid "" -"then adjust this buttons to some grid, for example first line will have 3" -" buttons, the next lines will have 2 buttons" -msgstr "" - -#: ../../utils/keyboard.rst:33 -msgid "also you can attach another builder to this one" -msgstr "" - -#: ../../utils/keyboard.rst:40 -msgid "or you can attach some already generated markup" -msgstr "" - -#: ../../utils/keyboard.rst:47 -msgid "and finally you can export this markup to use it in your message" -msgstr "" - -#: ../../utils/keyboard.rst:53 -msgid "Reply keyboard builder has the same interface" -msgstr "" - -#: ../../utils/keyboard.rst:57 -msgid "" -"Note that you can't attach reply keyboard builder to inline keyboard " -"builder and vice versa" -msgstr "" - -#: ../../utils/keyboard.rst:61 -msgid "Inline Keyboard" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder:1 of -msgid "Inline keyboard builder inherits all methods from generic builder" -msgstr "" - -#: ../../utils/keyboard.rst:69 -msgid "Add new inline button to markup" -msgstr "" - -#: ../../utils/keyboard.rst:74 -msgid "Construct an InlineKeyboardMarkup" -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.add:1 of -msgid "Add one or many buttons to markup." -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup -#: aiogram.utils.keyboard.KeyboardBuilder.add -#: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.row -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons -#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy -#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup -#: aiogram.utils.keyboard.KeyboardBuilder.add -#: aiogram.utils.keyboard.KeyboardBuilder.adjust -#: aiogram.utils.keyboard.KeyboardBuilder.export -#: aiogram.utils.keyboard.KeyboardBuilder.row -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup of -msgid "Returns" -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.adjust:1 of -msgid "Adjust previously added buttons to specific row sizes." -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.adjust:3 of -msgid "" -"By default, when the sum of passed sizes is lower than buttons count the " -"last one size will be used for tail of the markup. If repeat=True is " -"passed - all sizes will be cycled when available more buttons count than " -"all sizes" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder.buttons:1 -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.buttons:1 of -msgid "Get flatten set of all buttons" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder.copy:1 -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.copy:1 of -msgid "Make full copy of current builder with markup" -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.export:1 of -msgid "Export configured markup as list of lists of buttons" -msgstr "" - -#: aiogram.utils.keyboard.InlineKeyboardBuilder.from_markup:1 -#: aiogram.utils.keyboard.ReplyKeyboardBuilder.from_markup:1 of -msgid "Create builder from existing markup" -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.row:1 of -msgid "Add row to markup" -msgstr "" - -#: aiogram.utils.keyboard.KeyboardBuilder.row:3 of -msgid "When too much buttons is passed it will be separated to many rows" -msgstr "" - -#: ../../utils/keyboard.rst:77 -msgid "Reply Keyboard" -msgstr "" - -#: aiogram.utils.keyboard.ReplyKeyboardBuilder:1 of -msgid "Reply keyboard builder inherits all methods from generic builder" -msgstr "" - -#: ../../utils/keyboard.rst:85 -msgid "Add new button to markup" -msgstr "" - -#: ../../utils/keyboard.rst:90 -msgid "Construct an ReplyKeyboardMarkup" -msgstr "" - -#~ msgid "" -#~ "By default when the sum of passed" -#~ " sizes is lower than buttons count" -#~ " the last one size will be used" -#~ " for tail of the markup. If " -#~ "repeat=True is passed - all sizes " -#~ "will be cycled when available more " -#~ "buttons count than all sizes" -#~ msgstr "" - -#~ msgid "Base builder" -#~ msgstr "" diff --git a/docs/locale/en/LC_MESSAGES/utils/web_app.po b/docs/locale/en/LC_MESSAGES/utils/web_app.po deleted file mode 100644 index 617dd687..00000000 --- a/docs/locale/en/LC_MESSAGES/utils/web_app.po +++ /dev/null @@ -1,228 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2022, aiogram Team -# This file is distributed under the same license as the aiogram package. -# FIRST AUTHOR , 2022. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: aiogram \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" - -#: ../../utils/web_app.rst:3 -msgid "WebApp" -msgstr "" - -#: ../../utils/web_app.rst:5 -msgid "" -"Telegram Bot API 6.0 announces a revolution in the development of " -"chatbots using WebApp feature." -msgstr "" - -#: ../../utils/web_app.rst:7 -msgid "" -"You can read more details on it in the official `blog " -"`_ and " -"`documentation `_." -msgstr "" - -#: ../../utils/web_app.rst:10 -msgid "" -"`aiogram` implements simple utils to remove headache with the data " -"validation from Telegram WebApp on the backend side." -msgstr "" - -#: ../../utils/web_app.rst:13 -msgid "Usage" -msgstr "" - -#: ../../utils/web_app.rst:15 -msgid "" -"For example from frontend you will pass :code:`application/x-www-form-" -"urlencoded` POST request with :code:`_auth` field in body and wants to " -"return User info inside response as :code:`application/json`" -msgstr "" - -#: ../../utils/web_app.rst:35 -msgid "Functions" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature:1 of -msgid "Check incoming WebApp init data signature" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature:3 of -msgid "" -"Source: https://core.telegram.org/bots/webapps#validating-data-received-" -"via-the-web-app" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature -#: aiogram.utils.web_app.parse_webapp_init_data -#: aiogram.utils.web_app.safe_parse_webapp_init_data of -msgid "Parameters" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature:5 of -msgid "bot Token" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature:6 of -msgid "data from frontend to be validated" -msgstr "" - -#: aiogram.utils.web_app.check_webapp_signature -#: aiogram.utils.web_app.parse_webapp_init_data -#: aiogram.utils.web_app.safe_parse_webapp_init_data of -msgid "Returns" -msgstr "" - -#: aiogram.utils.web_app.parse_webapp_init_data:1 of -msgid "Parse WebApp init data and return it as WebAppInitData object" -msgstr "" - -#: aiogram.utils.web_app.parse_webapp_init_data:3 of -msgid "" -"This method doesn't make any security check, so you shall not trust to " -"this data, use :code:`safe_parse_webapp_init_data` instead." -msgstr "" - -#: aiogram.utils.web_app.parse_webapp_init_data:6 of -msgid "data from frontend to be parsed" -msgstr "" - -#: aiogram.utils.web_app.safe_parse_webapp_init_data:1 of -msgid "Validate raw WebApp init data and return it as WebAppInitData object" -msgstr "" - -#: aiogram.utils.web_app.safe_parse_webapp_init_data:3 of -msgid "Raise :obj:`ValueError` when data is invalid" -msgstr "" - -#: aiogram.utils.web_app.safe_parse_webapp_init_data:5 of -msgid "bot token" -msgstr "" - -#: aiogram.utils.web_app.safe_parse_webapp_init_data:6 of -msgid "data from frontend to be parsed and validated" -msgstr "" - -#: ../../utils/web_app.rst:45 -msgid "Types" -msgstr "" - -#: aiogram.utils.web_app.WebAppInitData:1 of -msgid "" -"This object contains data that is transferred to the Web App when it is " -"opened. It is empty if the Web App was launched from a keyboard button." -msgstr "" - -#: aiogram.utils.web_app.WebAppInitData:4 of -msgid "Source: https://core.telegram.org/bots/webapps#webappinitdata" -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.query_id:1 of -msgid "" -"A unique identifier for the Web App session, required for sending " -"messages via the answerWebAppQuery method." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_config:1 -#: aiogram.utils.web_app.WebAppUser.model_config:1 of -msgid "" -"Configuration for the model, should be a dictionary conforming to " -"[`ConfigDict`][pydantic.config.ConfigDict]." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:1 -#: aiogram.utils.web_app.WebAppUser.model_fields:1 of -msgid "" -"Metadata about the fields defined on the model, mapping of field names to" -" [`FieldInfo`][pydantic.fields.FieldInfo]." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.model_fields:4 -#: aiogram.utils.web_app.WebAppUser.model_fields:4 of -msgid "This replaces `Model.__fields__` from Pydantic V1." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.user:1 of -msgid "An object containing data about the current user." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.receiver:1 of -msgid "" -"An object containing data about the chat partner of the current user in " -"the chat where the bot was launched via the attachment menu. Returned " -"only for Web Apps launched via the attachment menu." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.start_param:1 of -msgid "" -"The value of the startattach parameter, passed via link. Only returned " -"for Web Apps when launched from the attachment menu via link. The value " -"of the start_param parameter will also be passed in the GET-parameter " -"tgWebAppStartParam, so the Web App can load the correct interface right " -"away." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.auth_date:1 of -msgid "Unix time when the form was opened." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppInitData.hash:1 of -msgid "" -"A hash of all passed parameters, which the bot server can use to check " -"their validity." -msgstr "" - -#: aiogram.utils.web_app.WebAppUser:1 of -msgid "This object contains the data of the Web App user." -msgstr "" - -#: aiogram.utils.web_app.WebAppUser:3 of -msgid "Source: https://core.telegram.org/bots/webapps#webappuser" -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.id:1 of -msgid "" -"A unique identifier for the user or bot. This number may have more than " -"32 significant bits and some programming languages may have " -"difficulty/silent defects in interpreting it. It has at most 52 " -"significant bits, so a 64-bit integer or a double-precision float type is" -" safe for storing this identifier." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.is_bot:1 of -msgid "True, if this user is a bot. Returns in the receiver field only." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.first_name:1 of -msgid "First name of the user or bot." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.last_name:1 of -msgid "Last name of the user or bot." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.username:1 of -msgid "Username of the user or bot." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.language_code:1 of -msgid "IETF language tag of the user's language. Returns in user field only." -msgstr "" - -#: ../../docstring aiogram.utils.web_app.WebAppUser.photo_url:1 of -msgid "" -"URL of the user’s profile photo. The photo can be in .jpeg or .svg " -"formats. Only returned for Web Apps launched from the attachment menu." -msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/ban_chat_member.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/ban_chat_member.po index 487b0d38..ed3552d1 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/ban_chat_member.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/ban_chat_member.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-23 00:47+0200\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/ban_chat_member.rst:3 msgid "banChatMember" @@ -52,7 +52,7 @@ msgstr "" #: ../../docstring aiogram.methods.ban_chat_member.BanChatMember.until_date:1 #: of msgid "" -"Date when the user will be unbanned, unix time. If user is banned for " +"Date when the user will be unbanned; Unix time. If user is banned for " "more than 366 days or less than 30 seconds from the current time they are" " considered to be banned forever. Applied for supergroups and channels " "only." @@ -67,42 +67,42 @@ msgid "" ":code:`True` for supergroups and channels." msgstr "" -#: ../../api/methods/ban_chat_member.rst:14 +#: ../../api/methods/ban_chat_member.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/ban_chat_member.rst:17 +#: ../../api/methods/ban_chat_member.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/ban_chat_member.rst:25 +#: ../../api/methods/ban_chat_member.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/ban_chat_member.rst:27 +#: ../../api/methods/ban_chat_member.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/ban_chat_member.rst:29 +#: ../../api/methods/ban_chat_member.rst:30 msgid ":code:`from aiogram.methods.ban_chat_member import BanChatMember`" msgstr "" -#: ../../api/methods/ban_chat_member.rst:30 +#: ../../api/methods/ban_chat_member.rst:31 msgid "alias: :code:`from aiogram.methods import BanChatMember`" msgstr "" -#: ../../api/methods/ban_chat_member.rst:33 +#: ../../api/methods/ban_chat_member.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/ban_chat_member.rst:40 +#: ../../api/methods/ban_chat_member.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/ban_chat_member.rst:48 +#: ../../api/methods/ban_chat_member.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/ban_chat_member.rst:50 +#: ../../api/methods/ban_chat_member.rst:51 msgid ":meth:`aiogram.types.chat.Chat.ban`" msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/restrict_chat_member.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/restrict_chat_member.po index 6ab0dc68..beed5bec 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/restrict_chat_member.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/restrict_chat_member.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/methods/restrict_chat_member.rst:3 msgid "restrictChatMember" @@ -70,50 +70,58 @@ msgstr "" #: ../../docstring #: aiogram.methods.restrict_chat_member.RestrictChatMember.until_date:1 of msgid "" -"Date when restrictions will be lifted for the user, unix time. If user is" +"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" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:14 +#: ../../api/methods/restrict_chat_member.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:17 +#: ../../api/methods/restrict_chat_member.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:25 +#: ../../api/methods/restrict_chat_member.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:27 +#: ../../api/methods/restrict_chat_member.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:29 +#: ../../api/methods/restrict_chat_member.rst:30 msgid "" ":code:`from aiogram.methods.restrict_chat_member import " "RestrictChatMember`" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:30 +#: ../../api/methods/restrict_chat_member.rst:31 msgid "alias: :code:`from aiogram.methods import RestrictChatMember`" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:33 +#: ../../api/methods/restrict_chat_member.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:40 +#: ../../api/methods/restrict_chat_member.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:48 +#: ../../api/methods/restrict_chat_member.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/restrict_chat_member.rst:50 +#: ../../api/methods/restrict_chat_member.rst:51 msgid ":meth:`aiogram.types.chat.Chat.restrict`" msgstr "" +#~ msgid "" +#~ "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" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po index 9628f5ea..c44c2853 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -91,7 +91,7 @@ msgstr "" #: ../../docstring aiogram.types.chat.Chat.emoji_status_expiration_date:1 of msgid "" "*Optional*. Expiration date of the emoji status of the other party in a " -"private chat, if any. Returned only in " +"private chat in Unix time, if any. Returned only in " ":class:`aiogram.methods.get_chat.GetChat`." msgstr "" @@ -1087,7 +1087,7 @@ msgstr "" #: aiogram.types.chat.Chat.restrict:13 of msgid "" -"Date when restrictions will be lifted for the user, unix time. If user is" +"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" msgstr "" @@ -1154,7 +1154,7 @@ msgstr "" #: aiogram.types.chat.Chat.ban:11 of msgid "" -"Date when the user will be unbanned, unix time. If user is banned for " +"Date when the user will be unbanned; Unix time. If user is banned for " "more than 366 days or less than 30 seconds from the current time they are" " considered to be banned forever. Applied for supergroups and channels " "only." @@ -1324,3 +1324,29 @@ msgstr "" #~ "by administrators that were appointed by" #~ " him)" #~ msgstr "" + +#~ msgid "" +#~ "*Optional*. Expiration date of the emoji" +#~ " status of the other party in a" +#~ " private chat, if any. Returned only" +#~ " in :class:`aiogram.methods.get_chat.GetChat`." +#~ msgstr "" + +#~ msgid "" +#~ "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" +#~ msgstr "" + +#~ msgid "" +#~ "Date when the user will be " +#~ "unbanned, unix time. If user is " +#~ "banned for more than 366 days or" +#~ " less than 30 seconds from the " +#~ "current time they are considered to " +#~ "be banned forever. Applied for " +#~ "supergroups and channels only." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po index 519189b1..9a336d08 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_administrator_rights.rst:3 msgid "ChatAdministratorRights" @@ -40,9 +40,9 @@ msgstr "" #: of msgid "" ":code:`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" +"statistics, boost list in channels, message statistics in channels, see " +"channel members, see anonymous administrators in supergroups and ignore " +"slow mode. Implied by any other administrator privilege" msgstr "" #: ../../docstring @@ -91,8 +91,8 @@ msgstr "" #: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_post_messages:1 #: of msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" +"*Optional*. :code:`True`, if the administrator can post messages in the " +"channel; channels only" msgstr "" #: ../../docstring @@ -111,6 +111,30 @@ msgid "" "and supergroups only" msgstr "" +#: ../../docstring +#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_post_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can post stories in the " +"channel; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_edit_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can edit stories posted by" +" other users; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_delete_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can delete stories posted " +"by other users" +msgstr "" + #: ../../docstring #: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_topics:1 #: of @@ -129,3 +153,18 @@ msgstr "" #~ "the user)" #~ msgstr "" +#~ msgid "" +#~ ":code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post in the channel; channels" +#~ " only" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po index 8d56701a..ccd470cf 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member_administrator.rst:3 msgid "ChatMemberAdministrator" @@ -61,9 +61,9 @@ msgstr "" #: of msgid "" ":code:`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" +"statistics, boost list in channels, message statistics in channels, see " +"channel members, see anonymous administrators in supergroups and ignore " +"slow mode. Implied by any other administrator privilege" msgstr "" #: ../../docstring @@ -112,8 +112,8 @@ msgstr "" #: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_post_messages:1 #: of msgid "" -"*Optional*. :code:`True`, if the administrator can post in the channel; " -"channels only" +"*Optional*. :code:`True`, if the administrator can post messages in the " +"channel; channels only" msgstr "" #: ../../docstring @@ -132,6 +132,30 @@ msgid "" "and supergroups only" msgstr "" +#: ../../docstring +#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_post_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can post stories in the " +"channel; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_edit_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can edit stories posted by" +" other users; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_delete_stories:1 +#: of +msgid "" +"*Optional*. :code:`True`, if the administrator can delete stories posted " +"by other users" +msgstr "" + #: ../../docstring #: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_topics:1 #: of @@ -156,3 +180,18 @@ msgstr "" #~ "the user)" #~ msgstr "" +#~ msgid "" +#~ ":code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post in the channel; channels" +#~ " only" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_banned.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_banned.po index 5b7267fb..4f3224f7 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_banned.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_banned.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member_banned.rst:3 msgid "ChatMemberBanned" @@ -44,6 +44,12 @@ msgstr "" #: ../../docstring #: aiogram.types.chat_member_banned.ChatMemberBanned.until_date:1 of msgid "" -"Date when restrictions will be lifted for this user; unix time. If 0, " +"Date when restrictions will be lifted for this user; Unix time. If 0, " "then the user is banned forever" msgstr "" + +#~ msgid "" +#~ "Date when restrictions will be lifted" +#~ " for this user; unix time. If " +#~ "0, then the user is banned forever" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_restricted.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_restricted.po index 052a4b20..cdfa2d34 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_restricted.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_restricted.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/chat_member_restricted.rst:3 msgid "ChatMemberRestricted" @@ -144,7 +144,7 @@ msgstr "" #: ../../docstring #: aiogram.types.chat_member_restricted.ChatMemberRestricted.until_date:1 of msgid "" -"Date when restrictions will be lifted for this user; unix time. If 0, " +"Date when restrictions will be lifted for this user; Unix time. If 0, " "then the user is restricted forever" msgstr "" @@ -160,3 +160,9 @@ msgstr "" #~ "videos, video notes and voice notes" #~ msgstr "" +#~ msgid "" +#~ "Date when restrictions will be lifted" +#~ " for this user; unix time. If " +#~ "0, then the user is restricted " +#~ "forever" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po index 3dcf4f0f..5a323f31 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/inline_query_results_button.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,7 +44,7 @@ msgid "" "`_ that will be launched when the" " user presses the button. The Web App will be able to switch back to the " "inline mode using the method `switchInlineQuery " -"`_ inside " +"`_ inside " "the Web App." msgstr "" @@ -57,3 +57,15 @@ msgid "" "presses the button. 1-64 characters, only :code:`A-Z`, :code:`a-z`, " ":code:`0-9`, :code:`_` and :code:`-` are allowed." msgstr "" + +#~ msgid "" +#~ "*Optional*. Description of the `Web App" +#~ " `_ that will" +#~ " be launched when the user presses" +#~ " the button. The Web App will " +#~ "be able to switch back to the " +#~ "inline mode using the method " +#~ "`switchInlineQuery `_ inside the Web" +#~ " App." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po index 8c20ee62..a16856de 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/message.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -349,8 +349,11 @@ msgstr "" #: ../../docstring aiogram.types.message.Message.write_access_allowed:1 of msgid "" -"*Optional*. Service message: the user allowed the bot added to the " -"attachment menu to write messages" +"*Optional*. Service message: the user allowed the bot to write messages " +"after adding it to the attachment or side menu, launching a Web App from " +"a link, or accepting an explicit request from a Web App sent by the " +"method `requestWriteAccess `_" msgstr "" #: ../../docstring aiogram.types.message.Message.passport_data:1 of @@ -2589,3 +2592,9 @@ msgstr "" #~ " implemented before the similar method " #~ "is added to API" #~ msgstr "" + +#~ msgid "" +#~ "*Optional*. Service message: the user " +#~ "allowed the bot added to the " +#~ "attachment menu to write messages" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/web_app_info.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/web_app_info.po index 4a2e122f..912f766a 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/web_app_info.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/web_app_info.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.12.1\n" #: ../../api/types/web_app_info.rst:3 msgid "WebAppInfo" @@ -33,5 +33,13 @@ msgstr "" msgid "" "An HTTPS URL of a Web App to be opened with additional data as specified " "in `Initializing Web Apps `_" +"#initializing-mini-apps>`_" msgstr "" + +#~ msgid "" +#~ "An HTTPS URL of a Web App to" +#~ " be opened with additional data as" +#~ " specified in `Initializing Web Apps " +#~ "`_" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po index 4fee2157..1378b6ea 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/write_access_allowed.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,17 +24,37 @@ msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:1 of msgid "" "This object represents a service message about a user allowing a bot to " -"write messages after adding the bot to the attachment menu or launching a" -" Web App from a link." +"write messages after adding it to the attachment menu, launching a Web " +"App from a link, or accepting an explicit request from a Web App sent by " +"the method `requestWriteAccess `_." msgstr "" #: aiogram.types.write_access_allowed.WriteAccessAllowed:3 of msgid "Source: https://core.telegram.org/bots/api#writeaccessallowed" msgstr "" +#: ../../docstring +#: aiogram.types.write_access_allowed.WriteAccessAllowed.from_request:1 of +msgid "" +"*Optional*. True, if the access was granted after the user accepted an " +"explicit request from a Web App sent by the method `requestWriteAccess " +"`_" +msgstr "" + #: ../../docstring #: aiogram.types.write_access_allowed.WriteAccessAllowed.web_app_name:1 of -msgid "*Optional*. Name of the Web App which was launched from a link" +msgid "" +"*Optional*. Name of the Web App, if the access was granted when the Web " +"App was launched from a link" +msgstr "" + +#: ../../docstring +#: aiogram.types.write_access_allowed.WriteAccessAllowed.from_attachment_menu:1 +#: of +msgid "" +"*Optional*. True, if the access was granted when the bot was added to the" +" attachment or side menu" msgstr "" #~ msgid "" @@ -44,3 +64,14 @@ msgstr "" #~ "write messages. Currently holds no " #~ "information." #~ msgstr "" + +#~ msgid "" +#~ "This object represents a service message" +#~ " about a user allowing a bot to" +#~ " write messages after adding the bot" +#~ " to the attachment menu or launching" +#~ " a Web App from a link." +#~ msgstr "" + +#~ msgid "*Optional*. Name of the Web App which was launched from a link" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index e22fe009..0d08487c 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,149 +22,276 @@ msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-26)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-08)" msgstr "" -#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:92 ../../../CHANGES.rst:137 -#: ../../../CHANGES.rst:207 ../../../CHANGES.rst:393 ../../../CHANGES.rst:456 -#: ../../../CHANGES.rst:505 ../../../CHANGES.rst:566 ../../../CHANGES.rst:624 -#: ../../../CHANGES.rst:670 ../../../CHANGES.rst:718 ../../../CHANGES.rst:774 -#: ../../../CHANGES.rst:859 ../../../CHANGES.rst:891 +#: ../../../CHANGES.rst:23 ../../../CHANGES.rst:44 ../../../CHANGES.rst:56 +#: ../../../CHANGES.rst:77 ../../../CHANGES.rst:146 ../../../CHANGES.rst:191 +#: ../../../CHANGES.rst:261 ../../../CHANGES.rst:447 ../../../CHANGES.rst:510 +#: ../../../CHANGES.rst:559 ../../../CHANGES.rst:620 ../../../CHANGES.rst:678 +#: ../../../CHANGES.rst:724 ../../../CHANGES.rst:772 ../../../CHANGES.rst:828 +#: ../../../CHANGES.rst:913 ../../../CHANGES.rst:945 #: ../../[towncrier-fragments]:5 msgid "Bugfixes" msgstr "" #: ../../[towncrier-fragments]:7 msgid "" +"Fixed ``parse_mode`` in ``send_copy`` helper. Disable by default. `#1332 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:89 ../../../CHANGES.rst:159 ../../../CHANGES.rst:204 +#: ../../../CHANGES.rst:289 ../../../CHANGES.rst:522 ../../../CHANGES.rst:572 +#: ../../../CHANGES.rst:952 ../../[towncrier-fragments]:12 +msgid "Improved Documentation" +msgstr "" + +#: ../../[towncrier-fragments]:14 +msgid "" +"Corrected grammatical errors, improved sentence structures, translation " +"for migration 2.x-3.x `#1302 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:110 ../../../CHANGES.rst:166 ../../../CHANGES.rst:305 +#: ../../../CHANGES.rst:456 ../../../CHANGES.rst:533 ../../../CHANGES.rst:586 +#: ../../../CHANGES.rst:637 ../../../CHANGES.rst:691 ../../../CHANGES.rst:733 +#: ../../../CHANGES.rst:779 ../../../CHANGES.rst:839 ../../../CHANGES.rst:860 +#: ../../../CHANGES.rst:883 ../../../CHANGES.rst:920 ../../../CHANGES.rst:959 +#: ../../[towncrier-fragments]:19 +msgid "Misc" +msgstr "" + +#: ../../[towncrier-fragments]:21 +msgid "Updated dependencies, bumped minimum required version:" +msgstr "" + +#: ../../[towncrier-fragments]:23 +msgid ":code:`magic-filter` - fixed `.resolve` operation" +msgstr "" + +#: ../../[towncrier-fragments]:24 +msgid ":code:`pydantic` - fixed compatibility (broken in 2.4)" +msgstr "" + +#: ../../[towncrier-fragments]:25 +msgid "" +":code:`aiodns` - added new dependency to the :code:`fast` extras " +"(:code:`pip install aiogram[fast]`)" +msgstr "" + +#: ../../[towncrier-fragments]:26 +msgid "*others...*" +msgstr "" + +#: ../../[towncrier-fragments]:27 +msgid "`#1327 `_" +msgstr "" + +#: ../../[towncrier-fragments]:28 +msgid "" +"Prevent update handling task pointers from being garbage collected, " +"backport from 2.x `#1331 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:20 +msgid "3.1.1 (2023-09-25)" +msgstr "" + +#: ../../../CHANGES.rst:25 +msgid "" +"Fixed `pydantic` version <2.4, since 2.4 has breaking changes. `#1322 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:30 +msgid "3.1.0 (2023-09-22)" +msgstr "" + +#: ../../../CHANGES.rst:33 ../../../CHANGES.rst:122 ../../../CHANGES.rst:180 +#: ../../../CHANGES.rst:222 ../../../CHANGES.rst:385 ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:545 ../../../CHANGES.rst:596 ../../../CHANGES.rst:669 +#: ../../../CHANGES.rst:710 ../../../CHANGES.rst:748 ../../../CHANGES.rst:796 +#: ../../../CHANGES.rst:872 ../../../CHANGES.rst:905 ../../../CHANGES.rst:936 +msgid "Features" +msgstr "" + +#: ../../../CHANGES.rst:35 +msgid "" +"Added support for custom encoders/decoders for payload (and also for " +"deep-linking). `#1262 `_" +msgstr "" + +#: ../../../CHANGES.rst:37 +msgid "" +"Added :class:`aiogram.utils.input_media.MediaGroupBuilder` for media " +"group construction. `#1293 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:39 +msgid "" +"Added full support of `Bot API 6.9 `_ `#1319 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:46 +msgid "" +"Added actual param hints for `InlineKeyboardBuilder` and " +"`ReplyKeyboardBuilder`. `#1303 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:48 +msgid "" +"Fixed priority of events isolation, now user state will be loaded only " +"after lock is acquired `#1317 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:53 +msgid "3.0.0 (2023-09-01)" +msgstr "" + +#: ../../../CHANGES.rst:58 +msgid "" +"Replaced :code:`datetime.datetime` with `DateTime` type wrapper across " +"types to make dumped JSONs object more compatible with data that is sent " +"by Telegram. `#1277 `_" +msgstr "" + +#: ../../../CHANGES.rst:61 +msgid "" "Fixed magic :code:`.as_(...)` operation for values that can be " "interpreted as `False` (e.g. `0`). `#1281 " "`_" msgstr "" -#: ../../[towncrier-fragments]:9 +#: ../../../CHANGES.rst:63 msgid "" "Italic markdown from utils now uses correct decorators `#1282 " "`_" msgstr "" -#: ../../../CHANGES.rst:20 +#: ../../../CHANGES.rst:65 +msgid "" +"Fixed method :code:`Message.send_copy` for stickers. `#1284 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:67 +msgid "" +"Fixed :code:`Message.send_copy` method, which was not working properly " +"with stories, so not you can copy stories too (forwards messages). `#1286" +" `_" +msgstr "" + +#: ../../../CHANGES.rst:69 +msgid "" +"Fixed error overlapping when validation error is caused by remove_unset " +"root validator in base types and methods. `#1290 " +"`_" +msgstr "" + +#: ../../../CHANGES.rst:74 msgid "3.0.0rc2 (2023-08-18)" msgstr "" -#: ../../../CHANGES.rst:25 +#: ../../../CHANGES.rst:79 msgid "" "Fixed missing message content types (:code:`ContentType.USER_SHARED`, " ":code:`ContentType.CHAT_SHARED`) `#1252 " "`_" msgstr "" -#: ../../../CHANGES.rst:27 +#: ../../../CHANGES.rst:81 msgid "" "Fixed nested hashtag, cashtag and email message entities not being parsed" " correctly when these entities are inside another entity. `#1259 " "`_" msgstr "" -#: ../../../CHANGES.rst:29 +#: ../../../CHANGES.rst:83 msgid "" "Moved global filters check placement into router to add chance to pass " "context from global filters into handlers in the same way as it possible " "in other places `#1266 `_" msgstr "" -#: ../../../CHANGES.rst:35 ../../../CHANGES.rst:105 ../../../CHANGES.rst:150 -#: ../../../CHANGES.rst:235 ../../../CHANGES.rst:468 ../../../CHANGES.rst:518 -#: ../../../CHANGES.rst:898 -msgid "Improved Documentation" -msgstr "" - -#: ../../../CHANGES.rst:37 +#: ../../../CHANGES.rst:91 msgid "" "Added error handling example `examples/error_handling.py` `#1099 " "`_" msgstr "" -#: ../../../CHANGES.rst:39 +#: ../../../CHANGES.rst:93 msgid "" "Added a few words about skipping pending updates `#1251 " "`_" msgstr "" -#: ../../../CHANGES.rst:41 +#: ../../../CHANGES.rst:95 msgid "" "Added a section on Dependency Injection technology `#1253 " "`_" msgstr "" -#: ../../../CHANGES.rst:43 +#: ../../../CHANGES.rst:97 msgid "" "This update includes the addition of a multi-file bot example to the " "repository. `#1254 `_" msgstr "" -#: ../../../CHANGES.rst:45 +#: ../../../CHANGES.rst:99 msgid "" "Refactored examples code to use aiogram enumerations and enhanced chat " "messages with markdown beautification's for a more user-friendly display." " `#1256 `_" msgstr "" -#: ../../../CHANGES.rst:48 +#: ../../../CHANGES.rst:102 msgid "" "Supplemented \"Finite State Machine\" section in Migration FAQ `#1264 " "`_" msgstr "" -#: ../../../CHANGES.rst:50 +#: ../../../CHANGES.rst:104 msgid "" "Removed extra param in docstring of TelegramEventObserver's filter method" " and fixed typo in I18n documentation. `#1268 " "`_" msgstr "" -#: ../../../CHANGES.rst:56 ../../../CHANGES.rst:112 ../../../CHANGES.rst:251 -#: ../../../CHANGES.rst:402 ../../../CHANGES.rst:479 ../../../CHANGES.rst:532 -#: ../../../CHANGES.rst:583 ../../../CHANGES.rst:637 ../../../CHANGES.rst:679 -#: ../../../CHANGES.rst:725 ../../../CHANGES.rst:785 ../../../CHANGES.rst:806 -#: ../../../CHANGES.rst:829 ../../../CHANGES.rst:866 ../../../CHANGES.rst:905 -msgid "Misc" -msgstr "" - -#: ../../../CHANGES.rst:58 +#: ../../../CHANGES.rst:112 msgid "" "Enhanced the warning message in dispatcher to include a JSON dump of the " "update when update type is not known. `#1269 " "`_" msgstr "" -#: ../../../CHANGES.rst:60 +#: ../../../CHANGES.rst:114 msgid "" "Added support for `Bot API 6.8 `_ `#1275 " "`_" msgstr "" -#: ../../../CHANGES.rst:65 +#: ../../../CHANGES.rst:119 msgid "3.0.0rc1 (2023-08-06)" msgstr "" -#: ../../../CHANGES.rst:68 ../../../CHANGES.rst:126 ../../../CHANGES.rst:168 -#: ../../../CHANGES.rst:331 ../../../CHANGES.rst:431 ../../../CHANGES.rst:491 -#: ../../../CHANGES.rst:542 ../../../CHANGES.rst:615 ../../../CHANGES.rst:656 -#: ../../../CHANGES.rst:694 ../../../CHANGES.rst:742 ../../../CHANGES.rst:818 -#: ../../../CHANGES.rst:851 ../../../CHANGES.rst:882 -msgid "Features" -msgstr "" - -#: ../../../CHANGES.rst:70 +#: ../../../CHANGES.rst:124 msgid "Added Currency enum. You can use it like this:" msgstr "" -#: ../../../CHANGES.rst:82 +#: ../../../CHANGES.rst:136 msgid "`#1194 `_" msgstr "" -#: ../../../CHANGES.rst:83 +#: ../../../CHANGES.rst:137 msgid "" "Updated keyboard builders with new methods for integrating buttons and " "keyboard creation more seamlessly. Added functionality to create buttons " @@ -173,45 +300,45 @@ msgid "" "`#1236 `_" msgstr "" -#: ../../../CHANGES.rst:87 +#: ../../../CHANGES.rst:141 msgid "" "Added support for message_thread_id in ChatActionSender `#1249 " "`_" msgstr "" -#: ../../../CHANGES.rst:94 +#: ../../../CHANGES.rst:148 msgid "" "Fixed polling startup when \"bot\" key is passed manually into dispatcher" " workflow data `#1242 `_" msgstr "" -#: ../../../CHANGES.rst:96 +#: ../../../CHANGES.rst:150 msgid "Added codegen configuration for lost shortcuts:" msgstr "" -#: ../../../CHANGES.rst:98 +#: ../../../CHANGES.rst:152 msgid "ShippingQuery.answer" msgstr "" -#: ../../../CHANGES.rst:99 +#: ../../../CHANGES.rst:153 msgid "PreCheckoutQuery.answer" msgstr "" -#: ../../../CHANGES.rst:100 +#: ../../../CHANGES.rst:154 msgid "Message.delete_reply_markup" msgstr "" -#: ../../../CHANGES.rst:101 +#: ../../../CHANGES.rst:155 msgid "`#1244 `_" msgstr "" -#: ../../../CHANGES.rst:107 +#: ../../../CHANGES.rst:161 msgid "" "Added documentation for webhook and polling modes. `#1241 " "`_" msgstr "" -#: ../../../CHANGES.rst:114 +#: ../../../CHANGES.rst:168 msgid "" "Reworked InputFile reading, removed :code:`__aiter__` method, added `bot:" " Bot` argument to the :code:`.read(...)` method, so, from now " @@ -219,18 +346,18 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:118 +#: ../../../CHANGES.rst:172 msgid "" "Code-generated :code:`__init__` typehints in types and methods to make " "IDE happy without additional pydantic plugin `#1245 " "`_" msgstr "" -#: ../../../CHANGES.rst:123 +#: ../../../CHANGES.rst:177 msgid "3.0.0b9 (2023-07-30)" msgstr "" -#: ../../../CHANGES.rst:128 +#: ../../../CHANGES.rst:182 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_member_updated.ChatMemberUpdated` to send " @@ -238,7 +365,7 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:131 +#: ../../../CHANGES.rst:185 msgid "" "Added new shortcuts for " ":class:`aiogram.types.chat_join_request.ChatJoinRequest` to make easier " @@ -246,13 +373,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:139 +#: ../../../CHANGES.rst:193 msgid "" "Fixed bot assignment in the :code:`Message.send_copy` shortcut `#1232 " "`_" msgstr "" -#: ../../../CHANGES.rst:141 +#: ../../../CHANGES.rst:195 msgid "" "Added model validation to remove UNSET before field validation. This " "change was necessary to correctly handle parse_mode where 'UNSET' is used" @@ -262,21 +389,21 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:146 +#: ../../../CHANGES.rst:200 msgid "Updated pydantic to 2.1 with few bugfixes" msgstr "" -#: ../../../CHANGES.rst:152 +#: ../../../CHANGES.rst:206 msgid "" "Improved docs, added basic migration guide (will be expanded later) " "`#1143 `_" msgstr "" -#: ../../../CHANGES.rst:157 ../../../CHANGES.rst:242 ../../../CHANGES.rst:525 +#: ../../../CHANGES.rst:211 ../../../CHANGES.rst:296 ../../../CHANGES.rst:579 msgid "Deprecations and Removals" msgstr "" -#: ../../../CHANGES.rst:159 +#: ../../../CHANGES.rst:213 msgid "" "Removed the use of the context instance (Bot.get_current) from all " "placements that were used previously. This is to avoid the use of the " @@ -284,78 +411,78 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:165 +#: ../../../CHANGES.rst:219 msgid "3.0.0b8 (2023-07-17)" msgstr "" -#: ../../../CHANGES.rst:170 +#: ../../../CHANGES.rst:224 msgid "" "Added possibility to use custom events in routers (If router does not " "support custom event it does not break and passes it to included " "routers). `#1147 `_" msgstr "" -#: ../../../CHANGES.rst:172 +#: ../../../CHANGES.rst:226 msgid "Added support for FSM in Forum topics." msgstr "" -#: ../../../CHANGES.rst:174 +#: ../../../CHANGES.rst:228 msgid "The strategy can be changed in dispatcher:" msgstr "" -#: ../../../CHANGES.rst:187 +#: ../../../CHANGES.rst:241 msgid "" "If you have implemented you own storages you should extend record key " "generation with new one attribute - :code:`thread_id`" msgstr "" -#: ../../../CHANGES.rst:189 +#: ../../../CHANGES.rst:243 msgid "`#1161 `_" msgstr "" -#: ../../../CHANGES.rst:190 +#: ../../../CHANGES.rst:244 msgid "Improved CallbackData serialization." msgstr "" -#: ../../../CHANGES.rst:192 +#: ../../../CHANGES.rst:246 msgid "Minimized UUID (hex without dashes)" msgstr "" -#: ../../../CHANGES.rst:193 +#: ../../../CHANGES.rst:247 msgid "Replaced bool values with int (true=1, false=0)" msgstr "" -#: ../../../CHANGES.rst:194 +#: ../../../CHANGES.rst:248 msgid "`#1163 `_" msgstr "" -#: ../../../CHANGES.rst:195 +#: ../../../CHANGES.rst:249 msgid "" "Added a tool to make text formatting flexible and easy. More details on " "the :ref:`corresponding documentation page ` `#1172 " "`_" msgstr "" -#: ../../../CHANGES.rst:198 +#: ../../../CHANGES.rst:252 msgid "" "Added :code:`X-Telegram-Bot-Api-Secret-Token` header check `#1173 " "`_" msgstr "" -#: ../../../CHANGES.rst:200 +#: ../../../CHANGES.rst:254 msgid "" "Made :code:`allowed_updates` list to revolve automatically in " "start_polling method if not set explicitly. `#1178 " "`_" msgstr "" -#: ../../../CHANGES.rst:202 +#: ../../../CHANGES.rst:256 msgid "" "Added possibility to pass custom headers to :class:`URLInputFile` object " "`#1191 `_" msgstr "" -#: ../../../CHANGES.rst:209 +#: ../../../CHANGES.rst:263 msgid "" "Change type of result in InlineQueryResult enum for " ":code:`InlineQueryResultCachedMpeg4Gif` and " @@ -363,51 +490,51 @@ msgid "" "documentation." msgstr "" -#: ../../../CHANGES.rst:212 +#: ../../../CHANGES.rst:266 msgid "" "Change regexp for entities parsing to more correct " "(:code:`InlineQueryResultType.yml`). `#1146 " "`_" msgstr "" -#: ../../../CHANGES.rst:214 +#: ../../../CHANGES.rst:268 msgid "" "Fixed signature of startup/shutdown events to include the " ":code:`**dispatcher.workflow_data` as the handler arguments. `#1155 " "`_" msgstr "" -#: ../../../CHANGES.rst:216 +#: ../../../CHANGES.rst:270 msgid "" "Added missing :code:`FORUM_TOPIC_EDITED` value to content_type property " "`#1160 `_" msgstr "" -#: ../../../CHANGES.rst:218 +#: ../../../CHANGES.rst:272 msgid "" "Fixed compatibility with Python 3.8-3.9 (from previous release) `#1162 " "`_" msgstr "" -#: ../../../CHANGES.rst:220 +#: ../../../CHANGES.rst:274 msgid "" "Fixed the markdown spoiler parser. `#1176 " "`_" msgstr "" -#: ../../../CHANGES.rst:222 +#: ../../../CHANGES.rst:276 msgid "" "Fixed workflow data propagation `#1196 " "`_" msgstr "" -#: ../../../CHANGES.rst:224 +#: ../../../CHANGES.rst:278 msgid "" "Fixed the serialization error associated with nested subtypes like " "InputMedia, ChatMember, etc." msgstr "" -#: ../../../CHANGES.rst:227 +#: ../../../CHANGES.rst:281 msgid "" "The previously generated code resulted in an invalid schema under " "pydantic v2, which has stricter type parsing. Hence, subtypes without the" @@ -416,71 +543,71 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:237 +#: ../../../CHANGES.rst:291 msgid "" "Changed small grammar typos for :code:`upload_file` `#1133 " "`_" msgstr "" -#: ../../../CHANGES.rst:244 +#: ../../../CHANGES.rst:298 msgid "" "Removed text filter in due to is planned to remove this filter few " "versions ago." msgstr "" -#: ../../../CHANGES.rst:246 +#: ../../../CHANGES.rst:300 msgid "" "Use :code:`F.text` instead `#1170 " "`_" msgstr "" -#: ../../../CHANGES.rst:253 +#: ../../../CHANGES.rst:307 msgid "" "Added full support of `Bot API 6.6 `_" msgstr "" -#: ../../../CHANGES.rst:257 +#: ../../../CHANGES.rst:311 msgid "" "Note that this issue has breaking changes described in in the Bot API " "changelog, this changes is not breaking in the API but breaking inside " "aiogram because Beta stage is not finished." msgstr "" -#: ../../../CHANGES.rst:260 +#: ../../../CHANGES.rst:314 msgid "`#1139 `_" msgstr "" -#: ../../../CHANGES.rst:261 +#: ../../../CHANGES.rst:315 msgid "" "Added full support of `Bot API 6.7 `_" msgstr "" -#: ../../../CHANGES.rst:265 +#: ../../../CHANGES.rst:319 msgid "" "Note that arguments *switch_pm_parameter* and *switch_pm_text* was " "deprecated and should be changed to *button* argument as described in API" " docs." msgstr "" -#: ../../../CHANGES.rst:267 +#: ../../../CHANGES.rst:321 msgid "`#1168 `_" msgstr "" -#: ../../../CHANGES.rst:268 +#: ../../../CHANGES.rst:322 msgid "Updated `Pydantic to V2 `_" msgstr "" -#: ../../../CHANGES.rst:272 +#: ../../../CHANGES.rst:326 msgid "Be careful, not all libraries is already updated to using V2" msgstr "" -#: ../../../CHANGES.rst:273 +#: ../../../CHANGES.rst:327 msgid "`#1202 `_" msgstr "" -#: ../../../CHANGES.rst:274 +#: ../../../CHANGES.rst:328 msgid "" "Added global defaults :code:`disable_web_page_preview` and " ":code:`protect_content` in addition to :code:`parse_mode` to the Bot " @@ -488,13 +615,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:277 +#: ../../../CHANGES.rst:331 msgid "" "Removed bot parameters from storages `#1144 " "`_" msgstr "" -#: ../../../CHANGES.rst:280 +#: ../../../CHANGES.rst:334 msgid "" "Replaced ContextVar's with a new feature called `Validation Context " "`_" @@ -502,69 +629,69 @@ msgid "" "handling the Bot instance within method shortcuts." msgstr "" -#: ../../../CHANGES.rst:285 +#: ../../../CHANGES.rst:339 msgid "**Breaking**: The 'bot' argument now is required in `URLInputFile`" msgstr "" -#: ../../../CHANGES.rst:286 +#: ../../../CHANGES.rst:340 msgid "`#1210 `_" msgstr "" -#: ../../../CHANGES.rst:287 +#: ../../../CHANGES.rst:341 msgid "Updated magic-filter with new features" msgstr "" -#: ../../../CHANGES.rst:289 +#: ../../../CHANGES.rst:343 msgid "Added hint for :code:`len(F)` error" msgstr "" -#: ../../../CHANGES.rst:290 +#: ../../../CHANGES.rst:344 msgid "Added not in operation" msgstr "" -#: ../../../CHANGES.rst:291 +#: ../../../CHANGES.rst:345 msgid "`#1221 `_" msgstr "" -#: ../../../CHANGES.rst:295 +#: ../../../CHANGES.rst:349 msgid "3.0.0b7 (2023-02-18)" msgstr "" -#: ../../../CHANGES.rst:299 +#: ../../../CHANGES.rst:353 msgid "" "Note that this version has incompatibility with Python 3.8-3.9 in case " "when you create an instance of Dispatcher outside of the any coroutine." msgstr "" -#: ../../../CHANGES.rst:301 +#: ../../../CHANGES.rst:355 msgid "Sorry for the inconvenience, it will be fixed in the next version." msgstr "" -#: ../../../CHANGES.rst:303 +#: ../../../CHANGES.rst:357 msgid "This code will not work:" msgstr "" -#: ../../../CHANGES.rst:315 +#: ../../../CHANGES.rst:369 msgid "But if you change it like this it should works as well:" msgstr "" -#: ../../../CHANGES.rst:333 +#: ../../../CHANGES.rst:387 msgid "Added missing shortcuts, new enums, reworked old stuff" msgstr "" -#: ../../../CHANGES.rst:335 +#: ../../../CHANGES.rst:389 msgid "" "**Breaking** All previously added enums is re-generated in new place - " "`aiogram.enums` instead of `aiogram.types`" msgstr "" -#: ../../../CHANGES.rst:353 +#: ../../../CHANGES.rst:407 msgid "" "**Added enums:** " ":class:`aiogram.enums.bot_command_scope_type.BotCommandScopeType`," msgstr "" -#: ../../../CHANGES.rst:339 +#: ../../../CHANGES.rst:393 msgid "" ":class:`aiogram.enums.chat_action.ChatAction`, " ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " @@ -583,15 +710,15 @@ msgid "" ":class:`aiogram.enums.update_type.UpdateType`," msgstr "" -#: ../../../CHANGES.rst:355 +#: ../../../CHANGES.rst:409 msgid "**Added shortcuts**:" msgstr "" -#: ../../../CHANGES.rst:380 +#: ../../../CHANGES.rst:434 msgid "*Chat* :meth:`aiogram.types.chat.Chat.get_administrators`," msgstr "" -#: ../../../CHANGES.rst:358 +#: ../../../CHANGES.rst:412 msgid "" ":meth:`aiogram.types.chat.Chat.delete_message`, " ":meth:`aiogram.types.chat.Chat.revoke_invite_link`, " @@ -619,85 +746,85 @@ msgid "" ":meth:`aiogram.types.chat.Chat.set_photo`," msgstr "" -#: ../../../CHANGES.rst:382 +#: ../../../CHANGES.rst:436 msgid "*Sticker*: :meth:`aiogram.types.sticker.Sticker.set_position_in_set`," msgstr "" -#: ../../../CHANGES.rst:383 +#: ../../../CHANGES.rst:437 msgid ":meth:`aiogram.types.sticker.Sticker.delete_from_set`," msgstr "" -#: ../../../CHANGES.rst:384 +#: ../../../CHANGES.rst:438 msgid "*User*: :meth:`aiogram.types.user.User.get_profile_photos`" msgstr "" -#: ../../../CHANGES.rst:385 +#: ../../../CHANGES.rst:439 msgid "`#952 `_" msgstr "" -#: ../../../CHANGES.rst:386 +#: ../../../CHANGES.rst:440 msgid "" "Added :ref:`callback answer ` feature `#1091 " "`_" msgstr "" -#: ../../../CHANGES.rst:388 +#: ../../../CHANGES.rst:442 msgid "" "Added a method that allows you to compactly register routers `#1117 " "`_" msgstr "" -#: ../../../CHANGES.rst:395 +#: ../../../CHANGES.rst:449 msgid "" "Check status code when downloading file `#816 " "`_" msgstr "" -#: ../../../CHANGES.rst:397 +#: ../../../CHANGES.rst:451 msgid "" "Fixed `ignore_case` parameter in :obj:`aiogram.filters.command.Command` " "filter `#1106 `_" msgstr "" -#: ../../../CHANGES.rst:404 +#: ../../../CHANGES.rst:458 msgid "" "Added integration with new code-generator named `Butcher " "`_ `#1069 " "`_" msgstr "" -#: ../../../CHANGES.rst:406 +#: ../../../CHANGES.rst:460 msgid "" "Added full support of `Bot API 6.4 `_ `#1088 " "`_" msgstr "" -#: ../../../CHANGES.rst:408 +#: ../../../CHANGES.rst:462 msgid "" "Updated package metadata, moved build internals from Poetry to Hatch, " "added contributing guides. `#1095 " "`_" msgstr "" -#: ../../../CHANGES.rst:410 +#: ../../../CHANGES.rst:464 msgid "" "Added full support of `Bot API 6.5 `_" msgstr "" -#: ../../../CHANGES.rst:414 +#: ../../../CHANGES.rst:468 msgid "" "Note that :obj:`aiogram.types.chat_permissions.ChatPermissions` is " "updated without backward compatibility, so now this object has no " ":code:`can_send_media_messages` attribute" msgstr "" -#: ../../../CHANGES.rst:416 +#: ../../../CHANGES.rst:470 msgid "`#1112 `_" msgstr "" -#: ../../../CHANGES.rst:417 +#: ../../../CHANGES.rst:471 msgid "" "Replaced error :code:`TypeError: TelegramEventObserver.__call__() got an " "unexpected keyword argument ''` with a more understandable one for " @@ -705,13 +832,13 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:420 +#: ../../../CHANGES.rst:474 msgid "" "Added possibility to reply into webhook with files `#1120 " "`_" msgstr "" -#: ../../../CHANGES.rst:422 +#: ../../../CHANGES.rst:476 msgid "" "Reworked graceful shutdown. Added method to stop polling. Now polling " "started from dispatcher can be stopped by signals gracefully without " @@ -719,127 +846,127 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:428 +#: ../../../CHANGES.rst:482 msgid "3.0.0b6 (2022-11-18)" msgstr "" -#: ../../../CHANGES.rst:433 +#: ../../../CHANGES.rst:487 msgid "" "(again) Added possibility to combine filters with an *and*/*or* " "operations." msgstr "" -#: ../../../CHANGES.rst:435 +#: ../../../CHANGES.rst:489 msgid "" "Read more in \":ref:`Combining filters `\" " "documentation section `#1018 " "`_" msgstr "" -#: ../../../CHANGES.rst:437 +#: ../../../CHANGES.rst:491 msgid "Added following methods to ``Message`` class:" msgstr "" -#: ../../../CHANGES.rst:439 +#: ../../../CHANGES.rst:493 msgid ":code:`Message.forward(...)`" msgstr "" -#: ../../../CHANGES.rst:440 +#: ../../../CHANGES.rst:494 msgid ":code:`Message.edit_media(...)`" msgstr "" -#: ../../../CHANGES.rst:441 +#: ../../../CHANGES.rst:495 msgid ":code:`Message.edit_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:442 +#: ../../../CHANGES.rst:496 msgid ":code:`Message.stop_live_location(...)`" msgstr "" -#: ../../../CHANGES.rst:443 +#: ../../../CHANGES.rst:497 msgid ":code:`Message.pin(...)`" msgstr "" -#: ../../../CHANGES.rst:444 +#: ../../../CHANGES.rst:498 msgid ":code:`Message.unpin()`" msgstr "" -#: ../../../CHANGES.rst:445 +#: ../../../CHANGES.rst:499 msgid "`#1030 `_" msgstr "" -#: ../../../CHANGES.rst:446 +#: ../../../CHANGES.rst:500 msgid "Added following methods to :code:`User` class:" msgstr "" -#: ../../../CHANGES.rst:448 +#: ../../../CHANGES.rst:502 msgid ":code:`User.mention_markdown(...)`" msgstr "" -#: ../../../CHANGES.rst:449 +#: ../../../CHANGES.rst:503 msgid ":code:`User.mention_html(...)`" msgstr "" -#: ../../../CHANGES.rst:450 +#: ../../../CHANGES.rst:504 msgid "`#1049 `_" msgstr "" -#: ../../../CHANGES.rst:451 +#: ../../../CHANGES.rst:505 msgid "" "Added full support of `Bot API 6.3 `_ `#1057 " "`_" msgstr "" -#: ../../../CHANGES.rst:458 +#: ../../../CHANGES.rst:512 msgid "" "Fixed :code:`Message.send_invoice` and :code:`Message.reply_invoice`, " "added missing arguments `#1047 " "`_" msgstr "" -#: ../../../CHANGES.rst:460 +#: ../../../CHANGES.rst:514 msgid "Fixed copy and forward in:" msgstr "" -#: ../../../CHANGES.rst:462 +#: ../../../CHANGES.rst:516 msgid ":code:`Message.answer(...)`" msgstr "" -#: ../../../CHANGES.rst:463 +#: ../../../CHANGES.rst:517 msgid ":code:`Message.copy_to(...)`" msgstr "" -#: ../../../CHANGES.rst:464 +#: ../../../CHANGES.rst:518 msgid "`#1064 `_" msgstr "" -#: ../../../CHANGES.rst:470 +#: ../../../CHANGES.rst:524 msgid "" "Fixed UA translations in index.po `#1017 " "`_" msgstr "" -#: ../../../CHANGES.rst:472 +#: ../../../CHANGES.rst:526 msgid "" "Fix typehints for :code:`Message`, :code:`reply_media_group` and " ":code:`answer_media_group` methods `#1029 " "`_" msgstr "" -#: ../../../CHANGES.rst:474 +#: ../../../CHANGES.rst:528 msgid "" "Removed an old now non-working feature `#1060 " "`_" msgstr "" -#: ../../../CHANGES.rst:481 +#: ../../../CHANGES.rst:535 msgid "" "Enabled testing on Python 3.11 `#1044 " "`_" msgstr "" -#: ../../../CHANGES.rst:483 +#: ../../../CHANGES.rst:537 msgid "" "Added a mandatory dependency :code:`certifi` in due to in some cases on " "systems that doesn't have updated ca-certificates the requests to Bot API" @@ -848,23 +975,23 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:488 +#: ../../../CHANGES.rst:542 msgid "3.0.0b5 (2022-10-02)" msgstr "" -#: ../../../CHANGES.rst:493 +#: ../../../CHANGES.rst:547 msgid "" "Add PyPy support and run tests under PyPy `#985 " "`_" msgstr "" -#: ../../../CHANGES.rst:495 +#: ../../../CHANGES.rst:549 msgid "" "Added message text to aiogram exceptions representation `#988 " "`_" msgstr "" -#: ../../../CHANGES.rst:497 +#: ../../../CHANGES.rst:551 msgid "" "Added warning about using magic filter from `magic_filter` instead of " "`aiogram`'s ones. Is recommended to use `from aiogram import F` instead " @@ -872,61 +999,61 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:500 +#: ../../../CHANGES.rst:554 msgid "" "Added more detailed error when server response can't be deserialized. " "This feature will help to debug unexpected responses from the Server " "`#1014 `_" msgstr "" -#: ../../../CHANGES.rst:507 +#: ../../../CHANGES.rst:561 msgid "" "Reworked error event, introduced " ":class:`aiogram.types.error_event.ErrorEvent` object. `#898 " "`_" msgstr "" -#: ../../../CHANGES.rst:509 +#: ../../../CHANGES.rst:563 msgid "" "Fixed escaping markdown in `aiogram.utils.markdown` module `#903 " "`_" msgstr "" -#: ../../../CHANGES.rst:511 +#: ../../../CHANGES.rst:565 msgid "" "Fixed polling crash when Telegram Bot API raises HTTP 429 status-code. " "`#995 `_" msgstr "" -#: ../../../CHANGES.rst:513 +#: ../../../CHANGES.rst:567 msgid "" "Fixed empty mention in command parsing, now it will be None instead of an" " empty string `#1013 `_" msgstr "" -#: ../../../CHANGES.rst:520 +#: ../../../CHANGES.rst:574 msgid "" "Initialized Docs translation (added Ukrainian language) `#925 " "`_" msgstr "" -#: ../../../CHANGES.rst:527 +#: ../../../CHANGES.rst:581 msgid "" "Removed filters factory as described in corresponding issue. `#942 " "`_" msgstr "" -#: ../../../CHANGES.rst:534 +#: ../../../CHANGES.rst:588 msgid "" "Now Router/Dispatcher accepts only keyword arguments. `#982 " "`_" msgstr "" -#: ../../../CHANGES.rst:539 +#: ../../../CHANGES.rst:593 msgid "3.0.0b4 (2022-08-14)" msgstr "" -#: ../../../CHANGES.rst:544 +#: ../../../CHANGES.rst:598 msgid "" "Add class helper ChatAction for constants that Telegram BotAPI uses in " "sendChatAction request. In my opinion, this will help users and will also" @@ -934,198 +1061,198 @@ msgid "" "\"ChatActions\". `#803 `_" msgstr "" -#: ../../../CHANGES.rst:548 +#: ../../../CHANGES.rst:602 msgid "Added possibility to combine filters or invert result" msgstr "" -#: ../../../CHANGES.rst:550 +#: ../../../CHANGES.rst:604 msgid "Example:" msgstr "" -#: ../../../CHANGES.rst:558 +#: ../../../CHANGES.rst:612 msgid "`#894 `_" msgstr "" -#: ../../../CHANGES.rst:559 +#: ../../../CHANGES.rst:613 msgid "" "Fixed type hints for redis TTL params. `#922 " "`_" msgstr "" -#: ../../../CHANGES.rst:561 +#: ../../../CHANGES.rst:615 msgid "" "Added `full_name` shortcut for `Chat` object `#929 " "`_" msgstr "" -#: ../../../CHANGES.rst:568 +#: ../../../CHANGES.rst:622 msgid "" "Fixed false-positive coercing of Union types in API methods `#901 " "`_" msgstr "" -#: ../../../CHANGES.rst:570 +#: ../../../CHANGES.rst:624 msgid "Added 3 missing content types:" msgstr "" -#: ../../../CHANGES.rst:572 +#: ../../../CHANGES.rst:626 msgid "proximity_alert_triggered" msgstr "" -#: ../../../CHANGES.rst:573 +#: ../../../CHANGES.rst:627 msgid "supergroup_chat_created" msgstr "" -#: ../../../CHANGES.rst:574 +#: ../../../CHANGES.rst:628 msgid "channel_chat_created" msgstr "" -#: ../../../CHANGES.rst:575 +#: ../../../CHANGES.rst:629 msgid "`#906 `_" msgstr "" -#: ../../../CHANGES.rst:576 +#: ../../../CHANGES.rst:630 msgid "" "Fixed the ability to compare the state, now comparison to copy of the " "state will return `True`. `#927 " "`_" msgstr "" -#: ../../../CHANGES.rst:578 +#: ../../../CHANGES.rst:632 msgid "" "Fixed default lock kwargs in RedisEventIsolation. `#972 " "`_" msgstr "" -#: ../../../CHANGES.rst:585 +#: ../../../CHANGES.rst:639 msgid "" "Restrict including routers with strings `#896 " "`_" msgstr "" -#: ../../../CHANGES.rst:587 +#: ../../../CHANGES.rst:641 msgid "" "Changed CommandPatterType to CommandPatternType in " "`aiogram/dispatcher/filters/command.py` `#907 " "`_" msgstr "" -#: ../../../CHANGES.rst:589 +#: ../../../CHANGES.rst:643 msgid "" "Added full support of `Bot API 6.1 `_ `#936 " "`_" msgstr "" -#: ../../../CHANGES.rst:591 +#: ../../../CHANGES.rst:645 msgid "**Breaking!** More flat project structure" msgstr "" -#: ../../../CHANGES.rst:593 +#: ../../../CHANGES.rst:647 msgid "These packages was moved, imports in your code should be fixed:" msgstr "" -#: ../../../CHANGES.rst:595 +#: ../../../CHANGES.rst:649 msgid ":code:`aiogram.dispatcher.filters` -> :code:`aiogram.filters`" msgstr "" -#: ../../../CHANGES.rst:596 +#: ../../../CHANGES.rst:650 msgid ":code:`aiogram.dispatcher.fsm` -> :code:`aiogram.fsm`" msgstr "" -#: ../../../CHANGES.rst:597 +#: ../../../CHANGES.rst:651 msgid ":code:`aiogram.dispatcher.handler` -> :code:`aiogram.handler`" msgstr "" -#: ../../../CHANGES.rst:598 +#: ../../../CHANGES.rst:652 msgid ":code:`aiogram.dispatcher.webhook` -> :code:`aiogram.webhook`" msgstr "" -#: ../../../CHANGES.rst:599 +#: ../../../CHANGES.rst:653 msgid "" ":code:`aiogram.dispatcher.flags/*` -> :code:`aiogram.dispatcher.flags` " "(single module instead of package)" msgstr "" -#: ../../../CHANGES.rst:600 +#: ../../../CHANGES.rst:654 msgid "`#938 `_" msgstr "" -#: ../../../CHANGES.rst:601 +#: ../../../CHANGES.rst:655 msgid "" "Removed deprecated :code:`router._handler` and " ":code:`router.register__handler` methods. `#941 " "`_" msgstr "" -#: ../../../CHANGES.rst:603 +#: ../../../CHANGES.rst:657 msgid "" "Deprecated filters factory. It will be removed in next Beta (3.0b5) `#942" " `_" msgstr "" -#: ../../../CHANGES.rst:605 +#: ../../../CHANGES.rst:659 msgid "" "`MessageEntity` method `get_text` was removed and `extract` was renamed " "to `extract_from` `#944 `_" msgstr "" -#: ../../../CHANGES.rst:607 +#: ../../../CHANGES.rst:661 msgid "" "Added full support of `Bot API 6.2 `_ `#975 " "`_" msgstr "" -#: ../../../CHANGES.rst:612 +#: ../../../CHANGES.rst:666 msgid "3.0.0b3 (2022-04-19)" msgstr "" -#: ../../../CHANGES.rst:617 +#: ../../../CHANGES.rst:671 msgid "" "Added possibility to get command magic result as handler argument `#889 " "`_" msgstr "" -#: ../../../CHANGES.rst:619 +#: ../../../CHANGES.rst:673 msgid "" "Added full support of `Telegram Bot API 6.0 " "`_ `#890 " "`_" msgstr "" -#: ../../../CHANGES.rst:626 +#: ../../../CHANGES.rst:680 msgid "" "Fixed I18n lazy-proxy. Disabled caching. `#839 " "`_" msgstr "" -#: ../../../CHANGES.rst:628 +#: ../../../CHANGES.rst:682 msgid "" "Added parsing of spoiler message entity `#865 " "`_" msgstr "" -#: ../../../CHANGES.rst:630 +#: ../../../CHANGES.rst:684 msgid "" "Fixed default `parse_mode` for `Message.copy_to()` method. `#876 " "`_" msgstr "" -#: ../../../CHANGES.rst:632 +#: ../../../CHANGES.rst:686 msgid "" "Fixed CallbackData factory parsing IntEnum's `#885 " "`_" msgstr "" -#: ../../../CHANGES.rst:639 +#: ../../../CHANGES.rst:693 msgid "" "Added automated check that pull-request adds a changes description to " "**CHANGES** directory `#873 " "`_" msgstr "" -#: ../../../CHANGES.rst:641 +#: ../../../CHANGES.rst:695 msgid "" "Changed :code:`Message.html_text` and :code:`Message.md_text` attributes " "behaviour when message has no text. The empty string will be used instead" @@ -1133,14 +1260,14 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:644 +#: ../../../CHANGES.rst:698 msgid "" "Used `redis-py` instead of `aioredis` package in due to this packages was" " merged into single one `#882 " "`_" msgstr "" -#: ../../../CHANGES.rst:646 +#: ../../../CHANGES.rst:700 msgid "" "Solved common naming problem with middlewares that confusing too much " "developers - now you can't see the `middleware` and `middlewares` " @@ -1149,113 +1276,113 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:653 +#: ../../../CHANGES.rst:707 msgid "3.0.0b2 (2022-02-19)" msgstr "" -#: ../../../CHANGES.rst:658 +#: ../../../CHANGES.rst:712 msgid "" "Added possibility to pass additional arguments into the aiohttp webhook " "handler to use this arguments inside handlers as the same as it possible " "in polling mode. `#785 `_" msgstr "" -#: ../../../CHANGES.rst:661 +#: ../../../CHANGES.rst:715 msgid "" "Added possibility to add handler flags via decorator (like `pytest.mark` " "decorator but `aiogram.flags`) `#836 " "`_" msgstr "" -#: ../../../CHANGES.rst:663 +#: ../../../CHANGES.rst:717 msgid "" "Added :code:`ChatActionSender` utility to automatically sends chat action" " while long process is running." msgstr "" -#: ../../../CHANGES.rst:665 +#: ../../../CHANGES.rst:719 msgid "" "It also can be used as message middleware and can be customized via " ":code:`chat_action` flag. `#837 " "`_" msgstr "" -#: ../../../CHANGES.rst:672 +#: ../../../CHANGES.rst:726 msgid "" "Fixed unexpected behavior of sequences in the StateFilter. `#791 " "`_" msgstr "" -#: ../../../CHANGES.rst:674 +#: ../../../CHANGES.rst:728 msgid "" "Fixed exceptions filters `#827 " "`_" msgstr "" -#: ../../../CHANGES.rst:681 +#: ../../../CHANGES.rst:735 msgid "" "Logger name for processing events is changed to :code:`aiogram.events`. " "`#830 `_" msgstr "" -#: ../../../CHANGES.rst:683 +#: ../../../CHANGES.rst:737 msgid "" "Added full support of Telegram Bot API 5.6 and 5.7 `#835 " "`_" msgstr "" -#: ../../../CHANGES.rst:685 +#: ../../../CHANGES.rst:739 msgid "" "**BREAKING** Events isolation mechanism is moved from FSM storages to " "standalone managers `#838 " "`_" msgstr "" -#: ../../../CHANGES.rst:691 +#: ../../../CHANGES.rst:745 msgid "3.0.0b1 (2021-12-12)" msgstr "" -#: ../../../CHANGES.rst:696 +#: ../../../CHANGES.rst:750 msgid "Added new custom operation for MagicFilter named :code:`as_`" msgstr "" -#: ../../../CHANGES.rst:698 +#: ../../../CHANGES.rst:752 msgid "Now you can use it to get magic filter result as handler argument" msgstr "" -#: ../../../CHANGES.rst:714 +#: ../../../CHANGES.rst:768 msgid "`#759 `_" msgstr "" -#: ../../../CHANGES.rst:720 +#: ../../../CHANGES.rst:774 msgid "" "Fixed: Missing :code:`ChatMemberHandler` import in " ":code:`aiogram/dispatcher/handler` `#751 " "`_" msgstr "" -#: ../../../CHANGES.rst:727 +#: ../../../CHANGES.rst:781 msgid "" "Check :code:`destiny` in case of no :code:`with_destiny` enabled in " "RedisStorage key builder `#776 " "`_" msgstr "" -#: ../../../CHANGES.rst:729 +#: ../../../CHANGES.rst:783 msgid "" "Added full support of `Bot API 5.5 `_ `#777 " "`_" msgstr "" -#: ../../../CHANGES.rst:731 +#: ../../../CHANGES.rst:785 msgid "" "Stop using feature from #336. From now settings of client-session should " "be placed as initializer arguments instead of changing instance " "attributes. `#778 `_" msgstr "" -#: ../../../CHANGES.rst:733 +#: ../../../CHANGES.rst:787 msgid "" "Make TelegramAPIServer files wrapper in local mode bi-directional " "(server-client, client-server) Now you can convert local path to server " @@ -1263,11 +1390,11 @@ msgid "" "`_" msgstr "" -#: ../../../CHANGES.rst:739 +#: ../../../CHANGES.rst:793 msgid "3.0.0a18 (2021-11-10)" msgstr "" -#: ../../../CHANGES.rst:744 +#: ../../../CHANGES.rst:798 msgid "" "Breaking: Changed the signature of the session middlewares Breaking: " "Renamed AiohttpSession.make_request method parameter from call to method " @@ -1275,258 +1402,258 @@ msgid "" "outgoing requests `#716 `_" msgstr "" -#: ../../../CHANGES.rst:748 +#: ../../../CHANGES.rst:802 msgid "" "Improved description of filters resolving error. For example when you try" " to pass wrong type of argument to the filter but don't know why filter " "is not resolved now you can get error like this:" msgstr "" -#: ../../../CHANGES.rst:758 +#: ../../../CHANGES.rst:812 msgid "`#717 `_" msgstr "" -#: ../../../CHANGES.rst:759 +#: ../../../CHANGES.rst:813 msgid "" "**Breaking internal API change** Reworked FSM Storage record keys " "propagation `#723 `_" msgstr "" -#: ../../../CHANGES.rst:762 +#: ../../../CHANGES.rst:816 msgid "" "Implemented new filter named :code:`MagicData(magic_data)` that helps to " "filter event by data from middlewares or other filters" msgstr "" -#: ../../../CHANGES.rst:764 +#: ../../../CHANGES.rst:818 msgid "" "For example your bot is running with argument named :code:`config` that " "contains the application config then you can filter event by value from " "this config:" msgstr "" -#: ../../../CHANGES.rst:770 +#: ../../../CHANGES.rst:824 msgid "`#724 `_" msgstr "" -#: ../../../CHANGES.rst:776 +#: ../../../CHANGES.rst:830 msgid "" "Fixed I18n context inside error handlers `#726 " "`_" msgstr "" -#: ../../../CHANGES.rst:778 +#: ../../../CHANGES.rst:832 msgid "" "Fixed bot session closing before emit shutdown `#734 " "`_" msgstr "" -#: ../../../CHANGES.rst:780 +#: ../../../CHANGES.rst:834 msgid "" "Fixed: bound filter resolving does not require children routers `#736 " "`_" msgstr "" -#: ../../../CHANGES.rst:787 +#: ../../../CHANGES.rst:841 msgid "" "Enabled testing on Python 3.10 Removed `async_lru` dependency (is " "incompatible with Python 3.10) and replaced usage with protected property" " `#719 `_" msgstr "" -#: ../../../CHANGES.rst:790 +#: ../../../CHANGES.rst:844 msgid "" "Converted README.md to README.rst and use it as base file for docs `#725 " "`_" msgstr "" -#: ../../../CHANGES.rst:792 +#: ../../../CHANGES.rst:846 msgid "Rework filters resolving:" msgstr "" -#: ../../../CHANGES.rst:794 +#: ../../../CHANGES.rst:848 msgid "Automatically apply Bound Filters with default values to handlers" msgstr "" -#: ../../../CHANGES.rst:795 +#: ../../../CHANGES.rst:849 msgid "Fix data transfer from parent to included routers filters" msgstr "" -#: ../../../CHANGES.rst:796 +#: ../../../CHANGES.rst:850 msgid "`#727 `_" msgstr "" -#: ../../../CHANGES.rst:797 +#: ../../../CHANGES.rst:851 msgid "" "Added full support of Bot API 5.4 https://core.telegram.org/bots/api-" "changelog#november-5-2021 `#744 " "`_" msgstr "" -#: ../../../CHANGES.rst:803 +#: ../../../CHANGES.rst:857 msgid "3.0.0a17 (2021-09-24)" msgstr "" -#: ../../../CHANGES.rst:808 +#: ../../../CHANGES.rst:862 msgid "" "Added :code:`html_text` and :code:`md_text` to Message object `#708 " "`_" msgstr "" -#: ../../../CHANGES.rst:810 +#: ../../../CHANGES.rst:864 msgid "" "Refactored I18n, added context managers for I18n engine and current " "locale `#709 `_" msgstr "" -#: ../../../CHANGES.rst:815 +#: ../../../CHANGES.rst:869 msgid "3.0.0a16 (2021-09-22)" msgstr "" -#: ../../../CHANGES.rst:820 +#: ../../../CHANGES.rst:874 msgid "Added support of local Bot API server files downloading" msgstr "" -#: ../../../CHANGES.rst:822 +#: ../../../CHANGES.rst:876 msgid "" "When Local API is enabled files can be downloaded via " "`bot.download`/`bot.download_file` methods. `#698 " "`_" msgstr "" -#: ../../../CHANGES.rst:824 +#: ../../../CHANGES.rst:878 msgid "" "Implemented I18n & L10n support `#701 " "`_" msgstr "" -#: ../../../CHANGES.rst:831 +#: ../../../CHANGES.rst:885 msgid "" "Covered by tests and docs KeyboardBuilder util `#699 " "`_" msgstr "" -#: ../../../CHANGES.rst:833 +#: ../../../CHANGES.rst:887 msgid "**Breaking!!!**. Refactored and renamed exceptions." msgstr "" -#: ../../../CHANGES.rst:835 +#: ../../../CHANGES.rst:889 msgid "" "Exceptions module was moved from :code:`aiogram.utils.exceptions` to " ":code:`aiogram.exceptions`" msgstr "" -#: ../../../CHANGES.rst:836 +#: ../../../CHANGES.rst:890 msgid "Added prefix `Telegram` for all error classes" msgstr "" -#: ../../../CHANGES.rst:837 +#: ../../../CHANGES.rst:891 msgid "`#700 `_" msgstr "" -#: ../../../CHANGES.rst:838 +#: ../../../CHANGES.rst:892 msgid "" "Replaced all :code:`pragma: no cover` marks via global " ":code:`.coveragerc` config `#702 " "`_" msgstr "" -#: ../../../CHANGES.rst:840 +#: ../../../CHANGES.rst:894 msgid "Updated dependencies." msgstr "" -#: ../../../CHANGES.rst:842 +#: ../../../CHANGES.rst:896 msgid "" "**Breaking for framework developers** Now all optional dependencies " "should be installed as extra: `poetry install -E fast -E redis -E proxy " "-E i18n -E docs` `#703 `_" msgstr "" -#: ../../../CHANGES.rst:848 +#: ../../../CHANGES.rst:902 msgid "3.0.0a15 (2021-09-10)" msgstr "" -#: ../../../CHANGES.rst:853 +#: ../../../CHANGES.rst:907 msgid "" "Ability to iterate over all states in StatesGroup. Aiogram already had in" " check for states group so this is relative feature. `#666 " "`_" msgstr "" -#: ../../../CHANGES.rst:861 +#: ../../../CHANGES.rst:915 msgid "" "Fixed incorrect type checking in the " ":class:`aiogram.utils.keyboard.KeyboardBuilder` `#674 " "`_" msgstr "" -#: ../../../CHANGES.rst:868 +#: ../../../CHANGES.rst:922 msgid "" "Disable ContentType filter by default `#668 " "`_" msgstr "" -#: ../../../CHANGES.rst:870 +#: ../../../CHANGES.rst:924 msgid "" "Moved update type detection from Dispatcher to Update object `#669 " "`_" msgstr "" -#: ../../../CHANGES.rst:872 +#: ../../../CHANGES.rst:926 msgid "" "Updated **pre-commit** config `#681 " "`_" msgstr "" -#: ../../../CHANGES.rst:874 +#: ../../../CHANGES.rst:928 msgid "" "Reworked **handlers_in_use** util. Function moved to Router as method " "**.resolve_used_update_types()** `#682 " "`_" msgstr "" -#: ../../../CHANGES.rst:879 +#: ../../../CHANGES.rst:933 msgid "3.0.0a14 (2021-08-17)" msgstr "" -#: ../../../CHANGES.rst:884 +#: ../../../CHANGES.rst:938 msgid "" "add aliases for edit/delete reply markup to Message `#662 " "`_" msgstr "" -#: ../../../CHANGES.rst:886 +#: ../../../CHANGES.rst:940 msgid "" "Reworked outer middleware chain. Prevent to call many times the outer " "middleware for each nested router `#664 " "`_" msgstr "" -#: ../../../CHANGES.rst:893 +#: ../../../CHANGES.rst:947 msgid "" "Prepare parse mode for InputMessageContent in AnswerInlineQuery method " "`#660 `_" msgstr "" -#: ../../../CHANGES.rst:900 +#: ../../../CHANGES.rst:954 msgid "" "Added integration with :code:`towncrier` `#602 " "`_" msgstr "" -#: ../../../CHANGES.rst:907 +#: ../../../CHANGES.rst:961 msgid "" "Added `.editorconfig` `#650 " "`_" msgstr "" -#: ../../../CHANGES.rst:909 +#: ../../../CHANGES.rst:963 msgid "" "Redis storage speedup globals `#651 " "`_" msgstr "" -#: ../../../CHANGES.rst:911 +#: ../../../CHANGES.rst:965 msgid "" "add allow_sending_without_reply param to Message reply aliases `#663 " "`_" @@ -3044,119 +3171,3 @@ msgstr "" #: ../../../HISTORY.rst:497 msgid "0.1 (2017-06-03)" msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-01-07)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-02-12)" -#~ msgstr "" - -#~ msgid "" -#~ ":class:`aiogram.enums.chat_action.ChatActions`, " -#~ ":class:`aiogram.enums.chat_member_status.ChatMemberStatus`, " -#~ ":class:`aiogram.enums.chat_type.ChatType`, " -#~ ":class:`aiogram.enums.content_type.ContentType`, " -#~ ":class:`aiogram.enums.dice_emoji.DiceEmoji`, " -#~ ":class:`aiogram.enums.inline_query_result_type.InlineQueryResultType`," -#~ " :class:`aiogram.enums.input_media_type.InputMediaType`, " -#~ ":class:`aiogram.enums.mask_position_point.MaskPositionPoint`, " -#~ ":class:`aiogram.enums.menu_button_type.MenuButtonType`, " -#~ ":class:`aiogram.enums.message_entity_type.MessageEntityType`, " -#~ ":class:`aiogram.enums.parse_mode.ParseMode`, " -#~ ":class:`aiogram.enums.poll_type.PollType`, " -#~ ":class:`aiogram.enums.sticker_type.StickerType`, " -#~ ":class:`aiogram.enums.topic_icon_color.TopicIconColor`, " -#~ ":class:`aiogram.enums.update_type.UpdateType`," -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-03-11)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-02)" -#~ msgstr "" - -#~ msgid "" -#~ "If router does not support custom " -#~ "event it does not break and passes" -#~ " it to included routers `#1147 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "If you have implemented you own " -#~ "storages you should extend record key" -#~ " generation with new one attribute -" -#~ " `thread_id`" -#~ msgstr "" - -#~ msgid "" -#~ "Added X-Telegram-Bot-Api-Secret-Token" -#~ " header check `#1173 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added possibility to pass custom headers" -#~ " to URLInputFile object `#1191 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Change type of result in " -#~ "InlineQueryResult enum for " -#~ "`InlineQueryResultCachedMpeg4Gif` and " -#~ "`InlineQueryResultMpeg4Gif` to more correct " -#~ "according to documentation." -#~ msgstr "" - -#~ msgid "" -#~ "Change regexp for entities parsing to" -#~ " more correct (`InlineQueryResultType.yml`). " -#~ "`#1146 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Fixed signature of startup/shutdown events " -#~ "to include the **dispatcher.workflow_data as" -#~ " the handler arguments. `#1155 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added missing FORUM_TOPIC_EDITED value to " -#~ "content_type property `#1160 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Fixed compatibility with Python 3.8-3.9 " -#~ "`#1162 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Changed small grammar typos for " -#~ "`upload_file` `#1133 " -#~ "`_" -#~ msgstr "" - -#~ msgid "" -#~ "Added global defaults `disable_web_page_preview` " -#~ "and `protect_content` in addition to " -#~ "`parse_mode` to the Bot instance, " -#~ "reworked internal request builder mechanism." -#~ " `#1142 `_" -#~ msgstr "" - -#~ msgid "" -#~ "Be careful, not all libraries is " -#~ "already updated to using V2 (for " -#~ "example at the time, when this " -#~ "warning was added FastAPI still not " -#~ "support V2)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-07-30)" -#~ msgstr "" - -#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-08-06)" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/message.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/message.po index 0b0feb84..bae24729 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/message.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/message.po @@ -5,17 +5,16 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: 2022-12-11 22:52+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.2.2\n" +"Generated-By: Babel 2.12.1\n" #: ../../dispatcher/class_based_handlers/message.rst:3 msgid "MessageHandler" @@ -34,12 +33,13 @@ msgid "Extension" msgstr "Розширення" #: ../../dispatcher/class_based_handlers/message.rst:24 +#, fuzzy msgid "" -"This base handler is subclass of [BaseHandler](basics.md#basehandler) " +"This base handler is subclass of :ref:`BaseHandler ` " "with some extensions:" msgstr "" -"Цей базовий обробник є підкласом [BaseHandler](basics.md#basehandler) " -"з деякими розширеннями:" +"Цей базовий обробник є підкласом [BaseHandler](basics.md#basehandler) з " +"деякими розширеннями:" #: ../../dispatcher/class_based_handlers/message.rst:26 msgid ":code:`self.chat` is alias for :code:`self.event.chat`" @@ -47,5 +47,4 @@ msgstr ":code:`self.chat` це псевдонім для :code:`self.event.chat` #: ../../dispatcher/class_based_handlers/message.rst:27 msgid ":code:`self.from_user` is alias for :code:`self.event.from_user`" -msgstr "" -":code:`self.from_user` це псевдонім для :code:`self.event.from_user`" +msgstr ":code:`self.from_user` це псевдонім для :code:`self.event.from_user`" diff --git a/docs/locale/uk_UA/LC_MESSAGES/index.po b/docs/locale/uk_UA/LC_MESSAGES/index.po index d6003bba..638e457c 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/index.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-26 23:17+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -109,7 +109,7 @@ msgstr "Працює з `PyPy `_" #: ../../../README.rst:55 #, fuzzy msgid "" -"Supports `Telegram Bot API 6.8 `_ and" +"Supports `Telegram Bot API 6.9 `_ and" " gets fast updates to the latest versions of the Bot API" msgstr "" "Підтримує `Telegram Bot API 6.3 `_ та" diff --git a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po index 6a8ef6be..66a4e4b9 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po +++ b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po @@ -5,20 +5,19 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-14 18:12+0300\n" +"POT-Creation-Date: 2023-10-08 19:04+0300\n" "PO-Revision-Date: 2023-09-14 18:34+0300\n" "Last-Translator: \n" -"Language-Team: \n" "Language: uk_UA\n" +"Language-Team: \n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 " -"&& (n%100<10 || n%100>=20) ? 1 : 2);\n" "Generated-By: Babel 2.12.1\n" -"X-Generator: Poedit 3.3.2\n" #: ../../migration_2_to_3.rst:3 msgid "Migration FAQ (2.x -> 3.0)" @@ -31,40 +30,41 @@ msgstr "Цей посібник все ще в розробці." #: ../../migration_2_to_3.rst:9 msgid "" "This version introduces numerous breaking changes and architectural " -"improvements. It helps reduce the count of global variables in your code, " -"provides useful mechanisms to modularize your code, and enables the creation of " -"shareable modules via packages on PyPI. It also makes middlewares and filters " -"more controllable, among other improvements." +"improvements. It helps reduce the count of global variables in your code," +" provides useful mechanisms to modularize your code, and enables the " +"creation of shareable modules via packages on PyPI. It also makes " +"middlewares and filters more controllable, among other improvements." msgstr "" -"Ця версія містить численні суттєві зміни та архітектурні покращення. Вона " -"допомагає зменшити кількість глобальних змінних у вашому коді, надає корисні " -"механізми для модуляризації вашого коду та дозволяє створювати спільні модулі " -"за допомогою пакетів на PyPI. Крім того, серед інших покращень, він робить " -"проміжне програмне забезпечення (мідлварі) та фільтри більш контрольованими." +"Ця версія містить численні суттєві зміни та архітектурні покращення. Вона" +" допомагає зменшити кількість глобальних змінних у вашому коді, надає " +"корисні механізми для модуляризації вашого коду та дозволяє створювати " +"спільні модулі за допомогою пакетів на PyPI. Крім того, серед інших " +"покращень, він робить проміжне програмне забезпечення (мідлварі) та " +"фільтри більш контрольованими." #: ../../migration_2_to_3.rst:15 msgid "" -"On this page, you can read about the changes made in relation to the last " -"stable 2.x version." +"On this page, you can read about the changes made in relation to the last" +" stable 2.x version." msgstr "" -"На цій сторінці ви можете прочитати про зміни, внесені в останню стабільну " -"версію 2.x." +"На цій сторінці ви можете прочитати про зміни, внесені в останню " +"стабільну версію 2.x." #: ../../migration_2_to_3.rst:19 msgid "" -"This page more closely resembles a detailed changelog than a migration guide, " -"but it will be updated in the future." +"This page more closely resembles a detailed changelog than a migration " +"guide, but it will be updated in the future." msgstr "" -"Ця сторінка більше нагадує детальний список змін, ніж посібник з міграції, але " -"вона буде оновлюватися в майбутньому." +"Ця сторінка більше нагадує детальний список змін, ніж посібник з " +"міграції, але вона буде оновлюватися в майбутньому." #: ../../migration_2_to_3.rst:22 msgid "" "Feel free to contribute to this page, if you find something that is not " "mentioned here." msgstr "" -"Не соромтеся зробити свій внесок у цю сторінку, якщо ви знайшли щось, про що " -"тут не згадано." +"Не соромтеся зробити свій внесок у цю сторінку, якщо ви знайшли щось, про" +" що тут не згадано." #: ../../migration_2_to_3.rst:26 msgid "Dispatcher" @@ -73,27 +73,30 @@ msgstr "" #: ../../migration_2_to_3.rst:28 msgid "" "The :class:`Dispatcher` class no longer accepts a `Bot` instance in its " -"initializer. Instead, the `Bot` instance should be passed to the dispatcher " -"only for starting polling or handling events from webhooks. This approach also " -"allows for the use of multiple bot instances simultaneously (\"multibot\")." +"initializer. Instead, the `Bot` instance should be passed to the " +"dispatcher only for starting polling or handling events from webhooks. " +"This approach also allows for the use of multiple bot instances " +"simultaneously (\"multibot\")." msgstr "" "Клас :class:`Dispatcher` більше не приймає екземпляр `Bot` у своєму " -"ініціалізаторі. Замість цього екземпляр `Bot` слід передавати диспетчеру тільки " -"для запуску полінгу або обробки подій з вебхуків. Такий підхід також дозволяє " -"використовувати декілька екземплярів бота одночасно (\"мультибот\")." +"ініціалізаторі. Замість цього екземпляр `Bot` слід передавати диспетчеру " +"тільки для запуску полінгу або обробки подій з вебхуків. Такий підхід " +"також дозволяє використовувати декілька екземплярів бота одночасно " +"(\"мультибот\")." #: ../../migration_2_to_3.rst:32 msgid "" -":class:`Dispatcher` now can be extended with another Dispatcher-like thing " -"named :class:`Router` (:ref:`Read more » `)." +":class:`Dispatcher` now can be extended with another Dispatcher-like " +"thing named :class:`Router` (:ref:`Read more » `)." msgstr "" -"Клас :class:`Dispatcher` тепер можна розширити ще одним об'єктом на кшталт " -"диспетчера з назвою :class:`Router` (:ref:`Детальніше » `)." +"Клас :class:`Dispatcher` тепер можна розширити ще одним об'єктом на " +"кшталт диспетчера з назвою :class:`Router` (:ref:`Детальніше » `)." #: ../../migration_2_to_3.rst:34 msgid "" -"With routes, you can easily modularize your code and potentially share these " -"modules between projects." +"With routes, you can easily modularize your code and potentially share " +"these modules between projects." msgstr "" "За допомогою роутерів ви можете легко модулювати свій код і потенційно " "перевикористовувати ці модулі між проектами." @@ -103,52 +106,54 @@ msgid "" "Removed the **_handler** suffix from all event handler decorators and " "registering methods. (:ref:`Read more » `)" msgstr "" -"Видалено суфікс **_handler** з усіх декораторів обробників подій та методів " -"реєстрації. (:ref:`Детальніше » `)" +"Видалено суфікс **_handler** з усіх декораторів обробників подій та " +"методів реєстрації. (:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:37 +#, fuzzy msgid "" -"The Executor has been entirely removed; you can now use the Dispatcher directly " -"to start polling or handle webhooks." +"The Executor has been entirely removed; you can now use the Dispatcher " +"directly to start poll the API or handle webhooks from it." msgstr "" -"Executor було повністю вилучено; тепер ви можете використовувати Dispatcher " -"безпосередньо для запуску полінгу або обробки вебхуків." +"Executor було повністю вилучено; тепер ви можете використовувати " +"Dispatcher безпосередньо для запуску полінгу або обробки вебхуків." #: ../../migration_2_to_3.rst:38 msgid "" -"The throttling method has been completely removed; you can now use middlewares " -"to control the execution context and implement any throttling mechanism you " -"desire." +"The throttling method has been completely removed; you can now use " +"middlewares to control the execution context and implement any throttling" +" mechanism you desire." msgstr "" "Метод дроселювання (Throttling) повністю вилучено; тепер ви можете " -"використовувати проміжне програмне забезпечення (middleware) для керування " -"контекстом виконання та реалізовувати будь-який механізм дроселювання за вашим " -"бажанням." +"використовувати проміжне програмне забезпечення (middleware) для " +"керування контекстом виконання та реалізовувати будь-який механізм " +"дроселювання за вашим бажанням." #: ../../migration_2_to_3.rst:40 msgid "" -"Removed global context variables from the API types, Bot and Dispatcher object, " -"From now on, if you want to access the current bot instance within handlers or " -"filters, you should accept the argument :code:`bot: Bot` and use it instead of :" -"code:`Bot.get_current()`. In middlewares, it can be accessed via :code:" -"`data[\"bot\"]`." +"Removed global context variables from the API types, Bot and Dispatcher " +"object, From now on, if you want to access the current bot instance " +"within handlers or filters, you should accept the argument :code:`bot: " +"Bot` and use it instead of :code:`Bot.get_current()`. In middlewares, it " +"can be accessed via :code:`data[\"bot\"]`." msgstr "" -"Вилучено глобальні контекстні змінні з типів API, об'єктів Bot та Dispatcher, " -"Відтепер, якщо ви хочете отримати доступ до поточного екземпляру бота в " -"обробниках або фільтрах, ви повинні приймати аргумент :code:`bot: Bot` і " -"використовувати його замість :code:`Bot.get_current()`. У проміжному " -"програмному забезпеченні (middleware) доступ до нього можна отримати через :" -"code:`data[\"bot\"]`." +"Вилучено глобальні контекстні змінні з типів API, об'єктів Bot та " +"Dispatcher, Відтепер, якщо ви хочете отримати доступ до поточного " +"екземпляру бота в обробниках або фільтрах, ви повинні приймати аргумент " +":code:`bot: Bot` і використовувати його замість " +":code:`Bot.get_current()`. У проміжному програмному забезпеченні " +"(middleware) доступ до нього можна отримати через :code:`data[\"bot\"]`." #: ../../migration_2_to_3.rst:44 msgid "" -"To skip pending updates, you should now call the :class:`aiogram.methods." -"delete_webhook.DeleteWebhook` method directly, rather than passing :code:" -"`skip_updates=True` to the start polling method." +"To skip pending updates, you should now call the " +":class:`aiogram.methods.delete_webhook.DeleteWebhook` method directly, " +"rather than passing :code:`skip_updates=True` to the start polling " +"method." msgstr "" -"Щоб пропустити очікувані оновлення, тепер вам слід викликати метод :class:" -"`aiogram.methods.delete_webhook.DeleteWebhook` безпосередньо, а не передавати :" -"code:`skip_updates=True` до методу запуску полінгу." +"Щоб пропустити очікувані оновлення, тепер вам слід викликати метод " +":class:`aiogram.methods.delete_webhook.DeleteWebhook` безпосередньо, а не" +" передавати :code:`skip_updates=True` до методу запуску полінгу." #: ../../migration_2_to_3.rst:49 msgid "Filtering events" @@ -156,64 +161,67 @@ msgstr "Фільтрація подій" #: ../../migration_2_to_3.rst:51 msgid "" -"Keyword filters can no longer be used; use filters explicitly. (`Read more » " -"`_)" +"Keyword filters can no longer be used; use filters explicitly. (`Read " +"more » `_)" msgstr "" -"Фільтри за ключовими словами більше не можна використовувати; використовуйте " -"фільтри явно. (`Детальніше » `_)" +"Фільтри за ключовими словами більше не можна використовувати; " +"використовуйте фільтри явно. (`Детальніше » " +"`_)" #: ../../migration_2_to_3.rst:52 msgid "" "Due to the removal of keyword filters, all previously enabled-by-default " -"filters (such as state and content_type) are now disabled. You must specify " -"them explicitly if you wish to use them. For example instead of using :code:" -"`@dp.message_handler(content_types=ContentType.PHOTO)` you should use :code:" -"`@router.message(F.photo)`" +"filters (such as state and content_type) are now disabled. You must " +"specify them explicitly if you wish to use them. For example instead of " +"using :code:`@dp.message_handler(content_types=ContentType.PHOTO)` you " +"should use :code:`@router.message(F.photo)`" msgstr "" -"У зв'язку з вилученням keyword фільтрів, всі раніше ввімкнені за замовчуванням " -"фільтри (такі як state і content_type) тепер вимкнено. Якщо ви бажаєте їх " -"використовувати, ви повинні вказати їх явно. Наприклад, замість :code:`@dp." -"message_handler(content_types=ContentType.PHOTO)` слід використовувати :code:" -"`@router.message(F.photo)`." +"У зв'язку з вилученням keyword фільтрів, всі раніше ввімкнені за " +"замовчуванням фільтри (такі як state і content_type) тепер вимкнено. Якщо" +" ви бажаєте їх використовувати, ви повинні вказати їх явно. Наприклад, " +"замість :code:`@dp.message_handler(content_types=ContentType.PHOTO)` слід" +" використовувати :code:`@router.message(F.photo)`." #: ../../migration_2_to_3.rst:57 +#, fuzzy msgid "" -"Most common filters have been replaced by the \"magic filter.\" (:ref:`Read " -"more » `)" +"Most common filters have been replaced with the \"magic filter.\" " +"(:ref:`Read more » `)" msgstr "" -"Більшість звичайних фільтрів було замінено на \"магічний фільтр\". (:ref:`Детальніше " -"далі » `)" +"Більшість звичайних фільтрів було замінено на \"магічний фільтр\". " +"(:ref:`Детальніше далі » `)" #: ../../migration_2_to_3.rst:58 msgid "" -"By default, the message handler now receives any content type. If you want a " -"specific one, simply add the appropriate filters (Magic or any other)." +"By default, the message handler now receives any content type. If you " +"want a specific one, simply add the appropriate filters (Magic or any " +"other)." msgstr "" -"За замовчуванням обробник повідомлень тепер отримує будь-який тип вмісту. Якщо " -"вам потрібен певний тип, просто додайте відповідні фільтри (Magic або будь-який " -"інший)." +"За замовчуванням обробник повідомлень тепер отримує будь-який тип вмісту." +" Якщо вам потрібен певний тип, просто додайте відповідні фільтри (Magic " +"або будь-який інший)." #: ../../migration_2_to_3.rst:60 msgid "" -"The state filter is no longer enabled by default. This means that if you used :" -"code:`state=\"*\"` in v2, you should not pass any state filter in v3. " -"Conversely, if the state was not specified in v2, you will now need to specify " -"it in v3." +"The state filter is no longer enabled by default. This means that if you " +"used :code:`state=\"*\"` in v2, you should not pass any state filter in " +"v3. Conversely, if the state was not specified in v2, you will now need " +"to specify it in v3." msgstr "" -"Фільтр стану більше не вмикається за замовчуванням. Це означає, що якщо ви " -"використовували :code:`state=\"*\"` у v2, вам не слід передавати фільтр стану у " -"v3. І навпаки, якщо стан не було вказано у v2, вам потрібно буде вказати його у " -"v3." +"Фільтр стану більше не вмикається за замовчуванням. Це означає, що якщо " +"ви використовували :code:`state=\"*\"` у v2, вам не слід передавати " +"фільтр стану у v3. І навпаки, якщо стан не було вказано у v2, вам " +"потрібно буде вказати його у v3." #: ../../migration_2_to_3.rst:63 msgid "" -"Added the possibility to register global filters for each router, which helps " -"to reduce code repetition and provides an easier way to control the purpose of " -"each router." +"Added the possibility to register global filters for each router, which " +"helps to reduce code repetition and provides an easier way to control the" +" purpose of each router." msgstr "" "Додано можливість реєстрації глобальних фільтрів для кожного роутера, що " -"допомагає зменшити повторення коду і полегшує контроль призначення кожного " -"роутера." +"допомагає зменшити повторення коду і полегшує контроль призначення " +"кожного роутера." #: ../../migration_2_to_3.rst:69 msgid "Bot API" @@ -221,46 +229,49 @@ msgstr "" #: ../../migration_2_to_3.rst:71 msgid "" -"All API methods are now classes with validation, implemented via `pydantic " -"`. These API calls are also available as methods in " -"the Bot class." +"All API methods are now classes with validation, implemented via " +"`pydantic `. These API calls are also " +"available as methods in the Bot class." msgstr "" -"Всі методи API тепер є класами з валідацією, реалізованими через `pydantic " -"`. Ці виклики API також доступні як методи в класі " -"Bot." +"Всі методи API тепер є класами з валідацією, реалізованими через " +"`pydantic `. Ці виклики API також доступні як" +" методи в класі Bot." #: ../../migration_2_to_3.rst:74 msgid "" -"More pre-defined Enums have been added and moved to the `aiogram.enums` sub-" -"package. For example, the chat type enum is now :class:`aiogram.enums.ChatType` " -"instead of :class:`aiogram.types.chat.ChatType`." +"More pre-defined Enums have been added and moved to the `aiogram.enums` " +"sub-package. For example, the chat type enum is now " +":class:`aiogram.enums.ChatType` instead of " +":class:`aiogram.types.chat.ChatType`." msgstr "" "Додано більше попередньо визначених enums та переміщено їх до підпакету " -"`aiogram.enums`. Наприклад, enum типу чату тепер має вигляд :class:`aiogram." -"enums.ChatType` замість :class:`aiogram.types.chat.ChatType`." +"`aiogram.enums`. Наприклад, enum типу чату тепер має вигляд " +":class:`aiogram.enums.ChatType` замість " +":class:`aiogram.types.chat.ChatType`." #: ../../migration_2_to_3.rst:76 msgid "" -"The HTTP client session has been separated into a container that can be reused " -"across different Bot instances within the application." +"The HTTP client session has been separated into a container that can be " +"reused across different Bot instances within the application." msgstr "" "Клієнтська сесія HTTP була відокремлена в контейнер, який можна повторно " "використовувати для різних екземплярів бота в додатку." #: ../../migration_2_to_3.rst:78 msgid "" -"API Exceptions are no longer classified by specific messages, as Telegram has " -"no documented error codes. However, all errors are classified by HTTP status " -"codes, and for each method, only one type of error can be associated with a " -"given code. Therefore, in most cases, you should check only the error type (by " -"status code) without inspecting the error message." +"API Exceptions are no longer classified by specific messages, as Telegram" +" has no documented error codes. However, all errors are classified by " +"HTTP status codes, and for each method, only one type of error can be " +"associated with a given code. Therefore, in most cases, you should check " +"only the error type (by status code) without inspecting the error " +"message." msgstr "" -"Виключення API більше не класифікуються за конкретними повідомленнями, оскільки " -"Telegram не має задокументованих кодів помилок. Проте всі помилки " -"класифікуються за кодами статусу HTTP, і для кожного методу з певним кодом може " -"бути пов'язаний лише один тип помилки. Тому в більшості випадків слід " -"перевіряти лише тип помилки (за кодом статусу), не перевіряючи повідомлення про " -"помилку." +"Виключення API більше не класифікуються за конкретними повідомленнями, " +"оскільки Telegram не має задокументованих кодів помилок. Проте всі " +"помилки класифікуються за кодами статусу HTTP, і для кожного методу з " +"певним кодом може бути пов'язаний лише один тип помилки. Тому в більшості" +" випадків слід перевіряти лише тип помилки (за кодом статусу), не " +"перевіряючи повідомлення про помилку." #: ../../migration_2_to_3.rst:88 msgid "Middlewares" @@ -268,33 +279,34 @@ msgstr "Проміжне ПО (Middlewares)" #: ../../migration_2_to_3.rst:90 msgid "" -"Middlewares can now control an execution context, e.g., using context managers. " -"(:ref:`Read more » `)" +"Middlewares can now control an execution context, e.g., using context " +"managers. (:ref:`Read more » `)" msgstr "" -"Проміжне програмне забезпечення тепер може керувати контекстом виконання, " -"наприклад, за допомогою менеджерів контексту. (:ref:`Детальніше » " +"Проміжне програмне забезпечення тепер може керувати контекстом виконання," +" наприклад, за допомогою менеджерів контексту. (:ref:`Детальніше » " "`)" #: ../../migration_2_to_3.rst:92 msgid "" -"All contextual data is now shared end-to-end between middlewares, filters, and " -"handlers. For example now you can easily pass some data into context inside " -"middleware and get it in the filters layer as the same way as in the handlers " -"via keyword arguments." +"All contextual data is now shared end-to-end between middlewares, " +"filters, and handlers. For example now you can easily pass some data into" +" context inside middleware and get it in the filters layer as the same " +"way as in the handlers via keyword arguments." msgstr "" -"Всі контекстні дані тепер наскрізно використовуються між проміжним програмним " -"забезпеченням, фільтрами та обробниками. Наприклад, тепер ви можете легко " -"передати деякі дані в контекст у проміжному програмному забезпеченні і отримати " -"їх у шарі фільтрів так само, як і в обробниках через аргументи ключових слів." +"Всі контекстні дані тепер наскрізно використовуються між проміжним " +"програмним забезпеченням, фільтрами та обробниками. Наприклад, тепер ви " +"можете легко передати деякі дані в контекст у проміжному програмному " +"забезпеченні і отримати їх у шарі фільтрів так само, як і в обробниках " +"через аргументи ключових слів." #: ../../migration_2_to_3.rst:95 msgid "" -"Added a mechanism named **flags** that helps customize handler behavior in " -"conjunction with middlewares. (:ref:`Read more » `)" +"Added a mechanism named **flags** that helps customize handler behavior " +"in conjunction with middlewares. (:ref:`Read more » `)" msgstr "" -"Додано механізм з назвою **flags**, який допомагає налаштовувати поведінку " -"обробника у поєднанні з проміжним програмним забезпеченням. (:ref:`Детальніше " -"про » `)" +"Додано механізм з назвою **flags**, який допомагає налаштовувати " +"поведінку обробника у поєднанні з проміжним програмним забезпеченням. " +"(:ref:`Детальніше про » `)" #: ../../migration_2_to_3.rst:100 msgid "Keyboard Markup" @@ -302,17 +314,20 @@ msgstr "Розмітка клавіатури" #: ../../migration_2_to_3.rst:102 msgid "" -"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` and :" -"class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` no longer have " -"methods for extension, instead you have to use markup builders :class:`aiogram." -"utils.keyboard.ReplyKeyboardBuilder` and :class:`aiogram.utils.keyboard." -"KeyboardBuilder` respectively (:ref:`Read more » `)" +"Now :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " +"and :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` no " +"longer have methods for extension, instead you have to use markup " +"builders :class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` and " +":class:`aiogram.utils.keyboard.KeyboardBuilder` respectively (:ref:`Read " +"more » `)" msgstr "" -"Тепер :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` та :" -"class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` більше не мають " -"методів для розширення, натомість вам слід використовувати будівники розмітки :" -"class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` та :class:`aiogram.utils.keyboard.InlineKeyboardBuilder` " -"відповідно (:ref:`Детальніше » `)" +"Тепер :class:`aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup` " +"та :class:`aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup` " +"більше не мають методів для розширення, натомість вам слід " +"використовувати будівники розмітки " +":class:`aiogram.utils.keyboard.ReplyKeyboardBuilder` та " +":class:`aiogram.utils.keyboard.InlineKeyboardBuilder` відповідно " +"(:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:110 msgid "Callbacks data" @@ -320,12 +335,13 @@ msgstr "" #: ../../migration_2_to_3.rst:112 msgid "" -"The callback data factory is now strictly typed using `pydantic `_ models. (:ref:`Read more » `)" -msgstr "" -"Фабрику даних зворотного виклику тепер строго типізовано за допомогою моделей " -"`pydantic `_. (:ref:`Детальніше » `_ models. (:ref:`Read more » `)" +msgstr "" +"Фабрику даних зворотного виклику тепер строго типізовано за допомогою " +"моделей `pydantic `_. (:ref:`Детальніше » " +"`)" #: ../../migration_2_to_3.rst:117 msgid "Finite State machine" @@ -333,17 +349,18 @@ msgstr "Скінченний автомат" #: ../../migration_2_to_3.rst:119 msgid "" -"State filters will no longer be automatically added to all handlers; you will " -"need to specify the state if you want to use it." +"State filters will no longer be automatically added to all handlers; you " +"will need to specify the state if you want to use it." msgstr "" -"Фільтри станів більше не будуть автоматично додаватися до всіх обробників; вам " -"потрібно буде вказати стан, якщо ви хочете його використати." +"Фільтри станів більше не будуть автоматично додаватися до всіх " +"обробників; вам потрібно буде вказати стан, якщо ви хочете його " +"використати." #: ../../migration_2_to_3.rst:121 msgid "" -"Added the possibility to change the FSM strategy. For example, if you want to " -"control the state for each user based on chat topics rather than the user in a " -"chat, you can specify this in the Dispatcher." +"Added the possibility to change the FSM strategy. For example, if you " +"want to control the state for each user based on chat topics rather than " +"the user in a chat, you can specify this in the Dispatcher." msgstr "" "Додано можливість змінювати стратегію FSM. Наприклад, якщо ви хочете " "контролювати стан для кожного користувача на основі топіків чату, а не " @@ -351,28 +368,32 @@ msgstr "" #: ../../migration_2_to_3.rst:124 msgid "" -"Now :class:`aiogram.fsm.state.State` and :class:`aiogram.fsm.state.StateGroup` " -"don't have helper methods like :code:`.set()`, :code:`.next()`, etc." +"Now :class:`aiogram.fsm.state.State` and " +":class:`aiogram.fsm.state.StateGroup` don't have helper methods like " +":code:`.set()`, :code:`.next()`, etc." msgstr "" -"Тепер :class:`aiogram.fsm.state.State` та :class:`aiogram.fsm.state.StateGroup` " -"не мають допоміжних методів, таких як :code:`.set()`, :code:`.next()` тощо." +"Тепер :class:`aiogram.fsm.state.State` та " +":class:`aiogram.fsm.state.StateGroup` не мають допоміжних методів, таких " +"як :code:`.set()`, :code:`.next()` тощо." #: ../../migration_2_to_3.rst:127 msgid "" -"Instead, you should set states by passing them directly to :class:`aiogram.fsm." -"context.FSMContext` (:ref:`Read more » `)" -msgstr "" -"Замість цього вам слід встановлювати стани, передаючи їх безпосередньо до :" -"class:`aiogram.fsm.context.FSMContext` (:ref:`Детальніше » `)" +msgstr "" +"Замість цього вам слід встановлювати стани, передаючи їх безпосередньо до" +" :class:`aiogram.fsm.context.FSMContext` (:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:129 msgid "" -"The state proxy is deprecated; you should update the state data by calling :" -"code:`state.set_data(...)` and :code:`state.get_data()` respectively." +"The state proxy is deprecated; you should update the state data by " +"calling :code:`state.set_data(...)` and :code:`state.get_data()` " +"respectively." msgstr "" -"Проксі стану є застарілим; вам слід оновити дані стану, викликавши :code:`state." -"set_data(...)` та :code:`state.get_data()` відповідно." +"Проксі стану є застарілим; вам слід оновити дані стану, викликавши " +":code:`state.set_data(...)` та :code:`state.get_data()` відповідно." #: ../../migration_2_to_3.rst:134 msgid "Sending Files" @@ -380,13 +401,13 @@ msgstr "Надсилання файлів" #: ../../migration_2_to_3.rst:136 msgid "" -"From now on, you should wrap files in an InputFile object before sending them, " -"instead of passing the IO object directly to the API method. (:ref:`Read more » " -"`)" +"From now on, you should wrap files in an InputFile object before sending " +"them, instead of passing the IO object directly to the API method. " +"(:ref:`Read more » `)" msgstr "" -"Відтепер перед відправкою файлів слід обертати їх в об'єкт InputFile замість " -"того, щоб передавати об'єкт вводу-виводу безпосередньо до методу API. (:ref:" -"`Детальніше » `)" +"Відтепер перед відправкою файлів слід обертати їх в об'єкт InputFile " +"замість того, щоб передавати об'єкт вводу-виводу безпосередньо до методу " +"API. (:ref:`Детальніше » `)" #: ../../migration_2_to_3.rst:141 msgid "Webhook" @@ -398,11 +419,11 @@ msgstr "Спрощено налаштування веб-застосунку ai #: ../../migration_2_to_3.rst:144 msgid "" -"By default, the ability to upload files has been added when you use the reply " -"function in a webhook." +"By default, the ability to upload files has been added when you `make " +"requests in response to updates `_ (available for webhook " +"only)." msgstr "" -"За замовчуванням додана можливість завантажувати файли, коли ви використовуєте " -"функцію відповіді у вебхук." #: ../../migration_2_to_3.rst:148 msgid "Telegram API Server" @@ -410,15 +431,25 @@ msgstr "Сервер Telegram API" #: ../../migration_2_to_3.rst:150 msgid "" -"The `server` parameter has been moved from the `Bot` instance to `api` in " -"`BaseSession`." +"The `server` parameter has been moved from the `Bot` instance to `api` in" +" `BaseSession`." msgstr "" -"Параметр `server` було перенесено з екземпляра `Bot` до `api` в `BaseSession`." +"Параметр `server` було перенесено з екземпляра `Bot` до `api` в " +"`BaseSession`." #: ../../migration_2_to_3.rst:151 msgid "" -"The constant `aiogram.bot.api.TELEGRAM_PRODUCTION` has been moved to `aiogram." -"client.telegram.PRODUCTION`." +"The constant `aiogram.bot.api.TELEGRAM_PRODUCTION` has been moved to " +"`aiogram.client.telegram.PRODUCTION`." msgstr "" -"Константа `aiogram.bot.api.TELEGRAM_PRODUCTION` була переміщена на `aiogram." -"client.telegram.PRODUCTION`." +"Константа `aiogram.bot.api.TELEGRAM_PRODUCTION` була переміщена на " +"`aiogram.client.telegram.PRODUCTION`." + +#~ msgid "" +#~ "By default, the ability to upload " +#~ "files has been added when you use" +#~ " the reply function in a webhook." +#~ msgstr "" +#~ "За замовчуванням додана можливість " +#~ "завантажувати файли, коли ви використовуєте" +#~ " функцію відповіді у вебхук." From a2ed142557785ceb7d34b1a9aa621e85dce29299 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 8 Oct 2023 19:15:53 +0300 Subject: [PATCH 119/139] Remove stale texts --- docs/locale/uk_UA/LC_MESSAGES/api/bot.po | 5 --- .../uk_UA/LC_MESSAGES/api/download_file.po | 3 -- .../uk_UA/LC_MESSAGES/api/enums/index.po | 3 -- .../api/enums/inline_query_result_type.po | 3 -- .../LC_MESSAGES/api/methods/send_dice.po | 11 ------ .../LC_MESSAGES/api/methods/send_photo.po | 11 ------ .../LC_MESSAGES/api/methods/stop_poll.po | 7 ---- .../uk_UA/LC_MESSAGES/api/session/base.po | 3 -- docs/locale/uk_UA/LC_MESSAGES/contributing.po | 37 ------------------- .../LC_MESSAGES/dispatcher/dispatcher.po | 7 ---- .../uk_UA/LC_MESSAGES/dispatcher/router.po | 9 ----- docs/locale/uk_UA/LC_MESSAGES/index.po | 27 -------------- docs/locale/uk_UA/LC_MESSAGES/install.po | 6 --- .../uk_UA/LC_MESSAGES/migration_2_to_3.po | 9 ----- .../uk_UA/LC_MESSAGES/utils/formatting.po | 6 --- .../uk_UA/LC_MESSAGES/utils/keyboard.po | 3 -- 16 files changed, 150 deletions(-) diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po index d14cbae4..1f990065 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/bot.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/bot.po @@ -160,8 +160,3 @@ msgstr "" #: aiogram.client.bot.Bot.download:6 of msgid "file_id or Downloadable object" msgstr "" - -#~ msgid "" -#~ "Bases: :py:class:`~aiogram.utils.mixins.ContextInstanceMixin`\\" -#~ " [:py:class:`Bot`]" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/download_file.po b/docs/locale/uk_UA/LC_MESSAGES/api/download_file.po index 11675c94..c841be44 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/download_file.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/download_file.po @@ -217,6 +217,3 @@ msgstr "" #: ../../api/download_file.rst:93 msgid "Example:" msgstr "Приклад:" - -#~ msgid "Bot class" -#~ msgstr "Bot class" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/index.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/index.po index 0bab4898..78c7f5b5 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/enums/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/index.po @@ -24,6 +24,3 @@ msgstr "" #: ../../api/enums/index.rst:5 msgid "Here is list of all available enums:" msgstr "Ось список усіх доступних переліків:" - -#~ msgid "Types" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/enums/inline_query_result_type.po b/docs/locale/uk_UA/LC_MESSAGES/api/enums/inline_query_result_type.po index 6b275e0f..0a534fc6 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/enums/inline_query_result_type.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/enums/inline_query_result_type.po @@ -29,6 +29,3 @@ msgstr "" #, fuzzy msgid "Source: https://core.telegram.org/bots/api#inlinequeryresult" msgstr "Джерело: https://core.telegram.org/bots/api#maskposition" - -#~ msgid "The part of the face relative to which the mask should be placed." -#~ msgstr "Частина обличчя, щодо якої слід розмістити маску." diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po index 9e9cdd1f..c807f69c 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_dice.po @@ -141,14 +141,3 @@ msgstr "" #: ../../api/methods/send_dice.rst:55 msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_dice_pm`" msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po index f733d653..ea535aa3 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/send_photo.po @@ -170,14 +170,3 @@ msgstr "" #: ../../api/methods/send_photo.rst:55 msgid ":meth:`aiogram.types.chat_join_request.ChatJoinRequest.answer_photo_pm`" msgstr "" - -#~ msgid "" -#~ "Additional interface options. A JSON-" -#~ "serialized object for an `inline " -#~ "keyboard `_, " -#~ "`custom reply keyboard " -#~ "`_, instructions " -#~ "to remove reply keyboard or to " -#~ "force a reply from the user." -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/stop_poll.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/stop_poll.po index 269a1e06..d0315d1d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/stop_poll.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/stop_poll.po @@ -82,10 +82,3 @@ msgstr "" #: ../../api/methods/stop_poll.rst:40 msgid "As reply into Webhook in handler" msgstr "" - -#~ msgid "" -#~ "A JSON-serialized object for a new" -#~ " message `inline keyboard " -#~ "`_." -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po index 6466c397..8ce40880 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/session/base.po @@ -76,6 +76,3 @@ msgstr "" #: aiogram.client.session.base.BaseSession.stream_content:1 of msgid "Stream reader" msgstr "" - -#~ msgid "Clean data before send" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/contributing.po b/docs/locale/uk_UA/LC_MESSAGES/contributing.po index 7cf1b5d8..57c134f1 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/contributing.po +++ b/docs/locale/uk_UA/LC_MESSAGES/contributing.po @@ -319,40 +319,3 @@ msgid "" " me a pizza or a beer, you can do it on `OpenCollective " "`_." msgstr "" - -#~ msgid "" -#~ "So, if you want to financially " -#~ "support the project, or, for example," -#~ " give me a pizza or a beer, " -#~ "you can do it on `OpenCollective " -#~ "`_ or `Patreon " -#~ "`_." -#~ msgstr "" - -#~ msgid "Linux/ macOS:" -#~ msgstr "" - -#~ msgid "Windows PoweShell" -#~ msgstr "" - -#~ msgid "" -#~ "To check it worked, use described " -#~ "command, it should show the :code:`pip`" -#~ " location inside the isolated environment" -#~ msgstr "" - -#~ msgid "Linux, macOS:" -#~ msgstr "" - -#~ msgid "" -#~ "Also make you shure you have the" -#~ " latest pip version in your virtual" -#~ " environment to avoid errors on next" -#~ " steps:" -#~ msgstr "" - -#~ msgid "" -#~ "After activating the environment install " -#~ "`aiogram` from sources and their " -#~ "dependencies:" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po index 6ec3c401..409a09a9 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/dispatcher.po @@ -190,10 +190,3 @@ msgid "" msgstr "" "Усі оновлення можна передати диспетчеру через " ":obj:`Dispatcher.feed_update(bot=..., update=...)` method:" - -#~ msgid "Poling timeout" -#~ msgstr "Час очікування на відповідь" - -#~ msgid "`Observer `__" -#~ msgstr "`Observer `__" - diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po index 6342649a..ebf4317d 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/router.po @@ -284,12 +284,3 @@ msgstr "Приклад вкладених маршрутизаторів" #: ../../dispatcher/router.rst:214 msgid "In this case update propagation flow will have form:" msgstr "У цьому випадку потік розповсюдження оновлення матиме вигляд:" - -#~ msgid "" -#~ "By default Router already has an " -#~ "update handler which route all event " -#~ "types to another observers." -#~ msgstr "" -#~ "За замовчуванням маршрутизатор уже має " -#~ "обробник подій, який направляє всі типи" -#~ " подій іншим обсерверам." diff --git a/docs/locale/uk_UA/LC_MESSAGES/index.po b/docs/locale/uk_UA/LC_MESSAGES/index.po index 638e457c..9c7c9d02 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/index.po +++ b/docs/locale/uk_UA/LC_MESSAGES/index.po @@ -214,30 +214,3 @@ msgstr "Приклад використання" #: ../../index.rst:9 msgid "Contents" msgstr "Зміст" - -#~ msgid "[Telegram] aiogram live" -#~ msgstr "" - -#~ msgid "aiogram |beta badge|" -#~ msgstr "" - -#~ msgid "Beta badge" -#~ msgstr "" - -#~ msgid "This version is still in development!" -#~ msgstr "Ще в розробці!" - -#~ msgid "**Breaking News:**" -#~ msgstr "**Важливі новини**" - -#~ msgid "*aiogram* 3.0 has breaking changes." -#~ msgstr "*aiogram* 3.0 має зміни, що ламають зворотну сумісність." - -#~ msgid "It breaks backward compatibility by introducing new breaking changes!" -#~ msgstr "Порушує зворотну сумісність, вводячи нові критичні зміни!" - -#~ msgid "" -#~ "Uses powerful `magic filters " -#~ "`" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/install.po b/docs/locale/uk_UA/LC_MESSAGES/install.po index 583dda9a..438b02d4 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/install.po +++ b/docs/locale/uk_UA/LC_MESSAGES/install.po @@ -38,9 +38,3 @@ msgstr "Бета-версія (3.х)" #: ../../install.rst:30 msgid "From GitHub" msgstr "З GitHub" - -#~ msgid "Stable (2.x)" -#~ msgstr "Стабільна версія (2.x)" - -#~ msgid "From AUR" -#~ msgstr "З AUR" diff --git a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po index 66a4e4b9..2ffb754f 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po +++ b/docs/locale/uk_UA/LC_MESSAGES/migration_2_to_3.po @@ -444,12 +444,3 @@ msgid "" msgstr "" "Константа `aiogram.bot.api.TELEGRAM_PRODUCTION` була переміщена на " "`aiogram.client.telegram.PRODUCTION`." - -#~ msgid "" -#~ "By default, the ability to upload " -#~ "files has been added when you use" -#~ " the reply function in a webhook." -#~ msgstr "" -#~ "За замовчуванням додана можливість " -#~ "завантажувати файли, коли ви використовуєте" -#~ " функцію відповіді у вебхук." diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po index bb92b9f9..a61c73e0 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/formatting.po @@ -441,9 +441,3 @@ msgid "" "with type " ":obj:`aiogram.enums.message_entity_type.MessageEntityType.CUSTOM_EMOJI`" msgstr "" - -#~ msgid "line marker, by default is :code:`- `" -#~ msgstr "" - -#~ msgid "number format, by default :code:`{}. `" -#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po index c6b0a3f2..71ae13f3 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po +++ b/docs/locale/uk_UA/LC_MESSAGES/utils/keyboard.po @@ -177,6 +177,3 @@ msgstr "Додавання нової кнопки до розмітки" #: ../../utils/keyboard.rst:90 msgid "Construct an ReplyKeyboardMarkup" msgstr "Створення ReplyKeyboardMarkup" - -#~ msgid "Base builder" -#~ msgstr "Базовий конструктор" From cf3044687aa91e7b2ef4998ca67c5cbcc85228ad Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 8 Oct 2023 19:22:58 +0300 Subject: [PATCH 120/139] Update changelog instructions in PR workflow Updated the instructions for adding changelog entries in the pull_request_changelog.yml workflow file. The changes provide more specific instructions on how to name and write the changelog entry file. This was done to provide clearer instructions to contributors updating the changelog. --- .github/workflows/pull_request_changelog.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request_changelog.yml b/.github/workflows/pull_request_changelog.yml index 7f9d7b86..9115e29a 100644 --- a/.github/workflows/pull_request_changelog.yml +++ b/.github/workflows/pull_request_changelog.yml @@ -55,9 +55,13 @@ jobs: You need to add a brief description of the changes to the `CHANGES` directory. - For example, you can run `towncrier create .` to create a file in the change directory and then write a description on that file. + Changes file should be named like `..rst`, + example `1234.bugfix.rst` where `1234` is the PR or issue number and `bugfix` is the category. - Read more at [Towncrier docs](https://towncrier.readthedocs.io/en/latest/tutorial.html#creating-news-fragments) + The content of the file should be a brief description of the changes in + the PR in the format of a description of what has been done. + + Possible categories are: `feature`, `bugfix`, `doc`, `removal` and `misc`. - name: Changelog found if: "success()" From 98771fdf31f9653dfaafc6a0afdc54ac8e7b4203 Mon Sep 17 00:00:00 2001 From: VasBrd <86557363+VasBrd@users.noreply.github.com> Date: Wed, 18 Oct 2023 22:00:25 +0300 Subject: [PATCH 121/139] Update base.rst (#1340) * Update base.rst Typo correction * Create 1340.doc.rst --- CHANGES/1340.doc.rst | 1 + docs/dispatcher/class_based_handlers/base.rst | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 CHANGES/1340.doc.rst diff --git a/CHANGES/1340.doc.rst b/CHANGES/1340.doc.rst new file mode 100644 index 00000000..83bd6723 --- /dev/null +++ b/CHANGES/1340.doc.rst @@ -0,0 +1 @@ +Minor typo correction, specifically in module naming + some grammar. diff --git a/docs/dispatcher/class_based_handlers/base.rst b/docs/dispatcher/class_based_handlers/base.rst index 0d478224..8c694d4f 100644 --- a/docs/dispatcher/class_based_handlers/base.rst +++ b/docs/dispatcher/class_based_handlers/base.rst @@ -6,15 +6,15 @@ BaseHandler Base handler is generic abstract class and should be used in all other class-based handlers. -Import: :code:`from aiogram.handler import BaseHandler` +Import: :code:`from aiogram.handlers import BaseHandler` By default you will need to override only method :code:`async def handle(self) -> Any: ...` -This class is also have an default initializer and you don't need to change it. -Initializer accepts current event and all contextual data and which +This class also has a default initializer and you don't need to change it. +The initializer accepts the incoming event and all contextual data, which can be accessed from the handler through attributes: :code:`event: TelegramEvent` and :code:`data: Dict[Any, str]` -If instance of the bot is specified in context data or current context it can be accessed through *bot* class attribute. +If an instance of the bot is specified in context data or current context it can be accessed through *bot* class attribute. Example ======= From c6c838f6899728372404a7bf9f2924de7f1712c9 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 21 Oct 2023 19:31:48 +0300 Subject: [PATCH 122/139] Update ReadTheDocs configuration (#1345) --- .readthedocs.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 41b7a452..b61b3f17 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,13 +1,12 @@ version: 2 -python: - version: "3.8" - install: - - method: pip - path: . - extra_requirements: - - docs - - redis +build: + os: ubuntu-22.04 + tools: + python: "3.11" + jobs: + post_install: + - pip install .[docs,redis] sphinx: configuration: docs/conf.py From 0a9bee4bd2210c71132d15c7ade9d696a5a0e5f0 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 21 Oct 2023 21:44:52 +0300 Subject: [PATCH 123/139] Bump dependencies --- pyproject.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1f0ad86c..9553b128 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ proxy = [ "aiohttp-socks~=0.8.3", ] i18n = [ - "Babel~=2.12.1", + "Babel~=2.13.0", ] cli = [ "aiogram-cli~=1.0.3", @@ -74,7 +74,7 @@ test = [ "pytest-html~=4.0.2", "pytest-asyncio~=0.21.1", "pytest-lazy-fixture~=0.6.3", - "pytest-mock~=3.11.0", + "pytest-mock~=3.12.0", "pytest-mypy~=0.10.3", "pytest-cov~=4.1.0", "pytest-aiohttp~=1.0.5", @@ -97,12 +97,12 @@ docs = [ "sphinxcontrib-towncrier~=0.3.2a0", ] dev = [ - "black~=23.9.1", + "black~=23.10.0", "isort~=5.12.0", - "ruff~=0.0.291", - "mypy~=1.5.1", + "ruff~=0.1.1", + "mypy~=1.6.1", "toml~=0.10.2", - "pre-commit~=3.4.0", + "pre-commit~=3.5.0", "packaging~=23.1", ] From 1cf6ce251b7526f84c68f009a003677bb2e07d81 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 21 Oct 2023 21:48:22 +0300 Subject: [PATCH 124/139] Fixed ruff command --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e5e85147..d238a558 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -74,7 +74,7 @@ jobs: - name: Lint code if: "env.IS_PYPY == 'false'" run: | - ruff --format=github aiogram examples + ruff --output-format=github aiogram examples mypy aiogram black --check --diff aiogram tests From eef277ae65ff15ecfb0ff748058392f1cb409e2e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 21 Oct 2023 22:04:10 +0300 Subject: [PATCH 125/139] Ignore uvloop attr-defined --- aiogram/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/__init__.py b/aiogram/__init__.py index 2ea9f79f..d267f4ba 100644 --- a/aiogram/__init__.py +++ b/aiogram/__init__.py @@ -16,7 +16,7 @@ from .utils.text_decorations import markdown_decoration as md with suppress(ImportError): import uvloop as _uvloop - _uvloop.install() + _uvloop.install() # type: ignore[attr-defined] F = MagicFilter() flags = FlagGenerator() From 3b21262d34c62e74d5a0fb4eb8457b2fff9330eb Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 21 Oct 2023 22:09:46 +0300 Subject: [PATCH 126/139] Skip unused ignore --- aiogram/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/__init__.py b/aiogram/__init__.py index d267f4ba..31d1b16b 100644 --- a/aiogram/__init__.py +++ b/aiogram/__init__.py @@ -16,7 +16,7 @@ from .utils.text_decorations import markdown_decoration as md with suppress(ImportError): import uvloop as _uvloop - _uvloop.install() # type: ignore[attr-defined] + _uvloop.install() # type: ignore[attr-defined,unused-ignore] F = MagicFilter() flags = FlagGenerator() From d8e78019634b31346ec2e114134cbef88c0620c6 Mon Sep 17 00:00:00 2001 From: ZeroN <128647503+OnaZeroN@users.noreply.github.com> Date: Sun, 22 Oct 2023 02:41:13 +0500 Subject: [PATCH 127/139] Add new FSM strategy CHAT_TOPIC strategy.py (#1344) * Create 1343.feature.rst * Add new FSM strategy CHAT_TOPIC strategy.py * ADD CHAT_TOPIC tests test_strategy.py * Update 1343.feature.rst * Update strategy.py * add typing user_id: Optional[int] = None, middleware.py * add typing user_id: Optional[int] = None base.py * Update strategy.py * Update strategy.py * Update middleware.py * Update base.py * Update test_strategy.py * Update base.py * Update strategy.py --- CHANGES/1343.feature.rst | 1 + aiogram/fsm/strategy.py | 4 ++++ tests/test_fsm/test_strategy.py | 3 +++ 3 files changed, 8 insertions(+) create mode 100644 CHANGES/1343.feature.rst diff --git a/CHANGES/1343.feature.rst b/CHANGES/1343.feature.rst new file mode 100644 index 00000000..6ae25cd3 --- /dev/null +++ b/CHANGES/1343.feature.rst @@ -0,0 +1 @@ +The new FSM strategy CHAT_TOPIC, which sets the state for the entire topic in the chat, also works in private messages and regular groups without topics. diff --git a/aiogram/fsm/strategy.py b/aiogram/fsm/strategy.py index 2695d60e..f68aa045 100644 --- a/aiogram/fsm/strategy.py +++ b/aiogram/fsm/strategy.py @@ -7,6 +7,7 @@ class FSMStrategy(Enum): CHAT = auto() GLOBAL_USER = auto() USER_IN_TOPIC = auto() + CHAT_TOPIC = auto() def apply_strategy( @@ -21,4 +22,7 @@ def apply_strategy( return user_id, user_id, None if strategy == FSMStrategy.USER_IN_TOPIC: return chat_id, user_id, thread_id + if strategy == FSMStrategy.CHAT_TOPIC: + return chat_id, chat_id, thread_id + return chat_id, user_id, None diff --git a/tests/test_fsm/test_strategy.py b/tests/test_fsm/test_strategy.py index 782d1eeb..1f6f2e93 100644 --- a/tests/test_fsm/test_strategy.py +++ b/tests/test_fsm/test_strategy.py @@ -27,6 +27,9 @@ class TestStrategy: [FSMStrategy.USER_IN_TOPIC, CHAT, CHAT], [FSMStrategy.USER_IN_TOPIC, PRIVATE, PRIVATE], [FSMStrategy.USER_IN_TOPIC, THREAD, THREAD], + [FSMStrategy.CHAT_TOPIC, CHAT, (CHAT_ID, CHAT_ID, None)], + [FSMStrategy.CHAT_TOPIC, PRIVATE, PRIVATE], + [FSMStrategy.CHAT_TOPIC, THREAD, (CHAT_ID, CHAT_ID, THREAD_ID)], ], ) def test_strategy(self, strategy, case, expected): From e3def608f13f681beb8552982f72e45d98dcafe0 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 27 Oct 2023 00:48:47 +0300 Subject: [PATCH 128/139] Add CITATION.cff for automatic academic citation (#1351) * Add CITATION.cff for automatic academic citation A `CITATION.cff` file has been added to the project to facilitate the generation of accurate academic citations directly from the GitHub page. This allows users to easily copy the citation and paste it into their academic papers. The file includes the project's information like title, authors, repository code, url, keywords, and license. * Fixed category name --- CHANGES/1351.doc.rst | 2 ++ CITATION.cff | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 CHANGES/1351.doc.rst create mode 100644 CITATION.cff diff --git a/CHANGES/1351.doc.rst b/CHANGES/1351.doc.rst new file mode 100644 index 00000000..5108d25e --- /dev/null +++ b/CHANGES/1351.doc.rst @@ -0,0 +1,2 @@ +Added `CITATION.cff` file for automatic academic citation generation. +Now you can copy citation from the GitHub page and paste it into your paper. diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..0d89ccef --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,23 @@ +# This CITATION.cff file was generated with cffinit. +# Visit https://bit.ly/cffinit to generate yours today! + +cff-version: 1.2.0 +title: aiogram +message: >- + If you use this software, please cite it using the + metadata from this file. +type: software +authors: + - given-names: Oleksandr + family-names: O + email: im@aiogram.dev +repository-code: 'https://github.com/aiogram/aiogram' +url: 'https://aiogram.dev' +abstract: >- + aiogram is a modern and fully asynchronous framework for + Telegram Bot API written in Python using asyncio +keywords: + - aiogram + - telegram + - bot +license: MIT From 475b1861e52a5564c25399cdc92e0ac8b61de738 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Fri, 27 Oct 2023 00:50:21 +0300 Subject: [PATCH 129/139] Update citation --- CITATION.cff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index 0d89ccef..6eb723ae 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -9,7 +9,7 @@ message: >- type: software authors: - given-names: Oleksandr - family-names: O + family-names: Onufriichuk email: im@aiogram.dev repository-code: 'https://github.com/aiogram/aiogram' url: 'https://aiogram.dev' From 180a7297ff42d675f70b93d0c79e853840ee7c62 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sat, 28 Oct 2023 23:09:30 +0300 Subject: [PATCH 130/139] Update typing-extensions version range in dependencies (#1352) This commit changes the version requirements for typing-extensions in the dependencies section of pyproject.toml file. This change now requires versions that are greater than or equal to 4.7.0 and less than or equal to 5.0. The previous version, 4.8.0, has been found to cause compatibility issues with some other libraries. --- CHANGES/1347.misc.rst | 1 + pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1347.misc.rst diff --git a/CHANGES/1347.misc.rst b/CHANGES/1347.misc.rst new file mode 100644 index 00000000..2da2e568 --- /dev/null +++ b/CHANGES/1347.misc.rst @@ -0,0 +1 @@ +Updated :code:`typing-extensions` package version range in dependencies to fix compatibility with :code:`FastAPI` diff --git a/pyproject.toml b/pyproject.toml index 9553b128..9b0511ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "pydantic>=2.4.1,<2.5", "aiofiles~=23.2.1", "certifi>=2023.7.22", - "typing-extensions~=4.8.0", + "typing-extensions>=4.7.0,<=5.0", ] dynamic = ["version"] From a355daba49a6e03ee8ac306746d1c0406361986e Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 29 Oct 2023 02:15:50 +0300 Subject: [PATCH 131/139] Re-generate Bot API --- .butcher/methods/getUpdates/entity.json | 6 +- .../methods/promoteChatMember/entity.json | 68 ++++++--- .butcher/methods/setWebhook/entity.json | 6 +- .butcher/schema/schema.json | 140 ++++++++++-------- .../types/ChatAdministratorRights/entity.json | 24 +-- .butcher/types/ChatJoinRequest/entity.json | 6 +- .../types/ChatMemberAdministrator/entity.json | 24 +-- .butcher/types/Update/entity.json | 6 +- Makefile | 13 ++ aiogram/client/bot.py | 29 ++-- aiogram/methods/get_updates.py | 2 +- aiogram/methods/promote_chat_member.py | 32 ++-- aiogram/methods/set_webhook.py | 2 +- aiogram/types/chat.py | 25 +++- aiogram/types/chat_administrator_rights.py | 8 +- aiogram/types/chat_join_request.py | 2 +- aiogram/types/chat_member_administrator.py | 8 +- aiogram/types/update.py | 2 +- 18 files changed, 247 insertions(+), 156 deletions(-) diff --git a/.butcher/methods/getUpdates/entity.json b/.butcher/methods/getUpdates/entity.json index 6163ad20..775ad6dd 100644 --- a/.butcher/methods/getUpdates/entity.json +++ b/.butcher/methods/getUpdates/entity.json @@ -38,9 +38,9 @@ { "type": "Array of String", "required": false, - "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", - "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\n
\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", - "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n", + "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", + "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\n
\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", + "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n", "name": "allowed_updates" } ], diff --git a/.butcher/methods/promoteChatMember/entity.json b/.butcher/methods/promoteChatMember/entity.json index ad0fce42..d866b307 100644 --- a/.butcher/methods/promoteChatMember/entity.json +++ b/.butcher/methods/promoteChatMember/entity.json @@ -38,27 +38,11 @@ { "type": "Boolean", "required": false, - "description": "Pass 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", - "html_description": "Pass 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", - "rst_description": "Pass :code:`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\n", + "description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": "Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat" }, - { - "type": "Boolean", - "required": false, - "description": "Pass True if the administrator can create channel posts, channels only", - "html_description": "Pass True if the administrator can create channel posts, channels only", - "rst_description": "Pass :code:`True` if the administrator can create channel posts, channels only\n", - "name": "can_post_messages" - }, - { - "type": "Boolean", - "required": false, - "description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only", - "html_description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only", - "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only\n", - "name": "can_edit_messages" - }, { "type": "Boolean", "required": false, @@ -78,9 +62,9 @@ { "type": "Boolean", "required": false, - "description": "Pass True if the administrator can restrict, ban or unban chat members", - "html_description": "Pass True if the administrator can restrict, ban or unban chat members", - "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members\n", + "description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members" }, { @@ -107,6 +91,22 @@ "rst_description": "Pass :code:`True` if the administrator can invite new users to the chat\n", "name": "can_invite_users" }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only\n", + "name": "can_post_messages" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only", + "html_description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only", + "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only\n", + "name": "can_edit_messages" + }, { "type": "Boolean", "required": false, @@ -115,6 +115,30 @@ "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n", "name": "can_pin_messages" }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can post stories in the channel; channels only", + "html_description": "Pass True if the administrator can post stories in the channel; channels only", + "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can edit stories posted by other users; channels only", + "html_description": "Pass True if the administrator can edit stories posted by other users; channels only", + "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can delete stories posted by other users; channels only", + "html_description": "Pass True if the administrator can delete stories posted by other users; channels only", + "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n", + "name": "can_delete_stories" + }, { "type": "Boolean", "required": false, diff --git a/.butcher/methods/setWebhook/entity.json b/.butcher/methods/setWebhook/entity.json index 337a7b43..593186b6 100644 --- a/.butcher/methods/setWebhook/entity.json +++ b/.butcher/methods/setWebhook/entity.json @@ -46,9 +46,9 @@ { "type": "Array of String", "required": false, - "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", - "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", - "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n", + "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", + "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", + "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n", "name": "allowed_updates" }, { diff --git a/.butcher/schema/schema.json b/.butcher/schema/schema.json index 7f4457cc..27e87e97 100644 --- a/.butcher/schema/schema.json +++ b/.butcher/schema/schema.json @@ -121,9 +121,9 @@ }, { "type": "ChatMemberUpdated", - "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of allowed_updates to receive these updates.", - "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of allowed_updates to receive these updates.", - "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates.\n", + "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.", + "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.", + "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`\"chat_member\"` in the list of *allowed_updates* to receive these updates.\n", "name": "chat_member", "required": false }, @@ -172,9 +172,9 @@ { "type": "Array of String", "required": false, - "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", - "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\n
\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", - "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n", + "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", + "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\n
\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.", + "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\n\n\nPlease note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time.\n", "name": "allowed_updates" } ], @@ -222,9 +222,9 @@ { "type": "Array of String", "required": false, - "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", - "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [“message”, “edited_channel_post”, “callback_query”] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", - "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n", + "description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", + "html_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify [\"message\", \"edited_channel_post\", \"callback_query\"] to only receive updates of these types. See Update for a complete list of available update types. Specify an empty list to receive all update types except chat_member (default). If not specified, the previous setting will be used.
\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.", + "rst_description": "A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`[\"message\", \"edited_channel_post\", \"callback_query\"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.\n\nPlease note that this parameter doesn't affect updates created before the call to the setWebhook, so unwanted updates may be received for a short period of time.\n", "name": "allowed_updates" }, { @@ -3351,9 +3351,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", + "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -3375,9 +3375,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can restrict, ban or unban chat members", - "html_description": "True, if the administrator can restrict, ban or unban chat members", - "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n", + "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members", "required": true }, @@ -3407,9 +3407,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post messages in the channel; channels only", - "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n", "name": "can_post_messages", "required": false }, @@ -3447,9 +3447,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can delete stories posted by other users", - "html_description": "Optional. True, if the administrator can delete stories posted by other users", - "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "description": "True, if the administrator can delete stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n", "name": "can_delete_stories", "required": false }, @@ -3556,9 +3556,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", + "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -3580,9 +3580,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can restrict, ban or unban chat members", - "html_description": "True, if the administrator can restrict, ban or unban chat members", - "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n", + "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members", "required": true }, @@ -3612,9 +3612,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post messages in the channel; channels only", - "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n", "name": "can_post_messages", "required": false }, @@ -3652,9 +3652,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can delete stories posted by other users", - "html_description": "Optional. True, if the administrator can delete stories posted by other users", - "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "description": "True, if the administrator can delete stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n", "name": "can_delete_stories", "required": false }, @@ -4008,9 +4008,9 @@ }, { "type": "Integer", - "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.", - "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.", - "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.\n", + "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.", + "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.", + "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.\n", "name": "user_chat_id", "required": true }, @@ -7019,27 +7019,11 @@ { "type": "Boolean", "required": false, - "description": "Pass 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", - "html_description": "Pass 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", - "rst_description": "Pass :code:`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\n", + "description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "Pass True if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": "Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat" }, - { - "type": "Boolean", - "required": false, - "description": "Pass True if the administrator can create channel posts, channels only", - "html_description": "Pass True if the administrator can create channel posts, channels only", - "rst_description": "Pass :code:`True` if the administrator can create channel posts, channels only\n", - "name": "can_post_messages" - }, - { - "type": "Boolean", - "required": false, - "description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only", - "html_description": "Pass True if the administrator can edit messages of other users and can pin messages, channels only", - "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only\n", - "name": "can_edit_messages" - }, { "type": "Boolean", "required": false, @@ -7059,9 +7043,9 @@ { "type": "Boolean", "required": false, - "description": "Pass True if the administrator can restrict, ban or unban chat members", - "html_description": "Pass True if the administrator can restrict, ban or unban chat members", - "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members\n", + "description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "Pass True if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": "Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members" }, { @@ -7088,6 +7072,22 @@ "rst_description": "Pass :code:`True` if the administrator can invite new users to the chat\n", "name": "can_invite_users" }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Pass True if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only\n", + "name": "can_post_messages" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only", + "html_description": "Pass True if the administrator can edit messages of other users and can pin messages; channels only", + "rst_description": "Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only\n", + "name": "can_edit_messages" + }, { "type": "Boolean", "required": false, @@ -7096,6 +7096,30 @@ "rst_description": "Pass :code:`True` if the administrator can pin messages, supergroups only\n", "name": "can_pin_messages" }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can post stories in the channel; channels only", + "html_description": "Pass True if the administrator can post stories in the channel; channels only", + "rst_description": "Pass :code:`True` if the administrator can post stories in the channel; channels only\n", + "name": "can_post_stories" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can edit stories posted by other users; channels only", + "html_description": "Pass True if the administrator can edit stories posted by other users; channels only", + "rst_description": "Pass :code:`True` if the administrator can edit stories posted by other users; channels only\n", + "name": "can_edit_stories" + }, + { + "type": "Boolean", + "required": false, + "description": "Pass True if the administrator can delete stories posted by other users; channels only", + "html_description": "Pass True if the administrator can delete stories posted by other users; channels only", + "rst_description": "Pass :code:`True` if the administrator can delete stories posted by other users; channels only\n", + "name": "can_delete_stories" + }, { "type": "Boolean", "required": false, diff --git a/.butcher/types/ChatAdministratorRights/entity.json b/.butcher/types/ChatAdministratorRights/entity.json index eb3b1c14..e493b3e2 100644 --- a/.butcher/types/ChatAdministratorRights/entity.json +++ b/.butcher/types/ChatAdministratorRights/entity.json @@ -21,9 +21,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", + "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -45,9 +45,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can restrict, ban or unban chat members", - "html_description": "True, if the administrator can restrict, ban or unban chat members", - "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n", + "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members", "required": true }, @@ -77,9 +77,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post messages in the channel; channels only", - "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n", "name": "can_post_messages", "required": false }, @@ -117,9 +117,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can delete stories posted by other users", - "html_description": "Optional. True, if the administrator can delete stories posted by other users", - "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "description": "True, if the administrator can delete stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n", "name": "can_delete_stories", "required": false }, diff --git a/.butcher/types/ChatJoinRequest/entity.json b/.butcher/types/ChatJoinRequest/entity.json index 99fa2d7d..25cfe9e3 100644 --- a/.butcher/types/ChatJoinRequest/entity.json +++ b/.butcher/types/ChatJoinRequest/entity.json @@ -29,9 +29,9 @@ }, { "type": "Integer", - "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.", - "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.", - "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.\n", + "description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.", + "html_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.", + "rst_description": "Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.\n", "name": "user_chat_id", "required": true }, diff --git a/.butcher/types/ChatMemberAdministrator/entity.json b/.butcher/types/ChatMemberAdministrator/entity.json index 65981631..4679a1e0 100644 --- a/.butcher/types/ChatMemberAdministrator/entity.json +++ b/.butcher/types/ChatMemberAdministrator/entity.json @@ -45,9 +45,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "html_description": "True, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", - "rst_description": ":code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", + "description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "html_description": "True, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege", + "rst_description": ":code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege\n", "name": "can_manage_chat", "required": true }, @@ -69,9 +69,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can restrict, ban or unban chat members", - "html_description": "True, if the administrator can restrict, ban or unban chat members", - "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members\n", + "description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "html_description": "True, if the administrator can restrict, ban or unban chat members, or access supergroup statistics", + "rst_description": ":code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics\n", "name": "can_restrict_members", "required": true }, @@ -101,9 +101,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can post messages in the channel; channels only", - "html_description": "Optional. True, if the administrator can post messages in the channel; channels only", - "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only\n", + "description": "True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "html_description": "Optional. True, if the administrator can post messages in the channel, or access channel statistics; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only\n", "name": "can_post_messages", "required": false }, @@ -141,9 +141,9 @@ }, { "type": "Boolean", - "description": "True, if the administrator can delete stories posted by other users", - "html_description": "Optional. True, if the administrator can delete stories posted by other users", - "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users\n", + "description": "True, if the administrator can delete stories posted by other users; channels only", + "html_description": "Optional. True, if the administrator can delete stories posted by other users; channels only", + "rst_description": "*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only\n", "name": "can_delete_stories", "required": false }, diff --git a/.butcher/types/Update/entity.json b/.butcher/types/Update/entity.json index 1ee46f08..9ccf33e5 100644 --- a/.butcher/types/Update/entity.json +++ b/.butcher/types/Update/entity.json @@ -117,9 +117,9 @@ }, { "type": "ChatMemberUpdated", - "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of allowed_updates to receive these updates.", - "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify “chat_member” in the list of allowed_updates to receive these updates.", - "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates.\n", + "description": "A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.", + "html_description": "Optional. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify \"chat_member\" in the list of allowed_updates to receive these updates.", + "rst_description": "*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`\"chat_member\"` in the list of *allowed_updates* to receive these updates.\n", "name": "chat_member", "required": false }, diff --git a/Makefile b/Makefile index 327f94df..0464bd45 100644 --- a/Makefile +++ b/Makefile @@ -119,3 +119,16 @@ release: git add . git commit -m "Release $(shell poetry version -s)" git tag v$(shell hatch version -s) + + +butcher_version := 0.1.23 + +butcher-install: + pip install -U git+ssh://git@github.com/aiogram/butcher.git@v$(butcher_version) +.PHONY: butcher-install + +butcher: + butcher parse + butcher refresh + butcher apply all +.PHONY: butcher diff --git a/aiogram/client/bot.py b/aiogram/client/bot.py index 3a360c25..bcaeff35 100644 --- a/aiogram/client/bot.py +++ b/aiogram/client/bot.py @@ -1849,7 +1849,7 @@ class Bot: :param offset: 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 returned. An update is considered confirmed as soon as :class:`aiogram.methods.get_updates.GetUpdates` is called with an *offset* higher than its *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 be forgotten. :param limit: Limits the number of updates to be retrieved. Values between 1-100 are accepted. Defaults to 100. :param timeout: Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only. - :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used. + :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used. :param request_timeout: Request timeout :return: Returns an Array of :class:`aiogram.types.update.Update` objects. """ @@ -1972,15 +1972,18 @@ class Bot: user_id: int, is_anonymous: Optional[bool] = None, can_manage_chat: Optional[bool] = None, - can_post_messages: Optional[bool] = None, - can_edit_messages: Optional[bool] = None, can_delete_messages: Optional[bool] = None, can_manage_video_chats: Optional[bool] = None, can_restrict_members: Optional[bool] = None, can_promote_members: Optional[bool] = None, can_change_info: Optional[bool] = None, can_invite_users: Optional[bool] = None, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, can_pin_messages: Optional[bool] = None, + can_post_stories: Optional[bool] = None, + can_edit_stories: Optional[bool] = None, + can_delete_stories: Optional[bool] = None, can_manage_topics: Optional[bool] = None, request_timeout: Optional[int] = None, ) -> bool: @@ -1992,16 +1995,19 @@ class Bot: :param chat_id: Unique identifier for the target chat or username of the target channel (in the format :code:`@channelusername`) :param user_id: Unique identifier of the target user :param is_anonymous: Pass :code:`True` if the administrator's presence in the chat is hidden - :param can_manage_chat: Pass :code:`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 - :param can_post_messages: Pass :code:`True` if the administrator can create channel posts, channels only - :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only + :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege :param can_delete_messages: Pass :code:`True` if the administrator can delete messages of other users :param can_manage_video_chats: Pass :code:`True` if the administrator can manage video chats - :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members + :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics :param can_promote_members: Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him) :param can_change_info: Pass :code:`True` if the administrator can change chat title, photo and other settings :param can_invite_users: Pass :code:`True` if the administrator can invite new users to the chat + :param can_post_messages: Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only + :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only :param can_pin_messages: Pass :code:`True` if the administrator can pin messages, supergroups only + :param can_post_stories: Pass :code:`True` if the administrator can post stories in the channel; channels only + :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users; channels only + :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users; channels only :param can_manage_topics: Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only :param request_timeout: Request timeout :return: Returns :code:`True` on success. @@ -2012,15 +2018,18 @@ class Bot: user_id=user_id, is_anonymous=is_anonymous, can_manage_chat=can_manage_chat, - can_post_messages=can_post_messages, - can_edit_messages=can_edit_messages, can_delete_messages=can_delete_messages, can_manage_video_chats=can_manage_video_chats, can_restrict_members=can_restrict_members, can_promote_members=can_promote_members, can_change_info=can_change_info, can_invite_users=can_invite_users, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, can_pin_messages=can_pin_messages, + can_post_stories=can_post_stories, + can_edit_stories=can_edit_stories, + can_delete_stories=can_delete_stories, can_manage_topics=can_manage_topics, ) return await self(call, request_timeout=request_timeout) @@ -3481,7 +3490,7 @@ class Bot: :param certificate: Upload your public key certificate so that the root certificate in use can be checked. See our `self-signed guide `_ for details. :param ip_address: The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS :param max_connections: The maximum allowed number of simultaneous HTTPS 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. - :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used. + :param allowed_updates: A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used. :param drop_pending_updates: Pass :code:`True` to drop all pending updates :param secret_token: A secret token to be sent in a header 'X-Telegram-Bot-Api-Secret-Token' in every webhook request, 1-256 characters. Only characters :code:`A-Z`, :code:`a-z`, :code:`0-9`, :code:`_` and :code:`-` are allowed. The header is useful to ensure that the request comes from a webhook set by you. :param request_timeout: Request timeout diff --git a/aiogram/methods/get_updates.py b/aiogram/methods/get_updates.py index 5c28aea3..dd9f855e 100644 --- a/aiogram/methods/get_updates.py +++ b/aiogram/methods/get_updates.py @@ -29,7 +29,7 @@ class GetUpdates(TelegramMethod[List[Update]]): timeout: Optional[int] = None """Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.""" allowed_updates: Optional[List[str]] = None - """A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.""" + """A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.""" if TYPE_CHECKING: # DO NOT EDIT MANUALLY!!! diff --git a/aiogram/methods/promote_chat_member.py b/aiogram/methods/promote_chat_member.py index 4f9377d3..8be42d30 100644 --- a/aiogram/methods/promote_chat_member.py +++ b/aiogram/methods/promote_chat_member.py @@ -22,25 +22,31 @@ class PromoteChatMember(TelegramMethod[bool]): is_anonymous: Optional[bool] = None """Pass :code:`True` if the administrator's presence in the chat is hidden""" can_manage_chat: Optional[bool] = None - """Pass :code:`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""" - can_post_messages: Optional[bool] = None - """Pass :code:`True` if the administrator can create channel posts, channels only""" - can_edit_messages: Optional[bool] = None - """Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only""" + """Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" can_delete_messages: Optional[bool] = None """Pass :code:`True` if the administrator can delete messages of other users""" can_manage_video_chats: Optional[bool] = None """Pass :code:`True` if the administrator can manage video chats""" can_restrict_members: Optional[bool] = None - """Pass :code:`True` if the administrator can restrict, ban or unban chat members""" + """Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics""" can_promote_members: Optional[bool] = None """Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him)""" can_change_info: Optional[bool] = None """Pass :code:`True` if the administrator can change chat title, photo and other settings""" can_invite_users: Optional[bool] = None """Pass :code:`True` if the administrator can invite new users to the chat""" + can_post_messages: Optional[bool] = None + """Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only""" + can_edit_messages: Optional[bool] = None + """Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only""" can_pin_messages: Optional[bool] = None """Pass :code:`True` if the administrator can pin messages, supergroups only""" + can_post_stories: Optional[bool] = None + """Pass :code:`True` if the administrator can post stories in the channel; channels only""" + can_edit_stories: Optional[bool] = None + """Pass :code:`True` if the administrator can edit stories posted by other users; channels only""" + can_delete_stories: Optional[bool] = None + """Pass :code:`True` if the administrator can delete stories posted by other users; channels only""" can_manage_topics: Optional[bool] = None """Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only""" @@ -55,15 +61,18 @@ class PromoteChatMember(TelegramMethod[bool]): user_id: int, is_anonymous: Optional[bool] = None, can_manage_chat: Optional[bool] = None, - can_post_messages: Optional[bool] = None, - can_edit_messages: Optional[bool] = None, can_delete_messages: Optional[bool] = None, can_manage_video_chats: Optional[bool] = None, can_restrict_members: Optional[bool] = None, can_promote_members: Optional[bool] = None, can_change_info: Optional[bool] = None, can_invite_users: Optional[bool] = None, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, can_pin_messages: Optional[bool] = None, + can_post_stories: Optional[bool] = None, + can_edit_stories: Optional[bool] = None, + can_delete_stories: Optional[bool] = None, can_manage_topics: Optional[bool] = None, **__pydantic_kwargs: Any, ) -> None: @@ -76,15 +85,18 @@ class PromoteChatMember(TelegramMethod[bool]): user_id=user_id, is_anonymous=is_anonymous, can_manage_chat=can_manage_chat, - can_post_messages=can_post_messages, - can_edit_messages=can_edit_messages, can_delete_messages=can_delete_messages, can_manage_video_chats=can_manage_video_chats, can_restrict_members=can_restrict_members, can_promote_members=can_promote_members, can_change_info=can_change_info, can_invite_users=can_invite_users, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, can_pin_messages=can_pin_messages, + can_post_stories=can_post_stories, + can_edit_stories=can_edit_stories, + can_delete_stories=can_delete_stories, can_manage_topics=can_manage_topics, **__pydantic_kwargs, ) diff --git a/aiogram/methods/set_webhook.py b/aiogram/methods/set_webhook.py index 92892531..da8ec9d4 100644 --- a/aiogram/methods/set_webhook.py +++ b/aiogram/methods/set_webhook.py @@ -35,7 +35,7 @@ class SetWebhook(TelegramMethod[bool]): max_connections: Optional[int] = None """The maximum allowed number of simultaneous HTTPS 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.""" allowed_updates: Optional[List[str]] = None - """A JSON-serialized list of the update types you want your bot to receive. For example, specify ['message', 'edited_channel_post', 'callback_query'] to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.""" + """A JSON-serialized list of the update types you want your bot to receive. For example, specify :code:`["message", "edited_channel_post", "callback_query"]` to only receive updates of these types. See :class:`aiogram.types.update.Update` for a complete list of available update types. Specify an empty list to receive all update types except *chat_member* (default). If not specified, the previous setting will be used.""" drop_pending_updates: Optional[bool] = None """Pass :code:`True` to drop all pending updates""" secret_token: Optional[str] = None diff --git a/aiogram/types/chat.py b/aiogram/types/chat.py index b5bcd5d4..d2ef2487 100644 --- a/aiogram/types/chat.py +++ b/aiogram/types/chat.py @@ -811,15 +811,18 @@ class Chat(TelegramObject): user_id: int, is_anonymous: Optional[bool] = None, can_manage_chat: Optional[bool] = None, - can_post_messages: Optional[bool] = None, - can_edit_messages: Optional[bool] = None, can_delete_messages: Optional[bool] = None, can_manage_video_chats: Optional[bool] = None, can_restrict_members: Optional[bool] = None, can_promote_members: Optional[bool] = None, can_change_info: Optional[bool] = None, can_invite_users: Optional[bool] = None, + can_post_messages: Optional[bool] = None, + can_edit_messages: Optional[bool] = None, can_pin_messages: Optional[bool] = None, + can_post_stories: Optional[bool] = None, + can_edit_stories: Optional[bool] = None, + can_delete_stories: Optional[bool] = None, can_manage_topics: Optional[bool] = None, **kwargs: Any, ) -> PromoteChatMember: @@ -835,16 +838,19 @@ class Chat(TelegramObject): :param user_id: Unique identifier of the target user :param is_anonymous: Pass :code:`True` if the administrator's presence in the chat is hidden - :param can_manage_chat: Pass :code:`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 - :param can_post_messages: Pass :code:`True` if the administrator can create channel posts, channels only - :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages, channels only + :param can_manage_chat: Pass :code:`True` if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege :param can_delete_messages: Pass :code:`True` if the administrator can delete messages of other users :param can_manage_video_chats: Pass :code:`True` if the administrator can manage video chats - :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members + :param can_restrict_members: Pass :code:`True` if the administrator can restrict, ban or unban chat members, or access supergroup statistics :param can_promote_members: Pass :code:`True` if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by him) :param can_change_info: Pass :code:`True` if the administrator can change chat title, photo and other settings :param can_invite_users: Pass :code:`True` if the administrator can invite new users to the chat + :param can_post_messages: Pass :code:`True` if the administrator can post messages in the channel, or access channel statistics; channels only + :param can_edit_messages: Pass :code:`True` if the administrator can edit messages of other users and can pin messages; channels only :param can_pin_messages: Pass :code:`True` if the administrator can pin messages, supergroups only + :param can_post_stories: Pass :code:`True` if the administrator can post stories in the channel; channels only + :param can_edit_stories: Pass :code:`True` if the administrator can edit stories posted by other users; channels only + :param can_delete_stories: Pass :code:`True` if the administrator can delete stories posted by other users; channels only :param can_manage_topics: Pass :code:`True` if the user is allowed to create, rename, close, and reopen forum topics, supergroups only :return: instance of method :class:`aiogram.methods.promote_chat_member.PromoteChatMember` """ @@ -858,15 +864,18 @@ class Chat(TelegramObject): user_id=user_id, is_anonymous=is_anonymous, can_manage_chat=can_manage_chat, - can_post_messages=can_post_messages, - can_edit_messages=can_edit_messages, can_delete_messages=can_delete_messages, can_manage_video_chats=can_manage_video_chats, can_restrict_members=can_restrict_members, can_promote_members=can_promote_members, can_change_info=can_change_info, can_invite_users=can_invite_users, + can_post_messages=can_post_messages, + can_edit_messages=can_edit_messages, can_pin_messages=can_pin_messages, + can_post_stories=can_post_stories, + can_edit_stories=can_edit_stories, + can_delete_stories=can_delete_stories, can_manage_topics=can_manage_topics, **kwargs, ).as_(self._bot) diff --git a/aiogram/types/chat_administrator_rights.py b/aiogram/types/chat_administrator_rights.py index da5179b7..cccda5b2 100644 --- a/aiogram/types/chat_administrator_rights.py +++ b/aiogram/types/chat_administrator_rights.py @@ -18,13 +18,13 @@ class ChatAdministratorRights(TelegramObject): is_anonymous: bool """:code:`True`, if the user's presence in the chat is hidden""" can_manage_chat: bool - """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" + """:code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" can_delete_messages: bool """:code:`True`, if the administrator can delete messages of other users""" can_manage_video_chats: bool """:code:`True`, if the administrator can manage video chats""" can_restrict_members: bool - """:code:`True`, if the administrator can restrict, ban or unban chat members""" + """:code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics""" can_promote_members: bool """:code:`True`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by the user)""" can_change_info: bool @@ -32,7 +32,7 @@ class ChatAdministratorRights(TelegramObject): can_invite_users: bool """:code:`True`, if the user is allowed to invite new users to the chat""" can_post_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only""" + """*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only""" can_edit_messages: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only""" can_pin_messages: Optional[bool] = None @@ -42,7 +42,7 @@ class ChatAdministratorRights(TelegramObject): can_edit_stories: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only""" can_delete_stories: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can delete stories posted by other users""" + """*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index 9a9f73b9..b8ba33d2 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -63,7 +63,7 @@ class ChatJoinRequest(TelegramObject): from_user: User = Field(..., alias="from") """User that sent the join request""" user_chat_id: int - """Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 24 hours to send messages until the join request is processed, assuming no other administrator contacted the user.""" + """Identifier of a private chat with the user who sent the join request. This number may have more than 32 significant bits and some programming languages may have difficulty/silent defects in interpreting it. But it has at most 52 significant bits, so a 64-bit integer or double-precision float type are safe for storing this identifier. The bot can use this identifier for 5 minutes to send messages until the join request is processed, assuming no other administrator contacted the user.""" date: DateTime """Date the request was sent in Unix time""" bio: Optional[str] = None diff --git a/aiogram/types/chat_member_administrator.py b/aiogram/types/chat_member_administrator.py index 0db04dce..215ff0bd 100644 --- a/aiogram/types/chat_member_administrator.py +++ b/aiogram/types/chat_member_administrator.py @@ -25,13 +25,13 @@ class ChatMemberAdministrator(ChatMember): is_anonymous: bool """:code:`True`, if the user's presence in the chat is hidden""" can_manage_chat: bool - """:code:`True`, if the administrator can access the chat event log, chat statistics, boost list in channels, message statistics in channels, see channel members, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" + """:code:`True`, if the administrator can access the chat event log, boost list in channels, see channel members, report spam messages, see anonymous administrators in supergroups and ignore slow mode. Implied by any other administrator privilege""" can_delete_messages: bool """:code:`True`, if the administrator can delete messages of other users""" can_manage_video_chats: bool """:code:`True`, if the administrator can manage video chats""" can_restrict_members: bool - """:code:`True`, if the administrator can restrict, ban or unban chat members""" + """:code:`True`, if the administrator can restrict, ban or unban chat members, or access supergroup statistics""" can_promote_members: bool """:code:`True`, if the administrator can add new administrators with a subset of their own privileges or demote administrators that they have promoted, directly or indirectly (promoted by administrators that were appointed by the user)""" can_change_info: bool @@ -39,7 +39,7 @@ class ChatMemberAdministrator(ChatMember): can_invite_users: bool """:code:`True`, if the user is allowed to invite new users to the chat""" can_post_messages: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can post messages in the channel; channels only""" + """*Optional*. :code:`True`, if the administrator can post messages in the channel, or access channel statistics; channels only""" can_edit_messages: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit messages of other users and can pin messages; channels only""" can_pin_messages: Optional[bool] = None @@ -49,7 +49,7 @@ class ChatMemberAdministrator(ChatMember): can_edit_stories: Optional[bool] = None """*Optional*. :code:`True`, if the administrator can edit stories posted by other users; channels only""" can_delete_stories: Optional[bool] = None - """*Optional*. :code:`True`, if the administrator can delete stories posted by other users""" + """*Optional*. :code:`True`, if the administrator can delete stories posted by other users; channels only""" can_manage_topics: Optional[bool] = None """*Optional*. :code:`True`, if the user is allowed to create, rename, close, and reopen forum topics; supergroups only""" custom_title: Optional[str] = None diff --git a/aiogram/types/update.py b/aiogram/types/update.py index dbaa3222..aed68270 100644 --- a/aiogram/types/update.py +++ b/aiogram/types/update.py @@ -54,7 +54,7 @@ class Update(TelegramObject): my_chat_member: Optional[ChatMemberUpdated] = None """*Optional*. The bot's chat member status was updated in a chat. For private chats, this update is received only when the bot is blocked or unblocked by the user.""" chat_member: Optional[ChatMemberUpdated] = None - """*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify 'chat_member' in the list of *allowed_updates* to receive these updates.""" + """*Optional*. A chat member's status was updated in a chat. The bot must be an administrator in the chat and must explicitly specify :code:`"chat_member"` in the list of *allowed_updates* to receive these updates.""" chat_join_request: Optional[ChatJoinRequest] = None """*Optional*. A request to join the chat has been sent. The bot must have the *can_invite_users* administrator right in the chat to receive these updates.""" From 228a86afdc3c594dd9db9e82d8d6d445adb5ede1 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 29 Oct 2023 02:32:40 +0300 Subject: [PATCH 132/139] Refresh translation files --- docs/dispatcher/webhook.rst | 2 +- .../LC_MESSAGES/api/methods/get_updates.po | 36 ++++-- .../api/methods/promote_chat_member.po | 108 +++++++++++++----- .../LC_MESSAGES/api/methods/set_webhook.po | 38 ++++-- .../uk_UA/LC_MESSAGES/api/types/chat.po | 93 +++++++++++---- .../api/types/chat_administrator_rights.po | 48 ++++++-- .../api/types/chat_join_request.po | 24 +++- .../api/types/chat_member_administrator.po | 48 ++++++-- .../uk_UA/LC_MESSAGES/api/types/update.po | 18 ++- docs/locale/uk_UA/LC_MESSAGES/changelog.po | 77 +++++++++---- .../dispatcher/class_based_handlers/base.po | 28 ++--- .../uk_UA/LC_MESSAGES/dispatcher/webhook.po | 18 +-- 12 files changed, 392 insertions(+), 146 deletions(-) diff --git a/docs/dispatcher/webhook.rst b/docs/dispatcher/webhook.rst index 6869124e..ec2612ff 100644 --- a/docs/dispatcher/webhook.rst +++ b/docs/dispatcher/webhook.rst @@ -97,7 +97,7 @@ When you use nginx as reverse proxy, you should set `proxy_pass` to your aiohttp Without reverse proxy (not recommended) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In case you want can't use reverse proxy, you can use aiohttp's ssl context. +In case without using reverse proxy, you can use aiohttp's ssl context. Also this example contains usage with self-signed certificate. diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po index 39a54f54..778713f6 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/get_updates.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-02 15:10+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/methods/get_updates.rst:3 msgid "getUpdates" @@ -78,39 +78,39 @@ msgstr "" #: ../../docstring aiogram.methods.get_updates.GetUpdates.allowed_updates:1 of msgid "" "A JSON-serialized list of the update types you want your bot to receive. " -"For example, specify ['message', 'edited_channel_post', 'callback_query']" -" to only receive updates of these types. See " +"For example, specify :code:`[\"message\", \"edited_channel_post\", " +"\"callback_query\"]` to only receive updates of these types. See " ":class:`aiogram.types.update.Update` for a complete list of available " "update types. Specify an empty list to receive all update types except " "*chat_member* (default). If not specified, the previous setting will be " "used." msgstr "" -#: ../../api/methods/get_updates.rst:14 +#: ../../api/methods/get_updates.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/get_updates.rst:17 +#: ../../api/methods/get_updates.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/get_updates.rst:25 +#: ../../api/methods/get_updates.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/get_updates.rst:27 +#: ../../api/methods/get_updates.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/get_updates.rst:29 +#: ../../api/methods/get_updates.rst:30 msgid ":code:`from aiogram.methods.get_updates import GetUpdates`" msgstr "" -#: ../../api/methods/get_updates.rst:30 +#: ../../api/methods/get_updates.rst:31 msgid "alias: :code:`from aiogram.methods import GetUpdates`" msgstr "" -#: ../../api/methods/get_updates.rst:33 +#: ../../api/methods/get_updates.rst:34 msgid "With specific bot" msgstr "" @@ -131,3 +131,17 @@ msgstr "" #~ "of the updates queue. All previous " #~ "updates will forgotten." #~ msgstr "" + +#~ msgid "" +#~ "A JSON-serialized list of the " +#~ "update types you want your bot to" +#~ " receive. For example, specify ['message'," +#~ " 'edited_channel_post', 'callback_query'] to only" +#~ " receive updates of these types. See" +#~ " :class:`aiogram.types.update.Update` for a " +#~ "complete list of available update types." +#~ " Specify an empty list to receive " +#~ "all update types except *chat_member* " +#~ "(default). If not specified, the " +#~ "previous setting will be used." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po index 8c7dbc2b..def69532 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/promote_chat_member.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-12 00:22+0200\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/methods/promote_chat_member.rst:3 msgid "promoteChatMember" @@ -58,23 +58,9 @@ msgstr "" #: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_chat:1 of msgid "" "Pass :code:`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" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_messages:1 of -msgid "" -"Pass :code:`True` if the administrator can create channel posts, channels" -" only" -msgstr "" - -#: ../../docstring -#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_messages:1 of -msgid "" -"Pass :code:`True` if the administrator can edit messages of other users " -"and can pin messages, channels only" +"boost list in channels, see channel members, report spam messages, see " +"anonymous administrators in supergroups and ignore slow mode. Implied by " +"any other administrator privilege" msgstr "" #: ../../docstring @@ -94,7 +80,7 @@ msgstr "" #: of msgid "" "Pass :code:`True` if the administrator can restrict, ban or unban chat " -"members" +"members, or access supergroup statistics" msgstr "" #: ../../docstring @@ -119,11 +105,47 @@ msgstr "" msgid "Pass :code:`True` if the administrator can invite new users to the chat" msgstr "" +#: ../../docstring +#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_messages:1 of +msgid "" +"Pass :code:`True` if the administrator can post messages in the channel, " +"or access channel statistics; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_messages:1 of +msgid "" +"Pass :code:`True` if the administrator can edit messages of other users " +"and can pin messages; channels only" +msgstr "" + #: ../../docstring #: aiogram.methods.promote_chat_member.PromoteChatMember.can_pin_messages:1 of msgid "Pass :code:`True` if the administrator can pin messages, supergroups only" msgstr "" +#: ../../docstring +#: aiogram.methods.promote_chat_member.PromoteChatMember.can_post_stories:1 of +msgid "" +"Pass :code:`True` if the administrator can post stories in the channel; " +"channels only" +msgstr "" + +#: ../../docstring +#: aiogram.methods.promote_chat_member.PromoteChatMember.can_edit_stories:1 of +msgid "" +"Pass :code:`True` if the administrator can edit stories posted by other " +"users; channels only" +msgstr "" + +#: ../../docstring +#: aiogram.methods.promote_chat_member.PromoteChatMember.can_delete_stories:1 +#: of +msgid "" +"Pass :code:`True` if the administrator can delete stories posted by other" +" users; channels only" +msgstr "" + #: ../../docstring #: aiogram.methods.promote_chat_member.PromoteChatMember.can_manage_topics:1 of msgid "" @@ -131,43 +153,43 @@ msgid "" "reopen forum topics, supergroups only" msgstr "" -#: ../../api/methods/promote_chat_member.rst:14 +#: ../../api/methods/promote_chat_member.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/promote_chat_member.rst:17 +#: ../../api/methods/promote_chat_member.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/promote_chat_member.rst:25 +#: ../../api/methods/promote_chat_member.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/promote_chat_member.rst:27 +#: ../../api/methods/promote_chat_member.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/promote_chat_member.rst:29 +#: ../../api/methods/promote_chat_member.rst:30 msgid ":code:`from aiogram.methods.promote_chat_member import PromoteChatMember`" msgstr "" -#: ../../api/methods/promote_chat_member.rst:30 +#: ../../api/methods/promote_chat_member.rst:31 msgid "alias: :code:`from aiogram.methods import PromoteChatMember`" msgstr "" -#: ../../api/methods/promote_chat_member.rst:33 +#: ../../api/methods/promote_chat_member.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/promote_chat_member.rst:40 +#: ../../api/methods/promote_chat_member.rst:41 msgid "As reply into Webhook in handler" msgstr "" -#: ../../api/methods/promote_chat_member.rst:48 +#: ../../api/methods/promote_chat_member.rst:49 msgid "As shortcut from received object" msgstr "" -#: ../../api/methods/promote_chat_member.rst:50 +#: ../../api/methods/promote_chat_member.rst:51 msgid ":meth:`aiogram.types.chat.Chat.promote`" msgstr "" @@ -181,3 +203,29 @@ msgstr "" #~ " him)" #~ msgstr "" +#~ msgid "" +#~ "Pass :code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can create channel posts, channels only" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can edit messages of other users " +#~ "and can pin messages, channels only" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can restrict, ban or unban chat " +#~ "members" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po index 10f3b913..c1ec7a3a 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/methods/set_webhook.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/methods/set_webhook.rst:3 msgid "setWebhook" @@ -98,8 +98,8 @@ msgstr "" #: ../../docstring aiogram.methods.set_webhook.SetWebhook.allowed_updates:1 of msgid "" "A JSON-serialized list of the update types you want your bot to receive. " -"For example, specify ['message', 'edited_channel_post', 'callback_query']" -" to only receive updates of these types. See " +"For example, specify :code:`[\"message\", \"edited_channel_post\", " +"\"callback_query\"]` to only receive updates of these types. See " ":class:`aiogram.types.update.Update` for a complete list of available " "update types. Specify an empty list to receive all update types except " "*chat_member* (default). If not specified, the previous setting will be " @@ -119,34 +119,48 @@ msgid "" " is useful to ensure that the request comes from a webhook set by you." msgstr "" -#: ../../api/methods/set_webhook.rst:14 +#: ../../api/methods/set_webhook.rst:15 msgid "Usage" msgstr "" -#: ../../api/methods/set_webhook.rst:17 +#: ../../api/methods/set_webhook.rst:18 msgid "As bot method" msgstr "" -#: ../../api/methods/set_webhook.rst:25 +#: ../../api/methods/set_webhook.rst:26 msgid "Method as object" msgstr "" -#: ../../api/methods/set_webhook.rst:27 +#: ../../api/methods/set_webhook.rst:28 msgid "Imports:" msgstr "" -#: ../../api/methods/set_webhook.rst:29 +#: ../../api/methods/set_webhook.rst:30 msgid ":code:`from aiogram.methods.set_webhook import SetWebhook`" msgstr "" -#: ../../api/methods/set_webhook.rst:30 +#: ../../api/methods/set_webhook.rst:31 msgid "alias: :code:`from aiogram.methods import SetWebhook`" msgstr "" -#: ../../api/methods/set_webhook.rst:33 +#: ../../api/methods/set_webhook.rst:34 msgid "With specific bot" msgstr "" -#: ../../api/methods/set_webhook.rst:40 +#: ../../api/methods/set_webhook.rst:41 msgid "As reply into Webhook in handler" msgstr "" + +#~ msgid "" +#~ "A JSON-serialized list of the " +#~ "update types you want your bot to" +#~ " receive. For example, specify ['message'," +#~ " 'edited_channel_post', 'callback_query'] to only" +#~ " receive updates of these types. See" +#~ " :class:`aiogram.types.update.Update` for a " +#~ "complete list of available update types." +#~ " Specify an empty list to receive " +#~ "all update types except *chat_member* " +#~ "(default). If not specified, the " +#~ "previous setting will be used." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po index c44c2853..ab7d4b2b 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-08 19:04+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/types/chat.rst:3 msgid "Chat" @@ -997,38 +997,26 @@ msgstr "" #: aiogram.types.chat.Chat.promote:12 of msgid "" "Pass :code:`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" +"boost list in channels, see channel members, report spam messages, see " +"anonymous administrators in supergroups and ignore slow mode. Implied by " +"any other administrator privilege" msgstr "" #: aiogram.types.chat.Chat.promote:13 of -msgid "" -"Pass :code:`True` if the administrator can create channel posts, channels" -" only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:14 of -msgid "" -"Pass :code:`True` if the administrator can edit messages of other users " -"and can pin messages, channels only" -msgstr "" - -#: aiogram.types.chat.Chat.promote:15 of msgid "Pass :code:`True` if the administrator can delete messages of other users" msgstr "" -#: aiogram.types.chat.Chat.promote:16 of +#: aiogram.types.chat.Chat.promote:14 of msgid "Pass :code:`True` if the administrator can manage video chats" msgstr "" -#: aiogram.types.chat.Chat.promote:17 of +#: aiogram.types.chat.Chat.promote:15 of msgid "" "Pass :code:`True` if the administrator can restrict, ban or unban chat " -"members" +"members, or access supergroup statistics" msgstr "" -#: aiogram.types.chat.Chat.promote:18 of +#: aiogram.types.chat.Chat.promote:16 of msgid "" "Pass :code:`True` if the administrator can add new administrators with a " "subset of their own privileges or demote administrators that they have " @@ -1036,27 +1024,57 @@ msgid "" "appointed by him)" msgstr "" -#: aiogram.types.chat.Chat.promote:19 of +#: aiogram.types.chat.Chat.promote:17 of msgid "" "Pass :code:`True` if the administrator can change chat title, photo and " "other settings" msgstr "" -#: aiogram.types.chat.Chat.promote:20 of +#: aiogram.types.chat.Chat.promote:18 of msgid "Pass :code:`True` if the administrator can invite new users to the chat" msgstr "" +#: aiogram.types.chat.Chat.promote:19 of +msgid "" +"Pass :code:`True` if the administrator can post messages in the channel, " +"or access channel statistics; channels only" +msgstr "" + +#: aiogram.types.chat.Chat.promote:20 of +msgid "" +"Pass :code:`True` if the administrator can edit messages of other users " +"and can pin messages; channels only" +msgstr "" + #: aiogram.types.chat.Chat.promote:21 of msgid "Pass :code:`True` if the administrator can pin messages, supergroups only" msgstr "" #: aiogram.types.chat.Chat.promote:22 of msgid "" +"Pass :code:`True` if the administrator can post stories in the channel; " +"channels only" +msgstr "" + +#: aiogram.types.chat.Chat.promote:23 of +msgid "" +"Pass :code:`True` if the administrator can edit stories posted by other " +"users; channels only" +msgstr "" + +#: aiogram.types.chat.Chat.promote:24 of +msgid "" +"Pass :code:`True` if the administrator can delete stories posted by other" +" users; channels only" +msgstr "" + +#: aiogram.types.chat.Chat.promote:25 of +msgid "" "Pass :code:`True` if the user is allowed to create, rename, close, and " "reopen forum topics, supergroups only" msgstr "" -#: aiogram.types.chat.Chat.promote:23 of +#: aiogram.types.chat.Chat.promote:26 of msgid "" "instance of method " ":class:`aiogram.methods.promote_chat_member.PromoteChatMember`" @@ -1350,3 +1368,30 @@ msgstr "" #~ "be banned forever. Applied for " #~ "supergroups and channels only." #~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`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" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can create channel posts, channels only" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can edit messages of other users " +#~ "and can pin messages, channels only" +#~ msgstr "" + +#~ msgid "" +#~ "Pass :code:`True` if the administrator " +#~ "can restrict, ban or unban chat " +#~ "members" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po index 9a336d08..2ddb6393 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_administrator_rights.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-08 19:04+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/types/chat_administrator_rights.rst:3 msgid "ChatAdministratorRights" @@ -39,10 +39,10 @@ msgstr "" #: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_manage_chat:1 #: of msgid "" -":code:`True`, if the administrator can access the chat event log, chat " -"statistics, boost list in channels, message statistics in channels, see " -"channel members, see anonymous administrators in supergroups and ignore " -"slow mode. Implied by any other administrator privilege" +":code:`True`, if the administrator can access the chat event log, boost " +"list in channels, see channel members, report spam messages, see " +"anonymous administrators in supergroups and ignore slow mode. Implied by " +"any other administrator privilege" msgstr "" #: ../../docstring @@ -60,7 +60,9 @@ msgstr "" #: ../../docstring #: aiogram.types.chat_administrator_rights.ChatAdministratorRights.can_restrict_members:1 #: of -msgid ":code:`True`, if the administrator can restrict, ban or unban chat members" +msgid "" +":code:`True`, if the administrator can restrict, ban or unban chat " +"members, or access supergroup statistics" msgstr "" #: ../../docstring @@ -92,7 +94,7 @@ msgstr "" #: of msgid "" "*Optional*. :code:`True`, if the administrator can post messages in the " -"channel; channels only" +"channel, or access channel statistics; channels only" msgstr "" #: ../../docstring @@ -132,7 +134,7 @@ msgstr "" #: of msgid "" "*Optional*. :code:`True`, if the administrator can delete stories posted " -"by other users" +"by other users; channels only" msgstr "" #: ../../docstring @@ -168,3 +170,31 @@ msgstr "" #~ " can post in the channel; channels" #~ " only" #~ msgstr "" + +#~ msgid "" +#~ ":code:`True`, if the administrator can " +#~ "access the chat event log, chat " +#~ "statistics, boost list in channels, " +#~ "message statistics in channels, see " +#~ "channel members, see anonymous administrators" +#~ " in supergroups and ignore slow mode." +#~ " Implied by any other administrator " +#~ "privilege" +#~ msgstr "" + +#~ msgid "" +#~ ":code:`True`, if the administrator can " +#~ "restrict, ban or unban chat members" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post messages in the channel;" +#~ " channels only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can delete stories posted by other" +#~ " users" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po index c6884b77..f66a9047 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_join_request.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-30 18:31+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/types/chat_join_request.rst:3 msgid "ChatJoinRequest" @@ -46,7 +46,7 @@ msgid "" "languages may have difficulty/silent defects in interpreting it. But it " "has at most 52 significant bits, so a 64-bit integer or double-precision " "float type are safe for storing this identifier. The bot can use this " -"identifier for 24 hours to send messages until the join request is " +"identifier for 5 minutes to send messages until the join request is " "processed, assuming no other administrator contacted the user." msgstr "" @@ -1616,3 +1616,21 @@ msgstr "" #~ msgid "Use this method to decline a chat join request." #~ msgstr "" + +#~ msgid "" +#~ "Identifier of a private chat with " +#~ "the user who sent the join " +#~ "request. This number may have more " +#~ "than 32 significant bits and some " +#~ "programming languages may have " +#~ "difficulty/silent defects in interpreting it." +#~ " But it has at most 52 " +#~ "significant bits, so a 64-bit integer" +#~ " or double-precision float type are" +#~ " safe for storing this identifier. " +#~ "The bot can use this identifier " +#~ "for 24 hours to send messages " +#~ "until the join request is processed, " +#~ "assuming no other administrator contacted " +#~ "the user." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po index ccd470cf..77d9edce 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/chat_member_administrator.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-08 19:04+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/types/chat_member_administrator.rst:3 msgid "ChatMemberAdministrator" @@ -60,10 +60,10 @@ msgstr "" #: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_manage_chat:1 #: of msgid "" -":code:`True`, if the administrator can access the chat event log, chat " -"statistics, boost list in channels, message statistics in channels, see " -"channel members, see anonymous administrators in supergroups and ignore " -"slow mode. Implied by any other administrator privilege" +":code:`True`, if the administrator can access the chat event log, boost " +"list in channels, see channel members, report spam messages, see " +"anonymous administrators in supergroups and ignore slow mode. Implied by " +"any other administrator privilege" msgstr "" #: ../../docstring @@ -81,7 +81,9 @@ msgstr "" #: ../../docstring #: aiogram.types.chat_member_administrator.ChatMemberAdministrator.can_restrict_members:1 #: of -msgid ":code:`True`, if the administrator can restrict, ban or unban chat members" +msgid "" +":code:`True`, if the administrator can restrict, ban or unban chat " +"members, or access supergroup statistics" msgstr "" #: ../../docstring @@ -113,7 +115,7 @@ msgstr "" #: of msgid "" "*Optional*. :code:`True`, if the administrator can post messages in the " -"channel; channels only" +"channel, or access channel statistics; channels only" msgstr "" #: ../../docstring @@ -153,7 +155,7 @@ msgstr "" #: of msgid "" "*Optional*. :code:`True`, if the administrator can delete stories posted " -"by other users" +"by other users; channels only" msgstr "" #: ../../docstring @@ -195,3 +197,31 @@ msgstr "" #~ " can post in the channel; channels" #~ " only" #~ msgstr "" + +#~ msgid "" +#~ ":code:`True`, if the administrator can " +#~ "access the chat event log, chat " +#~ "statistics, boost list in channels, " +#~ "message statistics in channels, see " +#~ "channel members, see anonymous administrators" +#~ " in supergroups and ignore slow mode." +#~ " Implied by any other administrator " +#~ "privilege" +#~ msgstr "" + +#~ msgid "" +#~ ":code:`True`, if the administrator can " +#~ "restrict, ban or unban chat members" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can post messages in the channel;" +#~ " channels only" +#~ msgstr "" + +#~ msgid "" +#~ "*Optional*. :code:`True`, if the administrator" +#~ " can delete stories posted by other" +#~ " users" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po b/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po index 940848f4..342d9e20 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po +++ b/docs/locale/uk_UA/LC_MESSAGES/api/types/update.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.13.1\n" #: ../../api/types/update.rst:3 msgid "Update" @@ -124,8 +124,9 @@ msgstr "" #: ../../docstring aiogram.types.update.Update.chat_member:1 of msgid "" "*Optional*. A chat member's status was updated in a chat. The bot must be" -" an administrator in the chat and must explicitly specify 'chat_member' " -"in the list of *allowed_updates* to receive these updates." +" an administrator in the chat and must explicitly specify " +":code:`\"chat_member\"` in the list of *allowed_updates* to receive these" +" updates." msgstr "" #: ../../docstring aiogram.types.update.Update.chat_join_request:1 of @@ -146,3 +147,12 @@ msgstr "" #: aiogram.types.update.UpdateTypeLookupError:1 of msgid "Update does not contain any known event type." msgstr "" + +#~ msgid "" +#~ "*Optional*. A chat member's status was" +#~ " updated in a chat. The bot " +#~ "must be an administrator in the " +#~ "chat and must explicitly specify " +#~ "'chat_member' in the list of " +#~ "*allowed_updates* to receive these updates." +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/changelog.po b/docs/locale/uk_UA/LC_MESSAGES/changelog.po index 0d08487c..2c32c200 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/changelog.po +++ b/docs/locale/uk_UA/LC_MESSAGES/changelog.po @@ -8,21 +8,37 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-10-08 19:04+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../../CHANGES.rst:3 msgid "Changelog" msgstr "" #: ../../[towncrier-fragments]:2 -msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-08)" +msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-29)" +msgstr "" + +#: ../../../CHANGES.rst:33 ../../../CHANGES.rst:122 ../../../CHANGES.rst:180 +#: ../../../CHANGES.rst:222 ../../../CHANGES.rst:385 ../../../CHANGES.rst:485 +#: ../../../CHANGES.rst:545 ../../../CHANGES.rst:596 ../../../CHANGES.rst:669 +#: ../../../CHANGES.rst:710 ../../../CHANGES.rst:748 ../../../CHANGES.rst:796 +#: ../../../CHANGES.rst:872 ../../../CHANGES.rst:905 ../../../CHANGES.rst:936 +#: ../../[towncrier-fragments]:5 +msgid "Features" +msgstr "" + +#: ../../[towncrier-fragments]:7 +msgid "" +"The new FSM strategy CHAT_TOPIC, which sets the state for the entire " +"topic in the chat, also works in private messages and regular groups " +"without topics. `#1343 `_" msgstr "" #: ../../../CHANGES.rst:23 ../../../CHANGES.rst:44 ../../../CHANGES.rst:56 @@ -31,11 +47,11 @@ msgstr "" #: ../../../CHANGES.rst:559 ../../../CHANGES.rst:620 ../../../CHANGES.rst:678 #: ../../../CHANGES.rst:724 ../../../CHANGES.rst:772 ../../../CHANGES.rst:828 #: ../../../CHANGES.rst:913 ../../../CHANGES.rst:945 -#: ../../[towncrier-fragments]:5 +#: ../../[towncrier-fragments]:12 msgid "Bugfixes" msgstr "" -#: ../../[towncrier-fragments]:7 +#: ../../[towncrier-fragments]:14 msgid "" "Fixed ``parse_mode`` in ``send_copy`` helper. Disable by default. `#1332 " "`_" @@ -43,59 +59,79 @@ msgstr "" #: ../../../CHANGES.rst:89 ../../../CHANGES.rst:159 ../../../CHANGES.rst:204 #: ../../../CHANGES.rst:289 ../../../CHANGES.rst:522 ../../../CHANGES.rst:572 -#: ../../../CHANGES.rst:952 ../../[towncrier-fragments]:12 +#: ../../../CHANGES.rst:952 ../../[towncrier-fragments]:19 msgid "Improved Documentation" msgstr "" -#: ../../[towncrier-fragments]:14 +#: ../../[towncrier-fragments]:21 msgid "" "Corrected grammatical errors, improved sentence structures, translation " "for migration 2.x-3.x `#1302 " "`_" msgstr "" +#: ../../[towncrier-fragments]:23 +msgid "" +"Minor typo correction, specifically in module naming + some grammar. " +"`#1340 `_" +msgstr "" + +#: ../../[towncrier-fragments]:25 +msgid "" +"Added `CITATION.cff` file for automatic academic citation generation. Now" +" you can copy citation from the GitHub page and paste it into your paper." +" `#1351 `_" +msgstr "" + #: ../../../CHANGES.rst:110 ../../../CHANGES.rst:166 ../../../CHANGES.rst:305 #: ../../../CHANGES.rst:456 ../../../CHANGES.rst:533 ../../../CHANGES.rst:586 #: ../../../CHANGES.rst:637 ../../../CHANGES.rst:691 ../../../CHANGES.rst:733 #: ../../../CHANGES.rst:779 ../../../CHANGES.rst:839 ../../../CHANGES.rst:860 #: ../../../CHANGES.rst:883 ../../../CHANGES.rst:920 ../../../CHANGES.rst:959 -#: ../../[towncrier-fragments]:19 +#: ../../[towncrier-fragments]:31 msgid "Misc" msgstr "" -#: ../../[towncrier-fragments]:21 +#: ../../[towncrier-fragments]:33 msgid "Updated dependencies, bumped minimum required version:" msgstr "" -#: ../../[towncrier-fragments]:23 +#: ../../[towncrier-fragments]:35 msgid ":code:`magic-filter` - fixed `.resolve` operation" msgstr "" -#: ../../[towncrier-fragments]:24 +#: ../../[towncrier-fragments]:36 msgid ":code:`pydantic` - fixed compatibility (broken in 2.4)" msgstr "" -#: ../../[towncrier-fragments]:25 +#: ../../[towncrier-fragments]:37 msgid "" ":code:`aiodns` - added new dependency to the :code:`fast` extras " "(:code:`pip install aiogram[fast]`)" msgstr "" -#: ../../[towncrier-fragments]:26 +#: ../../[towncrier-fragments]:38 msgid "*others...*" msgstr "" -#: ../../[towncrier-fragments]:27 +#: ../../[towncrier-fragments]:39 msgid "`#1327 `_" msgstr "" -#: ../../[towncrier-fragments]:28 +#: ../../[towncrier-fragments]:40 msgid "" "Prevent update handling task pointers from being garbage collected, " "backport from 2.x `#1331 " "`_" msgstr "" +#: ../../[towncrier-fragments]:42 +msgid "" +"Updated :code:`typing-extensions` package version range in dependencies " +"to fix compatibility with :code:`FastAPI` `#1347 " +"`_" +msgstr "" + #: ../../../CHANGES.rst:20 msgid "3.1.1 (2023-09-25)" msgstr "" @@ -110,14 +146,6 @@ msgstr "" msgid "3.1.0 (2023-09-22)" msgstr "" -#: ../../../CHANGES.rst:33 ../../../CHANGES.rst:122 ../../../CHANGES.rst:180 -#: ../../../CHANGES.rst:222 ../../../CHANGES.rst:385 ../../../CHANGES.rst:485 -#: ../../../CHANGES.rst:545 ../../../CHANGES.rst:596 ../../../CHANGES.rst:669 -#: ../../../CHANGES.rst:710 ../../../CHANGES.rst:748 ../../../CHANGES.rst:796 -#: ../../../CHANGES.rst:872 ../../../CHANGES.rst:905 ../../../CHANGES.rst:936 -msgid "Features" -msgstr "" - #: ../../../CHANGES.rst:35 msgid "" "Added support for custom encoders/decoders for payload (and also for " @@ -3171,3 +3199,6 @@ msgstr "" #: ../../../HISTORY.rst:497 msgid "0.1 (2017-06-03)" msgstr "" + +#~ msgid "\\ |release| [UNRELEASED DRAFT] (2023-10-08)" +#~ msgstr "" diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po index 40d8b4f5..632ef480 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/class_based_handlers/base.po @@ -5,17 +5,16 @@ # msgid "" msgstr "" -"Project-Id-Version: aiogram\n" +"Project-Id-Version: aiogram\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-10-01 22:51+0300\n" +"POT-Creation-Date: 2023-10-29 02:16+0300\n" "PO-Revision-Date: 2022-12-11 22:34+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" -"X-Generator: Poedit 3.2.2\n" +"Generated-By: Babel 2.13.1\n" #: ../../dispatcher/class_based_handlers/base.rst:5 msgid "BaseHandler" @@ -30,7 +29,8 @@ msgstr "" "використовуватися в усіх інших обробниках на основі класу." #: ../../dispatcher/class_based_handlers/base.rst:9 -msgid "Import: :code:`from aiogram.handler import BaseHandler`" +#, fuzzy +msgid "Import: :code:`from aiogram.handlers import BaseHandler`" msgstr "Import: :code:`from aiogram.handler import BaseHandler`" #: ../../dispatcher/class_based_handlers/base.rst:11 @@ -42,21 +42,23 @@ msgstr "" "def handle(self) -> Any: ...`" #: ../../dispatcher/class_based_handlers/base.rst:13 +#, fuzzy msgid "" -"This class is also have an default initializer and you don't need to " -"change it. Initializer accepts current event and all contextual data and " +"This class also has a default initializer and you don't need to change " +"it. The initializer accepts the incoming event and all contextual data, " "which can be accessed from the handler through attributes: :code:`event: " "TelegramEvent` and :code:`data: Dict[Any, str]`" msgstr "" -"Цей клас також має ініціалізатор за замовчуванням, і вам не потрібно " -"його змінювати. Ініціалізатор приймає поточну подію та всі контекстні " -"дані, доступ до яких можна отримати з обробника через атрибути: :code:" -"`event: TelegramEvent` and :code:`data: Dict[Any, str]`" +"Цей клас також має ініціалізатор за замовчуванням, і вам не потрібно його" +" змінювати. Ініціалізатор приймає поточну подію та всі контекстні дані, " +"доступ до яких можна отримати з обробника через атрибути: :code:`event: " +"TelegramEvent` and :code:`data: Dict[Any, str]`" #: ../../dispatcher/class_based_handlers/base.rst:17 +#, fuzzy msgid "" -"If instance of the bot is specified in context data or current context " -"it can be accessed through *bot* class attribute." +"If an instance of the bot is specified in context data or current context" +" it can be accessed through *bot* class attribute." msgstr "" "Якщо екземпляр бота вказано в контекстних даних або поточному контексті, " "до нього можна отримати доступ через атрибут класу *bot*." diff --git a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po index 6d9f582d..880fef46 100644 --- a/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po +++ b/docs/locale/uk_UA/LC_MESSAGES/dispatcher/webhook.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: aiogram \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-06 16:52+0300\n" +"POT-Creation-Date: 2023-10-29 02:22+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.13.1\n" #: ../../dispatcher/webhook.rst:5 msgid "Webhook" @@ -46,8 +46,8 @@ msgstr "" #: ../../dispatcher/webhook.rst:20 msgid "" "Generally to use webhook with aiogram you should use any async web " -"framework. By out of the box aiogram has an aiohttp integration, so " -"we'll use it." +"framework. By out of the box aiogram has an aiohttp integration, so we'll" +" use it." msgstr "" #: ../../dispatcher/webhook.rst:25 @@ -268,9 +268,7 @@ msgid "Without reverse proxy (not recommended)" msgstr "" #: ../../dispatcher/webhook.rst:100 -msgid "" -"In case you want can't use reverse proxy, you can use aiohttp's ssl " -"context." +msgid "In case without using reverse proxy, you can use aiohttp's ssl context." msgstr "" #: ../../dispatcher/webhook.rst:102 @@ -301,3 +299,9 @@ msgid "" ":code:`multipart/form-data` or :code:`application/json` response body " "manually." msgstr "" + +#~ msgid "" +#~ "In case you want can't use reverse" +#~ " proxy, you can use aiohttp's ssl " +#~ "context." +#~ msgstr "" From 9b5e4620686ca7a895a441e55f8dbc534f7cce6d Mon Sep 17 00:00:00 2001 From: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:03:21 +0200 Subject: [PATCH 133/139] Add current handler to filters, so that flags can be retrieved from it. (#1360) * Add current handler to filters, so that flags can be retrieved from it. * run black isort * add changelog * Update CHANGES/1360.bugfix.rst Co-authored-by: Alex Root Junior --------- Co-authored-by: Alex Root Junior --- CHANGES/1360.bugfix.rst | 1 + aiogram/dispatcher/event/telegram.py | 3 ++- tests/test_api/test_types/test_message.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 CHANGES/1360.bugfix.rst diff --git a/CHANGES/1360.bugfix.rst b/CHANGES/1360.bugfix.rst new file mode 100644 index 00000000..e02d0ea4 --- /dev/null +++ b/CHANGES/1360.bugfix.rst @@ -0,0 +1 @@ +Added current handler to filters, so that flags can be retrieved from it. diff --git a/aiogram/dispatcher/event/telegram.py b/aiogram/dispatcher/event/telegram.py index 4a370074..afa8938e 100644 --- a/aiogram/dispatcher/event/telegram.py +++ b/aiogram/dispatcher/event/telegram.py @@ -109,9 +109,10 @@ class TelegramEventObserver: Handler will be called when all its filters are pass. """ for handler in self.handlers: + kwargs["handler"] = handler result, data = await handler.check(event, **kwargs) if result: - kwargs.update(data, handler=handler) + kwargs.update(data) try: wrapped_inner = self.outer_middleware.wrap_middlewares( self._resolve_middlewares(), diff --git a/tests/test_api/test_types/test_message.py b/tests/test_api/test_types/test_message.py index 4e893d20..7efe6c89 100644 --- a/tests/test_api/test_types/test_message.py +++ b/tests/test_api/test_types/test_message.py @@ -36,6 +36,7 @@ from aiogram.methods import ( UnpinChatMessage, ) from aiogram.types import ( + UNSET_PARSE_MODE, Animation, Audio, Chat, @@ -75,7 +76,6 @@ from aiogram.types import ( VideoNote, Voice, WebAppData, - UNSET_PARSE_MODE, ) from aiogram.types.message import ContentType, Message From e76f4c38ad440fc87177442650152c3efee10a45 Mon Sep 17 00:00:00 2001 From: RootShinobi <111008396+RootShinobi@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:04:58 +0200 Subject: [PATCH 134/139] new improved CallableMixin (#1357) * optimized CallableMixin * changes and Sets * reformatted * Update CHANGES/1357.misc.rst Co-authored-by: Oleg A. --------- Co-authored-by: Oleg A. --- CHANGES/1357.misc.rst | 1 + aiogram/dispatcher/event/handler.py | 15 ++++++++------- tests/test_dispatcher/test_event/test_handler.py | 14 ++++++++------ 3 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 CHANGES/1357.misc.rst diff --git a/CHANGES/1357.misc.rst b/CHANGES/1357.misc.rst new file mode 100644 index 00000000..96822c1f --- /dev/null +++ b/CHANGES/1357.misc.rst @@ -0,0 +1 @@ +Speeded up CallableMixin processing by caching references to nested objects and simplifying kwargs assembly. diff --git a/aiogram/dispatcher/event/handler.py b/aiogram/dispatcher/event/handler.py index 2b71eed5..1045e667 100644 --- a/aiogram/dispatcher/event/handler.py +++ b/aiogram/dispatcher/event/handler.py @@ -4,7 +4,7 @@ import inspect import warnings from dataclasses import dataclass, field from functools import partial -from typing import Any, Callable, Dict, List, Optional, Tuple +from typing import Any, Callable, Dict, List, Optional, Tuple, Set from magic_filter.magic import MagicFilter as OriginalMagicFilter @@ -21,20 +21,21 @@ CallbackType = Callable[..., Any] class CallableMixin: callback: CallbackType awaitable: bool = field(init=False) - spec: inspect.FullArgSpec = field(init=False) + params: Set[str] = field(init=False) + varkw: bool = field(init=False) def __post_init__(self) -> None: callback = inspect.unwrap(self.callback) self.awaitable = inspect.isawaitable(callback) or inspect.iscoroutinefunction(callback) - self.spec = inspect.getfullargspec(callback) + spec = inspect.getfullargspec(callback) + self.params = {*spec.args, *spec.kwonlyargs} + self.varkw = spec.varkw is not None def _prepare_kwargs(self, kwargs: Dict[str, Any]) -> Dict[str, Any]: - if self.spec.varkw: + if self.varkw: return kwargs - return { - k: v for k, v in kwargs.items() if k in self.spec.args or k in self.spec.kwonlyargs - } + return {k: kwargs[k] for k in self.params if k in kwargs} async def call(self, *args: Any, **kwargs: Any) -> Any: wrapped = partial(self.callback, *args, **self._prepare_kwargs(kwargs)) diff --git a/tests/test_dispatcher/test_event/test_handler.py b/tests/test_dispatcher/test_event/test_handler.py index f7000d8e..c2b11cff 100644 --- a/tests/test_dispatcher/test_event/test_handler.py +++ b/tests/test_dispatcher/test_event/test_handler.py @@ -1,5 +1,5 @@ import functools -from typing import Any, Dict, Union +from typing import Any, Dict, Union, Callable, Set import pytest from magic_filter import F as A @@ -61,9 +61,9 @@ class TestCallableMixin: pytest.param(SyncCallable(), {"self", "foo", "bar", "baz"}), ], ) - def test_init_args_spec(self, callback, args): + def test_init_args_spec(self, callback: Callable, args: Set[str]): obj = CallableMixin(callback) - assert set(obj.spec.args) == args + assert set(obj.params) == args def test_init_decorated(self): def decorator(func): @@ -85,9 +85,9 @@ class TestCallableMixin: obj1 = CallableMixin(callback1) obj2 = CallableMixin(callback2) - assert set(obj1.spec.args) == {"foo", "bar", "baz"} + assert set(obj1.params) == {"foo", "bar", "baz"} assert obj1.callback == callback1 - assert set(obj2.spec.args) == {"foo", "bar", "baz"} + assert set(obj2.params) == {"foo", "bar", "baz"} assert obj2.callback == callback2 @pytest.mark.parametrize( @@ -124,7 +124,9 @@ class TestCallableMixin: ), ], ) - def test_prepare_kwargs(self, callback, kwargs, result): + def test_prepare_kwargs( + self, callback: Callable, kwargs: Dict[str, Any], result: Dict[str, Any] + ): obj = CallableMixin(callback) assert obj._prepare_kwargs(kwargs) == result From 7b30caed53815307645a6b0f5741c536072e3173 Mon Sep 17 00:00:00 2001 From: Egor Date: Tue, 14 Nov 2023 05:44:04 +0500 Subject: [PATCH 135/139] chore(docs): update middleware.rst (#1353) * Update middleware.rst * changes --- CHANGES/1353.doc.rst | 1 + docs/api/session/middleware.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1353.doc.rst diff --git a/CHANGES/1353.doc.rst b/CHANGES/1353.doc.rst new file mode 100644 index 00000000..15f6d28e --- /dev/null +++ b/CHANGES/1353.doc.rst @@ -0,0 +1 @@ +Minor typo correction in middleware docs. diff --git a/docs/api/session/middleware.rst b/docs/api/session/middleware.rst index fb06daca..5a312c3e 100644 --- a/docs/api/session/middleware.rst +++ b/docs/api/session/middleware.rst @@ -53,7 +53,7 @@ Class based session middleware .. note:: - this middlewware is already implemented inside aiogram, so, if you want to use it you can + this middleware is already implemented inside aiogram, so, if you want to use it you can just import it :code:`from aiogram.client.session.middlewares.request_logging import RequestLogging` From 6153b4f8058a56c747e9092c6e72a078a2590d90 Mon Sep 17 00:00:00 2001 From: JRoot Junior Date: Tue, 14 Nov 2023 02:53:13 +0200 Subject: [PATCH 136/139] #1314 Mention that event can be skipped --- docs/dispatcher/middlewares.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/dispatcher/middlewares.rst b/docs/dispatcher/middlewares.rst index 56d07ef1..c63c6709 100644 --- a/docs/dispatcher/middlewares.rst +++ b/docs/dispatcher/middlewares.rst @@ -59,7 +59,8 @@ Examples .. danger:: - Middleware should always call :code:`await handler(event, data)` to propagate event for next middleware/handler + Middleware should always call :code:`await handler(event, data)` to propagate event for next middleware/handler. + If you want to stop processing event in middleware you should not call :code:`await handler(event, data)`. Class-based From 29d766fef23548846caab394c55e642a1c06f9ef Mon Sep 17 00:00:00 2001 From: JRoot Junior Date: Tue, 14 Nov 2023 02:57:23 +0200 Subject: [PATCH 137/139] #1006 Update parameter description in chat_action.py The comment describing the 'initial_sleep' parameter in the chat_action.py script has been revised for clarity. It now accurately specifies this parameter's purpose as the waiting period prior to the first sending of the action, rather than just the first iteration. --- aiogram/utils/chat_action.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aiogram/utils/chat_action.py b/aiogram/utils/chat_action.py index 6d7b7400..4d5fb567 100644 --- a/aiogram/utils/chat_action.py +++ b/aiogram/utils/chat_action.py @@ -43,7 +43,7 @@ class ChatActionSender: :param chat_id: target chat id :param action: chat action type :param interval: interval between iterations - :param initial_sleep: sleep before first iteration + :param initial_sleep: sleep before first sending of the action """ self.chat_id = chat_id self.message_thread_id = message_thread_id From 9a2a72fe97e5684325e064ba6eaafbd8274d5c11 Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 14 Nov 2023 13:35:37 +0300 Subject: [PATCH 138/139] Add pydantic 2.5 support (#1361) * chore: add pydantic 2.5 support * docs: add changelog --- CHANGES/1361.misc | 1 + pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 CHANGES/1361.misc diff --git a/CHANGES/1361.misc b/CHANGES/1361.misc new file mode 100644 index 00000000..6e6413d8 --- /dev/null +++ b/CHANGES/1361.misc @@ -0,0 +1 @@ +Added pydantic v2.5 support. diff --git a/pyproject.toml b/pyproject.toml index 9b0511ab..0557223b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ classifiers = [ dependencies = [ "magic-filter>=1.0.12,<1.1", "aiohttp~=3.8.5", - "pydantic>=2.4.1,<2.5", + "pydantic>=2.4.1,<2.6", "aiofiles~=23.2.1", "certifi>=2023.7.22", "typing-extensions>=4.7.0,<=5.0", From 3ad5ed6bc2e9d4928af3125942e7e57b2dd01da7 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Thu, 16 Nov 2023 02:08:36 +0200 Subject: [PATCH 139/139] Fixed ResourceWarnings in tests (#1366) * #1320 Update pytest configuration and tests cleanup This commit modifies the pytest's configuration file, `pyproject.toml`, to remove filterwarnings settings. It also makes changes in various test files; the Redis isolation test is now using the provided `redis_storage` fixture instead of setting up its own connection, pytest.mark.filterwarnings is no longer used in `test_isolation.py` and `test_aiohttp_session.py` properly closes off sessions. * Added changelog * Fixed coverage for the RedisEventIsolation --- CHANGES/1320.misc.rst | 1 + pyproject.toml | 7 ++-- tests/conftest.py | 19 ++-------- .../test_session/test_aiohttp_session.py | 2 + tests/test_fsm/storage/test_isolation.py | 37 ++++++++++++++++++- 5 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 CHANGES/1320.misc.rst diff --git a/CHANGES/1320.misc.rst b/CHANGES/1320.misc.rst new file mode 100644 index 00000000..f7e079ce --- /dev/null +++ b/CHANGES/1320.misc.rst @@ -0,0 +1 @@ +Fixed ResourceWarning in the tests, reworked :code:`RedisEventsIsolation` fixture to use Redis connection from :code:`RedisStorage` diff --git a/pyproject.toml b/pyproject.toml index 0557223b..2ae2f1b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -237,10 +237,9 @@ asyncio_mode = "auto" testpaths = [ "tests", ] -filterwarnings = [ - "error", - "ignore::pytest.PytestUnraisableExceptionWarning", -] +#filterwarnings = [ +# "error", +#] [tool.coverage.run] branch = false diff --git a/tests/conftest.py b/tests/conftest.py index 1c72f386..3e063ff1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -38,7 +38,7 @@ def pytest_collection_modifyitems(config, items): raise UsageError(f"Invalid redis URI {redis_uri!r}: {e}") -@pytest.fixture(scope="session") +@pytest.fixture() def redis_server(request): redis_uri = request.config.getoption("--redis") return redis_uri @@ -73,20 +73,9 @@ async def memory_storage(): @pytest.fixture() @pytest.mark.redis -async def redis_isolation(redis_server): - if not redis_server: - pytest.skip("Redis is not available here") - isolation = RedisEventIsolation.from_url(redis_server) - try: - await isolation.redis.info() - except ConnectionError as e: - pytest.skip(str(e)) - try: - yield isolation - finally: - conn = await isolation.redis - await conn.flushdb() - await isolation.close() +async def redis_isolation(redis_storage): + isolation = redis_storage.create_isolation() + return isolation @pytest.fixture() diff --git a/tests/test_api/test_client/test_session/test_aiohttp_session.py b/tests/test_api/test_client/test_session/test_aiohttp_session.py index bc7aff83..6740dcc1 100644 --- a/tests/test_api/test_client/test_session/test_aiohttp_session.py +++ b/tests/test_api/test_client/test_session/test_aiohttp_session.py @@ -96,6 +96,8 @@ class TestAiohttpSession: await session.close() mocked_close.assert_called_once() + await session.close() + def test_build_form_data_with_data_only(self, bot: MockedBot): class TestMethod(TelegramMethod[bool]): __api_method__ = "test" diff --git a/tests/test_fsm/storage/test_isolation.py b/tests/test_fsm/storage/test_isolation.py index 60e240ae..8be303c4 100644 --- a/tests/test_fsm/storage/test_isolation.py +++ b/tests/test_fsm/storage/test_isolation.py @@ -1,6 +1,10 @@ +from unittest import mock +from unittest.mock import AsyncMock, patch + import pytest from aiogram.fsm.storage.base import BaseEventIsolation, StorageKey +from aiogram.fsm.storage.redis import RedisEventIsolation from tests.mocked_bot import MockedBot @@ -18,7 +22,6 @@ def create_storage_key(bot: MockedBot): ], ) class TestIsolations: - @pytest.mark.filterwarnings("ignore::ResourceWarning") async def test_lock( self, isolation: BaseEventIsolation, @@ -26,3 +29,35 @@ class TestIsolations: ): async with isolation.lock(key=storage_key): assert True, "Are you kidding me?" + + +class TestRedisEventIsolation: + def test_init_without_key_builder(self): + redis = AsyncMock() + isolation = RedisEventIsolation(redis=redis) + assert isolation.redis is redis + + assert isolation.key_builder is not None + + def test_init_with_key_builder(self): + redis = AsyncMock() + key_builder = AsyncMock() + isolation = RedisEventIsolation(redis=redis, key_builder=key_builder) + assert isolation.redis is redis + assert isolation.key_builder is key_builder + + def test_create_from_url(self): + with patch("redis.asyncio.connection.ConnectionPool.from_url") as pool: + isolation = RedisEventIsolation.from_url("redis://localhost:6379/0") + assert isinstance(isolation, RedisEventIsolation) + assert isolation.redis is not None + assert isolation.key_builder is not None + + assert pool.called_once_with("redis://localhost:6379/0") + + async def test_close(self): + isolation = RedisEventIsolation(redis=AsyncMock()) + await isolation.close() + + # close is not called because connection should be closed from the storage + # assert isolation.redis.close.called_once()