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.
- PySPlusthon/__init__.py +3 -0
- PySPlusthon/client/__init__.py +1 -0
- PySPlusthon/client/attachments/__init__.py +29 -0
- PySPlusthon/client/attachments/get_file.py +22 -0
- PySPlusthon/client/attachments/send_animation.py +71 -0
- PySPlusthon/client/attachments/send_audio.py +54 -0
- PySPlusthon/client/attachments/send_contact.py +47 -0
- PySPlusthon/client/attachments/send_document.py +63 -0
- PySPlusthon/client/attachments/send_location.py +45 -0
- PySPlusthon/client/attachments/send_media_group.py +88 -0
- PySPlusthon/client/attachments/send_photo.py +67 -0
- PySPlusthon/client/attachments/send_sticker.py +51 -0
- PySPlusthon/client/attachments/send_video.py +56 -0
- PySPlusthon/client/attachments/send_voice.py +52 -0
- PySPlusthon/client/attachments/upload_file.py +82 -0
- PySPlusthon/client/chats/__init__.py +43 -0
- PySPlusthon/client/chats/ban_chat_member.py +24 -0
- PySPlusthon/client/chats/delete_chat_photo.py +32 -0
- PySPlusthon/client/chats/get_chat.py +69 -0
- PySPlusthon/client/chats/get_chat_administrators.py +18 -0
- PySPlusthon/client/chats/get_chat_history.py +39 -0
- PySPlusthon/client/chats/get_chat_member.py +16 -0
- PySPlusthon/client/chats/get_chat_members.py +29 -0
- PySPlusthon/client/chats/get_chat_members_count.py +21 -0
- PySPlusthon/client/chats/join_chat.py +31 -0
- PySPlusthon/client/chats/leave_chat.py +22 -0
- PySPlusthon/client/chats/pin_chat_message.py +31 -0
- PySPlusthon/client/chats/promote_chat_member.py +64 -0
- PySPlusthon/client/chats/restrict_chat_member.py +25 -0
- PySPlusthon/client/chats/set_chat_description.py +23 -0
- PySPlusthon/client/chats/set_chat_photo.py +33 -0
- PySPlusthon/client/chats/set_chat_title.py +23 -0
- PySPlusthon/client/chats/unban_chat_member.py +24 -0
- PySPlusthon/client/chats/unpin_all_chat_messages.py +38 -0
- PySPlusthon/client/chats/unpin_chat_message.py +33 -0
- PySPlusthon/client/client.py +223 -0
- PySPlusthon/client/invite_links/__init__.py +7 -0
- PySPlusthon/client/invite_links/create_chat_invite_link.py +14 -0
- PySPlusthon/client/invite_links/export_chat_invite_link.py +21 -0
- PySPlusthon/client/invite_links/revoke_chat_invite_link.py +23 -0
- PySPlusthon/client/messages/__init__.py +21 -0
- PySPlusthon/client/messages/answer_callback_query.py +12 -0
- PySPlusthon/client/messages/copy_message.py +43 -0
- PySPlusthon/client/messages/delete_message.py +29 -0
- PySPlusthon/client/messages/edit_message_caption.py +40 -0
- PySPlusthon/client/messages/edit_message_reply_markup.py +17 -0
- PySPlusthon/client/messages/edit_message_text.py +40 -0
- PySPlusthon/client/messages/forward_message.py +35 -0
- PySPlusthon/client/messages/send_message.py +39 -0
- PySPlusthon/client/stickers/__init__.py +9 -0
- PySPlusthon/client/stickers/add_sticker_to_set.py +15 -0
- PySPlusthon/client/stickers/create_new_sticker_set.py +16 -0
- PySPlusthon/client/stickers/delete_sticker_from_set.py +10 -0
- PySPlusthon/client/stickers/get_sticker_set.py +11 -0
- PySPlusthon/client/stickers/upload_sticker_file.py +16 -0
- PySPlusthon/client/updates/__init__.py +8 -0
- PySPlusthon/client/updates/delete_webhook.py +9 -0
- PySPlusthon/client/updates/get_updates.py +14 -0
- PySPlusthon/client/updates/get_webhook_info.py +10 -0
- PySPlusthon/client/updates/set_webhook.py +10 -0
- PySPlusthon/client/users/__init__.py +6 -0
- PySPlusthon/client/users/ask_review.py +14 -0
- PySPlusthon/client/users/get_me.py +16 -0
- PySPlusthon/conditions/__init__.py +43 -0
- PySPlusthon/conditions/all.py +6 -0
- PySPlusthon/conditions/animation.py +7 -0
- PySPlusthon/conditions/at_state.py +18 -0
- PySPlusthon/conditions/audio.py +7 -0
- PySPlusthon/conditions/author.py +13 -0
- PySPlusthon/conditions/caption.py +7 -0
- PySPlusthon/conditions/channel.py +11 -0
- PySPlusthon/conditions/channel_chat_created.py +7 -0
- PySPlusthon/conditions/chat.py +14 -0
- PySPlusthon/conditions/click.py +24 -0
- PySPlusthon/conditions/command.py +23 -0
- PySPlusthon/conditions/condition.py +88 -0
- PySPlusthon/conditions/contact.py +7 -0
- PySPlusthon/conditions/content.py +7 -0
- PySPlusthon/conditions/delete_chat_photo.py +7 -0
- PySPlusthon/conditions/document.py +7 -0
- PySPlusthon/conditions/entities.py +7 -0
- PySPlusthon/conditions/equals.py +14 -0
- PySPlusthon/conditions/forward.py +7 -0
- PySPlusthon/conditions/group.py +11 -0
- PySPlusthon/conditions/group_chat_created.py +7 -0
- PySPlusthon/conditions/is_admin.py +17 -0
- PySPlusthon/conditions/is_instance.py +10 -0
- PySPlusthon/conditions/is_joined.py +61 -0
- PySPlusthon/conditions/left_chat_member.py +7 -0
- PySPlusthon/conditions/location.py +7 -0
- PySPlusthon/conditions/media.py +7 -0
- PySPlusthon/conditions/media_group.py +7 -0
- PySPlusthon/conditions/new_chat_members.py +7 -0
- PySPlusthon/conditions/new_chat_photo.py +7 -0
- PySPlusthon/conditions/new_chat_title.py +7 -0
- PySPlusthon/conditions/number.py +12 -0
- PySPlusthon/conditions/photo.py +7 -0
- PySPlusthon/conditions/pinned_message.py +7 -0
- PySPlusthon/conditions/poll.py +7 -0
- PySPlusthon/conditions/private.py +11 -0
- PySPlusthon/conditions/regex.py +17 -0
- PySPlusthon/conditions/reply.py +7 -0
- PySPlusthon/conditions/sticker.py +7 -0
- PySPlusthon/conditions/supergroup_chat_created.py +7 -0
- PySPlusthon/conditions/text.py +7 -0
- PySPlusthon/conditions/video.py +7 -0
- PySPlusthon/conditions/voice.py +7 -0
- PySPlusthon/dispatcher/__init__.py +5 -0
- PySPlusthon/dispatcher/chain.py +165 -0
- PySPlusthon/dispatcher/dispatcher.py +124 -0
- PySPlusthon/dispatcher/logging_chain.py +36 -0
- PySPlusthon/dispatcher/monitoring_chain.py +19 -0
- PySPlusthon/dispatcher/printing_chain.py +21 -0
- PySPlusthon/enums/__init__.py +7 -0
- PySPlusthon/enums/chat_member_status.py +9 -0
- PySPlusthon/enums/chat_type.py +9 -0
- PySPlusthon/enums/message_media_type.py +16 -0
- PySPlusthon/enums/name_enum.py +13 -0
- PySPlusthon/enums/peer_type.py +8 -0
- PySPlusthon/enums/poll_type.py +8 -0
- PySPlusthon/enums/transaction_status.py +10 -0
- PySPlusthon/errors/__init__.py +11 -0
- PySPlusthon/errors/dispatching_errors/__init__.py +2 -0
- PySPlusthon/errors/dispatching_errors/break_dispatching.py +2 -0
- PySPlusthon/errors/dispatching_errors/continue_dispatching.py +2 -0
- PySPlusthon/errors/rpc_errors/__init__.py +8 -0
- PySPlusthon/errors/rpc_errors/bad_request_error.py +6 -0
- PySPlusthon/errors/rpc_errors/flood_error.py +6 -0
- PySPlusthon/errors/rpc_errors/forbidden_error.py +6 -0
- PySPlusthon/errors/rpc_errors/internal_error.py +6 -0
- PySPlusthon/errors/rpc_errors/not_found_error.py +6 -0
- PySPlusthon/errors/rpc_errors/rpc_error.py +23 -0
- PySPlusthon/errors/rpc_errors/too_many_requests.py +10 -0
- PySPlusthon/errors/rpc_errors/unauthorized_error.py +6 -0
- PySPlusthon/event_handlers/__init__.py +12 -0
- PySPlusthon/event_handlers/callback_query_handler.py +16 -0
- PySPlusthon/event_handlers/command_handler.py +46 -0
- PySPlusthon/event_handlers/connect_handler.py +19 -0
- PySPlusthon/event_handlers/disconnect_handler.py +18 -0
- PySPlusthon/event_handlers/edited_message_handler.py +16 -0
- PySPlusthon/event_handlers/error_handler.py +15 -0
- PySPlusthon/event_handlers/event_handler.py +53 -0
- PySPlusthon/event_handlers/initialize_handler.py +18 -0
- PySPlusthon/event_handlers/message_handler.py +16 -0
- PySPlusthon/event_handlers/shipping_query_handler.py +16 -0
- PySPlusthon/event_handlers/shutdown_handler.py +18 -0
- PySPlusthon/event_handlers/update_handler.py +16 -0
- PySPlusthon/network/__init__.py +1 -0
- PySPlusthon/network/httpconnection.py +74 -0
- PySPlusthon/objects/__init__.py +43 -0
- PySPlusthon/objects/animation.py +44 -0
- PySPlusthon/objects/audio.py +36 -0
- PySPlusthon/objects/callback_query.py +37 -0
- PySPlusthon/objects/chat.py +118 -0
- PySPlusthon/objects/chat_member.py +53 -0
- PySPlusthon/objects/chat_permissions.py +26 -0
- PySPlusthon/objects/chat_photo.py +24 -0
- PySPlusthon/objects/contact.py +18 -0
- PySPlusthon/objects/date.py +35 -0
- PySPlusthon/objects/document.py +36 -0
- PySPlusthon/objects/edited_message.py +27 -0
- PySPlusthon/objects/entity.py +21 -0
- PySPlusthon/objects/file.py +21 -0
- PySPlusthon/objects/forward_origin.py +22 -0
- PySPlusthon/objects/inline_keyboard.py +65 -0
- PySPlusthon/objects/inline_keyboard_button.py +30 -0
- PySPlusthon/objects/input_media.py +44 -0
- PySPlusthon/objects/input_media_photo.py +14 -0
- PySPlusthon/objects/input_media_video.py +14 -0
- PySPlusthon/objects/invite_link.py +32 -0
- PySPlusthon/objects/list.py +24 -0
- PySPlusthon/objects/location.py +14 -0
- PySPlusthon/objects/message.py +478 -0
- PySPlusthon/objects/message_id.py +31 -0
- PySPlusthon/objects/object.py +154 -0
- PySPlusthon/objects/order_info.py +19 -0
- PySPlusthon/objects/photo.py +31 -0
- PySPlusthon/objects/poll.py +34 -0
- PySPlusthon/objects/poll_option.py +16 -0
- PySPlusthon/objects/reply_keyboard.py +79 -0
- PySPlusthon/objects/reply_keyboard_button.py +27 -0
- PySPlusthon/objects/reply_keyboard_remove.py +10 -0
- PySPlusthon/objects/reply_markup.py +12 -0
- PySPlusthon/objects/shipping_address.py +22 -0
- PySPlusthon/objects/shipping_query.py +20 -0
- PySPlusthon/objects/sticker.py +54 -0
- PySPlusthon/objects/sticker_set.py +29 -0
- PySPlusthon/objects/transaction.py +25 -0
- PySPlusthon/objects/update.py +33 -0
- PySPlusthon/objects/user.py +60 -0
- PySPlusthon/objects/video.py +45 -0
- PySPlusthon/objects/voice.py +31 -0
- PySPlusthon/objects/webhook_info.py +16 -0
- PySPlusthon/proto/__init__.py +2 -0
- PySPlusthon/proto/enums_pb2.py +46 -0
- PySPlusthon/proto/enums_pb2.pyi +99 -0
- PySPlusthon/proto/enums_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/__init__.py +209 -0
- PySPlusthon/proto/requests/abacus_pb2.py +40 -0
- PySPlusthon/proto/requests/abacus_pb2.pyi +31 -0
- PySPlusthon/proto/requests/abacus_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/auth_pb2.py +49 -0
- PySPlusthon/proto/requests/auth_pb2.pyi +67 -0
- PySPlusthon/proto/requests/auth_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/configs_pb2.py +37 -0
- PySPlusthon/proto/requests/configs_pb2.pyi +15 -0
- PySPlusthon/proto/requests/configs_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/files_pb2.py +40 -0
- PySPlusthon/proto/requests/files_pb2.pyi +34 -0
- PySPlusthon/proto/requests/files_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/groups_pb2.py +82 -0
- PySPlusthon/proto/requests/groups_pb2.pyi +213 -0
- PySPlusthon/proto/requests/groups_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/messaging_pb2.py +56 -0
- PySPlusthon/proto/requests/messaging_pb2.pyi +119 -0
- PySPlusthon/proto/requests/messaging_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/presence_pb2.py +40 -0
- PySPlusthon/proto/requests/presence_pb2.pyi +24 -0
- PySPlusthon/proto/requests/presence_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/request_pb2.py +42 -0
- PySPlusthon/proto/requests/request_pb2.pyi +35 -0
- PySPlusthon/proto/requests/request_pb2_grpc.py +24 -0
- PySPlusthon/proto/requests/users_pb2.py +43 -0
- PySPlusthon/proto/requests/users_pb2.pyi +34 -0
- PySPlusthon/proto/requests/users_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/__init__.py +6 -0
- PySPlusthon/proto/responses/abacus_pb2.py +37 -0
- PySPlusthon/proto/responses/abacus_pb2.pyi +14 -0
- PySPlusthon/proto/responses/abacus_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/auth_pb2.py +42 -0
- PySPlusthon/proto/responses/auth_pb2.pyi +40 -0
- PySPlusthon/proto/responses/auth_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/files_pb2.py +39 -0
- PySPlusthon/proto/responses/files_pb2.pyi +27 -0
- PySPlusthon/proto/responses/files_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/groups_pb2.py +59 -0
- PySPlusthon/proto/responses/groups_pb2.pyi +90 -0
- PySPlusthon/proto/responses/groups_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/messaging_pb2.py +44 -0
- PySPlusthon/proto/responses/messaging_pb2.pyi +37 -0
- PySPlusthon/proto/responses/messaging_pb2_grpc.py +24 -0
- PySPlusthon/proto/responses/users_pb2.py +41 -0
- PySPlusthon/proto/responses/users_pb2.pyi +28 -0
- PySPlusthon/proto/responses/users_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/__init__.py +7 -0
- PySPlusthon/proto/structs/collections_pb2.py +54 -0
- PySPlusthon/proto/structs/collections_pb2.pyi +79 -0
- PySPlusthon/proto/structs/collections_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/files_pb2.py +52 -0
- PySPlusthon/proto/structs/files_pb2.pyi +93 -0
- PySPlusthon/proto/structs/files_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/groups_pb2.py +49 -0
- PySPlusthon/proto/structs/groups_pb2.pyi +144 -0
- PySPlusthon/proto/structs/groups_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/messaging_pb2.py +81 -0
- PySPlusthon/proto/structs/messaging_pb2.pyi +296 -0
- PySPlusthon/proto/structs/messaging_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/peers_pb2.py +47 -0
- PySPlusthon/proto/structs/peers_pb2.pyi +56 -0
- PySPlusthon/proto/structs/peers_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/set_updates_pb2.py +37 -0
- PySPlusthon/proto/structs/set_updates_pb2.pyi +15 -0
- PySPlusthon/proto/structs/set_updates_pb2_grpc.py +24 -0
- PySPlusthon/proto/structs/users_pb2.py +54 -0
- PySPlusthon/proto/structs/users_pb2.pyi +122 -0
- PySPlusthon/proto/structs/users_pb2_grpc.py +24 -0
- PySPlusthon/proto/updates/__init__.py +1 -0
- PySPlusthon/proto/updates/messaging_pb2.py +38 -0
- PySPlusthon/proto/updates/messaging_pb2.pyi +26 -0
- PySPlusthon/proto/updates/messaging_pb2_grpc.py +24 -0
- PySPlusthon/proto/ws_pb2.py +52 -0
- PySPlusthon/proto/ws_pb2.pyi +76 -0
- PySPlusthon/proto/ws_pb2_grpc.py +24 -0
- PySPlusthon/smart_call.py +73 -0
- PySPlusthon/states/__init__.py +3 -0
- PySPlusthon/states/state.py +11 -0
- PySPlusthon/states/state_group.py +13 -0
- PySPlusthon/states/state_machine.py +83 -0
- PySPlusthon/sync_support.py +48 -0
- pysplusthon-0.5.3.dist-info/METADATA +65 -0
- pysplusthon-0.5.3.dist-info/RECORD +284 -0
- pysplusthon-0.5.3.dist-info/WHEEL +5 -0
- pysplusthon-0.5.3.dist-info/licenses/LICENSE +19 -0
- 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,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,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.
|