telegrinder 0.3.3.post1__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 -109
- 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 -16
- telegrinder/bot/dispatch/process.py +157 -132
- 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 -167
- 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 +213 -213
- telegrinder/bot/rules/adapter/__init__.py +12 -9
- telegrinder/bot/rules/adapter/abc.py +31 -29
- telegrinder/bot/rules/adapter/errors.py +5 -5
- telegrinder/bot/rules/adapter/event.py +65 -67
- telegrinder/bot/rules/adapter/node.py +48 -48
- telegrinder/bot/rules/adapter/raw_event.py +27 -0
- telegrinder/bot/rules/adapter/raw_update.py +30 -30
- telegrinder/bot/rules/callback_data.py +170 -170
- telegrinder/bot/rules/chat_join.py +46 -46
- 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 +60 -60
- 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 -167
- telegrinder/bot/scenario/choice.py +51 -46
- telegrinder/client/__init__.py +4 -4
- telegrinder/client/abc.py +75 -75
- telegrinder/client/aiohttp.py +130 -130
- telegrinder/model.py +320 -295
- telegrinder/modules.py +237 -237
- telegrinder/msgspec_json.py +14 -14
- telegrinder/msgspec_utils.py +410 -410
- telegrinder/node/__init__.py +0 -0
- telegrinder/node/attachment.py +87 -87
- telegrinder/node/base.py +166 -166
- 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 +0 -0
- 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 +132 -132
- 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 -8561
- telegrinder/verification_utils.py +32 -32
- {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/LICENSE +22 -22
- {telegrinder-0.3.3.post1.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.3.post1.dist-info/RECORD +0 -164
- {telegrinder-0.3.3.post1.dist-info → telegrinder-0.3.4.post1.dist-info}/WHEEL +0 -0
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
import dataclasses
|
|
2
|
-
import types
|
|
3
|
-
import typing
|
|
4
|
-
from abc import ABC, abstractmethod
|
|
5
|
-
|
|
6
|
-
from telegrinder.bot.dispatch.context import Context
|
|
7
|
-
from telegrinder.model import Model
|
|
8
|
-
from telegrinder.modules import logger
|
|
9
|
-
|
|
10
|
-
T = typing.TypeVar("T")
|
|
11
|
-
Event = typing.TypeVar("Event", bound=Model, contravariant=True)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def get_union_types(t: types.UnionType) -> tuple[type, ...] | None:
|
|
15
|
-
if type(t) in (types.UnionType, typing._UnionGenericAlias): # type: ignore
|
|
16
|
-
return tuple(typing.get_origin(x) or x for x in typing.get_args(t))
|
|
17
|
-
return None
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def register_manager(return_type: type[typing.Any] | types.UnionType):
|
|
21
|
-
def wrapper(func: typing.Callable[..., typing.Awaitable[typing.Any]]):
|
|
22
|
-
return Manager(get_union_types(return_type) or (return_type,), func) # type: ignore
|
|
23
|
-
|
|
24
|
-
return wrapper
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
@dataclasses.dataclass(frozen=True, slots=True)
|
|
28
|
-
class Manager:
|
|
29
|
-
types: tuple[type, ...]
|
|
30
|
-
callback: typing.Callable[..., typing.Awaitable[typing.Any]]
|
|
31
|
-
|
|
32
|
-
async def __call__(self, *args: typing.Any, **kwargs: typing.Any) -> None:
|
|
33
|
-
await self.callback(*args, **kwargs)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class ABCReturnManager(ABC, typing.Generic[Event]):
|
|
37
|
-
@abstractmethod
|
|
38
|
-
async def run(self, response: typing.Any, event: Event, ctx: Context) -> None:
|
|
39
|
-
pass
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class BaseReturnManager(ABCReturnManager[Event]):
|
|
43
|
-
def __repr__(self) -> str:
|
|
44
|
-
return "<{}: {}>".format(
|
|
45
|
-
self.__class__.__name__,
|
|
46
|
-
", ".join(x.callback.__name__ + "=" + repr(x) for x in self.managers),
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
@property
|
|
50
|
-
def managers(self) -> list[Manager]:
|
|
51
|
-
managers = self.__dict__.get("managers")
|
|
52
|
-
if managers is not None:
|
|
53
|
-
return managers
|
|
54
|
-
managers_lst = [
|
|
55
|
-
manager
|
|
56
|
-
for manager in (vars(BaseReturnManager) | vars(self.__class__)).values()
|
|
57
|
-
if isinstance(manager, Manager)
|
|
58
|
-
]
|
|
59
|
-
self.__dict__["managers"] = managers_lst
|
|
60
|
-
return managers_lst
|
|
61
|
-
|
|
62
|
-
@register_manager(Context)
|
|
63
|
-
@staticmethod
|
|
64
|
-
async def ctx_manager(value: Context, event: Event, ctx: Context) -> None:
|
|
65
|
-
"""Basic manager for returning context from handler."""
|
|
66
|
-
|
|
67
|
-
ctx.update(value)
|
|
68
|
-
|
|
69
|
-
async def run(self, response: typing.Any, event: Event, ctx: Context) -> None:
|
|
70
|
-
logger.debug("Run return manager for response: {!r}", response)
|
|
71
|
-
for manager in self.managers:
|
|
72
|
-
if typing.Any in manager.types or any(type(response) is x for x in manager.types):
|
|
73
|
-
logger.debug("Run manager {!r}...", manager.callback.__name__)
|
|
74
|
-
await manager(response, event, ctx)
|
|
75
|
-
|
|
76
|
-
@typing.overload
|
|
77
|
-
def register_manager(
|
|
78
|
-
self,
|
|
79
|
-
return_type: type[T],
|
|
80
|
-
) -> typing.Callable[[typing.Callable[[T, Event, Context], typing.Awaitable[typing.Any]]], Manager]: ...
|
|
81
|
-
|
|
82
|
-
@typing.overload
|
|
83
|
-
def register_manager(
|
|
84
|
-
self,
|
|
85
|
-
return_type: tuple[type[T], ...],
|
|
86
|
-
) -> typing.Callable[
|
|
87
|
-
[typing.Callable[[tuple[T, ...], Event, Context], typing.Awaitable[typing.Any]]],
|
|
88
|
-
Manager,
|
|
89
|
-
]: ...
|
|
90
|
-
|
|
91
|
-
def register_manager(
|
|
92
|
-
self,
|
|
93
|
-
return_type: type[T] | tuple[type[T], ...],
|
|
94
|
-
) -> typing.Callable[
|
|
95
|
-
[typing.Callable[[T | tuple[T, ...], Event, Context], typing.Awaitable[typing.Any]]],
|
|
96
|
-
Manager,
|
|
97
|
-
]:
|
|
98
|
-
def wrapper(func: typing.Callable[[T, Event, Context], typing.Awaitable]) -> Manager:
|
|
99
|
-
manager = Manager(get_union_types(return_type) or (return_type,), func) # type: ignore
|
|
100
|
-
self.managers.append(manager)
|
|
101
|
-
return manager
|
|
102
|
-
|
|
103
|
-
return wrapper
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
__all__ = (
|
|
1
|
+
import dataclasses
|
|
2
|
+
import types
|
|
3
|
+
import typing
|
|
4
|
+
from abc import ABC, abstractmethod
|
|
5
|
+
|
|
6
|
+
from telegrinder.bot.dispatch.context import Context
|
|
7
|
+
from telegrinder.model import Model
|
|
8
|
+
from telegrinder.modules import logger
|
|
9
|
+
|
|
10
|
+
T = typing.TypeVar("T")
|
|
11
|
+
Event = typing.TypeVar("Event", bound=Model, contravariant=True)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_union_types(t: types.UnionType) -> tuple[type, ...] | None:
|
|
15
|
+
if type(t) in (types.UnionType, typing._UnionGenericAlias): # type: ignore
|
|
16
|
+
return tuple(typing.get_origin(x) or x for x in typing.get_args(t))
|
|
17
|
+
return None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def register_manager(return_type: type[typing.Any] | types.UnionType):
|
|
21
|
+
def wrapper(func: typing.Callable[..., typing.Awaitable[typing.Any]]):
|
|
22
|
+
return Manager(get_union_types(return_type) or (return_type,), func) # type: ignore
|
|
23
|
+
|
|
24
|
+
return wrapper
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclasses.dataclass(frozen=True, slots=True)
|
|
28
|
+
class Manager:
|
|
29
|
+
types: tuple[type, ...]
|
|
30
|
+
callback: typing.Callable[..., typing.Awaitable[typing.Any]]
|
|
31
|
+
|
|
32
|
+
async def __call__(self, *args: typing.Any, **kwargs: typing.Any) -> None:
|
|
33
|
+
await self.callback(*args, **kwargs)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class ABCReturnManager(ABC, typing.Generic[Event]):
|
|
37
|
+
@abstractmethod
|
|
38
|
+
async def run(self, response: typing.Any, event: Event, ctx: Context) -> None:
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class BaseReturnManager(ABCReturnManager[Event]):
|
|
43
|
+
def __repr__(self) -> str:
|
|
44
|
+
return "<{}: {}>".format(
|
|
45
|
+
self.__class__.__name__,
|
|
46
|
+
", ".join(x.callback.__name__ + "=" + repr(x) for x in self.managers),
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def managers(self) -> list[Manager]:
|
|
51
|
+
managers = self.__dict__.get("managers")
|
|
52
|
+
if managers is not None:
|
|
53
|
+
return managers
|
|
54
|
+
managers_lst = [
|
|
55
|
+
manager
|
|
56
|
+
for manager in (vars(BaseReturnManager) | vars(self.__class__)).values()
|
|
57
|
+
if isinstance(manager, Manager)
|
|
58
|
+
]
|
|
59
|
+
self.__dict__["managers"] = managers_lst
|
|
60
|
+
return managers_lst
|
|
61
|
+
|
|
62
|
+
@register_manager(Context)
|
|
63
|
+
@staticmethod
|
|
64
|
+
async def ctx_manager(value: Context, event: Event, ctx: Context) -> None:
|
|
65
|
+
"""Basic manager for returning context from handler."""
|
|
66
|
+
|
|
67
|
+
ctx.update(value)
|
|
68
|
+
|
|
69
|
+
async def run(self, response: typing.Any, event: Event, ctx: Context) -> None:
|
|
70
|
+
logger.debug("Run return manager for response: {!r}", response)
|
|
71
|
+
for manager in self.managers:
|
|
72
|
+
if typing.Any in manager.types or any(type(response) is x for x in manager.types):
|
|
73
|
+
logger.debug("Run manager {!r}...", manager.callback.__name__)
|
|
74
|
+
await manager(response, event, ctx)
|
|
75
|
+
|
|
76
|
+
@typing.overload
|
|
77
|
+
def register_manager(
|
|
78
|
+
self,
|
|
79
|
+
return_type: type[T],
|
|
80
|
+
) -> typing.Callable[[typing.Callable[[T, Event, Context], typing.Awaitable[typing.Any]]], Manager]: ...
|
|
81
|
+
|
|
82
|
+
@typing.overload
|
|
83
|
+
def register_manager(
|
|
84
|
+
self,
|
|
85
|
+
return_type: tuple[type[T], ...],
|
|
86
|
+
) -> typing.Callable[
|
|
87
|
+
[typing.Callable[[tuple[T, ...], Event, Context], typing.Awaitable[typing.Any]]],
|
|
88
|
+
Manager,
|
|
89
|
+
]: ...
|
|
90
|
+
|
|
91
|
+
def register_manager(
|
|
92
|
+
self,
|
|
93
|
+
return_type: type[T] | tuple[type[T], ...],
|
|
94
|
+
) -> typing.Callable[
|
|
95
|
+
[typing.Callable[[T | tuple[T, ...], Event, Context], typing.Awaitable[typing.Any]]],
|
|
96
|
+
Manager,
|
|
97
|
+
]:
|
|
98
|
+
def wrapper(func: typing.Callable[[T, Event, Context], typing.Awaitable]) -> Manager:
|
|
99
|
+
manager = Manager(get_union_types(return_type) or (return_type,), func) # type: ignore
|
|
100
|
+
self.managers.append(manager)
|
|
101
|
+
return manager
|
|
102
|
+
|
|
103
|
+
return wrapper
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
__all__ = (
|
|
107
107
|
"ABCReturnManager",
|
|
108
108
|
"BaseReturnManager",
|
|
109
109
|
"Manager",
|
|
110
110
|
"get_union_types",
|
|
111
|
-
"register_manager",
|
|
112
|
-
)
|
|
111
|
+
"register_manager",
|
|
112
|
+
)
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.cute_types.callback_query import CallbackQueryCute
|
|
4
|
-
from telegrinder.bot.dispatch.context import Context
|
|
5
|
-
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class CallbackQueryReturnManager(BaseReturnManager[CallbackQueryCute]):
|
|
9
|
-
@register_manager(str)
|
|
10
|
-
@staticmethod
|
|
11
|
-
async def str_manager(value: str, event: CallbackQueryCute, ctx: Context) -> None:
|
|
12
|
-
await event.answer(value)
|
|
13
|
-
|
|
14
|
-
@register_manager(dict[str, typing.Any])
|
|
15
|
-
@staticmethod
|
|
16
|
-
async def dict_manager(value: dict[str, typing.Any], event: CallbackQueryCute, ctx: Context) -> None:
|
|
17
|
-
await event.answer(**value)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
__all__ = ("CallbackQueryReturnManager",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.cute_types.callback_query import CallbackQueryCute
|
|
4
|
+
from telegrinder.bot.dispatch.context import Context
|
|
5
|
+
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CallbackQueryReturnManager(BaseReturnManager[CallbackQueryCute]):
|
|
9
|
+
@register_manager(str)
|
|
10
|
+
@staticmethod
|
|
11
|
+
async def str_manager(value: str, event: CallbackQueryCute, ctx: Context) -> None:
|
|
12
|
+
await event.answer(value)
|
|
13
|
+
|
|
14
|
+
@register_manager(dict[str, typing.Any])
|
|
15
|
+
@staticmethod
|
|
16
|
+
async def dict_manager(value: dict[str, typing.Any], event: CallbackQueryCute, ctx: Context) -> None:
|
|
17
|
+
await event.answer(**value)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__all__ = ("CallbackQueryReturnManager",)
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.cute_types.inline_query import InlineQueryCute
|
|
4
|
-
from telegrinder.bot.dispatch.context import Context
|
|
5
|
-
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class InlineQueryReturnManager(BaseReturnManager[InlineQueryCute]):
|
|
9
|
-
@register_manager(dict[str, typing.Any])
|
|
10
|
-
@staticmethod
|
|
11
|
-
async def dict_manager(value: dict[str, typing.Any], event: InlineQueryCute, ctx: Context) -> None:
|
|
12
|
-
await event.answer(**value)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
__all__ = ("InlineQueryReturnManager",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.cute_types.inline_query import InlineQueryCute
|
|
4
|
+
from telegrinder.bot.dispatch.context import Context
|
|
5
|
+
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class InlineQueryReturnManager(BaseReturnManager[InlineQueryCute]):
|
|
9
|
+
@register_manager(dict[str, typing.Any])
|
|
10
|
+
@staticmethod
|
|
11
|
+
async def dict_manager(value: dict[str, typing.Any], event: InlineQueryCute, ctx: Context) -> None:
|
|
12
|
+
await event.answer(**value)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
__all__ = ("InlineQueryReturnManager",)
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
|
|
3
|
-
from telegrinder.bot.cute_types.message import MessageCute
|
|
4
|
-
from telegrinder.bot.dispatch.context import Context
|
|
5
|
-
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
-
from telegrinder.tools.formatting import HTMLFormatter
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class MessageReturnManager(BaseReturnManager[MessageCute]):
|
|
10
|
-
@register_manager(str)
|
|
11
|
-
@staticmethod
|
|
12
|
-
async def str_manager(value: str, event: MessageCute, ctx: Context) -> None:
|
|
13
|
-
await event.answer(value)
|
|
14
|
-
|
|
15
|
-
@register_manager(list[str] | tuple[str, ...])
|
|
16
|
-
@staticmethod
|
|
17
|
-
async def seq_manager(
|
|
18
|
-
value: list[str] | tuple[str, ...],
|
|
19
|
-
event: MessageCute,
|
|
20
|
-
ctx: Context,
|
|
21
|
-
) -> None:
|
|
22
|
-
for message in value:
|
|
23
|
-
await event.answer(message)
|
|
24
|
-
|
|
25
|
-
@register_manager(dict[str, typing.Any])
|
|
26
|
-
@staticmethod
|
|
27
|
-
async def dict_manager(value: dict[str, typing.Any], event: MessageCute, ctx: Context) -> None:
|
|
28
|
-
await event.answer(**value)
|
|
29
|
-
|
|
30
|
-
@register_manager(HTMLFormatter)
|
|
31
|
-
@staticmethod
|
|
32
|
-
async def htmlformatter_manager(value: HTMLFormatter, event: MessageCute, ctx: Context) -> None:
|
|
33
|
-
await event.answer(value, parse_mode=HTMLFormatter.PARSE_MODE)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
__all__ = ("MessageReturnManager",)
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from telegrinder.bot.cute_types.message import MessageCute
|
|
4
|
+
from telegrinder.bot.dispatch.context import Context
|
|
5
|
+
from telegrinder.bot.dispatch.return_manager.abc import BaseReturnManager, register_manager
|
|
6
|
+
from telegrinder.tools.formatting import HTMLFormatter
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class MessageReturnManager(BaseReturnManager[MessageCute]):
|
|
10
|
+
@register_manager(str)
|
|
11
|
+
@staticmethod
|
|
12
|
+
async def str_manager(value: str, event: MessageCute, ctx: Context) -> None:
|
|
13
|
+
await event.answer(value)
|
|
14
|
+
|
|
15
|
+
@register_manager(list[str] | tuple[str, ...])
|
|
16
|
+
@staticmethod
|
|
17
|
+
async def seq_manager(
|
|
18
|
+
value: list[str] | tuple[str, ...],
|
|
19
|
+
event: MessageCute,
|
|
20
|
+
ctx: Context,
|
|
21
|
+
) -> None:
|
|
22
|
+
for message in value:
|
|
23
|
+
await event.answer(message)
|
|
24
|
+
|
|
25
|
+
@register_manager(dict[str, typing.Any])
|
|
26
|
+
@staticmethod
|
|
27
|
+
async def dict_manager(value: dict[str, typing.Any], event: MessageCute, ctx: Context) -> None:
|
|
28
|
+
await event.answer(**value)
|
|
29
|
+
|
|
30
|
+
@register_manager(HTMLFormatter)
|
|
31
|
+
@staticmethod
|
|
32
|
+
async def htmlformatter_manager(value: HTMLFormatter, event: MessageCute, ctx: Context) -> None:
|
|
33
|
+
await event.answer(value, parse_mode=HTMLFormatter.PARSE_MODE)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
__all__ = ("MessageReturnManager",)
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
from telegrinder.bot.dispatch.view.abc import ABCStateView, ABCView
|
|
2
|
-
from telegrinder.bot.dispatch.view.base import BaseStateView, BaseView
|
|
3
|
-
from telegrinder.bot.dispatch.view.box import ViewBox
|
|
4
|
-
from telegrinder.bot.dispatch.view.callback_query import CallbackQueryView
|
|
5
|
-
from telegrinder.bot.dispatch.view.chat_join_request import ChatJoinRequestView
|
|
6
|
-
from telegrinder.bot.dispatch.view.chat_member import ChatMemberView
|
|
7
|
-
from telegrinder.bot.dispatch.view.inline_query import InlineQueryView
|
|
8
|
-
from telegrinder.bot.dispatch.view.message import MessageView
|
|
9
|
-
from telegrinder.bot.dispatch.view.raw import RawEventView
|
|
10
|
-
|
|
11
|
-
__all__ = (
|
|
1
|
+
from telegrinder.bot.dispatch.view.abc import ABCStateView, ABCView
|
|
2
|
+
from telegrinder.bot.dispatch.view.base import BaseStateView, BaseView
|
|
3
|
+
from telegrinder.bot.dispatch.view.box import ViewBox
|
|
4
|
+
from telegrinder.bot.dispatch.view.callback_query import CallbackQueryView
|
|
5
|
+
from telegrinder.bot.dispatch.view.chat_join_request import ChatJoinRequestView
|
|
6
|
+
from telegrinder.bot.dispatch.view.chat_member import ChatMemberView
|
|
7
|
+
from telegrinder.bot.dispatch.view.inline_query import InlineQueryView
|
|
8
|
+
from telegrinder.bot.dispatch.view.message import MessageView
|
|
9
|
+
from telegrinder.bot.dispatch.view.raw import RawEventView
|
|
10
|
+
|
|
11
|
+
__all__ = (
|
|
12
12
|
"ABCStateView",
|
|
13
13
|
"ABCView",
|
|
14
14
|
"BaseStateView",
|
|
@@ -19,5 +19,5 @@ __all__ = (
|
|
|
19
19
|
"InlineQueryView",
|
|
20
20
|
"MessageView",
|
|
21
21
|
"RawEventView",
|
|
22
|
-
"ViewBox",
|
|
23
|
-
)
|
|
22
|
+
"ViewBox",
|
|
23
|
+
)
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import typing
|
|
2
|
-
from abc import ABC, abstractmethod
|
|
3
|
-
|
|
4
|
-
from telegrinder.api.api import API
|
|
5
|
-
from telegrinder.bot.cute_types.base import BaseCute
|
|
6
|
-
from telegrinder.bot.dispatch.handler.abc import ABCHandler
|
|
7
|
-
from telegrinder.types.objects import Update
|
|
8
|
-
|
|
9
|
-
Event = typing.TypeVar("Event", bound=BaseCute)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ABCView(ABC):
|
|
13
|
-
def __repr__(self) -> str:
|
|
14
|
-
return "<{}>".format(self.__class__.__name__)
|
|
15
|
-
|
|
16
|
-
@abstractmethod
|
|
17
|
-
async def check(self, event: Update) -> bool:
|
|
18
|
-
pass
|
|
19
|
-
|
|
20
|
-
@abstractmethod
|
|
21
|
-
async def process(self, event: Update, api: API) -> bool:
|
|
22
|
-
pass
|
|
23
|
-
|
|
24
|
-
@abstractmethod
|
|
25
|
-
def load(self, external: typing.Self) -> None:
|
|
26
|
-
pass
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class ABCEventRawView(ABCView, ABC, typing.Generic[Event]):
|
|
30
|
-
handlers: list[ABCHandler[Event]]
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class ABCStateView(ABCView, typing.Generic[Event]):
|
|
34
|
-
@abstractmethod
|
|
35
|
-
def get_state_key(self, event: Event) -> int | None:
|
|
36
|
-
pass
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
__all__ = (
|
|
1
|
+
import typing
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
|
|
4
|
+
from telegrinder.api.api import API
|
|
5
|
+
from telegrinder.bot.cute_types.base import BaseCute
|
|
6
|
+
from telegrinder.bot.dispatch.handler.abc import ABCHandler
|
|
7
|
+
from telegrinder.types.objects import Update
|
|
8
|
+
|
|
9
|
+
Event = typing.TypeVar("Event", bound=BaseCute)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ABCView(ABC):
|
|
13
|
+
def __repr__(self) -> str:
|
|
14
|
+
return "<{}>".format(self.__class__.__name__)
|
|
15
|
+
|
|
16
|
+
@abstractmethod
|
|
17
|
+
async def check(self, event: Update) -> bool:
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
async def process(self, event: Update, api: API) -> bool:
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
@abstractmethod
|
|
25
|
+
def load(self, external: typing.Self) -> None:
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ABCEventRawView(ABCView, ABC, typing.Generic[Event]):
|
|
30
|
+
handlers: list[ABCHandler[Event]]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class ABCStateView(ABCView, typing.Generic[Event]):
|
|
34
|
+
@abstractmethod
|
|
35
|
+
def get_state_key(self, event: Event) -> int | None:
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
__all__ = (
|
|
40
40
|
"ABCEventRawView",
|
|
41
41
|
"ABCStateView",
|
|
42
|
-
"ABCView",
|
|
43
|
-
)
|
|
42
|
+
"ABCView",
|
|
43
|
+
)
|