telegrinder 0.3.0.post1__py3-none-any.whl → 0.3.1__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 (73) hide show
  1. telegrinder/__init__.py +1 -1
  2. telegrinder/bot/cute_types/callback_query.py +2 -14
  3. telegrinder/bot/cute_types/chat_join_request.py +1 -1
  4. telegrinder/bot/cute_types/chat_member_updated.py +1 -1
  5. telegrinder/bot/cute_types/inline_query.py +1 -6
  6. telegrinder/bot/cute_types/message.py +1 -21
  7. telegrinder/bot/cute_types/update.py +1 -1
  8. telegrinder/bot/dispatch/abc.py +45 -3
  9. telegrinder/bot/dispatch/dispatch.py +8 -8
  10. telegrinder/bot/dispatch/handler/func.py +8 -10
  11. telegrinder/bot/dispatch/process.py +1 -1
  12. telegrinder/bot/dispatch/view/base.py +31 -20
  13. telegrinder/bot/dispatch/view/raw.py +20 -16
  14. telegrinder/bot/dispatch/waiter_machine/actions.py +3 -0
  15. telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +15 -18
  16. telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +21 -13
  17. telegrinder/bot/dispatch/waiter_machine/hasher/message.py +15 -16
  18. telegrinder/bot/dispatch/waiter_machine/hasher/state.py +6 -6
  19. telegrinder/bot/dispatch/waiter_machine/machine.py +24 -30
  20. telegrinder/bot/dispatch/waiter_machine/short_state.py +10 -4
  21. telegrinder/bot/rules/abc.py +42 -7
  22. telegrinder/bot/rules/adapter/raw_update.py +1 -3
  23. telegrinder/bot/rules/callback_data.py +7 -7
  24. telegrinder/bot/rules/chat_join.py +5 -5
  25. telegrinder/bot/rules/command.py +1 -1
  26. telegrinder/bot/rules/enum_text.py +4 -1
  27. telegrinder/bot/rules/fuzzy.py +1 -1
  28. telegrinder/bot/rules/inline.py +6 -7
  29. telegrinder/bot/rules/integer.py +1 -1
  30. telegrinder/bot/rules/is_from.py +20 -20
  31. telegrinder/bot/rules/markup.py +6 -3
  32. telegrinder/bot/rules/mention.py +1 -1
  33. telegrinder/bot/rules/message.py +2 -2
  34. telegrinder/bot/rules/message_entities.py +2 -2
  35. telegrinder/bot/rules/node.py +1 -1
  36. telegrinder/bot/rules/regex.py +1 -1
  37. telegrinder/bot/rules/start.py +2 -2
  38. telegrinder/bot/rules/text.py +6 -4
  39. telegrinder/bot/rules/update.py +1 -1
  40. telegrinder/bot/scenario/checkbox.py +9 -1
  41. telegrinder/msgspec_utils.py +11 -3
  42. telegrinder/node/attachment.py +6 -6
  43. telegrinder/node/base.py +17 -11
  44. telegrinder/node/callback_query.py +1 -1
  45. telegrinder/node/command.py +1 -1
  46. telegrinder/node/composer.py +5 -2
  47. telegrinder/node/container.py +1 -1
  48. telegrinder/node/event.py +1 -1
  49. telegrinder/node/message.py +1 -1
  50. telegrinder/node/polymorphic.py +6 -3
  51. telegrinder/node/rule.py +1 -1
  52. telegrinder/node/source.py +5 -7
  53. telegrinder/node/text.py +2 -2
  54. telegrinder/node/tools/generator.py +1 -2
  55. telegrinder/node/update.py +3 -3
  56. telegrinder/rules.py +2 -0
  57. telegrinder/tools/buttons.py +4 -4
  58. telegrinder/tools/error_handler/abc.py +7 -7
  59. telegrinder/tools/error_handler/error_handler.py +58 -47
  60. telegrinder/tools/formatting/html.py +0 -2
  61. telegrinder/tools/functional.py +3 -0
  62. telegrinder/tools/global_context/telegrinder_ctx.py +2 -0
  63. telegrinder/tools/i18n/__init__.py +1 -1
  64. telegrinder/tools/i18n/{base.py → abc.py} +0 -0
  65. telegrinder/tools/i18n/middleware/__init__.py +1 -1
  66. telegrinder/tools/i18n/middleware/{base.py → abc.py} +3 -2
  67. telegrinder/tools/i18n/simple.py +11 -12
  68. telegrinder/tools/keyboard.py +9 -9
  69. telegrinder/tools/magic.py +8 -4
  70. {telegrinder-0.3.0.post1.dist-info → telegrinder-0.3.1.dist-info}/METADATA +1 -1
  71. {telegrinder-0.3.0.post1.dist-info → telegrinder-0.3.1.dist-info}/RECORD +73 -73
  72. {telegrinder-0.3.0.post1.dist-info → telegrinder-0.3.1.dist-info}/LICENSE +0 -0
  73. {telegrinder-0.3.0.post1.dist-info → telegrinder-0.3.1.dist-info}/WHEEL +0 -0
@@ -3,21 +3,32 @@ import typing
3
3
 
4
4
  from fntypes.result import Error, Ok, Result
5
5
 
6
- from telegrinder.api import API
6
+ from telegrinder.api.api import API
7
7
  from telegrinder.bot.dispatch.context import Context
8
8
  from telegrinder.modules import logger
9
+ from telegrinder.node.base import is_node
10
+ from telegrinder.tools.error_handler.abc import ABCErrorHandler, Event, Handler
11
+ from telegrinder.tools.error_handler.error import CatcherError
9
12
  from telegrinder.tools.magic import magic_bundle
10
13
 
11
- from .abc import ABCErrorHandler, EventT, Handler
12
- from .error import CatcherError
13
-
14
14
  F = typing.TypeVar("F", bound="FuncCatcher")
15
15
  ExceptionT = typing.TypeVar("ExceptionT", bound=BaseException, contravariant=True)
16
16
  FuncCatcher = typing.Callable[typing.Concatenate[ExceptionT, ...], typing.Awaitable[typing.Any]]
17
17
 
18
18
 
19
+ async def run_handler(
20
+ handler: Handler,
21
+ event: typing.Any,
22
+ ctx: dict[str, typing.Any],
23
+ ) -> typing.Any:
24
+ annotations = tuple(handler.__annotations__.values())
25
+ start_idx = 0 if is_node(None if not annotations else annotations[0]) else 1
26
+ context = magic_bundle(handler, ctx, start_idx=start_idx)
27
+ return await (handler(event, **context) if start_idx == 1 else handler(**context))
28
+
29
+
19
30
  @dataclasses.dataclass(frozen=True, repr=False, slots=True)
20
- class Catcher(typing.Generic[EventT]):
31
+ class Catcher(typing.Generic[Event]):
21
32
  func: FuncCatcher[BaseException]
