PySPlusthon 0.5.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.
Files changed (284) hide show
  1. PySPlusthon/__init__.py +3 -0
  2. PySPlusthon/client/__init__.py +1 -0
  3. PySPlusthon/client/attachments/__init__.py +29 -0
  4. PySPlusthon/client/attachments/get_file.py +22 -0
  5. PySPlusthon/client/attachments/send_animation.py +71 -0
  6. PySPlusthon/client/attachments/send_audio.py +54 -0
  7. PySPlusthon/client/attachments/send_contact.py +47 -0
  8. PySPlusthon/client/attachments/send_document.py +63 -0
  9. PySPlusthon/client/attachments/send_location.py +45 -0
  10. PySPlusthon/client/attachments/send_media_group.py +88 -0
  11. PySPlusthon/client/attachments/send_photo.py +67 -0
  12. PySPlusthon/client/attachments/send_sticker.py +51 -0
  13. PySPlusthon/client/attachments/send_video.py +56 -0
  14. PySPlusthon/client/attachments/send_voice.py +52 -0
  15. PySPlusthon/client/attachments/upload_file.py +82 -0
  16. PySPlusthon/client/chats/__init__.py +43 -0
  17. PySPlusthon/client/chats/ban_chat_member.py +24 -0
  18. PySPlusthon/client/chats/delete_chat_photo.py +32 -0
  19. PySPlusthon/client/chats/get_chat.py +69 -0
  20. PySPlusthon/client/chats/get_chat_administrators.py +18 -0
  21. PySPlusthon/client/chats/get_chat_history.py +39 -0
  22. PySPlusthon/client/chats/get_chat_member.py +16 -0
  23. PySPlusthon/client/chats/get_chat_members.py +29 -0
  24. PySPlusthon/client/chats/get_chat_members_count.py +21 -0
  25. PySPlusthon/client/chats/join_chat.py +31 -0
  26. PySPlusthon/client/chats/leave_chat.py +22 -0
  27. PySPlusthon/client/chats/pin_chat_message.py +31 -0
  28. PySPlusthon/client/chats/promote_chat_member.py +64 -0
  29. PySPlusthon/client/chats/restrict_chat_member.py +25 -0
  30. PySPlusthon/client/chats/set_chat_description.py +23 -0
  31. PySPlusthon/client/chats/set_chat_photo.py +33 -0
  32. PySPlusthon/client/chats/set_chat_title.py +23 -0
  33. PySPlusthon/client/chats/unban_chat_member.py +24 -0
  34. PySPlusthon/client/chats/unpin_all_chat_messages.py +38 -0
  35. PySPlusthon/client/chats/unpin_chat_message.py +33 -0
  36. PySPlusthon/client/client.py +223 -0
  37. PySPlusthon/client/invite_links/__init__.py +7 -0
  38. PySPlusthon/client/invite_links/create_chat_invite_link.py +14 -0
  39. PySPlusthon/client/invite_links/export_chat_invite_link.py +21 -0
  40. PySPlusthon/client/invite_links/revoke_chat_invite_link.py +23 -0
  41. PySPlusthon/client/messages/__init__.py +21 -0
  42. PySPlusthon/client/messages/answer_callback_query.py +12 -0
  43. PySPlusthon/client/messages/copy_message.py +43 -0
  44. PySPlusthon/client/messages/delete_message.py +29 -0
  45. PySPlusthon/client/messages/edit_message_caption.py +40 -0
  46. PySPlusthon/client/messages/edit_message_reply_markup.py +17 -0
  47. PySPlusthon/client/messages/edit_message_text.py +40 -0
  48. PySPlusthon/client/messages/forward_message.py +35 -0
  49. PySPlusthon/client/messages/send_message.py +39 -0
  50. PySPlusthon/client/stickers/__init__.py +9 -0
  51. PySPlusthon/client/stickers/add_sticker_to_set.py +15 -0
  52. PySPlusthon/client/stickers/create_new_sticker_set.py +16 -0
  53. PySPlusthon/client/stickers/delete_sticker_from_set.py +10 -0
  54. PySPlusthon/client/stickers/get_sticker_set.py +11 -0
  55. PySPlusthon/client/stickers/upload_sticker_file.py +16 -0
  56. PySPlusthon/client/updates/__init__.py +8 -0
  57. PySPlusthon/client/updates/delete_webhook.py +9 -0
  58. PySPlusthon/client/updates/get_updates.py +14 -0
  59. PySPlusthon/client/updates/get_webhook_info.py +10 -0
  60. PySPlusthon/client/updates/set_webhook.py +10 -0
  61. PySPlusthon/client/users/__init__.py +6 -0
  62. PySPlusthon/client/users/ask_review.py +14 -0
  63. PySPlusthon/client/users/get_me.py +16 -0
  64. PySPlusthon/conditions/__init__.py +43 -0
  65. PySPlusthon/conditions/all.py +6 -0
  66. PySPlusthon/conditions/animation.py +7 -0
  67. PySPlusthon/conditions/at_state.py +18 -0
  68. PySPlusthon/conditions/audio.py +7 -0
  69. PySPlusthon/conditions/author.py +13 -0
  70. PySPlusthon/conditions/caption.py +7 -0
  71. PySPlusthon/conditions/channel.py +11 -0
  72. PySPlusthon/conditions/channel_chat_created.py +7 -0
  73. PySPlusthon/conditions/chat.py +14 -0
  74. PySPlusthon/conditions/click.py +24 -0
  75. PySPlusthon/conditions/command.py +23 -0
  76. PySPlusthon/conditions/condition.py +88 -0
  77. PySPlusthon/conditions/contact.py +7 -0
  78. PySPlusthon/conditions/content.py +7 -0
  79. PySPlusthon/conditions/delete_chat_photo.py +7 -0
  80. PySPlusthon/conditions/document.py +7 -0
  81. PySPlusthon/conditions/entities.py +7 -0
  82. PySPlusthon/conditions/equals.py +14 -0
  83. PySPlusthon/conditions/forward.py +7 -0
  84. PySPlusthon/conditions/group.py +11 -0
  85. PySPlusthon/conditions/group_chat_created.py +7 -0
  86. PySPlusthon/conditions/is_admin.py +17 -0
  87. PySPlusthon/conditions/is_instance.py +10 -0
  88. PySPlusthon/conditions/is_joined.py +61 -0
  89. PySPlusthon/conditions/left_chat_member.py +7 -0
  90. PySPlusthon/conditions/location.py +7 -0
  91. PySPlusthon/conditions/media.py +7 -0
  92. PySPlusthon/conditions/media_group.py +7 -0
  93. PySPlusthon/conditions/new_chat_members.py +7 -0
  94. PySPlusthon/conditions/new_chat_photo.py +7 -0
  95. PySPlusthon/conditions/new_chat_title.py +7 -0
  96. PySPlusthon/conditions/number.py +12 -0
  97. PySPlusthon/conditions/photo.py +7 -0
  98. PySPlusthon/conditions/pinned_message.py +7 -0
  99. PySPlusthon/conditions/poll.py +7 -0
  100. PySPlusthon/conditions/private.py +11 -0
  101. PySPlusthon/conditions/regex.py +17 -0
  102. PySPlusthon/conditions/reply.py +7 -0
  103. PySPlusthon/conditions/sticker.py +7 -0
  104. PySPlusthon/conditions/supergroup_chat_created.py +7 -0
  105. PySPlusthon/conditions/text.py +7 -0
  106. PySPlusthon/conditions/video.py +7 -0
  107. PySPlusthon/conditions/voice.py +7 -0
  108. PySPlusthon/dispatcher/__init__.py +5 -0
  109. PySPlusthon/dispatcher/chain.py +165 -0
  110. PySPlusthon/dispatcher/dispatcher.py +124 -0
  111. PySPlusthon/dispatcher/logging_chain.py +36 -0
  112. PySPlusthon/dispatcher/monitoring_chain.py +19 -0
  113. PySPlusthon/dispatcher/printing_chain.py +21 -0
  114. PySPlusthon/enums/__init__.py +7 -0
  115. PySPlusthon/enums/chat_member_status.py +9 -0
  116. PySPlusthon/enums/chat_type.py +9 -0
  117. PySPlusthon/enums/message_media_type.py +16 -0
  118. PySPlusthon/enums/name_enum.py +13 -0
  119. PySPlusthon/enums/peer_type.py +8 -0
  120. PySPlusthon/enums/poll_type.py +8 -0
  121. PySPlusthon/enums/transaction_status.py +10 -0
  122. PySPlusthon/errors/__init__.py +11 -0
  123. PySPlusthon/errors/dispatching_errors/__init__.py +2 -0
  124. PySPlusthon/errors/dispatching_errors/break_dispatching.py +2 -0
  125. PySPlusthon/errors/dispatching_errors/continue_dispatching.py +2 -0
  126. PySPlusthon/errors/rpc_errors/__init__.py +8 -0
  127. PySPlusthon/errors/rpc_errors/bad_request_error.py +6 -0
  128. PySPlusthon/errors/rpc_errors/flood_error.py +6 -0
  129. PySPlusthon/errors/rpc_errors/forbidden_error.py +6 -0
  130. PySPlusthon/errors/rpc_errors/internal_error.py +6 -0
  131. PySPlusthon/errors/rpc_errors/not_found_error.py +6 -0
  132. PySPlusthon/errors/rpc_errors/rpc_error.py +23 -0
  133. PySPlusthon/errors/rpc_errors/too_many_requests.py +10 -0
  134. PySPlusthon/errors/rpc_errors/unauthorized_error.py +6 -0
  135. PySPlusthon/event_handlers/__init__.py +12 -0
  136. PySPlusthon/event_handlers/callback_query_handler.py +16 -0
  137. PySPlusthon/event_handlers/command_handler.py +46 -0
  138. PySPlusthon/event_handlers/connect_handler.py +19 -0
  139. PySPlusthon/event_handlers/disconnect_handler.py +18 -0
  140. PySPlusthon/event_handlers/edited_message_handler.py +16 -0
  141. PySPlusthon/event_handlers/error_handler.py +15 -0
  142. PySPlusthon/event_handlers/event_handler.py +53 -0
  143. PySPlusthon/event_handlers/initialize_handler.py +18 -0
  144. PySPlusthon/event_handlers/message_handler.py +16 -0
  145. PySPlusthon/event_handlers/shipping_query_handler.py +16 -0
  146. PySPlusthon/event_handlers/shutdown_handler.py +18 -0
  147. PySPlusthon/event_handlers/update_handler.py +16 -0
  148. PySPlusthon/network/__init__.py +1 -0
  149. PySPlusthon/network/httpconnection.py +74 -0
  150. PySPlusthon/objects/__init__.py +43 -0
  151. PySPlusthon/objects/animation.py +44 -0
  152. PySPlusthon/objects/audio.py +36 -0
  153. PySPlusthon/objects/callback_query.py +37 -0
  154. PySPlusthon/objects/chat.py +118 -0
  155. PySPlusthon/objects/chat_member.py +53 -0
  156. PySPlusthon/objects/chat_permissions.py +26 -0
  157. PySPlusthon/objects/chat_photo.py +24 -0
  158. PySPlusthon/objects/contact.py +18 -0
  159. PySPlusthon/objects/date.py +35 -0
  160. PySPlusthon/objects/document.py +36 -0
  161. PySPlusthon/objects/edited_message.py +27 -0
  162. PySPlusthon/objects/entity.py +21 -0
  163. PySPlusthon/objects/file.py +21 -0
  164. PySPlusthon/objects/forward_origin.py +22 -0
  165. PySPlusthon/objects/inline_keyboard.py +65 -0
  166. PySPlusthon/objects/inline_keyboard_button.py +30 -0
  167. PySPlusthon/objects/input_media.py +44 -0
  168. PySPlusthon/objects/input_media_photo.py +14 -0
  169. PySPlusthon/objects/input_media_video.py +14 -0
  170. PySPlusthon/objects/invite_link.py +32 -0
  171. PySPlusthon/objects/list.py +24 -0
  172. PySPlusthon/objects/location.py +14 -0
  173. PySPlusthon/objects/message.py +478 -0
  174. PySPlusthon/objects/message_id.py +31 -0
  175. PySPlusthon/objects/object.py +154 -0
  176. PySPlusthon/objects/order_info.py +19 -0
  177. PySPlusthon/objects/photo.py +31 -0
  178. PySPlusthon/objects/poll.py +34 -0
  179. PySPlusthon/objects/poll_option.py +16 -0
  180. PySPlusthon/objects/reply_keyboard.py +79 -0
  181. PySPlusthon/objects/reply_keyboard_button.py +27 -0
  182. PySPlusthon/objects/reply_keyboard_remove.py +10 -0
  183. PySPlusthon/objects/reply_markup.py +12 -0
  184. PySPlusthon/objects/shipping_address.py +22 -0
  185. PySPlusthon/objects/shipping_query.py +20 -0
  186. PySPlusthon/objects/sticker.py +54 -0
  187. PySPlusthon/objects/sticker_set.py +29 -0
  188. PySPlusthon/objects/transaction.py +25 -0
  189. PySPlusthon/objects/update.py +33 -0
  190. PySPlusthon/objects/user.py +60 -0
  191. PySPlusthon/objects/video.py +45 -0
  192. PySPlusthon/objects/voice.py +31 -0
  193. PySPlusthon/objects/webhook_info.py +16 -0
  194. PySPlusthon/proto/__init__.py +2 -0
  195. PySPlusthon/proto/enums_pb2.py +46 -0
  196. PySPlusthon/proto/enums_pb2.pyi +99 -0
  197. PySPlusthon/proto/enums_pb2_grpc.py +24 -0
  198. PySPlusthon/proto/requests/__init__.py +209 -0
  199. PySPlusthon/proto/requests/abacus_pb2.py +40 -0
  200. PySPlusthon/proto/requests/abacus_pb2.pyi +31 -0
  201. PySPlusthon/proto/requests/abacus_pb2_grpc.py +24 -0
  202. PySPlusthon/proto/requests/auth_pb2.py +49 -0
  203. PySPlusthon/proto/requests/auth_pb2.pyi +67 -0
  204. PySPlusthon/proto/requests/auth_pb2_grpc.py +24 -0
  205. PySPlusthon/proto/requests/configs_pb2.py +37 -0
  206. PySPlusthon/proto/requests/configs_pb2.pyi +15 -0
  207. PySPlusthon/proto/requests/configs_pb2_grpc.py +24 -0
  208. PySPlusthon/proto/requests/files_pb2.py +40 -0
  209. PySPlusthon/proto/requests/files_pb2.pyi +34 -0
  210. PySPlusthon/proto/requests/files_pb2_grpc.py +24 -0
  211. PySPlusthon/proto/requests/groups_pb2.py +82 -0
  212. PySPlusthon/proto/requests/groups_pb2.pyi +213 -0
  213. PySPlusthon/proto/requests/groups_pb2_grpc.py +24 -0
  214. PySPlusthon/proto/requests/messaging_pb2.py +56 -0
  215. PySPlusthon/proto/requests/messaging_pb2.pyi +119 -0
  216. PySPlusthon/proto/requests/messaging_pb2_grpc.py +24 -0
  217. PySPlusthon/proto/requests/presence_pb2.py +40 -0
  218. PySPlusthon/proto/requests/presence_pb2.pyi +24 -0
  219. PySPlusthon/proto/requests/presence_pb2_grpc.py +24 -0
  220. PySPlusthon/proto/requests/request_pb2.py +42 -0
  221. PySPlusthon/proto/requests/request_pb2.pyi +35 -0
  222. PySPlusthon/proto/requests/request_pb2_grpc.py +24 -0
  223. PySPlusthon/proto/requests/users_pb2.py +43 -0
  224. PySPlusthon/proto/requests/users_pb2.pyi +34 -0
  225. PySPlusthon/proto/requests/users_pb2_grpc.py +24 -0
  226. PySPlusthon/proto/responses/__init__.py +6 -0
  227. PySPlusthon/proto/responses/abacus_pb2.py +37 -0
  228. PySPlusthon/proto/responses/abacus_pb2.pyi +14 -0
  229. PySPlusthon/proto/responses/abacus_pb2_grpc.py +24 -0
  230. PySPlusthon/proto/responses/auth_pb2.py +42 -0
  231. PySPlusthon/proto/responses/auth_pb2.pyi +40 -0
  232. PySPlusthon/proto/responses/auth_pb2_grpc.py +24 -0
  233. PySPlusthon/proto/responses/files_pb2.py +39 -0
  234. PySPlusthon/proto/responses/files_pb2.pyi +27 -0
  235. PySPlusthon/proto/responses/files_pb2_grpc.py +24 -0
  236. PySPlusthon/proto/responses/groups_pb2.py +59 -0
  237. PySPlusthon/proto/responses/groups_pb2.pyi +90 -0
  238. PySPlusthon/proto/responses/groups_pb2_grpc.py +24 -0
  239. PySPlusthon/proto/responses/messaging_pb2.py +44 -0
  240. PySPlusthon/proto/responses/messaging_pb2.pyi +37 -0
  241. PySPlusthon/proto/responses/messaging_pb2_grpc.py +24 -0
  242. PySPlusthon/proto/responses/users_pb2.py +41 -0
  243. PySPlusthon/proto/responses/users_pb2.pyi +28 -0
  244. PySPlusthon/proto/responses/users_pb2_grpc.py +24 -0
  245. PySPlusthon/proto/structs/__init__.py +7 -0
  246. PySPlusthon/proto/structs/collections_pb2.py +54 -0
  247. PySPlusthon/proto/structs/collections_pb2.pyi +79 -0
  248. PySPlusthon/proto/structs/collections_pb2_grpc.py +24 -0
  249. PySPlusthon/proto/structs/files_pb2.py +52 -0
  250. PySPlusthon/proto/structs/files_pb2.pyi +93 -0
  251. PySPlusthon/proto/structs/files_pb2_grpc.py +24 -0
  252. PySPlusthon/proto/structs/groups_pb2.py +49 -0
  253. PySPlusthon/proto/structs/groups_pb2.pyi +144 -0
  254. PySPlusthon/proto/structs/groups_pb2_grpc.py +24 -0
  255. PySPlusthon/proto/structs/messaging_pb2.py +81 -0
  256. PySPlusthon/proto/structs/messaging_pb2.pyi +296 -0
  257. PySPlusthon/proto/structs/messaging_pb2_grpc.py +24 -0
  258. PySPlusthon/proto/structs/peers_pb2.py +47 -0
  259. PySPlusthon/proto/structs/peers_pb2.pyi +56 -0
  260. PySPlusthon/proto/structs/peers_pb2_grpc.py +24 -0
  261. PySPlusthon/proto/structs/set_updates_pb2.py +37 -0
  262. PySPlusthon/proto/structs/set_updates_pb2.pyi +15 -0
  263. PySPlusthon/proto/structs/set_updates_pb2_grpc.py +24 -0
  264. PySPlusthon/proto/structs/users_pb2.py +54 -0
  265. PySPlusthon/proto/structs/users_pb2.pyi +122 -0
  266. PySPlusthon/proto/structs/users_pb2_grpc.py +24 -0
  267. PySPlusthon/proto/updates/__init__.py +1 -0
  268. PySPlusthon/proto/updates/messaging_pb2.py +38 -0
  269. PySPlusthon/proto/updates/messaging_pb2.pyi +26 -0
  270. PySPlusthon/proto/updates/messaging_pb2_grpc.py +24 -0
  271. PySPlusthon/proto/ws_pb2.py +52 -0
  272. PySPlusthon/proto/ws_pb2.pyi +76 -0
  273. PySPlusthon/proto/ws_pb2_grpc.py +24 -0
  274. PySPlusthon/smart_call.py +73 -0
  275. PySPlusthon/states/__init__.py +3 -0
  276. PySPlusthon/states/state.py +11 -0
  277. PySPlusthon/states/state_group.py +13 -0
  278. PySPlusthon/states/state_machine.py +83 -0
  279. PySPlusthon/sync_support.py +48 -0
  280. pysplusthon-0.5.3.dist-info/METADATA +65 -0
  281. pysplusthon-0.5.3.dist-info/RECORD +284 -0
  282. pysplusthon-0.5.3.dist-info/WHEEL +5 -0
  283. pysplusthon-0.5.3.dist-info/licenses/LICENSE +19 -0
  284. pysplusthon-0.5.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,24 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+
