telegrinder 0.1.dev19__py3-none-any.whl → 0.1.dev158__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of telegrinder might be problematic. Click here for more details.
- telegrinder/__init__.py +129 -22
- telegrinder/api/__init__.py +11 -2
- telegrinder/api/abc.py +25 -9
- telegrinder/api/api.py +29 -24
- telegrinder/api/error.py +14 -4
- telegrinder/api/response.py +11 -7
- telegrinder/bot/__init__.py +68 -7
- telegrinder/bot/bot.py +30 -24
- telegrinder/bot/cute_types/__init__.py +11 -1
- telegrinder/bot/cute_types/base.py +47 -0
- telegrinder/bot/cute_types/callback_query.py +64 -14
- telegrinder/bot/cute_types/inline_query.py +22 -16
- telegrinder/bot/cute_types/message.py +163 -43
- telegrinder/bot/cute_types/update.py +23 -0
- telegrinder/bot/dispatch/__init__.py +56 -3
- telegrinder/bot/dispatch/abc.py +9 -7
- telegrinder/bot/dispatch/composition.py +74 -0
- telegrinder/bot/dispatch/context.py +71 -0
- telegrinder/bot/dispatch/dispatch.py +86 -49
- telegrinder/bot/dispatch/handler/__init__.py +3 -0
- telegrinder/bot/dispatch/handler/abc.py +11 -5
- telegrinder/bot/dispatch/handler/func.py +41 -32
- telegrinder/bot/dispatch/handler/message_reply.py +46 -0
- telegrinder/bot/dispatch/middleware/__init__.py +2 -0
- telegrinder/bot/dispatch/middleware/abc.py +10 -4
- telegrinder/bot/dispatch/process.py +53 -49
- telegrinder/bot/dispatch/return_manager/__init__.py +19 -0
- telegrinder/bot/dispatch/return_manager/abc.py +95 -0
- telegrinder/bot/dispatch/return_manager/callback_query.py +19 -0
- telegrinder/bot/dispatch/return_manager/inline_query.py +14 -0
- telegrinder/bot/dispatch/return_manager/message.py +25 -0
- telegrinder/bot/dispatch/view/__init__.py +14 -2
- telegrinder/bot/dispatch/view/abc.py +121 -2
- telegrinder/bot/dispatch/view/box.py +38 -0
- telegrinder/bot/dispatch/view/callback_query.py +13 -38
- telegrinder/bot/dispatch/view/inline_query.py +11 -38
- telegrinder/bot/dispatch/view/message.py +11 -46
- telegrinder/bot/dispatch/waiter_machine/__init__.py +9 -0
- telegrinder/bot/dispatch/waiter_machine/machine.py +116 -0
- telegrinder/bot/dispatch/waiter_machine/middleware.py +76 -0
- telegrinder/bot/dispatch/waiter_machine/short_state.py +37 -0
- telegrinder/bot/polling/__init__.py +2 -0
- telegrinder/bot/polling/abc.py +11 -4
- telegrinder/bot/polling/polling.py +89 -40
- telegrinder/bot/rules/__init__.py +92 -5
- telegrinder/bot/rules/abc.py +81 -63
- telegrinder/bot/rules/adapter/__init__.py +11 -0
- telegrinder/bot/rules/adapter/abc.py +21 -0
- telegrinder/bot/rules/adapter/errors.py +5 -0
- telegrinder/bot/rules/adapter/event.py +43 -0
- telegrinder/bot/rules/adapter/raw_update.py +24 -0
- telegrinder/bot/rules/callback_data.py +159 -38
- telegrinder/bot/rules/command.py +116 -0
- telegrinder/bot/rules/enum_text.py +28 -0
- telegrinder/bot/rules/func.py +17 -17
- telegrinder/bot/rules/fuzzy.py +13 -10
- telegrinder/bot/rules/inline.py +61 -0
- telegrinder/bot/rules/integer.py +12 -7
- telegrinder/bot/rules/is_from.py +148 -7
- telegrinder/bot/rules/markup.py +21 -18
- telegrinder/bot/rules/mention.py +17 -0
- telegrinder/bot/rules/message_entities.py +33 -0
- telegrinder/bot/rules/regex.py +27 -19
- telegrinder/bot/rules/rule_enum.py +74 -0
- telegrinder/bot/rules/start.py +42 -0
- telegrinder/bot/rules/text.py +23 -14
- telegrinder/bot/scenario/__init__.py +2 -0
- telegrinder/bot/scenario/abc.py +12 -5
- telegrinder/bot/scenario/checkbox.py +48 -30
- telegrinder/bot/scenario/choice.py +16 -10
- telegrinder/client/__init__.py +2 -0
- telegrinder/client/abc.py +8 -21
- telegrinder/client/aiohttp.py +30 -21
- telegrinder/model.py +68 -37
- telegrinder/modules.py +189 -21
- telegrinder/msgspec_json.py +14 -0
- telegrinder/msgspec_utils.py +207 -0
- telegrinder/node/__init__.py +31 -0
- telegrinder/node/attachment.py +71 -0
- telegrinder/node/base.py +93 -0
- telegrinder/node/composer.py +71 -0
- telegrinder/node/container.py +22 -0
- telegrinder/node/message.py +18 -0
- telegrinder/node/rule.py +56 -0
- telegrinder/node/source.py +31 -0
- telegrinder/node/text.py +13 -0
- telegrinder/node/tools/__init__.py +3 -0
- telegrinder/node/tools/generator.py +40 -0
- telegrinder/node/update.py +12 -0
- telegrinder/rules.py +1 -1
- telegrinder/tools/__init__.py +165 -4
- telegrinder/tools/buttons.py +75 -51
- telegrinder/tools/error_handler/__init__.py +8 -0
- telegrinder/tools/error_handler/abc.py +30 -0
- telegrinder/tools/error_handler/error_handler.py +156 -0
- telegrinder/tools/formatting/__init__.py +81 -3
- telegrinder/tools/formatting/html.py +283 -37
- telegrinder/tools/formatting/links.py +32 -0
- telegrinder/tools/formatting/spec_html_formats.py +121 -0
- telegrinder/tools/global_context/__init__.py +12 -0
- telegrinder/tools/global_context/abc.py +66 -0
- telegrinder/tools/global_context/global_context.py +451 -0
- telegrinder/tools/global_context/telegrinder_ctx.py +25 -0
- telegrinder/tools/i18n/__init__.py +12 -0
- telegrinder/tools/i18n/base.py +31 -0
- telegrinder/tools/i18n/middleware/__init__.py +3 -0
- telegrinder/tools/i18n/middleware/base.py +26 -0
- telegrinder/tools/i18n/simple.py +48 -0
- telegrinder/tools/inline_query.py +684 -0
- telegrinder/tools/kb_set/__init__.py +2 -0
- telegrinder/tools/kb_set/base.py +3 -0
- telegrinder/tools/kb_set/yaml.py +28 -17
- telegrinder/tools/keyboard.py +84 -62
- telegrinder/tools/loop_wrapper/__init__.py +4 -0
- telegrinder/tools/loop_wrapper/abc.py +18 -0
- telegrinder/tools/loop_wrapper/loop_wrapper.py +132 -0
- telegrinder/tools/magic.py +48 -23
- telegrinder/tools/parse_mode.py +1 -2
- telegrinder/types/__init__.py +1 -0
- telegrinder/types/enums.py +651 -0
- telegrinder/types/methods.py +3933 -1128
- telegrinder/types/objects.py +4755 -1633
- {telegrinder-0.1.dev19.dist-info → telegrinder-0.1.dev158.dist-info}/LICENSE +2 -1
- telegrinder-0.1.dev158.dist-info/METADATA +108 -0
- telegrinder-0.1.dev158.dist-info/RECORD +126 -0
- {telegrinder-0.1.dev19.dist-info → telegrinder-0.1.dev158.dist-info}/WHEEL +1 -1
- telegrinder/bot/dispatch/waiter.py +0 -37
- telegrinder/result.py +0 -38
- telegrinder/tools/formatting/abc.py +0 -52
- telegrinder/tools/formatting/markdown.py +0 -57
- telegrinder/typegen/__init__.py +0 -1
- telegrinder/typegen/__main__.py +0 -3
- telegrinder/typegen/nicification.py +0 -20
- telegrinder/typegen/schema_generator.py +0 -259
- telegrinder-0.1.dev19.dist-info/METADATA +0 -22
- telegrinder-0.1.dev19.dist-info/RECORD +0 -74
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import os
|
|
3
|
-
import re
|
|
4
|
-
import typing
|
|
5
|
-
import pathlib
|
|
6
|
-
|
|
7
|
-
import requests
|
|
8
|
-
|
|
9
|
-
URL = "https://ark0f.github.io/tg-bot-api/openapi.json"
|
|
10
|
-
TYPES = {
|
|
11
|
-
"integer": "int",
|
|
12
|
-
"string": "str",
|
|
13
|
-
"long": "int",
|
|
14
|
-
"bytes": "bytes",
|
|
15
|
-
"boolean": "bool",
|
|
16
|
-
"number": "float",
|
|
17
|
-
"true": "bool",
|
|
18
|
-
"false": "bool",
|
|
19
|
-
}
|
|
20
|
-
SPACES = " "
|
|
21
|
-
NS = pathlib.Path("./nicification.py").read_text()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def find_nicifications(name: str) -> typing.List[str]:
|
|
25
|
-
regex = r"class .+\(" + name + r"\):\n((?:.|\n {4}|\n$)+)"
|
|
26
|
-
matches = list(re.finditer(regex, NS, flags=re.MULTILINE))
|
|
27
|
-
if matches:
|
|
28
|
-
return [match.group(1) for match in matches]
|
|
29
|
-
return []
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def convert_optional(func):
|
|
33
|
-
def wrapper(name: str, d: dict, obj: dict, forward_ref: bool = True):
|
|
34
|
-
t = func(name, d, obj, forward_ref)
|
|
35
|
-
if name not in obj.get("required", []) and name:
|
|
36
|
-
t = "typing.Optional[" + t + "]"
|
|
37
|
-
return t
|
|
38
|
-
|
|
39
|
-
return wrapper
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def chunks_str(s: str) -> str:
|
|
43
|
-
words = s.split(" ")
|
|
44
|
-
s = ""
|
|
45
|
-
line = 0
|
|
46
|
-
for word in words:
|
|
47
|
-
s += word + " "
|
|
48
|
-
line += len(word)
|
|
49
|
-
if line >= 60:
|
|
50
|
-
s += "\n"
|
|
51
|
-
line = 0
|
|
52
|
-
return s
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
@convert_optional
|
|
56
|
-
def convert_type(name: str, d: dict, obj: dict, forward_ref: bool = True) -> str:
|
|
57
|
-
if "type" in d:
|
|
58
|
-
t = d["type"]
|
|
59
|
-
if t in TYPES:
|
|
60
|
-
return TYPES[t]
|
|
61
|
-
elif t == "array":
|
|
62
|
-
nt = convert_type("", d["items"], obj, forward_ref)
|
|
63
|
-
return "typing.List[" + nt + "]"
|
|
64
|
-
else:
|
|
65
|
-
if "." in t:
|
|
66
|
-
t = t.split(".")[-1]
|
|
67
|
-
return repr(t)
|
|
68
|
-
elif "$ref" in d:
|
|
69
|
-
n = d["$ref"].split("/")[-1]
|
|
70
|
-
if forward_ref:
|
|
71
|
-
return '"' + n + '"'
|
|
72
|
-
else:
|
|
73
|
-
return n
|
|
74
|
-
elif "anyOf" in d:
|
|
75
|
-
return (
|
|
76
|
-
"typing.Union["
|
|
77
|
-
+ ", ".join(convert_type("", ut, obj, forward_ref) for ut in d["anyOf"])
|
|
78
|
-
+ "]"
|
|
79
|
-
)
|
|
80
|
-
else:
|
|
81
|
-
logging.error(f"cannot handle {d}")
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def to_snakecase(s: str) -> str:
|
|
85
|
-
ns = ""
|
|
86
|
-
for i, symbol in enumerate(s):
|
|
87
|
-
if i == 0:
|
|
88
|
-
ns = ns + symbol.lower()
|
|
89
|
-
else:
|
|
90
|
-
ns = ns + (symbol if symbol.islower() else "_" + symbol.lower())
|
|
91
|
-
return ns.replace("__", "_")
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
def param_s(name: str, param: dict, obj: dict) -> str:
|
|
95
|
-
t = convert_type(name, param, obj)
|
|
96
|
-
s = "{}: {}{}\n".format(
|
|
97
|
-
name if name not in ("json", "from") else name + "_",
|
|
98
|
-
t,
|
|
99
|
-
" = " + repr(param.get("default", None))
|
|
100
|
-
if t.startswith("typing.Optional")
|
|
101
|
-
else "",
|
|
102
|
-
)
|
|
103
|
-
return s
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def get_lines_for_object(name: str, properties: dict, obj: dict):
|
|
107
|
-
if not properties:
|
|
108
|
-
if name == "InputFile":
|
|
109
|
-
return (
|
|
110
|
-
"\n\n"
|
|
111
|
-
+ name
|
|
112
|
-
+ ' = typing.NamedTuple("InputFile", [("filename", str), ("data", bytes)])\n'
|
|
113
|
-
)
|
|
114
|
-
else:
|
|
115
|
-
print("todo: handle {}".format(name))
|
|
116
|
-
|
|
117
|
-
nicifications = find_nicifications(name)
|
|
118
|
-
desc = ""
|
|
119
|
-
if "description" in obj:
|
|
120
|
-
d = obj["description"]
|
|
121
|
-
# d = re.sub(r"\[(.+)]\(.+telegram.org/blog/(.+)\)", r"\1", d)
|
|
122
|
-
d = chunks_str(d)
|
|
123
|
-
d = d.replace("\\", "").replace("\n", SPACES + "\n")
|
|
124
|
-
if "externalDocs" in obj:
|
|
125
|
-
d += "\nDocs: {}".format(obj["externalDocs"]["url"])
|
|
126
|
-
desc = SPACES + '"""' + d + '"""\n'
|
|
127
|
-
|
|
128
|
-
return [
|
|
129
|
-
"\n\n",
|
|
130
|
-
"class {}(Model):\n".format(name),
|
|
131
|
-
desc,
|
|
132
|
-
# SPACES + "\"\"\"{}\"\"\"".format(obj["documentation"]),
|
|
133
|
-
*(
|
|
134
|
-
[SPACES + "pass\n"]
|
|
135
|
-
if not properties
|
|
136
|
-
else (
|
|
137
|
-
SPACES + param_s(name, param, obj)
|
|
138
|
-
for (name, param) in properties.items()
|
|
139
|
-
if name != "flags"
|
|
140
|
-
)
|
|
141
|
-
),
|
|
142
|
-
*nicifications,
|
|
143
|
-
]
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
def parse_response(rt: str):
|
|
147
|
-
if rt.startswith('"'):
|
|
148
|
-
rt = rt[1:-1]
|
|
149
|
-
return f"return full_result(result, {rt})"
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
def get_ref_names(ref_list: typing.List[dict]) -> typing.List[str]:
|
|
153
|
-
return [d["$ref"].split("/")[-1] for d in ref_list]
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def generate(path: str, schema_url: str = URL) -> None:
|
|
157
|
-
if not os.path.exists(path):
|
|
158
|
-
os.makedirs(path)
|
|
159
|
-
|
|
160
|
-
schema = requests.get(schema_url).json()
|
|
161
|
-
|
|
162
|
-
paths = schema["paths"]
|
|
163
|
-
objects = schema["components"]["schemas"]
|
|
164
|
-
|
|
165
|
-
with open(path + "/__init__.py", "w") as file:
|
|
166
|
-
file.writelines("from telegrinder.types.objects import *\n")
|
|
167
|
-
|
|
168
|
-
with open(path + "/objects.py", "w") as file:
|
|
169
|
-
file.writelines(["import typing\n", "from telegrinder.model import *\n"])
|
|
170
|
-
|
|
171
|
-
for name, obj in objects.items():
|
|
172
|
-
t, properties = obj.get("type", "object"), obj.get("properties", [])
|
|
173
|
-
|
|
174
|
-
with open(path + "/objects.py", "a") as file:
|
|
175
|
-
if obj.get("anyOf"):
|
|
176
|
-
# creating merge to parse as fast as possible
|
|
177
|
-
ref_names = get_ref_names(obj["anyOf"])
|
|
178
|
-
merged_properties = {}
|
|
179
|
-
for ref_name in ref_names:
|
|
180
|
-
ref = objects[ref_name]
|
|
181
|
-
merged_properties.update(ref["properties"])
|
|
182
|
-
properties = merged_properties
|
|
183
|
-
obj_lines = get_lines_for_object(name, properties, obj)
|
|
184
|
-
file.writelines(obj_lines)
|
|
185
|
-
|
|
186
|
-
# with open(path + "/objects.py", "a") as file:
|
|
187
|
-
# file.writelines(
|
|
188
|
-
# [
|
|
189
|
-
# "\n\n",
|
|
190
|
-
# "for v in locals().copy().values():\n",
|
|
191
|
-
# SPACES + "if inspect.isclass(v) and issubclass(v, Model):\n",
|
|
192
|
-
# SPACES + SPACES + "v.update_forward_refs()",
|
|
193
|
-
# "\n\n",
|
|
194
|
-
# "__all__ = (\n",
|
|
195
|
-
# ]
|
|
196
|
-
# + [SPACES + repr(n) + ",\n" for n in objects]
|
|
197
|
-
# + [")\n"]
|
|
198
|
-
# )
|
|
199
|
-
|
|
200
|
-
with open(path + "/methods.py", "w") as file:
|
|
201
|
-
file.writelines(
|
|
202
|
-
[
|
|
203
|
-
"import typing\n",
|
|
204
|
-
"from .objects import *\n",
|
|
205
|
-
"from telegrinder.result import Result\n",
|
|
206
|
-
"from telegrinder.api.error import APIError\n\n",
|
|
207
|
-
"if typing.TYPE_CHECKING:\n",
|
|
208
|
-
SPACES + "from telegrinder.api.abc import ABCAPI\n\n",
|
|
209
|
-
'X = typing.TypeVar("X")\n',
|
|
210
|
-
"\n\n",
|
|
211
|
-
"class APIMethods:\n",
|
|
212
|
-
SPACES + 'def __init__(self, api: "ABCAPI"):\n',
|
|
213
|
-
SPACES + SPACES + "self.api = api\n",
|
|
214
|
-
]
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
for ps in paths:
|
|
218
|
-
method = paths[ps]
|
|
219
|
-
if "requestBody" not in method["post"]:
|
|
220
|
-
props = {}
|
|
221
|
-
else:
|
|
222
|
-
props = list(method["post"]["requestBody"]["content"].values())[-1][
|
|
223
|
-
"schema"
|
|
224
|
-
]["properties"]
|
|
225
|
-
|
|
226
|
-
lines = []
|
|
227
|
-
method_name = ps[1:]
|
|
228
|
-
fobj = list(method["post"]["responses"]["200"]["content"].values())[-1][
|
|
229
|
-
"schema"
|
|
230
|
-
]
|
|
231
|
-
result = fobj["properties"]["result"]
|
|
232
|
-
response = convert_type("", result, {}, False)
|
|
233
|
-
name = to_snakecase(method_name)
|
|
234
|
-
lines.append(f"async def {name}(\n self,\n")
|
|
235
|
-
for n, prop in props.items():
|
|
236
|
-
t = convert_type("", prop, {}, False)
|
|
237
|
-
lines.append(SPACES + f"{n}: typing.Optional[{t}] = None,\n")
|
|
238
|
-
lines.append(SPACES + "**other\n")
|
|
239
|
-
lines.append(f") -> Result[{response}, APIError]:\n")
|
|
240
|
-
lines.extend(
|
|
241
|
-
[
|
|
242
|
-
SPACES + li
|
|
243
|
-
for li in (
|
|
244
|
-
"result = await self.api.request_raw({}, get_params(locals()))\n".format(
|
|
245
|
-
'"' + method_name + '"'
|
|
246
|
-
),
|
|
247
|
-
("\n" + SPACES + SPACES).join(parse_response(response).split("\n"))
|
|
248
|
-
+ "\n",
|
|
249
|
-
)
|
|
250
|
-
]
|
|
251
|
-
)
|
|
252
|
-
with open(path + "/methods.py", "a") as file:
|
|
253
|
-
file.writelines(["\n\n"] + [SPACES + li for li in lines])
|
|
254
|
-
|
|
255
|
-
print("generated.")
|
|
256
|
-
try:
|
|
257
|
-
os.system("black ../types")
|
|
258
|
-
except:
|
|
259
|
-
print("cant run black")
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: telegrinder
|
|
3
|
-
Version: 0.1.dev19
|
|
4
|
-
Summary: async telegram bot building
|
|
5
|
-
License: MIT
|
|
6
|
-
Author: timoniq
|
|
7
|
-
Author-email: tesseradecades@mail.ru
|
|
8
|
-
Requires-Python: >=3.8,<4.0
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Requires-Dist: PyYAML (>=6.0,<7.0)
|
|
16
|
-
Requires-Dist: aiohttp (>=3.8.1,<4.0.0)
|
|
17
|
-
Requires-Dist: certifi (>=2022.6.15,<2023.0.0)
|
|
18
|
-
Requires-Dist: choicelib (>=0.1.5,<0.2.0)
|
|
19
|
-
Requires-Dist: envparse (>=0.2.0,<0.3.0)
|
|
20
|
-
Requires-Dist: msgspec (>=0.9.0,<0.10.0)
|
|
21
|
-
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
|
22
|
-
Requires-Dist: vbml (>=1.1.post1,<2.0)
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
telegrinder/__init__.py,sha256=rb93CGVNscnwhhiWAkFbK7FtJ5JYLGprOkI0FiJo_70,740
|
|
2
|
-
telegrinder/api/__init__.py,sha256=3ud8t2bfULV25IILu3CYYxr2_caa5B7We_l2tft_IOM,124
|
|
3
|
-
telegrinder/api/abc.py,sha256=oxNx2PSlL6hkPuXet_rw_TJGOrbdS57h4Rq7DN_L5NM,1085
|
|
4
|
-
telegrinder/api/api.py,sha256=LvR3_1zKKDQEClbmHUww3Jx1_Yar0qjmf6gU1r5WsXQ,1993
|
|
5
|
-
telegrinder/api/error.py,sha256=Aca9HkvHI7hitHCd9_FObzeF5iGxLkGGYtfIoIpOQaY,162
|
|
6
|
-
telegrinder/api/response.py,sha256=sna3gCo9T9ck5rugN7ptTFUwimrDAejb42DvbL9NNTA,463
|
|
7
|
-
telegrinder/bot/__init__.py,sha256=BK31L1pLKg6p3T8G0ZkOtCUEeYELpOfEKLVHIS6bHLk,405
|
|
8
|
-
telegrinder/bot/bot.py,sha256=lY7dXHLOgY3Z2Mi4RKD94RW0DpbLorilmUfYJYtDhFU,1802
|
|
9
|
-
telegrinder/bot/cute_types/__init__.py,sha256=s0otW5gfNLBYKFgvInymzdu-BE_RwZO77vpEMXx1ICA,121
|
|
10
|
-
telegrinder/bot/cute_types/callback_query.py,sha256=MiLutMHNgoTAF11orr1N6b2g95NmvlaUnRfc_4ORviQ,766
|
|
11
|
-
telegrinder/bot/cute_types/inline_query.py,sha256=0jmCKIJM3Jerc65R81Fnm4VzFCyJk6v81VOZNSgvaw0,1034
|
|
12
|
-
telegrinder/bot/cute_types/message.py,sha256=0_cv0WEK5b99Q45rId0nwQHEtMZ7dmWVa5T5al4RQNE,2545
|
|
13
|
-
telegrinder/bot/dispatch/__init__.py,sha256=59KKzW9JFMVD03IeLCRgILHNPzDd0hv8sKxu-9qvrBA,240
|
|
14
|
-
telegrinder/bot/dispatch/abc.py,sha256=A2pXBQhbR3SlKqI-efAgKT_9kZdKXbFRuFX3xKC6-tA,448
|
|
15
|
-
telegrinder/bot/dispatch/dispatch.py,sha256=MPpKW0QcK-16PKf67hm6f7W1XdQcPUJEZ23V-OaxeOY,2931
|
|
16
|
-
telegrinder/bot/dispatch/handler/__init__.py,sha256=CNqgXHxt4Lqkp-gKtehNQ83zamsjPozi_Q8p51OcQ_k,58
|
|
17
|
-
telegrinder/bot/dispatch/handler/abc.py,sha256=cgzahm7YBZQ5HWdxDioF_iQoY4JFnWmxUppjNW7CXN0,411
|
|
18
|
-
telegrinder/bot/dispatch/handler/func.py,sha256=RgrzXi1mr3I4C5CnFmgUGzeB1yICCtT769d0AI45CA8,1576
|
|
19
|
-
telegrinder/bot/dispatch/middleware/__init__.py,sha256=X1zpKTP3llOu8xgZ8uWRIJOFJtEPFpKnE1V8lsPuWWE,31
|
|
20
|
-
telegrinder/bot/dispatch/middleware/abc.py,sha256=UYvk2xPNde6FQUYY1MWh4EmNZNskUAkHZrg1qMf7W_w,268
|
|
21
|
-
telegrinder/bot/dispatch/process.py,sha256=FJUs7rmjtuzgTYe7iocKwG8IBd8RX60lhal8j2KnOTs,2000
|
|
22
|
-
telegrinder/bot/dispatch/view/__init__.py,sha256=6nhvURPwwhBYHLV_i8HdaXFvqu1pdrM_ltoIO-eiieA,146
|
|
23
|
-
telegrinder/bot/dispatch/view/abc.py,sha256=pr-p1xzUJwGveI4T-0IgSxCXKHivV_-i4cAfqVlNCy4,389
|
|
24
|
-
telegrinder/bot/dispatch/view/callback_query.py,sha256=2mr8UT6Pc-wtYuGZwYX8hYvm3-AR-wOaRReR1KwKwbA,1803
|
|
25
|
-
telegrinder/bot/dispatch/view/inline_query.py,sha256=4-o-kUWkBCG4IddjF_8m0YBf1yw0t8ZIAiWtir7YVPE,1769
|
|
26
|
-
telegrinder/bot/dispatch/view/message.py,sha256=ZITD-nS71eQ5mKCmPcMspABXThdkISU6a9zAsophfyg,2043
|
|
27
|
-
telegrinder/bot/dispatch/waiter.py,sha256=HgIU3-v-NTR3V8EHrwg3EGbMX1KLHAb-fwQzF1Elvus,990
|
|
28
|
-
telegrinder/bot/polling/__init__.py,sha256=aasMlIgjhwYcw1uhrWdMtZ8M9xHPwINv9fcHCR_lxnA,57
|
|
29
|
-
telegrinder/bot/polling/abc.py,sha256=yvFNnk470gvbyWF9dfM1n53N990trUAyf8sbHuilrJg,401
|
|
30
|
-
telegrinder/bot/polling/polling.py,sha256=MmOE7wzRJfGVzACanddq1KJj1ZdjXWi52EwWBeLvQc8,2040
|
|
31
|
-
telegrinder/bot/rules/__init__.py,sha256=eOmxivOjPD1aEcEtu7wwjHaXc-OlF1yRhGSjv2ljYSo,428
|
|
32
|
-
telegrinder/bot/rules/abc.py,sha256=WgLod1BluMoZdsXvEYOtyE0n7bIUd4eXZ1Ifnlwz9ug,3044
|
|
33
|
-
telegrinder/bot/rules/callback_data.py,sha256=3OK0YihQwU2G018MSLSsrKI7Gu69LkI7V3CWG6Eh8Io,1763
|
|
34
|
-
telegrinder/bot/rules/func.py,sha256=DM247BG0jBGJTrX4o7no_8__qFu5Ut1DtNu6YDeGRkA,859
|
|
35
|
-
telegrinder/bot/rules/fuzzy.py,sha256=y4wXLAFslDDIfzuwWg1P1wOtsGR9C5_xFJ8U8aXHEbc,675
|
|
36
|
-
telegrinder/bot/rules/integer.py,sha256=YSUAwZ3n5TaiLgXxZ3Wd5KaqTbjYbFwbJqDE_Yxo8vU,419
|
|
37
|
-
telegrinder/bot/rules/is_from.py,sha256=heXO21MlI1IM0uxggX8sCIA_zjUYOf2qVqHpXjFIJm0,306
|
|
38
|
-
telegrinder/bot/rules/markup.py,sha256=Hz1HZ_0LsKLjjpBJR-wocjE2dJmzbiVGTKf8d5-9OCg,1017
|
|
39
|
-
telegrinder/bot/rules/regex.py,sha256=jJOqIcpk5MqXLymQdAB_C6SAy4j37xK0N5HamZ9uh2k,877
|
|
40
|
-
telegrinder/bot/rules/text.py,sha256=feum_D04hxO2yqG0Wg5hBREj5B_2d1g0WM-OADNCJk4,759
|
|
41
|
-
telegrinder/bot/scenario/__init__.py,sha256=tOl23Yss8cpzkbZfqJqJ6YGuh5PqL70hk8ZiY1MH0AY,93
|
|
42
|
-
telegrinder/bot/scenario/abc.py,sha256=ad3VxvclZyEVuKKtunHKtxj9UiwNAmkyiC1JjOOUvS4,289
|
|
43
|
-
telegrinder/bot/scenario/checkbox.py,sha256=m5EUMMOiuVL0l_CwSCRATfsPaH0BZiN8OEBbtX34nuQ,3586
|
|
44
|
-
telegrinder/bot/scenario/choice.py,sha256=C5oK6R37pUGz2sZiyNcErdBnjJpRo3RUA7yowSFSr-k,1321
|
|
45
|
-
telegrinder/client/__init__.py,sha256=YEx_WQAl9r07CE74xNyTUDOE2Da7K_A46jvC9U2zpyc,74
|
|
46
|
-
telegrinder/client/abc.py,sha256=tPgTp2Gcs9mgd6cSeKZegMnUEIgg0puS7nt7cdrseIM,1305
|
|
47
|
-
telegrinder/client/aiohttp.py,sha256=OZgGEPkwOeKveyTtQ8BxaEAZmXhS9XUodfswSFupgyk,3556
|
|
48
|
-
telegrinder/model.py,sha256=hMLn50r_uvGOv4L597zcEQkBF4VrNw1K1T8LqvgV-WY,1538
|
|
49
|
-
telegrinder/modules.py,sha256=ReQC1RXemqnRth7St4q9tBa-KZOYASjdsB9cYAAxheM,2286
|
|
50
|
-
telegrinder/result.py,sha256=MfNCEHabXU5XEyD27K7Mh_EWgju11kec2HmpRZU08L8,904
|
|
51
|
-
telegrinder/rules.py,sha256=O1cDQnG75wu7MULiih3gyKs7O07XQSPxvZRQVjHznLk,25
|
|
52
|
-
telegrinder/tools/__init__.py,sha256=YLSR6IUUoLE9DAuwTKSj2S6ztHn_d_g76oicG4EAdKA,317
|
|
53
|
-
telegrinder/tools/buttons.py,sha256=yWedpA-hFBCm1pcdwbA7jFm8zrTtQy-WDWrLsUq-OHg,1462
|
|
54
|
-
telegrinder/tools/formatting/__init__.py,sha256=-Rd9rWkRYND3TV2oWmS88KuClV9MMbwMI9LVD_Xbe_g,102
|
|
55
|
-
telegrinder/tools/formatting/abc.py,sha256=8sFL2h6hHGfSasnX5QvnPoH2NMLQeJa2MocVUATNGzE,958
|
|
56
|
-
telegrinder/tools/formatting/html.py,sha256=ogLTY3PA-R02hh4yL-cMQ4glCNy2zfwsWyEO2wxwzNs,1606
|
|
57
|
-
telegrinder/tools/formatting/markdown.py,sha256=UZQVD354ez1yFblwozha0Jl5YKtchB3CHSXIVu6Ek84,1833
|
|
58
|
-
telegrinder/tools/kb_set/__init__.py,sha256=91sEn_9526CxNIuwopHeJD4k4iD0XxvLOFV7t5z_iEg,86
|
|
59
|
-
telegrinder/tools/kb_set/base.py,sha256=Bp0cJGMVIqbBsmLeelBwZCBz-kicht4cwMN05kTNBO4,191
|
|
60
|
-
telegrinder/tools/kb_set/yaml.py,sha256=xE9Ojjl21cHHAsp7JmmjYlRFYkJ9E_I85JxLT1GGqNQ,1830
|
|
61
|
-
telegrinder/tools/keyboard.py,sha256=SZia2MxB832JMosT0NAs9TURBQYIN92fefVCgGP_LS4,3053
|
|
62
|
-
telegrinder/tools/magic.py,sha256=r_ygCQFMiEi3-Yl6t3ujdcnI0Ptxd5WpkENZ6HL5rgA,1201
|
|
63
|
-
telegrinder/tools/parse_mode.py,sha256=f51IlWqrdt-t-XEezceyWQKQ1noKamyyp92PxT-JPHQ,147
|
|
64
|
-
telegrinder/typegen/__init__.py,sha256=FO3OYY109WQ2xvy2ZNTDkqabrw2C0v6zBUPGLXxrOwM,39
|
|
65
|
-
telegrinder/typegen/__main__.py,sha256=d6uusZavfkzf7RUbb5QLTzYuyRHayYdQnqj0ooBGhVo,60
|
|
66
|
-
telegrinder/typegen/nicification.py,sha256=ifp0mdGYWSPeesfrgPFRpv1rqOx3KnjjSeWk-Zr54_0,767
|
|
67
|
-
telegrinder/typegen/schema_generator.py,sha256=H29yB5aiFSkwhf50w9ZycIfJNEKKrbZjDb07JULlxuY,7930
|
|
68
|
-
telegrinder/types/__init__.py,sha256=RvjDKdmzKFNGZycud8Pn2y3VBtbWy2ZqZVDOJKYWsi8,40
|
|
69
|
-
telegrinder/types/methods.py,sha256=zjsf6K0HQMengti907i8DlJY8Y2y4LJ8WW7_bNbanCQ,53104
|
|
70
|
-
telegrinder/types/objects.py,sha256=yPQnMQYIRdXmFpBi_IJYlxjz9hZy3OF1-VGnRWvLcDE,77410
|
|
71
|
-
telegrinder-0.1.dev19.dist-info/LICENSE,sha256=ZJrZvGo1MQqQN2M-pPrYlpSmquLFja0i6-liRLlbKGo,1063
|
|
72
|
-
telegrinder-0.1.dev19.dist-info/METADATA,sha256=ZuFGSb1xOX7XKLJzjOHTi4FdAbx7cdCDWK0CN6BNFeE,818
|
|
73
|
-
telegrinder-0.1.dev19.dist-info/WHEEL,sha256=kLuE8m1WYU0Ig0_YEGrXyTtiJvKPpLpDEiChiNyei5Y,88
|
|
74
|
-
telegrinder-0.1.dev19.dist-info/RECORD,,
|