telegrinder 0.1.dev170__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of telegrinder might be problematic. Click here for more details.
- telegrinder/__init__.py +2 -2
- telegrinder/api/__init__.py +1 -2
- telegrinder/api/api.py +15 -6
- telegrinder/api/error.py +2 -1
- telegrinder/api/token.py +36 -0
- telegrinder/bot/__init__.py +12 -6
- telegrinder/bot/bot.py +18 -6
- telegrinder/bot/cute_types/__init__.py +7 -7
- telegrinder/bot/cute_types/base.py +122 -20
- telegrinder/bot/cute_types/callback_query.py +10 -6
- telegrinder/bot/cute_types/chat_join_request.py +4 -5
- telegrinder/bot/cute_types/chat_member_updated.py +4 -6
- telegrinder/bot/cute_types/inline_query.py +3 -4
- telegrinder/bot/cute_types/message.py +32 -21
- telegrinder/bot/cute_types/update.py +51 -4
- telegrinder/bot/cute_types/utils.py +3 -466
- telegrinder/bot/dispatch/__init__.py +10 -11
- telegrinder/bot/dispatch/abc.py +8 -5
- telegrinder/bot/dispatch/context.py +17 -8
- telegrinder/bot/dispatch/dispatch.py +71 -48
- telegrinder/bot/dispatch/handler/__init__.py +3 -3
- telegrinder/bot/dispatch/handler/abc.py +4 -4
- telegrinder/bot/dispatch/handler/func.py +46 -22
- telegrinder/bot/dispatch/handler/message_reply.py +6 -7
- telegrinder/bot/dispatch/middleware/__init__.py +1 -1
- telegrinder/bot/dispatch/middleware/abc.py +2 -2
- telegrinder/bot/dispatch/process.py +38 -19
- telegrinder/bot/dispatch/return_manager/__init__.py +4 -4
- telegrinder/bot/dispatch/return_manager/abc.py +3 -3
- telegrinder/bot/dispatch/return_manager/callback_query.py +1 -2
- telegrinder/bot/dispatch/return_manager/inline_query.py +1 -2
- telegrinder/bot/dispatch/return_manager/message.py +1 -2
- telegrinder/bot/dispatch/view/__init__.py +8 -8
- telegrinder/bot/dispatch/view/abc.py +18 -16
- telegrinder/bot/dispatch/view/box.py +75 -64
- telegrinder/bot/dispatch/view/callback_query.py +1 -2
- telegrinder/bot/dispatch/view/chat_join_request.py +1 -2
- telegrinder/bot/dispatch/view/chat_member.py +16 -2
- telegrinder/bot/dispatch/view/inline_query.py +1 -2
- telegrinder/bot/dispatch/view/message.py +12 -5
- telegrinder/bot/dispatch/view/raw.py +9 -8
- telegrinder/bot/dispatch/waiter_machine/__init__.py +3 -3
- telegrinder/bot/dispatch/waiter_machine/machine.py +12 -8
- telegrinder/bot/dispatch/waiter_machine/middleware.py +1 -1
- telegrinder/bot/dispatch/waiter_machine/short_state.py +4 -3
- telegrinder/bot/polling/abc.py +1 -1
- telegrinder/bot/polling/polling.py +6 -6
- telegrinder/bot/rules/__init__.py +20 -20
- telegrinder/bot/rules/abc.py +57 -43
- telegrinder/bot/rules/adapter/__init__.py +5 -5
- telegrinder/bot/rules/adapter/abc.py +6 -3
- telegrinder/bot/rules/adapter/errors.py +2 -1
- telegrinder/bot/rules/adapter/event.py +28 -13
- telegrinder/bot/rules/adapter/node.py +28 -22
- telegrinder/bot/rules/adapter/raw_update.py +13 -5
- telegrinder/bot/rules/callback_data.py +4 -4
- telegrinder/bot/rules/chat_join.py +4 -4
- telegrinder/bot/rules/command.py +5 -7
- telegrinder/bot/rules/func.py +2 -2
- telegrinder/bot/rules/fuzzy.py +1 -1
- telegrinder/bot/rules/inline.py +3 -3
- telegrinder/bot/rules/integer.py +1 -2
- telegrinder/bot/rules/markup.py +5 -3
- telegrinder/bot/rules/message_entities.py +2 -2
- telegrinder/bot/rules/node.py +2 -2
- telegrinder/bot/rules/regex.py +1 -1
- telegrinder/bot/rules/rule_enum.py +1 -1
- telegrinder/bot/rules/text.py +1 -2
- telegrinder/bot/rules/update.py +1 -2
- telegrinder/bot/scenario/abc.py +2 -2
- telegrinder/bot/scenario/checkbox.py +3 -4
- telegrinder/bot/scenario/choice.py +1 -2
- telegrinder/model.py +89 -45
- telegrinder/modules.py +3 -3
- telegrinder/msgspec_utils.py +85 -57
- telegrinder/node/__init__.py +17 -10
- telegrinder/node/attachment.py +19 -16
- telegrinder/node/base.py +46 -22
- telegrinder/node/callback_query.py +5 -9
- telegrinder/node/command.py +6 -2
- telegrinder/node/composer.py +102 -77
- telegrinder/node/container.py +3 -3
- telegrinder/node/event.py +68 -0
- telegrinder/node/me.py +3 -0
- telegrinder/node/message.py +6 -10
- telegrinder/node/polymorphic.py +15 -10
- telegrinder/node/rule.py +20 -6
- telegrinder/node/scope.py +9 -1
- telegrinder/node/source.py +21 -11
- telegrinder/node/text.py +4 -4
- telegrinder/node/update.py +7 -4
- telegrinder/py.typed +0 -0
- telegrinder/rules.py +59 -0
- telegrinder/tools/__init__.py +2 -2
- telegrinder/tools/buttons.py +5 -10
- telegrinder/tools/error_handler/abc.py +2 -2
- telegrinder/tools/error_handler/error.py +2 -0
- telegrinder/tools/error_handler/error_handler.py +6 -6
- telegrinder/tools/formatting/spec_html_formats.py +10 -10
- telegrinder/tools/global_context/__init__.py +2 -2
- telegrinder/tools/global_context/global_context.py +3 -3
- telegrinder/tools/global_context/telegrinder_ctx.py +4 -4
- telegrinder/tools/keyboard.py +3 -3
- telegrinder/tools/loop_wrapper/loop_wrapper.py +47 -13
- telegrinder/tools/magic.py +96 -18
- telegrinder/types/__init__.py +1 -0
- telegrinder/types/enums.py +2 -0
- telegrinder/types/methods.py +91 -15
- telegrinder/types/objects.py +49 -24
- telegrinder/verification_utils.py +1 -3
- {telegrinder-0.1.dev170.dist-info → telegrinder-0.2.0.dist-info}/METADATA +2 -2
- telegrinder-0.2.0.dist-info/RECORD +145 -0
- telegrinder/api/abc.py +0 -73
- telegrinder-0.1.dev170.dist-info/RECORD +0 -143
- {telegrinder-0.1.dev170.dist-info → telegrinder-0.2.0.dist-info}/LICENSE +0 -0
- {telegrinder-0.1.dev170.dist-info → telegrinder-0.2.0.dist-info}/WHEEL +0 -0
telegrinder/types/__init__.py
CHANGED
telegrinder/types/enums.py
CHANGED
|
@@ -352,6 +352,7 @@ class Currency(str, enum.Enum):
|
|
|
352
352
|
YER = "YER"
|
|
353
353
|
ZAR = "ZAR"
|
|
354
354
|
XTR = "XTR"
|
|
355
|
+
"""Telegram stars."""
|
|
355
356
|
|
|
356
357
|
|
|
357
358
|
class InlineQueryResultType(str, enum.Enum):
|
|
@@ -442,6 +443,7 @@ class ChatType(str, enum.Enum):
|
|
|
442
443
|
GROUP = "group"
|
|
443
444
|
SUPERGROUP = "supergroup"
|
|
444
445
|
CHANNEL = "channel"
|
|
446
|
+
SENDER = "sender"
|
|
445
447
|
|
|
446
448
|
|
|
447
449
|
class ChatMemberStatus(str, enum.Enum):
|
telegrinder/types/methods.py
CHANGED
|
@@ -9,11 +9,11 @@ from telegrinder.types.enums import * # noqa: F403
|
|
|
9
9
|
from telegrinder.types.objects import * # noqa: F403
|
|
10
10
|
|
|
11
11
|
if typing.TYPE_CHECKING:
|
|
12
|
-
from telegrinder.api
|
|
12
|
+
from telegrinder.api import API
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class APIMethods:
|
|
16
|
-
"""Telegram Bot API 7.
|
|
16
|
+
"""Telegram Bot API 7.9 methods, released `August 14, 2024`."""
|
|
17
17
|
|
|
18
18
|
default_params = ProxiedDict(
|
|
19
19
|
typing.TypedDict(
|
|
@@ -21,7 +21,7 @@ class APIMethods:
|
|
|
21
21
|
)
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
-
def __init__(self, api: "
|
|
24
|
+
def __init__(self, api: "API") -> None:
|
|
25
25
|
self.api = api
|
|
26
26
|
|
|
27
27
|
async def get_updates(
|
|
@@ -1053,6 +1053,7 @@ class APIMethods:
|
|
|
1053
1053
|
chat_id: int | str,
|
|
1054
1054
|
star_count: int,
|
|
1055
1055
|
media: list[InputPaidMedia],
|
|
1056
|
+
business_connection_id: str | None = None,
|
|
1056
1057
|
caption: str | None = None,
|
|
1057
1058
|
parse_mode: str | None = default_params["parse_mode"],
|
|
1058
1059
|
caption_entities: list[MessageEntity] | None = None,
|
|
@@ -1069,11 +1070,15 @@ class APIMethods:
|
|
|
1069
1070
|
) -> Result[Message, APIError]:
|
|
1070
1071
|
"""Method `sendPaidMedia`, see the [documentation](https://core.telegram.org/bots/api#sendpaidmedia)
|
|
1071
1072
|
|
|
1072
|
-
Use this method to send paid media
|
|
1073
|
-
|
|
1073
|
+
Use this method to send paid media. On success, the sent Message is returned.
|
|
1074
|
+
|
|
1075
|
+
:param business_connection_id: Unique identifier of the business connection on behalf of which the message \
|
|
1076
|
+
will be sent.
|
|
1074
1077
|
|
|
1075
1078
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
1076
|
-
(in the format @channelusername).
|
|
1079
|
+
(in the format @channelusername). If the chat is a channel, all Telegram \
|
|
1080
|
+
Star proceeds from this media will be credited to the chat's balance. Otherwise, \
|
|
1081
|
+
they will be credited to the bot's balance.
|
|
1077
1082
|
|
|
1078
1083
|
:param star_count: The number of Telegram Stars that must be paid to buy access to the media. \
|
|
1079
1084
|
|
|
@@ -1568,7 +1573,7 @@ class APIMethods:
|
|
|
1568
1573
|
Use this method to change the chosen reactions on a message. Service messages
|
|
1569
1574
|
can't be reacted to. Automatically forwarded messages from a channel to
|
|
1570
1575
|
its discussion group have the same available reactions as messages in the
|
|
1571
|
-
channel. Returns True on success.
|
|
1576
|
+
channel. Bots can't use paid reactions. Returns True on success.
|
|
1572
1577
|
|
|
1573
1578
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
1574
1579
|
(in the format @channelusername).
|
|
@@ -1579,7 +1584,8 @@ class APIMethods:
|
|
|
1579
1584
|
:param reaction: A JSON-serialized list of reaction types to set on the message. Currently, \
|
|
1580
1585
|
as non-premium users, bots can set up to one reaction per message. A custom \
|
|
1581
1586
|
emoji reaction can be used if it is either already present on the message \
|
|
1582
|
-
or explicitly allowed by chat administrators.
|
|
1587
|
+
or explicitly allowed by chat administrators. Paid reactions can't be \
|
|
1588
|
+
used by bots.
|
|
1583
1589
|
|
|
1584
1590
|
:param is_big: Pass True to set the reaction with a big animation.
|
|
1585
1591
|
"""
|
|
@@ -2035,6 +2041,67 @@ class APIMethods:
|
|
|
2035
2041
|
)
|
|
2036
2042
|
return full_result(method_response, ChatInviteLink)
|
|
2037
2043
|
|
|
2044
|
+
async def create_chat_subscription_invite_link(
|
|
2045
|
+
self,
|
|
2046
|
+
chat_id: int | str,
|
|
2047
|
+
subscription_period: int,
|
|
2048
|
+
subscription_price: int,
|
|
2049
|
+
name: str | None = None,
|
|
2050
|
+
**other: typing.Any,
|
|
2051
|
+
) -> Result[ChatInviteLink, APIError]:
|
|
2052
|
+
"""Method `createChatSubscriptionInviteLink`, see the [documentation](https://core.telegram.org/bots/api#createchatsubscriptioninvitelink)
|
|
2053
|
+
|
|
2054
|
+
Use this method to create a subscription invite link for a channel chat.
|
|
2055
|
+
The bot must have the can_invite_users administrator rights. The link
|
|
2056
|
+
can be edited using the method editChatSubscriptionInviteLink or revoked
|
|
2057
|
+
using the method revokeChatInviteLink. Returns the new invite link as
|
|
2058
|
+
a ChatInviteLink object.
|
|
2059
|
+
|
|
2060
|
+
:param chat_id: Unique identifier for the target channel chat or username of the target \
|
|
2061
|
+
channel (in the format @channelusername).
|
|
2062
|
+
|
|
2063
|
+
:param name: Invite link name; 0-32 characters.
|
|
2064
|
+
|
|
2065
|
+
:param subscription_period: The number of seconds the subscription will be active for before the next \
|
|
2066
|
+
payment. Currently, it must always be 2592000 (30 days).
|
|
2067
|
+
|
|
2068
|
+
:param subscription_price: The amount of Telegram Stars a user must pay initially and after each subsequent \
|
|
2069
|
+
subscription period to be a member of the chat; 1-2500.
|
|
2070
|
+
"""
|
|
2071
|
+
|
|
2072
|
+
method_response = await self.api.request_raw(
|
|
2073
|
+
"createChatSubscriptionInviteLink",
|
|
2074
|
+
get_params(locals()),
|
|
2075
|
+
)
|
|
2076
|
+
return full_result(method_response, ChatInviteLink)
|
|
2077
|
+
|
|
2078
|
+
async def edit_chat_subscription_invite_link(
|
|
2079
|
+
self,
|
|
2080
|
+
chat_id: int | str,
|
|
2081
|
+
invite_link: str,
|
|
2082
|
+
name: str | None = None,
|
|
2083
|
+
**other: typing.Any,
|
|
2084
|
+
) -> Result[ChatInviteLink, APIError]:
|
|
2085
|
+
"""Method `editChatSubscriptionInviteLink`, see the [documentation](https://core.telegram.org/bots/api#editchatsubscriptioninvitelink)
|
|
2086
|
+
|
|
2087
|
+
Use this method to edit a subscription invite link created by the bot. The
|
|
2088
|
+
bot must have the can_invite_users administrator rights. Returns the
|
|
2089
|
+
edited invite link as a ChatInviteLink object.
|
|
2090
|
+
|
|
2091
|
+
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
2092
|
+
(in the format @channelusername).
|
|
2093
|
+
|
|
2094
|
+
:param invite_link: The invite link to edit.
|
|
2095
|
+
|
|
2096
|
+
:param name: Invite link name; 0-32 characters.
|
|
2097
|
+
"""
|
|
2098
|
+
|
|
2099
|
+
method_response = await self.api.request_raw(
|
|
2100
|
+
"editChatSubscriptionInviteLink",
|
|
2101
|
+
get_params(locals()),
|
|
2102
|
+
)
|
|
2103
|
+
return full_result(method_response, ChatInviteLink)
|
|
2104
|
+
|
|
2038
2105
|
async def revoke_chat_invite_link(
|
|
2039
2106
|
self,
|
|
2040
2107
|
chat_id: int | str,
|
|
@@ -2207,6 +2274,7 @@ class APIMethods:
|
|
|
2207
2274
|
self,
|
|
2208
2275
|
chat_id: int | str,
|
|
2209
2276
|
message_id: int,
|
|
2277
|
+
business_connection_id: str | None = None,
|
|
2210
2278
|
disable_notification: bool | None = None,
|
|
2211
2279
|
**other: typing.Any,
|
|
2212
2280
|
) -> Result[bool, APIError]:
|
|
@@ -2218,6 +2286,9 @@ class APIMethods:
|
|
|
2218
2286
|
in a supergroup or 'can_edit_messages' administrator right in a channel.
|
|
2219
2287
|
Returns True on success.
|
|
2220
2288
|
|
|
2289
|
+
:param business_connection_id: Unique identifier of the business connection on behalf of which the message \
|
|
2290
|
+
will be pinned.
|
|
2291
|
+
|
|
2221
2292
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
2222
2293
|
(in the format @channelusername).
|
|
2223
2294
|
|
|
@@ -2237,6 +2308,7 @@ class APIMethods:
|
|
|
2237
2308
|
async def unpin_chat_message(
|
|
2238
2309
|
self,
|
|
2239
2310
|
chat_id: int | str,
|
|
2311
|
+
business_connection_id: str | None = None,
|
|
2240
2312
|
message_id: int | None = None,
|
|
2241
2313
|
**other: typing.Any,
|
|
2242
2314
|
) -> Result[bool, APIError]:
|
|
@@ -2248,11 +2320,15 @@ class APIMethods:
|
|
|
2248
2320
|
in a supergroup or 'can_edit_messages' administrator right in a channel.
|
|
2249
2321
|
Returns True on success.
|
|
2250
2322
|
|
|
2323
|
+
:param business_connection_id: Unique identifier of the business connection on behalf of which the message \
|
|
2324
|
+
will be unpinned.
|
|
2325
|
+
|
|
2251
2326
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
2252
2327
|
(in the format @channelusername).
|
|
2253
2328
|
|
|
2254
|
-
:param message_id: Identifier of
|
|
2255
|
-
message (by sending
|
|
2329
|
+
:param message_id: Identifier of the message to unpin. Required if business_connection_id \
|
|
2330
|
+
is specified. If not specified, the most recent pinned message (by sending \
|
|
2331
|
+
date) will be unpinned.
|
|
2256
2332
|
"""
|
|
2257
2333
|
|
|
2258
2334
|
method_response = await self.api.request_raw(
|
|
@@ -2540,8 +2616,8 @@ class APIMethods:
|
|
|
2540
2616
|
|
|
2541
2617
|
Use this method to edit name and icon of a topic in a forum supergroup chat.
|
|
2542
2618
|
The bot must be an administrator in the chat for this to work and must have
|
|
2543
|
-
can_manage_topics administrator rights, unless it is the creator
|
|
2544
|
-
topic. Returns True on success.
|
|
2619
|
+
the can_manage_topics administrator rights, unless it is the creator
|
|
2620
|
+
of the topic. Returns True on success.
|
|
2545
2621
|
|
|
2546
2622
|
:param chat_id: Unique identifier for the target chat or username of the target supergroup \
|
|
2547
2623
|
(in the format @supergroupusername).
|
|
@@ -2672,7 +2748,7 @@ class APIMethods:
|
|
|
2672
2748
|
|
|
2673
2749
|
Use this method to edit the name of the 'General' topic in a forum supergroup
|
|
2674
2750
|
chat. The bot must be an administrator in the chat for this to work and must
|
|
2675
|
-
have can_manage_topics administrator rights. Returns True on success.
|
|
2751
|
+
have the can_manage_topics administrator rights. Returns True on success.
|
|
2676
2752
|
|
|
2677
2753
|
:param chat_id: Unique identifier for the target chat or username of the target supergroup \
|
|
2678
2754
|
(in the format @supergroupusername).
|
|
@@ -3929,9 +4005,9 @@ class APIMethods:
|
|
|
3929
4005
|
|
|
3930
4006
|
:param thumbnail: A .WEBP or .PNG image with the thumbnail, must be up to 128 kilobytes in size \
|
|
3931
4007
|
and have a width and height of exactly 100px, or a .TGS animation with a thumbnail \
|
|
3932
|
-
up to 32 kilobytes in size (see https://core.telegram.org/stickers#
|
|
4008
|
+
up to 32 kilobytes in size (see https://core.telegram.org/stickers#animation-requirements \
|
|
3933
4009
|
for animated sticker technical requirements), or a WEBM video with the \
|
|
3934
|
-
thumbnail up to 32 kilobytes in size; see https://core.telegram.org/stickers#video-
|
|
4010
|
+
thumbnail up to 32 kilobytes in size; see https://core.telegram.org/stickers#video-requirements \
|
|
3935
4011
|
for video sticker technical requirements. Pass a file_id as a String to \
|
|
3936
4012
|
send a file that already exists on the Telegram servers, pass an HTTP URL \
|
|
3937
4013
|
as a String for Telegram to get a file from the Internet, or upload a new one \
|
telegrinder/types/objects.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import pathlib
|
|
2
2
|
import typing
|
|
3
|
+
from functools import cached_property
|
|
3
4
|
|
|
4
5
|
from fntypes.co import Variative
|
|
5
6
|
|
|
@@ -35,6 +36,7 @@ class ReactionType(Model):
|
|
|
35
36
|
This object describes the type of a reaction. Currently, it can be one of
|
|
36
37
|
- ReactionTypeEmoji
|
|
37
38
|
- ReactionTypeCustomEmoji
|
|
39
|
+
- ReactionTypePaid
|
|
38
40
|
"""
|
|
39
41
|
|
|
40
42
|
|
|
@@ -320,20 +322,21 @@ class Update(Model):
|
|
|
320
322
|
"""Optional. A boost was removed from a chat. The bot must be an administrator
|
|
321
323
|
in the chat to receive these updates."""
|
|
322
324
|
|
|
323
|
-
def __eq__(self, other:
|
|
325
|
+
def __eq__(self, other: object) -> bool:
|
|
324
326
|
return isinstance(other, self.__class__) and self.update_type == other.update_type
|
|
325
327
|
|
|
326
|
-
@
|
|
328
|
+
@cached_property
|
|
327
329
|
def update_type(self) -> UpdateType:
|
|
328
330
|
"""Incoming update type."""
|
|
329
331
|
|
|
330
332
|
return UpdateType(
|
|
331
333
|
next(
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
self.
|
|
335
|
-
|
|
336
|
-
|
|
334
|
+
(
|
|
335
|
+
x
|
|
336
|
+
for x in self.__struct_fields__
|
|
337
|
+
if x != "update_id" and not isinstance(getattr(self, x), type(Nothing))
|
|
338
|
+
)
|
|
339
|
+
),
|
|
337
340
|
)
|
|
338
341
|
|
|
339
342
|
|
|
@@ -423,7 +426,10 @@ class User(Model):
|
|
|
423
426
|
"""Optional. True, if the bot can be connected to a Telegram Business account
|
|
424
427
|
to receive its messages. Returned only in getMe."""
|
|
425
428
|
|
|
426
|
-
|
|
429
|
+
has_main_web_app: Option[bool] = Nothing
|
|
430
|
+
"""Optional. True, if the bot has a main Web App. Returned only in getMe."""
|
|
431
|
+
|
|
432
|
+
def __eq__(self, other: object) -> bool:
|
|
427
433
|
return isinstance(other, self.__class__) and self.id == other.id
|
|
428
434
|
|
|
429
435
|
@property
|
|
@@ -469,7 +475,7 @@ class Chat(Model):
|
|
|
469
475
|
is_forum: Option[bool] = Nothing
|
|
470
476
|
"""Optional. True, if the supergroup chat is a forum (has topics enabled)."""
|
|
471
477
|
|
|
472
|
-
def __eq__(self, other:
|
|
478
|
+
def __eq__(self, other: object) -> bool:
|
|
473
479
|
return isinstance(other, self.__class__) and self.id == other.id
|
|
474
480
|
|
|
475
481
|
@property
|
|
@@ -541,7 +547,9 @@ class ChatFullInfo(Model):
|
|
|
541
547
|
personal_chat: Option["Chat"] = Nothing
|
|
542
548
|
"""Optional. For private chats, the personal channel of the user."""
|
|
543
549
|
|
|
544
|
-
available_reactions: Option[
|
|
550
|
+
available_reactions: Option[
|
|
551
|
+
list[Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji", "ReactionTypePaid"]]
|
|
552
|
+
] = Nothing
|
|
545
553
|
"""Optional. List of available reactions allowed in the chat. If omitted,
|
|
546
554
|
then all emoji reactions are allowed."""
|
|
547
555
|
|
|
@@ -670,17 +678,17 @@ class Message(MaybeInaccessibleMessage):
|
|
|
670
678
|
for supergroups only."""
|
|
671
679
|
|
|
672
680
|
from_: Option["User"] = Nothing
|
|
673
|
-
"""Optional. Sender of the message; empty for messages sent to channels.
|
|
674
|
-
backward compatibility, the
|
|
675
|
-
|
|
681
|
+
"""Optional. Sender of the message; may be empty for messages sent to channels.
|
|
682
|
+
For backward compatibility, if the message was sent on behalf of a chat,
|
|
683
|
+
the field contains a fake sender user in non-channel chats."""
|
|
676
684
|
|
|
677
685
|
sender_chat: Option["Chat"] = Nothing
|
|
678
|
-
"""Optional. Sender of the message
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
from contains a fake sender user in non-channel
|
|
683
|
-
|
|
686
|
+
"""Optional. Sender of the message when sent on behalf of a chat. For example,
|
|
687
|
+
the supergroup itself for messages sent by its anonymous administrators
|
|
688
|
+
or a linked channel for messages automatically forwarded to the channel's
|
|
689
|
+
discussion group. For backward compatibility, if the message was sent
|
|
690
|
+
on behalf of a chat, the field from contains a fake sender user in non-channel
|
|
691
|
+
chats."""
|
|
684
692
|
|
|
685
693
|
sender_boost_count: Option[int] = Nothing
|
|
686
694
|
"""Optional. If the sender of the message boosted the chat, the number of boosts
|
|
@@ -970,14 +978,14 @@ class Message(MaybeInaccessibleMessage):
|
|
|
970
978
|
"""Optional. Inline keyboard attached to the message. login_url buttons
|
|
971
979
|
are represented as ordinary url buttons."""
|
|
972
980
|
|
|
973
|
-
def __eq__(self, other:
|
|
981
|
+
def __eq__(self, other: object) -> bool:
|
|
974
982
|
return (
|
|
975
983
|
isinstance(other, self.__class__)
|
|
976
984
|
and self.message_id == other.message_id
|
|
977
985
|
and self.chat_id == other.chat_id
|
|
978
986
|
)
|
|
979
987
|
|
|
980
|
-
@
|
|
988
|
+
@cached_property
|
|
981
989
|
def content_type(self) -> ContentType:
|
|
982
990
|
"""Type of content that the message contains."""
|
|
983
991
|
|
|
@@ -3008,6 +3016,9 @@ class ChatMemberMember(ChatMember):
|
|
|
3008
3016
|
user: "User"
|
|
3009
3017
|
"""Information about the user."""
|
|
3010
3018
|
|
|
3019
|
+
until_date: Option[datetime] = Nothing
|
|
3020
|
+
"""Optional. Date when the user's subscription will expire; Unix time."""
|
|
3021
|
+
|
|
3011
3022
|
|
|
3012
3023
|
class ChatMemberRestricted(ChatMember):
|
|
3013
3024
|
"""Object `ChatMemberRestricted`, see the [documentation](https://core.telegram.org/bots/api#chatmemberrestricted).
|
|
@@ -3326,13 +3337,23 @@ class ReactionTypeCustomEmoji(ReactionType):
|
|
|
3326
3337
|
"""Custom emoji identifier."""
|
|
3327
3338
|
|
|
3328
3339
|
|
|
3340
|
+
class ReactionTypePaid(ReactionType):
|
|
3341
|
+
"""Object `ReactionTypePaid`, see the [documentation](https://core.telegram.org/bots/api#reactiontypepaid).
|
|
3342
|
+
|
|
3343
|
+
The reaction is paid.
|
|
3344
|
+
"""
|
|
3345
|
+
|
|
3346
|
+
type: typing.Literal["paid"]
|
|
3347
|
+
"""Type of the reaction, always `paid`."""
|
|
3348
|
+
|
|
3349
|
+
|
|
3329
3350
|
class ReactionCount(Model):
|
|
3330
3351
|
"""Object `ReactionCount`, see the [documentation](https://core.telegram.org/bots/api#reactioncount).
|
|
3331
3352
|
|
|
3332
3353
|
Represents a reaction added to a message along with the number of times it was added.
|
|
3333
3354
|
"""
|
|
3334
3355
|
|
|
3335
|
-
type: Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji"]
|
|
3356
|
+
type: Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji", "ReactionTypePaid"]
|
|
3336
3357
|
"""Type of the reaction."""
|
|
3337
3358
|
|
|
3338
3359
|
total_count: int
|
|
@@ -3354,10 +3375,10 @@ class MessageReactionUpdated(Model):
|
|
|
3354
3375
|
date: datetime
|
|
3355
3376
|
"""Date of the change in Unix time."""
|
|
3356
3377
|
|
|
3357
|
-
old_reaction: list[Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji"]]
|
|
3378
|
+
old_reaction: list[Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji", "ReactionTypePaid"]]
|
|
3358
3379
|
"""Previous list of reaction types that were set by the user."""
|
|
3359
3380
|
|
|
3360
|
-
new_reaction: list[Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji"]]
|
|
3381
|
+
new_reaction: list[Variative["ReactionTypeEmoji", "ReactionTypeCustomEmoji", "ReactionTypePaid"]]
|
|
3361
3382
|
"""New list of reaction types that have been set by the user."""
|
|
3362
3383
|
|
|
3363
3384
|
user: Option["User"] = Nothing
|
|
@@ -5746,6 +5767,9 @@ class TransactionPartnerUser(TransactionPartner):
|
|
|
5746
5767
|
invoice_payload: Option[str] = Nothing
|
|
5747
5768
|
"""Optional. Bot-specified invoice payload."""
|
|
5748
5769
|
|
|
5770
|
+
paid_media: Option[list[Variative["PaidMediaPreview", "PaidMediaPhoto", "PaidMediaVideo"]]] = Nothing
|
|
5771
|
+
"""Optional. Information about the paid media bought by the user."""
|
|
5772
|
+
|
|
5749
5773
|
|
|
5750
5774
|
class TransactionPartnerFragment(TransactionPartner):
|
|
5751
5775
|
"""Object `TransactionPartnerFragment`, see the [documentation](https://core.telegram.org/bots/api#transactionpartnerfragment).
|
|
@@ -6418,6 +6442,7 @@ __all__ = (
|
|
|
6418
6442
|
"ReactionType",
|
|
6419
6443
|
"ReactionTypeCustomEmoji",
|
|
6420
6444
|
"ReactionTypeEmoji",
|
|
6445
|
+
"ReactionTypePaid",
|
|
6421
6446
|
"RefundedPayment",
|
|
6422
6447
|
"ReplyKeyboardMarkup",
|
|
6423
6448
|
"ReplyKeyboardRemove",
|
|
@@ -2,8 +2,6 @@ import hashlib
|
|
|
2
2
|
import hmac
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from telegrinder.api.abc import Token
|
|
6
|
-
|
|
7
5
|
|
|
8
6
|
def verify_webapp_request(
|
|
9
7
|
secret_token: str,
|
|
@@ -15,7 +13,7 @@ def verify_webapp_request(
|
|
|
15
13
|
|
|
16
14
|
|
|
17
15
|
def webapp_validate_request(
|
|
18
|
-
bot_token:
|
|
16
|
+
bot_token: str,
|
|
19
17
|
request_query_params: typing.Mapping[str, typing.Any],
|
|
20
18
|
) -> bool:
|
|
21
19
|
"""Verifies authentity of webapp request by counting hash of its parameters."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: telegrinder
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Modern visionary telegram bot framework.
|
|
5
5
|
Home-page: https://github.com/timoniq/telegrinder
|
|
6
6
|
License: MIT
|
|
@@ -25,7 +25,7 @@ Requires-Dist: certifi (>=2024.2.2,<2025.0.0)
|
|
|
25
25
|
Requires-Dist: choicelib (>=0.1.5,<0.2.0)
|
|
26
26
|
Requires-Dist: colorama (>=0.4.0,<0.5.0)
|
|
27
27
|
Requires-Dist: envparse (>=0.2.0,<0.3.0)
|
|
28
|
-
Requires-Dist: fntypes (>=0.1.
|
|
28
|
+
Requires-Dist: fntypes (>=0.1.3,<0.2.0)
|
|
29
29
|
Requires-Dist: msgspec (>=0.18.6,<0.19.0)
|
|
30
30
|
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
|
31
31
|
Requires-Dist: typing-extensions (>=4.10.0,<5.0.0)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
telegrinder/__init__.py,sha256=6w6pzPVw-MOX4zBcNLxEeWfX5yCAbrltcjILhs0yA1I,4219
|
|
2
|
+
telegrinder/api/__init__.py,sha256=AFZ07UvdL4rhq9lZpB-j9JuGOONmfkvt8RfdG71ND38,226
|
|
3
|
+
telegrinder/api/api.py,sha256=OSwm2_mgHS9jCsKy_vdOJzVtH-j6v68ypkdtvKFlQ3w,2877
|
|
4
|
+
telegrinder/api/error.py,sha256=6_KBR819Tg9mLI7w5aHHYnrS8VSDYNkWIrHCnfgCFKk,422
|
|
5
|
+
telegrinder/api/response.py,sha256=d7Oxd5kOdbZNJiALkzkecHl8Y3K_BzCmsRq2Sn3otqA,491
|
|
6
|
+
telegrinder/api/token.py,sha256=wBnMHOgZZuQctsqPKT-u5GVdrj5vJ6u5zpJJOGS8or8,945
|
|
7
|
+
telegrinder/bot/__init__.py,sha256=VP6fLRT3QDU3a5noQdMBqh7IonyIKQrbPwJkgRI52M8,2033
|
|
8
|
+
telegrinder/bot/bot.py,sha256=qrB7GHglZG1wuXdPrAQ7kFzcuOT1og_ybwuem_feL-U,2780
|
|
9
|
+
telegrinder/bot/cute_types/__init__.py,sha256=moe1mSKesNqUBf8m11s2wiL0fJIa8JOEHRqDr2Tira8,639
|
|
10
|
+
telegrinder/bot/cute_types/base.py,sha256=neUZ44REmV_6boN6aPfuM5BeLlMzH9eZ9rgSgQxOx5A,8072
|
|
11
|
+
telegrinder/bot/cute_types/callback_query.py,sha256=nXFFnKHD4qJFpuzxySRRESloThWUGHdJRN8PshFfPY8,20885
|
|
12
|
+
telegrinder/bot/cute_types/chat_join_request.py,sha256=xL0DG-7XSbbKpYOeOuNFCg-wWMkO0uCPygUvV4G23mg,2305
|
|
13
|
+
telegrinder/bot/cute_types/chat_member_updated.py,sha256=Y6RHfqnnk3FlCmPcVMIfGk7nKvrwT5jAUGvCCXqI5G8,10904
|
|
14
|
+
telegrinder/bot/cute_types/inline_query.py,sha256=M9h4wNpFArKgoLPOO6H1AAl6jovuY9BnGwEmqfjp7bo,2493
|
|
15
|
+
telegrinder/bot/cute_types/message.py,sha256=SHK_svaTBS17ERP5kaxcyaiqPYKhhQYhmshFhAWnJtA,150451
|
|
16
|
+
telegrinder/bot/cute_types/update.py,sha256=61zCccok1muityF9HgJz_-sN7oVuw0-s-p_W6bPSpME,3102
|
|
17
|
+
telegrinder/bot/cute_types/utils.py,sha256=oJWRS7TCkvDhckwhc8yxw3Qn1NKvqDtEGTZ745qEbMg,2530
|
|
18
|
+
telegrinder/bot/dispatch/__init__.py,sha256=TMfpLX4OABPgTjntOcC5uxUc8x8VXNlxSc-7iDX73ww,1668
|
|
19
|
+
telegrinder/bot/dispatch/abc.py,sha256=u8mAHiyN0rAHQfw1YxKM4Nt8TovGSJjEAl4ARCj7m9A,650
|
|
20
|
+
telegrinder/bot/dispatch/context.py,sha256=A5kzxzsPy6e4SSd2DYrb5RJ5Flo0FIJOPs1H4T3NTgo,2588
|
|
21
|
+
telegrinder/bot/dispatch/dispatch.py,sha256=BWQSPuK9BICxqlZq71FqacMCAiIXggjRk6R3PAdl18s,6081
|
|
22
|
+
telegrinder/bot/dispatch/handler/__init__.py,sha256=oa4owBqZ3SWOuwYWuitPUjM1-KO0ivCPW1LGObn4Brk,265
|
|
23
|
+
telegrinder/bot/dispatch/handler/abc.py,sha256=FB2Xkiy-ZFsX2pEHfM7tCIXXjgWSouu07JYosICS9UA,578
|
|
24
|
+
telegrinder/bot/dispatch/handler/func.py,sha256=o0Ac47XhMq0wlwtMeNVvoQCavu9vSI3z6Zzssh4P8vU,4808
|
|
25
|
+
telegrinder/bot/dispatch/handler/message_reply.py,sha256=jkGFZ5boYE-uii0KTE5jmtNXdPo-Gs-Abj-_YpSQZVE,2010
|
|
26
|
+
telegrinder/bot/dispatch/middleware/__init__.py,sha256=znQGQ0jnBioEXr-2RPHOkmDbjei4LEbaTjgiE9c8aXI,96
|
|
27
|
+
telegrinder/bot/dispatch/middleware/abc.py,sha256=O3aiE44XpjE6h9iXYc_uWNZCBxDH1KAFrLej4nsJhUI,413
|
|
28
|
+
telegrinder/bot/dispatch/process.py,sha256=T_jfpXjYf0qSFdmY94lNDYUqhdjyCZycWEwCiAcLxBg,4198
|
|
29
|
+
telegrinder/bot/dispatch/return_manager/__init__.py,sha256=z1c9ZC_OdbEJ7utmA8jRiSjJQNTBLlTKmIQzrl-kDJs,602
|
|
30
|
+
telegrinder/bot/dispatch/return_manager/abc.py,sha256=iKO67VMmEbCLsqRDYmnWle2aL3xsZhjkxVKVXfeoVhE,3559
|
|
31
|
+
telegrinder/bot/dispatch/return_manager/callback_query.py,sha256=bxpOjdicsUeKael11UNeXjzHQZuc9sFHLLdPatwiTVg,690
|
|
32
|
+
telegrinder/bot/dispatch/return_manager/inline_query.py,sha256=xCxUzwSqDNAu8EfHW32WfcUtFHMUJ5OfJQQA19qI2nw,513
|
|
33
|
+
telegrinder/bot/dispatch/return_manager/message.py,sha256=fQ41ktzsg4Y26aUYhZOtQD8UYX8tvhVPRdfHfQ4UjZs,1198
|
|
34
|
+
telegrinder/bot/dispatch/view/__init__.py,sha256=xl5opgUk7iDTApGDQWcfDBHIq-rb1qOs2KcM6s2PpB0,801
|
|
35
|
+
telegrinder/bot/dispatch/view/abc.py,sha256=CEb3yMK77wfPeWQc1gqimdvrR7p6zM9s2yBSmBAnCJo,6757
|
|
36
|
+
telegrinder/bot/dispatch/view/box.py,sha256=ydqvuReC7lUZmuNLCEAbs6xOWDWBUj99MpTMhX0jWT8,5530
|
|
37
|
+
telegrinder/bot/dispatch/view/callback_query.py,sha256=wUSFDHykKpDRwZka6exMk2TliMTK1NFKSu88vyMe2Pc,588
|
|
38
|
+
telegrinder/bot/dispatch/view/chat_join_request.py,sha256=10K4BNSO7_-LaFvUWn8wa7JC1oqXLu-7L_NPqVG7CwA,475
|
|
39
|
+
telegrinder/bot/dispatch/view/chat_member.py,sha256=lkHms6P_fdnq7U1KeaL3RCt1ReeX9qDvr2123YsNhrY,1218
|
|
40
|
+
telegrinder/bot/dispatch/view/inline_query.py,sha256=wgel-euw601uk5qHIUZF7vyuhP5ggy0n4k-6103hM7A,559
|
|
41
|
+
telegrinder/bot/dispatch/view/message.py,sha256=FzfL8Yn42exnvMj8VuKwNlKaHPhij5eBzLCrju7FEc0,1356
|
|
42
|
+
telegrinder/bot/dispatch/view/raw.py,sha256=XMlJ0-XeuUfFUjSaI7ApR-gcGmSZ1eB_USHsCKdeMyY,3536
|
|
43
|
+
telegrinder/bot/dispatch/waiter_machine/__init__.py,sha256=IeoNZIxAut4QZCqiQrA6g_BcSFyUdA-oFgfBhsG6ipA,363
|
|
44
|
+
telegrinder/bot/dispatch/waiter_machine/machine.py,sha256=bMMYSwQPZbu58GYk364xu10_G8pLv0OAbvQRz69RhOs,5954
|
|
45
|
+
telegrinder/bot/dispatch/waiter_machine/middleware.py,sha256=f4IJgjMwACOetmAIo6mey5WYOmO3Sw3OG3pga5ptsCc,3528
|
|
46
|
+
telegrinder/bot/dispatch/waiter_machine/short_state.py,sha256=V1NZUwM_pjO-NVvN1kOnx4yo6Mdt5SXMmQnSY5xp21w,2116
|
|
47
|
+
telegrinder/bot/polling/__init__.py,sha256=OqfIFPS_V6UrCg-vCv9pkMFzTKdNbDP2faBfATs_TGg,94
|
|
48
|
+
telegrinder/bot/polling/abc.py,sha256=qFiKzWTWENK-sSuShC5cPlM-JS4In2c8-1_ARdwdTms,442
|
|
49
|
+
telegrinder/bot/polling/polling.py,sha256=w6_d6hOWY2ER5UG6EgGl2ceLvgJNDjeK13sUUmxWcfc,4714
|
|
50
|
+
telegrinder/bot/rules/__init__.py,sha256=0uKfqa0myqjIBcwzfq5YxoRn0aZFR4IlQ3joFROIFEA,2772
|
|
51
|
+
telegrinder/bot/rules/abc.py,sha256=-y5dlftZZaYVPuvJsEmgYcM9nd8MDj3mdlN4Et1Vje8,6122
|
|
52
|
+
telegrinder/bot/rules/adapter/__init__.py,sha256=kWcGnK0N26WsOwtF2n_yy1M2YMOtOp75931-ssVtOps,445
|
|
53
|
+
telegrinder/bot/rules/adapter/abc.py,sha256=lPyieSDDr1z98rZ4W6Ic8QzHDzCEU9xIYrPKU9qDCas,682
|
|
54
|
+
telegrinder/bot/rules/adapter/errors.py,sha256=2r_UBTWm5-heU-NchBfobC1f848EWeC64nKvprGnAAY,73
|
|
55
|
+
telegrinder/bot/rules/adapter/event.py,sha256=XDeHYGwOS7bYsI5bP-iPg5Ut_dzGbTBC089OkJhSfpY,2772
|
|
56
|
+
telegrinder/bot/rules/adapter/node.py,sha256=VuC_LGGkZh6GKW3dCvfDZhbiA8WJyddY8xxzerUZ7us,1663
|
|
57
|
+
telegrinder/bot/rules/adapter/raw_update.py,sha256=r-AeEyGdJS8zpAj5Edzy___OlgT4cMQH9MO-Cq1p0Vk,1039
|
|
58
|
+
telegrinder/bot/rules/callback_data.py,sha256=Sy2T2NF5eEvZ6BTsJd4j6KwAxLLcoZI0A4ZIF3bq7AM,5473
|
|
59
|
+
telegrinder/bot/rules/chat_join.py,sha256=mFmSOXkiU_wSuIjKgMxh8mIusqeH_-DKVvouxdgZe-4,1446
|
|
60
|
+
telegrinder/bot/rules/command.py,sha256=ESJA21HZHWT0RlYzHqOKBa223CTFbqwx_cgvNsWao44,3912
|
|
61
|
+
telegrinder/bot/rules/enum_text.py,sha256=YJ6S2fAQts8zCjCgoL7uUGWlnPOH59rjvA7Si2hKyR4,944
|
|
62
|
+
telegrinder/bot/rules/func.py,sha256=dqcxhC7dIP67Zi20iFz2jCWwwioM2NuemCM5dwpQDXg,769
|
|
63
|
+
telegrinder/bot/rules/fuzzy.py,sha256=Kx4S1y6iFqWM3uIUmor47mCmD08NRRJbcciH-dFs19M,676
|
|
64
|
+
telegrinder/bot/rules/inline.py,sha256=ETAwNdVdOKyk46oK2QoYCH1Sik-FbOGx4Ra5j63aGo8,1939
|
|
65
|
+
telegrinder/bot/rules/integer.py,sha256=kyH2MxlUlDF7i--2mwunOP6Xvjvw4V2IxSyjg8EIMuQ,435
|
|
66
|
+
telegrinder/bot/rules/is_from.py,sha256=x7vCbLzqFkFE0GxPgy_WA_mRFa_ogSNTzyJ6PK3Qx0o,3382
|
|
67
|
+
telegrinder/bot/rules/markup.py,sha256=B0nGzO3j9ee6I5272o3ILTuLcP_AL_yI0Lamlc34gxQ,1247
|
|
68
|
+
telegrinder/bot/rules/mention.py,sha256=xteWbtSjQN3KOXpB8RjuVYu18bGrLxNtVFg6oR-UkxU,435
|
|
69
|
+
telegrinder/bot/rules/message.py,sha256=VFfcEmNrw5sW4EYpk2XgLkSE5-rRr7sWC2dFE26Q3cI,442
|
|
70
|
+
telegrinder/bot/rules/message_entities.py,sha256=imYBaajJbtRZy4oYsCYnIAUlr6-OiDURuza647VQ_ZU,1097
|
|
71
|
+
telegrinder/bot/rules/node.py,sha256=IP7Ke-4hILb12XHNIresMf_87kXhlLfKOloShoQvWN0,892
|
|
72
|
+
telegrinder/bot/rules/regex.py,sha256=mjXXPX-NB2e3gFU6LFihLnKANcgUoAL5lOnfmhC3Qnc,1153
|
|
73
|
+
telegrinder/bot/rules/rule_enum.py,sha256=35GwPKLBTG_ESn4TZLcFJTLNjYXAi_d9wrfIDexoEH8,2113
|
|
74
|
+
telegrinder/bot/rules/start.py,sha256=3ciA28m9JNcM-1H2YnLrUNyS1Y4UsyYPR5MClrpdAdA,1154
|
|
75
|
+
telegrinder/bot/rules/text.py,sha256=h8SBiqF3_kkITDRCeDDanmNG80NRoSgj_dutjoV-26Y,964
|
|
76
|
+
telegrinder/bot/rules/update.py,sha256=k73pZzlzhw77gHAmeIsqehy0-EI2ec8wVGxGRIF_8ao,398
|
|
77
|
+
telegrinder/bot/scenario/__init__.py,sha256=nnPjdxdvjoEYYMRUEfWvIhZStiY1C984x1azdRRP9II,136
|
|
78
|
+
telegrinder/bot/scenario/abc.py,sha256=3UwnA9Nt6CETKm2YclD0gVbn-483fTSBriZADd3p-bM,468
|
|
79
|
+
telegrinder/bot/scenario/checkbox.py,sha256=DT4g2exfnSuCqhdla-tsHq4jQ9m5bkgb8Its-ZRfYX0,4187
|
|
80
|
+
telegrinder/bot/scenario/choice.py,sha256=3xkkhSzJWWUI81rlcqM_NpfKIjinsq_y-CFKL0Uz6gc,1464
|
|
81
|
+
telegrinder/client/__init__.py,sha256=ZiS1Wb_l_kv3FHzEEi1oXtFLwlA_HXmWOzeN0xA3E7Y,104
|
|
82
|
+
telegrinder/client/abc.py,sha256=OxsTX_PLYBEeFT9zpidFUzAbQL9BM7rQqru7zdn5DiQ,1611
|
|
83
|
+
telegrinder/client/aiohttp.py,sha256=AqmuHd6Z3zy96YBe7xIMC4U8Hi9SA7j-0EI7xYE3ZCU,4085
|
|
84
|
+
telegrinder/model.py,sha256=bUGDzw_yjrh5MFf1G2DYBBXJnk4o9RpNCN06mKxs6d4,7334
|
|
85
|
+
telegrinder/modules.py,sha256=GDGBT79wTcC_vEG4-1zWe4E5fMNbp6-n6AwJoYF_Oek,7945
|
|
86
|
+
telegrinder/msgspec_json.py,sha256=phfyhUvYYZUGEcI6RAyRx9lnARPK_Fqtw3Q0MEJnuUk,226
|
|
87
|
+
telegrinder/msgspec_utils.py,sha256=UkuN8H5mD4d4CtaclHTrJuylBgXd3i_wX8qmW1PUgLw,10524
|
|
88
|
+
telegrinder/node/__init__.py,sha256=f4rkFvg0TeAjZehHd6qloxHZectsFsTWPh6opdekhSY,1376
|
|
89
|
+
telegrinder/node/attachment.py,sha256=n79uAt1ixgnr8qjBMNstu36qe4Fli63kSvpgW1WO7S8,3061
|
|
90
|
+
telegrinder/node/base.py,sha256=xvpnNhzj4CG29wOQpJ3oAJEyVbk7bLhcD770gJwMARc,3417
|
|
91
|
+
telegrinder/node/callback_query.py,sha256=aDXnDGQb6H7im5J8A-M3vfZHczg0PrFAjUexIK2dTUM,507
|
|
92
|
+
telegrinder/node/command.py,sha256=S6povhUFXJ3o5keuOzTP7nbIrZ16KKkQNK3xji1LPb4,874
|
|
93
|
+
telegrinder/node/composer.py,sha256=gxce2wCPkIrhhKxh2YpndjxIqXzCmpTWGiqiZT2ewV4,6292
|
|
94
|
+
telegrinder/node/container.py,sha256=j1BR5AeAx5oY-zokBUPw79tMKo9aZ_Em89f616QaXiA,643
|
|
95
|
+
telegrinder/node/event.py,sha256=1mFMqzjQb7hoStZW6vAdvm--2zsYO8tNzEvSqIyHqJ8,2361
|
|
96
|
+
telegrinder/node/me.py,sha256=9RhRLsIe1e-yDLZ6ehfmGvhhLYRMu1VAjkSri9H0V8E,378
|
|
97
|
+
telegrinder/node/message.py,sha256=TbT2zeR9kVR-QAqVkRAmtse4U0BHoWfQ4esKMKLzm7A,449
|
|
98
|
+
telegrinder/node/polymorphic.py,sha256=foT6Zp1Woiu8QDVFqirlfV0qpEO5ggMl_lw2UFaLpp4,2038
|
|
99
|
+
telegrinder/node/rule.py,sha256=HCSN1MwSvzGjYeiCdLjcNaUyVQhUVeDlRcdEgiKU3So,2388
|
|
100
|
+
telegrinder/node/scope.py,sha256=m7gIlQQxlsJhbqn5r-bU7q76TrfI1PCGKs7MwVBdbQk,708
|
|
101
|
+
telegrinder/node/source.py,sha256=rs4S5bLRS6W-hcmeNH1HARuLMt-lf2N0iJH8vh6zl0o,2321
|
|
102
|
+
telegrinder/node/text.py,sha256=Jik937Pn6JGAKiplHmHseWDWoflnK5yirvvG_vrUxl8,581
|
|
103
|
+
telegrinder/node/tools/__init__.py,sha256=iyjs82g3brYGzpPsUQaoK6_r7YuQhRkJ61YjjuPOx9E,67
|
|
104
|
+
telegrinder/node/tools/generator.py,sha256=xuhZ5-TwoctFLlDBdYvjOQxHTpqC4IAdnkzMViVSsUM,1046
|
|
105
|
+
telegrinder/node/update.py,sha256=2baHe10IJ0f6oOeQIqBXduRio9PGVd5Q2lbGyfU9yU8,441
|
|
106
|
+
telegrinder/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
|
+
telegrinder/rules.py,sha256=qQHT63Yek8I2zZFbfH2SzvQLUdZCcWBz-DFlz05i39I,1115
|
|
108
|
+
telegrinder/tools/__init__.py,sha256=N_EGjedn096mPw1Tozc4uMCSXH2h9NCFnKuubFZu5ec,2837
|
|
109
|
+
telegrinder/tools/buttons.py,sha256=4Mc8KZ8i8l2XSiJaybbO23ywIx8T3bQiMH0UkyXuj4I,2905
|
|
110
|
+
telegrinder/tools/error_handler/__init__.py,sha256=WmYWZCNhhSk32j4lIOltEwzoYUx086TGTbOF5h3Ps7s,207
|
|
111
|
+
telegrinder/tools/error_handler/abc.py,sha256=BpBtysvMZKxAYAIrQHYXNxP9mCZRzjtshFFwzIXvVi8,882
|
|
112
|
+
telegrinder/tools/error_handler/error.py,sha256=uLcG-wqyOeCEB45m8vMcGy5kZ87bGHUS_-fPw2cGE9s,221
|
|
113
|
+
telegrinder/tools/error_handler/error_handler.py,sha256=nxYNkOgqY4Mn7x8d6w38Vmk6AlyF4EBwNYWQk9RMcrU,6360
|
|
114
|
+
telegrinder/tools/formatting/__init__.py,sha256=1tFuJjMpDphCIOR4uXQhptyLHuAZ26mYSFx_BQwL5Lo,1459
|
|
115
|
+
telegrinder/tools/formatting/html.py,sha256=h8hyN6t6cJfMBjMf-XWZixVnweoAuLUIJ1xjg9JOJDw,8736
|
|
116
|
+
telegrinder/tools/formatting/links.py,sha256=dYJy2qPxa4YGHYqSSCTv-6hXz0Aa0AGuzsLXwbxPZ9A,1112
|
|
117
|
+
telegrinder/tools/formatting/spec_html_formats.py,sha256=I-OULqlof8NOeSNGBddKkudqMLjsMAQ02Pc6qH_fNRQ,2617
|
|
118
|
+
telegrinder/tools/global_context/__init__.py,sha256=5pF9growKd28WO739wk_DZUqCDw5hxs6eUcDtxTosX8,290
|
|
119
|
+
telegrinder/tools/global_context/abc.py,sha256=twwAmbTk49KGl_POImr4yj6POr-zdx8mz74McuphZH0,1644
|
|
120
|
+
telegrinder/tools/global_context/global_context.py,sha256=U-rdGgPJ5Cde4FuV6IP6jQWxlrvDaH6YYuBSA6RFWHU,13679
|
|
121
|
+
telegrinder/tools/global_context/telegrinder_ctx.py,sha256=U6DHIC-B40HLWojwU3tAui256VcZpTpUmYhSSqV0vDY,663
|
|
122
|
+
telegrinder/tools/i18n/__init__.py,sha256=CLUoiCJzOZzF-dqDIHZ5Fc8QUa38cYhIG4WF-ctPLfE,288
|
|
123
|
+
telegrinder/tools/i18n/base.py,sha256=jxJVYiTplJaNeklkGiin-m7BkfZiac2fbVXTEdhNw6o,726
|
|
124
|
+
telegrinder/tools/i18n/middleware/__init__.py,sha256=y5ZX6s3fOix_Yn98UNO8VqQ7ihJbQ_e5Uz01RgL7pHg,82
|
|
125
|
+
telegrinder/tools/i18n/middleware/base.py,sha256=gGqcPxJLLC3f6XfV_0-drhr27TND40cL1Z5sNmC84lo,663
|
|
126
|
+
telegrinder/tools/i18n/simple.py,sha256=yiaGtEAaMkrzYV3O7esA2wi3A2n9YyndxKPKp8Fs834,1567
|
|
127
|
+
telegrinder/tools/kb_set/__init__.py,sha256=k1KCQTnvEgJ2y4KlghhJWOh5rccwg_27cs8264NtMmk,156
|
|
128
|
+
telegrinder/tools/kb_set/base.py,sha256=mbZs-ViUErfSibzyN064IqZp76LBJPg3NB4D9v4VFtg,243
|
|
129
|
+
telegrinder/tools/kb_set/yaml.py,sha256=glk27r0L9Y8ibaPmTHMAEJZw-ED-ehmSo_NdJNKkrNs,2007
|
|
130
|
+
telegrinder/tools/keyboard.py,sha256=3zaBOMWMV5rPQg6BsLI7S_6_Nhyl2yKosFCbQAk9GzM,3684
|
|
131
|
+
telegrinder/tools/limited_dict.py,sha256=tb1WT4P3Oia5CsCBXTHzlFjrPnIgf9eHCkQ0zhAbEUg,1078
|
|
132
|
+
telegrinder/tools/loop_wrapper/__init__.py,sha256=ZQ5jmE1lOKnqJlMZ9k2OYmjvOEhOlHPijUWqZ4nHIgk,165
|
|
133
|
+
telegrinder/tools/loop_wrapper/abc.py,sha256=ET_Dp-kRz75Jo1fZB3qofUgEXN4FqlU0xH2diESKGCM,266
|
|
134
|
+
telegrinder/tools/loop_wrapper/loop_wrapper.py,sha256=k5NaZ-18c8zuzBHpHNk03_33dHFNww8HiCJEGz2g5W0,6815
|
|
135
|
+
telegrinder/tools/magic.py,sha256=oPaEqqtbFEVXHVCjdbmUvbjtWiQCw2yuMOfoQLLyFjE,4332
|
|
136
|
+
telegrinder/tools/parse_mode.py,sha256=JyQ-x9YAMPLhIIiUX01acyKkpWgs5TBA07W-iUyPHpE,92
|
|
137
|
+
telegrinder/types/__init__.py,sha256=_7ANa63K4rMRWHgSBSQJXi2mNMtOJgp_E4yGattsgJE,6612
|
|
138
|
+
telegrinder/types/enums.py,sha256=q9URlXZvrjOUQKpLfV6v9uspBcLrdW0gtU-m8YDnj7w,19017
|
|
139
|
+
telegrinder/types/methods.py,sha256=Ah7DVfyb99EJzYHCX9feW9hIGBYcnHLKEzu5MUp4rvg,201058
|
|
140
|
+
telegrinder/types/objects.py,sha256=6bN1BsYZ-Kmh1GcXgtumfZvvLJqxjjjJ9OzyfqBtGZM,244504
|
|
141
|
+
telegrinder/verification_utils.py,sha256=X7N0mHoOzbcYeKa5XxI_EFhmEGX5XNU3qqgbV8YRRa4,987
|
|
142
|
+
telegrinder-0.2.0.dist-info/LICENSE,sha256=Q0tKgU8mPOCQAkc6m__BrNIpRge8mPBQJDd59s21NZo,1095
|
|
143
|
+
telegrinder-0.2.0.dist-info/METADATA,sha256=tymq-AfNLTdigt7POIse-MghEs7gYnwrT0hbZXE9aBM,3002
|
|
144
|
+
telegrinder-0.2.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
145
|
+
telegrinder-0.2.0.dist-info/RECORD,,
|