Rubka 6.6.2__py3-none-any.whl → 7.2.2__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.
- rubka/__init__.py +71 -2
- rubka/api.py +6 -17
- rubka/asynco.py +1088 -256
- rubka/button.py +1 -1
- rubka/context.py +587 -26
- rubka/exceptions.py +35 -1
- rubka/filters.py +29 -4
- rubka/helpers.py +1461 -0
- rubka/metadata.py +117 -0
- rubka/rubino.py +267 -96
- rubka/tv.py +145 -0
- rubka/update.py +560 -25
- {rubka-6.6.2.dist-info → rubka-7.2.2.dist-info}/METADATA +29 -11
- {rubka-6.6.2.dist-info → rubka-7.2.2.dist-info}/RECORD +17 -13
- rubka-7.2.2.dist-info/entry_points.txt +2 -0
- {rubka-6.6.2.dist-info → rubka-7.2.2.dist-info}/WHEEL +0 -0
- {rubka-6.6.2.dist-info → rubka-7.2.2.dist-info}/top_level.txt +0 -0
rubka/exceptions.py
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
1
|
class APIRequestError(Exception):
|
|
2
|
-
"""
|
|
2
|
+
"""Base class for all API request errors."""
|
|
3
|
+
def __init__(self, status: str, dev_message: str = None):
|
|
4
|
+
self.status = status
|
|
5
|
+
self.dev_message = dev_message
|
|
6
|
+
msg = f"{self.__class__.__name__}: {status}"
|
|
7
|
+
if dev_message:
|
|
8
|
+
msg += f" | Message : {dev_message}"
|
|
9
|
+
super().__init__(msg)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class InvalidAccessError(APIRequestError):
|
|
13
|
+
"""Raised when access is invalid."""
|
|
14
|
+
|
|
15
|
+
class InvalidTokenError(Exception):
|
|
3
16
|
pass
|
|
17
|
+
|
|
18
|
+
class InvalidInputError(APIRequestError):
|
|
19
|
+
"""Raised when input is invalid."""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TooRequestError(APIRequestError):
|
|
23
|
+
"""Raised when too many requests are made."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def raise_for_status(response: dict):
|
|
27
|
+
status = response.get("status")
|
|
28
|
+
dev_message = response.get("dev_message")
|
|
29
|
+
|
|
30
|
+
if status == "INVALID_ACCESS":
|
|
31
|
+
raise InvalidAccessError(status, dev_message)
|
|
32
|
+
elif status == "INVALID_INPUT":
|
|
33
|
+
raise InvalidInputError(status, dev_message)
|
|
34
|
+
elif status == "TOO_REQUEST":
|
|
35
|
+
raise TooRequestError(status, dev_message)
|
|
36
|
+
elif status != "OK":
|
|
37
|
+
raise APIRequestError(status, dev_message)
|
rubka/filters.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Callable
|
|
1
|
+
from typing import Callable,Union
|
|
2
2
|
import re
|
|
3
3
|
class TextFilter:
|
|
4
4
|
def __call__(self, keyword=None):
|
|
@@ -110,6 +110,9 @@ def text_length(min_len: int = 0, max_len: int = None):
|
|
|
110
110
|
def text_regex(pattern: str):
|
|
111
111
|
regex = re.compile(pattern)
|
|
112
112
|
return Filter(lambda m: getattr(m, "text", "") and regex.search(m.text))
|
|
113
|
+
def regex(pattern: str):
|
|
114
|
+
regex = re.compile(pattern)
|
|
115
|
+
return Filter(lambda m: getattr(m, "text", "") and regex.search(m.text))
|
|
113
116
|
def text_startswith(prefix: str):
|
|
114
117
|
return Filter(lambda m: getattr(m, "text", "").startswith(prefix) if getattr(m, "text", None) else False)
|
|
115
118
|
def text_endswith(suffix: str):
|
|
@@ -149,6 +152,19 @@ def sticker_id_is(sid: str):
|
|
|
149
152
|
return Filter(lambda m: m.sticker and getattr(m.sticker, "sticker_id", None) == sid)
|
|
150
153
|
def sticker_emoji_is(emoji: str):
|
|
151
154
|
return Filter(lambda m: m.sticker and getattr(m.sticker, "emoji", None) == emoji)
|
|
155
|
+
is_bold = Filter(lambda m: getattr(m, "is_bold", False))
|
|
156
|
+
is_italic = Filter(lambda m: getattr(m, "is_italic", False))
|
|
157
|
+
is_strike = Filter(lambda m: getattr(m, "is_strike", False))
|
|
158
|
+
is_underline = Filter(lambda m: getattr(m, "is_underline", False))
|
|
159
|
+
is_quote = Filter(lambda m: getattr(m, "is_quote", False))
|
|
160
|
+
is_spoiler = Filter(lambda m: getattr(m, "is_spoiler", False))
|
|
161
|
+
is_pre = Filter(lambda m: getattr(m, "is_pre", False))
|
|
162
|
+
is_mono = Filter(lambda m: getattr(m, "is_mono", False))
|
|
163
|
+
is_link_meta = Filter(lambda m: getattr(m, "is_link_meta", False))
|
|
164
|
+
has_metadata = Filter(lambda m: getattr(m, "has_metadata", False))
|
|
165
|
+
meta_links_contain = lambda keyword: Filter(lambda m: any(keyword in link for link in getattr(m, "meta_links", [])))
|
|
166
|
+
meta_link_positions_contain = lambda keyword: Filter(lambda m: any(keyword in link.get("url", "") for link in getattr(m, "meta_link_positions", [])))
|
|
167
|
+
meta_types_include = lambda types: Filter(lambda m: any(t in getattr(m, "meta_types", []) for t in types))
|
|
152
168
|
def poll_question_contains(keyword: str):
|
|
153
169
|
return Filter(lambda m: m.poll and keyword in getattr(m.poll, "question", ""))
|
|
154
170
|
def poll_option_count(min_options: int = 1, max_options: int = None):
|
|
@@ -228,9 +244,18 @@ def chat_title_equals(value: str):
|
|
|
228
244
|
|
|
229
245
|
return Filter(lambda m: getattr(m, "chat", None) and getattr(m.chat, "title", "") == value)
|
|
230
246
|
|
|
231
|
-
def chat_id_is(
|
|
232
|
-
return Filter(lambda m: getattr(m, "
|
|
233
|
-
|
|
247
|
+
def chat_id_is(sender_id: str):
|
|
248
|
+
return Filter(lambda m: getattr(m, "chat_id", None) == sender_id)
|
|
249
|
+
def sender_id_is(sender_id: str):
|
|
250
|
+
return Filter(lambda m: getattr(m, "sender_id", None) == sender_id)
|
|
251
|
+
def senders_id(sender_ids: Union[str, list]):
|
|
252
|
+
if isinstance(sender_ids, list):
|
|
253
|
+
return Filter(lambda m: getattr(m, "sender_id", None) in sender_ids)
|
|
254
|
+
return Filter(lambda m: getattr(m, "sender_id", None) == sender_ids)
|
|
255
|
+
def chat_ids(sender_ids: Union[str, list]):
|
|
256
|
+
if isinstance(sender_ids, list):
|
|
257
|
+
return Filter(lambda m: getattr(m, "chat_id", None) in sender_ids)
|
|
258
|
+
return Filter(lambda m: getattr(m, "chat_id", None) == sender_ids)
|
|
234
259
|
def chat_member_count(min_count: int = 0, max_count: int = None):
|
|
235
260
|
|
|
236
261
|
def _filter(m):
|