telegrinder 0.4.1__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of telegrinder might be problematic. Click here for more details.

Files changed (233) hide show
  1. telegrinder/__init__.py +38 -56
  2. telegrinder/__meta__.py +1 -0
  3. telegrinder/api/__init__.py +6 -4
  4. telegrinder/api/api.py +100 -26
  5. telegrinder/api/error.py +42 -8
  6. telegrinder/api/response.py +4 -1
  7. telegrinder/api/token.py +2 -2
  8. telegrinder/bot/__init__.py +9 -25
  9. telegrinder/bot/bot.py +31 -25
  10. telegrinder/bot/cute_types/__init__.py +0 -0
  11. telegrinder/bot/cute_types/base.py +103 -61
  12. telegrinder/bot/cute_types/callback_query.py +447 -400
  13. telegrinder/bot/cute_types/chat_join_request.py +59 -62
  14. telegrinder/bot/cute_types/chat_member_updated.py +154 -157
  15. telegrinder/bot/cute_types/inline_query.py +41 -44
  16. telegrinder/bot/cute_types/message.py +2621 -2590
  17. telegrinder/bot/cute_types/pre_checkout_query.py +38 -42
  18. telegrinder/bot/cute_types/update.py +1 -8
  19. telegrinder/bot/cute_types/utils.py +1 -1
  20. telegrinder/bot/dispatch/__init__.py +10 -15
  21. telegrinder/bot/dispatch/abc.py +12 -11
  22. telegrinder/bot/dispatch/action.py +104 -0
  23. telegrinder/bot/dispatch/context.py +32 -26
  24. telegrinder/bot/dispatch/dispatch.py +61 -134
  25. telegrinder/bot/dispatch/handler/__init__.py +2 -0
  26. telegrinder/bot/dispatch/handler/abc.py +10 -8
  27. telegrinder/bot/dispatch/handler/audio_reply.py +2 -3
  28. telegrinder/bot/dispatch/handler/base.py +10 -33
  29. telegrinder/bot/dispatch/handler/document_reply.py +2 -3
  30. telegrinder/bot/dispatch/handler/func.py +55 -87
  31. telegrinder/bot/dispatch/handler/media_group_reply.py +2 -3
  32. telegrinder/bot/dispatch/handler/message_reply.py +2 -3
  33. telegrinder/bot/dispatch/handler/photo_reply.py +2 -3
  34. telegrinder/bot/dispatch/handler/sticker_reply.py +2 -3
  35. telegrinder/bot/dispatch/handler/video_reply.py +2 -3
  36. telegrinder/bot/dispatch/middleware/__init__.py +0 -0
  37. telegrinder/bot/dispatch/middleware/abc.py +79 -55
  38. telegrinder/bot/dispatch/middleware/global_middleware.py +18 -33
  39. telegrinder/bot/dispatch/process.py +84 -105
  40. telegrinder/bot/dispatch/return_manager/__init__.py +0 -0
  41. telegrinder/bot/dispatch/return_manager/abc.py +102 -65
  42. telegrinder/bot/dispatch/return_manager/callback_query.py +4 -5
  43. telegrinder/bot/dispatch/return_manager/inline_query.py +3 -4
  44. telegrinder/bot/dispatch/return_manager/message.py +8 -10
  45. telegrinder/bot/dispatch/return_manager/pre_checkout_query.py +4 -5
  46. telegrinder/bot/dispatch/view/__init__.py +4 -4
  47. telegrinder/bot/dispatch/view/abc.py +6 -16
  48. telegrinder/bot/dispatch/view/base.py +54 -178
  49. telegrinder/bot/dispatch/view/box.py +19 -18
  50. telegrinder/bot/dispatch/view/callback_query.py +4 -8
  51. telegrinder/bot/dispatch/view/chat_join_request.py +5 -6
  52. telegrinder/bot/dispatch/view/chat_member.py +5 -25
  53. telegrinder/bot/dispatch/view/error.py +9 -0
  54. telegrinder/bot/dispatch/view/inline_query.py +4 -8
  55. telegrinder/bot/dispatch/view/message.py +5 -25
  56. telegrinder/bot/dispatch/view/pre_checkout_query.py +4 -8
  57. telegrinder/bot/dispatch/view/raw.py +3 -109
  58. telegrinder/bot/dispatch/waiter_machine/__init__.py +2 -5
  59. telegrinder/bot/dispatch/waiter_machine/actions.py +6 -4
  60. telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py +1 -3
  61. telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +1 -1
  62. telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +11 -7
  63. telegrinder/bot/dispatch/waiter_machine/hasher/message.py +0 -0
  64. telegrinder/bot/dispatch/waiter_machine/machine.py +43 -60
  65. telegrinder/bot/dispatch/waiter_machine/middleware.py +19 -23
  66. telegrinder/bot/dispatch/waiter_machine/short_state.py +6 -5
  67. telegrinder/bot/polling/__init__.py +0 -0
  68. telegrinder/bot/polling/abc.py +0 -0
  69. telegrinder/bot/polling/polling.py +209 -88
  70. telegrinder/bot/rules/__init__.py +3 -16
  71. telegrinder/bot/rules/abc.py +42 -122
  72. telegrinder/bot/rules/callback_data.py +29 -49
  73. telegrinder/bot/rules/chat_join.py +5 -23
  74. telegrinder/bot/rules/command.py +8 -4
  75. telegrinder/bot/rules/enum_text.py +3 -4
  76. telegrinder/bot/rules/func.py +7 -14
  77. telegrinder/bot/rules/fuzzy.py +3 -4
  78. telegrinder/bot/rules/inline.py +8 -20
  79. telegrinder/bot/rules/integer.py +2 -3
  80. telegrinder/bot/rules/is_from.py +12 -11
  81. telegrinder/bot/rules/logic.py +11 -5
  82. telegrinder/bot/rules/markup.py +22 -14
  83. telegrinder/bot/rules/mention.py +8 -7
  84. telegrinder/bot/rules/message_entities.py +8 -4
  85. telegrinder/bot/rules/node.py +23 -12
  86. telegrinder/bot/rules/payload.py +5 -4
  87. telegrinder/bot/rules/payment_invoice.py +6 -21
  88. telegrinder/bot/rules/regex.py +2 -4
  89. telegrinder/bot/rules/rule_enum.py +8 -7
  90. telegrinder/bot/rules/start.py +5 -6
  91. telegrinder/bot/rules/state.py +1 -1
  92. telegrinder/bot/rules/text.py +4 -15
  93. telegrinder/bot/rules/update.py +3 -4
  94. telegrinder/bot/scenario/__init__.py +0 -0
  95. telegrinder/bot/scenario/abc.py +6 -5
  96. telegrinder/bot/scenario/checkbox.py +1 -1
  97. telegrinder/bot/scenario/choice.py +30 -39
  98. telegrinder/client/__init__.py +3 -5
  99. telegrinder/client/abc.py +11 -6
  100. telegrinder/client/aiohttp.py +141 -27
  101. telegrinder/client/form_data.py +1 -1
  102. telegrinder/model.py +61 -89
  103. telegrinder/modules.py +325 -102
  104. telegrinder/msgspec_utils/__init__.py +40 -0
  105. telegrinder/msgspec_utils/abc.py +18 -0
  106. telegrinder/msgspec_utils/custom_types/__init__.py +6 -0
  107. telegrinder/msgspec_utils/custom_types/datetime.py +24 -0
  108. telegrinder/msgspec_utils/custom_types/enum_meta.py +43 -0
  109. telegrinder/msgspec_utils/custom_types/literal.py +25 -0
  110. telegrinder/msgspec_utils/custom_types/option.py +17 -0
  111. telegrinder/msgspec_utils/decoder.py +389 -0
  112. telegrinder/msgspec_utils/encoder.py +206 -0
  113. telegrinder/{msgspec_json.py → msgspec_utils/json.py} +6 -5
  114. telegrinder/msgspec_utils/tools.py +75 -0
  115. telegrinder/node/__init__.py +24 -7
  116. telegrinder/node/attachment.py +1 -0
  117. telegrinder/node/base.py +154 -72
  118. telegrinder/node/callback_query.py +5 -5
  119. telegrinder/node/collection.py +39 -0
  120. telegrinder/node/command.py +1 -2
  121. telegrinder/node/composer.py +121 -72
  122. telegrinder/node/container.py +11 -8
  123. telegrinder/node/context.py +48 -0
  124. telegrinder/node/either.py +27 -40
  125. telegrinder/node/error.py +41 -0
  126. telegrinder/node/event.py +37 -11
  127. telegrinder/node/exceptions.py +7 -0
  128. telegrinder/node/file.py +0 -0
  129. telegrinder/node/i18n.py +108 -0
  130. telegrinder/node/me.py +3 -2
  131. telegrinder/node/payload.py +1 -1
  132. telegrinder/node/polymorphic.py +63 -28
  133. telegrinder/node/reply_message.py +12 -0
  134. telegrinder/node/rule.py +6 -13
  135. telegrinder/node/scope.py +14 -5
  136. telegrinder/node/session.py +53 -0
  137. telegrinder/node/source.py +41 -9
  138. telegrinder/node/text.py +1 -2
  139. telegrinder/node/tools/__init__.py +0 -0
  140. telegrinder/node/tools/generator.py +3 -5
  141. telegrinder/node/utility.py +16 -0
  142. telegrinder/py.typed +0 -0
  143. telegrinder/rules.py +0 -0
  144. telegrinder/tools/__init__.py +48 -88
  145. telegrinder/tools/aio.py +103 -0
  146. telegrinder/tools/callback_data_serialization/__init__.py +5 -0
  147. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/abc.py +0 -0
  148. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/json_ser.py +2 -3
  149. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/msgpack_ser.py +45 -27
  150. telegrinder/tools/final.py +21 -0
  151. telegrinder/tools/formatting/__init__.py +2 -18
  152. telegrinder/tools/formatting/deep_links/__init__.py +39 -0
  153. telegrinder/tools/formatting/{deep_links.py → deep_links/links.py} +12 -85
  154. telegrinder/tools/formatting/deep_links/parsing.py +90 -0
  155. telegrinder/tools/formatting/deep_links/validators.py +8 -0
  156. telegrinder/tools/formatting/html_formatter.py +18 -45
  157. telegrinder/tools/fullname.py +83 -0
  158. telegrinder/tools/global_context/__init__.py +4 -3
  159. telegrinder/tools/global_context/abc.py +17 -14
  160. telegrinder/tools/global_context/builtin_context.py +39 -0
  161. telegrinder/tools/global_context/global_context.py +138 -39
  162. telegrinder/tools/input_file_directory.py +0 -0
  163. telegrinder/tools/keyboard/__init__.py +39 -0
  164. telegrinder/tools/keyboard/abc.py +159 -0
  165. telegrinder/tools/keyboard/base.py +77 -0
  166. telegrinder/tools/keyboard/buttons/__init__.py +14 -0
  167. telegrinder/tools/keyboard/buttons/base.py +18 -0
  168. telegrinder/tools/{buttons.py → keyboard/buttons/buttons.py} +71 -23
  169. telegrinder/tools/keyboard/buttons/static_buttons.py +56 -0
  170. telegrinder/tools/keyboard/buttons/tools.py +18 -0
  171. telegrinder/tools/keyboard/data.py +20 -0
  172. telegrinder/tools/keyboard/keyboard.py +131 -0
  173. telegrinder/tools/keyboard/static_keyboard.py +83 -0
  174. telegrinder/tools/lifespan.py +87 -51
  175. telegrinder/tools/limited_dict.py +4 -1
  176. telegrinder/tools/loop_wrapper.py +332 -0
  177. telegrinder/tools/magic/__init__.py +32 -0
  178. telegrinder/tools/magic/annotations.py +165 -0
  179. telegrinder/tools/magic/dictionary.py +20 -0
  180. telegrinder/tools/magic/function.py +246 -0
  181. telegrinder/tools/magic/shortcut.py +111 -0
  182. telegrinder/tools/parse_mode.py +9 -3
  183. telegrinder/tools/singleton/__init__.py +4 -0
  184. telegrinder/tools/singleton/abc.py +14 -0
  185. telegrinder/tools/singleton/singleton.py +18 -0
  186. telegrinder/tools/state_storage/__init__.py +0 -0
  187. telegrinder/tools/state_storage/abc.py +6 -1
  188. telegrinder/tools/state_storage/memory.py +1 -1
  189. telegrinder/tools/strings.py +0 -0
  190. telegrinder/types/__init__.py +307 -268
  191. telegrinder/types/enums.py +64 -37
  192. telegrinder/types/input_file.py +3 -3
  193. telegrinder/types/methods.py +5699 -5055
  194. telegrinder/types/methods_utils.py +62 -0
  195. telegrinder/types/objects.py +7846 -7058
  196. telegrinder/verification_utils.py +3 -1
  197. telegrinder-0.5.0.dist-info/METADATA +162 -0
  198. telegrinder-0.5.0.dist-info/RECORD +200 -0
  199. {telegrinder-0.4.1.dist-info → telegrinder-0.5.0.dist-info}/WHEEL +1 -1
  200. {telegrinder-0.4.1.dist-info → telegrinder-0.5.0.dist-info/licenses}/LICENSE +2 -2
  201. telegrinder/bot/dispatch/waiter_machine/hasher/state.py +0 -20
  202. telegrinder/bot/rules/id.py +0 -24
  203. telegrinder/bot/rules/message.py +0 -15
  204. telegrinder/client/sonic.py +0 -212
  205. telegrinder/msgspec_utils.py +0 -478
  206. telegrinder/tools/adapter/__init__.py +0 -19
  207. telegrinder/tools/adapter/abc.py +0 -49
  208. telegrinder/tools/adapter/dataclass.py +0 -56
  209. telegrinder/tools/adapter/errors.py +0 -5
  210. telegrinder/tools/adapter/event.py +0 -63
  211. telegrinder/tools/adapter/node.py +0 -46
  212. telegrinder/tools/adapter/raw_event.py +0 -27
  213. telegrinder/tools/adapter/raw_update.py +0 -30
  214. telegrinder/tools/callback_data_serilization/__init__.py +0 -5
  215. telegrinder/tools/error_handler/__init__.py +0 -10
  216. telegrinder/tools/error_handler/abc.py +0 -30
  217. telegrinder/tools/error_handler/error.py +0 -9
  218. telegrinder/tools/error_handler/error_handler.py +0 -179
  219. telegrinder/tools/formatting/spec_html_formats.py +0 -75
  220. telegrinder/tools/functional.py +0 -8
  221. telegrinder/tools/global_context/telegrinder_ctx.py +0 -27
  222. telegrinder/tools/i18n/__init__.py +0 -12
  223. telegrinder/tools/i18n/abc.py +0 -32
  224. telegrinder/tools/i18n/middleware/__init__.py +0 -3
  225. telegrinder/tools/i18n/middleware/abc.py +0 -22
  226. telegrinder/tools/i18n/simple.py +0 -43
  227. telegrinder/tools/keyboard.py +0 -132
  228. telegrinder/tools/loop_wrapper/__init__.py +0 -4
  229. telegrinder/tools/loop_wrapper/abc.py +0 -20
  230. telegrinder/tools/loop_wrapper/loop_wrapper.py +0 -169
  231. telegrinder/tools/magic.py +0 -344
  232. telegrinder-0.4.1.dist-info/METADATA +0 -143
  233. telegrinder-0.4.1.dist-info/RECORD +0 -182