22
33
  exceptions: list[type[BaseException] | BaseException] = dataclasses.field(
23
34
  default_factory=lambda: [],
@@ -37,20 +48,29 @@ class Catcher(typing.Generic[EventT]):
37
48
 
38
49
  async def __call__(
39
50
  self,
40
- handler: Handler[EventT],
41
- event: EventT,
51
+ handler: Handler,
52
+ event: Event,
42
53
  api: API,
43
54
  ctx: Context,
44
55
  ) -> Result[typing.Any, BaseException]:
45
56
  try:
46
- return Ok(await handler(event, **magic_bundle(handler, ctx))) # type: ignore
57
+ return Ok(await run_handler(handler, event, ctx))
47
58
  except BaseException as exc:
48
- return await self.process_exception(api, event, ctx, exc, handler.__name__)
59
+ return await self.run(api, event, ctx, exc, handler.__name__)
60
+
61
+ def match_exception(self, exception: BaseException) -> bool:
62
+ for exc in self.exceptions:
63
+ if isinstance(exc, type) and type(exception) is exc:
64
+ return True
65
+ if isinstance(exc, object) and type(exception) is type(exc):
66
+ return True if not exc.args else exc.args == exception.args
67
+
68
+ return False
49
69
 
50
- async def process_exception(
70
+ async def run(
51
71
  self,
52
72
  api: API,
53
- event: EventT,
73
+ event: Event,
54
74
  ctx: Context,
55
75
  exception: BaseException,
56
76
  handler_name: str,
@@ -61,26 +81,14 @@ class Catcher(typing.Generic[EventT]):
61
81
  exception, handler_name, self.func.__name__
62
82
  )
63
83
  )
64
- return Ok(
65
- await self.func(
66
- exception,
67
- **magic_bundle(self.func, {"event": event, "api": api} | ctx), # type: ignore
68
- )
69
- )
84
+ return Ok(await run_handler(self.func, event, {"event": event, "api": api} | ctx))
85
+
70
86
  logger.debug("Failed to match exception {!r}.", exception.__class__.__name__)
71
87
  return Error(exception)
72
88
 
73
- def match_exception(self, exception: BaseException) -> bool:
74
- for exc in self.exceptions:
75
- if isinstance(exc, type) and type(exception) is exc:
76
- return True
77
- if isinstance(exc, object) and type(exception) is type(exc):
78
- return True if not exc.args else exc.args == exception.args
79
- return False
80
-
81
89
 
82
- class ErrorHandler(ABCErrorHandler[EventT]):
83
- def __init__(self, catcher: Catcher[EventT] | None = None, /) -> None:
90
+ class ErrorHandler(ABCErrorHandler[Event]):
91
+ def __init__(self, catcher: Catcher[Event] | None = None, /) -> None:
84
92
  self.catcher = catcher
85
93
 
86
94
  def __repr__(self) -> str:
@@ -103,8 +111,8 @@ class ErrorHandler(ABCErrorHandler[EventT]):
103
111
  ):
104
112
  """Register the catcher.
105
113
 
106
- :param logging: Logging the result of the catcher at the level 'DEBUG'.
107
- :param raise_exception: Raise an exception if the catcher hasn't started.
114
+ :param logging: Logging the result of the catcher at the level `DEBUG`.
115
+ :param raise_exception: Raise an exception if the catcher has not started.
108
116
  :param ignore_errors: Ignore errors that may occur.
109
117
  """
110
118
 
@@ -121,10 +129,22 @@ class ErrorHandler(ABCErrorHandler[EventT]):
121
129
 
122
130
  return decorator
123
131
 
132
+ def _process_catcher_error(self, error: CatcherError) -> Result[None, BaseException]:
133
+ assert self.catcher is not None
134
+
135
+ if self.catcher.raise_exception:
136
+ raise error.exc from None
137
+ if self.catcher.logging:
138
+ logger.error(error.message)
139
+ if not self.catcher.ignore_errors:
140
+ return Error(error.exc)
141
+
142
+ return Ok(None)
143
+
124
144
  async def process(
125
145
  self,
126
- handler: Handler[EventT],
127
- event: EventT,
146
+ handler: Handler,
147
+ event: Event,
128
148
  api: API,
129
149
  ctx: Context,
130
150
  ) -> Result[typing.Any, BaseException]:
@@ -143,27 +163,15 @@ class ErrorHandler(ABCErrorHandler[EventT]):
143
163
  )
144
164
  )
145
165
 
146
- def process_catcher_error(self, error: CatcherError) -> Result[None, BaseException]:
147
- assert self.catcher is not None
148
-
149
- if self.catcher.raise_exception:
150
- raise error.exc from None
151
- if self.catcher.logging:
152
- logger.error(error.message)
153
- if not self.catcher.ignore_errors:
154
- return Error(error.exc)
155
-
156
- return Ok(None)
157
-
158
166
  async def run(
159
167
  self,
160
- handler: Handler[EventT],
161
- event: EventT,
168
+ handler: Handler,
169
+ event: Event,
162
170
  api: API,
163
171
  ctx: Context,
164
172
  ) -> Result[typing.Any, BaseException]:
165
173
  if not self.catcher:
166
- return Ok(await handler(event, **magic_bundle(handler, ctx))) # type: ignore
174
+ return Ok(await run_handler(handler, event, ctx))
167
175
 
168
176
  match await self.process(handler, event, api, ctx):
169
177
  case Ok(value) as ok:
@@ -176,7 +184,10 @@ class ErrorHandler(ABCErrorHandler[EventT]):
176
184
  return ok
177
185
  case Error(exc) as err:
178
186
  if isinstance(exc, CatcherError):
179
- return self.process_catcher_error(exc)
187
+ return self._process_catcher_error(exc)
180
188
  if self.catcher.ignore_errors:
181
189
  return Ok(None)
182
190
  return err
191
+
192
+
193
+ __all__ = ("Catcher", "ErrorHandler")
@@ -1,5 +1,3 @@
1
- # NOTE: NEED REFACTORING
2
-
3
1
  import html
4
2
  import string
5
3
  import typing
@@ -7,3 +7,6 @@ T = typing.TypeVar("T")
7
7
 
8
8
  def from_optional(value: T | None) -> Option[T]:
9
9
  return Some(value) if value is not None else Nothing()
10
+
11
+
12
+ __all__ = ("from_optional",)
@@ -1,3 +1,4 @@
1
+ import re
1
2
  import typing
2
3
 
3
4
  import vbml
@@ -19,6 +20,7 @@ class TelegrinderContext(GlobalContext):
19
20
 
20
21
  __ctx_name__ = "telegrinder"
21
22
 
23
+ vbml_pattern_flags: re.RegexFlag | None = None
22
24
  vbml_patcher: typing.ClassVar[vbml.Patcher] = ctx_var(vbml.Patcher(), const=True)
23
25
 
24
26
 
@@ -1,4 +1,4 @@
1
- from .base import ABCI18n, ABCTranslator, I18nEnum
1
+ from .abc import ABCI18n, ABCTranslator, I18nEnum
2
2
  from .middleware import ABCTranslatorMiddleware
3
3
  from .simple import SimpleI18n, SimpleTranslator
4
4
 
File without changes
@@ -1,3 +1,3 @@
1
- from .base import ABCTranslatorMiddleware
1
+ from .abc import ABCTranslatorMiddleware
2
2
 
3
3
  __all__ = ("ABCTranslatorMiddleware",)
@@ -2,6 +2,7 @@ import typing
2
2
  from abc import abstractmethod
3
3
 
4
4
  from telegrinder.bot.cute_types.base import BaseCute
5
+ from telegrinder.bot.dispatch.context import Context
5
6
  from telegrinder.bot.dispatch.middleware import ABCMiddleware
6
7
  from telegrinder.tools.i18n import ABCI18n, I18nEnum
7
8
 
@@ -9,14 +10,14 @@ T = typing.TypeVar("T", bound=BaseCute)
9
10
 
10
11
 
11
12
  class ABCTranslatorMiddleware(ABCMiddleware[T]):
12
- def __init__(self, i18n: ABCI18n):
13
+ def __init__(self, i18n: ABCI18n) -> None:
13
14
  self.i18n = i18n
14
15
 
15
16
  @abstractmethod
16
17
  async def get_locale(self, event: T) -> str:
17
18
  pass
18
19
 
19
- async def pre(self, event: T, ctx: dict) -> bool:
20
+ async def pre(self, event: T, ctx: Context) -> bool:
20
21
  ctx[I18nEnum.I18N] = self.i18n.get_translator_by_locale(await self.get_locale(event))
