telegrinder 0.3.1__py3-none-any.whl → 0.3.3__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 (164) 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 -234
  11. telegrinder/bot/cute_types/callback_query.py +385 -382
  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 -53
  15. telegrinder/bot/cute_types/message.py +2637 -2631
  16. telegrinder/bot/cute_types/update.py +109 -75
  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 -92
  21. telegrinder/bot/dispatch/dispatch.py +202 -201
  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 -123
  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 +16 -16
  35. telegrinder/bot/dispatch/process.py +132 -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 -211
  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 -118
  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 +167 -170
  59. telegrinder/bot/dispatch/waiter_machine/middleware.py +89 -89
  60. telegrinder/bot/dispatch/waiter_machine/short_state.py +68 -65
  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 -238
  66. telegrinder/bot/rules/adapter/__init__.py +9 -9
  67. telegrinder/bot/rules/adapter/abc.py +29 -29
  68. telegrinder/bot/rules/adapter/errors.py +5 -5
  69. telegrinder/bot/rules/adapter/event.py +67 -76
  70. telegrinder/bot/rules/adapter/node.py +48 -48
  71. telegrinder/bot/rules/adapter/raw_update.py +30 -30
  72. telegrinder/bot/rules/callback_data.py +170 -171
  73. telegrinder/bot/rules/chat_join.py +46 -48
  74. telegrinder/bot/rules/command.py +126 -126
  75. telegrinder/bot/rules/enum_text.py +36 -36
  76. telegrinder/bot/rules/func.py +26 -26
  77. telegrinder/bot/rules/fuzzy.py +24 -24
  78. telegrinder/bot/rules/inline.py +60 -60
  79. telegrinder/bot/rules/integer.py +20 -20
  80. telegrinder/bot/rules/is_from.py +127 -127
  81. telegrinder/bot/rules/markup.py +43 -43
  82. telegrinder/bot/rules/mention.py +14 -14
  83. telegrinder/bot/rules/message.py +17 -17
  84. telegrinder/bot/rules/message_entities.py +35 -35
  85. telegrinder/bot/rules/node.py +27 -27
  86. telegrinder/bot/rules/regex.py +37 -37
  87. telegrinder/bot/rules/rule_enum.py +72 -72
  88. telegrinder/bot/rules/start.py +42 -42
  89. telegrinder/bot/rules/state.py +37 -37
  90. telegrinder/bot/rules/text.py +33 -33
  91. telegrinder/bot/rules/update.py +15 -15
  92. telegrinder/bot/scenario/__init__.py +5 -5
  93. telegrinder/bot/scenario/abc.py +19 -19
  94. telegrinder/bot/scenario/checkbox.py +167 -147
  95. telegrinder/bot/scenario/choice.py +46 -44
  96. telegrinder/client/__init__.py +4 -4
  97. telegrinder/client/abc.py +75 -75
  98. telegrinder/client/aiohttp.py +130 -130
  99. telegrinder/model.py +295 -244
  100. telegrinder/modules.py +237 -237
  101. telegrinder/msgspec_json.py +14 -14
  102. telegrinder/msgspec_utils.py +410 -410
  103. telegrinder/node/__init__.py +7 -3
  104. telegrinder/node/attachment.py +87 -87
  105. telegrinder/node/base.py +166 -144
  106. telegrinder/node/callback_query.py +53 -14
  107. telegrinder/node/command.py +33 -33
  108. telegrinder/node/composer.py +198 -184
  109. telegrinder/node/container.py +27 -27
  110. telegrinder/node/event.py +65 -73
  111. telegrinder/node/me.py +16 -16
  112. telegrinder/node/message.py +14 -14
  113. telegrinder/node/polymorphic.py +48 -52
  114. telegrinder/node/rule.py +76 -76
  115. telegrinder/node/scope.py +38 -38
  116. telegrinder/node/source.py +71 -71
  117. telegrinder/node/text.py +41 -21
  118. telegrinder/node/tools/__init__.py +3 -3
  119. telegrinder/node/tools/generator.py +40 -40
  120. telegrinder/node/update.py +15 -15
  121. telegrinder/rules.py +0 -0
  122. telegrinder/tools/__init__.py +74 -74
  123. telegrinder/tools/buttons.py +79 -79
  124. telegrinder/tools/error_handler/__init__.py +7 -7
  125. telegrinder/tools/error_handler/abc.py +33 -33
  126. telegrinder/tools/error_handler/error.py +9 -9
  127. telegrinder/tools/error_handler/error_handler.py +193 -193
  128. telegrinder/tools/formatting/__init__.py +46 -46
  129. telegrinder/tools/formatting/html.py +283 -283
  130. telegrinder/tools/formatting/links.py +33 -33
  131. telegrinder/tools/formatting/spec_html_formats.py +111 -111
  132. telegrinder/tools/functional.py +12 -12
  133. telegrinder/tools/global_context/__init__.py +7 -7
  134. telegrinder/tools/global_context/abc.py +63 -63
  135. telegrinder/tools/global_context/global_context.py +412 -412
  136. telegrinder/tools/global_context/telegrinder_ctx.py +27 -27
  137. telegrinder/tools/i18n/__init__.py +7 -7
  138. telegrinder/tools/i18n/abc.py +30 -30
  139. telegrinder/tools/i18n/middleware/__init__.py +3 -3
  140. telegrinder/tools/i18n/middleware/abc.py +25 -25
  141. telegrinder/tools/i18n/simple.py +43 -43
  142. telegrinder/tools/kb_set/__init__.py +4 -4
  143. telegrinder/tools/kb_set/base.py +15 -15
  144. telegrinder/tools/kb_set/yaml.py +63 -63
  145. telegrinder/tools/keyboard.py +132 -132
  146. telegrinder/tools/limited_dict.py +37 -37
  147. telegrinder/tools/loop_wrapper/__init__.py +4 -4
  148. telegrinder/tools/loop_wrapper/abc.py +15 -15
  149. telegrinder/tools/loop_wrapper/loop_wrapper.py +224 -216
  150. telegrinder/tools/magic.py +157 -157
  151. telegrinder/tools/parse_mode.py +6 -6
  152. telegrinder/tools/state_storage/__init__.py +4 -4
  153. telegrinder/tools/state_storage/abc.py +35 -35
  154. telegrinder/tools/state_storage/memory.py +25 -25
  155. telegrinder/types/__init__.py +260 -260
  156. telegrinder/types/enums.py +701 -701
  157. telegrinder/types/methods.py +4633 -4633
  158. telegrinder/types/objects.py +8561 -6541
  159. telegrinder/verification_utils.py +32 -32
  160. {telegrinder-0.3.1.dist-info → telegrinder-0.3.3.dist-info}/LICENSE +22 -22
  161. {telegrinder-0.3.1.dist-info → telegrinder-0.3.3.dist-info}/METADATA +1 -1
  162. telegrinder-0.3.3.dist-info/RECORD +164 -0
  163. telegrinder-0.3.1.dist-info/RECORD +0 -164
  164. {telegrinder-0.3.1.dist-info → telegrinder-0.3.3.dist-info}/WHEEL +0 -0