7
+ GRPC_GENERATED_VERSION = '1.80.0'
8
+ GRPC_VERSION = grpc.__version__
9
+ _version_not_supported = False
10
+
11
+ try:
12
+ from grpc._utilities import first_version_is_lower
13
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
14
+ except ImportError:
15
+ _version_not_supported = True
16
+
17
+ if _version_not_supported:
18
+ raise RuntimeError(
19
+ f'The grpc package installed is at version {GRPC_VERSION},'
20
+ + ' but the generated code in ws_pb2_grpc.py depends on'
21
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
22
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
23
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
24
+ )
@@ -0,0 +1,73 @@
1
+ import asyncio
2
+ from inspect import getfullargspec, signature, iscoroutine, iscoroutinefunction
3
+ from concurrent.futures import ThreadPoolExecutor
4
+
5
+
6
+ def remove_unwanted_positional_parameters(function, *args):
7
+ _, varargs, *__ = getfullargspec(function)
8
+
9
+ if varargs is not None:
10
+ return args
11
+
12
+ positional_arguments = []
13
+
14
+ for i, parameter in enumerate(signature(function).parameters.values()):
15
+ if parameter.kind in (parameter.POSITIONAL_OR_KEYWORD, parameter.POSITIONAL_ONLY):
16
+ try:
17
+ positional_arguments.append(args[i])
18
+ except IndexError:
19
+ continue
20
+
21
+ return positional_arguments
22
+
23
+
24
+ def remove_unwanted_keyword_parameters(function, **kwargs):
25
+ _, __, varkw, *___ = getfullargspec(function)
26
+
27
+ if varkw is not None:
28
+ return kwargs
29
+
30
+ keyword_arguments = {}
31
+
32
+ for name, parameter in signature(function).parameters.items():
33
+ if parameter.kind in (parameter.POSITIONAL_OR_KEYWORD, parameter.KEYWORD_ONLY):
34
+ try:
35
+ keyword_arguments[name] = kwargs[name]
36
+ except KeyError:
37
+ continue
38
+
39
+ return keyword_arguments
40
+
41
+
42
+ def remove_unwanted_parameters(function, *args, **kwargs):
43
+ args = remove_unwanted_positional_parameters(function, *args)
44
+ kwargs = remove_unwanted_keyword_parameters(function, **kwargs)
45
+
46
+ return args, kwargs
47
+
48
+
49
+ async def run_asynchronously(function, *args, **kwargs):
50
+ if iscoroutine(function):
51
+ return await function
52
+
53
+ elif iscoroutinefunction(function):
54
+ return await function(*args, **kwargs)
55
+
56
+ return await asyncio.to_thread(function, *args, **kwargs)
57
+
58
+
59
+ def run_synchronously(function, *args, **kwargs):
60
+ if iscoroutine(function):
61
+ coro = function
62
+ elif iscoroutinefunction(function):
63
+ coro = function(*args, **kwargs)
64
+ else:
65
+ return function(*args, **kwargs)
66
+
67
+ try:
68
+ asyncio.get_running_loop()
69
+ except RuntimeError:
70
+ return asyncio.run(coro)
71
+ else:
72
+ with ThreadPoolExecutor(1) as pool:
73
+ return pool.submit(asyncio.run, coro).result()
@@ -0,0 +1,3 @@
1
+ from .state import State
2
+ from .state_group import StateGroup
3
+ from .state_machine import StateMachine
@@ -0,0 +1,11 @@
1
+ class State:
2
+
3
+ def __init__(self):
4
+ self.name = None
5
+ self.group = None
6
+
7
+ def __str__(self):
8
+ return self.name
9
+
10
+ def __repr__(self):
11
+ return f"{self.group.__name__}.{self.name}"
@@ -0,0 +1,13 @@
1
+ from . import State
2
+
3
+
4
+ class StateGroup:
5
+
6
+ @classmethod
7
+ def get_state_dict(cls):
8
+ return {name: state for name, state in cls.__dict__.items() if isinstance(state, State)}
9
+
10
+ def __init_subclass__(cls, **kwargs):
11
+ for name, state in cls.get_state_dict().items():
12
+ state.name = name
13
+ state.group = cls
@@ -0,0 +1,83 @@
1
+ from sqlite3 import connect
2
+ from typing import Union
3
+
4
+ from .state import State
5
+
6
+
7
+ class StateMachine:
8
+ global_state_machine = None
9
+
10
+ def create_table(self):
11
+ sql = """CREATE TABLE IF NOT EXISTS user_states(user_id INTEGER PRIMARY KEY, user_state TEXT)"""
12
+ cursor = self.connection.cursor()
13
+ cursor.execute(sql)
14
+ self.connection.commit()
15
+
16
+ def __init__(self, database: str = ":memory:", state_group=None):
17
+ self.connection = connect(database, check_same_thread=False)
18
+ self.state_group = state_group
19
+ self.create_table()
20
+
21
+ def insert_user_state(self, user_id: Union[int, str], state: Union[State, str]):
22
+ sql = """INSERT INTO user_states VALUES (?, ?)"""
23
+ cursor = self.connection.cursor()
24
+ cursor.execute(sql, (int(user_id), state))
25
+ self.connection.commit()
26
+
27
+ def update_user_state(self, user_id: Union[int, str], state: Union[State, str]):
28
+ sql = """UPDATE user_states SET user_state = ? WHERE user_id = ?"""
29
+ cursor = self.connection.cursor()
30
+ cursor.execute(sql, (state, int(user_id)))
31
+ self.connection.commit()
32
+
33
+ def __setitem__(self, user_id: Union[int, str], state: Union[State, str]):
34
+ if isinstance(state, State):
35
+ state = str(state)
36
+ if self[user_id] is None:
37
+ self.insert_user_state(user_id, state)
38
+ else:
39
+ self.update_user_state(user_id, state)
40
+
41
+ def select_user_state(self, user_id: Union[int, str]):
42
+ sql = """SELECT user_state FROM user_states WHERE user_id = ?"""
43
+ cursor = self.connection.cursor()
44
+ cursor.execute(sql, (int(user_id),))
45
+ return cursor.fetchone()
46
+
47
+ def __getitem__(self, user_id: Union[int, str]):
48
+ result = self.select_user_state(user_id)
49
+ if result is None:
50
+ return result
51
+ elif self.state_group is not None and result[0] in self.state_group.get_state_dict():
52
+ return getattr(self.state_group, result[0])
53
+ else:
54
+ return result[0]
55
+
56
+ def delete_user_state(self, user_id: Union[int, str]):
57
+ sql = """DELETE from user_states where user_id = ?"""
58
+ cursor = self.connection.cursor()
59
+ cursor.execute(sql, (int(user_id),))
60
+ self.connection.commit()
61
+
62
+ def __delitem__(self, user_id: Union[int, str]):
63
+ if self[user_id] is None:
64
+ raise KeyError("User does not exist")
65
+ self.delete_user_state(user_id)
66
+
67
+ def at(self, state: Union[State, str]):
68
+ from ..conditions import at_state
69
+ return at_state(state, self)
70
+
71
+ def change_database(self, database: str = ":memory:"):
72
+ now_connection = connect(database, check_same_thread=False)
73
+ self.connection.backup(now_connection)
74
+ self.connection = now_connection
75
+
76
+ def get_all(self):
77
+ sql = """SELECT * FROM user_states"""
78
+ cursor = self.connection.cursor()
79
+ cursor.execute(sql)
80
+ return dict(cursor.fetchall())
81
+
82
+
83
+ StateMachine.global_state_machine = StateMachine()
@@ -0,0 +1,48 @@
1
+ from functools import wraps
2
+ from asyncio import get_event_loop, new_event_loop, set_event_loop, wrap_future, run_coroutine_threadsafe
3
+ from inspect import iscoroutinefunction
4
+ from threading import current_thread, main_thread
5
+ from typing import Callable
6
+
7
+
8
+ def add_sync_support_to_function(coroutine_function) -> Callable:
9
+ try:
10
+ main_loop = get_event_loop()
11
+ except RuntimeError:
12
+ main_loop = new_event_loop()
13
+ set_event_loop(main_loop)
14
+
15
+ @wraps(coroutine_function)
16
+ def dual_purpose_function(*args, **kwargs):
17
+ coroutine = coroutine_function(*args, **kwargs)
18
+ try:
19
+ loop = get_event_loop()
20
+ except RuntimeError:
21
+ loop = new_event_loop()
22
+ set_event_loop(loop)
23
+ if current_thread() is main_thread() or not main_loop.is_running():
24
+ if loop.is_running():
25
+ return coroutine
26
+ return loop.run_until_complete(coroutine)
27
+ if loop.is_running():
28
+ async def coroutine_wrapper():
29
+ return await wrap_future(run_coroutine_threadsafe(coroutine, main_loop))
30
+ return coroutine_wrapper()
31
+ return run_coroutine_threadsafe(coroutine, main_loop).result()
32
+
33
+ return dual_purpose_function
34
+
35
+
36
+ def add_sync_support_to_object(obj):
37
+ for name in dir(obj):
38
+ attribute = getattr(obj, name)
39
+
40
+ if name.startswith("_"):
41
+ continue
42
+ if not iscoroutinefunction(attribute):
43
+ continue
44
+
45
+ dual_purpose_method = add_sync_support_to_function(attribute)
46
+ setattr(obj, name, dual_purpose_method)
47
+
48
+ return obj
@@ -0,0 +1,65 @@
1
+ Metadata-Version: 2.4
2
+ Name: PySPlusthon
3
+ Version: 0.5.3
4
+ Summary: a Python library for Soroush Plus Bot API
5
+ Author-email: Mohammad Saleh Peyravi <akhbari87@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/Msp-92/PySPlusthon
8
+ Project-URL: SPlus News Channel, https://splus.ir/PySPlusthon
9
+ Project-URL: PySPlusthon Developers Group, https://splus.ir/PySPlusthonDevelopers
10
+ Keywords: splus,messenger,bot,api,client
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: httpx==0.28.1
15
+ Requires-Dist: grpcio-tools==1.80.0
16
+ Dynamic: license-file
17
+
18
+ <p align="center">
19
+ <img src="assets/PySPlusthon.png" alt="PySPlusthon" width="200">
20
+ </p>
21
+
22
+ # PySPlusthon
23
+ A Python library for interacting with the Soroush Plus Bot API (Splus).
24
+
25
+ ## Quick Start
26
+ ```python
27
+
28
+ from PySPlusthon import Client
29
+
30
+ bot = Client("YOUR_BOT_TOKEN")
31
+
32
+ @bot.on_message()
33
+ async def on_message(message):
34
+ print(f"Received: {message.text}")
35
+
36
+ if __name__ == "__main__":
37
+ bot.run()
38
+ ```
39
+
40
+ ## Key Features
41
+
42
+ - **Full Bot API Support**: Send messages, photos, videos, documents, audio, voice, stickers, locations, contacts, and more
43
+ - **Update Handling**: Polling and webhook support with `start_polling()` and `set_webhook()`
44
+ - **Conditional Handlers**: Message filters using conditions (`text`, `command`, `document`, `photo`, `video`, `voice`, and more)
45
+ - **Event Handlers**: Connect, disconnect, initialize, shutdown, edited messages, callback queries, errors, and custom events
46
+ - **Object Model**: Comprehensive `Object` base class with `wrap()`/`unwrap()` for API response parsing
47
+ - **Inline Keyboards & Keyboards**: `InlineKeyboard` and `ReplyKeyboard` with button formatting
48
+ - **Media Groups**: Send photo/video/audio groups
49
+ - **Referral Links**: Create referral links with `create_referral_link()`
50
+ - **User/Chat Methods**: `get_me()`, `get_chat()`, `get_chat_member()`, `get_chat_members_count()`, and more
51
+ - **Inline Inline Buttons & Keyboards**: Full reply markup support
52
+ - **Protobuf & Userbot Support**: Optional userbot mode with WebSocket integration
53
+ - **Error Handling**: Custom RPC error types (`BadRequestError`, `FloodError`, `ForbiddenError`, `NotFoundError`, `UnauthorizedError`, `InternalError`, `TooManyRequestsError`)
54
+
55
+ ## Installing
56
+
57
+ ```bash
58
+ pip install PySPlusthon
59
+ ```
60
+
61
+ ## Links
62
+ - [**PyPI**](https://pypi.org/project/PySPlusthon/)
63
+ - [**GitHub**](https://github.com/Msp-92/PySPlusthon)
64
+ - [**Splus News Channel**](https://splus.ir/PySPlusthon)
65
+ - [**PySPlusthon Developers Group**](https://splus.ir/PySPlusthonDevelopers)
@@ -0,0 +1,284 @@
1
+ PySPlusthon/__init__.py,sha256=-lW_YEkiuNBa7LsqO-zqXzKN8npUGDAQ6vTIPC4FLN8,50
2
+ PySPlusthon/smart_call.py,sha256=byGLJdPguwFLhTJAB619krS_NeETFSIiSQvManho2EM,2106
3
+ PySPlusthon/sync_support.py,sha256=9h4imkUH97lZgVuJyv2wmo2mIxFRdiZH90e_Lmkhrso,1610
4
+ PySPlusthon/client/__init__.py,sha256=MF64bwUCd4sm3dvcxZnkb4ujHtxT_KeuXdD0nVieEt4,27
5
+ PySPlusthon/client/client.py,sha256=UGn-0WMpA3pUCDkcgShn8DFW7lafEPwrDDdP3pRawws,8217
6
+ PySPlusthon/client/attachments/__init__.py,sha256=n296X7GGvismDBvATj8QW_gR1pv5VKx-RXC-jVeCLxg,675
7
+ PySPlusthon/client/attachments/get_file.py,sha256=70JeByBZ6fivIKoWpYBLACiapPXhlGHtWH7Wk2_z6vQ,707
8
+ PySPlusthon/client/attachments/send_animation.py,sha256=VIWNchQo82SZEXRLVrrXO34KI5s9OSYzN9l7hFET76k,2677
9
+ PySPlusthon/client/attachments/send_audio.py,sha256=Vsc36C86vV3DdCZYoGX-0kHMIkCtUAv_adet4OOZzqk,1989
10
+ PySPlusthon/client/attachments/send_contact.py,sha256=01CbKHvHiNe7RHuRldbptmGNXXziANxihZ3nNHtwuMI,1522
11
+ PySPlusthon/client/attachments/send_document.py,sha256=Bd2MnLyLuQRLj_QKWTvRoDZgiINAuqFoCv_xzvjfQ5I,2295
12
+ PySPlusthon/client/attachments/send_location.py,sha256=W9pcZAMpxWuM3Aq3CH2150rQydLX117_vLviGHWEyr0,1440
13
+ PySPlusthon/client/attachments/send_media_group.py,sha256=7n-3OsE1nklvFL6_iYpCdmuSt3yVs9j1cN3cWwFM1HY,3358
14
+ PySPlusthon/client/attachments/send_photo.py,sha256=zqiX4qRRbdptjQh30aSxmz16xpMMU12c99DQi-9VQIc,2433
15
+ PySPlusthon/client/attachments/send_sticker.py,sha256=-fxpGKjf499mxPkrZ1lG-EflizKug9Kj6tgrhu2uhqQ,2006
16
+ PySPlusthon/client/attachments/send_video.py,sha256=FbvJM-hCD8Wocb8N26ynuATno7r8YSaO19NZnuhCuTc,2035
17
+ PySPlusthon/client/attachments/send_voice.py,sha256=5bAQDz40aeCOmFgwvabimklUzSxzcNzVZk5uLE4QlY0,1900
18
+ PySPlusthon/client/attachments/upload_file.py,sha256=drdpCwUviFpeGFgQUBDwa6InLaiMQAY3prN2IasA5k4,2507
19
+ PySPlusthon/client/chats/__init__.py,sha256=PJbnMMU9JBf9OEJT7Vk9x5Twhi9W0k17T5ry_uYgXpE,1287
20
+ PySPlusthon/client/chats/ban_chat_member.py,sha256=oAHI0jhg5ym5fNydQfKChCm9H0aHcBji0Xt7_Q3FEmU,833
21
+ PySPlusthon/client/chats/delete_chat_photo.py,sha256=i9s347fRhKxGDolQFr3EvByeOWW6Klt4DpI4swaH-Y4,1010
22
+ PySPlusthon/client/chats/get_chat.py,sha256=oGJPQif-op0EFRAYDunQ_WW5RUfGsRjR65ueMCEm3_8,2174
23
+ PySPlusthon/client/chats/get_chat_administrators.py,sha256=5-gNdc2daeIef0imexspqOqJGkaYvPiB2IdUCaHsTRk,559
24
+ PySPlusthon/client/chats/get_chat_history.py,sha256=BBJa4EaSqnqoGIFbm38MAdQDxLvP8czgvB0ZV4kil-I,1462
25
+ PySPlusthon/client/chats/get_chat_member.py,sha256=s84xxZGShlCPIlqU6O5l4GRl8s2YYDSmPgVZnKGyoJA,444
26
+ PySPlusthon/client/chats/get_chat_members.py,sha256=Q3ci-QH_13imqHViksMlp3p1VSy6v3IEYh89adNtSoU,883
27
+ PySPlusthon/client/chats/get_chat_members_count.py,sha256=rclX5F8D6emrejkzZXdC9GFI1Mex4khfvuxPzbHekNw,698
28
+ PySPlusthon/client/chats/join_chat.py,sha256=FCGNnwZU8qLHK8B38KG9y1Cejc3uRSfixHnWYFb6UVA,932
29
+ PySPlusthon/client/chats/leave_chat.py,sha256=c7nE51_0N0gKta5i3kzsqaoC9HSy9uM_Yhg7N28mlqE,695
30
+ PySPlusthon/client/chats/pin_chat_message.py,sha256=c2gl_-8ElGlWZwcRp2qAHfE12l7UxL5cfzDbjT2MmLU,1178
31
+ PySPlusthon/client/chats/promote_chat_member.py,sha256=Z0O5QaCvihwNUEIW8ac2ps_jmRgFwiceztsfLhSMqiQ,2829
32
+ PySPlusthon/client/chats/restrict_chat_member.py,sha256=dlSOcWGdGxmy5MNTujcsIO1JuJ9Wxe4_7eqU0J6fYT0,883
33
+ PySPlusthon/client/chats/set_chat_description.py,sha256=aYRxWdw2m2C9DsJpSn92eyhwyY5Zr6ut7tTpb86v6Rw,757
34
+ PySPlusthon/client/chats/set_chat_photo.py,sha256=F697Cv2y6odIDvxi7LWnDjzUrWMwVMRTibT8UGj3Li0,1134
35
+ PySPlusthon/client/chats/set_chat_title.py,sha256=ltyELctuEwTVLxlNHkqQAEz8Fmxljop7hMq5VYXNPH4,727
36
+ PySPlusthon/client/chats/unban_chat_member.py,sha256=7Ys0XKi7L6T2U5mj_hARzitYFXAeokLfZ7--Ow5EuGY,828
37
+ PySPlusthon/client/chats/unpin_all_chat_messages.py,sha256=zb4EGcOkO_mwJrdVV6MoPpCCT0Eg5kV0iz1-tXT-95c,1314
38
+ PySPlusthon/client/chats/unpin_chat_message.py,sha256=OmIJHnavMLsQ-aT4ZJ0VSfv99nLNaM4Y3muE1-eg0aA,1179
39
+ PySPlusthon/client/invite_links/__init__.py,sha256=tg1h748RVTvWk1zecA8-JXjlukPYceMCP0NC_oY_S4w,270
40
+ PySPlusthon/client/invite_links/create_chat_invite_link.py,sha256=z4Z55sK0PUIjzNIdNSjfGP328fOAcetRre0URT7TofI,374
41
+ PySPlusthon/client/invite_links/export_chat_invite_link.py,sha256=7HuL7UEDeaG488Y0t2BmnVX1dc-VjNV_N3x6M215YnU,684
42
+ PySPlusthon/client/invite_links/revoke_chat_invite_link.py,sha256=bcAfMw2Ll1nd9HcbV8e7WzBwQnhv3h9CYqHVLI01A_Q,770
43
+ PySPlusthon/client/messages/__init__.py,sha256=G2X6dJ0m2Gfuj6bS6-qKAH0mOORhh7r0AXN_jFPEZgE,579
44
+ PySPlusthon/client/messages/answer_callback_query.py,sha256=KkAf4fWRC0I6XMBcY_cKu-ghjy4vfAFyj5rTa0-MOas,309
45
+ PySPlusthon/client/messages/copy_message.py,sha256=rDbBS2vNY2gMMhiG_Xy0fIFBz9Jv9ACu1czRbvJsIBs,1513
46
+ PySPlusthon/client/messages/delete_message.py,sha256=yx4p2xDnhdhxu6-EPZsyjSkCFrzdxUypVZBn-EbqZRM,940
47
+ PySPlusthon/client/messages/edit_message_caption.py,sha256=isWnhZDXewHooGXTzTMqW-pLs7miX1G7pjJVMeTJwzQ,1346
48
+ PySPlusthon/client/messages/edit_message_reply_markup.py,sha256=ye6pPTrE-jY8EEcGTWQwPLZqoc1yOLF5m_54dBNTVfc,484
49
+ PySPlusthon/client/messages/edit_message_text.py,sha256=vQRwXDIqvN7vt9YgJSokQUe3Aw8uxcg0_RXoGN0zKMI,1334
50
+ PySPlusthon/client/messages/forward_message.py,sha256=-i-S7qnaH3P91bOXo1osUd0N8SOunyT2BipDImZ7tcE,1325
51
+ PySPlusthon/client/messages/send_message.py,sha256=5hjypWEONpwb4BnPIqRdHlACI1Wc5XYv5_CC5HLPrHE,1223
52
+ PySPlusthon/client/stickers/__init__.py,sha256=bHsPB5Xk3lAEuLttBuhJfFUvkKqU-jNdmsoEes3StOQ,377
53
+ PySPlusthon/client/stickers/add_sticker_to_set.py,sha256=xmtLpF_EKEnictEADrmlw_oaeNx89ZSLtUEspEB2jPs,368
54
+ PySPlusthon/client/stickers/create_new_sticker_set.py,sha256=BXBNxbUQy0WHFZhX0C5iJgXNyoT0xf5A_2eVopnkELI,404
55
+ PySPlusthon/client/stickers/delete_sticker_from_set.py,sha256=jvx1FMcWSNwIm3OPIKBRJTmRIG4G0sw_TMK8M081HPw,240
56
+ PySPlusthon/client/stickers/get_sticker_set.py,sha256=629RO05IX9hlyYNTf4_3PkCEG7DKF1_ZriE5Uq3pWIA,257
57
+ PySPlusthon/client/stickers/upload_sticker_file.py,sha256=cbyRvnLcABkwAniUYjw6YxGayx3YrbdKMLW0M7329uU,485
58
+ PySPlusthon/client/updates/__init__.py,sha256=5QYtBRtvz1PwxqCsJxuKWDmaYbzEYY2WMHKtXnDR-1k,240
59
+ PySPlusthon/client/updates/delete_webhook.py,sha256=z6-_ChcWLzSS6-x1ia9X-aqtf2kaAyNJglBCKSBIJOw,193
60
+ PySPlusthon/client/updates/get_updates.py,sha256=ppqEM93Wh3ZndOeR8AEjU12vSgTJDUHRFHBkUlCgnhE,310
61
+ PySPlusthon/client/updates/get_webhook_info.py,sha256=rwv16rRAW5SLFf__EIfVMChF2L60q9Q_Zt92jcUhJtE,239
62
+ PySPlusthon/client/updates/set_webhook.py,sha256=j8mZrpCZMv7EUKSPzesArEntmfC4up-ZgSIWZiC0bf8,206
63
+ PySPlusthon/client/users/__init__.py,sha256=jvM1F2V9caMcZYYQUF1oaMdDKvpU7IHhWFQ5mptlp30,102
64
+ PySPlusthon/client/users/ask_review.py,sha256=D7fhVsX4zvCqGd1P9rzeiiGktxzWkAs33Wo3KIbO8Z0,335
65
+ PySPlusthon/client/users/get_me.py,sha256=L2HCE7upplxlz9zX6OOzODUlD1FmcgxXDAN4qFD5rAQ,417
66
+ PySPlusthon/conditions/__init__.py,sha256=J_DUvd1yXeJ5TrkOFsTZ7EdoDPRQ98e0q7c0sFdAFCA,1550
67
+ PySPlusthon/conditions/all.py,sha256=rXYUeiCS-iCC4e1g2Fi5nvQd3cEjaGG7YAokgkyt3Is,77
68
+ PySPlusthon/conditions/animation.py,sha256=jPrjsNJSqbiYDNvTO0T-G3MevMCH4yWCE6Vo8kypGKE,154
69
+ PySPlusthon/conditions/at_state.py,sha256=8RtUnIlRkU4degnsL-IlXwB3QOhghLr9ILRAQyKpNPc,648
70
+ PySPlusthon/conditions/audio.py,sha256=N9AbUTnljANs1rfEELF0OP-WFGQ9wMFM0iW3HkYyt1I,146
71
+ PySPlusthon/conditions/author.py,sha256=rai6IX4f9wreyY8J-EqB7WNHKnC0znZi3WYwCAMpQqk,392
72
+ PySPlusthon/conditions/caption.py,sha256=Jd2kCU619_zMW1QdQ-Xv7Cw9UCwcJ9OyXyhAw-BdtBY,150
73
+ PySPlusthon/conditions/channel.py,sha256=m8A3K2XAJar_QKUKhR6FqWjrnK77MJB9gqQOprnc75g,368
74
+ PySPlusthon/conditions/channel_chat_created.py,sha256=XxZm0FgEJGhcbrlkGu1gTnMjnnSUn3tBRS0sXzsiXPI,176
75
+ PySPlusthon/conditions/chat.py,sha256=uaRDj7rMHEZYn4zU4WXd0xrFhgGQYl6l_7lwSvax78Y,471
76
+ PySPlusthon/conditions/click.py,sha256=ePF739QT__CDTNmvL-hOV7v4ipYRMn4IrNON89wnrVk,1050
77
+ PySPlusthon/conditions/command.py,sha256=ui7OPX9rj27-AvxqEjEQSU0VVdKI9WnmsBLxnR3jgkY,835
78
+ PySPlusthon/conditions/condition.py,sha256=-p70lggLd2I7Fr9c9NGIpdeOFx4eUgDVRJcxUAr-Ac8,2623
79
+ PySPlusthon/conditions/contact.py,sha256=Rzhs1ApflYC5seUljzKMgsDEtXpjAskYWhDrTvSeZ8w,150
80
+ PySPlusthon/conditions/content.py,sha256=LXFAtuWM5FgS5TPGwiW9jm52QVmfojzTxDVXfDfg9qU,150
81
+ PySPlusthon/conditions/delete_chat_photo.py,sha256=8FOUO5ZUlq8Cd4hUTm6dhHIG7G21DavDXSXGxOQxvig,170
82
+ PySPlusthon/conditions/document.py,sha256=6zgZ2P5fPP23231vCR-e3K04EtA9BcIh-szzF3GJXHI,152
83
+ PySPlusthon/conditions/entities.py,sha256=QSilffpa33h0bU9OMGafv5HX31lwv-CCSObUUPkSnyM,178
84
+ PySPlusthon/conditions/equals.py,sha256=vzzxXGy5SdIvtLm53tacc-wMOpTRUUkTpEmIKe1-7HU,462
85
+ PySPlusthon/conditions/forward.py,sha256=DIQ9h2_Vu5OgIt9tWrUqEuFExKJmWVIGoUtJkX7EA2M,182
86
+ PySPlusthon/conditions/group.py,sha256=F2-aJRiJZaHfOAhztnF_JXPIC2CToS6PwX1sypkk4NI,362
87
+ PySPlusthon/conditions/group_chat_created.py,sha256=biCdT01jy-oIO1QxYaOa9Bx43hWv956lUACAO4ijh7g,172
88
+ PySPlusthon/conditions/is_admin.py,sha256=U5v77L9hMd6-BEXFlHS4N_PYb5cF9Mvo-3CD_8P0r50,499
89
+ PySPlusthon/conditions/is_instance.py,sha256=CyUudTtiCe6qjEiYdV_FtZMgZaDDi2KNH4nrRZCKX3o,255
90
+ PySPlusthon/conditions/is_joined.py,sha256=36Jo3Pf28dNjVKa-KmQRlvdZ0Uujp9oxn0Iv_jj4VmM,2279
91
+ PySPlusthon/conditions/left_chat_member.py,sha256=vOVdwvbpvy80lWOPDWE1li71wzVzxeUERoY0a-ivssE,168
92
+ PySPlusthon/conditions/location.py,sha256=pJc470cnJV_TtR5AiEzq1qVjmMyIz1FupmZBLcWh_w8,152
93
+ PySPlusthon/conditions/media.py,sha256=-O-e1Ti2K0Hauq8cubYa-CR6SYGM_MkKzDYPEh7s7QI,228
94
+ PySPlusthon/conditions/media_group.py,sha256=MR6erTX6mchQxnpn-yQ08Ayy0pCLbskwCRyA296qs5g,161
95
+ PySPlusthon/conditions/new_chat_members.py,sha256=dSrzgPRZm1oYz5Dh-vTjooCdvWhE0M5NzqbwFG_21fo,168
96
+ PySPlusthon/conditions/new_chat_photo.py,sha256=4zVJHZ4kv_UVEoEWAUXQvgsrObvwiAeJ4X5u-_nsWOE,164
97
+ PySPlusthon/conditions/new_chat_title.py,sha256=YTTLWko45QWm_ScGJvKjhJsMoBlYz48i1Jgvo4VvGo4,164
98
+ PySPlusthon/conditions/number.py,sha256=N3wi9ciNyjKNEZexnE601FckOu4meduPcp6U5MMK8bY,228
99
+ PySPlusthon/conditions/photo.py,sha256=HV8uOO6niF7LdMLLxeT6oRLr1HUQF1RioHh1wndHmi0,146
100
+ PySPlusthon/conditions/pinned_message.py,sha256=3ajuYijIuMWupKxp7inW4A7DhpByjShcs46ehaGuVQc,164
101
+ PySPlusthon/conditions/poll.py,sha256=TcpIQTn1HcYhoY5fv8fXNJZj8UlhhbIfbhAEOVCQI_8,144
102
+ PySPlusthon/conditions/private.py,sha256=UkHNhNU7FG-n08h6hk38LSF_CtWI6jiBfH7AdiM8_7I,368
103
+ PySPlusthon/conditions/regex.py,sha256=rx1mI5RFdWnZnKCP2zq-vRd-z0gqAQux5WGAoMwyAEI,548
104
+ PySPlusthon/conditions/reply.py,sha256=HFm6FDMFrp_yEu0Pe44-fkKR8JhFna7OMNv8XHYJYwU,157
105
+ PySPlusthon/conditions/sticker.py,sha256=R1kzYZKAWK0l_BhEpvh6v5pmhFw0S_vI75OJhVGU8vk,150
106
+ PySPlusthon/conditions/supergroup_chat_created.py,sha256=Ww40yiRhYWkzJKxC0Pl7ZNE-hsPRSnm0mCq4HvKJXbE,182
107
+ PySPlusthon/conditions/text.py,sha256=leTbLDyCiLcKJMMi9bCC_kum6_8WsOS5Od_fkwstKyY,144
108
+ PySPlusthon/conditions/video.py,sha256=QPBQXGpQ24GBs-0WkEJ8yR7sOiJaPt9qKisLpeay06Q,146
109
+ PySPlusthon/conditions/voice.py,sha256=HWD9UDppnN3TSHltp-TuxIuAeZaVMCbAP-6QrvWEFLY,146
110
+ PySPlusthon/dispatcher/__init__.py,sha256=W8w07twnwXvk6fFWLAWNKqFRgIlKIEC1YJqmpMjdkUA,188
111
+ PySPlusthon/dispatcher/chain.py,sha256=Bt4ft-daNyb_x0X6mQ386kkWzS1Bf8nAw-QuBPFVbFQ,5514
112
+ PySPlusthon/dispatcher/dispatcher.py,sha256=nMT_CtNCIVoqvDYqhP0ba76AsvKiE33VU5r-awobecw,4464
113
+ PySPlusthon/dispatcher/logging_chain.py,sha256=z-ggRSDZnSNtcrqMWsGW35pRI_mLKcpD3uDs2MF8V1Q,1079
114
+ PySPlusthon/dispatcher/monitoring_chain.py,sha256=lDyMCnZEhsKYVubbfssAH1Cc53YYU_5mp1S3PO464YE,614
115
+ PySPlusthon/dispatcher/printing_chain.py,sha256=Drz5-gmOnzddjiW7ZtX2D_YKzftMHwiQifr9JKYNhVA,537
116
+ PySPlusthon/enums/__init__.py,sha256=31xNlBVhMv-vsdjT_0FiCl69wQu1-yyYBksy3KXFC88,276
117
+ PySPlusthon/enums/chat_member_status.py,sha256=JLkwbNKp5Ym4_hnnYuA1ckO66jQ7CUTwzb_FLAuw-OU,159
118
+ PySPlusthon/enums/chat_type.py,sha256=SvRVI3a78vgYCiNpX9R50NRuBJLUj3kZ_Ti73NC2tLk,144
119
+ PySPlusthon/enums/message_media_type.py,sha256=PXvLJiMFIU8NVgrQG5TXoKrv__pSRj7TcMGEE-Y3Gak,294
120
+ PySPlusthon/enums/name_enum.py,sha256=yEjCTdine9rmA0Em5yUAdlUI6ehKdyLF7bZCkFTPsb4,279
121
+ PySPlusthon/enums/peer_type.py,sha256=Zu7oVAVQKO6A0fWqlFi-uvySbxkxyKScKTZYlweQ6cw,122
122
+ PySPlusthon/enums/poll_type.py,sha256=nbY0-I1DOcpz4VUpPvgoMEcrVap_vdGZNuRnt_ywtfw,122
123
+ PySPlusthon/enums/transaction_status.py,sha256=rgnv248CQ87JBJ1Lt0GrV12AknCWJEo385lKchPp1aE,173
124
+ PySPlusthon/errors/__init__.py,sha256=M-PIZCwG5egxwJvEU_sow01cGM_s8vsYnQIsnEfniEs,255
125
+ PySPlusthon/errors/dispatching_errors/__init__.py,sha256=TjvS-tSpLYlDEWjAMgFA1ak5eyf6chuq2RbLXFlhLGc,102
126
+ PySPlusthon/errors/dispatching_errors/break_dispatching.py,sha256=0JhjyDNmnOJ8-5HxB0zkDaorLjlMa3FZzNkeocJA2ec,44
127
+ PySPlusthon/errors/dispatching_errors/continue_dispatching.py,sha256=AF6Ld2iXSuME1KXU9oywXGAsa4EIE9zpX4UIz-Vywts,47
128
+ PySPlusthon/errors/rpc_errors/__init__.py,sha256=Byyeeo-Hq8vK3E4vu4WB1pbvIespNVbVE89SIrmw7DQ,346
129
+ PySPlusthon/errors/rpc_errors/bad_request_error.py,sha256=8pGKyWs2RolXzuYIux2YGsrQsRJ95_FdibYLcHD179w,107
130
+ PySPlusthon/errors/rpc_errors/flood_error.py,sha256=PbrpPt6Bz0VkvwwwNQ5RkWmhGeLLBYmIb-PmyB4sM-w,96
131
+ PySPlusthon/errors/rpc_errors/forbidden_error.py,sha256=Mz_d2jv12X_r26068nVpYoRtPcLer4MXkVL3JnMp9Jk,104
132
+ PySPlusthon/errors/rpc_errors/internal_error.py,sha256=02WSrwHkl_s4ojKDkBVScOjaOX-iRiaML3VXiwPW0lI,102
133
+ PySPlusthon/errors/rpc_errors/not_found_error.py,sha256=8inFNzRAViXf-55t_PTBHucZYeensciU32mcCYgy4IE,103
134
+ PySPlusthon/errors/rpc_errors/rpc_error.py,sha256=Xt3H8-HEqUoptjsXkYIXGYw28WEr2HvKzLSl-KusEyg,998
135
+ PySPlusthon/errors/rpc_errors/too_many_requests.py,sha256=jv6RtTJ8gbhITmA4HO4IqSMhOvPTxhFsdS0xqX7CUj8,359
136
+ PySPlusthon/errors/rpc_errors/unauthorized_error.py,sha256=Dfmov0ZQ0S-e7ovHo_2Lsg93RERULS7eCToDfkVHY9I,110
137
+ PySPlusthon/event_handlers/__init__.py,sha256=RqKH9pK7ZAfM4-9fsvJdeH5GLx1WPESBGVv20atGeUQ,571
138
+ PySPlusthon/event_handlers/callback_query_handler.py,sha256=NvOLIRasHxNpxjo9fj87PmXseFIjQSOcGhDZlFkPEx8,507
139
+ PySPlusthon/event_handlers/command_handler.py,sha256=sQnwC6FRHxrGt4mYAk-DkwzxNPMoHVCoxXU1bZgY_b0,1622
140
+ PySPlusthon/event_handlers/connect_handler.py,sha256=hrTAKX0tS1IgXEBrx5yO4pKJmgI1-GNwylZc5kFGAUE,463
141
+ PySPlusthon/event_handlers/disconnect_handler.py,sha256=eQmv3ncJ6D0yHdXjICvbMZty5LjZp3atovBQsWhfwOI,466
142
+ PySPlusthon/event_handlers/edited_message_handler.py,sha256=qAE--FUVG2-3e57ZgOTMEn71vtfzbETSdj23OjI11v8,507
143
+ PySPlusthon/event_handlers/error_handler.py,sha256=WE-99gKRG4sWbXEaG4NHeu0FY8jcEVDa9rEbV3BUGKk,452
144
+ PySPlusthon/event_handlers/event_handler.py,sha256=K5Dr5ffUzadts8PN--bzTPFyjTnGfZqe2YENRGn8Fqk,1909
145
+ PySPlusthon/event_handlers/initialize_handler.py,sha256=bjcydKWTqUSOljSCQ8BqUEi3si_B76u2Z5vp7QJvI_U,463
146
+ PySPlusthon/event_handlers/message_handler.py,sha256=43ZGNDdt2gfDhYtlBDf2EdaUC84eaZayFpVVu0cXIpE,482
147
+ PySPlusthon/event_handlers/shipping_query_handler.py,sha256=YHxBlJUnPSzhgrv_VSw4YyHh9i5UwFMFZaw8CEA7VY0,507
148
+ PySPlusthon/event_handlers/shutdown_handler.py,sha256=LZJuLgncjDZnNHTu0gOTAhR-gL8JFk-CGYFXVtJbaeE,459
149
+ PySPlusthon/event_handlers/update_handler.py,sha256=b4w9OLXj1kkSosskRsJktn5BJcItsqz7WsE0HNR7s-Y,480
150
+ PySPlusthon/network/__init__.py,sha256=rVCj4bd6tVjh2jyypPAKGfqISw8_7KrvudFTGSXnKrs,43
151
+ PySPlusthon/network/httpconnection.py,sha256=HWDodqHX-NnSIJO-W5CxirLusRl7yg-ziC6HImlszeI,2458
152
+ PySPlusthon/objects/__init__.py,sha256=nlq-Sfy0dZMOrg6dlFyRxZtobNuru_Vu6FAxiBZ72sU,1552
153
+ PySPlusthon/objects/animation.py,sha256=0CWYSzVFU18ZzrWmxo3RqiQSNYpdyLefhii3CyRZQyY,1262
154
+ PySPlusthon/objects/audio.py,sha256=YiprcRoZXJCCgmfp9Rjp95gJ9QYMaAAODRUrowQeMjo,975
155
+ PySPlusthon/objects/callback_query.py,sha256=TsU03gDWKmD5RLVT2HM0XkPxj5p4rtWOha3zdGHYmT0,1099
156
+ PySPlusthon/objects/chat.py,sha256=I7uEJvMDyM2NQNh_lIlD-Y4DqTnfBDVMHC4CVau8YCg,4127
157
+ PySPlusthon/objects/chat_member.py,sha256=t-NmiWjE2--KFsC2qdxQLeZawMRNDTs8MDdwdcgKQXM,2339
158
+ PySPlusthon/objects/chat_permissions.py,sha256=RiVg3j_5_21i451zS77Qumv1_BW-JewuQNO-UFjr-Pg,935
159
+ PySPlusthon/objects/chat_photo.py,sha256=FKg8Z5hZ__iCVLCxqiw4NlYXvuF3vrarrFOy6-uqy3I,671
160
+ PySPlusthon/objects/contact.py,sha256=VWAxP4uNxLkIxMw0tWpOHVhH0_2P3IKuAvhAVTJDxGo,452
161
+ PySPlusthon/objects/date.py,sha256=_FFWi3uGsU6NF6jN-X1SKCfkGQE8gDAeHQ74P28HIHg,729
162
+ PySPlusthon/objects/document.py,sha256=gjz4-TwRyPLd6zqY9I3qo8pUQYUz05wZsX3IKL6GPqw,877
163
+ PySPlusthon/objects/edited_message.py,sha256=VwepTQ5OsLYtIGaUvBSumvvdJGUNhNR-WJlVBiF4hxw,734
164
+ PySPlusthon/objects/entity.py,sha256=is50f-PqR9kndhBa-axbEIEl7zreypqBIqh8y7zgoCo,508
165
+ PySPlusthon/objects/file.py,sha256=xVcSQ2WaDnKy-iNYchkALqr8VUeUH6w9_r1G0QyatNs,435
166
+ PySPlusthon/objects/forward_origin.py,sha256=CGqZuvP6vI3X1ZaL0tvEjn25HA2WbB5WM1Ahm8z_aiE,636
167
+ PySPlusthon/objects/inline_keyboard.py,sha256=zYqb8EvLzCfxikHAGW9HTq7Tl7jd0WBfKhzUkISFqE4,2366
168
+ PySPlusthon/objects/inline_keyboard_button.py,sha256=YvgibuVjFeCntz5jv1xBOHYB7fX5yo2P13Z74XEPU0E,823
169
+ PySPlusthon/objects/input_media.py,sha256=TDdkrwcux4L9O8d0bi_vvhLGIfxR3J1Hkn0OsDE-Grs,1012
170
+ PySPlusthon/objects/input_media_photo.py,sha256=rdxk38DzYHkl8csBD0D0ThA5hCbKcDl7LRNw4UCcaZg,311
171
+ PySPlusthon/objects/input_media_video.py,sha256=wCvm9MVS3LTe4V0wPgUT_Um_ZRX1poJ9cBhAX31IGnU,311
172
+ PySPlusthon/objects/invite_link.py,sha256=8xHvtIUo0bRC_Pxejdm88yDxUvQarwblAELjPquoLIQ,1015
173
+ PySPlusthon/objects/list.py,sha256=F5Gep-9c_ijQ5WE2YGvllWfRELScJ1MznsZ-rskqObc,608
174
+ PySPlusthon/objects/location.py,sha256=MfK7hWg5P6VUVvtPn-jPhY8ZTcQw9zR2Sr31l07wgm0,302
175
+ PySPlusthon/objects/message.py,sha256=9SlPHf4hvQ2Jgbx7_HwvfK-gIcj7gCCOthBKNti9ajg,17975
176
+ PySPlusthon/objects/message_id.py,sha256=1_O5nP9vGqiFLSaZv4ns_fRKBbzWjULlPCinF2UT33Y,798
177
+ PySPlusthon/objects/object.py,sha256=2Wl9G_nFPY_n7ao8__eYDFbFaOSdPY34CNSRX6o_rQg,5373
178
+ PySPlusthon/objects/order_info.py,sha256=_zHnX40Cod0bnWM3IZHNJX0Mmq6uu5F58FCsl5a6Wf4,527
179
+ PySPlusthon/objects/photo.py,sha256=kusq4d7jtIkgQkd9EZNCmYxsK3fPsu9JnnnN95PyWQg,759
180
+ PySPlusthon/objects/poll.py,sha256=w8ZTi9W_u_PylqKmLYomRFGpfZOtrdUsi38C_jHNc2Q,1103
181
+ PySPlusthon/objects/poll_option.py,sha256=AlSn5_rFCmDQ0Q5pIOcA8w9rJyuTIlSZAHuwWG5m3xw,377
182
+ PySPlusthon/objects/reply_keyboard.py,sha256=mOXWucibRPscwctFxoKoQPoxvHfkZ2tLj5N2UUbJgQQ,2673
183
+ PySPlusthon/objects/reply_keyboard_button.py,sha256=euRBQw-4_myA20DpbGRr7jH9BkmI4apZZgEQo5hoKH8,684
184
+ PySPlusthon/objects/reply_keyboard_remove.py,sha256=kBbaJiKBFlpIiP2PCrj5SCJinsZxu8sW1r_B4jCS5UI,202
185
+ PySPlusthon/objects/reply_markup.py,sha256=lBIBX1KjYmLT7KyWECxHyiVOiF8Ax3vlhoxVpOtyq10,335
186
+ PySPlusthon/objects/shipping_address.py,sha256=de6fWDfyc9wQGtJAJGkW40gSVFSgtcHNYpbaTUVItmg,607
187
+ PySPlusthon/objects/shipping_query.py,sha256=fYTVusA2fgYcWYMVRQ1he_FVf57QxJwvxMtIVrB7L_g,523
188
+ PySPlusthon/objects/sticker.py,sha256=b2HS9CM8mz2YHQvuzHEIHhR6tyum8Bc-UpwvoxS4pLU,1695
189
+ PySPlusthon/objects/sticker_set.py,sha256=Ev9A42cFjWVw6JqIhT-6L9Coa96TqXdPAaFO1oXt8jE,861
190
+ PySPlusthon/objects/transaction.py,sha256=Cnq9MzH6ZNV1e5Aq5epB2fsLJmjiZ0GOjs7ni15DC2I,655
191
+ PySPlusthon/objects/update.py,sha256=3ZJVsFuaMs24EsHFAD6x44nHwdVFE2zPwRZug4OZ7mM,1186
192
+ PySPlusthon/objects/user.py,sha256=Rfb1yFtz4e2mG2BuPEDMVKlF8qM71eVx8FcXmAa1PuM,1654
193
+ PySPlusthon/objects/video.py,sha256=Ki894ZdY_sjNytTuXqHq_dXdJKcQyKS_wDu2QNxiFf0,1335
194
+ PySPlusthon/objects/voice.py,sha256=RUa8KhjublNdzEDooHmayBOgT7tUeL3iv4J-Ffr2t2E,776
195
+ PySPlusthon/objects/webhook_info.py,sha256=XTpF-Ihc56iEjkgPz70QGv955L1Ly6s0Bf4yWQd7Ljg,410
196
+ PySPlusthon/proto/__init__.py,sha256=2XmXMwwbcbaZwg1juCckR6ZHxDukJfwVuITRFOfqn7A,60
197
+ PySPlusthon/proto/enums_pb2.py,sha256=o_iNXfiqOFNeGKj0QXOEkNxerM_8phiSsDn5_stccaU,3359
198
+ PySPlusthon/proto/enums_pb2.pyi,sha256=40SCyX3vmaD-dKaaSltG7O0Mt3hzQLM_2vtMInYm_tg,3701
199
+ PySPlusthon/proto/enums_pb2_grpc.py,sha256=JDn78xQ8koSBUd2Uo8Z-9C3feZ9ydNVD1TkPu4iTnC4,885
200
+ PySPlusthon/proto/ws_pb2.py,sha256=oukdLQ-MFJr1x8Ta3FmlN5Gshs7PiU8AB-2QtwYj3sU,3008
201
+ PySPlusthon/proto/ws_pb2.pyi,sha256=NrUldc4GGqQVod3BhOlIAq_s8-1ls4-NGaNo_3KEadE,3229
202
+ PySPlusthon/proto/ws_pb2_grpc.py,sha256=Dk2sVXwaD4saAo9mDlRbt0TCvaItDR9Evh_6MDVsUas,882
203
+ PySPlusthon/proto/requests/__init__.py,sha256=sxzAwOe3WFlv0wP4IZXMFyUQX1ZRVkPILN2TkhSMY8U,6348
204
+ PySPlusthon/proto/requests/abacus_pb2.py,sha256=H7RXISdi43gZclFPdziyGUU-IhA5mVdiBsMYckJ0JKk,1919
205
+ PySPlusthon/proto/requests/abacus_pb2.pyi,sha256=-b4ysMPDWiwo8pIji_4QUwSyu117KXocplkeHWJMNyM,1473
206
+ PySPlusthon/proto/requests/abacus_pb2_grpc.py,sha256=-zY63jk5uxlDJ7SSa_u8Hz4T8AXu7UUDPiK7irtvHkg,895
207
+ PySPlusthon/proto/requests/auth_pb2.py,sha256=DiwSYPeaSOla-Vq0vsvCYZ46u0Dlw9tKLmsVRoXks88,2828
208
+ PySPlusthon/proto/requests/auth_pb2.pyi,sha256=q2qCG8XkIPJDLDkGS4PaMSACQwkYvT-HCp4mFyFyrVE,2925
209
+ PySPlusthon/proto/requests/auth_pb2_grpc.py,sha256=KSxJNQWWvltpZPwrHrdLvJblaJYxeZppIE_5Ag8Ym8s,893
210
+ PySPlusthon/proto/requests/configs_pb2.py,sha256=SPkCmfzUpdP28kZNTM3A3kJhXXM60eVg2PuHkTQOn9U,1469
211
+ PySPlusthon/proto/requests/configs_pb2.pyi,sha256=b8lJB9pF3URaMXx0DBUlgLmDUebzqK66GAO6kz6ANes,666
212
+ PySPlusthon/proto/requests/configs_pb2_grpc.py,sha256=ekI4DYemgzKLIBfKGwET-AFK5BJFkF5vJ_xdvh2hxbk,896
213
+ PySPlusthon/proto/requests/files_pb2.py,sha256=x3LlLD5MedO07KwyaTROvjsm0p2dZrPbKfxU508HRQY,2014
214
+ PySPlusthon/proto/requests/files_pb2.pyi,sha256=2WqVzsIss7mR01Sbxo3I09dbirVWpADHqR3TKiFNEf0,1620
215
+ PySPlusthon/proto/requests/files_pb2_grpc.py,sha256=ownXBWCD0UffqwBN7hR7aQ5DC6t23MDOHOKP_wJ_W1U,894
216
+ PySPlusthon/proto/requests/groups_pb2.py,sha256=zITq7vkrPLlsvZwUhUUw56vgbXXoH2YEQSXIJCvtTkg,7256
217
+ PySPlusthon/proto/requests/groups_pb2.pyi,sha256=xkzTqc0eVK4lFU8uX0ueFUuI1_ce9RUL4N2ZARi_BbA,10713
218
+ PySPlusthon/proto/requests/groups_pb2_grpc.py,sha256=L8nHT0kvXYcwzrbSfXACAQCDcnAUm4IX7OW6IN6a5qw,895
219
+ PySPlusthon/proto/requests/messaging_pb2.py,sha256=7iNtyomgukdbPn69x0pbEdnf4215hJvxYRQjbrHW-cw,4368
220
+ PySPlusthon/proto/requests/messaging_pb2.pyi,sha256=iywdhj5741PiR6m6HG9hJvbx0OGppY7ZrnwjOJtGQq4,6213
221
+ PySPlusthon/proto/requests/messaging_pb2_grpc.py,sha256=bsqrdg7KFNf993cUXs-AX0gz_ExkLPWRxCXMs067_5w,898
222
+ PySPlusthon/proto/requests/presence_pb2.py,sha256=Z77dhJ7PPdJYpA9ZuS6R0ujf6B5QYc7ysYwJY_0SWL8,1713
223
+ PySPlusthon/proto/requests/presence_pb2.pyi,sha256=3MU0N-MUI-_C50foBftSrqXO7Kg7Dykb85wgNCYodvE,1044
224
+ PySPlusthon/proto/requests/presence_pb2_grpc.py,sha256=-h7J2TAu7IR2Xo8orhpIn_dQkRd-hzEcDNZpi6Mbfh0,897
225
+ PySPlusthon/proto/requests/request_pb2.py,sha256=0Q2UmVhJguFHRoe159JOd37XJZG3JqEFeNSj_Ae57ug,1996
226
+ PySPlusthon/proto/requests/request_pb2.pyi,sha256=3kToCjijpb1tI1Y2i2HXQpIWVhIiNrnjrE2w3B0zIbc,1575
227
+ PySPlusthon/proto/requests/request_pb2_grpc.py,sha256=yKW7CK7kAgycd7fpf6Raj9nLhsCqzDJZ2793OZCVXYc,896
228
+ PySPlusthon/proto/requests/users_pb2.py,sha256=30K5pzb1WOEwCMQpjjUYGgI8sQvCVZ-j6I53Wxa89PQ,1942
229
+ PySPlusthon/proto/requests/users_pb2.pyi,sha256=foAXnZf_IA7lCgGAol0nLDIvMNu30cpaF_AN-MhCxxs,1583
230
+ PySPlusthon/proto/requests/users_pb2_grpc.py,sha256=BIk1KSdU_b1pvddUKhY0oViW2GiKwD7ez89HSG7xpNo,894
231
+ PySPlusthon/proto/responses/__init__.py,sha256=kxGuvqjkFcdvmqS4CSKInefo8utaqhudJ1nksHXiv4g,155
232
+ PySPlusthon/proto/responses/abacus_pb2.py,sha256=B0f6AaxzgnR2rkRGe2aceCm3i5Z3wMyt6cBYt4lrfj8,1442
233
+ PySPlusthon/proto/responses/abacus_pb2.pyi,sha256=wZTw5kMF_uNeZMRsZmC38HWEvR8f8CBzgCCW1D2ilmo,743
234
+ PySPlusthon/proto/responses/abacus_pb2_grpc.py,sha256=SBxbKVXTH_w54jO_v58tExy133twlUtpu9yLIqejhvs,896
235
+ PySPlusthon/proto/responses/auth_pb2.py,sha256=RD7spdMWZPAKSys6JmaSmxyDc6ZxFjpEYI8rYQ1ZcnQ,2271
236
+ PySPlusthon/proto/responses/auth_pb2.pyi,sha256=U8vCOh-MwR8PKGBFGncOPzK3RWSFETL8Q_VlykNSADg,2244
237
+ PySPlusthon/proto/responses/auth_pb2_grpc.py,sha256=RhZL29aXfeRAIU7GF-5GFVMfHq4EvtXE7syKtuA50fY,894
238
+ PySPlusthon/proto/responses/files_pb2.py,sha256=9ZO3hZbE7fEuD00_z0p97P0lFH46E3Xn0b9COB8PTOY,1777
239
+ PySPlusthon/proto/responses/files_pb2.pyi,sha256=BP2198tsF7LFoER3alLiaEDgrcLAP4kVTMA5OXtPmNU,1195
240
+ PySPlusthon/proto/responses/files_pb2_grpc.py,sha256=Ik1KXm_AG0KDsn-20kqZcDEctgt73Em37bQ-ACgK4Q0,895
241
+ PySPlusthon/proto/responses/groups_pb2.py,sha256=xksCs39Lfp0Dtoe4UHedVJ3YoVRbnStziLR-x2BvRJQ,3679
242
+ PySPlusthon/proto/responses/groups_pb2.pyi,sha256=0YXfHZQUGWkGKSXyENWCIW_T0pDwbWbx4hlwniqBoCc,3801
243
+ PySPlusthon/proto/responses/groups_pb2_grpc.py,sha256=HWBluldr-gxORqCH6Owj9flbH0Wo_TQjmSOTnVpTaUY,896
244
+ PySPlusthon/proto/responses/messaging_pb2.py,sha256=rkldOtzX5xWZ23hVQezaZnzJ2OOE446XTbLVpTUoBJQ,2355
245
+ PySPlusthon/proto/responses/messaging_pb2.pyi,sha256=BZwks55_cJpDVCIvKrz7erQ5gm-TUo362J33KHoKuCw,2377
246
+ PySPlusthon/proto/responses/messaging_pb2_grpc.py,sha256=_c_cSgQdEj_8YsABXc2ohrNKKqEo5WFx4c37JxzGlL0,899
247
+ PySPlusthon/proto/responses/users_pb2.py,sha256=znHg89vk9Bgwma4UkVX1WFtAKv484_3CxUFJPGyO3yk,1951
248
+ PySPlusthon/proto/responses/users_pb2.pyi,sha256=kPnoiDfzw4xMxr5uvW5wF1HnosMAgv87O3QDoXEbr6A,1713
249
+ PySPlusthon/proto/responses/users_pb2_grpc.py,sha256=Pd2DTLSQS06bK4mt4F2h6ECEpENiHK0_aVsZSJTfsKA,895
250
+ PySPlusthon/proto/structs/__init__.py,sha256=9fcGSB70RSZ7Ho39b5PNwbYHl9vkUsdpZfdGGhxO4mM,192
251
+ PySPlusthon/proto/structs/collections_pb2.py,sha256=GnAfgOwbaSaQvTlYUKOP7nZgjfmxzjpHRawYexPqCGY,2996
252
+ PySPlusthon/proto/structs/collections_pb2.pyi,sha256=8HyoGodqySRqgj6Teii0Vtag2XeoNnVWmBqDbK78lhs,3087
253
+ PySPlusthon/proto/structs/collections_pb2_grpc.py,sha256=7eTlot52bBoBZl5yJ8quGL-IsV_Zc7eNWA7u3a4UFuc,899
254
+ PySPlusthon/proto/structs/files_pb2.py,sha256=oUb6y2FUTY7JJdqgM3C9PyIJR-ySIdGTct726QlOeC4,3564
255
+ PySPlusthon/proto/structs/files_pb2.pyi,sha256=yPERlSSGZwCt2thdBuYPvMy1AvRgjUpR9Wyy9TBpJ-o,4420
256
+ PySPlusthon/proto/structs/files_pb2_grpc.py,sha256=M6M66080S-X8AxP1sY_AH0xtyyn8zUVS-gu3EZeq-8Y,893
257
+ PySPlusthon/proto/structs/groups_pb2.py,sha256=nJXSSJJcoSoqS1Ot4UIDSfB001lxCWfKdZ0jvn-6CzU,5011
258
+ PySPlusthon/proto/structs/groups_pb2.pyi,sha256=Bj7Ywbi60Y16Bck1oTm7F9AO1JtsbwEBO61JOcLDbyc,8461
259
+ PySPlusthon/proto/structs/groups_pb2_grpc.py,sha256=J13tuScLZEwcJFEGX4Mw5wM66Ovt15F_0X5UFRtJNqU,894
260
+ PySPlusthon/proto/structs/messaging_pb2.py,sha256=zokU1WQejIxrPi8AS3mEMuNVBWrug2Wy0BhDSVPW_as,9494
261
+ PySPlusthon/proto/structs/messaging_pb2.pyi,sha256=-e_7jLH9faGrkWXWdhrJFZSzFFvCh0MvJzZsHWA3-zw,15758
262
+ PySPlusthon/proto/structs/messaging_pb2_grpc.py,sha256=zTFq3HE7KnYbNV55c9ZM_4VgzZWFwzSwdf9L1xQ7GuA,897
263
+ PySPlusthon/proto/structs/peers_pb2.py,sha256=1lQOaS7W73yHkYXWzAF_dp2jKljl78d-C-65NyOq1g4,2411
264
+ PySPlusthon/proto/structs/peers_pb2.pyi,sha256=JWvmItUZzfky-glz6SMAk7MUicifzGSNKwjyQRmj1I8,2114
265
+ PySPlusthon/proto/structs/peers_pb2_grpc.py,sha256=WlCpYlnAFBfcR9H557vmueBIhUKqualdtaWKuQ1LhVk,893
266
+ PySPlusthon/proto/structs/set_updates_pb2.py,sha256=OSaS2HoWWLh1PZsaqVkdo0QhwcezCcn8sl1EWQ2uBug,1494
267
+ PySPlusthon/proto/structs/set_updates_pb2.pyi,sha256=OE1tzUU_YX9Mf3_MgSTP4pvMlz5q0KB0WIBsDRljAmA,700
268
+ PySPlusthon/proto/structs/set_updates_pb2_grpc.py,sha256=SEMlrQAbs4hqn3HnzkyJDt3BNlwVTM9R-MBCELvXg9A,899
269
+ PySPlusthon/proto/structs/users_pb2.py,sha256=It1tgOR-XwmGVbUi2hjcOdm6hRUlvPcXc-ibO4LndkE,4563
270
+ PySPlusthon/proto/structs/users_pb2.pyi,sha256=C2_U7hFXxcitUpimJdwEoiWMjunz7PEi2YbfQfNz_fg,6615
271
+ PySPlusthon/proto/structs/users_pb2_grpc.py,sha256=n1pCGiGoFVOBab9xHgH1HmD8Lmc0uBmj_o6-o4lK67Y,893
272
+ PySPlusthon/proto/updates/__init__.py,sha256=ZETsvqIqpzGikVOV-6StMESxnuW-l_dqy9nitXkgA4Q,29
273
+ PySPlusthon/proto/updates/messaging_pb2.py,sha256=Z3sACtIMCjKwdR2SqgoeZBUaXKLCOAjzTWQcEtWFghI,1824
274
+ PySPlusthon/proto/updates/messaging_pb2.pyi,sha256=UQdblc342uD8vLBt3LzJ7VJpmF3_JH1Hl5VahUrCj7I,1432
275
+ PySPlusthon/proto/updates/messaging_pb2_grpc.py,sha256=XoaR7i99xnK9UfZ5dz984lfoFCwn8A4vd9NaQZnCLTI,897
276
+ PySPlusthon/states/__init__.py,sha256=ynhKCtwLbfItZ_yVQMTQkTaelmeU39VUDlxb1NavofI,101
277
+ PySPlusthon/states/state.py,sha256=9TFLIqp2GXqTBafqvrivmnGorD4XezvjenUM9Qqsld4,215
278
+ PySPlusthon/states/state_group.py,sha256=9CDdUjguehpavKYFkeeHX97P0iNYOscVJePly5Y46fA,344
279
+ PySPlusthon/states/state_machine.py,sha256=uDABN-eHA8SDqhlNLkHorHz5vRpgAVQFn4Ol0zeU6wY,3027
280
+ pysplusthon-0.5.3.dist-info/licenses/LICENSE,sha256=kGbqkb6UAGOUY32iSr4TpMx_0K0DRURV7zEV10ehSeM,1065
281
+ pysplusthon-0.5.3.dist-info/METADATA,sha256=4V4D6V6NctdPJOJx_p5nhCnUFALXIiUAdW70Og2IMg8,2565
282
+ pysplusthon-0.5.3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
283
+ pysplusthon-0.5.3.dist-info/top_level.txt,sha256=msqBjERaXcdXv2IH6u4i9UpxCGZC8aSLceeR8Oo3rcA,12
284
+ pysplusthon-0.5.3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2026 Mohammad Saleh Peyravi
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.