21
22
  return True
22
23
 
@@ -3,12 +3,20 @@
3
3
  import gettext
4
4
  import os
5
5
 
6
- from telegrinder.tools.i18n import ABCI18n
7
- from telegrinder.tools.i18n.base import ABCTranslator
6
+ from telegrinder.tools.i18n.abc import ABCI18n, ABCTranslator
7
+
8
+
9
+ class SimpleTranslator(ABCTranslator):
10
+ def __init__(self, locale: str, g: gettext.GNUTranslations) -> None:
11
+ self.g = g
12
+ super().__init__(locale)
13
+
14
+ def get(self, __key: str, *args: object, **kwargs: object) -> str:
15
+ return self.g.gettext(__key).format(*args, **kwargs)
8
16
 
9
17
 
10
18
  class SimpleI18n(ABCI18n):
11
- def __init__(self, folder: str, domain: str, default_locale: str):
19
+ def __init__(self, folder: str, domain: str, default_locale: str) -> None:
12
20
  self.folder = folder
13
21
  self.domain = domain
14
22
  self.default_locale = default_locale
@@ -32,13 +40,4 @@ class SimpleI18n(ABCI18n):
32
40
  return SimpleTranslator(locale, self.translators.get(locale, self.translators[self.default_locale]))
33
41
 
34
42
 
35
- class SimpleTranslator(ABCTranslator):
36
- def __init__(self, locale: str, g: gettext.GNUTranslations):
37
- self.g = g
38
- super().__init__(locale)
39
-
40
- def get(self, __key: str, *args, **kwargs) -> str:
41
- return self.g.gettext(__key).format(*args, **kwargs)
42
-
43
-
44
43
  __all__ = ("SimpleI18n", "SimpleTranslator")
@@ -11,12 +11,16 @@ from telegrinder.types.objects import (
11
11
  ReplyKeyboardRemove,
12
12
  )
13
13
 
14
- from .buttons import Button, ButtonT, InlineButton, RowButtons
14
+ from .buttons import Button, InlineButton, KeyboardButton, RowButtons
15
15
 
16
16
  DictStrAny: typing.TypeAlias = dict[str, typing.Any]
17
17
  AnyMarkup: typing.TypeAlias = InlineKeyboardMarkup | ReplyKeyboardMarkup
18
18
 
19
19
 
20
+ def copy_keyboard(keyboard: list[list[DictStrAny]]) -> list[list[DictStrAny]]:
21
+ return [row.copy() for row in keyboard]
22
+
23
+
20
24
  @dataclasses.dataclass(kw_only=True, slots=True)
21
25
  class KeyboardModel:
22
26
  resize_keyboard: bool
@@ -26,13 +30,8 @@ class KeyboardModel:
26
30
  keyboard: list[list[DictStrAny]]
27
31
 
28
32
 
29
-
30
- def copy_keyboard(keyboard: list[list[DictStrAny]]) -> list[list[DictStrAny]]:
31
- return [row.copy() for row in keyboard]
32
-
33
-
34
- class ABCMarkup(ABC, typing.Generic[ButtonT]):
35
- BUTTON: type[ButtonT]
33
+ class ABCMarkup(ABC, typing.Generic[KeyboardButton]):
34
+ BUTTON: type[KeyboardButton]
36
35
  keyboard: list[list[DictStrAny]]
37
36
 
38
37
  @abstractmethod
@@ -47,7 +46,7 @@ class ABCMarkup(ABC, typing.Generic[ButtonT]):
47
46
  def get_empty_markup(cls) -> AnyMarkup:
48
47
  return cls().get_markup()
49
48
 
50
- def add(self, row_or_button: RowButtons[ButtonT] | ButtonT) -> typing.Self:
49
+ def add(self, row_or_button: RowButtons[KeyboardButton] | KeyboardButton) -> typing.Self:
51
50
  if not len(self.keyboard):
52
51
  self.row()
53
52
 
@@ -129,4 +128,5 @@ __all__ = (
129
128
  "InlineKeyboard",
130
129
  "Keyboard",
131
130
  "KeyboardModel",
131
+ "copy_keyboard",
132
132
  )
@@ -1,5 +1,4 @@
1
1
  import enum
2
- import inspect
3
2
  import types
4
3
  import typing
5
4
  from functools import wraps
@@ -40,10 +39,15 @@ def resolve_arg_names(func: FuncType, start_idx: int = 1) -> tuple[str, ...]:
40
39
 
41
40
  @cache_magic_value("__default_args__")
42
41
  def get_default_args(func: FuncType) -> dict[str, typing.Any]:
43
- fspec = inspect.getfullargspec(func)
44
- if not fspec.defaults:
42
+ kwdefaults = func.__kwdefaults__
43
+ if kwdefaults:
44
+ return kwdefaults
45
+
46
+ defaults = func.__defaults__
47
+ if not defaults:
45
48
  return {}
46
- return dict(zip(fspec.args[-len(fspec.defaults) :], fspec.defaults))
49
+
50
+ return {k: defaults[i] for i, k in enumerate(resolve_arg_names(func, start_idx=0)[-len(defaults) :])}
47
51
 
48
52
 
49
53
  def get_annotations(func: FuncType, *, return_type: bool = False) -> dict[str, typing.Any]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: telegrinder
3
- Version: 0.3.0.post1
3
+ Version: 0.3.1
4
4
  Summary: Modern visionary telegram bot framework.
5
5
  Home-page: https://github.com/timoniq/telegrinder
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- telegrinder/__init__.py,sha256=b3mjSnDAgD28pyv7tS-cqlAPjZeYkFeTSJ6TIvoNDxw,5407
1
+ telegrinder/__init__.py,sha256=ZQ-xhn_0nk9NS87NNjHy2GyQip0i_oigR389jEq_kd0,5407
2
2
  telegrinder/api/__init__.py,sha256=AFZ07UvdL4rhq9lZpB-j9JuGOONmfkvt8RfdG71ND38,226
3
3
  telegrinder/api/api.py,sha256=OSwm2_mgHS9jCsKy_vdOJzVtH-j6v68ypkdtvKFlQ3w,2877
4
4
  telegrinder/api/error.py,sha256=6_KBR819Tg9mLI7w5aHHYnrS8VSDYNkWIrHCnfgCFKk,422
@@ -8,23 +8,23 @@ telegrinder/bot/__init__.py,sha256=8Ft0wFT2n-l-DkImsGcxxbt3zgJumMwUIEGTfn0k8XU,2
8
8
  telegrinder/bot/bot.py,sha256=qrB7GHglZG1wuXdPrAQ7kFzcuOT1og_ybwuem_feL-U,2780
9
9
  telegrinder/bot/cute_types/__init__.py,sha256=moe1mSKesNqUBf8m11s2wiL0fJIa8JOEHRqDr2Tira8,639
10
10
  telegrinder/bot/cute_types/base.py,sha256=EmQH0UZSzVdaMNT_9ExbN9-YUdngIUory97aDj_-rIM,8084
