telegrinder 0.4.2__py3-none-any.whl → 0.5.1__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.

Files changed (233) hide show
  1. telegrinder/__init__.py +37 -55
  2. telegrinder/__meta__.py +1 -0
  3. telegrinder/api/__init__.py +6 -4
  4. telegrinder/api/api.py +100 -26
  5. telegrinder/api/error.py +42 -8
  6. telegrinder/api/response.py +4 -1
  7. telegrinder/api/token.py +2 -2
  8. telegrinder/bot/__init__.py +9 -25
  9. telegrinder/bot/bot.py +31 -25
  10. telegrinder/bot/cute_types/__init__.py +0 -0
  11. telegrinder/bot/cute_types/base.py +103 -61
  12. telegrinder/bot/cute_types/callback_query.py +447 -400
  13. telegrinder/bot/cute_types/chat_join_request.py +59 -62
  14. telegrinder/bot/cute_types/chat_member_updated.py +154 -157
  15. telegrinder/bot/cute_types/inline_query.py +41 -44
  16. telegrinder/bot/cute_types/message.py +98 -67
  17. telegrinder/bot/cute_types/pre_checkout_query.py +38 -42
  18. telegrinder/bot/cute_types/update.py +1 -8
  19. telegrinder/bot/cute_types/utils.py +1 -1
  20. telegrinder/bot/dispatch/__init__.py +10 -15
  21. telegrinder/bot/dispatch/abc.py +12 -11
  22. telegrinder/bot/dispatch/action.py +104 -0
  23. telegrinder/bot/dispatch/context.py +32 -26
  24. telegrinder/bot/dispatch/dispatch.py +61 -134
  25. telegrinder/bot/dispatch/handler/__init__.py +2 -0
  26. telegrinder/bot/dispatch/handler/abc.py +10 -8
  27. telegrinder/bot/dispatch/handler/audio_reply.py +2 -3
  28. telegrinder/bot/dispatch/handler/base.py +10 -33
  29. telegrinder/bot/dispatch/handler/document_reply.py +2 -3
  30. telegrinder/bot/dispatch/handler/func.py +55 -87
  31. telegrinder/bot/dispatch/handler/media_group_reply.py +2 -3
  32. telegrinder/bot/dispatch/handler/message_reply.py +2 -3
  33. telegrinder/bot/dispatch/handler/photo_reply.py +2 -3
  34. telegrinder/bot/dispatch/handler/sticker_reply.py +2 -3
  35. telegrinder/bot/dispatch/handler/video_reply.py +2 -3
  36. telegrinder/bot/dispatch/middleware/__init__.py +0 -0
  37. telegrinder/bot/dispatch/middleware/abc.py +79 -55
  38. telegrinder/bot/dispatch/middleware/global_middleware.py +18 -33
  39. telegrinder/bot/dispatch/process.py +84 -105
  40. telegrinder/bot/dispatch/return_manager/__init__.py +0 -0
  41. telegrinder/bot/dispatch/return_manager/abc.py +102 -65
  42. telegrinder/bot/dispatch/return_manager/callback_query.py +4 -5
  43. telegrinder/bot/dispatch/return_manager/inline_query.py +3 -4
  44. telegrinder/bot/dispatch/return_manager/message.py +8 -10
  45. telegrinder/bot/dispatch/return_manager/pre_checkout_query.py +4 -5
  46. telegrinder/bot/dispatch/view/__init__.py +4 -4
  47. telegrinder/bot/dispatch/view/abc.py +6 -16
  48. telegrinder/bot/dispatch/view/base.py +54 -178
  49. telegrinder/bot/dispatch/view/box.py +19 -18
  50. telegrinder/bot/dispatch/view/callback_query.py +4 -8
  51. telegrinder/bot/dispatch/view/chat_join_request.py +5 -6
  52. telegrinder/bot/dispatch/view/chat_member.py +5 -25
  53. telegrinder/bot/dispatch/view/error.py +9 -0
  54. telegrinder/bot/dispatch/view/inline_query.py +4 -8
  55. telegrinder/bot/dispatch/view/message.py +5 -25
  56. telegrinder/bot/dispatch/view/pre_checkout_query.py +4 -8
  57. telegrinder/bot/dispatch/view/raw.py +3 -109
  58. telegrinder/bot/dispatch/waiter_machine/__init__.py +2 -5
  59. telegrinder/bot/dispatch/waiter_machine/actions.py +6 -4
  60. telegrinder/bot/dispatch/waiter_machine/hasher/__init__.py +1 -3
  61. telegrinder/bot/dispatch/waiter_machine/hasher/callback.py +1 -1
  62. telegrinder/bot/dispatch/waiter_machine/hasher/hasher.py +11 -7
  63. telegrinder/bot/dispatch/waiter_machine/hasher/message.py +0 -0
  64. telegrinder/bot/dispatch/waiter_machine/machine.py +43 -60
  65. telegrinder/bot/dispatch/waiter_machine/middleware.py +19 -23
  66. telegrinder/bot/dispatch/waiter_machine/short_state.py +6 -5
  67. telegrinder/bot/polling/__init__.py +0 -0
  68. telegrinder/bot/polling/abc.py +0 -0
  69. telegrinder/bot/polling/polling.py +209 -88
  70. telegrinder/bot/rules/__init__.py +3 -16
  71. telegrinder/bot/rules/abc.py +42 -122
  72. telegrinder/bot/rules/callback_data.py +29 -49
  73. telegrinder/bot/rules/chat_join.py +5 -23
  74. telegrinder/bot/rules/command.py +8 -4
  75. telegrinder/bot/rules/enum_text.py +3 -4
  76. telegrinder/bot/rules/func.py +7 -14
  77. telegrinder/bot/rules/fuzzy.py +3 -4
  78. telegrinder/bot/rules/inline.py +8 -20
  79. telegrinder/bot/rules/integer.py +2 -3
  80. telegrinder/bot/rules/is_from.py +12 -11
  81. telegrinder/bot/rules/logic.py +11 -5
  82. telegrinder/bot/rules/markup.py +22 -14
  83. telegrinder/bot/rules/mention.py +8 -7
  84. telegrinder/bot/rules/message_entities.py +8 -4
  85. telegrinder/bot/rules/node.py +23 -12
  86. telegrinder/bot/rules/payload.py +5 -4
  87. telegrinder/bot/rules/payment_invoice.py +6 -21
  88. telegrinder/bot/rules/regex.py +2 -4
  89. telegrinder/bot/rules/rule_enum.py +8 -7
  90. telegrinder/bot/rules/start.py +5 -6
  91. telegrinder/bot/rules/state.py +1 -1
  92. telegrinder/bot/rules/text.py +4 -15
  93. telegrinder/bot/rules/update.py +3 -4
  94. telegrinder/bot/scenario/__init__.py +0 -0
  95. telegrinder/bot/scenario/abc.py +6 -5
  96. telegrinder/bot/scenario/checkbox.py +1 -1
  97. telegrinder/bot/scenario/choice.py +30 -39
  98. telegrinder/client/__init__.py +3 -5
  99. telegrinder/client/abc.py +11 -6
  100. telegrinder/client/aiohttp.py +141 -27
  101. telegrinder/client/form_data.py +1 -1
  102. telegrinder/model.py +61 -89
  103. telegrinder/modules.py +325 -102
  104. telegrinder/msgspec_utils/__init__.py +40 -0
  105. telegrinder/msgspec_utils/abc.py +18 -0
  106. telegrinder/msgspec_utils/custom_types/__init__.py +6 -0
  107. telegrinder/msgspec_utils/custom_types/datetime.py +24 -0
  108. telegrinder/msgspec_utils/custom_types/enum_meta.py +43 -0
  109. telegrinder/msgspec_utils/custom_types/literal.py +25 -0
  110. telegrinder/msgspec_utils/custom_types/option.py +17 -0
  111. telegrinder/msgspec_utils/decoder.py +389 -0
  112. telegrinder/msgspec_utils/encoder.py +206 -0
  113. telegrinder/{msgspec_json.py → msgspec_utils/json.py} +6 -5
  114. telegrinder/msgspec_utils/tools.py +75 -0
  115. telegrinder/node/__init__.py +24 -7
  116. telegrinder/node/attachment.py +1 -0
  117. telegrinder/node/base.py +154 -72
  118. telegrinder/node/callback_query.py +5 -5
  119. telegrinder/node/collection.py +39 -0
  120. telegrinder/node/command.py +1 -2
  121. telegrinder/node/composer.py +121 -72
  122. telegrinder/node/container.py +11 -8
  123. telegrinder/node/context.py +48 -0
  124. telegrinder/node/either.py +27 -40
  125. telegrinder/node/error.py +41 -0
  126. telegrinder/node/event.py +37 -11
  127. telegrinder/node/exceptions.py +7 -0
  128. telegrinder/node/file.py +0 -0
  129. telegrinder/node/i18n.py +108 -0
  130. telegrinder/node/me.py +3 -2
  131. telegrinder/node/payload.py +1 -1
  132. telegrinder/node/polymorphic.py +63 -28
  133. telegrinder/node/reply_message.py +12 -0
  134. telegrinder/node/rule.py +6 -13
  135. telegrinder/node/scope.py +14 -5
  136. telegrinder/node/session.py +53 -0
  137. telegrinder/node/source.py +41 -9
  138. telegrinder/node/text.py +1 -2
  139. telegrinder/node/tools/__init__.py +0 -0
  140. telegrinder/node/tools/generator.py +3 -5
  141. telegrinder/node/utility.py +16 -0
  142. telegrinder/py.typed +0 -0
  143. telegrinder/rules.py +0 -0
  144. telegrinder/tools/__init__.py +48 -88
  145. telegrinder/tools/aio.py +103 -0
  146. telegrinder/tools/callback_data_serialization/__init__.py +5 -0
  147. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/abc.py +0 -0
  148. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/json_ser.py +2 -3
  149. telegrinder/tools/{callback_data_serilization → callback_data_serialization}/msgpack_ser.py +45 -27
  150. telegrinder/tools/final.py +21 -0
  151. telegrinder/tools/formatting/__init__.py +2 -18
  152. telegrinder/tools/formatting/deep_links/__init__.py +39 -0
  153. telegrinder/tools/formatting/{deep_links.py → deep_links/links.py} +12 -85
  154. telegrinder/tools/formatting/deep_links/parsing.py +90 -0
  155. telegrinder/tools/formatting/deep_links/validators.py +8 -0
  156. telegrinder/tools/formatting/html_formatter.py +18 -45
  157. telegrinder/tools/fullname.py +83 -0
  158. telegrinder/tools/global_context/__init__.py +4 -3
  159. telegrinder/tools/global_context/abc.py +17 -14
  160. telegrinder/tools/global_context/builtin_context.py +39 -0
  161. telegrinder/tools/global_context/global_context.py +138 -39
  162. telegrinder/tools/input_file_directory.py +0 -0
  163. telegrinder/tools/keyboard/__init__.py +39 -0
  164. telegrinder/tools/keyboard/abc.py +159 -0
  165. telegrinder/tools/keyboard/base.py +77 -0
  166. telegrinder/tools/keyboard/buttons/__init__.py +14 -0
  167. telegrinder/tools/keyboard/buttons/base.py +18 -0
  168. telegrinder/tools/{buttons.py → keyboard/buttons/buttons.py} +71 -23
  169. telegrinder/tools/keyboard/buttons/static_buttons.py +56 -0
  170. telegrinder/tools/keyboard/buttons/tools.py +18 -0
  171. telegrinder/tools/keyboard/data.py +20 -0
  172. telegrinder/tools/keyboard/keyboard.py +131 -0
  173. telegrinder/tools/keyboard/static_keyboard.py +83 -0
  174. telegrinder/tools/lifespan.py +87 -51
  175. telegrinder/tools/limited_dict.py +4 -1
  176. telegrinder/tools/loop_wrapper.py +332 -0
  177. telegrinder/tools/magic/__init__.py +32 -0
  178. telegrinder/tools/magic/annotations.py +165 -0
  179. telegrinder/tools/magic/dictionary.py +20 -0
  180. telegrinder/tools/magic/function.py +246 -0
  181. telegrinder/tools/magic/shortcut.py +111 -0
  182. telegrinder/tools/parse_mode.py +9 -3
  183. telegrinder/tools/singleton/__init__.py +4 -0
  184. telegrinder/tools/singleton/abc.py +14 -0
  185. telegrinder/tools/singleton/singleton.py +18 -0
  186. telegrinder/tools/state_storage/__init__.py +0 -0
  187. telegrinder/tools/state_storage/abc.py +6 -1
  188. telegrinder/tools/state_storage/memory.py +1 -1
  189. telegrinder/tools/strings.py +0 -0
  190. telegrinder/types/__init__.py +307 -268
  191. telegrinder/types/enums.py +68 -37
  192. telegrinder/types/input_file.py +3 -3
  193. telegrinder/types/methods.py +5699 -5055
  194. telegrinder/types/methods_utils.py +62 -0
  195. telegrinder/types/objects.py +1782 -994
  196. telegrinder/verification_utils.py +3 -1
  197. telegrinder-0.5.1.dist-info/METADATA +162 -0
  198. telegrinder-0.5.1.dist-info/RECORD +200 -0
  199. {telegrinder-0.4.2.dist-info → telegrinder-0.5.1.dist-info}/licenses/LICENSE +2 -2
  200. telegrinder/bot/dispatch/waiter_machine/hasher/state.py +0 -20
  201. telegrinder/bot/rules/id.py +0 -24
  202. telegrinder/bot/rules/message.py +0 -15
  203. telegrinder/client/sonic.py +0 -212
  204. telegrinder/msgspec_utils.py +0 -478
  205. telegrinder/tools/adapter/__init__.py +0 -19
  206. telegrinder/tools/adapter/abc.py +0 -49
  207. telegrinder/tools/adapter/dataclass.py +0 -56
  208. telegrinder/tools/adapter/errors.py +0 -5
  209. telegrinder/tools/adapter/event.py +0 -61
  210. telegrinder/tools/adapter/node.py +0 -46
  211. telegrinder/tools/adapter/raw_event.py +0 -27
  212. telegrinder/tools/adapter/raw_update.py +0 -30
  213. telegrinder/tools/callback_data_serilization/__init__.py +0 -5
  214. telegrinder/tools/error_handler/__init__.py +0 -10
  215. telegrinder/tools/error_handler/abc.py +0 -30
  216. telegrinder/tools/error_handler/error.py +0 -9
  217. telegrinder/tools/error_handler/error_handler.py +0 -179
  218. telegrinder/tools/formatting/spec_html_formats.py +0 -75
  219. telegrinder/tools/functional.py +0 -8
  220. telegrinder/tools/global_context/telegrinder_ctx.py +0 -27
  221. telegrinder/tools/i18n/__init__.py +0 -12
  222. telegrinder/tools/i18n/abc.py +0 -32
  223. telegrinder/tools/i18n/middleware/__init__.py +0 -3
  224. telegrinder/tools/i18n/middleware/abc.py +0 -22
  225. telegrinder/tools/i18n/simple.py +0 -43
  226. telegrinder/tools/keyboard.py +0 -132
  227. telegrinder/tools/loop_wrapper/__init__.py +0 -4
  228. telegrinder/tools/loop_wrapper/abc.py +0 -20
  229. telegrinder/tools/loop_wrapper/loop_wrapper.py +0 -169
  230. telegrinder/tools/magic.py +0 -344
  231. telegrinder-0.4.2.dist-info/METADATA +0 -151
  232. telegrinder-0.4.2.dist-info/RECORD +0 -182
  233. {telegrinder-0.4.2.dist-info → telegrinder-0.5.1.dist-info}/WHEEL +0 -0
