telegrinder 0.1.dev160__py3-none-any.whl → 0.1.dev161__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/api/abc.py CHANGED
@@ -17,6 +17,9 @@ class Token(str):
17
17
  if token.count(":") != 1 or not token.split(":")[0].isdigit():
18
18
  raise InvalidTokenError("Invalid token, it should look like this '123:ABC'.")
19
19
  return super().__new__(cls, token)
20
+
21
+ def __repr__(self) -> str:
22
+ return f"<Token: {self.bot_id}:{''.join(self.split(':')[-1])[:6]}...>"
20
23
 
21
24
  @classmethod
22
25
  def from_env(
telegrinder/api/api.py CHANGED
@@ -24,7 +24,7 @@ def compose_data(
24
24
 
25
25
 
26
26
  class API(ABCAPI, APIMethods):
27
- API_URL: typing.ClassVar[str] = "https://api.telegram.org/"
27
+ API_URL = "https://api.telegram.org/"
28
28
 
29
29
  def __init__(self, token: Token, *, http: ABCClient | None = None) -> None:
30
30
  self.token = token
@@ -32,9 +32,9 @@ class API(ABCAPI, APIMethods):
32
32
  super().__init__(self)
33
33
 
34
34
  def __repr__(self) -> str:
35
- return "<{}: id={}, http={!r}>".format(
35
+ return "<{}: token={!r}, http={!r}>".format(
36
36
  self.__class__.__name__,
37
- self.id,
37
+ self.token,
38
38
  self.http,
39
39
  )
40
40
 
@@ -1,5 +1,5 @@
1
1
  from .abc import ABCScenario
2
- from .checkbox import Checkbox
2
+ from .checkbox import Checkbox, Choice
3
3
  from .choice import SingleChoice
4
4
 
5
- __all__ = ("ABCScenario", "Checkbox", "SingleChoice")
5
+ __all__ = ("ABCScenario", "Checkbox", "Choice", "SingleChoice")
@@ -1,6 +1,5 @@
1
1
  import dataclasses
2
- import random
3
- import string
2
+ import secrets
4
3
  import typing
5
4
 
6
5
  from telegrinder.bot.cute_types import CallbackQueryCute
@@ -25,29 +24,26 @@ class Choice:
25
24
  code: str
26
25
 
27
26
 
28
- def random_code(length: int) -> str:
29
- return "".join(random.choices(string.ascii_letters + string.digits, k=length))
30
-
31
-
32
27
  class Checkbox(ABCScenario[CallbackQueryCute]):
33
- INVALID_CODE: typing.ClassVar[str] = "Invalid code"
34
- CALLBACK_ANSWER: typing.ClassVar[str] = "Done"
35
- PARSE_MODE: typing.ClassVar[str] = ParseMode.MARKDOWNV2
28
+ INVALID_CODE = "Invalid code"
29
+ CALLBACK_ANSWER = "Done"
30
+ PARSE_MODE = ParseMode.HTML
36
31
 
37
32
  def __init__(
38
33
  self,
39
34
  waiter_machine: WaiterMachine,
40
35
  chat_id: int,
41
36
  msg: str,
37
+ *,
42
38
  ready_text: str = "Ready",
43
39
  max_in_row: int = 3,
44
- ):
40
+ ) -> None:
45
41
  self.chat_id = chat_id
46
42
  self.msg = msg
47
43
  self.choices: list[Choice] = []
48
44
  self.ready = ready_text
49
45
  self.max_in_row = max_in_row
50
- self.random_code = random_code(16)
46
+ self.random_code = secrets.token_hex(16)
51
47
  self.waiter_machine = waiter_machine
52
48
 
53
49
  def get_markup(self) -> InlineKeyboardMarkup:
@@ -77,7 +73,7 @@ class Checkbox(ABCScenario[CallbackQueryCute]):
77
73
  is_picked: bool = False,
78
74
  ) -> typing.Self:
79
75
  self.choices.append(
80
- Choice(name, is_picked, default_text, picked_text, random_code(16)),
76
+ Choice(name, is_picked, default_text, picked_text, secrets.token_hex(16)),
81
77
  )
82
78
  return self
83
79
 
@@ -128,4 +124,4 @@ class Checkbox(ABCScenario[CallbackQueryCute]):
128
124
  )
129
125
 
130
126
 
131
- __all__ = ("Checkbox", "Choice", "random_code")
127
+ __all__ = ("Checkbox", "Choice")
@@ -34,11 +34,11 @@ class SingleChoice(Checkbox):
34
34
  async def wait(
35
35
  self,
36
36
  api: "API",
37
- cb_view: "BaseStateView[CallbackQueryCute]",
37
+ view: "BaseStateView[CallbackQueryCute]",
38
38
  ) -> tuple[str, int]:
39
39
  if len([choice for choice in self.choices if choice.is_picked]) != 1:
40
40
  raise ValueError("Exactly one choice must be picked")
41
- choices, m_id = await super().wait(api, cb_view)
41
+ choices, m_id = await super().wait(api, view)
42
42
  return list(choices.keys())[list(choices.values()).index(True)], m_id
43
43
 
44
44
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: telegrinder
3
- Version: 0.1.dev160
3
+ Version: 0.1.dev161
4
4
  Summary: Framework for effective and reliable async telegram bot building.
5
5
  Home-page: https://github.com/timoniq/telegrinder
6
6
  License: MIT
@@ -1,7 +1,7 @@
1
1
  telegrinder/__init__.py,sha256=iAaXnpZbc6xcdpHv56K6Hbi8KFryT--wC8UZo4sOUXk,2859