11
- telegrinder/bot/cute_types/callback_query.py,sha256=Mn2T5-ImUHXX6Wxx6y0KE_e_uSv6kDKLLMI9R_oWpUg,18941
12
- telegrinder/bot/cute_types/chat_join_request.py,sha256=6Omx8j5iKazo28pYgIS28iM7IaRQetWjl80UeB896JA,2017
13
- telegrinder/bot/cute_types/chat_member_updated.py,sha256=h-bqVkSlZk_AcEV8MT8gLXgwTDGVs-pRGYbqpN8frIQ,6371
14
- telegrinder/bot/cute_types/inline_query.py,sha256=51a9i3iIwvppY1z0uEPx4UUsPmxMl02bQnAopNC3dpE,2400
15
- telegrinder/bot/cute_types/message.py,sha256=fT7Lmi7nhE7PuFEx0xAIwo3-YYT84uW65LIVT2uq1Ko,139029
16
- telegrinder/bot/cute_types/update.py,sha256=ArUnqgvzUgQvXpHYhokAXB-ReSmbxzb4w9G2I-D7Jv4,3175
11
+ telegrinder/bot/cute_types/callback_query.py,sha256=N28q25vMVyDf-QmWAwAl4onoQZrB3W_IX7_j3mDOCzA,18760
12
+ telegrinder/bot/cute_types/chat_join_request.py,sha256=j0jD9Cmt4ysKp_xYhoCcXKmV-sM4aLcHQSJsmavNMLQ,1997
13
+ telegrinder/bot/cute_types/chat_member_updated.py,sha256=-wl9pA6dgX0TFpnxEaaBnAhM4j7JSRB5qtH4hRodx88,6332
14
+ telegrinder/bot/cute_types/inline_query.py,sha256=hy1uGP0i60Kq3B42kJMx1AIDVewozB20YXbYt9ZEuN8,2326
15
+ telegrinder/bot/cute_types/message.py,sha256=NC7aiiARc1JnPs0M_oRiqo3ym5U2T8sGn2-2zeDIXAw,138662
16
+ telegrinder/bot/cute_types/update.py,sha256=WYpivvNVe0wIHQx3AfIKK3S6cDp2AfNvAQHDwytPOOA,3163
17
17
  telegrinder/bot/cute_types/utils.py,sha256=oJWRS7TCkvDhckwhc8yxw3Qn1NKvqDtEGTZ745qEbMg,2530
18
18
  telegrinder/bot/dispatch/__init__.py,sha256=UzU0PM22YKtM6J2aVuGRx7NEFUGnbUZlmReCFSTCNek,2477
19
- telegrinder/bot/dispatch/abc.py,sha256=_fmiHO9V44m0sFgWRw_3CoV0f37Iz-DkTmSx09TLtTo,787
19
+ telegrinder/bot/dispatch/abc.py,sha256=RowAphsEhhK9cYAHqs3h0Bnx_ja2WBoWAIkMCsNOGk8,2340
20
20
  telegrinder/bot/dispatch/context.py,sha256=vt_kGYhyc0RKQ2GKsbi-ewAwy2OTqaho6H3wVf8c-2g,2607
21
- telegrinder/bot/dispatch/dispatch.py,sha256=G8FU_6l5p2KldVyTtW2WNIpA5EC6TA9iXl1IdWJ2MlQ,6331
21
+ telegrinder/bot/dispatch/dispatch.py,sha256=p5vod5FuVxC3523WnZgL8N73cGoZ5Y9159RXoZC0zII,6346
22
22
  telegrinder/bot/dispatch/handler/__init__.py,sha256=PL17gyh9u9fHHz1yTglyBpRGoioqdMD5UxFAtmTidC0,911
23
23
  telegrinder/bot/dispatch/handler/abc.py,sha256=FB2Xkiy-ZFsX2pEHfM7tCIXXjgWSouu07JYosICS9UA,578
24
24
  telegrinder/bot/dispatch/handler/audio_reply.py,sha256=eNj9sO1auG8_HwZ3RGiegh7crqIQRcXuLeZ9Zfwc4vg,1358
25
25
  telegrinder/bot/dispatch/handler/base.py,sha256=OnmDTgypbnrHMoDW_-UV--wIRn2Nlw2IM2EM5q2vF2w,1811
26
26
  telegrinder/bot/dispatch/handler/document_reply.py,sha256=0SAvmcG9DwuZDJHd_si8itvnMWdhl9ajkviAtPzlkJM,1385
27
- telegrinder/bot/dispatch/handler/func.py,sha256=S5H2lEZdeHqwKf4-A9kauXUqQ1lYToPkjv6BxOCDdr0,4836
27
+ telegrinder/bot/dispatch/handler/func.py,sha256=XHWYHJOcVLGJD4Jo3pIlvGJ4hTsWQMp7ATGQ_KdGpUU,4794
28
28
  telegrinder/bot/dispatch/handler/media_group_reply.py,sha256=0gyODXt2XOPCw-pbgdcun4sI4L2zTmbIvZgyUbO4Rl4,1394
29
29
  telegrinder/bot/dispatch/handler/message_reply.py,sha256=kaPubePuj-poRgKfiJNLqweED9kr_0JADxssxr3JeBg,1137
30
30
  telegrinder/bot/dispatch/handler/photo_reply.py,sha256=B9vqgIG7vc1hq5EGUI4tnpw97KNweNmu32F5Fgl3-IY,1358
@@ -32,7 +32,7 @@ telegrinder/bot/dispatch/handler/sticker_reply.py,sha256=E9DNupUhd4EWNUXcJDF6QWk
32
32
  telegrinder/bot/dispatch/handler/video_reply.py,sha256=G3E1v60ubkmZ1m2CUxbTR08VQywu7D4VQHDAO_Jhlk8,1358
33
33
  telegrinder/bot/dispatch/middleware/__init__.py,sha256=znQGQ0jnBioEXr-2RPHOkmDbjei4LEbaTjgiE9c8aXI,96
34
34
  telegrinder/bot/dispatch/middleware/abc.py,sha256=O3aiE44XpjE6h9iXYc_uWNZCBxDH1KAFrLej4nsJhUI,413
35
- telegrinder/bot/dispatch/process.py,sha256=FW--cl5gnAVIe7wKR-5vPhvTDIWbCqJANh0nKansOFA,4207
35
+ telegrinder/bot/dispatch/process.py,sha256=nnceowxYIknJatHQJRZjTN3qDNpC9r57qxiBajl7WQs,4206
36
36
  telegrinder/bot/dispatch/return_manager/__init__.py,sha256=z1c9ZC_OdbEJ7utmA8jRiSjJQNTBLlTKmIQzrl-kDJs,602
37
37
  telegrinder/bot/dispatch/return_manager/abc.py,sha256=O9k0oJqRbJXPQqEr3PGJAz7Hf2eYiNGRLYtXQq8E8-o,3671
38
38
  telegrinder/bot/dispatch/return_manager/callback_query.py,sha256=x7FT1PioR6USsfeyNVyy8mWvP4Vkq-sysIl1OpZm-fI,722
@@ -40,58 +40,58 @@ telegrinder/bot/dispatch/return_manager/inline_query.py,sha256=pM41c53TyPkVY5o5H
40
40
  telegrinder/bot/dispatch/return_manager/message.py,sha256=cLnY3sAJCvVr1iA3GpakwngHrm_5STPMES2ip0VhkuQ,1238
41
41
  telegrinder/bot/dispatch/view/__init__.py,sha256=zef6oMILerYp9BZ7wQ_0K-4Ws0UZR5Bm9eTUqs8J0_Q,847
42
42
  telegrinder/bot/dispatch/view/abc.py,sha256=tOfzTvlfX4-E5ZXCsPFfqhiNpowUwou1hbA68SW7dl0,984
43
- telegrinder/bot/dispatch/view/base.py,sha256=aHsBU300Js3SoJesEpTuskpLJu8VaTysvKkxot3GKP8,6566
43
+ telegrinder/bot/dispatch/view/base.py,sha256=GQD2B3LPXZIcAnbwH3ocl2tYX2b_SnshoAx0AzFIqfA,6888
44
44
  telegrinder/bot/dispatch/view/box.py,sha256=ydqvuReC7lUZmuNLCEAbs6xOWDWBUj99MpTMhX0jWT8,5530