@@ -6,18 +6,19 @@ import fntypes.option
6
6
  from fntypes.co import Result, Some, Variative
7
7
 
8
8
  from telegrinder.api.api import API, APIError
9
- from telegrinder.bot.cute_types.base import BaseCute, compose_method_params
9
+ from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
10
10
  from telegrinder.bot.cute_types.utils import compose_reactions, input_media
11
- from telegrinder.model import UNSET, From, field, get_params
11
+ from telegrinder.model import UNSET, From, field
12
12
  from telegrinder.msgspec_utils import Option
13
- from telegrinder.tools.magic import shortcut
14
13
  from telegrinder.types import *
14
+ from telegrinder.types.methods_utils import get_params
15
15
 
16
16
  if typing.TYPE_CHECKING:
17
- from datetime import datetime
17
+ from datetime import datetime, timedelta
18
18
 
19
19
  from telegrinder.bot.cute_types.callback_query import CallbackQueryCute
20
20
 
21
+ type MessageOrCallbackQuery = MessageCute | CallbackQueryCute
21
22
  type MediaType = typing.Literal[
22
23
  "animation",
23
24
  "audio",
@@ -40,7 +41,7 @@ async def execute_method_answer(
40
41
  default_params={"chat_id", "message_thread_id"},
41
42
  validators={"message_thread_id": lambda x: x.is_topic_message.unwrap_or(False)},
42
43
  )
43
- result = await getattr(message.ctx_api, method_name)(**params)
44
+ result = await getattr(message.api, method_name)(**params)
44
45
  return result.map(
45
46
  lambda x: (
46
47
  x
@@ -104,7 +105,7 @@ async def execute_method_edit(
104
105
  .map(
105
106
  lambda x: MessageCute.from_update(x, bound_api=update.api),
106
107
  )
107
- .unwrap_or(typing.cast(bool, v.v))
108
+ .unwrap_or(typing.cast("bool", v.v))
108
109
  )
109
110
  )
110
111
 
@@ -120,14 +121,12 @@ def get_entity_value(
120
121
 
121
122
  for entity in ents:
122
123
  if (obj := getattr(entity, entity_value, fntypes.option.Nothing())) is not fntypes.option.Nothing():
123
- return obj if isinstance(obj, Some) else Some(obj)
124
+ return obj if isinstance(obj, fntypes.option.Some) else fntypes.option.Some(obj)
124
125
 
125
126
  return fntypes.option.Nothing()
126
127
 
127
128
 
128
129
  class MessageCute(BaseCute[Message], Message, kw_only=True):
129
- api: API
130
-
131
130
  reply_to_message: Option[MessageCute] = field(
132
131
  default=UNSET,
133
132
  converter=From["MessageCute | None"],
@@ -180,7 +179,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
180
179
  entities: list[MessageEntity] | None = None,
181
180
  link_preview_options: LinkPreviewOptions | None = None,
182
181
  message_effect_id: str | None = None,
183
- message_thread_id: int | None = None,
182
+ message_thread_id: str | None = None,
184
183
  parse_mode: str | None = None,
185
184
  protect_content: bool | None = None,
186
185
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -232,7 +231,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
232
231
  link_preview_options: LinkPreviewOptions | None = None,
233
232
  message_effect_id: str | None = None,
234
233
  message_id: int | None = None,
235
- message_thread_id: int | None = None,
234
+ message_thread_id: str | None = None,
236
235
  parse_mode: str | None = None,
237
236
  protect_content: bool | None = None,
238
237
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -273,7 +272,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
273
272
  *,
274
273
  chat_id: int | None = None,
275
274
  message_id: int | None = None,
276
- message_thread_id: int | None = None,
275
+ message_thread_id: str | None = None,
277
276
  **other: typing.Any,
278
277
  ) -> Result[bool, APIError]:
279
278
  """Shortcut `API.delete_message()`, see the [documentation](https://core.telegram.org/bots/api#deletemessage)
@@ -303,7 +302,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
303
302
  custom_params={"link_preview_options", "message_thread_id", "message_id"},
304
303
  )
305
304
  async def edit(
306
- self,
305
+ self: MessageOrCallbackQuery,
307
306
  text: str,
308
307
  *,
309
308
  business_connection_id: str | None = None,
@@ -312,7 +311,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
312
311
  inline_message_id: str | None = None,
313
312
  link_preview_options: LinkPreviewOptions | None = None,
314
313
  message_id: int | None = None,
315
- message_thread_id: int | None = None,
314
+ message_thread_id: str | None = None,
316
315
  parse_mode: str | None = None,
317
316
  reply_markup: InlineKeyboardMarkup | None = None,
318
317
  **other: typing.Any,
@@ -356,13 +355,13 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
356
355
  disable_notification: bool | None = None,
357
356
  from_chat_id: int | str | None = None,
358
357
  message_id: int | None = None,
359
- message_thread_id: int | None = None,
358
+ message_thread_id: str | None = None,
360
359
  parse_mode: str | None = None,
361
360
  protect_content: bool | None = None,
362
361
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
363
362
  reply_parameters: ReplyParameters | None = None,
364
363
  show_caption_above_media: bool | None = None,
365
- video_start_timestamp: int | None = None,
364
+ video_start_timestamp: timedelta | int | None = None,
366
365
  **other: typing.Any,
367
366
  ) -> Result[MessageId, APIError]:
368
367
  """Shortcut `API.copy_message()`, see the [documentation](https://core.telegram.org/bots/api#copymessage)
@@ -401,7 +400,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
401
400
  chat_id: int | str | None = None,
402
401
  is_big: bool | None = None,
403
402
  message_id: int | None = None,
404
- message_thread_id: int | None = None,
403
+ message_thread_id: str | None = None,
405
404
  **other: typing.Any,
406
405
  ) -> Result[bool, APIError]:
407
406
  """Shortcut `API.set_message_reaction()`, see the [documentation](https://core.telegram.org/bots/api#setmessagereaction)
@@ -430,9 +429,9 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
430
429
  disable_notification: bool | None = None,
431
430
  from_chat_id: int | str | None = None,
432
431
  message_id: int | None = None,
433
- message_thread_id: int | None = None,
432
+ message_thread_id: str | None = None,
434
433
  protect_content: bool | None = None,
435
- video_start_timestamp: int | None = None,
434
+ video_start_timestamp: timedelta | int | None = None,
436
435
  **other: typing.Any,
437
436
  ) -> Result[MessageCute, APIError]:
438
437
  """Shortcut `API.forward_message()`, see the [documentation](https://core.telegram.org/bots/api#forwardmessage)
@@ -473,7 +472,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
473
472
  chat_id: int | str | None = None,
474
473
  disable_notification: bool | None = None,
475
474
  message_id: int | None = None,
476
- message_thread_id: int | None = None,
475
+ message_thread_id: str | None = None,
477
476
  **other: typing.Any,
478
477
  ) -> Result[bool, "APIError"]:
479
478
  """Shortcut `API.pin_chat_message()`, see the [documentation](https://core.telegram.org/bots/api#pinchatmessage)
@@ -505,7 +504,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
505
504
  business_connection_id: str | None = None,
506
505
  chat_id: int | str | None = None,
507
506
  message_id: int | None = None,
508
- message_thread_id: int | None = None,
507
+ message_thread_id: str | None = None,
509
508
  **other: typing.Any,
510
509
  ) -> Result[bool, "APIError"]:
511
510
  """Shortcut `API.unpin_chat_message()`, see the [documentation](https://core.telegram.org/bots/api#unpinchatmessage)
@@ -545,7 +544,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
545
544
  disable_notification: bool | None = None,
546
545
  duration: int | None = None,
547
546
  message_effect_id: str | None = None,
548
- message_thread_id: int | None = None,
547
+ message_thread_id: str | None = None,
549
548
  parse_mode: str | None = None,
550
549
  performer: str | None = None,
551
550
  protect_content: bool | None = None,
@@ -613,7 +612,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
613
612
  has_spoiler: bool | None = None,
614
613
  height: int | None = None,
615
614
  message_effect_id: str | None = None,
616
- message_thread_id: int | None = None,
615
+ message_thread_id: str | None = None,
617
616
  parse_mode: str | None = None,
618
617
  protect_content: bool | None = None,
619
618
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -680,7 +679,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
680
679
  disable_content_type_detection: bool | None = None,
681
680
  disable_notification: bool | None = None,
682
681
  message_effect_id: str | None = None,
683
- message_thread_id: int | None = None,
682
+ message_thread_id: str | None = None,
684
683
  parse_mode: str | None = None,
685
684
  protect_content: bool | None = None,
686
685
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -739,7 +738,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
739
738
  disable_notification: bool | None = None,
740
739
  has_spoiler: bool | None = None,
741
740
  message_effect_id: str | None = None,
742
- message_thread_id: int | None = None,
741
+ message_thread_id: str | None = None,
743
742
  parse_mode: str | None = None,
744
743
  protect_content: bool | None = None,
745
744
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -794,7 +793,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
794
793
  disable_notification: bool | None = None,
795
794
  emoji: str | None = None,
796
795
  message_effect_id: str | None = None,
797
- message_thread_id: int | None = None,
796
+ message_thread_id: str | None = None,
798
797
  protect_content: bool | None = None,
799
798
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
800
799
  reply_parameters: ReplyParameters | None = None,
@@ -847,12 +846,12 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
847
846
  has_spoiler: bool | None = None,
848
847
  height: int | None = None,
849
848
  message_effect_id: str | None = None,
850
- message_thread_id: int | None = None,
849
+ message_thread_id: str | None = None,
851
850
  protect_content: bool | None = None,
852
851
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
853
852
  reply_parameters: ReplyParameters | None = None,
854
853
  show_caption_above_media: bool | None = None,
855
- start_timestamp: int | None = None,
854
+ start_timestamp: timedelta | int | None = None,
856
855
  supports_streaming: bool | None = None,
857
856
  thumbnail: InputFile | str | None = None,
858
857
  width: int | None = None,
@@ -921,7 +920,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
921
920
  duration: int | None = None,
922
921
  length: int | None = None,
923
922
  message_effect_id: str | None = None,
924
- message_thread_id: int | None = None,
923
+ message_thread_id: str | None = None,
925
924
  protect_content: bool | None = None,
926
925
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
927
926
  reply_parameters: ReplyParameters | None = None,
@@ -975,7 +974,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
975
974
  disable_notification: bool | None = None,
976
975
  duration: int | None = None,
977
976
  message_effect_id: str | None = None,
978
- message_thread_id: int | None = None,
977
+ message_thread_id: str | None = None,
979
978
  parse_mode: str | None = None,
980
979
  protect_content: bool | None = None,
981
980
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1040,7 +1039,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1040
1039
  is_anonymous: bool | None = None,
1041
1040
  is_closed: bool | None = None,
1042
1041
  message_effect_id: str | None = None,
1043
- message_thread_id: int | None = None,
1042
+ message_thread_id: str | None = None,
1044
1043
  open_period: int | None = None,
1045
1044
  protect_content: bool | None = None,
1046
1045
  question_entities: list[MessageEntity] | None = None,
@@ -1066,7 +1065,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1066
1065
 
1067
1066
  :param question_entities: A JSON-serialized list of special entities that appear in the poll question.It can be specified instead of question_parse_mode.
1068
1067
 
1069
- :param options: A JSON-serialized list of 2-10 answer options.
1068
+ :param options: A JSON-serialized list of 2-12 answer options.
1070
1069
 
1071
1070
  :param is_anonymous: True, if the poll needs to be anonymous, defaults to True.
1072
1071
 
@@ -1121,7 +1120,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1121
1120
  google_place_id: str | None = None,
1122
1121
  google_place_type: str | None = None,
1123
1122
  message_effect_id: str | None = None,
1124
- message_thread_id: int | None = None,
1123
+ message_thread_id: str | None = None,
1125
1124
  protect_content: bool | None = None,
1126
1125
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1127
1126
  reply_parameters: ReplyParameters | None = None,
@@ -1179,7 +1178,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1179
1178
  chat_id: int | str | None = None,
1180
1179
  disable_notification: bool | None = None,
1181
1180
  message_effect_id: str | None = None,
1182
- message_thread_id: int | None = None,
1181
+ message_thread_id: str | None = None,
1183
1182
  protect_content: bool | None = None,
1184
1183
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1185
1184
  reply_parameters: ReplyParameters | None = None,
@@ -1222,7 +1221,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1222
1221
  chat_id: int | str | None = None,
1223
1222
  disable_notification: bool | None = None,
1224
1223
  message_effect_id: str | None = None,
1225
- message_thread_id: int | None = None,
1224
+ message_thread_id: str | None = None,
1226
1225
  protect_content: bool | None = None,
1227
1226
  reply_markup: InlineKeyboardMarkup | None = None,
1228
1227
  reply_parameters: ReplyParameters | None = None,
@@ -1271,7 +1270,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1271
1270
  is_flexible: bool | None = None,
1272
1271
  max_tip_amount: int | None = None,
1273
1272
  message_effect_id: str | None = None,
1274
- message_thread_id: int | None = None,
1273
+ message_thread_id: str | None = None,
1275
1274
  need_email: bool | None = None,
1276
1275
  need_name: bool | None = None,
1277
1276
  need_phone_number: bool | None = None,
@@ -1307,7 +1306,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1307
1306
  *,
1308
1307
  business_connection_id: str | None = None,
1309
1308
  chat_id: int | str | None = None,
1310
- message_thread_id: int | None = None,
1309
+ message_thread_id: str | None = None,
1311
1310
  **other: typing.Any,
1312
1311
  ) -> Result[bool, APIError]:
1313
1312
  """Shortcut `API.send_chat_action()`, see the [documentation](https://core.telegram.org/bots/api#sendchataction)
@@ -1339,7 +1338,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1339
1338
  disable_notification: bool | None = None,
1340
1339
  media_type: MediaType | None = None,
1341
1340
  message_effect_id: str | None = None,
1342
- message_thread_id: int | None = None,
1341
+ message_thread_id: str | None = None,
1343
1342
  protect_content: bool | None = None,
1344
1343
  reply_parameters: ReplyParameters | None = None,
1345
1344
  **other: typing.Any,
@@ -1386,7 +1385,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1386
1385
  horizontal_accuracy: float | None = None,
1387
1386
  live_period: int | None = None,
1388
1387
  message_effect_id: str | None = None,
1389
- message_thread_id: int | None = None,
1388
+ message_thread_id: str | None = None,
1390
1389
  protect_content: bool | None = None,
1391
1390
  proximity_alert_radius: int | None = None,
1392
1391
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1440,7 +1439,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1440
1439
  disable_notification: bool | None = None,
1441
1440
  last_name: str | None = None,
1442
1441
  message_effect_id: str | None = None,
1443
- message_thread_id: int | None = None,
1442
+ message_thread_id: str | None = None,
1444
1443
  protect_content: bool | None = None,
1445
1444
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1446
1445
  reply_parameters: ReplyParameters | None = None,
@@ -1493,7 +1492,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1493
1492
  disable_notification: bool | None = None,
1494
1493
  duration: int | None = None,
1495
1494
  message_effect_id: str | None = None,
1496
- message_thread_id: int | None = None,
1495
+ message_thread_id: str | None = None,
1497
1496
  parse_mode: str | None = None,
1498
1497
  performer: str | None = None,
1499
1498
  protect_content: bool | None = None,
@@ -1561,7 +1560,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1561
1560
  has_spoiler: bool | None = None,
1562
1561
  height: int | None = None,
1563
1562
  message_effect_id: str | None = None,
1564
- message_thread_id: int | None = None,
1563
+ message_thread_id: str | None = None,
1565
1564
  parse_mode: str | None = None,
1566
1565
  protect_content: bool | None = None,
1567
1566
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1628,7 +1627,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1628
1627
  disable_content_type_detection: bool | None = None,
1629
1628
  disable_notification: bool | None = None,
1630
1629
  message_effect_id: str | None = None,
1631
- message_thread_id: int | None = None,
1630
+ message_thread_id: str | None = None,
1632
1631
  parse_mode: str | None = None,
1633
1632
  protect_content: bool | None = None,
1634
1633
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1687,7 +1686,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1687
1686
  disable_notification: bool | None = None,
1688
1687
  has_spoiler: bool | None = None,
1689
1688
  message_effect_id: str | None = None,
1690
- message_thread_id: int | None = None,
1689
+ message_thread_id: str | None = None,
1691
1690
  parse_mode: str | None = None,
1692
1691
  protect_content: bool | None = None,
1693
1692
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1742,7 +1741,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1742
1741
  disable_notification: bool | None = None,
1743
1742
  emoji: str | None = None,
1744
1743
  message_effect_id: str | None = None,
1745
- message_thread_id: int | None = None,
1744
+ message_thread_id: str | None = None,
1746
1745
  protect_content: bool | None = None,
1747
1746
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1748
1747
  reply_parameters: ReplyParameters | None = None,
@@ -1795,12 +1794,12 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1795
1794
  has_spoiler: bool | None = None,
1796
1795
  height: int | None = None,
1797
1796
  message_effect_id: str | None = None,
1798
- message_thread_id: int | None = None,
1797
+ message_thread_id: str | None = None,
1799
1798
  protect_content: bool | None = None,
1800
1799
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1801
1800
  reply_parameters: ReplyParameters | None = None,
1802
1801
  show_caption_above_media: bool | None = None,
1803
- start_timestamp: int | None = None,
1802
+ start_timestamp: timedelta | int | None = None,
1804
1803
  supports_streaming: bool | None = None,
1805
1804
  thumbnail: InputFile | str | None = None,
1806
1805
  width: int | None = None,
@@ -1869,7 +1868,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1869
1868
  duration: int | None = None,
1870
1869
  length: int | None = None,
1871
1870
  message_effect_id: str | None = None,
1872
- message_thread_id: int | None = None,
1871
+ message_thread_id: str | None = None,
1873
1872
  protect_content: bool | None = None,
1874
1873
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
1875
1874
  reply_parameters: ReplyParameters | None = None,
@@ -1923,7 +1922,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1923
1922
  disable_notification: bool | None = None,
1924
1923
  duration: int | None = None,
1925
1924
  message_effect_id: str | None = None,
1926
- message_thread_id: int | None = None,
1925
+ message_thread_id: str | None = None,
1927
1926
  parse_mode: str | None = None,
1928
1927
  protect_content: bool | None = None,
1929
1928
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -1988,7 +1987,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
1988
1987
  is_anonymous: bool | None = None,
1989
1988
  is_closed: bool | None = None,
1990
1989
  message_effect_id: str | None = None,
1991
- message_thread_id: int | None = None,
1990
+ message_thread_id: str | None = None,
1992
1991
  open_period: int | None = None,
1993
1992
  protect_content: bool | None = None,
1994
1993
  question_entities: list[MessageEntity] | None = None,
@@ -2014,7 +2013,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2014
2013
 
2015
2014
  :param question_entities: A JSON-serialized list of special entities that appear in the poll question.It can be specified instead of question_parse_mode.
2016
2015
 
2017
- :param options: A JSON-serialized list of 2-10 answer options.
2016
+ :param options: A JSON-serialized list of 2-12 answer options.
2018
2017
 
2019
2018
  :param is_anonymous: True, if the poll needs to be anonymous, defaults to True.
2020
2019
 
@@ -2069,7 +2068,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2069
2068
  google_place_id: str | None = None,
2070
2069
  google_place_type: str | None = None,
2071
2070
  message_effect_id: str | None = None,
2072
- message_thread_id: int | None = None,
2071
+ message_thread_id: str | None = None,
2073
2072
  protect_content: bool | None = None,
2074
2073
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
2075
2074
  reply_parameters: ReplyParameters | None = None,
@@ -2127,7 +2126,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2127
2126
  chat_id: int | str | None = None,
2128
2127
  disable_notification: bool | None = None,
2129
2128
  message_effect_id: str | None = None,
2130
- message_thread_id: int | None = None,
2129
+ message_thread_id: str | None = None,
2131
2130
  protect_content: bool | None = None,
2132
2131
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
2133
2132
  reply_parameters: ReplyParameters | None = None,
@@ -2170,7 +2169,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2170
2169
  chat_id: int | str | None = None,
2171
2170
  disable_notification: bool | None = None,
2172
2171
  message_effect_id: str | None = None,
2173
- message_thread_id: int | None = None,
2172
+ message_thread_id: str | None = None,
2174
2173
  protect_content: bool | None = None,
2175
2174
  reply_markup: InlineKeyboardMarkup | None = None,
2176
2175
  reply_parameters: ReplyParameters | None = None,
@@ -2219,7 +2218,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2219
2218
  is_flexible: bool | None = None,
2220
2219
  max_tip_amount: int | None = None,
2221
2220
  message_effect_id: str | None = None,
2222
- message_thread_id: int | None = None,
2221
+ message_thread_id: str | None = None,
2223
2222
  need_email: bool | None = None,
2224
2223
  need_name: bool | None = None,
2225
2224
  need_phone_number: bool | None = None,
@@ -2261,7 +2260,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2261
2260
  chat_id: int | str | None = None,
2262
2261
  disable_notification: bool | None = None,
2263
2262
  message_effect_id: str | None = None,
2264
- message_thread_id: int | None = None,
2263
+ message_thread_id: str | None = None,
2265
2264
  protect_content: bool | None = None,
2266
2265
  reply_parameters: ReplyParameters | None = None,
2267
2266
  **other: typing.Any,
@@ -2308,7 +2307,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2308
2307
  horizontal_accuracy: float | None = None,
2309
2308
  live_period: int | None = None,
2310
2309
  message_effect_id: str | None = None,
2311
- message_thread_id: int | None = None,
2310
+ message_thread_id: str | None = None,
2312
2311
  protect_content: bool | None = None,
2313
2312
  proximity_alert_radius: int | None = None,
2314
2313
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
@@ -2362,7 +2361,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2362
2361
  disable_notification: bool | None = None,
2363
2362
  last_name: str | None = None,
2364
2363
  message_effect_id: str | None = None,
2365
- message_thread_id: int | None = None,
2364
+ message_thread_id: str | None = None,
2366
2365
  protect_content: bool | None = None,
2367
2366
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | ReplyKeyboardRemove | ForceReply | None = None,
2368
2367
  reply_parameters: ReplyParameters | None = None,
@@ -2404,8 +2403,9 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2404
2403
  custom_params={"message_thread_id", "chat_id", "message_id"},
2405
2404
  )
2406
2405
  async def edit_live_location(
2407
- self,
2406
+ self: MessageOrCallbackQuery,
2408
2407
  *,
2408
+ latitude: float,
2409
2409
  longitude: float,
2410
2410
  business_connection_id: str | None = None,
2411
2411
  chat_id: int | str | None = None,
@@ -2414,7 +2414,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2414
2414
  inline_message_id: str | None = None,
2415
2415
  live_period: int | None = None,
2416
2416
  message_id: int | None = None,
2417
- message_thread_id: int | None = None,
2417
+ message_thread_id: str | None = None,
2418
2418
  proximity_alert_radius: int | None = None,
2419
2419
  reply_markup: InlineKeyboardMarkup | None = None,
2420
2420
  **other: typing.Any,
@@ -2452,7 +2452,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2452
2452
  custom_params={"message_thread_id", "chat_id", "message_id"},
2453
2453
  )
2454
2454
  async def edit_caption(
2455
- self,
2455
+ self: MessageOrCallbackQuery,
2456
2456
  caption: str | None = None,
2457
2457
  *,
2458
2458
  business_connection_id: str | None = None,
@@ -2460,7 +2460,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2460
2460
  chat_id: int | str | None = None,
2461
2461
  inline_message_id: str | None = None,
2462
2462
  message_id: int | None = None,
2463
- message_thread_id: int | None = None,
2463
+ message_thread_id: str | None = None,
2464
2464
  parse_mode: str | None = None,
2465
2465
  reply_markup: InlineKeyboardMarkup | None = None,
2466
2466
  show_caption_above_media: bool | None = None,
@@ -2490,6 +2490,37 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2490
2490
  :param reply_markup: A JSON-serialized object for an inline keyboard."""
2491
2491
  ...
2492
2492
 
2493
+ @typing.overload
2494
+ async def edit_media(
2495
+ self,
2496
+ media: InputMedia,
2497
+ *,
2498
+ business_connection_id: str | None = None,
2499
+ chat_id: int | str | None = None,
2500
+ inline_message_id: str | None = None,
2501
+ message_id: int | None = None,
2502
+ message_thread_id: str | None = None,
2503
+ reply_markup: InlineKeyboardMarkup | None = None,
2504
+ **other: typing.Any,
2505
+ ) -> Result[Variative[MessageCute, bool], APIError]: ...
2506
+
2507
+ @typing.overload
2508
+ async def edit_media(
2509
+ self,
2510
+ media: InputFile | str,
2511
+ type: MediaType,
2512
+ *,
2513
+ caption: str | None = None,
2514
+ caption_entities: list[MessageEntity] | None = None,
2515
+ business_connection_id: str | None = None,
2516
+ chat_id: int | str | None = None,
2517
+ inline_message_id: str | None = None,
2518
+ message_id: int | None = None,
2519
+ message_thread_id: str | None = None,
2520
+ reply_markup: InlineKeyboardMarkup | None = None,
2521
+ **other: typing.Any,
2522
+ ) -> Result[Variative[MessageCute, bool], APIError]: ...
2523
+
2493
2524
  @shortcut(
2494
2525
  "edit_message_media",
2495
2526
  custom_params={
@@ -2506,6 +2537,7 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2506
2537
  async def edit_media(
2507
2538
  self,
2508
2539
  media: InputFile | InputMedia | str,
2540
+ type: MediaType | None = None,
2509
2541
  *,
2510
2542
  business_connection_id: str | None = None,
2511
2543
  caption: str | None = None,
@@ -2513,10 +2545,9 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2513
2545
  chat_id: int | str | None = None,
2514
2546
  inline_message_id: str | None = None,
2515
2547
  message_id: int | None = None,
2516
- message_thread_id: int | None = None,
2517
- parse_mode: str | None = None,
2548
+ message_thread_id: str | None = None,
2549
+ parse_mode: str | None = API.default_params["parse_mode"],
2518
2550
  reply_markup: InlineKeyboardMarkup | None = None,
2519
- type: MediaType | None = None,
2520
2551
  **other: typing.Any,
2521
2552
  ) -> Result[Variative[MessageCute, bool], APIError]:
2522
2553
  """Shortcut `API.edit_message_media()`, see the [documentation](https://core.telegram.org/bots/api#editmessagemedia)
@@ -2559,13 +2590,13 @@ class MessageCute(BaseCute[Message], Message, kw_only=True):
2559
2590
  custom_params={"message_thread_id", "chat_id", "message_id"},
2560
2591
  )
2561
2592
  async def edit_reply_markup(
2562
- self,
2593
+ self: MessageOrCallbackQuery,
2563
2594
  *,
2564
2595
  business_connection_id: str | None = None,
2565
2596
  chat_id: int | str | None = None,
2566
2597
  inline_message_id: str | None = None,
2567
2598
  message_id: int | None = None,
2568
- message_thread_id: int | None = None,
2599
+ message_thread_id: str | None = None,
2569
2600
  reply_markup: InlineKeyboardMarkup | None = None,
2570
2601
  **other: typing.Any,
2571
2602
  ) -> Result[Variative[MessageCute, bool], APIError]:
@@ -1,42 +1,38 @@
1
- import typing
2
-
3
- from fntypes.result import Result
4
-
5
- from telegrinder.api.api import API
6
- from telegrinder.api.error import APIError
7
- from telegrinder.bot.cute_types.base import BaseCute, compose_method_params
8
- from telegrinder.model import get_params
9
- from telegrinder.tools.magic import shortcut
10
- from telegrinder.types.objects import PreCheckoutQuery, User
11
-
12
-
13
- class PreCheckoutQueryCute(BaseCute[PreCheckoutQuery], PreCheckoutQuery, kw_only=True):
14
- api: API
15
-
16
- @property
17
- def from_user(self) -> User:
18
- return self.from_
19
-
20
- @shortcut("answer_pre_checkout_query", custom_params={"pre_checkout_query_id"})
21
- async def answer(
22
- self,
23
- ok: bool,
24
- *,
25
- error_message: str | None = None,
26
- pre_checkout_query_id: str | None = None,
27
- **other: typing.Any,
28
- ) -> Result[bool, APIError]:
29
- """Shortcut `API.answer_pre_checkout_query()`, see the [documentation](https://core.telegram.org/bots/api#answerprecheckoutquery)
30
-
31
- Once the user has confirmed their payment and shipping details, the Bot
32
- API sends the final confirmation in the form of an Update with the field pre_checkout_query.
33
- Use this method to respond to such pre-checkout queries. On success, True
34
- is returned. Note: The Bot API must receive an answer within 10 seconds after
35
- the pre-checkout query was sent."""
36
- params = compose_method_params(
37
- get_params(locals()), self, default_params={("pre_checkout_query_id", "id")}
38
- )
39
- return await self.ctx_api.answer_pre_checkout_query(**params)
40
-
41
-
42
- __all__ = ("PreCheckoutQueryCute",)
1
+ import typing
2
+
3
+ from fntypes.result import Result
4
+
5
+ from telegrinder.api.error import APIError
6
+ from telegrinder.bot.cute_types.base import BaseCute, compose_method_params, shortcut
7
+ from telegrinder.types.methods_utils import get_params
8
+ from telegrinder.types.objects import PreCheckoutQuery, User
9
+
10
+
11
+ class PreCheckoutQueryCute(BaseCute[PreCheckoutQuery], PreCheckoutQuery, kw_only=True):
12
+ @property
13
+ def from_user(self) -> User:
14
+ return self.from_
15
+
16
+ @shortcut("answer_pre_checkout_query", custom_params={"pre_checkout_query_id"})
17
+ async def answer(
18
+ self,
19
+ ok: bool,
20
+ *,
21
+ error_message: str | None = None,
22
+ pre_checkout_query_id: str | None = None,
23
+ **other: typing.Any,
24
+ ) -> Result[bool, APIError]:
25
+ """Shortcut `API.answer_pre_checkout_query()`, see the [documentation](https://core.telegram.org/bots/api#answerprecheckoutquery)
26
+
27
+ Once the user has confirmed their payment and shipping details, the Bot
28
+ API sends the final confirmation in the form of an Update with the field pre_checkout_query.
29
+ Use this method to respond to such pre-checkout queries. On success, True
30
+ is returned. Note: The Bot API must receive an answer within 10 seconds after
31
+ the pre-checkout query was sent."""
32
+ params = compose_method_params(
33
+ get_params(locals()), self, default_params={("pre_checkout_query_id", "id")}
34
+ )
35
+ return await self.ctx_api.answer_pre_checkout_query(**params)
36
+
37
+
38
+ __all__ = ("PreCheckoutQueryCute",)