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.

Files changed (165) hide show
  1. telegrinder/__init__.py +144 -144
  2. telegrinder/api/__init__.py +8 -8
  3. telegrinder/api/api.py +93 -93
  4. telegrinder/api/error.py +16 -16
  5. telegrinder/api/response.py +20 -20
  6. telegrinder/api/token.py +36 -36
  7. telegrinder/bot/__init__.py +66 -66
  8. telegrinder/bot/bot.py +76 -76
  9. telegrinder/bot/cute_types/__init__.py +17 -17
  10. telegrinder/bot/cute_types/base.py +258 -258
  11. telegrinder/bot/cute_types/callback_query.py +385 -385
  12. telegrinder/bot/cute_types/chat_join_request.py +61 -61
  13. telegrinder/bot/cute_types/chat_member_updated.py +160 -160
  14. telegrinder/bot/cute_types/inline_query.py +43 -43
  15. telegrinder/bot/cute_types/message.py +2637 -2637
  16. telegrinder/bot/cute_types/update.py +104 -109
  17. telegrinder/bot/cute_types/utils.py +95 -95
  18. telegrinder/bot/dispatch/__init__.py +55 -55
  19. telegrinder/bot/dispatch/abc.py +77 -77
  20. telegrinder/bot/dispatch/context.py +98 -98
  21. telegrinder/bot/dispatch/dispatch.py +202 -202
  22. telegrinder/bot/dispatch/handler/__init__.py +13 -13
  23. telegrinder/bot/dispatch/handler/abc.py +24 -24
  24. telegrinder/bot/dispatch/handler/audio_reply.py +44 -44
  25. telegrinder/bot/dispatch/handler/base.py +57 -57
  26. telegrinder/bot/dispatch/handler/document_reply.py +44 -44
  27. telegrinder/bot/dispatch/handler/func.py +135 -135
  28. telegrinder/bot/dispatch/handler/media_group_reply.py +43 -43
  29. telegrinder/bot/dispatch/handler/message_reply.py +36 -36
  30. telegrinder/bot/dispatch/handler/photo_reply.py +44 -44
  31. telegrinder/bot/dispatch/handler/sticker_reply.py +37 -37
  32. telegrinder/bot/dispatch/handler/video_reply.py +44 -44
  33. telegrinder/bot/dispatch/middleware/__init__.py +3 -3
  34. telegrinder/bot/dispatch/middleware/abc.py +22 -16
  35. telegrinder/bot/dispatch/process.py +157 -132
  36. telegrinder/bot/dispatch/return_manager/__init__.py +13 -13
  37. telegrinder/bot/dispatch/return_manager/abc.py +108 -108
  38. telegrinder/bot/dispatch/return_manager/callback_query.py +20 -20
  39. telegrinder/bot/dispatch/return_manager/inline_query.py +15 -15
  40. telegrinder/bot/dispatch/return_manager/message.py +36 -36
  41. telegrinder/bot/dispatch/view/__init__.py +13 -13
  42. telegrinder/bot/dispatch/view/abc.py +41 -41
  43. telegrinder/bot/dispatch/view/base.py +200 -200
  44. telegrinder/bot/dispatch/view/box.py +129 -129
  45. telegrinder/bot/dispatch/view/callback_query.py +17 -17
  46. telegrinder/bot/dispatch/view/chat_join_request.py +16 -16
  47. telegrinder/bot/dispatch/view/chat_member.py +39 -39
  48. telegrinder/bot/dispatch/view/inline_query.py +17 -17
  49. telegrinder/bot/dispatch/view/message.py +44 -44
  50. telegrinder/bot/dispatch/view/raw.py +114 -114
  51. telegrinder/bot/dispatch/waiter_machine/__init__.py +17 -17
  52. telegrinder/bot/dispatch/waiter_machine/actions.py +13 -13
  53. telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py +8 -8
  54. telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +55 -55
  55. telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +57 -57
  56. telegrinder/bot/dispatch/waiter_machine/hasher/message.py +51 -51
  57. telegrinder/bot/dispatch/waiter_machine/hasher/state.py +19 -19
  58. telegrinder/bot/dispatch/waiter_machine/machine.py +172 -167
  59. telegrinder/bot/dispatch/waiter_machine/middleware.py +89 -89
  60. telegrinder/bot/dispatch/waiter_machine/short_state.py +68 -68
  61. telegrinder/bot/polling/__init__.py +4 -4
  62. telegrinder/bot/polling/abc.py +25 -25
  63. telegrinder/bot/polling/polling.py +131 -131
  64. telegrinder/bot/rules/__init__.py +62 -62
  65. telegrinder/bot/rules/abc.py +213 -213
  66. telegrinder/bot/rules/adapter/__init__.py +12 -9
  67. telegrinder/bot/rules/adapter/abc.py +31 -29
  68. telegrinder/bot/rules/adapter/errors.py +5 -5
  69. telegrinder/bot/rules/adapter/event.py +65 -67
  70. telegrinder/bot/rules/adapter/node.py +48 -48
  71. telegrinder/bot/rules/adapter/raw_event.py +27 -0
  72. telegrinder/bot/rules/adapter/raw_update.py +30 -30
  73. telegrinder/bot/rules/callback_data.py +170 -170
  74. telegrinder/bot/rules/chat_join.py +46 -46
  75. telegrinder/bot/rules/command.py +126 -126
  76. telegrinder/bot/rules/enum_text.py +36 -36
  77. telegrinder/bot/rules/func.py +26 -26
  78. telegrinder/bot/rules/fuzzy.py +24 -24
  79. telegrinder/bot/rules/inline.py +60 -60
  80. telegrinder/bot/rules/integer.py +20 -20
  81. telegrinder/bot/rules/is_from.py +127 -127
  82. telegrinder/bot/rules/markup.py +43 -43
  83. telegrinder/bot/rules/mention.py +14 -14
  84. telegrinder/bot/rules/message.py +17 -17
  85. telegrinder/bot/rules/message_entities.py +35 -35
  86. telegrinder/bot/rules/node.py +27 -27
  87. telegrinder/bot/rules/regex.py +37 -37
  88. telegrinder/bot/rules/rule_enum.py +72 -72
  89. telegrinder/bot/rules/start.py +42 -42
  90. telegrinder/bot/rules/state.py +37 -37
  91. telegrinder/bot/rules/text.py +33 -33
  92. telegrinder/bot/rules/update.py +15 -15
  93. telegrinder/bot/scenario/__init__.py +5 -5
  94. telegrinder/bot/scenario/abc.py +19 -19
  95. telegrinder/bot/scenario/checkbox.py +176 -167
  96. telegrinder/bot/scenario/choice.py +51 -46
  97. telegrinder/client/__init__.py +4 -4
  98. telegrinder/client/abc.py +75 -75
  99. telegrinder/client/aiohttp.py +130 -130
  100. telegrinder/model.py +320 -295
  101. telegrinder/modules.py +237 -237
  102. telegrinder/msgspec_json.py +14 -14
  103. telegrinder/msgspec_utils.py +410 -410
  104. telegrinder/node/__init__.py +0 -0
  105. telegrinder/node/attachment.py +87 -87
  106. telegrinder/node/base.py +166 -166
  107. telegrinder/node/callback_query.py +53 -53
  108. telegrinder/node/command.py +33 -33
  109. telegrinder/node/composer.py +198 -198
  110. telegrinder/node/container.py +27 -27
  111. telegrinder/node/event.py +65 -65
  112. telegrinder/node/me.py +16 -16
  113. telegrinder/node/message.py +14 -14
  114. telegrinder/node/polymorphic.py +48 -48
  115. telegrinder/node/rule.py +76 -76
  116. telegrinder/node/scope.py +38 -38
  117. telegrinder/node/source.py +71 -71
  118. telegrinder/node/text.py +41 -41
  119. telegrinder/node/tools/__init__.py +3 -3
  120. telegrinder/node/tools/generator.py +40 -40
  121. telegrinder/node/update.py +15 -15
  122. telegrinder/rules.py +0 -0
  123. telegrinder/tools/__init__.py +74 -74
  124. telegrinder/tools/buttons.py +79 -79
  125. telegrinder/tools/error_handler/__init__.py +7 -7
  126. telegrinder/tools/error_handler/abc.py +33 -33
  127. telegrinder/tools/error_handler/error.py +9 -9
  128. telegrinder/tools/error_handler/error_handler.py +193 -193
  129. telegrinder/tools/formatting/__init__.py +46 -46
  130. telegrinder/tools/formatting/html.py +283 -283
  131. telegrinder/tools/formatting/links.py +33 -33
  132. telegrinder/tools/formatting/spec_html_formats.py +111 -111
  133. telegrinder/tools/functional.py +12 -12
  134. telegrinder/tools/global_context/__init__.py +7 -7
  135. telegrinder/tools/global_context/abc.py +63 -63
  136. telegrinder/tools/global_context/global_context.py +412 -412
  137. telegrinder/tools/global_context/telegrinder_ctx.py +27 -27
  138. telegrinder/tools/i18n/__init__.py +7 -7
  139. telegrinder/tools/i18n/abc.py +30 -30
  140. telegrinder/tools/i18n/middleware/__init__.py +3 -3
  141. telegrinder/tools/i18n/middleware/abc.py +25 -25
  142. telegrinder/tools/i18n/simple.py +43 -43
  143. telegrinder/tools/kb_set/__init__.py +4 -4
  144. telegrinder/tools/kb_set/base.py +15 -15
  145. telegrinder/tools/kb_set/yaml.py +63 -63
  146. telegrinder/tools/keyboard.py +132 -132
  147. telegrinder/tools/limited_dict.py +37 -37
  148. telegrinder/tools/loop_wrapper/__init__.py +4 -4
  149. telegrinder/tools/loop_wrapper/abc.py +15 -15
  150. telegrinder/tools/loop_wrapper/loop_wrapper.py +224 -224
  151. telegrinder/tools/magic.py +157 -157
  152. telegrinder/tools/parse_mode.py +6 -6
  153. telegrinder/tools/state_storage/__init__.py +4 -4
  154. telegrinder/tools/state_storage/abc.py +35 -35
  155. telegrinder/tools/state_storage/memory.py +25 -25
  156. telegrinder/types/__init__.py +260 -260
  157. telegrinder/types/enums.py +701 -701
  158. telegrinder/types/methods.py +4633 -4633
  159. telegrinder/types/objects.py +6950 -8561
  160. telegrinder/verification_utils.py +32 -32
  161. {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/LICENSE +22 -22
  162. {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/METADATA +1 -1
  163. telegrinder-0.3.4.post1.dist-info/RECORD +165 -0
  164. telegrinder-0.3.3.post1.dist-info/RECORD +0 -164
  165. {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
+ )