45
45
  telegrinder/bot/dispatch/view/callback_query.py,sha256=xMmg_ZFV2D0DYRNzoUn32K99N4pW_5avhe4MH5ipUE0,619
46
46
  telegrinder/bot/dispatch/view/chat_join_request.py,sha256=NHrl9gDj65bE18nagfRxBmSYWznj6ov8uJFCK7C8VAI,494
47
47
  telegrinder/bot/dispatch/view/chat_member.py,sha256=ZDZOxxD-YJZWuX82CCZ2WkGGYKKbFMSoFxpqJWfR4RQ,1238
48
48
  telegrinder/bot/dispatch/view/inline_query.py,sha256=Zy9YmDLKOjwgDxPykvskMTTOzGCPlOel-mX3edmlu-k,573
49
49
  telegrinder/bot/dispatch/view/message.py,sha256=dI_iL5ASVe36S7Ahrk36RVuMy0Xceb8kx5osgmhoe8M,1416
50
- telegrinder/bot/dispatch/view/raw.py,sha256=5U5okyT6tJM3Sxnr42S00GA9ulc28m351B4Er9-9QhU,3593
50
+ telegrinder/bot/dispatch/view/raw.py,sha256=gkyHkJgQheFWjY4AJC3cuz2pUOghHYpQEkCbQcinZWU,3573
51
51
  telegrinder/bot/dispatch/waiter_machine/__init__.py,sha256=2I3MQpTAVFCHoHJUxAPCWUyasGOkdGSBKRETiTLgBpg,862
52
- telegrinder/bot/dispatch/waiter_machine/actions.py,sha256=_GjHGbqA264MtwSp8o3hLEqPJ8_ol9sxEj_C5gwRgSw,330
52
+ telegrinder/bot/dispatch/waiter_machine/actions.py,sha256=q5sJAN6wdGSRq38bTfedVQZW1xK2WLlgNAviWpVqHEU,361
53
53
  telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py,sha256=nu0WhOWmGkhybOP-faiAFEx1nlYo_N_LW2AuAmbC_Z0,497
54
- telegrinder/bot/dispatch/waiter_machine/hasher/callback.py,sha256=L8VAMaDPMUkE7yOOzX8xKC7LPGF6at3l5Z1e8PW0Urg,1519
55
- telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py,sha256=ZOMFkGWi1noBmXpxLwGmuP6IA6G2c_AB1KYMqE6C6c8,1603
56
- telegrinder/bot/dispatch/waiter_machine/hasher/message.py,sha256=YRewb3bxGeL58TkLyU9HBGjiXM9Bwj-VpmElSAHxBqo,1183
57
- telegrinder/bot/dispatch/waiter_machine/hasher/state.py,sha256=GOOI7pjOaXDiFlwI40h79Nq6jbCSVT-p_IYw2tmOka0,523
58
- telegrinder/bot/dispatch/waiter_machine/machine.py,sha256=STjJIZk2lZah0cr1YTL304UQjehaeB4reDTqzZ5QiP8,5819
54
+ telegrinder/bot/dispatch/waiter_machine/hasher/callback.py,sha256=W-caGejmYBRx-yWdUPH-D54yPPBtESrroNLyVog8e2I,1587
55
+ telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py,sha256=uP8IDlZ3VU4s4Xf2Mtf9SOluRn8BIcrmBSQtsfCXdPg,1735
56
+ telegrinder/bot/dispatch/waiter_machine/hasher/message.py,sha256=NoT2BaTrHVnyaaXsXTkf8riJZp8473-T3EXNri4y70I,1253
57
+ telegrinder/bot/dispatch/waiter_machine/hasher/state.py,sha256=hV4gdQD14dUgo6s_x-_PCIqeU3Ku7EtdoZk_t2fi3MQ,619
58
+ telegrinder/bot/dispatch/waiter_machine/machine.py,sha256=wVSsDjwlmrQl5uqdYLWwnPR906dYWWhKiQ9IwVC79Q4,5666
59
59
  telegrinder/bot/dispatch/waiter_machine/middleware.py,sha256=6cXjKASm1I3QPW_FaNU62c1mOleRt9OsuwWY1_zyhwQ,2976
60
- telegrinder/bot/dispatch/waiter_machine/short_state.py,sha256=7oIXEEiaMpE6PpoZyR08SCltW_L4gBhHKS9ghhLga4o,1814
60
+ telegrinder/bot/dispatch/waiter_machine/short_state.py,sha256=GiYqVEL8RVVYgchRnIFiVyhB5KBI_trcytIoGHw_w7Q,1954
61
61
  telegrinder/bot/polling/__init__.py,sha256=OqfIFPS_V6UrCg-vCv9pkMFzTKdNbDP2faBfATs_TGg,94
62
62
  telegrinder/bot/polling/abc.py,sha256=qFiKzWTWENK-sSuShC5cPlM-JS4In2c8-1_ARdwdTms,442
63
63
  telegrinder/bot/polling/polling.py,sha256=SOcVfmMS20M2O6ilXxvu507H7S8iNawebclfmwWJe3U,4765
64
64
  telegrinder/bot/rules/__init__.py,sha256=nl2erwXAnICnZwAuqZr5wPm3tLjHGxMU7Qyi03Jym44,2859
65
- telegrinder/bot/rules/abc.py,sha256=kfL43oW32an8Q7eH5Nq3EUS5a01Y9eW1xrlaUInp08M,6192
65
+ telegrinder/bot/rules/abc.py,sha256=9E80uDt9hReMojD94RV9ZPwMRDqyn44ShhBIP6NnE-s,7282
66
66
  telegrinder/bot/rules/adapter/__init__.py,sha256=rZNX-Squn4hsE19tW2q3x-f33ZB6yzgU5eoI1VB0TgI,445
67
67
  telegrinder/bot/rules/adapter/abc.py,sha256=lPyieSDDr1z98rZ4W6Ic8QzHDzCEU9xIYrPKU9qDCas,682
68
68
  telegrinder/bot/rules/adapter/errors.py,sha256=2r_UBTWm5-heU-NchBfobC1f848EWeC64nKvprGnAAY,73
69
69
  telegrinder/bot/rules/adapter/event.py,sha256=XDeHYGwOS7bYsI5bP-iPg5Ut_dzGbTBC089OkJhSfpY,2772
70
70
  telegrinder/bot/rules/adapter/node.py,sha256=VuC_LGGkZh6GKW3dCvfDZhbiA8WJyddY8xxzerUZ7us,1663
71
- telegrinder/bot/rules/adapter/raw_update.py,sha256=r-AeEyGdJS8zpAj5Edzy___OlgT4cMQH9MO-Cq1p0Vk,1039
72
- telegrinder/bot/rules/callback_data.py,sha256=WxRUQRITQCH54p-gkdHHovJImYCrHOAfV7zgasc9IJI,5585
73
- telegrinder/bot/rules/chat_join.py,sha256=mFmSOXkiU_wSuIjKgMxh8mIusqeH_-DKVvouxdgZe-4,1446
74
- telegrinder/bot/rules/command.py,sha256=ESJA21HZHWT0RlYzHqOKBa223CTFbqwx_cgvNsWao44,3912
75
- telegrinder/bot/rules/enum_text.py,sha256=YJ6S2fAQts8zCjCgoL7uUGWlnPOH59rjvA7Si2hKyR4,944
71
+ telegrinder/bot/rules/adapter/raw_update.py,sha256=Pz_xs5dvfsf_FXi9iO0SJFq4JRnDNolYGXqCSP_0tPs,1007
72
+ telegrinder/bot/rules/callback_data.py,sha256=ZU9Qi5LyP_CNvpO8XTfNa0HKgX7H27N6oxz3znHNTTU,5569
73
+ telegrinder/bot/rules/chat_join.py,sha256=pHXQv9VMKmBO7OGcHJLk-a9rB5l6sOybFmOWvgh1PXU,1442
74
+ telegrinder/bot/rules/command.py,sha256=gYEWkrOr_xBWXbCnEXBrDs8EHRyW-pwrlascVRmS854,3906
75
+ telegrinder/bot/rules/enum_text.py,sha256=c-B3_iF6nZOnOY1A8s500W37XYeEyQaJIl1OU5aZ3V0,968
76
76
  telegrinder/bot/rules/func.py,sha256=dqcxhC7dIP67Zi20iFz2jCWwwioM2NuemCM5dwpQDXg,769
