maxapi-python 1.1.20__py3-none-any.whl → 1.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {maxapi_python-1.1.20.dist-info → maxapi_python-1.2.1.dist-info}/METADATA +44 -54
- maxapi_python-1.2.1.dist-info/RECORD +32 -0
- pymax/core.py +79 -156
- pymax/crud.py +3 -7
- pymax/filters.py +158 -41
- pymax/formatter.py +1 -0
- pymax/formatting.py +4 -6
- pymax/interfaces.py +148 -8
- pymax/mixins/__init__.py +3 -0
- pymax/mixins/auth.py +229 -30
- pymax/mixins/channel.py +36 -37
- pymax/mixins/group.py +127 -8
- pymax/mixins/handler.py +163 -39
- pymax/mixins/message.py +251 -97
- pymax/mixins/scheduler.py +28 -0
- pymax/mixins/self.py +79 -40
- pymax/mixins/socket.py +254 -281
- pymax/mixins/user.py +63 -42
- pymax/mixins/websocket.py +145 -145
- pymax/payloads.py +12 -0
- pymax/static/constant.py +4 -2
- pymax/static/enum.py +5 -0
- maxapi_python-1.1.20.dist-info/RECORD +0 -31
- {maxapi_python-1.1.20.dist-info → maxapi_python-1.2.1.dist-info}/WHEEL +0 -0
- {maxapi_python-1.1.20.dist-info → maxapi_python-1.2.1.dist-info}/licenses/LICENSE +0 -0
pymax/mixins/handler.py
CHANGED
|
@@ -1,26 +1,37 @@
|
|
|
1
1
|
from collections.abc import Awaitable, Callable
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
|
-
from pymax.filters import
|
|
4
|
+
from pymax.filters import BaseFilter
|
|
5
5
|
from pymax.interfaces import ClientProtocol
|
|
6
6
|
from pymax.types import Chat, Message, ReactionInfo
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class HandlerMixin(ClientProtocol):
|
|
10
10
|
def on_message(
|
|
11
|
-
self,
|
|
11
|
+
self, filter: BaseFilter[Message] | None = None
|
|
12
12
|
) -> Callable[
|
|
13
13
|
[Callable[[Any], Any | Awaitable[Any]]],
|
|
14
14
|
Callable[[Any], Any | Awaitable[Any]],
|
|
15
15
|
]:
|
|
16
16
|
"""
|
|
17
|
-
Декоратор для
|
|
17
|
+
Декоратор для регистрации обработчика входящих сообщений.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
Позволяет установить функцию-обработчик для всех входящих сообщений
|
|
20
|
+
или только для сообщений, соответствующих заданному фильтру.
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
:param filter: Фильтр для обработки сообщений. По умолчанию None.
|
|
23
|
+
:type filter: BaseFilter[Message] | None
|
|
24
|
+
:return: Декоратор для функции-обработчика.
|
|
25
|
+
:rtype: Callable
|
|
26
|
+
|
|
27
|
+
Example::
|
|
28
|
+
|
|
29
|
+
@client.on_message(Filter.text("hello"))
|
|
30
|
+
async def handle_hello(message: Message):
|
|
31
|
+
await client.send_message(
|
|
32
|
+
chat_id=message.chat_id,
|
|
33
|
+
text="Hello!"
|
|
34
|
+
)
|
|
24
35
|
"""
|
|
25
36
|
|
|
26
37
|
def decorator(
|
|
@@ -33,7 +44,7 @@ class HandlerMixin(ClientProtocol):
|
|
|
33
44
|
return decorator
|
|
34
45
|
|
|
35
46
|
def on_message_edit(
|
|
36
|
-
self,
|
|
47
|
+
self, filter: BaseFilter[Message] | None = None
|
|
37
48
|
) -> Callable[
|
|
38
49
|
[Callable[[Any], Any | Awaitable[Any]]],
|
|
39
50
|
Callable[[Any], Any | Awaitable[Any]],
|
|
@@ -41,11 +52,10 @@ class HandlerMixin(ClientProtocol):
|
|
|
41
52
|
"""
|
|
42
53
|
Декоратор для установки обработчика отредактированных сообщений.
|
|
43
54
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Декоратор.
|
|
55
|
+
:param filter: Фильтр для обработки сообщений. По умолчанию None.
|
|
56
|
+
:type filter: BaseFilter[Message] | None
|
|
57
|
+
:return: Декоратор для функции-обработчика.
|
|
58
|
+
:rtype: Callable
|
|
49
59
|
"""
|
|
50
60
|
|
|
51
61
|
def decorator(
|
|
@@ -60,7 +70,7 @@ class HandlerMixin(ClientProtocol):
|
|
|
60
70
|
return decorator
|
|
61
71
|
|
|
62
72
|
def on_message_delete(
|
|
63
|
-
self,
|
|
73
|
+
self, filter: BaseFilter[Message] | None = None
|
|
64
74
|
) -> Callable[
|
|
65
75
|
[Callable[[Any], Any | Awaitable[Any]]],
|
|
66
76
|
Callable[[Any], Any | Awaitable[Any]],
|
|
@@ -68,11 +78,10 @@ class HandlerMixin(ClientProtocol):
|
|
|
68
78
|
"""
|
|
69
79
|
Декоратор для установки обработчика удаленных сообщений.
|
|
70
80
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
Декоратор.
|
|
81
|
+
:param filter: Фильтр для обработки сообщений. По умолчанию None.
|
|
82
|
+
:type filter: BaseFilter[Message] | None
|
|
83
|
+
:return: Декоратор для функции-обработчика.
|
|
84
|
+
:rtype: Callable
|
|
76
85
|
"""
|
|
77
86
|
|
|
78
87
|
def decorator(
|
|
@@ -93,13 +102,12 @@ class HandlerMixin(ClientProtocol):
|
|
|
93
102
|
"""
|
|
94
103
|
Устанавливает обработчик изменения реакций на сообщения.
|
|
95
104
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
Установленный обработчик.
|
|
105
|
+
:param handler: Функция или coroutine с аргументами (message_id: str, chat_id: int, reaction_info: ReactionInfo).
|
|
106
|
+
:type handler: Callable[[str, int, ReactionInfo], Any | Awaitable[Any]]
|
|
107
|
+
:return: Установленный обработчик.
|
|
108
|
+
:rtype: Callable[[str, int, ReactionInfo], Any | Awaitable[Any]]
|
|
101
109
|
"""
|
|
102
|
-
self._on_reaction_change_handlers.append(
|
|
110
|
+
self._on_reaction_change_handlers.append(handler)
|
|
103
111
|
self.logger.debug("on_reaction_change handler set: %r", handler)
|
|
104
112
|
return handler
|
|
105
113
|
|
|
@@ -109,37 +117,93 @@ class HandlerMixin(ClientProtocol):
|
|
|
109
117
|
"""
|
|
110
118
|
Устанавливает обработчик обновления информации о чате.
|
|
111
119
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
Установленный обработчик.
|
|
120
|
+
:param handler: Функция или coroutine с аргументом (chat: Chat).
|
|
121
|
+
:type handler: Callable[[Chat], Any | Awaitable[Any]]
|
|
122
|
+
:return: Установленный обработчик.
|
|
123
|
+
:rtype: Callable[[Chat], Any | Awaitable[Any]]
|
|
117
124
|
"""
|
|
118
|
-
self._on_chat_update_handlers.append(
|
|
125
|
+
self._on_chat_update_handlers.append(handler)
|
|
119
126
|
self.logger.debug("on_chat_update handler set: %r", handler)
|
|
120
127
|
return handler
|
|
121
128
|
|
|
129
|
+
def on_raw_receive(
|
|
130
|
+
self, handler: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
131
|
+
) -> Callable[[dict[str, Any]], Any | Awaitable[Any]]:
|
|
132
|
+
"""
|
|
133
|
+
Устанавливает обработчик для получения необработанных данных от сервера.
|
|
134
|
+
|
|
135
|
+
:param handler: Функция или coroutine с аргументом (data: dict).
|
|
136
|
+
:type handler: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
137
|
+
:return: Установленный обработчик.
|
|
138
|
+
:rtype: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
139
|
+
"""
|
|
140
|
+
self._on_raw_receive_handlers.append(handler)
|
|
141
|
+
self.logger.debug("on_raw_receive handler set: %r", handler)
|
|
142
|
+
return handler
|
|
143
|
+
|
|
122
144
|
def on_start(
|
|
123
145
|
self, handler: Callable[[], Any | Awaitable[Any]]
|
|
124
146
|
) -> Callable[[], Any | Awaitable[Any]]:
|
|
125
147
|
"""
|
|
126
148
|
Устанавливает обработчик, вызываемый при старте клиента.
|
|
127
149
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Установленный обработчик.
|
|
150
|
+
:param handler: Функция или coroutine без аргументов.
|
|
151
|
+
:type handler: Callable[[], Any | Awaitable[Any]]
|
|
152
|
+
:return: Установленный обработчик.
|
|
153
|
+
:rtype: Callable[[], Any | Awaitable[Any]]
|
|
133
154
|
"""
|
|
134
155
|
self._on_start_handler = handler
|
|
135
156
|
self.logger.debug("on_start handler set: %r", handler)
|
|
136
157
|
return handler
|
|
137
158
|
|
|
159
|
+
def task(self, seconds: float, minutes: float = 0, hours: float = 0):
|
|
160
|
+
"""
|
|
161
|
+
Декоратор для планирования периодической задачи.
|
|
162
|
+
|
|
163
|
+
:param seconds: Интервал выполнения в секундах.
|
|
164
|
+
:type seconds: float
|
|
165
|
+
:param minutes: Интервал выполнения в минутах. По умолчанию 0.
|
|
166
|
+
:type minutes: float
|
|
167
|
+
:param hours: Интервал выполнения в часах. По умолчанию 0.
|
|
168
|
+
:type hours: float
|
|
169
|
+
:return: Декоратор для функции-обработчика.
|
|
170
|
+
:rtype: Callable[[], Any | Awaitable[Any]]
|
|
171
|
+
|
|
172
|
+
Example::
|
|
173
|
+
|
|
174
|
+
@client.task(seconds=10)
|
|
175
|
+
async def task():
|
|
176
|
+
await client.send_message(chat_id=123, text="Hello!")
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
def decorator(
|
|
180
|
+
handler: Callable[[], Any | Awaitable[Any]],
|
|
181
|
+
) -> Callable[[], Any | Awaitable[Any]]:
|
|
182
|
+
self._scheduled_tasks.append(
|
|
183
|
+
(handler, seconds + minutes * 60 + hours * 3600)
|
|
184
|
+
)
|
|
185
|
+
self.logger.debug(
|
|
186
|
+
f"task scheduled: {handler}, interval: {seconds + minutes * 60 + hours * 3600}s"
|
|
187
|
+
)
|
|
188
|
+
return handler
|
|
189
|
+
|
|
190
|
+
return decorator
|
|
191
|
+
|
|
138
192
|
def add_message_handler(
|
|
139
193
|
self,
|
|
140
194
|
handler: Callable[[Message], Any | Awaitable[Any]],
|
|
141
|
-
filter:
|
|
195
|
+
filter: BaseFilter[Message] | None = None,
|
|
142
196
|
) -> Callable[[Message], Any | Awaitable[Any]]:
|
|
197
|
+
"""
|
|
198
|
+
Добавляет обработчик входящих сообщений.
|
|
199
|
+
|
|
200
|
+
:param handler: Обработчик.
|
|
201
|
+
:type handler: Callable[[Message], Any | Awaitable[Any]]
|
|
202
|
+
:param filter: Фильтр. По умолчанию None.
|
|
203
|
+
:type filter: BaseFilter[Message] | None
|
|
204
|
+
:return: Обработчик.
|
|
205
|
+
:rtype: Callable[[Message], Any | Awaitable[Any]]
|
|
206
|
+
"""
|
|
143
207
|
self.logger.debug("add_message_handler (alias) used")
|
|
144
208
|
self._on_message_handlers.append((handler, filter))
|
|
145
209
|
return handler
|
|
@@ -147,6 +211,14 @@ class HandlerMixin(ClientProtocol):
|
|
|
147
211
|
def add_on_start_handler(
|
|
148
212
|
self, handler: Callable[[], Any | Awaitable[Any]]
|
|
149
213
|
) -> Callable[[], Any | Awaitable[Any]]:
|
|
214
|
+
"""
|
|
215
|
+
Добавляет обработчик, вызываемый при старте клиента.
|
|
216
|
+
|
|
217
|
+
:param handler: Функция или coroutine без аргументов.
|
|
218
|
+
:type handler: Callable[[], Any | Awaitable[Any]]
|
|
219
|
+
:return: Установленный обработчик.
|
|
220
|
+
:rtype: Callable[[], Any | Awaitable[Any]]
|
|
221
|
+
"""
|
|
150
222
|
self.logger.debug("add_on_start_handler (alias) used")
|
|
151
223
|
self._on_start_handler = handler
|
|
152
224
|
return handler
|
|
@@ -155,13 +227,65 @@ class HandlerMixin(ClientProtocol):
|
|
|
155
227
|
self,
|
|
156
228
|
handler: Callable[[str, int, ReactionInfo], Any | Awaitable[Any]],
|
|
157
229
|
) -> Callable[[str, int, ReactionInfo], Any | Awaitable[Any]]:
|
|
230
|
+
"""
|
|
231
|
+
Добавляет обработчик изменения реакций на сообщения.
|
|
232
|
+
|
|
233
|
+
:param handler: Функция или coroutine с аргументами (message_id: str, chat_id: int, reaction_info: ReactionInfo).
|
|
234
|
+
:type handler: Callable[[str, int, ReactionInfo], Any | Awaitable[Any]]
|
|
235
|
+
:return: Установленный обработчик.
|
|
236
|
+
:rtype: Callable[[str, int, ReactionInfo], Any | Awaitable[Any]]
|
|
237
|
+
"""
|
|
158
238
|
self.logger.debug("add_reaction_change_handler (alias) used")
|
|
159
|
-
self._on_reaction_change_handlers.append(
|
|
239
|
+
self._on_reaction_change_handlers.append(
|
|
240
|
+
handler,
|
|
241
|
+
)
|
|
160
242
|
return handler
|
|
161
243
|
|
|
162
244
|
def add_chat_update_handler(
|
|
163
245
|
self, handler: Callable[[Chat], Any | Awaitable[Any]]
|
|
164
246
|
) -> Callable[[Chat], Any | Awaitable[Any]]:
|
|
247
|
+
"""
|
|
248
|
+
Добавляет обработчик обновления информации о чате.
|
|
249
|
+
|
|
250
|
+
:param handler: Функция или coroutine с аргументом (chat: Chat).
|
|
251
|
+
:type handler: Callable[[Chat], Any | Awaitable[Any]]
|
|
252
|
+
:return: Установленный обработчик.
|
|
253
|
+
:rtype: Callable[[Chat], Any | Awaitable[Any]]
|
|
254
|
+
"""
|
|
165
255
|
self.logger.debug("add_chat_update_handler (alias) used")
|
|
166
|
-
self._on_chat_update_handlers.append(
|
|
256
|
+
self._on_chat_update_handlers.append(handler)
|
|
257
|
+
return handler
|
|
258
|
+
|
|
259
|
+
def add_raw_receive_handler(
|
|
260
|
+
self, handler: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
261
|
+
) -> Callable[[dict[str, Any]], Any | Awaitable[Any]]:
|
|
262
|
+
"""
|
|
263
|
+
Добавляет обработчик для получения необработанных данных от сервера.
|
|
264
|
+
|
|
265
|
+
:param handler: Функция или coroutine с аргументом (data: dict).
|
|
266
|
+
:type handler: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
267
|
+
:return: Установленный обработчик.
|
|
268
|
+
:rtype: Callable[[dict[str, Any]], Any | Awaitable[Any]]
|
|
269
|
+
"""
|
|
270
|
+
self.logger.debug("add_raw_receive_handler (alias) used")
|
|
271
|
+
self._on_raw_receive_handlers.append(handler)
|
|
272
|
+
return handler
|
|
273
|
+
|
|
274
|
+
def add_scheduled_task(
|
|
275
|
+
self,
|
|
276
|
+
handler: Callable[[], Any | Awaitable[Any]],
|
|
277
|
+
interval: float,
|
|
278
|
+
) -> Callable[[], Any | Awaitable[Any]]:
|
|
279
|
+
"""
|
|
280
|
+
Добавляет периодическую задачу.
|
|
281
|
+
|
|
282
|
+
:param handler: Функция или coroutine без аргументов.
|
|
283
|
+
:type handler: Callable[[], Any | Awaitable[Any]]
|
|
284
|
+
:param interval: Интервал выполнения в секундах.
|
|
285
|
+
:type interval: float
|
|
286
|
+
:return: Установленный обработчик.
|
|
287
|
+
:rtype: Callable[[], Any | Awaitable[Any]]
|
|
288
|
+
"""
|
|
289
|
+
self.logger.debug("add_scheduled_task (alias) used")
|
|
290
|
+
self._scheduled_tasks.append((handler, interval))
|
|
167
291
|
return handler
|