@@ -2,13 +2,15 @@ import hashlib
2
2
  import hmac
3
3
  import typing
4
4
 
5
+ SECRET_TOKEN_KEY: typing.Final[str] = "X-Telegram-Bot-Api-Secret-Token"
6
+
5
7
 
6
8
  def verify_webapp_request(
7
9
  secret_token: str,
8
10
  request_headers: typing.Mapping[str, typing.Any],
9
11
  ) -> bool:
10
12
  """Verifies update request is from telegram."""
11
- return request_headers.get("X-Telegram-Bot-Api-Secret-Token") == secret_token
13
+ return request_headers.get(SECRET_TOKEN_KEY) == secret_token
12
14
 
13
15
 
14
16
  def webapp_validate_request(
@@ -0,0 +1,162 @@
1
+ Metadata-Version: 2.4
2
+ Name: telegrinder
3
+ Version: 0.5.0
4
+ Summary: Modern visionary telegram bot framework.
5
+ Project-URL: Source, https://github.com/timoniq/telegrinder
6
+ Project-URL: Bug Tracker, https://github.com/timoniq/telegrinder/issues
7
+ Project-URL: Documentation, https://github.com/timoniq/telegrinder/blob/dev/docs/index.md
8
+ Author-email: timoniq <tesseradecades@mail.ru>
9
+ Maintainer-email: luwqz1 <howluwqz1@gmail.com>
10
+ License: MIT License
11
+
12
+ Copyright (c) 2022 timoniq
13
+ Copyright (c) 2024 luwqz1
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining a copy
16
+ of this software and associated documentation files (the "Software"), to deal
17
+ in the Software without restriction, including without limitation the rights
18
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the Software is
20
+ furnished to do so, subject to the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be included in all
23
+ copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
+ SOFTWARE.
32
+ License-File: LICENSE
33
+ Keywords: api schema,async,asyncio,bot api,bot building,custom rules,framework,middleware,nodes,telegram,telegram bot api framework,telegrinder,telegrinder framework,waiter machine
34
+ Classifier: Environment :: Console
35
+ Classifier: Intended Audience :: Developers
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Programming Language :: Python :: 3.13
39
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
40
+ Classifier: Topic :: Software Development :: Quality Assurance
41
+ Classifier: Typing :: Typed
42
+ Requires-Python: <4.0,>=3.12
43
+ Requires-Dist: aiodns<4.0.0,>=3.5.0
44
+ Requires-Dist: aiohttp<4.0.0,>=3.12.13
45
+ Requires-Dist: certifi<2026.0.0,>=2025.6.15
46
+ Requires-Dist: choicelib<0.2.0,>=0.1.5
47
+ Requires-Dist: colorama<0.5.0,>=0.4.6
48
+ Requires-Dist: envparse<0.3.0,>=0.2.0
49
+ Requires-Dist: fntypes
50
+ Requires-Dist: msgspec<0.20.0,>=0.19.0
51
+ Requires-Dist: typing-extensions<5.0.0,>=4.14.1
52
+ Requires-Dist: vbml<2.0,>=1.1.post1
53
+ Provides-Extra: brotli
54
+ Requires-Dist: brotli; extra == 'brotli'
55
+ Provides-Extra: loguru
56
+ Requires-Dist: loguru; extra == 'loguru'
57
+ Provides-Extra: socks
58
+ Requires-Dist: aiohttp-socks; extra == 'socks'
59
+ Provides-Extra: structlog
60
+ Requires-Dist: structlog; extra == 'structlog'
61
+ Provides-Extra: uvloop
62
+ Requires-Dist: uvloop; (sys_platform == 'darwin' or sys_platform == 'linux') and extra == 'uvloop'
63
+ Requires-Dist: winloop; (sys_platform == 'cli' or sys_platform == 'cygwin' or sys_platform == 'win32') and extra == 'uvloop'
64
+ Description-Content-Type: text/markdown
65
+
66
+ <p>
67
+ <a href="https://github.com/timoniq/telegrinder">
68
+ <img width="200px" height="145px" alt="Telegrinder" src="https://github.com/timoniq/telegrinder/blob/main/docs/logo.jpg">
69
+ </a>
70
+ </p>
71
+
72
+ </p>
73
+ <h1>
74
+ telegrinder
75
+ </h1>
76
+
77
+ <p>
78
+ — effective and reliable telegram bot building.
79
+ </p>
80
+
81
+ <p>
82
+ <a href="#contributors"><img alt="Still in development" src="https://img.shields.io/badge/Still_in_development-E3956B?logo=textpattern&logoColor=fff&style=flat-square&color=black"></img></a>
83
+ <a href="#license"><img alt="GitHub License" src="https://img.shields.io/github/license/timoniq/telegrinder.svg?color=lightGreen&labelColor=black&style=flat-square"></img></a>
84
+ <a href="https://docs.astral.sh/ruff/"><img alt="Code Style" src="https://img.shields.io/badge/code_style-Ruff-D7FF64?logo=ruff&logoColor=fff&style=flat-square&labelColor=black"></img></a>
85
+ <a href="https://docs.basedpyright.com/latest/"><img alt="Type Checker" src="https://img.shields.io/badge/types-basedpyright-black?logo=python&color=%23FBCA04&logoColor=edb641&labelColor=black&style=flat-square"></img></a>
86
+ <a href="https://pypi.org/project/telegrinder/"><img alt="Python versions" src="https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Ftimoniq%2Ftelegrinder%2Frefs%2Fheads%2Fmain%2Fpyproject.toml&style=flat-square&logo=python&logoColor=fff&labelColor=black"></img></a>
87
+ <a href="https://core.telegram.org/bots/api"><img alt="Telegram Bot API Version" src="https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Ftimoniq%2Ftelegrinder%2Frefs%2Fheads%2Fmain%2Ftypegen%2Fconfig.toml&query=%24.telegram-bot-api.version&style=flat-square&logo=telegram&label=Telegram%20API&labelColor=black&color=%23FBCA04"></img></a>
88
+ </p>
89
+
90
+
91
+ * Type hinted
92
+ * Customizable and extensible
93
+ * Ready to use scenarios and rules
94
+ * Fast models built on [msgspec](https://github.com/jcrist/msgspec)
95
+ * Both low-level and high-level API
96
+
97
+
98
+ Basic example:
99
+
100
+ ```python
101
+ from telegrinder import API, Message, Telegrinder, Token
102
+ from telegrinder.modules import logger
103
+ from telegrinder.rules import Text
104
+
105
+ logger.set_level("INFO")
106
+ api = API(token=Token("123:token"))
107
+ bot = Telegrinder(api)
108
+
109
+
110
+ @bot.on.message(Text("/start"))
111
+ async def start(message: Message) -> None:
112
+ me = (await api.get_me()).unwrap()
113
+ await message.answer(f"Hello, {message.from_user.full_name}! I'm {me.full_name}.")
114
+
115
+
116
+ bot.run_forever()
117
+ ```
118
+
119
+ # Getting started
120
+
121
+ Install using pip, uv or poetry:
122
+
123
+ <a href="https://pypi.org/project/telegrinder/"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/telegrinder.svg?labelColor=black&style=flat-square&logo=pypi"></img></a>
124
+
125
+ ```console
126
+ uv add telegrinder
127
+ poetry add telegrinder
128
+ pip install telegrinder
129
+ ```
130
+
131
+ Or install from source (unstable):
132
+
133
+ <a href="https://github.com/timoniq/telegrinder/actions/workflows/push.yml"><img alt="GitHub CI" src="https://img.shields.io/github/actions/workflow/status/timoniq/telegrinder/push.yml?branch=main&style=flat-square&labelColor=black&label=CI&logo=github"></img></a>
134
+
135
+ ```console
136
+ uv add "telegrinder @ git+https://github.com/timoniq/telegrinder@dev"
137
+ poetry add git+https://github.com/timoniq/telegrinder.git#dev
138
+ pip install git+https://github.com/timoniq/telegrinder/archive/dev.zip
139
+ ```
140
+
141
+ # Documentation
142
+
143
+ [Tutorial](/docs/tutorial/en/0_tutorial.md)
144
+
145
+ # Community
146
+
147
+ Join our [telegram forum](https://t.me/botoforum).
148
+
149
+ # License
150
+
151
+ Telegrinder is [MIT licensed](./LICENSE)\
152
+ Copyright © 2022 [timoniq](https://github.com/timoniq)\
153
+ Copyright © 2024 [luwqz1](https://github.com/luwqz1)
154
+
155
+ # Contributors
156
+
157
+ [How to contribute](https://github.com/timoniq/telegrinder/blob/main/contributing.md)
158
+
159
+
160
+ <a href="https://github.com/timoniq/telegrinder/graphs/contributors">
161
+ <img src="https://contributors-img.web.app/image?repo=timoniq/telegrinder" />
162
+ </a>
@@ -0,0 +1,200 @@
1
+ telegrinder/__init__.py,sha256=5jcc53x_J_x72XUXPTpTTIBRjw0Ksp-Ghp7dtaY8AAY,5382
2
+ telegrinder/__meta__.py,sha256=LBK46heutvn3KmsCrKIYu8RQikbfnjZaj2xFrXaeCzQ,22
3
+ telegrinder/model.py,sha256=u-o4OQySPgiHje-OC6KPh12Hq-umVcsBtFyEKTlKoIQ,5607
4
+ telegrinder/modules.py,sha256=rei2nMHhbYhoD2q9XBxwnCrSBPXkDtAnuBfOPd4D5SQ,16088
5
+ telegrinder/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ telegrinder/rules.py,sha256=BFB8RFwKKxqs9HFfo_p0RfulQNonPZAX8cHpmnG7qCU,39
7
+ telegrinder/verification_utils.py,sha256=3vdjQBQkv2NJCIbdMI7LyJfpuG3nKQ_HxWKUjS_PUEU,1041
8
+ telegrinder/api/__init__.py,sha256=2HZBzrLbhIUHTTfh1npMcWJLcFbNsZAUd_Gdc2Ju3g0,382
9
+ telegrinder/api/api.py,sha256=N2cufUbzg-rWYxx7YEOMhRiRB4qa9KILC2U6jRK7OjU,5355
10
+ telegrinder/api/error.py,sha256=EBDjq8fwR-N6GIC29XZgPprIG6Py6M4zPAixVtNKsLo,1402
11
+ telegrinder/api/response.py,sha256=M9GH8Z3Y4eIyRgsV9hg1qPTzrRM-glzFXTxWlzcfoSo,654
12
+ telegrinder/api/token.py,sha256=Wdz4eWixiFzY-KzaSgYTvS2GlGad65dmRtB4djFFkbk,956
13
+ telegrinder/bot/__init__.py,sha256=7qtOB565M7URcmRKbOtubMf4outcNZtrFS7BEdO84Xw,2600
14
+ telegrinder/bot/bot.py,sha256=kqq4FZ4wgQG9lj-mtqAZ_7fpe6jHGXol7L74R19220c,3008
15
+ telegrinder/bot/cute_types/__init__.py,sha256=zytO2K8RuTjlhojRJlfApae9YSOu39GWsAwdffaok-I,746
16
+ telegrinder/bot/cute_types/base.py,sha256=SehiWX5CJ4clnUggtv7kEKR2r01TyzgyNQPB4jkFSmY,7377
17
+ telegrinder/bot/cute_types/callback_query.py,sha256=j9-PH5S_g0xWn8NVPDin7-9dFOTQcQPgSzMvaLtS9dU,21512
18
+ telegrinder/bot/cute_types/chat_join_request.py,sha256=HgJyLMpmS9TDTD4j6yFhwNibaGYiw1DuKzD3YKspgxE,2061
19
+ telegrinder/bot/cute_types/chat_member_updated.py,sha256=kSKEj_RIp4QNV7Uk8aCV9jBePGaGIXg-KXPVtu1Ka-o,6353
20
+ telegrinder/bot/cute_types/inline_query.py,sha256=ibQ1e9ROGT6y4N7c8zDBmyQdGcLLFtjh5Tv7o6s9nYU,1551
21
+ telegrinder/bot/cute_types/message.py,sha256=6qHJKNDZvKoR_HMVx1CgIy7IpO3_aGKcZ_U-Z_kvSFw,149217
22
+ telegrinder/bot/cute_types/pre_checkout_query.py,sha256=jyGnO0ge6wO0OLXjn1X9ubCyExGPB1nyGCBmI9cgAlA,1579
23
+ telegrinder/bot/cute_types/update.py,sha256=RozDco6cEw-0XZSlbV88rPi1UNpKxqB9EHVWQkXZdPM,4055
24
+ telegrinder/bot/cute_types/utils.py,sha256=fH6rqRqxfzmqzKQ-xp4hyj_9QdeQABzUBq2OPcLq0hc,1577
25
+ telegrinder/bot/dispatch/__init__.py,sha256=8fz6SSMyxXPbpZlF3GILOe9GfXmfjozvlddER7rLXac,2475
26
+ telegrinder/bot/dispatch/abc.py,sha256=p_JDAvOC68Jb5AnH5CwF_GYDIQW935fRiAAO396_2V0,2318
27
+ telegrinder/bot/dispatch/action.py,sha256=vJZk1Swavlk9EQpLItxtAm0-HcCB8xp262DRHLKUQHc,3352
28
+ telegrinder/bot/dispatch/context.py,sha256=2sqGoEQFnimpod6toh-6swzjTVODjvPNecPaqrlRVaE,3131
29
+ telegrinder/bot/dispatch/dispatch.py,sha256=5OS_r5F2z-msxyHHuegSH2X0Hbe7oQNN9-1qrls8olg,6014
30
+ telegrinder/bot/dispatch/process.py,sha256=fsIkJrEaI4XPI6GdCamv8u4vAOnmn9Swn-CNLX-ijaM,4022
31
+ telegrinder/bot/dispatch/handler/__init__.py,sha256=ialxb7vkoN_5NCeZ7eO68Cg7rqVgg86vw_V6mFfRN7U,1002
32
+ telegrinder/bot/dispatch/handler/abc.py,sha256=IzhHA0ZNAmzikDtejh75YsFomVGDot05RXBqA6gSfAU,488
33
+ telegrinder/bot/dispatch/handler/audio_reply.py,sha256=oGFr173fjmSebQNsdMQtFecCUGkK4cGxFs3PNOaJMNo,1286
34
+ telegrinder/bot/dispatch/handler/base.py,sha256=o7C3jNy43kOqUdPjQTuhYi2WFPjgWujYI_orvIJzEYY,884
35
+ telegrinder/bot/dispatch/handler/document_reply.py,sha256=InY3ZIEYpo8k3za_TTgwDzoEBjpa-A3dJtih-yINyjk,1313
36
+ telegrinder/bot/dispatch/handler/func.py,sha256=CAUyEGXrfbgmOY-8tpU6WAl7HjTo5v1Sdc213frdrEM,3186
37
+ telegrinder/bot/dispatch/handler/media_group_reply.py,sha256=Uk4dWkPBOEZnBsCIxQFDg5-rQT0rzOSqM_fW26I_Gfs,1347
38
+ telegrinder/bot/dispatch/handler/message_reply.py,sha256=U5gPnTqEg49lmHT_HkjEXoa3vpGpHkM2qxsGiNn0rw0,1065
39
+ telegrinder/bot/dispatch/handler/photo_reply.py,sha256=G6JHLrytKUNkOgSEStj9c2KX1c7xPrfZO7o1Rz8bIYk,1286
40
+ telegrinder/bot/dispatch/handler/sticker_reply.py,sha256=FPs6O7gY25Jxzo16D6xRGadJ_bLOY7zs-Xj7kjUAp3E,1131
41
+ telegrinder/bot/dispatch/handler/video_reply.py,sha256=7j4SgJIue-zZ3cWFi8u88-ndKRxzCYytQ7x8kboeCVY,1283
42
+ telegrinder/bot/dispatch/middleware/__init__.py,sha256=znQGQ0jnBioEXr-2RPHOkmDbjei4LEbaTjgiE9c8aXI,96
43
+ telegrinder/bot/dispatch/middleware/abc.py,sha256=rfbk1De92IDmcpJD29ri6HNSDkt7lxSWiMWvC_BEu-A,3631
44
+ telegrinder/bot/dispatch/middleware/global_middleware.py,sha256=KaDNDyHznwScaRn2l8dJPPCzc26uzMrAQixunIoSfY4,2016
45
+ telegrinder/bot/dispatch/return_manager/__init__.py,sha256=ubhWS1MUT0928-KYNZLyM8CKFwTtXoh1QVUf4Xh9V-w,728
46
+ telegrinder/bot/dispatch/return_manager/abc.py,sha256=zTY2oMV96hgd2JzpCfSR4M13g-AcqC6aCrV_20cYAmY,4588
47
+ telegrinder/bot/dispatch/return_manager/callback_query.py,sha256=tr38jZhxnOI6Te3-c-DPFWmEZUqVj76adzbAPVR6X-A,605
48
+ telegrinder/bot/dispatch/return_manager/inline_query.py,sha256=LWl4xsmStR6re_Yk0GQnMZTRxQSiBIJvpsWXt1HvW2M,442
49
+ telegrinder/bot/dispatch/return_manager/message.py,sha256=Zo5JNlm99n5oO-PHoogWNpa-3z3HswHP3ThiJgZYVig,1095
50
+ telegrinder/bot/dispatch/return_manager/pre_checkout_query.py,sha256=4y1QS_5r-gUfzP4vk3nYaYeoT3_vWhuM5MVnDvB8AmE,615
51
+ telegrinder/bot/dispatch/view/__init__.py,sha256=ZfUw8WPFL6R44GST86BDuq7jGur_PPYoq0QLLBVODQU,962
52
+ telegrinder/bot/dispatch/view/abc.py,sha256=JhtxFjCha1ON-jW_TYE8UDor0TJNxWWBZuovFKX9yKs,817
53
+ telegrinder/bot/dispatch/view/base.py,sha256=fTJJYg9ADkv5KON0CEjk81wBb53RqEqYquJH9_RViu0,3668
54
+ telegrinder/bot/dispatch/view/box.py,sha256=hJOJ-i_A6OhwKi9ertFzCzhitF4e75-BtutqKZxEZcI,5953
55
+ telegrinder/bot/dispatch/view/callback_query.py,sha256=2CIIbZgnF8LchsSObXJGb1tKMcaxQeTGDpz9k6URzcI,412
56
+ telegrinder/bot/dispatch/view/chat_join_request.py,sha256=DTZnUrGx2fKLwKLCJcj1XPYmyRrWo-_ohspYF1z3goE,266
57
+ telegrinder/bot/dispatch/view/chat_member.py,sha256=OweKd5s1oOi6jqKQih3tTqUQwTPBRRkrKcLocFbHJlU,395
58
+ telegrinder/bot/dispatch/view/error.py,sha256=QEU3W4aMqBXYxrIEASAX1xezPLsQzogcZJo9yCgmIyI,171
59
+ telegrinder/bot/dispatch/view/inline_query.py,sha256=Pfq6xufrHX9f5WUp_pEfw-v5y6S-x3-fvgJXU6gTVF0,387
60
+ telegrinder/bot/dispatch/view/message.py,sha256=E5XF_rHE2eBUNKCLxCydk_H3dPMMSeNOrJSjgrxp540,651
61
+ telegrinder/bot/dispatch/view/pre_checkout_query.py,sha256=BZ-PJvl2A6nxxx8xo4q1rsYswNB2RPkwS1l2gZgaEqg,420
62
+ telegrinder/bot/dispatch/view/raw.py,sha256=LEWFbDyHiHkq43sR6ul-xr9NPe56IfsWx9vnv8LQAL4,256
63
+ telegrinder/bot/dispatch/waiter_machine/__init__.py,sha256=Z87NOBkRIO24U362EI4tY-90C8N1Wdfg2frsgdl-Q0w,762
64
+ telegrinder/bot/dispatch/waiter_machine/actions.py,sha256=B86km5BuqKLILjKebmznTXyh_LJJfE2qQdg_jXLO5V4,409
65
+ telegrinder/bot/dispatch/waiter_machine/machine.py,sha256=M2WGtTyzE0KgJgeZ70rvNWaQL3soT-_4e2j4TOJ3uR4,8532
66
+ telegrinder/bot/dispatch/waiter_machine/middleware.py,sha256=lVRSJVkShJXF0VGjZVZXCUpYAVP6dTh3EtHPt4tCnmE,2954
67
+ telegrinder/bot/dispatch/waiter_machine/short_state.py,sha256=FM-1EqvDirz3R8Fr2RTAhl3FU9rJIQZGEee0lqXTSbY,1773
68
+ telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py,sha256=6VWAodIFaQfu12vYAkPo4air1aifW8IS2UfoE5jTgNM,439
69
+ telegrinder/bot/dispatch/waiter_machine/hasher/callback.py,sha256=cLx34yrdNYrwrzWxf47jOZtwEEijLqUQvrF2fKDd0KQ,1583
70
+ telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py,sha256=ppwcve6MFRpNM2c57j0EOTICTiWEXkeDTSIQZcZBAFA,2041
71
+ telegrinder/bot/dispatch/waiter_machine/hasher/message.py,sha256=NoT2BaTrHVnyaaXsXTkf8riJZp8473-T3EXNri4y70I,1253
72
+ telegrinder/bot/polling/__init__.py,sha256=OqfIFPS_V6UrCg-vCv9pkMFzTKdNbDP2faBfATs_TGg,94
73
+ telegrinder/bot/polling/abc.py,sha256=qFiKzWTWENK-sSuShC5cPlM-JS4In2c8-1_ARdwdTms,442
74
+ telegrinder/bot/polling/polling.py,sha256=A0ntWxzV1qpzXquIXeZJaZl5yPDdwrKvOP6su2B9DRA,8948
75
+ telegrinder/bot/rules/__init__.py,sha256=Rdms2G7_85FlFjH5XCb9f6A0whRIBOdt5FKOR_hCQ40,3122
76
+ telegrinder/bot/rules/abc.py,sha256=rK3QRqzSw3FQq4V5WD0dh2HWlhrgRWXIGBoflZESe0s,3686
77
+ telegrinder/bot/rules/callback_data.py,sha256=83ZwhLJIIOyZbVrzE9QzL0Q-dFzMLZIWGnypSRtqIUM,3828
78
+ telegrinder/bot/rules/chat_join.py,sha256=l0a9leESBFHxfliz5E0Braxs9NDA3XclKrgb7QgJ3Tc,916
79
+ telegrinder/bot/rules/command.py,sha256=yyxE2zgOPw9opqAvusP0wbjewg0_4ZCvD0AEkFuUonE,4134
80
+ telegrinder/bot/rules/enum_text.py,sha256=fR0JQndvBXcmcKgxeKd-8393rEhDwFpnrIp03FJdIZs,915
81
+ telegrinder/bot/rules/func.py,sha256=2Ho_AxLARrj6Bn5-1kuEsnlVpMpMPQSbSHTYpZDff1E,553
82
+ telegrinder/bot/rules/fuzzy.py,sha256=rhUuvEUPt0PEXf8ResxE_K9gDkz8ATxRTa2TOm3sp8I,701
83
+ telegrinder/bot/rules/inline.py,sha256=WtPQNejI3gt5vukh4TfG7jxZsZIp-vu6WKOMaDHIJBE,1528
84
+ telegrinder/bot/rules/integer.py,sha256=cZM1ngoOMX7QF9Ml50Sr1WMVobPdhIMQh0MjdH-mQQQ,521
85
+ telegrinder/bot/rules/is_from.py,sha256=DI3_DEzHkVJFyjqPpPg7vFA5ZEjRFXE8vgKgln2eQ-4,3742
86
+ telegrinder/bot/rules/logic.py,sha256=Z9tzjfgGjMPJ6zITzwVFMY04-h9aqBwb29fobWtuRwY,704
87
+ telegrinder/bot/rules/markup.py,sha256=3SmC9AU_6h2PGmr1YaVhAgKRytR7VZbx1J0Wlu_F-U8,1468
88
+ telegrinder/bot/rules/mention.py,sha256=vWhZq6A8H7E4OyoBuPTA2D2UrEAzCu-qydP3tCw8Mws,523
89
+ telegrinder/bot/rules/message_entities.py,sha256=Djh14OdqPmVb26eS4IUxuzWVPqsYiY8KVpzvdi6YpjA,1167
90
+ telegrinder/bot/rules/node.py,sha256=HuI4LMqvxObm_qLM-Iso2C_7tcVSW9XlQmpxpfs0dtw,1455
91
+ telegrinder/bot/rules/payload.py,sha256=UPgmRkSJPLkXswFeG4C34c_5EwCM0w0ElqpMOxeV-E0,2593
92
+ telegrinder/bot/rules/payment_invoice.py,sha256=qE9XKKcSHklP2HgWvmoXTaCniMKwRfm0__NYtq8JoYM,445
93
+ telegrinder/bot/rules/regex.py,sha256=ufi4qSmXtLxZLkG6eUSetqLf8qVBHWhGuBV_vAOwl48,1135
94
+ telegrinder/bot/rules/rule_enum.py,sha256=nrvBpgiqWPRj5Z_TY9EAopATtHwDzV7DRu0Nfn2f4XQ,2207
95
+ telegrinder/bot/rules/start.py,sha256=oN3w3ezlFq-bTQlYe0YBQhEGJtpLGqXTTvB5vtq-FRY,1218
96
+ telegrinder/bot/rules/state.py,sha256=_9xWvRR1WvqQTeS8GsOdePpzqL0nYwO5kd5w4aCPYq8,919
97
+ telegrinder/bot/rules/text.py,sha256=96UCrNzDuJtkymEVhHtJg99YsaIPj9HNf8BT_tj1pHo,855
98
+ telegrinder/bot/rules/update.py,sha256=onHDXIzqYQZsO-EnCo_T9UIT0Ig-tnM33-Q3JvqrZYo,396
99
+ telegrinder/bot/scenario/__init__.py,sha256=nnPjdxdvjoEYYMRUEfWvIhZStiY1C984x1azdRRP9II,136
100
+ telegrinder/bot/scenario/abc.py,sha256=nsm9efNIW5Hxpxitkg-JNMbUtmKSce8Onnk65nMdc7g,451
101
+ telegrinder/bot/scenario/checkbox.py,sha256=FPjGqaScWokkIUpTYMYHWJcOp8BTw2wTAd5odM1nzP4,5177
102
+ telegrinder/bot/scenario/choice.py,sha256=1DXEiLr4snXBblrbdYFsgt6ztFUBhFW2B-sI8SzSH4Q,1483
103
+ telegrinder/client/__init__.py,sha256=j9_lS-7JqIkwjrHGdVrcG2QkzipZG6-3TdVYlE-AZhQ,279
104
+ telegrinder/client/abc.py,sha256=2s5tAmIHbYB0HTfXpDbOaNwWxi_mnl3lj0w60vAc1HE,2472
105
+ telegrinder/client/aiohttp.py,sha256=oxZioc5ToijAD00XH7yJRs-f9PxQVSUKzKhhd3oTldk,7883
106
+ telegrinder/client/form_data.py,sha256=MEQPDVZz4i6ibc4JnUm72svb1Vp6gLp3FNZI6WFOXoI,663
107
+ telegrinder/msgspec_utils/__init__.py,sha256=dIBvGgpnGeejkbnuaEyfNqafoLbi1pFBg2BJbCgHsPE,1120
108
+ telegrinder/msgspec_utils/abc.py,sha256=QePrV4gFcAQBnchzm1zk8wkbDWon8mbjCMqGICsYrH8,390
109
+ telegrinder/msgspec_utils/decoder.py,sha256=K9GPXwA2Pe1gL9HNEL3kiLAcxd_KnKzoEwMQpQMvVw0,11430
110
+ telegrinder/msgspec_utils/encoder.py,sha256=u3dhq5QvyXlGTlxf24h055tKUc5O9vFXGuva9x54Rw0,6575
111
+ telegrinder/msgspec_utils/json.py,sha256=bDZcRdicJBD9W4sIbk343nsBHHEjQ87JgQeWg3NgWok,290
112
+ telegrinder/msgspec_utils/tools.py,sha256=H2EZiKs93x4pRr5WJOeN5YP7I7_TQp3k4jymiMxxaEw,1989
113
+ telegrinder/msgspec_utils/custom_types/__init__.py,sha256=bb5FFJoOwiZcEX-Ff7hFZLdaY_eRPQZMrxVLfOtvo_U,360
114
+ telegrinder/msgspec_utils/custom_types/datetime.py,sha256=NMzXqqnNh80lJAuagHZZdSAQ4J3QFL7aRyFjGwMGM9Q,663
115
+ telegrinder/msgspec_utils/custom_types/enum_meta.py,sha256=pn1ar9X6X4HctoMNKnTckARJEM65a7ez4SFesS3_QCY,1261
116
+ telegrinder/msgspec_utils/custom_types/literal.py,sha256=KJzCB9HxR4yAydyer0zkuScmWsXn48S3KfEMTUt6GQk,581
117
+ telegrinder/msgspec_utils/custom_types/option.py,sha256=aYwYqA78P81mhTPsLk12BbyQtcgowUdr8TUS5ODYeoM,393
118
+ telegrinder/node/__init__.py,sha256=vg_elrnn14YImp3vGmdSGyIsgNnnZI0tXgRXCEpJwCA,2714
119
+ telegrinder/node/attachment.py,sha256=2X2qEN-Df2EyPUtKcUt3aIhCX2xhbkl4KZR4BexzfPE,4858
120
+ telegrinder/node/base.py,sha256=LK2SAkfje3bZM4dbZ9YB37tuycBwZs1-WcqRbgXbg0M,10828
121
+ telegrinder/node/callback_query.py,sha256=QdR1wH4Dxay0JdXmuGDd2Zd9Wn4bLOeRUzS39EDwUnA,1525
122
+ telegrinder/node/collection.py,sha256=vIkb-WMEEdogGHQER_lzKbeK5uhi95LU2fTUAY-z56s,1166
123
+ telegrinder/node/command.py,sha256=OHaq-WFhK7VJu5_hBPhxySFdpxS5jmW83VxiTAPPzXI,926
124
+ telegrinder/node/composer.py,sha256=H-snTNMlstPvlr3mWGp-QVHuwiuatPlU2QHHXXPs88g,7351
125
+ telegrinder/node/container.py,sha256=HSrRqWvgWnoYCq7-KGPHLqKEDeDwS3oIjmC-KXsw99A,1165
126
+ telegrinder/node/context.py,sha256=eIleOeEMk1j1pCzKlj-QicowqHPlSGs9YedpPM-d3sQ,1458
127
+ telegrinder/node/either.py,sha256=CVK9M7NIV58JRNp8HL5XY-J90ce63YvaMslwcNt1cJk,2220
128
+ telegrinder/node/error.py,sha256=ZaeDHTl6sfTWRPinff206K5WcrSmUv8T1RopYyz8ogY,1458
129
+ telegrinder/node/event.py,sha256=NWv7QV-F25AhAp0R-p816LplRJUSfDy-jbcCvrPGC0w,2747
130
+ telegrinder/node/exceptions.py,sha256=fA4sqkEd6xdjurFzztCoAxhSnfuGIkSfWJMf2-AaDd4,213
131
+ telegrinder/node/file.py,sha256=88fS9tDfGpElrqEb1ejY-kpfc0dPkgZMHFNN_wpavO8,1430
132
+ telegrinder/node/i18n.py,sha256=LrUcAnq2cgSLTM-8E9BYX2Gnmnc6AcqDvObZCh7aL4A,3332
133
+ telegrinder/node/me.py,sha256=sQIEYS26lhSSxcnNYhJHJ5PcznIw5WNsbv0OMmVVh4w,418
134
+ telegrinder/node/payload.py,sha256=MV1WYgvkz6XS-xjm0kMUlpWI5xX8yVqDDSqpoHqfeao,2707
135
+ telegrinder/node/polymorphic.py,sha256=mnan6wNkjHF8mYQ94x4uVBE6dZpt7j0KqdzRWA3FIsE,3465
136
+ telegrinder/node/reply_message.py,sha256=JeI4P0Uiq4ye5UYom2L82oMsZnX4Yfq_oej6QRNnZSs,351
137
+ telegrinder/node/rule.py,sha256=5eBKKBHUXxs6GARczOz_mhrmuP29rO_P48TQP8nbNNw,2136
138
+ telegrinder/node/scope.py,sha256=QteStN1cC6pkqN7xhx4l74_JdDP_Nk1ttLBqLcSOqw8,1015
139
+ telegrinder/node/session.py,sha256=QtL7tCLUC61Li9tQCOtg4L4zm5D3SeEcGwErrUe6wWI,1745
140
+ telegrinder/node/source.py,sha256=T9bKZeqEBU5fb3Dr-WRDWMeS1fP_5EGRjGAXLQ5Wgdk,3255
141
+ telegrinder/node/text.py,sha256=jkefzniOXCbkHm7zL9H4hgnP1JxN_wXGFj1QROb7pcQ,1329
142
+ telegrinder/node/utility.py,sha256=XszK4-MmsLfvUQSmyP5EdHI2MGhOyEMc8OXQJB4bE4A,468
143
+ telegrinder/node/tools/__init__.py,sha256=iyjs82g3brYGzpPsUQaoK6_r7YuQhRkJ61YjjuPOx9E,67
144
+ telegrinder/node/tools/generator.py,sha256=fIk_Dc4QcdTO-9uJ5o9p-HXXdS8IjUOphK5w_6pFDak,955
145
+ telegrinder/tools/__init__.py,sha256=_x8qpjr39g_TIQHGx_zs0IybjBSBcSCdKNHnGj2IAJ4,3942
146
+ telegrinder/tools/aio.py,sha256=AXKy4DdPfwOmbFpzBuart_-7I6FwUxDMD_8UaYQcuvI,2826
147
+ telegrinder/tools/final.py,sha256=1N6jRZeTleMxmzVOE8SeLJVWjQDotJkH15YqYPWEVCY,601
148
+ telegrinder/tools/fullname.py,sha256=klDc3kTJMI_w6R5eudoGS-CrwypqQqhdSGJL7uUcXFE,2627
149
+ telegrinder/tools/input_file_directory.py,sha256=F77qMxG7reK8VX6rnHKbYZhzQAzw229Q20K8q0CF0cw,839
150
+ telegrinder/tools/lifespan.py,sha256=xGc1X8asEEIeAdcgZINuQEs4SqTTTcCA6vHpuX0XBHU,4799
151
+ telegrinder/tools/limited_dict.py,sha256=HdMzqhs5wCCy6Omk81Cn0pCALxPWghkMRkDoIeYVN2A,1045
152
+ telegrinder/tools/loop_wrapper.py,sha256=oEJKbpLeyCfxOw6MHGmwNlGS0BNsGT4LfAeHahRQ5o4,10470
153
+ telegrinder/tools/parse_mode.py,sha256=CpRKz9pMwW90_CikbHd-eViyiFKBDGyxr_iCE1KdEwQ,210
154
+ telegrinder/tools/strings.py,sha256=rb8tAmEqkkJnEAIVqME1LpV4GICBZ2IbfUJ_nd7F2Mo,285
155
+ telegrinder/tools/callback_data_serialization/__init__.py,sha256=_u2CPzgUPjdEaBBFgTZJNOpF5B5jkjK6kPBEiGB4wLY,322
156
+ telegrinder/tools/callback_data_serialization/abc.py,sha256=OgzpVKw12kbabTxzoNid0a1mrjb1GYvYyYp0BU4TYik,1232
157
+ telegrinder/tools/callback_data_serialization/json_ser.py,sha256=gce4z_ui11uqH4NQCtYWYKU8F1e1wAmSCss-7MaD3E0,1977
158
+ telegrinder/tools/callback_data_serialization/msgpack_ser.py,sha256=JBytNlAlJJSrELyXN6IuvqtaPspold926OLIPUtWMUQ,7471
159
+ telegrinder/tools/formatting/__init__.py,sha256=LDTQ9XPXBOdjSB2O2Ccs84QFX7cv_ktClRsFM2zxgpw,1981
160
+ telegrinder/tools/formatting/html_formatter.py,sha256=CdX2upL2_h4JRTygRFN23LafZK6P7WIg-qiq4LRutBI,7028
161
+ telegrinder/tools/formatting/deep_links/__init__.py,sha256=CnXQh_VCBe2VP-2QCAEfgA6Dm9v3VPQub6yxid6rZ3Y,1122
162
+ telegrinder/tools/formatting/deep_links/links.py,sha256=OQRpkzwOJigap0t3yYw7kpoJKGj5-5zlen7PoMYkV6Y,17312
163
+ telegrinder/tools/formatting/deep_links/parsing.py,sha256=FNIWAGXWs_XOISTNQrjruNprTbumFhtTGu5GHY0Ndgg,2528
164
+ telegrinder/tools/formatting/deep_links/validators.py,sha256=YPsXhjGQF0x_cjLOQvBNpaVZ9KBJvhT4z1duQbQU09g,201
165
+ telegrinder/tools/global_context/__init__.py,sha256=wT_yvZYqyWOXjCqur6tGh_H7fDt0P-rD5cxEzsjceb0,420
166
+ telegrinder/tools/global_context/abc.py,sha256=uH0J84GGjgGdml_rsYBgQZt6WVdtT53rC6k2C_Bv_BY,1856
167
+ telegrinder/tools/global_context/builtin_context.py,sha256=QULnAQ5UdunMY8T0WXcI3am9scW5QNDp6PZrJE_EO8E,1170
168
+ telegrinder/tools/global_context/global_context.py,sha256=gaWBGXF-sq25uXXC826yqDFR4VDsZPokBfVYLjvAZwU,16170
169
+ telegrinder/tools/keyboard/__init__.py,sha256=raJ04BiDs9967jpXh_1Pwo9shWG00VynCLlKk7MS6iI,1054
170
+ telegrinder/tools/keyboard/abc.py,sha256=KwfiKDUhtNtZl4C46kosRGF0dr6S1FFpngd9YLxzp3g,4897
171
+ telegrinder/tools/keyboard/base.py,sha256=_dgWrxO9JFQ1f8z_4bchHtgFeRH-MrTI9BH9gR795WY,2183
172
+ telegrinder/tools/keyboard/data.py,sha256=OCB19QHizcq2pumE29UWPcLo63Ql06dUTK3-XHY-wtI,677
173
+ telegrinder/tools/keyboard/keyboard.py,sha256=xAqt1pc9KYNHZyVZ4F9fF_r22aHs0z7sT453_OjvtwU,4005
174
+ telegrinder/tools/keyboard/static_keyboard.py,sha256=B4QN5OUHSCXbSeUWODAqBLgyM9rSTUwg82AiX-Of0i4,2523
175
+ telegrinder/tools/keyboard/buttons/__init__.py,sha256=2v9MIvWtfbQFnncFpUERqTQpNF01j5NkD0F38JEhvU8,471
176
+ telegrinder/tools/keyboard/buttons/base.py,sha256=pex9qjxOY0Kmuk961AOtP1rcbJRT3aNrAVdQB1Yx7co,505
177
+ telegrinder/tools/keyboard/buttons/buttons.py,sha256=tLVGHKu5O2vc08brSa2jD-1FGxwh5c-YKTFWKE5fo5Y,5887
178
+ telegrinder/tools/keyboard/buttons/static_buttons.py,sha256=Qj8gEB3HoYh4moE1L3J0DznTHOUiEJIzzFQt1I53cZ4,2045
179
+ telegrinder/tools/keyboard/buttons/tools.py,sha256=n73k2-_Slb1FIDuGQjI3hD0lgK5B9FF1dmwxCJc-sig,482
180
+ telegrinder/tools/magic/__init__.py,sha256=Fdz79Pb33RndIzGyvvOxFCjO7OQq1G7ixq_pOpks3aA,817
181
+ telegrinder/tools/magic/annotations.py,sha256=Om0gyOAaXo3YlRfd3NDDoo9XvCVqdf_CtxuIp1HQPEw,4946
182
+ telegrinder/tools/magic/dictionary.py,sha256=6zC3RL76TA4CyIB49zc8_Ezk25gnerRAtuwPf1X22l0,510
183
+ telegrinder/tools/magic/function.py,sha256=apZ7qn7gIg3gYBhCTGnWGlboXqVuqk8vRhPPvYbvt8o,7248
184
+ telegrinder/tools/magic/shortcut.py,sha256=BF8pLzByFt2SjVhkaZCEMRMKE9p0l5j5UPWtSbkk5ew,3275
185
+ telegrinder/tools/singleton/__init__.py,sha256=Ou1DSYFN8zb4f3jKNWGs5mYtntzBKmI9tf8IBJQ2Z0M,228
186
+ telegrinder/tools/singleton/abc.py,sha256=fB3xLK6zWAbw1KroUEsH21TtowCLiQHuReWOmkA7eYM,247
187
+ telegrinder/tools/singleton/singleton.py,sha256=m7W-ZxzW3MaVfxW0sz6CJMEWTJGzKgJKUOiGxo4fonc,383
188
+ telegrinder/tools/state_storage/__init__.py,sha256=G2EK2HwS0NbRQIu0OotVlgEYtO_GuzN1aJOIxmDEtz4,211
189
+ telegrinder/tools/state_storage/abc.py,sha256=bWRcdFYohD-8-JvD1x4peph2KRZ0SWsDjcDlFvkHAvM,1044
190
+ telegrinder/tools/state_storage/memory.py,sha256=w9crL6kypVPEFg8RUDubQZHAqb9xTqDQHPBTz-mYM5A,724
191
+ telegrinder/types/__init__.py,sha256=z-xwhyxmJr5iiUx2hEJHCd-9i-nRgye05JVpff7oMuc,8153
192
+ telegrinder/types/enums.py,sha256=q_upBiBRtHwBPjSgfmF6y3aWoX9iUqHGqm8Zg-ig9ZE,20778
193
+ telegrinder/types/input_file.py,sha256=Y3XzgAQEMZwUja-jifUleHlORk_1xAMyHxLtq3UE_Ss,1439
194
+ telegrinder/types/methods.py,sha256=sdpCRU8JOutAEQPYfF8ZzF2IhfWxLPzcBSn3RNN2ShU,252658
195
+ telegrinder/types/methods_utils.py,sha256=arwrb1g6GREnYOlvvywFPV2h0arXxcOJ12cjkbUHq2Q,1593
196
+ telegrinder/types/objects.py,sha256=NbkaHPlh28A-xgrEbhrK8sTSqFKrpt6qVAEeHGW6vSE,342395
197
+ telegrinder-0.5.0.dist-info/METADATA,sha256=ruen1nkpIzaCqcGRlyv8RgAxZSiVgqlAItVcckYZzrI,7084
198
+ telegrinder-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
199
+ telegrinder-0.5.0.dist-info/licenses/LICENSE,sha256=600GDWRYmQjnImAbM_UucVu6QC_jdiCKaQdCqa60l9s,1090
200
+ telegrinder-0.5.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.1
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,7 +1,7 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022-2025 timoniq
4
- Copyright (c) 2024-2025 luwqz1
3
+ Copyright (c) 2022 timoniq
4
+ Copyright (c) 2024 luwqz1
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
@@ -1,20 +0,0 @@
1
- from fntypes.option import Option
2
-
3
- from telegrinder.bot.cute_types import BaseCute
4
- from telegrinder.bot.dispatch.view import BaseStateView
5
- from telegrinder.bot.dispatch.waiter_machine.hasher.hasher import ECHO, Hasher
6
- from telegrinder.tools.functional import from_optional
7
-
8
-
9
- class StateViewHasher[Event: BaseCute](Hasher[Event, int]):
10
- view: BaseStateView[Event]
11
-
12
- def __init__(self, view: BaseStateView[Event]) -> None:
13
- self.view = view
14
- super().__init__(view.__class__, get_hash_from_data=ECHO)
15
-
16
- def get_data_from_event(self, event: Event) -> Option[int]:
17
- return from_optional(self.view.get_state_key(event))
18
-
19
-
20
- __all__ = ("StateViewHasher",)
@@ -1,24 +0,0 @@
1
- import typing
2
-
3
- from telegrinder.types.objects import Update
4
-
5
- from .abc import ABCRule
6
-
7
- if typing.TYPE_CHECKING:
8
- from telegrinder.tools.adapter.abc import ABCAdapter
9
-
10
-
11
- class IdRule[Identifier](ABCRule[Identifier]):
12
- def __init__(
13
- self,
14
- adapter: "ABCAdapter[Update, Identifier]",
15
- tracked_identifiers: set[Identifier] | None = None,
16
- ):
17
- self.tracked_identifiers = tracked_identifiers or set()
18
- self.adapter = adapter
19
-
20
- async def check(self, event: Identifier) -> bool:
21
- return event in self.tracked_identifiers
22
-
23
-
24
- __all__ = ("IdRule",)
@@ -1,15 +0,0 @@
1
- import abc
2
- import typing
3
-
4
- from telegrinder.tools.adapter.event import EventAdapter
5
- from telegrinder.types.objects import Message as MessageEvent
6
-
7
- from .abc import ABCRule, CheckResult, Message
8
-
9
-
10
- class MessageRule(ABCRule[Message], abc.ABC, adapter=EventAdapter(MessageEvent, Message)):
11
- @abc.abstractmethod
12
- def check(self, *args: typing.Any, **kwargs: typing.Any) -> CheckResult: ...
13
-
14
-
15
- __all__ = ("MessageRule",)