77
- telegrinder/bot/rules/fuzzy.py,sha256=Kx4S1y6iFqWM3uIUmor47mCmD08NRRJbcciH-dFs19M,676
78
- telegrinder/bot/rules/inline.py,sha256=ETAwNdVdOKyk46oK2QoYCH1Sik-FbOGx4Ra5j63aGo8,1939
79
- telegrinder/bot/rules/integer.py,sha256=hJ8aENGl1q_Caw1sbG-MHXsnWZCt9r57IZWY9zLC-TE,435
80
- telegrinder/bot/rules/is_from.py,sha256=aFl4_-r2welnTw7TRzyfQODk0HX5E0aYcEytiY_s3pk,3820
81
- telegrinder/bot/rules/markup.py,sha256=B0nGzO3j9ee6I5272o3ILTuLcP_AL_yI0Lamlc34gxQ,1247
82
- telegrinder/bot/rules/mention.py,sha256=xteWbtSjQN3KOXpB8RjuVYu18bGrLxNtVFg6oR-UkxU,435
83
- telegrinder/bot/rules/message.py,sha256=VFfcEmNrw5sW4EYpk2XgLkSE5-rRr7sWC2dFE26Q3cI,442
84
- telegrinder/bot/rules/message_entities.py,sha256=imYBaajJbtRZy4oYsCYnIAUlr6-OiDURuza647VQ_ZU,1097
85
- telegrinder/bot/rules/node.py,sha256=IP7Ke-4hILb12XHNIresMf_87kXhlLfKOloShoQvWN0,892
86
- telegrinder/bot/rules/regex.py,sha256=mjXXPX-NB2e3gFU6LFihLnKANcgUoAL5lOnfmhC3Qnc,1153
77
+ telegrinder/bot/rules/fuzzy.py,sha256=GhI0Eqf5Y69bvIlYDvGbGH6RNQqW81aXK3YV5OVlZ04,670
78
+ telegrinder/bot/rules/inline.py,sha256=SKc9AAL5igUd2LX83Xoe2WCZUWPONcNqvdFcNge8fEQ,1921
79
+ telegrinder/bot/rules/integer.py,sha256=nDabEsuGfzC8cBuOtUCAkeWyFHW6u_BKvvcya2HJr-c,429
80
+ telegrinder/bot/rules/is_from.py,sha256=_ZFdPg6zAsXJ8Cb-sjcRc9fsonzmvGJvh-5Fca2JPTI,3700
81
+ telegrinder/bot/rules/markup.py,sha256=Y7PXvE0nlh5GHT2NJqtWzXMiWmGSkfPABF1WFo0xvrw,1328
82
+ telegrinder/bot/rules/mention.py,sha256=u5VQbEwb1BuYmXMLE0bxLde4fDcvEGCq3JAg0dhuaN8,429
83
+ telegrinder/bot/rules/message.py,sha256=1zwZW4JqQPGPmuy4j3hMxQTQPrp2l29MR9HYXJQHRMM,456
84
+ telegrinder/bot/rules/message_entities.py,sha256=S0vxpXPld7gGESMpk7lb37OnPXGcLYCWWXqcMMwQHHM,1085
85
+ telegrinder/bot/rules/node.py,sha256=CQGzT-pOmuh2Wkbq-1WvOzzWrM3vVsRlGEzBUCZ1v6w,886
86
+ telegrinder/bot/rules/regex.py,sha256=PKryH44NGqeKiW53OggwCsGSFh_rQTddMojQ3AQme5A,1147
87
87
  telegrinder/bot/rules/rule_enum.py,sha256=35GwPKLBTG_ESn4TZLcFJTLNjYXAi_d9wrfIDexoEH8,2113
88
- telegrinder/bot/rules/start.py,sha256=3ciA28m9JNcM-1H2YnLrUNyS1Y4UsyYPR5MClrpdAdA,1154
88
+ telegrinder/bot/rules/start.py,sha256=AipwfOQ2LGCofvgouRmkIiY9mGFLlEUJ-7a3CLIiy4Q,1147
89
89
  telegrinder/bot/rules/state.py,sha256=3hJTT2yVTqGbsdC52qCXqXyctnCZeZuNC7TkpfDjXic,975
90
- telegrinder/bot/rules/text.py,sha256=h8SBiqF3_kkITDRCeDDanmNG80NRoSgj_dutjoV-26Y,964
91
- telegrinder/bot/rules/update.py,sha256=k73pZzlzhw77gHAmeIsqehy0-EI2ec8wVGxGRIF_8ao,398
90
+ telegrinder/bot/rules/text.py,sha256=JyypoDCoR6LM2lmK0Ej5sfcXwtGwbLibY7-96w3a80s,987
91
+ telegrinder/bot/rules/update.py,sha256=-mE12-xy0AjOz9RVRVZ8vS7ohGCuf_bNmG26rDbrjfg,392
92
92
  telegrinder/bot/scenario/__init__.py,sha256=nnPjdxdvjoEYYMRUEfWvIhZStiY1C984x1azdRRP9II,136
93
93
  telegrinder/bot/scenario/abc.py,sha256=3UwnA9Nt6CETKm2YclD0gVbn-483fTSBriZADd3p-bM,468
94
- telegrinder/bot/scenario/checkbox.py,sha256=rZxYJjju7_UvcCCedYk8ZNi6yA3aMgbGnWzOMwVHnrg,4249
94
+ telegrinder/bot/scenario/checkbox.py,sha256=hF8YXPtTceijoJpCe-la2Hu0uStmUvn3g9bCHE3cOCQ,4561
95
95
  telegrinder/bot/scenario/choice.py,sha256=9BiLViO7MEblBcYqlAkW_L3Nfa6NWcF3sj3X1GyIyBc,1480
96
96
  telegrinder/client/__init__.py,sha256=ZiS1Wb_l_kv3FHzEEi1oXtFLwlA_HXmWOzeN0xA3E7Y,104
97
97
  telegrinder/client/abc.py,sha256=OxsTX_PLYBEeFT9zpidFUzAbQL9BM7rQqru7zdn5DiQ,1611
@@ -99,56 +99,56 @@ telegrinder/client/aiohttp.py,sha256=gVYHhhfqdsC1OJ0x6AhK2V1x0yjeXe1PwDC0I3T6UPg
99
99
  telegrinder/model.py,sha256=2s5UomOJiT97sxAlUc-ySDRWTq1Sx_6vs3jLrlVExM8,7263
100
100
  telegrinder/modules.py,sha256=0EDTJsFhM6sa9P34gHOvrsMIV-uouq80iBraFvCbOA8,7743
101
101
  telegrinder/msgspec_json.py,sha256=eDuRTP_bFYWtNPDINuzY2OGKXbdleaKyXh2mQgfJdMk,237
