telegrinder 0.1.dev167__tar.gz → 0.1.dev169__tar.gz
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-0.1.dev167 → telegrinder-0.1.dev169}/LICENSE +1 -1
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/PKG-INFO +9 -8
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/pyproject.toml +20 -13
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/readme.md +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/__init__.py +9 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/__init__.py +7 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/base.py +12 -14
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/callback_query.py +55 -44
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/chat_join_request.py +8 -7
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/chat_member_updated.py +23 -17
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/inline_query.py +1 -1
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/message.py +331 -183
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/update.py +4 -8
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/utils.py +1 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/__init__.py +2 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/abc.py +4 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/context.py +9 -4
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/dispatch.py +33 -30
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/handler/func.py +33 -12
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/handler/message_reply.py +6 -3
- telegrinder-0.1.dev169/telegrinder/bot/dispatch/middleware/abc.py +16 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/process.py +40 -13
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/return_manager/abc.py +12 -12
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/return_manager/callback_query.py +1 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/return_manager/inline_query.py +1 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/abc.py +74 -31
- telegrinder-0.1.dev169/telegrinder/bot/dispatch/view/box.py +118 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/message.py +1 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/raw.py +6 -6
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/waiter_machine/__init__.py +2 -1
- telegrinder-0.1.dev169/telegrinder/bot/dispatch/waiter_machine/machine.py +173 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/waiter_machine/middleware.py +31 -7
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/waiter_machine/short_state.py +26 -7
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/polling/polling.py +4 -4
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/__init__.py +9 -6
- telegrinder-0.1.dev169/telegrinder/bot/rules/abc.py +188 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/adapter/__init__.py +4 -1
- telegrinder-0.1.dev169/telegrinder/bot/rules/adapter/abc.py +26 -0
- telegrinder-0.1.dev169/telegrinder/bot/rules/adapter/errors.py +4 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/adapter/event.py +14 -9
- telegrinder-0.1.dev169/telegrinder/bot/rules/adapter/node.py +42 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/callback_data.py +13 -15
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/chat_join.py +3 -2
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/command.py +26 -14
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/enum_text.py +5 -5
- telegrinder-0.1.dev169/telegrinder/bot/rules/func.py +26 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/fuzzy.py +5 -7
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/inline.py +4 -5
- telegrinder-0.1.dev169/telegrinder/bot/rules/integer.py +21 -0
- telegrinder-0.1.dev169/telegrinder/bot/rules/is_from.py +127 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/markup.py +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/mention.py +4 -4
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/message.py +1 -1
- telegrinder-0.1.dev169/telegrinder/bot/rules/node.py +27 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/regex.py +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/rule_enum.py +4 -4
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/start.py +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/text.py +9 -13
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/update.py +4 -4
- telegrinder-0.1.dev169/telegrinder/bot/scenario/__init__.py +5 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/scenario/checkbox.py +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/scenario/choice.py +5 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/model.py +49 -15
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/modules.py +14 -6
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/msgspec_utils.py +8 -17
- telegrinder-0.1.dev169/telegrinder/node/__init__.py +49 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/attachment.py +13 -9
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/base.py +27 -14
- telegrinder-0.1.dev169/telegrinder/node/callback_query.py +18 -0
- telegrinder-0.1.dev169/telegrinder/node/command.py +29 -0
- telegrinder-0.1.dev169/telegrinder/node/composer.py +160 -0
- telegrinder-0.1.dev169/telegrinder/node/me.py +14 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/message.py +2 -4
- telegrinder-0.1.dev169/telegrinder/node/polymorphic.py +44 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/rule.py +26 -22
- telegrinder-0.1.dev169/telegrinder/node/scope.py +36 -0
- telegrinder-0.1.dev169/telegrinder/node/source.py +61 -0
- telegrinder-0.1.dev169/telegrinder/node/text.py +21 -0
- telegrinder-0.1.dev169/telegrinder/node/tools/__init__.py +3 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/tools/generator.py +6 -6
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/__init__.py +9 -14
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/buttons.py +23 -17
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/error_handler/error_handler.py +11 -14
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/formatting/__init__.py +0 -6
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/formatting/html.py +10 -12
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/formatting/links.py +0 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/formatting/spec_html_formats.py +0 -11
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/global_context/abc.py +1 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/global_context/global_context.py +6 -16
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/i18n/simple.py +1 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/kb_set/yaml.py +1 -2
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/keyboard.py +7 -8
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/limited_dict.py +13 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/loop_wrapper/loop_wrapper.py +6 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/magic.py +27 -5
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/types/__init__.py +20 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/types/enums.py +37 -31
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/types/methods.py +613 -401
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/types/objects.py +1151 -757
- telegrinder-0.1.dev167/telegrinder/bot/dispatch/composition.py +0 -88
- telegrinder-0.1.dev167/telegrinder/bot/dispatch/middleware/abc.py +0 -16
- telegrinder-0.1.dev167/telegrinder/bot/dispatch/view/box.py +0 -102
- telegrinder-0.1.dev167/telegrinder/bot/dispatch/waiter_machine/machine.py +0 -137
- telegrinder-0.1.dev167/telegrinder/bot/rules/abc.py +0 -111
- telegrinder-0.1.dev167/telegrinder/bot/rules/adapter/abc.py +0 -21
- telegrinder-0.1.dev167/telegrinder/bot/rules/adapter/errors.py +0 -5
- telegrinder-0.1.dev167/telegrinder/bot/rules/func.py +0 -26
- telegrinder-0.1.dev167/telegrinder/bot/rules/integer.py +0 -19
- telegrinder-0.1.dev167/telegrinder/bot/rules/is_from.py +0 -155
- telegrinder-0.1.dev167/telegrinder/bot/scenario/__init__.py +0 -5
- telegrinder-0.1.dev167/telegrinder/node/__init__.py +0 -31
- telegrinder-0.1.dev167/telegrinder/node/composer.py +0 -71
- telegrinder-0.1.dev167/telegrinder/node/source.py +0 -34
- telegrinder-0.1.dev167/telegrinder/node/text.py +0 -15
- telegrinder-0.1.dev167/telegrinder/node/tools/__init__.py +0 -3
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/api/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/api/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/api/api.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/api/error.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/api/response.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/bot.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/handler/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/handler/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/middleware/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/return_manager/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/return_manager/message.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/callback_query.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/chat_join_request.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/chat_member.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/dispatch/view/inline_query.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/polling/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/polling/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/adapter/raw_update.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/rules/message_entities.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/scenario/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/client/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/client/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/client/aiohttp.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/msgspec_json.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/container.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/node/update.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/rules.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/error_handler/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/error_handler/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/error_handler/error.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/global_context/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/global_context/telegrinder_ctx.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/i18n/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/i18n/base.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/i18n/middleware/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/i18n/middleware/base.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/kb_set/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/kb_set/base.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/loop_wrapper/__init__.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/loop_wrapper/abc.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/tools/parse_mode.py +0 -0
- {telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/verification_utils.py +0 -0
|
@@ -19,4 +19,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
19
19
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
20
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
21
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
22
|
+
SOFTWARE.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: telegrinder
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.dev169
|
|
4
|
+
Summary: Modern visionary telegram bot framework.
|
|
5
5
|
Home-page: https://github.com/timoniq/telegrinder
|
|
6
6
|
License: MIT
|
|
7
|
-
Keywords: asyncio,api schema,async,bot building,bot api,custom rules,telegram,telegram bot api framework,telegrinder,middleware,composition
|
|
7
|
+
Keywords: asyncio,api schema,async,bot building,bot api,custom rules,telegram,telegram bot api framework,telegrinder framework,middleware,composition,framework,telegrinder,waiter machine
|
|
8
8
|
Author: timoniq
|
|
9
9
|
Author-email: tesseradecades@mail.ru
|
|
10
10
|
Maintainer: luwqz1
|
|
@@ -30,6 +30,7 @@ Requires-Dist: msgspec (>=0.18.6,<0.19.0)
|
|
|
30
30
|
Requires-Dist: requests (>=2.28.1,<3.0.0)
|
|
31
31
|
Requires-Dist: typing-extensions (>=4.10.0,<5.0.0)
|
|
32
32
|
Requires-Dist: vbml (>=1.1.post1,<2.0)
|
|
33
|
+
Project-URL: Bug Tracker, https://github.com/timoniq/telegrinder/issues
|
|
33
34
|
Project-URL: Repository, https://github.com/timoniq/telegrinder
|
|
34
35
|
Description-Content-Type: text/markdown
|
|
35
36
|
|
|
@@ -49,23 +50,23 @@ Still in development.
|
|
|
49
50
|
|
|
50
51
|
Install using pip:
|
|
51
52
|
|
|
52
|
-
```
|
|
53
|
+
```console
|
|
53
54
|
pip install telegrinder
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
Using poetry:
|
|
57
58
|
|
|
58
|
-
```
|
|
59
|
+
```console
|
|
59
60
|
poetry add telegrinder
|
|
60
61
|
```
|
|
61
62
|
|
|
62
63
|
Install from github:
|
|
63
64
|
|
|
64
|
-
```
|
|
65
|
+
```console
|
|
65
66
|
pip install -U https://github.com/timoniq/telegrinder/archive/dev.zip
|
|
66
67
|
```
|
|
67
68
|
|
|
68
|
-
```
|
|
69
|
+
```console
|
|
69
70
|
poetry add git+https://github.com/timoniq/telegrinder.git#dev
|
|
70
71
|
```
|
|
71
72
|
|
|
@@ -104,7 +105,7 @@ Join our [telegram forum](https://t.me/botoforum).
|
|
|
104
105
|
|
|
105
106
|
# License
|
|
106
107
|
|
|
107
|
-
Telegrinder is [MIT licensed](./LICENSE)
|
|
108
|
+
Telegrinder is [MIT licensed](./LICENSE)\
|
|
108
109
|
Copyright © 2022-2024 [timoniq](https://github.com/timoniq)\
|
|
109
110
|
Copyright © 2024 [luwqz1](https://github.com/luwqz1)
|
|
110
111
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "telegrinder"
|
|
3
|
-
version = "0.1.
|
|
4
|
-
description = "
|
|
3
|
+
version = "0.1.dev169"
|
|
4
|
+
description = "Modern visionary telegram bot framework."
|
|
5
5
|
authors = ["timoniq <tesseradecades@mail.ru>"]
|
|
6
6
|
maintainers = ["luwqz1 <howluwqz1@gmail.com>"]
|
|
7
7
|
license = "MIT"
|
|
@@ -17,9 +17,12 @@ keywords = [
|
|
|
17
17
|
"custom rules",
|
|
18
18
|
"telegram",
|
|
19
19
|
"telegram bot api framework",
|
|
20
|
-
"telegrinder",
|
|
20
|
+
"telegrinder framework",
|
|
21
21
|
"middleware",
|
|
22
22
|
"composition",
|
|
23
|
+
"framework",
|
|
24
|
+
"telegrinder",
|
|
25
|
+
"waiter machine"
|
|
23
26
|
]
|
|
24
27
|
classifiers = [
|
|
25
28
|
"Environment :: Console",
|
|
@@ -31,6 +34,9 @@ classifiers = [
|
|
|
31
34
|
"Typing :: Typed",
|
|
32
35
|
]
|
|
33
36
|
|
|
37
|
+
[tool.poetry.urls]
|
|
38
|
+
"Bug Tracker" = "https://github.com/timoniq/telegrinder/issues"
|
|
39
|
+
|
|
34
40
|
[tool.poetry.dependencies]
|
|
35
41
|
python = "^3.11"
|
|
36
42
|
aiohttp = "^3.8.1"
|
|
@@ -46,30 +52,28 @@ typing-extensions = "^4.10.0"
|
|
|
46
52
|
fntypes = "^0.1.2.post1"
|
|
47
53
|
|
|
48
54
|
[tool.poetry.group.dev.dependencies]
|
|
55
|
+
ruff = "^0.5.0"
|
|
56
|
+
basedpyright = "^1.12.1"
|
|
57
|
+
sort-all = "1.2.0"
|
|
49
58
|
pytest = "^8.0.0"
|
|
50
59
|
pytest-asyncio = "^0.23.5"
|
|
51
|
-
pytest-cov = "^
|
|
60
|
+
pytest-cov = "^5.0.0"
|
|
52
61
|
pytest-mock = "^3.10.0"
|
|
53
62
|
|
|
54
|
-
[tool.poetry.dev-dependencies]
|
|
55
|
-
|
|
56
63
|
[build-system]
|
|
57
64
|
requires = ["poetry-core>=1.0.0"]
|
|
58
65
|
build-backend = "poetry.core.masonry.api"
|
|
59
66
|
|
|
60
67
|
[tool.ruff]
|
|
61
|
-
line-length =
|
|
68
|
+
line-length = 110
|
|
62
69
|
target-version = "py311"
|
|
63
70
|
lint.select = ["I", "N", "ANN", "COM", "YTT", "TCH", "SIM"]
|
|
64
71
|
lint.ignore = [
|
|
65
72
|
"ANN001", "ANN002", "ANN003", "ANN101", "ANN102", "ANN201", "ANN202",
|
|
66
|
-
"ANN204", "ANN206", "ANN401", "COM812", "N818", "TCH001", "
|
|
73
|
+
"ANN204", "ANN206", "ANN401", "COM812", "N805", "N818", "TCH001", "TCH002",
|
|
74
|
+
"TCH004"
|
|
67
75
|
]
|
|
68
76
|
|
|
69
|
-
[tool.black]
|
|
70
|
-
line-length = 90
|
|
71
|
-
target-version = ["py311"]
|
|
72
|
-
|
|
73
77
|
[tool.pytest.ini_options]
|
|
74
78
|
asyncio_mode = "auto"
|
|
75
79
|
|
|
@@ -77,4 +81,7 @@ asyncio_mode = "auto"
|
|
|
77
81
|
"__init__.py" = ["F401", "F403"]
|
|
78
82
|
|
|
79
83
|
[tool.ruff.lint.flake8-quotes]
|
|
80
|
-
docstring-quotes = "double"
|
|
84
|
+
docstring-quotes = "double"
|
|
85
|
+
|
|
86
|
+
[tool.pyright]
|
|
87
|
+
typeCheckingMode = "basic"
|
|
@@ -14,23 +14,23 @@ Still in development.
|
|
|
14
14
|
|
|
15
15
|
Install using pip:
|
|
16
16
|
|
|
17
|
-
```
|
|
17
|
+
```console
|
|
18
18
|
pip install telegrinder
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Using poetry:
|
|
22
22
|
|
|
23
|
-
```
|
|
23
|
+
```console
|
|
24
24
|
poetry add telegrinder
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Install from github:
|
|
28
28
|
|
|
29
|
-
```
|
|
29
|
+
```console
|
|
30
30
|
pip install -U https://github.com/timoniq/telegrinder/archive/dev.zip
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
```
|
|
33
|
+
```console
|
|
34
34
|
poetry add git+https://github.com/timoniq/telegrinder.git#dev
|
|
35
35
|
```
|
|
36
36
|
|
|
@@ -69,6 +69,6 @@ Join our [telegram forum](https://t.me/botoforum).
|
|
|
69
69
|
|
|
70
70
|
# License
|
|
71
71
|
|
|
72
|
-
Telegrinder is [MIT licensed](./LICENSE)
|
|
72
|
+
Telegrinder is [MIT licensed](./LICENSE)\
|
|
73
73
|
Copyright © 2022-2024 [timoniq](https://github.com/timoniq)\
|
|
74
74
|
Copyright © 2024 [luwqz1](https://github.com/luwqz1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Telegrinder
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Modern visionary telegram bot framework.
|
|
4
4
|
|
|
5
5
|
* Type hinted
|
|
6
6
|
* Customizable and extensible
|
|
@@ -51,16 +51,20 @@ from .bot import (
|
|
|
51
51
|
BaseView,
|
|
52
52
|
CallbackQueryCute,
|
|
53
53
|
CallbackQueryReturnManager,
|
|
54
|
+
CallbackQueryRule,
|
|
54
55
|
CallbackQueryView,
|
|
55
56
|
ChatJoinRequestCute,
|
|
57
|
+
ChatJoinRequestRule,
|
|
56
58
|
ChatJoinRequestView,
|
|
57
59
|
ChatMemberUpdatedCute,
|
|
58
60
|
ChatMemberView,
|
|
59
61
|
Checkbox,
|
|
62
|
+
Choice,
|
|
60
63
|
Dispatch,
|
|
61
64
|
FuncHandler,
|
|
62
65
|
InlineQueryCute,
|
|
63
66
|
InlineQueryReturnManager,
|
|
67
|
+
InlineQueryRule,
|
|
64
68
|
MessageCute,
|
|
65
69
|
MessageReplyHandler,
|
|
66
70
|
MessageReturnManager,
|
|
@@ -69,7 +73,6 @@ from .bot import (
|
|
|
69
73
|
Polling,
|
|
70
74
|
RawEventView,
|
|
71
75
|
ShortState,
|
|
72
|
-
SingleChoice,
|
|
73
76
|
Telegrinder,
|
|
74
77
|
UpdateCute,
|
|
75
78
|
ViewBox,
|
|
@@ -152,6 +155,9 @@ __all__ = (
|
|
|
152
155
|
"CallbackQueryView",
|
|
153
156
|
"ChatJoinRequest",
|
|
154
157
|
"ChatJoinRequestCute",
|
|
158
|
+
"CallbackQueryRule",
|
|
159
|
+
"ChatJoinRequestRule",
|
|
160
|
+
"InlineQueryRule",
|
|
155
161
|
"ChatJoinRequestView",
|
|
156
162
|
"ChatMemberUpdated",
|
|
157
163
|
"ChatMemberUpdatedCute",
|
|
@@ -190,7 +196,7 @@ __all__ = (
|
|
|
190
196
|
"ShortState",
|
|
191
197
|
"SimpleI18n",
|
|
192
198
|
"SimpleTranslator",
|
|
193
|
-
"
|
|
199
|
+
"Choice",
|
|
194
200
|
"Telegrinder",
|
|
195
201
|
"Token",
|
|
196
202
|
"Update",
|
|
@@ -22,7 +22,6 @@ from .dispatch import (
|
|
|
22
22
|
CallbackQueryView,
|
|
23
23
|
ChatJoinRequestView,
|
|
24
24
|
ChatMemberView,
|
|
25
|
-
CompositionDispatch,
|
|
26
25
|
Context,
|
|
27
26
|
Dispatch,
|
|
28
27
|
FuncHandler,
|
|
@@ -35,11 +34,12 @@ from .dispatch import (
|
|
|
35
34
|
ShortState,
|
|
36
35
|
ViewBox,
|
|
37
36
|
WaiterMachine,
|
|
37
|
+
clear_wm_storage_worker,
|
|
38
38
|
register_manager,
|
|
39
39
|
)
|
|
40
40
|
from .polling import ABCPolling, Polling
|
|
41
|
-
from .rules import ABCRule, CallbackQueryRule, MessageRule
|
|
42
|
-
from .scenario import ABCScenario, Checkbox,
|
|
41
|
+
from .rules import ABCRule, CallbackQueryRule, ChatJoinRequestRule, InlineQueryRule, MessageRule
|
|
42
|
+
from .scenario import ABCScenario, Checkbox, Choice
|
|
43
43
|
|
|
44
44
|
__all__ = (
|
|
45
45
|
"ABCDispatch",
|
|
@@ -59,12 +59,13 @@ __all__ = (
|
|
|
59
59
|
"CallbackQueryReturnManager",
|
|
60
60
|
"CallbackQueryRule",
|
|
61
61
|
"CallbackQueryView",
|
|
62
|
+
"ChatJoinRequestRule",
|
|
63
|
+
"InlineQueryRule",
|
|
62
64
|
"ChatJoinRequestCute",
|
|
63
65
|
"ChatJoinRequestView",
|
|
64
66
|
"ChatMemberUpdatedCute",
|
|
65
67
|
"ChatMemberView",
|
|
66
68
|
"Checkbox",
|
|
67
|
-
"CompositionDispatch",
|
|
68
69
|
"Context",
|
|
69
70
|
"Dispatch",
|
|
70
71
|
"FuncHandler",
|
|
@@ -79,10 +80,11 @@ __all__ = (
|
|
|
79
80
|
"Polling",
|
|
80
81
|
"RawEventView",
|
|
81
82
|
"ShortState",
|
|
82
|
-
"
|
|
83
|
+
"Choice",
|
|
83
84
|
"Telegrinder",
|
|
84
85
|
"UpdateCute",
|
|
85
86
|
"ViewBox",
|
|
86
87
|
"WaiterMachine",
|
|
87
88
|
"register_manager",
|
|
89
|
+
"clear_wm_storage_worker",
|
|
88
90
|
)
|
|
@@ -9,28 +9,28 @@ from telegrinder.api import ABCAPI, API
|
|
|
9
9
|
from telegrinder.model import Model, get_params
|
|
10
10
|
|
|
11
11
|
F = typing.TypeVar("F", bound=typing.Callable[..., typing.Any])
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
Cute = typing.TypeVar("Cute", bound="BaseCute")
|
|
13
|
+
Update = typing.TypeVar("Update", bound=Model)
|
|
14
14
|
|
|
15
15
|
Executor: typing.TypeAlias = typing.Callable[
|
|
16
|
-
[
|
|
16
|
+
[Cute, str, dict[str, typing.Any]],
|
|
17
17
|
typing.Awaitable[Result[typing.Any, typing.Any]],
|
|
18
18
|
]
|
|
19
19
|
|
|
20
20
|
if typing.TYPE_CHECKING:
|
|
21
21
|
|
|
22
|
-
class BaseCute(Model, typing.Generic[
|
|
22
|
+
class BaseCute(Model, typing.Generic[Update]):
|
|
23
23
|
api: ABCAPI
|
|
24
24
|
|
|
25
25
|
@classmethod
|
|
26
|
-
def from_update(cls, update:
|
|
26
|
+
def from_update(cls, update: Update, bound_api: ABCAPI) -> typing.Self: ...
|
|
27
27
|
|
|
28
28
|
@property
|
|
29
29
|
def ctx_api(self) -> API: ...
|
|
30
30
|
|
|
31
31
|
else:
|
|
32
32
|
|
|
33
|
-
class BaseCute(typing.Generic[
|
|
33
|
+
class BaseCute(typing.Generic[Update]):
|
|
34
34
|
@classmethod
|
|
35
35
|
def from_update(cls, update, bound_api):
|
|
36
36
|
return cls(**update.to_dict(), api=bound_api)
|
|
@@ -47,13 +47,13 @@ else:
|
|
|
47
47
|
|
|
48
48
|
def compose_method_params(
|
|
49
49
|
params: dict[str, typing.Any],
|
|
50
|
-
update:
|
|
50
|
+
update: Cute,
|
|
51
51
|
*,
|
|
52
52
|
default_params: set[str | tuple[str, str]] | None = None,
|
|
53
|
-
validators: dict[str, typing.Callable[[
|
|
53
|
+
validators: dict[str, typing.Callable[[Cute], bool]] | None = None,
|
|
54
54
|
) -> dict[str, typing.Any]:
|
|
55
55
|
"""Compose method `params` from `update` by `default_params` and `validators`.
|
|
56
|
-
|
|
56
|
+
|
|
57
57
|
:param params: Method params.
|
|
58
58
|
:param update: Update object.
|
|
59
59
|
:param default_params: Default params. \
|
|
@@ -84,21 +84,19 @@ def compose_method_params(
|
|
|
84
84
|
def shortcut(
|
|
85
85
|
method_name: str,
|
|
86
86
|
*,
|
|
87
|
-
executor: Executor[
|
|
87
|
+
executor: Executor[Cute] | None = None,
|
|
88
88
|
custom_params: set[str] | None = None,
|
|
89
89
|
):
|
|
90
90
|
def wrapper(func: F) -> F:
|
|
91
91
|
@wraps(func)
|
|
92
92
|
async def inner(
|
|
93
|
-
self:
|
|
93
|
+
self: Cute,
|
|
94
94
|
*args: typing.Any,
|
|
95
95
|
**kwargs: typing.Any,
|
|
96
96
|
) -> typing.Any:
|
|
97
97
|
if executor is None:
|
|
98
98
|
return await func(self, *args, **kwargs)
|
|
99
|
-
signature_params = {
|
|
100
|
-
k: p for k, p in inspect.signature(func).parameters.items() if k != "self"
|
|
101
|
-
}
|
|
99
|
+
signature_params = {k: p for k, p in inspect.signature(func).parameters.items() if k != "self"}
|
|
102
100
|
params: dict[str, typing.Any] = {}
|
|
103
101
|
index = 0
|
|
104
102
|
|
{telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/callback_query.py
RENAMED
|
@@ -9,6 +9,7 @@ from telegrinder.model import get_params
|
|
|
9
9
|
from telegrinder.msgspec_utils import Option, decoder
|
|
10
10
|
from telegrinder.types import (
|
|
11
11
|
CallbackQuery,
|
|
12
|
+
Chat,
|
|
12
13
|
InlineKeyboardMarkup,
|
|
13
14
|
InputFile,
|
|
14
15
|
InputMedia,
|
|
@@ -44,7 +45,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
44
45
|
by the bot with the callback button that originated the query."""
|
|
45
46
|
|
|
46
47
|
return self.message.map(
|
|
47
|
-
lambda m: m.only().map(lambda m: m.is_topic_message.unwrap_or(False)).unwrap_or(False)
|
|
48
|
+
lambda m: m.only().map(lambda m: m.is_topic_message.unwrap_or(False)).unwrap_or(False),
|
|
48
49
|
)
|
|
49
50
|
|
|
50
51
|
@property
|
|
@@ -54,12 +55,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
54
55
|
This will be present if the message is sent
|
|
55
56
|
by the bot with the callback button that originated the query."""
|
|
56
57
|
|
|
57
|
-
return (
|
|
58
|
-
self.message.unwrap()
|
|
59
|
-
.only()
|
|
60
|
-
.map(lambda m: m.message_thread_id.unwrap())
|
|
61
|
-
.cast(Some, Nothing)
|
|
62
|
-
)
|
|
58
|
+
return self.message.unwrap().only().map(lambda m: m.message_thread_id.unwrap()).cast(Some, Nothing)
|
|
63
59
|
|
|
64
60
|
@property
|
|
65
61
|
def message_id(self) -> Option[int]:
|
|
@@ -69,6 +65,14 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
69
65
|
|
|
70
66
|
return self.message.map(lambda m: m.v.message_id)
|
|
71
67
|
|
|
68
|
+
@property
|
|
69
|
+
def chat(self) -> Option[Chat]:
|
|
70
|
+
"""Optional. Chat the callback query originated from. This will be present
|
|
71
|
+
if the message is sent by the bot with the callback button that originated the query.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
return self.message.map(lambda m: m.v.chat)
|
|
75
|
+
|
|
72
76
|
def decode_callback_data(self) -> Option[dict[str, typing.Any]]:
|
|
73
77
|
if "cached_callback_data" in self.__dict__:
|
|
74
78
|
return self.__dict__["cached_callback_data"]
|
|
@@ -78,7 +82,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
78
82
|
self.__dict__["cached_callback_data"] = data
|
|
79
83
|
return data
|
|
80
84
|
|
|
81
|
-
@shortcut("answer_callback_query")
|
|
85
|
+
@shortcut("answer_callback_query", custom_params={"callback_query_id"})
|
|
82
86
|
async def answer(
|
|
83
87
|
self,
|
|
84
88
|
text: str | None = None,
|
|
@@ -90,8 +94,8 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
90
94
|
) -> Result[bool, APIError]:
|
|
91
95
|
"""Shortcut `API.answer_callback_query()`, see the [documentation](https://core.telegram.org/bots/api#answercallbackquery)
|
|
92
96
|
|
|
93
|
-
Use this method to send answers to callback queries sent from inline keyboards.
|
|
94
|
-
The answer will be displayed to the user as a notification at the top of the
|
|
97
|
+
Use this method to send answers to callback queries sent from inline keyboards.
|
|
98
|
+
The answer will be displayed to the user as a notification at the top of the
|
|
95
99
|
chat screen or as an alert. On success, True is returned.
|
|
96
100
|
|
|
97
101
|
:param callback_query_id: Unique identifier for the query to be answered.
|
|
@@ -119,7 +123,14 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
119
123
|
|
|
120
124
|
@shortcut(
|
|
121
125
|
"copy_message",
|
|
122
|
-
custom_params={
|
|
126
|
+
custom_params={
|
|
127
|
+
"reply_parameters",
|
|
128
|
+
"message_thread_id",
|
|
129
|
+
"chat_id",
|
|
130
|
+
"message_id",
|
|
131
|
+
"from_chat_id",
|
|
132
|
+
"reply_markup",
|
|
133
|
+
},
|
|
123
134
|
)
|
|
124
135
|
async def copy(
|
|
125
136
|
self,
|
|
@@ -138,11 +149,11 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
138
149
|
) -> Result[MessageId, APIError]:
|
|
139
150
|
"""Shortcut `API.copy_message()`, see the [documentation](https://core.telegram.org/bots/api#copymessage)
|
|
140
151
|
|
|
141
|
-
Use this method to copy messages of any kind. Service messages, giveaway
|
|
142
|
-
messages, giveaway winners messages, and invoice messages can't be copied.
|
|
143
|
-
A quiz poll can be copied only if the value of the field correct_option_id
|
|
144
|
-
is known to the bot. The method is analogous to the method forwardMessage,
|
|
145
|
-
but the copied message doesn't have a link to the original message. Returns
|
|
152
|
+
Use this method to copy messages of any kind. Service messages, giveaway
|
|
153
|
+
messages, giveaway winners messages, and invoice messages can't be copied.
|
|
154
|
+
A quiz poll can be copied only if the value of the field correct_option_id
|
|
155
|
+
is known to the bot. The method is analogous to the method forwardMessage,
|
|
156
|
+
but the copied message doesn't have a link to the original message. Returns
|
|
146
157
|
the MessageId of the sent message on success.
|
|
147
158
|
|
|
148
159
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
@@ -178,7 +189,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
178
189
|
|
|
179
190
|
return await MessageCute.copy(self, **get_params(locals())) # type: ignore
|
|
180
191
|
|
|
181
|
-
@shortcut("delete_message", custom_params={"message_thread_id"})
|
|
192
|
+
@shortcut("delete_message", custom_params={"message_thread_id", "chat_id", "message_id"})
|
|
182
193
|
async def delete(
|
|
183
194
|
self,
|
|
184
195
|
chat_id: int | None = None,
|
|
@@ -188,16 +199,16 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
188
199
|
) -> Result[bool, APIError]:
|
|
189
200
|
"""Shortcut `API.delete_message()`, see the [documentation](https://core.telegram.org/bots/api#deletemessage)
|
|
190
201
|
|
|
191
|
-
Use this method to delete a message, including service messages, with the
|
|
192
|
-
following limitations: - A message can only be deleted if it was sent less
|
|
193
|
-
than 48 hours ago. - Service messages about a supergroup, channel, or forum
|
|
194
|
-
topic creation can't be deleted. - A dice message in a private chat can only
|
|
195
|
-
be deleted if it was sent more than 24 hours ago. - Bots can delete outgoing
|
|
196
|
-
messages in private chats, groups, and supergroups. - Bots can delete incoming
|
|
197
|
-
messages in private chats. - Bots granted can_post_messages permissions
|
|
198
|
-
can delete outgoing messages in channels. - If the bot is an administrator
|
|
199
|
-
of a group, it can delete any message there. - If the bot has can_delete_messages
|
|
200
|
-
permission in a supergroup or a channel, it can delete any message there.
|
|
202
|
+
Use this method to delete a message, including service messages, with the
|
|
203
|
+
following limitations: - A message can only be deleted if it was sent less
|
|
204
|
+
than 48 hours ago. - Service messages about a supergroup, channel, or forum
|
|
205
|
+
topic creation can't be deleted. - A dice message in a private chat can only
|
|
206
|
+
be deleted if it was sent more than 24 hours ago. - Bots can delete outgoing
|
|
207
|
+
messages in private chats, groups, and supergroups. - Bots can delete incoming
|
|
208
|
+
messages in private chats. - Bots granted can_post_messages permissions
|
|
209
|
+
can delete outgoing messages in channels. - If the bot is an administrator
|
|
210
|
+
of a group, it can delete any message there. - If the bot has can_delete_messages
|
|
211
|
+
permission in a supergroup or a channel, it can delete any message there.
|
|
201
212
|
Returns True on success.
|
|
202
213
|
|
|
203
214
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
@@ -217,7 +228,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
217
228
|
)
|
|
218
229
|
async def edit_text(
|
|
219
230
|
self,
|
|
220
|
-
text: str
|
|
231
|
+
text: str,
|
|
221
232
|
inline_message_id: int | None = None,
|
|
222
233
|
chat_id: int | str | None = None,
|
|
223
234
|
message_id: int | None = None,
|
|
@@ -230,8 +241,8 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
230
241
|
) -> Result[Variative[MessageCute, bool], APIError]:
|
|
231
242
|
"""Shortcut `API.edit_message_text()`, see the [documentation](https://core.telegram.org/bots/api#editmessagetext)
|
|
232
243
|
|
|
233
|
-
Use this method to edit text and game messages. On success, if the edited
|
|
234
|
-
message is not an inline message, the edited Message is returned, otherwise
|
|
244
|
+
Use this method to edit text and game messages. On success, if the edited
|
|
245
|
+
message is not an inline message, the edited Message is returned, otherwise
|
|
235
246
|
True is returned.
|
|
236
247
|
|
|
237
248
|
:param inline_message_id: Required if chat_id and message_id are not specified. Identifier of the \
|
|
@@ -281,9 +292,9 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
281
292
|
) -> Result[Variative[MessageCute, bool], APIError]:
|
|
282
293
|
"""Shortcut `API.edit_message_live_location()`, see the [documentation](https://core.telegram.org/bots/api#editmessagelivelocation)
|
|
283
294
|
|
|
284
|
-
Use this method to edit live location messages. A location can be edited
|
|
285
|
-
until its live_period expires or editing is explicitly disabled by a call
|
|
286
|
-
to stopMessageLiveLocation. On success, if the edited message is not an
|
|
295
|
+
Use this method to edit live location messages. A location can be edited
|
|
296
|
+
until its live_period expires or editing is explicitly disabled by a call
|
|
297
|
+
to stopMessageLiveLocation. On success, if the edited message is not an
|
|
287
298
|
inline message, the edited Message is returned, otherwise True is returned.
|
|
288
299
|
|
|
289
300
|
:param inline_message_id: Required if chat_id and message_id are not specified. Identifier of the \
|
|
@@ -333,8 +344,8 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
333
344
|
) -> Result[Variative[MessageCute, bool], APIError]:
|
|
334
345
|
"""Shortcut `API.edit_message_caption()`, see the [documentation](https://core.telegram.org/bots/api#editmessagecaption)
|
|
335
346
|
|
|
336
|
-
Use this method to edit captions of messages. On success, if the edited message
|
|
337
|
-
is not an inline message, the edited Message is returned, otherwise True
|
|
347
|
+
Use this method to edit captions of messages. On success, if the edited message
|
|
348
|
+
is not an inline message, the edited Message is returned, otherwise True
|
|
338
349
|
is returned.
|
|
339
350
|
|
|
340
351
|
:param chat_id: Required if inline_message_id is not specified. Unique identifier for \
|
|
@@ -388,12 +399,12 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
388
399
|
) -> Result[Variative[MessageCute, bool], APIError]:
|
|
389
400
|
"""Shortcut `API.edit_message_media()`, see the [documentation](https://core.telegram.org/bots/api#editmessagemedia)
|
|
390
401
|
|
|
391
|
-
Use this method to edit animation, audio, document, photo, or video messages.
|
|
392
|
-
If a message is part of a message album, then it can be edited only to an audio
|
|
393
|
-
for audio albums, only to a document for document albums and to a photo or
|
|
394
|
-
a video otherwise. When an inline message is edited, a new file can't be uploaded;
|
|
395
|
-
use a previously uploaded file via its file_id or specify a URL. On success,
|
|
396
|
-
if the edited message is not an inline message, the edited Message is returned,
|
|
402
|
+
Use this method to edit animation, audio, document, photo, or video messages.
|
|
403
|
+
If a message is part of a message album, then it can be edited only to an audio
|
|
404
|
+
for audio albums, only to a document for document albums and to a photo or
|
|
405
|
+
a video otherwise. When an inline message is edited, a new file can't be uploaded;
|
|
406
|
+
use a previously uploaded file via its file_id or specify a URL. On success,
|
|
407
|
+
if the edited message is not an inline message, the edited Message is returned,
|
|
397
408
|
otherwise True is returned.
|
|
398
409
|
|
|
399
410
|
:param chat_id: Required if inline_message_id is not specified. Unique identifier for \
|
|
@@ -417,7 +428,7 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
417
428
|
|
|
418
429
|
:param caption_entities: A JSON-serialized list of special entities that appear in the caption, \
|
|
419
430
|
which can be specified instead of parse_mode.
|
|
420
|
-
|
|
431
|
+
|
|
421
432
|
:param type: Required if media is not an `str | InputMedia` object. Type of the media, \
|
|
422
433
|
must be one of `photo`, `video`, `animation`, `audio`, `document`.
|
|
423
434
|
|
|
@@ -441,8 +452,8 @@ class CallbackQueryCute(BaseCute[CallbackQuery], CallbackQuery, kw_only=True, di
|
|
|
441
452
|
) -> Result[Variative[MessageCute, bool], APIError]:
|
|
442
453
|
"""Shortcut `API.edit_message_reply_markup()`, see the [documentation](https://core.telegram.org/bots/api#editmessagereplymarkup)
|
|
443
454
|
|
|
444
|
-
Use this method to edit only the reply markup of messages. On success, if
|
|
445
|
-
the edited message is not an inline message, the edited Message is returned,
|
|
455
|
+
Use this method to edit only the reply markup of messages. On success, if
|
|
456
|
+
the edited message is not an inline message, the edited Message is returned,
|
|
446
457
|
otherwise True is returned.
|
|
447
458
|
|
|
448
459
|
:param chat_id: Required if inline_message_id is not specified. Unique identifier for \
|
{telegrinder-0.1.dev167 → telegrinder-0.1.dev169}/telegrinder/bot/cute_types/chat_join_request.py
RENAMED
|
@@ -9,9 +9,7 @@ from .base import BaseCute, shortcut
|
|
|
9
9
|
from .chat_member_updated import ChatMemberShortcuts, chat_member_interaction
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class ChatJoinRequestCute(
|
|
13
|
-
BaseCute[ChatJoinRequest], ChatJoinRequest, ChatMemberShortcuts, kw_only=True
|
|
14
|
-
):
|
|
12
|
+
class ChatJoinRequestCute(BaseCute[ChatJoinRequest], ChatJoinRequest, ChatMemberShortcuts, kw_only=True):
|
|
15
13
|
api: ABCAPI
|
|
16
14
|
|
|
17
15
|
@property
|
|
@@ -31,8 +29,8 @@ class ChatJoinRequestCute(
|
|
|
31
29
|
) -> Result[bool, APIError]:
|
|
32
30
|
"""Shortcut `API.approve_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#approvechatjoinrequest)
|
|
33
31
|
|
|
34
|
-
Use this method to approve a chat join request. The bot must be an administrator
|
|
35
|
-
in the chat for this to work and must have the can_invite_users administrator
|
|
32
|
+
Use this method to approve a chat join request. The bot must be an administrator
|
|
33
|
+
in the chat for this to work and must have the can_invite_users administrator
|
|
36
34
|
right. Returns True on success.
|
|
37
35
|
|
|
38
36
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
@@ -52,8 +50,8 @@ class ChatJoinRequestCute(
|
|
|
52
50
|
) -> Result[bool, APIError]:
|
|
53
51
|
"""Shortcut `API.decline_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#declinechatjoinrequest)
|
|
54
52
|
|
|
55
|
-
Use this method to decline a chat join request. The bot must be an administrator
|
|
56
|
-
in the chat for this to work and must have the can_invite_users administrator
|
|
53
|
+
Use this method to decline a chat join request. The bot must be an administrator
|
|
54
|
+
in the chat for this to work and must have the can_invite_users administrator
|
|
57
55
|
right. Returns True on success.
|
|
58
56
|
|
|
59
57
|
:param chat_id: Unique identifier for the target chat or username of the target channel \
|
|
@@ -63,3 +61,6 @@ class ChatJoinRequestCute(
|
|
|
63
61
|
"""
|
|
64
62
|
|
|
65
63
|
...
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
__all__ = ("ChatJoinRequestCute",)
|