@@ -1,72 +1,72 @@
1
- import dataclasses
2
- import typing
3
-
4
- from telegrinder.bot.dispatch.context import Context
5
-
6
- from .abc import ABCRule, Update, check_rule
7
- from .func import FuncRule
8
-
9
-
10
- @dataclasses.dataclass(slots=True)
11
- class RuleEnumState:
12
- name: str
13
- rule: ABCRule
14
- cls: type["RuleEnum"]
15
-
16
- def __eq__(self, other: typing.Self) -> bool:
17
- return self.cls == other.cls and self.name == other.name
18
-
19
-
20
- class RuleEnum(ABCRule):
21
- __enum__: list[RuleEnumState]
22
-
23
- def __init_subclass__(cls, *args: typing.Any, **kwargs: typing.Any) -> None:
24
- new_attributes = set(cls.__dict__) - set(RuleEnum.__dict__) - {"__enum__", "__init__"}
25
- enum_lst: list[RuleEnumState] = []
26
-
27
- self = cls.__new__(cls)
28
- self.__init__()
29
-
30
- for attribute_name in new_attributes:
31
- rules = getattr(cls, attribute_name)
32
- attribute = RuleEnumState(attribute_name, rules, cls)
33
-
34
- setattr(
35
- self,
36
- attribute.name,
37
- self & FuncRule(lambda _, ctx: self.must_be_state(ctx, attribute)), # type: ignore
38
- )
39
- enum_lst.append(attribute)
40
-
41
- setattr(cls, "__enum__", enum_lst)
42
-
43
- @classmethod
44
- def save_state(cls, ctx: Context, enum: RuleEnumState) -> None:
45
- ctx.update({cls.__class__.__name__ + "_state": enum})
46
-
47
- @classmethod
48
- def check_state(cls, ctx: Context) -> RuleEnumState | None:
49
- return ctx.get(cls.__class__.__name__ + "_state")
50
-
51
- @classmethod
52
- def must_be_state(cls, ctx: Context, state: RuleEnumState) -> bool:
53
- real_state = cls.check_state(ctx)
54
- if not real_state:
55
- return False
56
- return real_state == state
57
-
58
- async def check(self, event: Update, ctx: Context) -> bool:
59
- if self.check_state(ctx):
60
- return True
61
-
62
- for enum in self.__enum__:
63
- ctx_copy = ctx.copy()
64
- if await check_rule(event.ctx_api, enum.rule, event, ctx_copy):
65
- ctx.update(ctx_copy)
66
- self.save_state(ctx, enum)
67
- return True
68
-
69
- return False
70
-
71
-
72
- __all__ = ("RuleEnum", "RuleEnumState")
1
+ import dataclasses
2
+ import typing
3
+
4
+ from telegrinder.bot.dispatch.context import Context
5
+
6
+ from .abc import ABCRule, Update, check_rule
7
+ from .func import FuncRule
8
+
9
+
10
+ @dataclasses.dataclass(slots=True)
11
+ class RuleEnumState:
12
+ name: str
13
+ rule: ABCRule
14
+ cls: type["RuleEnum"]
15
+
16
+ def __eq__(self, other: typing.Self) -> bool:
17
+ return self.cls == other.cls and self.name == other.name
18
+
19
+
20
+ class RuleEnum(ABCRule):
21
+ __enum__: list[RuleEnumState]
22
+
23
+ def __init_subclass__(cls, *args: typing.Any, **kwargs: typing.Any) -> None:
24
+ new_attributes = set(cls.__dict__) - set(RuleEnum.__dict__) - {"__enum__", "__init__"}
25
+ enum_lst: list[RuleEnumState] = []
26
+
27
+ self = cls.__new__(cls)
28
+ self.__init__()
29
+
30
+ for attribute_name in new_attributes:
31
+ rules = getattr(cls, attribute_name)
32
+ attribute = RuleEnumState(attribute_name, rules, cls)
33
+
34
+ setattr(
35
+ self,
36
+ attribute.name,
37
+ self & FuncRule(lambda _, ctx: self.must_be_state(ctx, attribute)), # type: ignore
38
+ )
39
+ enum_lst.append(attribute)
40
+
41
+ setattr(cls, "__enum__", enum_lst)
42
+
43
+ @classmethod
44
+ def save_state(cls, ctx: Context, enum: RuleEnumState) -> None:
45
+ ctx.update({cls.__class__.__name__ + "_state": enum})
46
+
47
+ @classmethod
48
+ def check_state(cls, ctx: Context) -> RuleEnumState | None:
49
+ return ctx.get(cls.__class__.__name__ + "_state")
50
+
51
+ @classmethod
52
+ def must_be_state(cls, ctx: Context, state: RuleEnumState) -> bool:
53
+ real_state = cls.check_state(ctx)
54
+ if not real_state:
55
+ return False
56
+ return real_state == state
57
+
58
+ async def check(self, event: Update, ctx: Context) -> bool:
59
+ if self.check_state(ctx):
60
+ return True
61
+
62
+ for enum in self.__enum__:
63
+ ctx_copy = ctx.copy()
64
+ if await check_rule(event.ctx_api, enum.rule, event, ctx_copy):
65
+ ctx.update(ctx_copy)
66
+ self.save_state(ctx, enum)
67
+ return True
68
+
69
+ return False
70
+
71
+
72
+ __all__ = ("RuleEnum", "RuleEnumState")
@@ -1,42 +1,42 @@
1
- import typing
2
-
3
- from telegrinder.bot.dispatch.context import Context
4
- from telegrinder.types.enums import MessageEntityType
5
-
6
- from .is_from import IsPrivate
7
- from .markup import Markup
8
- from .message import MessageRule
9
- from .message_entities import MessageEntities
10
-
11
-
12
- class StartCommand(
13
- MessageRule,
14
- requires=[
15
- IsPrivate(),
16
- MessageEntities(MessageEntityType.BOT_COMMAND),
17
- Markup(["/start <param>", "/start"]),
18
- ],
19
- ):
20
- def __init__(
21
- self,
22
- validator: typing.Callable[[str], typing.Any | None] | None = None,
23
- *,
24
- param_required: bool = False,
25
- alias: str | None = None,
26
- ) -> None:
27
- self.param_required = param_required
28
- self.validator = validator
29
- self.alias = alias
30
-
31
- def check(self, ctx: Context) -> bool:
32
- param: str | None = ctx.pop("param", None)
33
- validated_param = self.validator(param) if self.validator and param is not None else param
34
-
35
- if self.param_required and validated_param is None:
36
- return False
37
-
38
- ctx.set(self.alias or "param", validated_param)
39
- return True
40
-
41
-
42
- __all__ = ("StartCommand",)
1
+ import typing
2
+
3
+ from telegrinder.bot.dispatch.context import Context
4
+ from telegrinder.types.enums import MessageEntityType
5
+
6
+ from .is_from import IsPrivate
7
+ from .markup import Markup
8
+ from .message import MessageRule
9
+ from .message_entities import MessageEntities
10
+
11
+
12
+ class StartCommand(
13
+ MessageRule,
14
+ requires=[
15
+ IsPrivate(),
16
+ MessageEntities(MessageEntityType.BOT_COMMAND),
17
+ Markup(["/start <param>", "/start"]),
18
+ ],
19
+ ):
20
+ def __init__(
21
+ self,
22
+ validator: typing.Callable[[str], typing.Any | None] | None = None,
23
+ *,
24
+ param_required: bool = False,
25
+ alias: str | None = None,
26
+ ) -> None:
27
+ self.param_required = param_required
28
+ self.validator = validator
29
+ self.alias = alias
30
+
31
+ def check(self, ctx: Context) -> bool:
32
+ param: str | None = ctx.pop("param", None)
33
+ validated_param = self.validator(param) if self.validator and param is not None else param
34
+
35
+ if self.param_required and validated_param is None:
36
+ return False
37
+
38
+ ctx.set(self.alias or "param", validated_param)
39
+ return True
40
+
41
+
42
+ __all__ = ("StartCommand",)
@@ -1,37 +1,37 @@
1
- import dataclasses
2
- import enum
3
- import typing
4
-
5
- from telegrinder.bot.dispatch.context import Context
6
- from telegrinder.bot.rules.abc import ABCRule
7
- from telegrinder.node.source import Source
8
-
9
- if typing.TYPE_CHECKING:
10
- from telegrinder.tools.state_storage.abc import ABCStateStorage
11
-
12
- Payload = typing.TypeVar("Payload")
13
-
14
-
15
- class StateMeta(enum.Enum):
16
- NO_STATE = enum.auto()
17
- ANY = enum.auto()
18
-
19
-
20
- @dataclasses.dataclass(frozen=True, slots=True, repr=False)
21
- class State(ABCRule, typing.Generic[Payload]):
22
- storage: "ABCStateStorage[Payload]"
23
- key: str | StateMeta | enum.Enum
24
-
25
- async def check(self, source: Source, ctx: Context) -> bool:
26
- state = await self.storage.get(source.from_user.id)
27
- if not state:
28
- return self.key == StateMeta.NO_STATE
29
-
30
- if self.key != StateMeta.ANY and self.key != state.unwrap().key:
31
- return False
32
-
33
- ctx["state"] = state.unwrap()
34
- return True
35
-
36
-
37
- __all__ = ("State", "StateMeta")
1
+ import dataclasses
2
+ import enum
3
+ import typing
4
+
5
+ from telegrinder.bot.dispatch.context import Context
6
+ from telegrinder.bot.rules.abc import ABCRule
7
+ from telegrinder.node.source import Source
8
+
9
+ if typing.TYPE_CHECKING:
10
+ from telegrinder.tools.state_storage.abc import ABCStateStorage
11
+
12
+ Payload = typing.TypeVar("Payload")
13
+
14
+
15
+ class StateMeta(enum.Enum):
16
+ NO_STATE = enum.auto()
17
+ ANY = enum.auto()
18
+
19
+
20
+ @dataclasses.dataclass(frozen=True, slots=True, repr=False)
21
+ class State(ABCRule, typing.Generic[Payload]):
22
+ storage: "ABCStateStorage[Payload]"
23
+ key: str | StateMeta | enum.Enum
24
+
25
+ async def check(self, source: Source, ctx: Context) -> bool:
26
+ state = await self.storage.get(source.from_user.id)
27
+ if not state:
28
+ return self.key == StateMeta.NO_STATE
29
+
30
+ if self.key != StateMeta.ANY and self.key != state.unwrap().key:
31
+ return False
32
+
33
+ ctx["state"] = state.unwrap()
34
+ return True
35
+
36
+
37
+ __all__ = ("State", "StateMeta")
@@ -1,33 +1,33 @@
1
- import typing
2
-
3
- from telegrinder import node
4
- from telegrinder.tools.i18n.abc import ABCTranslator
5
-
6
- from .abc import ABCRule, with_caching_translations
7
- from .node import NodeRule
8
-
9
-
10
- class HasText(NodeRule):
11
- def __init__(self) -> None:
12
- super().__init__(node.text.Text)
13
-
14
-
15
- class Text(ABCRule):
16
- def __init__(self, texts: str | list[str], *, ignore_case: bool = False) -> None:
17
- if not isinstance(texts, list):
18
- texts = [texts]
19
- self.texts = texts if not ignore_case else list(map(str.lower, texts))
20
- self.ignore_case = ignore_case
21
-
22
- def check(self, text: node.text.Text) -> bool:
23
- return (text if not self.ignore_case else text.lower()) in self.texts
24
-
25
- @with_caching_translations
26
- async def translate(self, translator: ABCTranslator) -> typing.Self:
27
- return self.__class__(
28
- texts=[translator.get(text) for text in self.texts],
29
- ignore_case=self.ignore_case,
30
- )
31
-
32
-
33
- __all__ = ("HasText", "Text")
1
+ import typing
2
+
3
+ from telegrinder import node
4
+ from telegrinder.tools.i18n.abc import ABCTranslator
5
+
6
+ from .abc import ABCRule, with_caching_translations
7
+ from .node import NodeRule
8
+
9
+
10
+ class HasText(NodeRule):
11
+ def __init__(self) -> None:
12
+ super().__init__(node.text.Text)
13
+
14
+
15
+ class Text(ABCRule):
16
+ def __init__(self, texts: str | list[str], *, ignore_case: bool = False) -> None:
17
+ if not isinstance(texts, list):
18
+ texts = [texts]
19
+ self.texts = texts if not ignore_case else list(map(str.lower, texts))
20
+ self.ignore_case = ignore_case
21
+
22
+ def check(self, text: node.text.Text) -> bool:
23
+ return (text if not self.ignore_case else text.lower()) in self.texts
24
+
25
+ @with_caching_translations
26
+ async def translate(self, translator: ABCTranslator) -> typing.Self:
27
+ return self.__class__(
28
+ texts=[translator.get(text) for text in self.texts],
29
+ ignore_case=self.ignore_case,
30
+ )
31
+
32
+
33
+ __all__ = ("HasText", "Text")
@@ -1,15 +1,15 @@
1
- from telegrinder.bot.cute_types.update import UpdateCute
2
- from telegrinder.types.enums import UpdateType
3
-
4
- from .abc import ABCRule
5
-
6
-
7
- class IsUpdateType(ABCRule):
8
- def __init__(self, update_type: UpdateType, /) -> None:
9
- self.update_type = update_type
10
-
11
- def check(self, event: UpdateCute) -> bool:
12
- return event.update_type == self.update_type
13
-
14
-
15
- __all__ = ("IsUpdateType",)
1
+ from telegrinder.bot.cute_types.update import UpdateCute
2
+ from telegrinder.types.enums import UpdateType
3
+
4
+ from .abc import ABCRule
5
+
6
+
7
+ class IsUpdateType(ABCRule):
8
+ def __init__(self, update_type: UpdateType, /) -> None:
9
+ self.update_type = update_type
10
+
11
+ def check(self, event: UpdateCute) -> bool:
12
+ return event.update_type == self.update_type
13
+
14
+
15
+ __all__ = ("IsUpdateType",)
@@ -1,5 +1,5 @@
1
- from .abc import ABCScenario
2
- from .checkbox import Checkbox
3
- from .choice import Choice
4
-
5
- __all__ = ("ABCScenario", "Checkbox", "Choice")
1
+ from .abc import ABCScenario
2
+ from .checkbox import Checkbox
3
+ from .choice import Choice
4
+
5
+ __all__ = ("ABCScenario", "Checkbox", "Choice")
@@ -1,19 +1,19 @@
1
- import typing
2
- from abc import ABC, abstractmethod
3
-
4
- from telegrinder.bot.cute_types.base import BaseCute
5
-
6
- if typing.TYPE_CHECKING:
7
- from telegrinder.api import API
8
- from telegrinder.bot.dispatch.view.abc import ABCStateView
9
-
10
- EventT = typing.TypeVar("EventT", bound=BaseCute)
11
-
12
-
13
- class ABCScenario(ABC, typing.Generic[EventT]):
14
- @abstractmethod
15
- def wait(self, api: "API", view: "ABCStateView[EventT]") -> typing.Any:
16
- pass
17
-
18
-
19
- __all__ = ("ABCScenario",)
1
+ import typing
2
+ from abc import ABC, abstractmethod
3
+
4
+ from telegrinder.bot.cute_types.base import BaseCute
5
+
6
+ if typing.TYPE_CHECKING:
7
+ from telegrinder.api import API
8
+ from telegrinder.bot.dispatch.view.abc import ABCStateView
9
+
10
+ EventT = typing.TypeVar("EventT", bound=BaseCute)
11
+
12
+
13
+ class ABCScenario(ABC, typing.Generic[EventT]):
14
+ @abstractmethod
15
+ def wait(self, api: "API", view: "ABCStateView[EventT]") -> typing.Any:
16
+ pass
17
+
18
+
19
+ __all__ = ("ABCScenario",)