102
- telegrinder/msgspec_utils.py,sha256=o2jqgORB7MT7R9idgJ88kkAJLXPXkzBxbQLQPpVR-XE,12257
102
+ telegrinder/msgspec_utils.py,sha256=Ta4B4Q4iKsTj2MR1eQQdzqn245yAXUSwWaBpM7W7lSI,12332
103
103
  telegrinder/node/__init__.py,sha256=f4rkFvg0TeAjZehHd6qloxHZectsFsTWPh6opdekhSY,1376
104
- telegrinder/node/attachment.py,sha256=n79uAt1ixgnr8qjBMNstu36qe4Fli63kSvpgW1WO7S8,3061
105
- telegrinder/node/base.py,sha256=Wjfm4JvExaM9NSpSQmUtt7Z-r42wU5rl-asCoJ2-NC8,3741
106
- telegrinder/node/callback_query.py,sha256=aDXnDGQb6H7im5J8A-M3vfZHczg0PrFAjUexIK2dTUM,507
107
- telegrinder/node/command.py,sha256=q2J4t85XpLOd8GtoLZ_xO9yW7dKDd2-6r1-W7QatC2k,913
108
- telegrinder/node/composer.py,sha256=5BVj8ro8KCMpOCbPmGFloXys_aitdGRdq6zluBzuEjU,6230
109
- telegrinder/node/container.py,sha256=dg-QKCMmme_-vZFIBq_o0AnLsF6pABmEcWIA7fBGgOI,841
110
- telegrinder/node/event.py,sha256=T3zweqQvzqwZn5P6KeoLOhd3ixWvNogQZ5cVfUqnrY4,2527
104
+ telegrinder/node/attachment.py,sha256=W172F6bgxacrfyNRQCzBntwNRqlz3wd-dKefpZE8Pmc,3025
105
+ telegrinder/node/base.py,sha256=meaj61Kiz8CcaT0FC7fASi2UyGoQhIBx0evFcHbKBLg,3975
106
+ telegrinder/node/callback_query.py,sha256=74vcdj_hQCWbIzPjQAid1eFN0TaJI_xvZqzel5ioykU,501
107
+ telegrinder/node/command.py,sha256=W6DAikNZ_TFliaoLuhpuIR_D0kLkMdrPd8HjsdcB4_Y,907
108
+ telegrinder/node/composer.py,sha256=TV_ByJ4gqM_cs4u5hS20l32tw1dlHLSkL8MWyueuhuA,6330
109
+ telegrinder/node/container.py,sha256=_EUXChgKJCiUnEgR06cNzk4suMHqyLbMKMU54Mqe5yE,835
110
+ telegrinder/node/event.py,sha256=6UxhoRFtfCCmRH28dJ9Bbqcs8DxgPp2KQRRfs2Ifb3o,2521
111
111
  telegrinder/node/me.py,sha256=jLAkRbcIijiN7UXZ62Q5F7VgCsmlgBLiU1reffnESQc,417
112
- telegrinder/node/message.py,sha256=TbT2zeR9kVR-QAqVkRAmtse4U0BHoWfQ4esKMKLzm7A,449
113
- telegrinder/node/polymorphic.py,sha256=zNgC8vjRDKFpW9SClVLEvgpvqRGFi_ku1S7PhE9A2x8,2063
114
- telegrinder/node/rule.py,sha256=c6Q87KXU1uNSNH7zCxPk0b8sZLc4ZNwtJS_XugUMKTI,2488
112
+ telegrinder/node/message.py,sha256=ADlNe_b6fUX5jHpoqu4wSyHKR72pXgn6L6CXGaKAb0Q,443
113
+ telegrinder/node/polymorphic.py,sha256=bh53UQBReFz-d481OYEPyS7Ez6l3LcAanL6SEjp_ieU,2124
114
+ telegrinder/node/rule.py,sha256=pzNAWL7BLQdTAGs-Qe8X9uywHwN3vqMFoVjxqf-gzYk,2506
115
115
  telegrinder/node/scope.py,sha256=SBC4j6MoqQxhtYzjgLYkfjd0-b8moFOEKm6hQt3fno8,708
116
- telegrinder/node/source.py,sha256=fejxlekKCUaiuLuFK_fwX0nCmAZdLsMqEGj5GsvmNKE,2335
117
- telegrinder/node/text.py,sha256=Jik937Pn6JGAKiplHmHseWDWoflnK5yirvvG_vrUxl8,581
116
+ telegrinder/node/source.py,sha256=1iR9DgmbtO38LRZi1yphteypFaDHAjIh_YPSeff0Lvw,2291
117
+ telegrinder/node/text.py,sha256=YiItMrhcXWkBu5DmUJ68hEDY3qs8gG6sEtqwcMwFS8o,569
118
118
  telegrinder/node/tools/__init__.py,sha256=iyjs82g3brYGzpPsUQaoK6_r7YuQhRkJ61YjjuPOx9E,67
119
- telegrinder/node/tools/generator.py,sha256=uGK2aYDgb9pdpviAdUKnGdAI8elW8KHQY0tI39AqbSU,1128
120
- telegrinder/node/update.py,sha256=2baHe10IJ0f6oOeQIqBXduRio9PGVd5Q2lbGyfU9yU8,441
119
+ telegrinder/node/tools/generator.py,sha256=YBgQb4ykWT_5RKzkT4V3SmhtjWC0fhkCuKIyB3TkaOw,1102
120
+ telegrinder/node/update.py,sha256=Z1vKLIuuXnGjxKOGTJgsdDSJMsFQF8qMj9coX2hDJ30,447
121
121
  telegrinder/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- telegrinder/rules.py,sha256=Cz5giVM4SI5WKjT5iz0eVmB6y4DiCtOX414molbQ0rA,1115
122
+ telegrinder/rules.py,sha256=exnbhmzEKnIoYIrOBHgJmvC0cq8qTczFqS3lDPZsu_s,1145
123
123
  telegrinder/tools/__init__.py,sha256=DJ1fzGRlxMJ4SzsSAW_hzk6q9YPfY5fxMX-hL7zTMak,2977
124
- telegrinder/tools/buttons.py,sha256=4Mc8KZ8i8l2XSiJaybbO23ywIx8T3bQiMH0UkyXuj4I,2905
124
+ telegrinder/tools/buttons.py,sha256=3JONQh3ua2eFEyDj2aK47WUwcVrYVKWSwnPIOghy_e0,2940
125
125
  telegrinder/tools/error_handler/__init__.py,sha256=WmYWZCNhhSk32j4lIOltEwzoYUx086TGTbOF5h3Ps7s,207
126
- telegrinder/tools/error_handler/abc.py,sha256=BpBtysvMZKxAYAIrQHYXNxP9mCZRzjtshFFwzIXvVi8,882
126
+ telegrinder/tools/error_handler/abc.py,sha256=KK6cE8_95scCt74l2NCumHbQmx4WSzRE88c3rl5pWB4,861
127
127
  telegrinder/tools/error_handler/error.py,sha256=uLcG-wqyOeCEB45m8vMcGy5kZ87bGHUS_-fPw2cGE9s,221
128
- telegrinder/tools/error_handler/error_handler.py,sha256=nxYNkOgqY4Mn7x8d6w38Vmk6AlyF4EBwNYWQk9RMcrU,6360
128
+ telegrinder/tools/error_handler/error_handler.py,sha256=lM8ooBJPEUNTMDs8e71XBbJAWyf7vAMNgceLmKPxfrI,6680
129
129
  telegrinder/tools/formatting/__init__.py,sha256=1tFuJjMpDphCIOR4uXQhptyLHuAZ26mYSFx_BQwL5Lo,1459