2
2
  telegrinder/api/__init__.py,sha256=pIDtnsL0NwT5PgVm43Gkp-ByOqDsqnD-oFDiC9tcPT4,246
3
- telegrinder/api/abc.py,sha256=STaVKkWr4SCfVrmNXU-JpSmaNNIeb8oB1S4jxOuucX8,1688
4
- telegrinder/api/api.py,sha256=d3K5QSL_Ist40qddoTy18-RQ2f7jh1Vvjn6LShp0QII,2400
3
+ telegrinder/api/abc.py,sha256=5pK6zqZtLphnOVAYwa8sT15F940gCQNzy53nyUTZWWQ,1803
4
+ telegrinder/api/api.py,sha256=q7E3CmEGGZNArA-evH1UWFf3tbBvo1SwKGeMmkwnUCw,2386
5
5
  telegrinder/api/error.py,sha256=7qOYpP3P-s1p235Gp4VhCxcpY5VX8KyK_md3_-M-NCQ,390
6
6
  telegrinder/api/response.py,sha256=d7Oxd5kOdbZNJiALkzkecHl8Y3K_BzCmsRq2Sn3otqA,491
7
7
  telegrinder/bot/__init__.py,sha256=tLEUne5ftvKUVlkMAtPTO1_TSHkYJBbG73LuiBeC7gk,1560
@@ -65,10 +65,10 @@ telegrinder/bot/rules/regex.py,sha256=wqGEEiFqe5t_RwX9KjVCtg0wRZfwqo1ktGvNBo9JaK
65
65
  telegrinder/bot/rules/rule_enum.py,sha256=BUd78f7fEa0hfu1Paa384_Q-r0lB-ZWWukqkrFXdn58,2083
66
66
  telegrinder/bot/rules/start.py,sha256=5ok581Ww56g27rE4QkrykbBZ-ER-SnATQNzMGut2PHA,1183
67
67
  telegrinder/bot/rules/text.py,sha256=LaY8A2KUYDZpIllYTRSXXCwWfDN6dnFFmdvXM1nCKvA,1147
68
- telegrinder/bot/scenario/__init__.py,sha256=sH-n6ZhVPgAiAgQVY9Y8QA4wjkjR5a5z63Oa0PrWogs,148
68
+ telegrinder/bot/scenario/__init__.py,sha256=Ehe2uH-eQ-vRBPxIzdmE23B-FBOAa9YQyndmb6K8C5E,166
69
69
  telegrinder/bot/scenario/abc.py,sha256=3AZYRjZlkbDtyFbsKdZ6BefzWYlJ0DOrGwh8jI3nzv4,474
70
- telegrinder/bot/scenario/checkbox.py,sha256=lTPXTxIISCQk2qDmtdj5KLcFsxp5p0QjK8ybT8KHpsk,3956
71
- telegrinder/bot/scenario/choice.py,sha256=dbRBBSHwODtik95vm4A5SPMbRrDjqVxUbTfNHnnzsFo,1448
70
+ telegrinder/bot/scenario/checkbox.py,sha256=n4eYbyhn6AKHDF7Ek_LOiuH7O3YuSErEa2yZ1mlTe-s,3765
71
+ telegrinder/bot/scenario/choice.py,sha256=-NYyzgfGI0njVuT-EY0j3jS4tPlsKOEkZaUagtns7dE,1442
72
72
  telegrinder/client/__init__.py,sha256=ZiS1Wb_l_kv3FHzEEi1oXtFLwlA_HXmWOzeN0xA3E7Y,104
73
73
  telegrinder/client/abc.py,sha256=OxsTX_PLYBEeFT9zpidFUzAbQL9BM7rQqru7zdn5DiQ,1611
74
74
  telegrinder/client/aiohttp.py,sha256=vGJDAttRVasDZJn39KgUFFZ0nowf7iXTRKcFTO85vwQ,4163
@@ -121,7 +121,7 @@ telegrinder/types/__init__.py,sha256=pvPKWDXq9PBiIOCW8dFcJMqgr1kAqodPhwT-u8I4kug
121
121
  telegrinder/types/enums.py,sha256=lahMwaLRB8Y2KTqRNyHr5veQ4KgPMuZmDQ_F0Th1LlA,18127
122
122
  telegrinder/types/methods.py,sha256=2ezfJ6iQHNcb3qta_GkjTqRXbROIlweL-wr1C5F_DlA,180182
123
123
  telegrinder/types/objects.py,sha256=YA2lq0x3RFOxpGOGfs8DlU-ESxtBclNmE-l1Ryi15so,205771
124
- telegrinder-0.1.dev160.dist-info/LICENSE,sha256=J9ngGsqHCNNjpm3xYPT7EnlzsnjhfqNXej5mJFjM6lw,1094
125
- telegrinder-0.1.dev160.dist-info/METADATA,sha256=S3z-GN6tzKtNnnUZ-MpaVop7NG3ZSH5Dt14eWZwfEKU,2892
126
- telegrinder-0.1.dev160.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
127
- telegrinder-0.1.dev160.dist-info/RECORD,,
124
+ telegrinder-0.1.dev161.dist-info/LICENSE,sha256=J9ngGsqHCNNjpm3xYPT7EnlzsnjhfqNXej5mJFjM6lw,1094
125
+ telegrinder-0.1.dev161.dist-info/METADATA,sha256=-qWSanyZ5vSU1QOLf3CARwnZV-ikNpnFotZecd_FQEI,2892
126
+ telegrinder-0.1.dev161.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
127
+ telegrinder-0.1.dev161.dist-info/RECORD,,