telegrinder 0.3.4__py3-none-any.whl → 0.3.4.post1__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 +144 -144
- telegrinder/api/__init__.py +8 -8
- telegrinder/api/api.py +93 -93
- telegrinder/api/error.py +16 -16
- telegrinder/api/response.py +20 -20
- telegrinder/api/token.py +36 -36
- telegrinder/bot/__init__.py +66 -66
- telegrinder/bot/bot.py +76 -76
- telegrinder/bot/cute_types/__init__.py +17 -17
- telegrinder/bot/cute_types/base.py +258 -258
- telegrinder/bot/cute_types/callback_query.py +385 -385
- telegrinder/bot/cute_types/chat_join_request.py +61 -61
- telegrinder/bot/cute_types/chat_member_updated.py +160 -160
- telegrinder/bot/cute_types/inline_query.py +43 -43
- telegrinder/bot/cute_types/message.py +2637 -2637
- telegrinder/bot/cute_types/update.py +104 -104
- telegrinder/bot/cute_types/utils.py +95 -95
- telegrinder/bot/dispatch/__init__.py +55 -55
- telegrinder/bot/dispatch/abc.py +77 -77
- telegrinder/bot/dispatch/context.py +98 -98
- telegrinder/bot/dispatch/dispatch.py +202 -202
- telegrinder/bot/dispatch/handler/__init__.py +13 -13
- telegrinder/bot/dispatch/handler/abc.py +24 -24
- telegrinder/bot/dispatch/handler/audio_reply.py +44 -44
- telegrinder/bot/dispatch/handler/base.py +57 -57
- telegrinder/bot/dispatch/handler/document_reply.py +44 -44
- telegrinder/bot/dispatch/handler/func.py +135 -135
- telegrinder/bot/dispatch/handler/media_group_reply.py +43 -43
- telegrinder/bot/dispatch/handler/message_reply.py +36 -36
- telegrinder/bot/dispatch/handler/photo_reply.py +44 -44
- telegrinder/bot/dispatch/handler/sticker_reply.py +37 -37
- telegrinder/bot/dispatch/handler/video_reply.py +44 -44
- telegrinder/bot/dispatch/middleware/__init__.py +3 -3
- telegrinder/bot/dispatch/middleware/abc.py +22 -22
- telegrinder/bot/dispatch/process.py +157 -157
- telegrinder/bot/dispatch/return_manager/__init__.py +13 -13
- telegrinder/bot/dispatch/return_manager/abc.py +108 -108
- telegrinder/bot/dispatch/return_manager/callback_query.py +20 -20
- telegrinder/bot/dispatch/return_manager/inline_query.py +15 -15
- telegrinder/bot/dispatch/return_manager/message.py +36 -36
- telegrinder/bot/dispatch/view/__init__.py +13 -13
- telegrinder/bot/dispatch/view/abc.py +41 -41
- telegrinder/bot/dispatch/view/base.py +200 -200
- telegrinder/bot/dispatch/view/box.py +129 -129
- telegrinder/bot/dispatch/view/callback_query.py +17 -17
- telegrinder/bot/dispatch/view/chat_join_request.py +16 -16
- telegrinder/bot/dispatch/view/chat_member.py +39 -39
- telegrinder/bot/dispatch/view/inline_query.py +17 -17
- telegrinder/bot/dispatch/view/message.py +44 -44
- telegrinder/bot/dispatch/view/raw.py +114 -114
- telegrinder/bot/dispatch/waiter_machine/__init__.py +17 -17
- telegrinder/bot/dispatch/waiter_machine/actions.py +13 -13
- telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py +8 -8
- telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +55 -55
- telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +57 -57
- telegrinder/bot/dispatch/waiter_machine/hasher/message.py +51 -51
- telegrinder/bot/dispatch/waiter_machine/hasher/state.py +19 -19
- telegrinder/bot/dispatch/waiter_machine/machine.py +172 -172
- telegrinder/bot/dispatch/waiter_machine/middleware.py +89 -89
- telegrinder/bot/dispatch/waiter_machine/short_state.py +68 -68
- telegrinder/bot/polling/__init__.py +4 -4
- telegrinder/bot/polling/abc.py +25 -25
- telegrinder/bot/polling/polling.py +131 -131
- telegrinder/bot/rules/__init__.py +62 -62
- telegrinder/bot/rules/abc.py +206 -206
- telegrinder/bot/rules/adapter/__init__.py +17 -17
- telegrinder/bot/rules/adapter/abc.py +31 -31
- telegrinder/bot/rules/adapter/errors.py +5 -5
- telegrinder/bot/rules/adapter/event.py +65 -65
- telegrinder/bot/rules/adapter/node.py +48 -48
- telegrinder/bot/rules/adapter/raw_event.py +27 -27
- telegrinder/bot/rules/adapter/raw_update.py +30 -30
- telegrinder/bot/rules/callback_data.py +163 -163
- telegrinder/bot/rules/chat_join.py +43 -43
- telegrinder/bot/rules/command.py +126 -126
- telegrinder/bot/rules/enum_text.py +36 -36
- telegrinder/bot/rules/func.py +26 -26
- telegrinder/bot/rules/fuzzy.py +24 -24
- telegrinder/bot/rules/inline.py +56 -56
- telegrinder/bot/rules/integer.py +20 -20
- telegrinder/bot/rules/is_from.py +127 -127
- telegrinder/bot/rules/markup.py +43 -43
- telegrinder/bot/rules/mention.py +14 -14
- telegrinder/bot/rules/message.py +17 -17
- telegrinder/bot/rules/message_entities.py +35 -35
- telegrinder/bot/rules/node.py +27 -27
- telegrinder/bot/rules/regex.py +37 -37
- telegrinder/bot/rules/rule_enum.py +72 -72
- telegrinder/bot/rules/start.py +42 -42
- telegrinder/bot/rules/state.py +37 -37
- telegrinder/bot/rules/text.py +33 -33
- telegrinder/bot/rules/update.py +15 -15
- telegrinder/bot/scenario/__init__.py +5 -5
- telegrinder/bot/scenario/abc.py +19 -19
- telegrinder/bot/scenario/checkbox.py +176 -176
- telegrinder/bot/scenario/choice.py +51 -51
- telegrinder/client/__init__.py +4 -4
- telegrinder/client/abc.py +75 -75
- telegrinder/client/aiohttp.py +130 -130
- telegrinder/model.py +313 -313
- telegrinder/modules.py +237 -237
- telegrinder/msgspec_json.py +14 -14
- telegrinder/msgspec_utils.py +410 -410
- telegrinder/node/__init__.py +20 -20
- telegrinder/node/attachment.py +87 -87
- telegrinder/node/base.py +157 -157
- telegrinder/node/callback_query.py +53 -53
- telegrinder/node/command.py +33 -33
- telegrinder/node/composer.py +198 -198
- telegrinder/node/container.py +27 -27
- telegrinder/node/event.py +65 -65
- telegrinder/node/me.py +16 -16
- telegrinder/node/message.py +14 -14
- telegrinder/node/polymorphic.py +48 -48
- telegrinder/node/rule.py +76 -76
- telegrinder/node/scope.py +38 -38
- telegrinder/node/source.py +71 -71
- telegrinder/node/text.py +41 -41
- telegrinder/node/tools/__init__.py +3 -3
- telegrinder/node/tools/generator.py +40 -40
- telegrinder/node/update.py +15 -15
- telegrinder/rules.py +5 -5
- telegrinder/tools/__init__.py +74 -74
- telegrinder/tools/buttons.py +79 -79
- telegrinder/tools/error_handler/__init__.py +7 -7
- telegrinder/tools/error_handler/abc.py +33 -33
- telegrinder/tools/error_handler/error.py +9 -9
- telegrinder/tools/error_handler/error_handler.py +193 -193
- telegrinder/tools/formatting/__init__.py +46 -46
- telegrinder/tools/formatting/html.py +283 -283
- telegrinder/tools/formatting/links.py +33 -33
- telegrinder/tools/formatting/spec_html_formats.py +111 -111
- telegrinder/tools/functional.py +12 -12
- telegrinder/tools/global_context/__init__.py +7 -7
- telegrinder/tools/global_context/abc.py +63 -63
- telegrinder/tools/global_context/global_context.py +412 -412
- telegrinder/tools/global_context/telegrinder_ctx.py +27 -27
- telegrinder/tools/i18n/__init__.py +7 -7
- telegrinder/tools/i18n/abc.py +30 -30
- telegrinder/tools/i18n/middleware/__init__.py +3 -3
- telegrinder/tools/i18n/middleware/abc.py +25 -25
- telegrinder/tools/i18n/simple.py +43 -43
- telegrinder/tools/kb_set/__init__.py +4 -4
- telegrinder/tools/kb_set/base.py +15 -15
- telegrinder/tools/kb_set/yaml.py +63 -63
- telegrinder/tools/keyboard.py +128 -128
- telegrinder/tools/limited_dict.py +37 -37
- telegrinder/tools/loop_wrapper/__init__.py +4 -4
- telegrinder/tools/loop_wrapper/abc.py +15 -15
- telegrinder/tools/loop_wrapper/loop_wrapper.py +224 -224
- telegrinder/tools/magic.py +157 -157
- telegrinder/tools/parse_mode.py +6 -6
- telegrinder/tools/state_storage/__init__.py +4 -4
- telegrinder/tools/state_storage/abc.py +35 -35
- telegrinder/tools/state_storage/memory.py +25 -25
- telegrinder/types/__init__.py +260 -260
- telegrinder/types/enums.py +701 -701
- telegrinder/types/methods.py +4633 -4633
- telegrinder/types/objects.py +6950 -6950
- telegrinder/verification_utils.py +32 -32
- {telegrinder-0.3.4.dist-info → telegrinder-0.3.4.post1.dist-info}/LICENSE +22 -22
- {telegrinder-0.3.4.dist-info → telegrinder-0.3.4.post1.dist-info}/METADATA +1 -1
- telegrinder-0.3.4.post1.dist-info/RECORD +165 -0
- telegrinder-0.3.4.dist-info/RECORD +0 -165
- {telegrinder-0.3.4.dist-info → telegrinder-0.3.4.post1.dist-info}/WHEEL +0 -0
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from fntypes.result import Result
|
|
4
|
-
|
|
5
|
-
from telegrinder.api.api import API, APIError
|
|
6
|
-
from telegrinder.bot.cute_types.base import BaseCute, shortcut
|
|
7
|
-
from telegrinder.bot.cute_types.chat_member_updated import ChatMemberShortcuts, chat_member_interaction
|
|
8
|
-
from telegrinder.types.objects import *
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ChatJoinRequestCute(BaseCute[ChatJoinRequest], ChatJoinRequest, ChatMemberShortcuts, kw_only=True):
|
|
12
|
-
api: API
|
|
13
|
-
|
|
14
|
-
@property
|
|
15
|
-
def from_user(self) -> User:
|
|
16
|
-
return self.from_
|
|
17
|
-
|
|
18
|
-
@property
|
|
19
|
-
def user_id(self) -> int:
|
|
20
|
-
return self.from_user.id
|
|
21
|
-
|
|
22
|
-
@shortcut(
|
|
23
|
-
"approve_chat_join_request",
|
|
24
|
-
executor=chat_member_interaction,
|
|
25
|
-
custom_params={"chat_id", "user_id"},
|
|
26
|
-
)
|
|
27
|
-
async def approve(
|
|
28
|
-
self,
|
|
29
|
-
chat_id: int | str | None = None,
|
|
30
|
-
user_id: int | None = None,
|
|
31
|
-
**other: typing.Any,
|
|
32
|
-
) -> Result[bool, APIError]:
|
|
33
|
-
"""Shortcut `API.approve_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#approvechatjoinrequest)
|
|
34
|
-
|
|
35
|
-
Use this method to approve a chat join request. The bot must be an administrator
|
|
36
|
-
in the chat for this to work and must have the can_invite_users administrator
|
|
37
|
-
right. Returns True on success."""
|
|
38
|
-
|
|
39
|
-
...
|
|
40
|
-
|
|
41
|
-
@shortcut(
|
|
42
|
-
"decline_chat_join_request",
|
|
43
|
-
executor=chat_member_interaction,
|
|
44
|
-
custom_params={"chat_id", "user_id"},
|
|
45
|
-
)
|
|
46
|
-
async def decline(
|
|
47
|
-
self,
|
|
48
|
-
chat_id: int | str | None = None,
|
|
49
|
-
user_id: int | None = None,
|
|
50
|
-
**other: typing.Any,
|
|
51
|
-
) -> Result[bool, APIError]:
|
|
52
|
-
"""Shortcut `API.decline_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#declinechatjoinrequest)
|
|
53
|
-
|
|
54
|
-
Use this method to decline a chat join request. The bot must be an administrator
|
|
55
|
-
in the chat for this to work and must have the can_invite_users administrator
|
|
56
|
-
right. Returns True on success."""
|
|
57
|
-
|
|
58
|
-
...
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
__all__ = ("ChatJoinRequestCute",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from fntypes.result import Result
|
|
4
|
+
|
|
5
|
+
from telegrinder.api.api import API, APIError
|
|
6
|
+
from telegrinder.bot.cute_types.base import BaseCute, shortcut
|
|
7
|
+
from telegrinder.bot.cute_types.chat_member_updated import ChatMemberShortcuts, chat_member_interaction
|
|
8
|
+
from telegrinder.types.objects import *
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ChatJoinRequestCute(BaseCute[ChatJoinRequest], ChatJoinRequest, ChatMemberShortcuts, kw_only=True):
|
|
12
|
+
api: API
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def from_user(self) -> User:
|
|
16
|
+
return self.from_
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def user_id(self) -> int:
|
|
20
|
+
return self.from_user.id
|
|
21
|
+
|
|
22
|
+
@shortcut(
|
|
23
|
+
"approve_chat_join_request",
|
|
24
|
+
executor=chat_member_interaction,
|
|
25
|
+
custom_params={"chat_id", "user_id"},
|
|
26
|
+
)
|
|
27
|
+
async def approve(
|
|
28
|
+
self,
|
|
29
|
+
chat_id: int | str | None = None,
|
|
30
|
+
user_id: int | None = None,
|
|
31
|
+
**other: typing.Any,
|
|
32
|
+
) -> Result[bool, APIError]:
|
|
33
|
+
"""Shortcut `API.approve_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#approvechatjoinrequest)
|
|
34
|
+
|
|
35
|
+
Use this method to approve a chat join request. The bot must be an administrator
|
|
36
|
+
in the chat for this to work and must have the can_invite_users administrator
|
|
37
|
+
right. Returns True on success."""
|
|
38
|
+
|
|
39
|
+
...
|
|
40
|
+
|
|
41
|
+
@shortcut(
|
|
42
|
+
"decline_chat_join_request",
|
|
43
|
+
executor=chat_member_interaction,
|
|
44
|
+
custom_params={"chat_id", "user_id"},
|
|
45
|
+
)
|
|
46
|
+
async def decline(
|
|
47
|
+
self,
|
|
48
|
+
chat_id: int | str | None = None,
|
|
49
|
+
user_id: int | None = None,
|
|
50
|
+
**other: typing.Any,
|
|
51
|
+
) -> Result[bool, APIError]:
|
|
52
|
+
"""Shortcut `API.decline_chat_join_request()`, see the [documentation](https://core.telegram.org/bots/api#declinechatjoinrequest)
|
|
53
|
+
|
|
54
|
+
Use this method to decline a chat join request. The bot must be an administrator
|
|
55
|
+
in the chat for this to work and must have the can_invite_users administrator
|
|
56
|
+
right. Returns True on success."""
|
|
57
|
+
|
|
58
|
+
...
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
__all__ = ("ChatJoinRequestCute",)
|
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
from datetime import datetime
|
|
3
|
-
|
|
4
|
-
from fntypes.result import Result
|
|
5
|
-
|
|
6
|
-
from telegrinder.api.api import API, APIError
|
|
7
|
-
from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
|
|
8
|
-
from telegrinder.model import get_params
|
|
9
|
-
from telegrinder.types.objects import *
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
async def chat_member_interaction(
|
|
13
|
-
update: BaseCute[typing.Any],
|
|
14
|
-
method_name: str,
|
|
15
|
-
params: dict[str, typing.Any],
|
|
16
|
-
) -> Result[typing.Any, APIError]:
|
|
17
|
-
if isinstance(params.get("permissions"), dict):
|
|
18
|
-
params["permissions"] = ChatPermissions(**params["permissions"])
|
|
19
|
-
params = compose_method_params(
|
|
20
|
-
get_params(locals()),
|
|
21
|
-
update,
|
|
22
|
-
default_params={"chat_id", "user_id"},
|
|
23
|
-
)
|
|
24
|
-
return await getattr(update.ctx_api, method_name)(**params)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class ChatMemberShortcuts:
|
|
28
|
-
"""Shortcut methods for `ChatMemberUpdatedCute`, `ChatJoinRequestCute` objects."""
|
|
29
|
-
|
|
30
|
-
@shortcut("ban_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
31
|
-
async def ban_chat_member(
|
|
32
|
-
self,
|
|
33
|
-
chat_id: int | str | None = None,
|
|
34
|
-
user_id: int | None = None,
|
|
35
|
-
until_date: datetime | int | None = None,
|
|
36
|
-
revoke_messages: bool | None = None,
|
|
37
|
-
**other: typing.Any,
|
|
38
|
-
) -> Result[bool, APIError]:
|
|
39
|
-
"""Shortcut `API.ban_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#banchatmember)
|
|
40
|
-
|
|
41
|
-
Use this method to ban a user in a group, a supergroup or a channel. In the case
|
|
42
|
-
of supergroups and channels, the user will not be able to return to the chat
|
|
43
|
-
on their own using invite links, etc., unless unbanned first. The bot must
|
|
44
|
-
be an administrator in the chat for this to work and must have the appropriate
|
|
45
|
-
administrator rights. Returns True on success."""
|
|
46
|
-
|
|
47
|
-
...
|
|
48
|
-
|
|
49
|
-
@shortcut("unban_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
50
|
-
async def unban_chat_member(
|
|
51
|
-
self,
|
|
52
|
-
chat_id: int | str | None = None,
|
|
53
|
-
user_id: int | None = None,
|
|
54
|
-
only_if_banned: bool | None = None,
|
|
55
|
-
**other: typing.Any,
|
|
56
|
-
) -> Result[bool, APIError]:
|
|
57
|
-
"""Shortcut `API.unban_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#unbanchatmember)
|
|
58
|
-
|
|
59
|
-
Use this method to unban a previously banned user in a supergroup or channel.
|
|
60
|
-
The user will not return to the group or channel automatically, but will
|
|
61
|
-
be able to join via link, etc. The bot must be an administrator for this to
|
|
62
|
-
work. By default, this method guarantees that after the call the user is
|
|
63
|
-
not a member of the chat, but will be able to join it. So if the user is a member
|
|
64
|
-
of the chat they will also be removed from the chat. If you don't want this,
|
|
65
|
-
use the parameter only_if_banned. Returns True on success."""
|
|
66
|
-
|
|
67
|
-
...
|
|
68
|
-
|
|
69
|
-
@shortcut(
|
|
70
|
-
"restrict_chat_member",
|
|
71
|
-
executor=chat_member_interaction,
|
|
72
|
-
custom_params={"permissions", "chat_id", "user_id"},
|
|
73
|
-
)
|
|
74
|
-
async def restrict_chat_member(
|
|
75
|
-
self,
|
|
76
|
-
permissions: ChatPermissions | dict[str, typing.Any],
|
|
77
|
-
chat_id: int | str | None = None,
|
|
78
|
-
user_id: int | None = None,
|
|
79
|
-
use_independent_chat_permissions: bool | None = None,
|
|
80
|
-
until_date: datetime | int | None = None,
|
|
81
|
-
**other: typing.Any,
|
|
82
|
-
) -> Result[bool, APIError]:
|
|
83
|
-
"""Shortcut `API.restrict_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#restrictchatmember)
|
|
84
|
-
|
|
85
|
-
Use this method to restrict a user in a supergroup. The bot must be an administrator
|
|
86
|
-
in the supergroup for this to work and must have the appropriate administrator
|
|
87
|
-
rights. Pass True for all permissions to lift restrictions from a user.
|
|
88
|
-
Returns True on success."""
|
|
89
|
-
|
|
90
|
-
...
|
|
91
|
-
|
|
92
|
-
@shortcut("promote_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
93
|
-
async def promote_chat_member(
|
|
94
|
-
self,
|
|
95
|
-
chat_id: int | str | None = None,
|
|
96
|
-
user_id: int | None = None,
|
|
97
|
-
is_anonymous: bool | None = None,
|
|
98
|
-
can_manage_chat: bool | None = None,
|
|
99
|
-
can_delete_messages: bool | None = None,
|
|
100
|
-
can_manage_video_chats: bool | None = None,
|
|
101
|
-
can_restrict_members: bool | None = None,
|
|
102
|
-
can_promote_members: bool | None = None,
|
|
103
|
-
can_change_info: bool | None = None,
|
|
104
|
-
can_invite_users: bool | None = None,
|
|
105
|
-
can_post_stories: bool | None = None,
|
|
106
|
-
can_edit_stories: bool | None = None,
|
|
107
|
-
can_delete_stories: bool | None = None,
|
|
108
|
-
can_post_messages: bool | None = None,
|
|
109
|
-
can_edit_messages: bool | None = None,
|
|
110
|
-
can_pin_messages: bool | None = None,
|
|
111
|
-
can_manage_topics: bool | None = None,
|
|
112
|
-
**other: typing.Any,
|
|
113
|
-
) -> Result[bool, APIError]:
|
|
114
|
-
"""Shortcut `API.promote_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#promotechatmember)
|
|
115
|
-
|
|
116
|
-
Use this method to promote or demote a user in a supergroup or a channel. The
|
|
117
|
-
bot must be an administrator in the chat for this to work and must have the
|
|
118
|
-
appropriate administrator rights. Pass False for all boolean parameters
|
|
119
|
-
to demote a user. Returns True on success."""
|
|
120
|
-
|
|
121
|
-
...
|
|
122
|
-
|
|
123
|
-
@shortcut(
|
|
124
|
-
"set_chat_administrator_custom_title",
|
|
125
|
-
executor=chat_member_interaction,
|
|
126
|
-
custom_params={"chat_id", "user_id"},
|
|
127
|
-
)
|
|
128
|
-
async def set_chat_administrator_custom_title(
|
|
129
|
-
self,
|
|
130
|
-
custom_title: str,
|
|
131
|
-
chat_id: int | str | None = None,
|
|
132
|
-
user_id: int | None = None,
|
|
133
|
-
**other: typing.Any,
|
|
134
|
-
) -> Result[bool, APIError]:
|
|
135
|
-
"""Shortcut `API.set_chat_administrator_custom_title()`, see the [documentation](https://core.telegram.org/bots/api#setchatadministratorcustomtitle)
|
|
136
|
-
|
|
137
|
-
Use this method to set a custom title for an administrator in a supergroup
|
|
138
|
-
promoted by the bot. Returns True on success."""
|
|
139
|
-
|
|
140
|
-
...
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
class ChatMemberUpdatedCute(
|
|
144
|
-
BaseCute[ChatMemberUpdated], ChatMemberUpdated, ChatMemberShortcuts, kw_only=True
|
|
145
|
-
):
|
|
146
|
-
api: API
|
|
147
|
-
|
|
148
|
-
@property
|
|
149
|
-
def from_user(self) -> User:
|
|
150
|
-
return self.from_
|
|
151
|
-
|
|
152
|
-
@property
|
|
153
|
-
def user_id(self) -> int:
|
|
154
|
-
return self.from_user.id
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
__all__ = (
|
|
158
|
-
"ChatMemberShortcuts",
|
|
159
|
-
"ChatMemberUpdatedCute",
|
|
160
|
-
)
|
|
1
|
+
import typing
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
|
|
4
|
+
from fntypes.result import Result
|
|
5
|
+
|
|
6
|
+
from telegrinder.api.api import API, APIError
|
|
7
|
+
from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
|
|
8
|
+
from telegrinder.model import get_params
|
|
9
|
+
from telegrinder.types.objects import *
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async def chat_member_interaction(
|
|
13
|
+
update: BaseCute[typing.Any],
|
|
14
|
+
method_name: str,
|
|
15
|
+
params: dict[str, typing.Any],
|
|
16
|
+
) -> Result[typing.Any, APIError]:
|
|
17
|
+
if isinstance(params.get("permissions"), dict):
|
|
18
|
+
params["permissions"] = ChatPermissions(**params["permissions"])
|
|
19
|
+
params = compose_method_params(
|
|
20
|
+
get_params(locals()),
|
|
21
|
+
update,
|
|
22
|
+
default_params={"chat_id", "user_id"},
|
|
23
|
+
)
|
|
24
|
+
return await getattr(update.ctx_api, method_name)(**params)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ChatMemberShortcuts:
|
|
28
|
+
"""Shortcut methods for `ChatMemberUpdatedCute`, `ChatJoinRequestCute` objects."""
|
|
29
|
+
|
|
30
|
+
@shortcut("ban_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
31
|
+
async def ban_chat_member(
|
|
32
|
+
self,
|
|
33
|
+
chat_id: int | str | None = None,
|
|
34
|
+
user_id: int | None = None,
|
|
35
|
+
until_date: datetime | int | None = None,
|
|
36
|
+
revoke_messages: bool | None = None,
|
|
37
|
+
**other: typing.Any,
|
|
38
|
+
) -> Result[bool, APIError]:
|
|
39
|
+
"""Shortcut `API.ban_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#banchatmember)
|
|
40
|
+
|
|
41
|
+
Use this method to ban a user in a group, a supergroup or a channel. In the case
|
|
42
|
+
of supergroups and channels, the user will not be able to return to the chat
|
|
43
|
+
on their own using invite links, etc., unless unbanned first. The bot must
|
|
44
|
+
be an administrator in the chat for this to work and must have the appropriate
|
|
45
|
+
administrator rights. Returns True on success."""
|
|
46
|
+
|
|
47
|
+
...
|
|
48
|
+
|
|
49
|
+
@shortcut("unban_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
50
|
+
async def unban_chat_member(
|
|
51
|
+
self,
|
|
52
|
+
chat_id: int | str | None = None,
|
|
53
|
+
user_id: int | None = None,
|
|
54
|
+
only_if_banned: bool | None = None,
|
|
55
|
+
**other: typing.Any,
|
|
56
|
+
) -> Result[bool, APIError]:
|
|
57
|
+
"""Shortcut `API.unban_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#unbanchatmember)
|
|
58
|
+
|
|
59
|
+
Use this method to unban a previously banned user in a supergroup or channel.
|
|
60
|
+
The user will not return to the group or channel automatically, but will
|
|
61
|
+
be able to join via link, etc. The bot must be an administrator for this to
|
|
62
|
+
work. By default, this method guarantees that after the call the user is
|
|
63
|
+
not a member of the chat, but will be able to join it. So if the user is a member
|
|
64
|
+
of the chat they will also be removed from the chat. If you don't want this,
|
|
65
|
+
use the parameter only_if_banned. Returns True on success."""
|
|
66
|
+
|
|
67
|
+
...
|
|
68
|
+
|
|
69
|
+
@shortcut(
|
|
70
|
+
"restrict_chat_member",
|
|
71
|
+
executor=chat_member_interaction,
|
|
72
|
+
custom_params={"permissions", "chat_id", "user_id"},
|
|
73
|
+
)
|
|
74
|
+
async def restrict_chat_member(
|
|
75
|
+
self,
|
|
76
|
+
permissions: ChatPermissions | dict[str, typing.Any],
|
|
77
|
+
chat_id: int | str | None = None,
|
|
78
|
+
user_id: int | None = None,
|
|
79
|
+
use_independent_chat_permissions: bool | None = None,
|
|
80
|
+
until_date: datetime | int | None = None,
|
|
81
|
+
**other: typing.Any,
|
|
82
|
+
) -> Result[bool, APIError]:
|
|
83
|
+
"""Shortcut `API.restrict_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#restrictchatmember)
|
|
84
|
+
|
|
85
|
+
Use this method to restrict a user in a supergroup. The bot must be an administrator
|
|
86
|
+
in the supergroup for this to work and must have the appropriate administrator
|
|
87
|
+
rights. Pass True for all permissions to lift restrictions from a user.
|
|
88
|
+
Returns True on success."""
|
|
89
|
+
|
|
90
|
+
...
|
|
91
|
+
|
|
92
|
+
@shortcut("promote_chat_member", executor=chat_member_interaction, custom_params={"chat_id", "user_id"})
|
|
93
|
+
async def promote_chat_member(
|
|
94
|
+
self,
|
|
95
|
+
chat_id: int | str | None = None,
|
|
96
|
+
user_id: int | None = None,
|
|
97
|
+
is_anonymous: bool | None = None,
|
|
98
|
+
can_manage_chat: bool | None = None,
|
|
99
|
+
can_delete_messages: bool | None = None,
|
|
100
|
+
can_manage_video_chats: bool | None = None,
|
|
101
|
+
can_restrict_members: bool | None = None,
|
|
102
|
+
can_promote_members: bool | None = None,
|
|
103
|
+
can_change_info: bool | None = None,
|
|
104
|
+
can_invite_users: bool | None = None,
|
|
105
|
+
can_post_stories: bool | None = None,
|
|
106
|
+
can_edit_stories: bool | None = None,
|
|
107
|
+
can_delete_stories: bool | None = None,
|
|
108
|
+
can_post_messages: bool | None = None,
|
|
109
|
+
can_edit_messages: bool | None = None,
|
|
110
|
+
can_pin_messages: bool | None = None,
|
|
111
|
+
can_manage_topics: bool | None = None,
|
|
112
|
+
**other: typing.Any,
|
|
113
|
+
) -> Result[bool, APIError]:
|
|
114
|
+
"""Shortcut `API.promote_chat_member()`, see the [documentation](https://core.telegram.org/bots/api#promotechatmember)
|
|
115
|
+
|
|
116
|
+
Use this method to promote or demote a user in a supergroup or a channel. The
|
|
117
|
+
bot must be an administrator in the chat for this to work and must have the
|
|
118
|
+
appropriate administrator rights. Pass False for all boolean parameters
|
|
119
|
+
to demote a user. Returns True on success."""
|
|
120
|
+
|
|
121
|
+
...
|
|
122
|
+
|
|
123
|
+
@shortcut(
|
|
124
|
+
"set_chat_administrator_custom_title",
|
|
125
|
+
executor=chat_member_interaction,
|
|
126
|
+
custom_params={"chat_id", "user_id"},
|
|
127
|
+
)
|
|
128
|
+
async def set_chat_administrator_custom_title(
|
|
129
|
+
self,
|
|
130
|
+
custom_title: str,
|
|
131
|
+
chat_id: int | str | None = None,
|
|
132
|
+
user_id: int | None = None,
|
|
133
|
+
**other: typing.Any,
|
|
134
|
+
) -> Result[bool, APIError]:
|
|
135
|
+
"""Shortcut `API.set_chat_administrator_custom_title()`, see the [documentation](https://core.telegram.org/bots/api#setchatadministratorcustomtitle)
|
|
136
|
+
|
|
137
|
+
Use this method to set a custom title for an administrator in a supergroup
|
|
138
|
+
promoted by the bot. Returns True on success."""
|
|
139
|
+
|
|
140
|
+
...
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class ChatMemberUpdatedCute(
|
|
144
|
+
BaseCute[ChatMemberUpdated], ChatMemberUpdated, ChatMemberShortcuts, kw_only=True
|
|
145
|
+
):
|
|
146
|
+
api: API
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def from_user(self) -> User:
|
|
150
|
+
return self.from_
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def user_id(self) -> int:
|
|
154
|
+
return self.from_user.id
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
__all__ = (
|
|
158
|
+
"ChatMemberShortcuts",
|
|
159
|
+
"ChatMemberUpdatedCute",
|
|
160
|
+
)
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from fntypes.result import Result
|
|
4
|
-
|
|
5
|
-
from telegrinder.api.api import API, APIError
|
|
6
|
-
from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
|
|
7
|
-
from telegrinder.model import get_params
|
|
8
|
-
from telegrinder.types.objects import *
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class InlineQueryCute(BaseCute[InlineQuery], InlineQuery, kw_only=True):
|
|
12
|
-
api: API
|
|
13
|
-
|
|
14
|
-
@property
|
|
15
|
-
def from_user(self) -> User:
|
|
16
|
-
return self.from_
|
|
17
|
-
|
|
18
|
-
@shortcut("answer_inline_query", custom_params={"results", "inline_query_id"})
|
|
19
|
-
async def answer(
|
|
20
|
-
self,
|
|
21
|
-
results: InlineQueryResult | list[InlineQueryResult],
|
|
22
|
-
inline_query_id: str | None = None,
|
|
23
|
-
cache_time: int | None = None,
|
|
24
|
-
is_personal: bool | None = None,
|
|
25
|
-
next_offset: str | None = None,
|
|
26
|
-
button: InlineQueryResultsButton | None = None,
|
|
27
|
-
**other: typing.Any,
|
|
28
|
-
) -> Result[bool, APIError]:
|
|
29
|
-
"""Shortcut `API.answer_inline_query()`, see the [documentation](https://core.telegram.org/bots/api#answerinlinequery)
|
|
30
|
-
|
|
31
|
-
Use this method to send answers to an inline query. On success, True is returned.
|
|
32
|
-
No more than 50 results per query are allowed."""
|
|
33
|
-
|
|
34
|
-
params = compose_method_params(
|
|
35
|
-
get_params(locals()),
|
|
36
|
-
self,
|
|
37
|
-
default_params={("inline_query_id", "id")},
|
|
38
|
-
)
|
|
39
|
-
params["results"] = [results] if not isinstance(results, list) else results
|
|
40
|
-
return await self.ctx_api.answer_inline_query(**params)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
__all__ = ("InlineQueryCute",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from fntypes.result import Result
|
|
4
|
+
|
|
5
|
+
from telegrinder.api.api import API, APIError
|
|
6
|
+
from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
|
|
7
|
+
from telegrinder.model import get_params
|
|
8
|
+
from telegrinder.types.objects import *
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class InlineQueryCute(BaseCute[InlineQuery], InlineQuery, kw_only=True):
|
|
12
|
+
api: API
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def from_user(self) -> User:
|
|
16
|
+
return self.from_
|
|
17
|
+
|
|
18
|
+
@shortcut("answer_inline_query", custom_params={"results", "inline_query_id"})
|
|
19
|
+
async def answer(
|
|
20
|
+
self,
|
|
21
|
+
results: InlineQueryResult | list[InlineQueryResult],
|
|
22
|
+
inline_query_id: str | None = None,
|
|
23
|
+
cache_time: int | None = None,
|
|
24
|
+
is_personal: bool | None = None,
|
|
25
|
+
next_offset: str | None = None,
|
|
26
|
+
button: InlineQueryResultsButton | None = None,
|
|
27
|
+
**other: typing.Any,
|
|
28
|
+
) -> Result[bool, APIError]:
|
|
29
|
+
"""Shortcut `API.answer_inline_query()`, see the [documentation](https://core.telegram.org/bots/api#answerinlinequery)
|
|
30
|
+
|
|
31
|
+
Use this method to send answers to an inline query. On success, True is returned.
|
|
32
|
+
No more than 50 results per query are allowed."""
|
|
33
|
+
|
|
34
|
+
params = compose_method_params(
|
|
35
|
+
get_params(locals()),
|
|
36
|
+
self,
|
|
37
|
+
default_params={("inline_query_id", "id")},
|
|
38
|
+
)
|
|
39
|
+
params["results"] = [results] if not isinstance(results, list) else results
|
|
40
|
+
return await self.ctx_api.answer_inline_query(**params)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
__all__ = ("InlineQueryCute",)
|