130
- telegrinder/tools/formatting/html.py,sha256=h8hyN6t6cJfMBjMf-XWZixVnweoAuLUIJ1xjg9JOJDw,8736
130
+ telegrinder/tools/formatting/html.py,sha256=230nOLTU5HpOzqdyvt3q7x5P5x3096vETH-4ADKdQsY,8710
131
131
  telegrinder/tools/formatting/links.py,sha256=dYJy2qPxa4YGHYqSSCTv-6hXz0Aa0AGuzsLXwbxPZ9A,1112
132
132
  telegrinder/tools/formatting/spec_html_formats.py,sha256=I-OULqlof8NOeSNGBddKkudqMLjsMAQ02Pc6qH_fNRQ,2617
133
- telegrinder/tools/functional.py,sha256=tOTFesmvXHyz3tUlrP9FLG4XYa-xKzqdp4I-upOFl9w,192
133
+ telegrinder/tools/functional.py,sha256=WBnOlSoIiO8glq8C3NmfGrgqQYK0yC6ISgQ3HPuRf1A,223
134
134
  telegrinder/tools/global_context/__init__.py,sha256=5pF9growKd28WO739wk_DZUqCDw5hxs6eUcDtxTosX8,290
135
135
  telegrinder/tools/global_context/abc.py,sha256=twwAmbTk49KGl_POImr4yj6POr-zdx8mz74McuphZH0,1644
136
136
  telegrinder/tools/global_context/global_context.py,sha256=U-rdGgPJ5Cde4FuV6IP6jQWxlrvDaH6YYuBSA6RFWHU,13679
137
- telegrinder/tools/global_context/telegrinder_ctx.py,sha256=U6DHIC-B40HLWojwU3tAui256VcZpTpUmYhSSqV0vDY,663
138
- telegrinder/tools/i18n/__init__.py,sha256=CLUoiCJzOZzF-dqDIHZ5Fc8QUa38cYhIG4WF-ctPLfE,288
139
- telegrinder/tools/i18n/base.py,sha256=jxJVYiTplJaNeklkGiin-m7BkfZiac2fbVXTEdhNw6o,726
140
- telegrinder/tools/i18n/middleware/__init__.py,sha256=y5ZX6s3fOix_Yn98UNO8VqQ7ihJbQ_e5Uz01RgL7pHg,82
141
- telegrinder/tools/i18n/middleware/base.py,sha256=gGqcPxJLLC3f6XfV_0-drhr27TND40cL1Z5sNmC84lo,663
142
- telegrinder/tools/i18n/simple.py,sha256=yiaGtEAaMkrzYV3O7esA2wi3A2n9YyndxKPKp8Fs834,1567
137
+ telegrinder/tools/global_context/telegrinder_ctx.py,sha256=xky1mUflhHonhI6Q1Mwz2SBO-eKTTBs5qBJbZkuuRK0,724
138
+ telegrinder/tools/i18n/__init__.py,sha256=jMrrdFexgMU-BUiKf-p22VowQaqtQeaCb-Cs0fq2Tls,287
139
+ telegrinder/tools/i18n/abc.py,sha256=jxJVYiTplJaNeklkGiin-m7BkfZiac2fbVXTEdhNw6o,726
140
+ telegrinder/tools/i18n/middleware/__init__.py,sha256=a0yJUYmDbl1Mqf_cWx2TTmA3_Andlk8ixLJyDYAA23I,81
141
+ telegrinder/tools/i18n/middleware/abc.py,sha256=jspRUdBYMJ04c2VLOQNbkHCwxIrkqYJh2nG3AMeYUTM,727
142
+ telegrinder/tools/i18n/simple.py,sha256=w2SlMKYqJbDK9ScTwCAB6pdskqwtmqV7pK8yEhSUFDA,1564
143
143
  telegrinder/tools/kb_set/__init__.py,sha256=k1KCQTnvEgJ2y4KlghhJWOh5rccwg_27cs8264NtMmk,156
144
144
  telegrinder/tools/kb_set/base.py,sha256=mbZs-ViUErfSibzyN064IqZp76LBJPg3NB4D9v4VFtg,243
145
145
  telegrinder/tools/kb_set/yaml.py,sha256=glk27r0L9Y8ibaPmTHMAEJZw-ED-ehmSo_NdJNKkrNs,2007
146
- telegrinder/tools/keyboard.py,sha256=bEC7NqLcuYIxH6CPBH8oykXD5Ud-CuTpl035FlK5SEc,3825
146
+ telegrinder/tools/keyboard.py,sha256=DHrrn6W6rjBnwTRoDauKhtQq7f3SHj1YzofO7xEE6LQ,3880
147
147
  telegrinder/tools/limited_dict.py,sha256=tb1WT4P3Oia5CsCBXTHzlFjrPnIgf9eHCkQ0zhAbEUg,1078
148
148
  telegrinder/tools/loop_wrapper/__init__.py,sha256=ZQ5jmE1lOKnqJlMZ9k2OYmjvOEhOlHPijUWqZ4nHIgk,165
149
149
  telegrinder/tools/loop_wrapper/abc.py,sha256=ET_Dp-kRz75Jo1fZB3qofUgEXN4FqlU0xH2diESKGCM,266
150
150
  telegrinder/tools/loop_wrapper/loop_wrapper.py,sha256=h8Oii3FtLODRafxTez0ZEMNIZ8lhuNRwixO1u0jPhok,6763
151
- telegrinder/tools/magic.py,sha256=BltMDQ_CEEu_b63dvxdKmzMUJRAFdaboGZjAPqITrSk,4509
151
+ telegrinder/tools/magic.py,sha256=jPfjWoNF1cjOewMDpjAajUieSMKNeCSQzyS2fqNwD4M,4597
152
152
  telegrinder/tools/parse_mode.py,sha256=JyQ-x9YAMPLhIIiUX01acyKkpWgs5TBA07W-iUyPHpE,92
153
153
  telegrinder/tools/state_storage/__init__.py,sha256=G2EK2HwS0NbRQIu0OotVlgEYtO_GuzN1aJOIxmDEtz4,211
154
154
  telegrinder/tools/state_storage/abc.py,sha256=9-UOmov9b7bQpeD0JukVsayU2FHmW45FeCnlPdayLhM,958
@@ -158,7 +158,7 @@ telegrinder/types/enums.py,sha256=q9URlXZvrjOUQKpLfV6v9uspBcLrdW0gtU-m8YDnj7w,19
158
158
  telegrinder/types/methods.py,sha256=gIqcFHVogw8bbYO7C7tf1xdzE-m5EiKe998NW-IS2fI,201311
159
159
  telegrinder/types/objects.py,sha256=tfQuJKWYH8l3vmvx65gg2yGh7kpfueU9wPMFsPZIu9k,246627
160
160
  telegrinder/verification_utils.py,sha256=X7N0mHoOzbcYeKa5XxI_EFhmEGX5XNU3qqgbV8YRRa4,987
161
- telegrinder-0.3.0.post1.dist-info/LICENSE,sha256=Q0tKgU8mPOCQAkc6m__BrNIpRge8mPBQJDd59s21NZo,1095
162
- telegrinder-0.3.0.post1.dist-info/METADATA,sha256=A0ia5a09X4inbr33MY_I5cNy0MYTV-KvgWiZNp-Grf8,3149
163
- telegrinder-0.3.0.post1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
164
- telegrinder-0.3.0.post1.dist-info/RECORD,,
161
+ telegrinder-0.3.1.dist-info/LICENSE,sha256=Q0tKgU8mPOCQAkc6m__BrNIpRge8mPBQJDd59s21NZo,1095
162
+ telegrinder-0.3.1.dist-info/METADATA,sha256=zpaW8SHYEC-IUf0Sf23IuXK4xun8gRx_zOXoBbW4VDQ,3143
163
+ telegrinder-0.3.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
164
+ telegrinder-0.3.1.dist-info/RECORD,,