telegrinder 0.3.3.post1__py3-none-any.whl → 0.3.4.post1__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 +144 -144
- telegrinder/api/__init__.py +8 -8
- telegrinder/api/api.py +93 -93
- telegrinder/api/error.py +16 -16
- telegrinder/api/response.py +20 -20
- telegrinder/api/token.py +36 -36
- telegrinder/bot/__init__.py +66 -66
- telegrinder/bot/bot.py +76 -76
- telegrinder/bot/cute_types/__init__.py +17 -17
- telegrinder/bot/cute_types/base.py +258 -258
- telegrinder/bot/cute_types/callback_query.py +385 -385
- telegrinder/bot/cute_types/chat_join_request.py +61 -61
- telegrinder/bot/cute_types/chat_member_updated.py +160 -160
- telegrinder/bot/cute_types/inline_query.py +43 -43
- telegrinder/bot/cute_types/message.py +2637 -2637
- telegrinder/bot/cute_types/update.py +104 -109
- telegrinder/bot/cute_types/utils.py +95 -95
- telegrinder/bot/dispatch/__init__.py +55 -55
- telegrinder/bot/dispatch/abc.py +77 -77
- telegrinder/bot/dispatch/context.py +98 -98
- telegrinder/bot/dispatch/dispatch.py +202 -202
- telegrinder/bot/dispatch/handler/__init__.py +13 -13
- telegrinder/bot/dispatch/handler/abc.py +24 -24
- telegrinder/bot/dispatch/handler/audio_reply.py +44 -44
- telegrinder/bot/dispatch/handler/base.py +57 -57
- telegrinder/bot/dispatch/handler/document_reply.py +44 -44
- telegrinder/bot/dispatch/handler/func.py +135 -135
- telegrinder/bot/dispatch/handler/media_group_reply.py +43 -43
- telegrinder/bot/dispatch/handler/message_reply.py +36 -36
- telegrinder/bot/dispatch/handler/photo_reply.py +44 -44
- telegrinder/bot/dispatch/handler/sticker_reply.py +37 -37
- telegrinder/bot/dispatch/handler/video_reply.py +44 -44
- telegrinder/bot/dispatch/middleware/__init__.py +3 -3
- telegrinder/bot/dispatch/middleware/abc.py +22 -16
- telegrinder/bot/dispatch/process.py +157 -132
- telegrinder/bot/dispatch/return_manager/__init__.py +13 -13
- telegrinder/bot/dispatch/return_manager/abc.py +108 -108
- telegrinder/bot/dispatch/return_manager/callback_query.py +20 -20
- telegrinder/bot/dispatch/return_manager/inline_query.py +15 -15
- telegrinder/bot/dispatch/return_manager/message.py +36 -36
- telegrinder/bot/dispatch/view/__init__.py +13 -13
- telegrinder/bot/dispatch/view/abc.py +41 -41
- telegrinder/bot/dispatch/view/base.py +200 -200
- telegrinder/bot/dispatch/view/box.py +129 -129
- telegrinder/bot/dispatch/view/callback_query.py +17 -17
- telegrinder/bot/dispatch/view/chat_join_request.py +16 -16
- telegrinder/bot/dispatch/view/chat_member.py +39 -39
- telegrinder/bot/dispatch/view/inline_query.py +17 -17
- telegrinder/bot/dispatch/view/message.py +44 -44
- telegrinder/bot/dispatch/view/raw.py +114 -114
- telegrinder/bot/dispatch/waiter_machine/__init__.py +17 -17
- telegrinder/bot/dispatch/waiter_machine/actions.py +13 -13
- telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py +8 -8
- telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +55 -55
- telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +57 -57
- telegrinder/bot/dispatch/waiter_machine/hasher/message.py +51 -51
- telegrinder/bot/dispatch/waiter_machine/hasher/state.py +19 -19
- telegrinder/bot/dispatch/waiter_machine/machine.py +172 -167
- telegrinder/bot/dispatch/waiter_machine/middleware.py +89 -89
- telegrinder/bot/dispatch/waiter_machine/short_state.py +68 -68
- telegrinder/bot/polling/__init__.py +4 -4
- telegrinder/bot/polling/abc.py +25 -25
- telegrinder/bot/polling/polling.py +131 -131
- telegrinder/bot/rules/__init__.py +62 -62
- telegrinder/bot/rules/abc.py +213 -213
- telegrinder/bot/rules/adapter/__init__.py +12 -9
- telegrinder/bot/rules/adapter/abc.py +31 -29
- telegrinder/bot/rules/adapter/errors.py +5 -5
- telegrinder/bot/rules/adapter/event.py +65 -67
- telegrinder/bot/rules/adapter/node.py +48 -48
- telegrinder/bot/rules/adapter/raw_event.py +27 -0
- telegrinder/bot/rules/adapter/raw_update.py +30 -30
- telegrinder/bot/rules/callback_data.py +170 -170
- telegrinder/bot/rules/chat_join.py +46 -46
- telegrinder/bot/rules/command.py +126 -126
- telegrinder/bot/rules/enum_text.py +36 -36
- telegrinder/bot/rules/func.py +26 -26
- telegrinder/bot/rules/fuzzy.py +24 -24
- telegrinder/bot/rules/inline.py +60 -60
- telegrinder/bot/rules/integer.py +20 -20
- telegrinder/bot/rules/is_from.py +127 -127
- telegrinder/bot/rules/markup.py +43 -43
- telegrinder/bot/rules/mention.py +14 -14
- telegrinder/bot/rules/message.py +17 -17
- telegrinder/bot/rules/message_entities.py +35 -35
- telegrinder/bot/rules/node.py +27 -27
- telegrinder/bot/rules/regex.py +37 -37
- telegrinder/bot/rules/rule_enum.py +72 -72
- telegrinder/bot/rules/start.py +42 -42
- telegrinder/bot/rules/state.py +37 -37
- telegrinder/bot/rules/text.py +33 -33
- telegrinder/bot/rules/update.py +15 -15
- telegrinder/bot/scenario/__init__.py +5 -5
- telegrinder/bot/scenario/abc.py +19 -19
- telegrinder/bot/scenario/checkbox.py +176 -167
- telegrinder/bot/scenario/choice.py +51 -46
- telegrinder/client/__init__.py +4 -4
- telegrinder/client/abc.py +75 -75
- telegrinder/client/aiohttp.py +130 -130
- telegrinder/model.py +320 -295
- telegrinder/modules.py +237 -237
- telegrinder/msgspec_json.py +14 -14
- telegrinder/msgspec_utils.py +410 -410
- telegrinder/node/__init__.py +0 -0
- telegrinder/node/attachment.py +87 -87
- telegrinder/node/base.py +166 -166
- telegrinder/node/callback_query.py +53 -53
- telegrinder/node/command.py +33 -33
- telegrinder/node/composer.py +198 -198
- telegrinder/node/container.py +27 -27
- telegrinder/node/event.py +65 -65
- telegrinder/node/me.py +16 -16
- telegrinder/node/message.py +14 -14
- telegrinder/node/polymorphic.py +48 -48
- telegrinder/node/rule.py +76 -76
- telegrinder/node/scope.py +38 -38
- telegrinder/node/source.py +71 -71
- telegrinder/node/text.py +41 -41
- telegrinder/node/tools/__init__.py +3 -3
- telegrinder/node/tools/generator.py +40 -40
- telegrinder/node/update.py +15 -15
- telegrinder/rules.py +0 -0
- telegrinder/tools/__init__.py +74 -74
- telegrinder/tools/buttons.py +79 -79
- telegrinder/tools/error_handler/__init__.py +7 -7
- telegrinder/tools/error_handler/abc.py +33 -33
- telegrinder/tools/error_handler/error.py +9 -9
- telegrinder/tools/error_handler/error_handler.py +193 -193
- telegrinder/tools/formatting/__init__.py +46 -46
- telegrinder/tools/formatting/html.py +283 -283
- telegrinder/tools/formatting/links.py +33 -33
- telegrinder/tools/formatting/spec_html_formats.py +111 -111
- telegrinder/tools/functional.py +12 -12
- telegrinder/tools/global_context/__init__.py +7 -7
- telegrinder/tools/global_context/abc.py +63 -63
- telegrinder/tools/global_context/global_context.py +412 -412
- telegrinder/tools/global_context/telegrinder_ctx.py +27 -27
- telegrinder/tools/i18n/__init__.py +7 -7
- telegrinder/tools/i18n/abc.py +30 -30
- telegrinder/tools/i18n/middleware/__init__.py +3 -3
- telegrinder/tools/i18n/middleware/abc.py +25 -25
- telegrinder/tools/i18n/simple.py +43 -43
- telegrinder/tools/kb_set/__init__.py +4 -4
- telegrinder/tools/kb_set/base.py +15 -15
- telegrinder/tools/kb_set/yaml.py +63 -63
- telegrinder/tools/keyboard.py +132 -132
- telegrinder/tools/limited_dict.py +37 -37
- telegrinder/tools/loop_wrapper/__init__.py +4 -4
- telegrinder/tools/loop_wrapper/abc.py +15 -15
- telegrinder/tools/loop_wrapper/loop_wrapper.py +224 -224
- telegrinder/tools/magic.py +157 -157
- telegrinder/tools/parse_mode.py +6 -6
- telegrinder/tools/state_storage/__init__.py +4 -4
- telegrinder/tools/state_storage/abc.py +35 -35
- telegrinder/tools/state_storage/memory.py +25 -25
- telegrinder/types/__init__.py +260 -260
- telegrinder/types/enums.py +701 -701
- telegrinder/types/methods.py +4633 -4633
- telegrinder/types/objects.py +6950 -8561
- telegrinder/verification_utils.py +32 -32
- {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/LICENSE +22 -22
- {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/METADATA +1 -1
- telegrinder-0.3.4.post1.dist-info/RECORD +165 -0
- telegrinder-0.3.3.post1.dist-info/RECORD +0 -164
- {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/WHEEL +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
from telegrinder.bot.cute_types.callback_query import CallbackQueryCute
|
|
2
|
-
from telegrinder.bot.dispatch.return_manager.callback_query import CallbackQueryReturnManager
|
|
3
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class CallbackQueryView(BaseStateView[CallbackQueryCute]):
|
|
7
|
-
def __init__(self) -> None:
|
|
8
|
-
self.auto_rules = []
|
|
9
|
-
self.handlers = []
|
|
10
|
-
self.middlewares = []
|
|
11
|
-
self.return_manager = CallbackQueryReturnManager()
|
|
12
|
-
|
|
13
|
-
def get_state_key(self, event: CallbackQueryCute) -> int | None:
|
|
14
|
-
return event.message_id.unwrap_or_none()
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
__all__ = ("CallbackQueryView",)
|
|
1
|
+
from telegrinder.bot.cute_types.callback_query import CallbackQueryCute
|
|
2
|
+
from telegrinder.bot.dispatch.return_manager.callback_query import CallbackQueryReturnManager
|
|
3
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CallbackQueryView(BaseStateView[CallbackQueryCute]):
|
|
7
|
+
def __init__(self) -> None:
|
|
8
|
+
self.auto_rules = []
|
|
9
|
+
self.handlers = []
|
|
10
|
+
self.middlewares = []
|
|
11
|
+
self.return_manager = CallbackQueryReturnManager()
|
|
12
|
+
|
|
13
|
+
def get_state_key(self, event: CallbackQueryCute) -> int | None:
|
|
14
|
+
return event.message_id.unwrap_or_none()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
__all__ = ("CallbackQueryView",)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
from telegrinder.bot.cute_types.chat_join_request import ChatJoinRequestCute
|
|
2
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class ChatJoinRequestView(BaseStateView[ChatJoinRequestCute]):
|
|
6
|
-
def __init__(self) -> None:
|
|
7
|
-
self.auto_rules = []
|
|
8
|
-
self.handlers = []
|
|
9
|
-
self.middlewares = []
|
|
10
|
-
self.return_manager = None
|
|
11
|
-
|
|
12
|
-
def get_state_key(self, event: ChatJoinRequestCute) -> int | None:
|
|
13
|
-
return event.chat_id
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
__all__ = ("ChatJoinRequestView",)
|
|
1
|
+
from telegrinder.bot.cute_types.chat_join_request import ChatJoinRequestCute
|
|
2
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class ChatJoinRequestView(BaseStateView[ChatJoinRequestCute]):
|
|
6
|
+
def __init__(self) -> None:
|
|
7
|
+
self.auto_rules = []
|
|
8
|
+
self.handlers = []
|
|
9
|
+
self.middlewares = []
|
|
10
|
+
self.return_manager = None
|
|
11
|
+
|
|
12
|
+
def get_state_key(self, event: ChatJoinRequestCute) -> int | None:
|
|
13
|
+
return event.chat_id
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
__all__ = ("ChatJoinRequestView",)
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.cute_types.chat_member_updated import ChatMemberUpdatedCute
|
|
4
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
5
|
-
from telegrinder.types.enums import UpdateType
|
|
6
|
-
from telegrinder.types.objects import Update
|
|
7
|
-
|
|
8
|
-
ChatMemberUpdateType: typing.TypeAlias = typing.Literal[
|
|
9
|
-
UpdateType.CHAT_MEMBER,
|
|
10
|
-
UpdateType.MY_CHAT_MEMBER,
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class ChatMemberView(BaseStateView[ChatMemberUpdatedCute]):
|
|
15
|
-
def __init__(self, *, update_type: ChatMemberUpdateType | None = None) -> None:
|
|
16
|
-
self.auto_rules = []
|
|
17
|
-
self.handlers = []
|
|
18
|
-
self.middlewares = []
|
|
19
|
-
self.return_manager = None
|
|
20
|
-
self.update_type = update_type
|
|
21
|
-
|
|
22
|
-
def __repr__(self) -> str:
|
|
23
|
-
return "<{}: {!r}>".format(
|
|
24
|
-
self.__class__.__name__,
|
|
25
|
-
"chat_member_updated" if self.update_type is None else self.update_type.value,
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
def get_state_key(self, event: ChatMemberUpdatedCute) -> int | None:
|
|
29
|
-
return event.chat_id
|
|
30
|
-
|
|
31
|
-
async def check(self, event: Update) -> bool:
|
|
32
|
-
return not (
|
|
33
|
-
self.update_type is not None
|
|
34
|
-
and self.update_type != event.update_type
|
|
35
|
-
or not await super().check(event)
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
__all__ = ("ChatMemberView",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.cute_types.chat_member_updated import ChatMemberUpdatedCute
|
|
4
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
5
|
+
from telegrinder.types.enums import UpdateType
|
|
6
|
+
from telegrinder.types.objects import Update
|
|
7
|
+
|
|
8
|
+
ChatMemberUpdateType: typing.TypeAlias = typing.Literal[
|
|
9
|
+
UpdateType.CHAT_MEMBER,
|
|
10
|
+
UpdateType.MY_CHAT_MEMBER,
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ChatMemberView(BaseStateView[ChatMemberUpdatedCute]):
|
|
15
|
+
def __init__(self, *, update_type: ChatMemberUpdateType | None = None) -> None:
|
|
16
|
+
self.auto_rules = []
|
|
17
|
+
self.handlers = []
|
|
18
|
+
self.middlewares = []
|
|
19
|
+
self.return_manager = None
|
|
20
|
+
self.update_type = update_type
|
|
21
|
+
|
|
22
|
+
def __repr__(self) -> str:
|
|
23
|
+
return "<{}: {!r}>".format(
|
|
24
|
+
self.__class__.__name__,
|
|
25
|
+
"chat_member_updated" if self.update_type is None else self.update_type.value,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def get_state_key(self, event: ChatMemberUpdatedCute) -> int | None:
|
|
29
|
+
return event.chat_id
|
|
30
|
+
|
|
31
|
+
async def check(self, event: Update) -> bool:
|
|
32
|
+
return not (
|
|
33
|
+
self.update_type is not None
|
|
34
|
+
and self.update_type != event.update_type
|
|
35
|
+
or not await super().check(event)
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
__all__ = ("ChatMemberView",)
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
from telegrinder.bot.cute_types.inline_query import InlineQueryCute
|
|
2
|
-
from telegrinder.bot.dispatch.return_manager import InlineQueryReturnManager
|
|
3
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class InlineQueryView(BaseStateView[InlineQueryCute]):
|
|
7
|
-
def __init__(self) -> None:
|
|
8
|
-
self.auto_rules = []
|
|
9
|
-
self.handlers = []
|
|
10
|
-
self.middlewares = []
|
|
11
|
-
self.return_manager = InlineQueryReturnManager()
|
|
12
|
-
|
|
13
|
-
def get_state_key(self, event: InlineQueryCute) -> int | None:
|
|
14
|
-
return event.from_user.id
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
__all__ = ("InlineQueryView",)
|
|
1
|
+
from telegrinder.bot.cute_types.inline_query import InlineQueryCute
|
|
2
|
+
from telegrinder.bot.dispatch.return_manager import InlineQueryReturnManager
|
|
3
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class InlineQueryView(BaseStateView[InlineQueryCute]):
|
|
7
|
+
def __init__(self) -> None:
|
|
8
|
+
self.auto_rules = []
|
|
9
|
+
self.handlers = []
|
|
10
|
+
self.middlewares = []
|
|
11
|
+
self.return_manager = InlineQueryReturnManager()
|
|
12
|
+
|
|
13
|
+
def get_state_key(self, event: InlineQueryCute) -> int | None:
|
|
14
|
+
return event.from_user.id
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
__all__ = ("InlineQueryView",)
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.cute_types.message import MessageCute
|
|
4
|
-
from telegrinder.bot.dispatch.return_manager.message import MessageReturnManager
|
|
5
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
6
|
-
from telegrinder.types.enums import UpdateType
|
|
7
|
-
from telegrinder.types.objects import Update
|
|
8
|
-
|
|
9
|
-
MessageUpdateType: typing.TypeAlias = typing.Literal[
|
|
10
|
-
UpdateType.MESSAGE,
|
|
11
|
-
UpdateType.BUSINESS_MESSAGE,
|
|
12
|
-
UpdateType.CHANNEL_POST,
|
|
13
|
-
UpdateType.EDITED_BUSINESS_MESSAGE,
|
|
14
|
-
UpdateType.EDITED_CHANNEL_POST,
|
|
15
|
-
UpdateType.EDITED_MESSAGE,
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class MessageView(BaseStateView[MessageCute]):
|
|
20
|
-
def __init__(self, *, update_type: MessageUpdateType | None = None) -> None:
|
|
21
|
-
self.auto_rules = []
|
|
22
|
-
self.handlers = []
|
|
23
|
-
self.update_type = update_type
|
|
24
|
-
self.middlewares = []
|
|
25
|
-
self.return_manager = MessageReturnManager()
|
|
26
|
-
|
|
27
|
-
def __repr__(self) -> str:
|
|
28
|
-
return "<{}: {!r}>".format(
|
|
29
|
-
self.__class__.__name__,
|
|
30
|
-
"any message update" if self.update_type is None else self.update_type.value,
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
def get_state_key(self, event: MessageCute) -> int | None:
|
|
34
|
-
return event.chat_id
|
|
35
|
-
|
|
36
|
-
async def check(self, event: Update) -> bool:
|
|
37
|
-
return not (
|
|
38
|
-
self.update_type is not None
|
|
39
|
-
and self.update_type != event.update_type
|
|
40
|
-
or not await super().check(event)
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
__all__ = ("MessageView",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.cute_types.message import MessageCute
|
|
4
|
+
from telegrinder.bot.dispatch.return_manager.message import MessageReturnManager
|
|
5
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView
|
|
6
|
+
from telegrinder.types.enums import UpdateType
|
|
7
|
+
from telegrinder.types.objects import Update
|
|
8
|
+
|
|
9
|
+
MessageUpdateType: typing.TypeAlias = typing.Literal[
|
|
10
|
+
UpdateType.MESSAGE,
|
|
11
|
+
UpdateType.BUSINESS_MESSAGE,
|
|
12
|
+
UpdateType.CHANNEL_POST,
|
|
13
|
+
UpdateType.EDITED_BUSINESS_MESSAGE,
|
|
14
|
+
UpdateType.EDITED_CHANNEL_POST,
|
|
15
|
+
UpdateType.EDITED_MESSAGE,
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class MessageView(BaseStateView[MessageCute]):
|
|
20
|
+
def __init__(self, *, update_type: MessageUpdateType | None = None) -> None:
|
|
21
|
+
self.auto_rules = []
|
|
22
|
+
self.handlers = []
|
|
23
|
+
self.update_type = update_type
|
|
24
|
+
self.middlewares = []
|
|
25
|
+
self.return_manager = MessageReturnManager()
|
|
26
|
+
|
|
27
|
+
def __repr__(self) -> str:
|
|
28
|
+
return "<{}: {!r}>".format(
|
|
29
|
+
self.__class__.__name__,
|
|
30
|
+
"any message update" if self.update_type is None else self.update_type.value,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
def get_state_key(self, event: MessageCute) -> int | None:
|
|
34
|
+
return event.chat_id
|
|
35
|
+
|
|
36
|
+
async def check(self, event: Update) -> bool:
|
|
37
|
+
return not (
|
|
38
|
+
self.update_type is not None
|
|
39
|
+
and self.update_type != event.update_type
|
|
40
|
+
or not await super().check(event)
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
__all__ = ("MessageView",)
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.api.api import API
|
|
4
|
-
from telegrinder.bot.cute_types.update import UpdateCute
|
|
5
|
-
from telegrinder.bot.dispatch.handler.func import Func, FuncHandler
|
|
6
|
-
from telegrinder.bot.dispatch.process import process_inner
|
|
7
|
-
from telegrinder.bot.dispatch.view.abc import ABCEventRawView
|
|
8
|
-
from telegrinder.bot.dispatch.view.base import BaseView, ErrorHandlerT
|
|
9
|
-
from telegrinder.bot.rules.abc import ABCRule
|
|
10
|
-
from telegrinder.tools.error_handler.error_handler import ABCErrorHandler, ErrorHandler
|
|
11
|
-
from telegrinder.types.enums import UpdateType
|
|
12
|
-
from telegrinder.types.objects import Update
|
|
13
|
-
|
|
14
|
-
T = typing.TypeVar("T", contravariant=True)
|
|
15
|
-
R = typing.TypeVar("R", covariant=True)
|
|
16
|
-
P = typing.ParamSpec("P")
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class RawEventView(ABCEventRawView[UpdateCute], BaseView[UpdateCute]):
|
|
20
|
-
def __init__(self) -> None:
|
|
21
|
-
self.auto_rules = []
|
|
22
|
-
self.handlers = []
|
|
23
|
-
self.middlewares = []
|
|
24
|
-
self.return_manager = None
|
|
25
|
-
|
|
26
|
-
@typing.overload
|
|
27
|
-
def __call__(
|
|
28
|
-
self,
|
|
29
|
-
update_type: UpdateType,
|
|
30
|
-
*rules: ABCRule,
|
|
31
|
-
) -> typing.Callable[
|
|
32
|
-
[Func[P, R]],
|
|
33
|
-
FuncHandler[UpdateCute, Func[P, R], ErrorHandler[UpdateCute]],
|
|
34
|
-
]: ...
|
|
35
|
-
|
|
36
|
-
@typing.overload
|
|
37
|
-
def __call__(
|
|
38
|
-
self,
|
|
39
|
-
update_type: UpdateType,
|
|
40
|
-
*rules: ABCRule,
|
|
41
|
-
dataclass: type[T],
|
|
42
|
-
) -> typing.Callable[[Func[P, R]], FuncHandler[UpdateCute, Func[P, R], ErrorHandler[T]]]: ...
|
|
43
|
-
|
|
44
|
-
@typing.overload
|
|
45
|
-
def __call__(
|
|
46
|
-
self,
|
|
47
|
-
update_type: UpdateType,
|
|
48
|
-
*rules: ABCRule,
|
|
49
|
-
error_handler: ErrorHandlerT,
|
|
50
|
-
) -> typing.Callable[
|
|
51
|
-
[Func[P, R]],
|
|
52
|
-
FuncHandler[UpdateCute, Func[P, R], ErrorHandlerT],
|
|
53
|
-
]: ...
|
|
54
|
-
|
|
55
|
-
@typing.overload
|
|
56
|
-
def __call__(
|
|
57
|
-
self,
|
|
58
|
-
update_type: UpdateType,
|
|
59
|
-
*rules: ABCRule,
|
|
60
|
-
dataclass: type[typing.Any],
|
|
61
|
-
error_handler: ErrorHandlerT,
|
|
62
|
-
is_blocking: bool = True,
|
|
63
|
-
) -> typing.Callable[[Func[P, R]], FuncHandler[UpdateCute, Func[P, R], ErrorHandlerT]]: ...
|
|
64
|
-
|
|
65
|
-
@typing.overload
|
|
66
|
-
def __call__(
|
|
67
|
-
self,
|
|
68
|
-
update_type: UpdateType,
|
|
69
|
-
*rules: ABCRule,
|
|
70
|
-
dataclass: None = None,
|
|
71
|
-
error_handler: None = None,
|
|
72
|
-
is_blocking: bool = True,
|
|
73
|
-
) -> typing.Callable[
|
|
74
|
-
[Func[P, R]],
|
|
75
|
-
FuncHandler[UpdateCute, Func[P, R], ErrorHandler[UpdateCute]],
|
|
76
|
-
]: ...
|
|
77
|
-
|
|
78
|
-
def __call__( # type: ignore
|
|
79
|
-
self,
|
|
80
|
-
update_type: UpdateType,
|
|
81
|
-
*rules: ABCRule,
|
|
82
|
-
dataclass: type[typing.Any] | None = None,
|
|
83
|
-
error_handler: ABCErrorHandler | None = None,
|
|
84
|
-
is_blocking: bool = True,
|
|
85
|
-
):
|
|
86
|
-
def wrapper(func):
|
|
87
|
-
func_handler = FuncHandler(
|
|
88
|
-
func,
|
|
89
|
-
rules=[*self.auto_rules, *rules],
|
|
90
|
-
is_blocking=is_blocking,
|
|
91
|
-
dataclass=dataclass,
|
|
92
|
-
error_handler=error_handler or ErrorHandler(),
|
|
93
|
-
update_type=update_type,
|
|
94
|
-
)
|
|
95
|
-
self.handlers.append(func_handler)
|
|
96
|
-
return func_handler
|
|
97
|
-
|
|
98
|
-
return wrapper
|
|
99
|
-
|
|
100
|
-
async def check(self, event: Update) -> bool:
|
|
101
|
-
return bool(self.handlers) or bool(self.middlewares)
|
|
102
|
-
|
|
103
|
-
async def process(self, event: Update, api: API) -> bool:
|
|
104
|
-
return await process_inner(
|
|
105
|
-
api,
|
|
106
|
-
UpdateCute.from_update(event, bound_api=api),
|
|
107
|
-
event,
|
|
108
|
-
self.middlewares,
|
|
109
|
-
self.handlers,
|
|
110
|
-
self.return_manager,
|
|
111
|
-
)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
__all__ = ("RawEventView",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.api.api import API
|
|
4
|
+
from telegrinder.bot.cute_types.update import UpdateCute
|
|
5
|
+
from telegrinder.bot.dispatch.handler.func import Func, FuncHandler
|
|
6
|
+
from telegrinder.bot.dispatch.process import process_inner
|
|
7
|
+
from telegrinder.bot.dispatch.view.abc import ABCEventRawView
|
|
8
|
+
from telegrinder.bot.dispatch.view.base import BaseView, ErrorHandlerT
|
|
9
|
+
from telegrinder.bot.rules.abc import ABCRule
|
|
10
|
+
from telegrinder.tools.error_handler.error_handler import ABCErrorHandler, ErrorHandler
|
|
11
|
+
from telegrinder.types.enums import UpdateType
|
|
12
|
+
from telegrinder.types.objects import Update
|
|
13
|
+
|
|
14
|
+
T = typing.TypeVar("T", contravariant=True)
|
|
15
|
+
R = typing.TypeVar("R", covariant=True)
|
|
16
|
+
P = typing.ParamSpec("P")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class RawEventView(ABCEventRawView[UpdateCute], BaseView[UpdateCute]):
|
|
20
|
+
def __init__(self) -> None:
|
|
21
|
+
self.auto_rules = []
|
|
22
|
+
self.handlers = []
|
|
23
|
+
self.middlewares = []
|
|
24
|
+
self.return_manager = None
|
|
25
|
+
|
|
26
|
+
@typing.overload
|
|
27
|
+
def __call__(
|
|
28
|
+
self,
|
|
29
|
+
update_type: UpdateType,
|
|
30
|
+
*rules: ABCRule,
|
|
31
|
+
) -> typing.Callable[
|
|
32
|
+
[Func[P, R]],
|
|
33
|
+
FuncHandler[UpdateCute, Func[P, R], ErrorHandler[UpdateCute]],
|
|
34
|
+
]: ...
|
|
35
|
+
|
|
36
|
+
@typing.overload
|
|
37
|
+
def __call__(
|
|
38
|
+
self,
|
|
39
|
+
update_type: UpdateType,
|
|
40
|
+
*rules: ABCRule,
|
|
41
|
+
dataclass: type[T],
|
|
42
|
+
) -> typing.Callable[[Func[P, R]], FuncHandler[UpdateCute, Func[P, R], ErrorHandler[T]]]: ...
|
|
43
|
+
|
|
44
|
+
@typing.overload
|
|
45
|
+
def __call__(
|
|
46
|
+
self,
|
|
47
|
+
update_type: UpdateType,
|
|
48
|
+
*rules: ABCRule,
|
|
49
|
+
error_handler: ErrorHandlerT,
|
|
50
|
+
) -> typing.Callable[
|
|
51
|
+
[Func[P, R]],
|
|
52
|
+
FuncHandler[UpdateCute, Func[P, R], ErrorHandlerT],
|
|
53
|
+
]: ...
|
|
54
|
+
|
|
55
|
+
@typing.overload
|
|
56
|
+
def __call__(
|
|
57
|
+
self,
|
|
58
|
+
update_type: UpdateType,
|
|
59
|
+
*rules: ABCRule,
|
|
60
|
+
dataclass: type[typing.Any],
|
|
61
|
+
error_handler: ErrorHandlerT,
|
|
62
|
+
is_blocking: bool = True,
|
|
63
|
+
) -> typing.Callable[[Func[P, R]], FuncHandler[UpdateCute, Func[P, R], ErrorHandlerT]]: ...
|
|
64
|
+
|
|
65
|
+
@typing.overload
|
|
66
|
+
def __call__(
|
|
67
|
+
self,
|
|
68
|
+
update_type: UpdateType,
|
|
69
|
+
*rules: ABCRule,
|
|
70
|
+
dataclass: None = None,
|
|
71
|
+
error_handler: None = None,
|
|
72
|
+
is_blocking: bool = True,
|
|
73
|
+
) -> typing.Callable[
|
|
74
|
+
[Func[P, R]],
|
|
75
|
+
FuncHandler[UpdateCute, Func[P, R], ErrorHandler[UpdateCute]],
|
|
76
|
+
]: ...
|
|
77
|
+
|
|
78
|
+
def __call__( # type: ignore
|
|
79
|
+
self,
|
|
80
|
+
update_type: UpdateType,
|
|
81
|
+
*rules: ABCRule,
|
|
82
|
+
dataclass: type[typing.Any] | None = None,
|
|
83
|
+
error_handler: ABCErrorHandler | None = None,
|
|
84
|
+
is_blocking: bool = True,
|
|
85
|
+
):
|
|
86
|
+
def wrapper(func):
|
|
87
|
+
func_handler = FuncHandler(
|
|
88
|
+
func,
|
|
89
|
+
rules=[*self.auto_rules, *rules],
|
|
90
|
+
is_blocking=is_blocking,
|
|
91
|
+
dataclass=dataclass,
|
|
92
|
+
error_handler=error_handler or ErrorHandler(),
|
|
93
|
+
update_type=update_type,
|
|
94
|
+
)
|
|
95
|
+
self.handlers.append(func_handler)
|
|
96
|
+
return func_handler
|
|
97
|
+
|
|
98
|
+
return wrapper
|
|
99
|
+
|
|
100
|
+
async def check(self, event: Update) -> bool:
|
|
101
|
+
return bool(self.handlers) or bool(self.middlewares)
|
|
102
|
+
|
|
103
|
+
async def process(self, event: Update, api: API) -> bool:
|
|
104
|
+
return await process_inner(
|
|
105
|
+
api,
|
|
106
|
+
UpdateCute.from_update(event, bound_api=api),
|
|
107
|
+
event,
|
|
108
|
+
self.middlewares,
|
|
109
|
+
self.handlers,
|
|
110
|
+
self.return_manager,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
__all__ = ("RawEventView",)
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
from telegrinder.bot.dispatch.waiter_machine.hasher import (
|
|
2
|
-
CALLBACK_QUERY_FOR_MESSAGE,
|
|
3
|
-
CALLBACK_QUERY_FROM_CHAT,
|
|
4
|
-
CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE,
|
|
5
|
-
MESSAGE_FROM_USER,
|
|
6
|
-
MESSAGE_FROM_USER_IN_CHAT,
|
|
7
|
-
MESSAGE_IN_CHAT,
|
|
8
|
-
Hasher,
|
|
9
|
-
StateViewHasher,
|
|
10
|
-
)
|
|
11
|
-
from telegrinder.bot.dispatch.waiter_machine.machine import WaiterMachine, clear_wm_storage_worker
|
|
12
|
-
from telegrinder.bot.dispatch.waiter_machine.middleware import WaiterMiddleware
|
|
13
|
-
from telegrinder.bot.dispatch.waiter_machine.short_state import ShortState
|
|
14
|
-
|
|
15
|
-
__all__ = (
|
|
1
|
+
from telegrinder.bot.dispatch.waiter_machine.hasher import (
|
|
2
|
+
CALLBACK_QUERY_FOR_MESSAGE,
|
|
3
|
+
CALLBACK_QUERY_FROM_CHAT,
|
|
4
|
+
CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE,
|
|
5
|
+
MESSAGE_FROM_USER,
|
|
6
|
+
MESSAGE_FROM_USER_IN_CHAT,
|
|
7
|
+
MESSAGE_IN_CHAT,
|
|
8
|
+
Hasher,
|
|
9
|
+
StateViewHasher,
|
|
10
|
+
)
|
|
11
|
+
from telegrinder.bot.dispatch.waiter_machine.machine import WaiterMachine, clear_wm_storage_worker
|
|
12
|
+
from telegrinder.bot.dispatch.waiter_machine.middleware import WaiterMiddleware
|
|
13
|
+
from telegrinder.bot.dispatch.waiter_machine.short_state import ShortState
|
|
14
|
+
|
|
15
|
+
__all__ = (
|
|
16
16
|
"CALLBACK_QUERY_FOR_MESSAGE",
|
|
17
17
|
"CALLBACK_QUERY_FROM_CHAT",
|
|
18
18
|
"CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE",
|
|
@@ -24,5 +24,5 @@ __all__ = (
|
|
|
24
24
|
"StateViewHasher",
|
|
25
25
|
"WaiterMachine",
|
|
26
26
|
"WaiterMiddleware",
|
|
27
|
-
"clear_wm_storage_worker",
|
|
28
|
-
)
|
|
27
|
+
"clear_wm_storage_worker",
|
|
28
|
+
)
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.dispatch.handler.abc import ABCHandler
|
|
4
|
-
|
|
5
|
-
from .short_state import EventModel, ShortState
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class WaiterActions(typing.TypedDict, typing.Generic[EventModel]):
|
|
9
|
-
on_miss: typing.NotRequired[ABCHandler[EventModel]]
|
|
10
|
-
on_drop: typing.NotRequired[typing.Callable[[ShortState[EventModel]], None]]
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
__all__ = ("WaiterActions",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.dispatch.handler.abc import ABCHandler
|
|
4
|
+
|
|
5
|
+
from .short_state import EventModel, ShortState
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class WaiterActions(typing.TypedDict, typing.Generic[EventModel]):
|
|
9
|
+
on_miss: typing.NotRequired[ABCHandler[EventModel]]
|
|
10
|
+
on_drop: typing.NotRequired[typing.Callable[[ShortState[EventModel]], None]]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
__all__ = ("WaiterActions",)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from .callback import CALLBACK_QUERY_FOR_MESSAGE, CALLBACK_QUERY_FROM_CHAT, CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE
|
|
2
|
-
from .hasher import Hasher
|
|
3
|
-
from .message import MESSAGE_FROM_USER, MESSAGE_FROM_USER_IN_CHAT, MESSAGE_IN_CHAT
|
|
4
|
-
from .state import StateViewHasher
|
|
5
|
-
|
|
6
|
-
__all__ = (
|
|
1
|
+
from .callback import CALLBACK_QUERY_FOR_MESSAGE, CALLBACK_QUERY_FROM_CHAT, CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE
|
|
2
|
+
from .hasher import Hasher
|
|
3
|
+
from .message import MESSAGE_FROM_USER, MESSAGE_FROM_USER_IN_CHAT, MESSAGE_IN_CHAT
|
|
4
|
+
from .state import StateViewHasher
|
|
5
|
+
|
|
6
|
+
__all__ = (
|
|
7
7
|
"CALLBACK_QUERY_FOR_MESSAGE",
|
|
8
8
|
"CALLBACK_QUERY_FROM_CHAT",
|
|
9
9
|
"CALLBACK_QUERY_IN_CHAT_FOR_MESSAGE",
|
|
@@ -11,5 +11,5 @@ __all__ = (
|
|
|
11
11
|
"MESSAGE_FROM_USER",
|
|
12
12
|
"MESSAGE_FROM_USER_IN_CHAT",
|
|
13
13
|
"MESSAGE_IN_CHAT",
|
|
14
|
-
"StateViewHasher",
|
|
15
|
-
)
|
|
14
|
+
"StateViewHasher",
|
|
15
|
+
)
|