Skip to content

Commit da4ff26

Browse files
committed
Add edit, edit_caption, edit_media and edit_reply_markup bound methods to the CallbackQuery type
1 parent 22199b0 commit da4ff26

3 files changed

Lines changed: 187 additions & 1 deletion

File tree

docs/source/api/bound-methods.rst

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,13 @@ CallbackQuery
8181
^^^^^^^^^^^^^
8282

8383
.. hlist::
84-
:columns: 2
84+
:columns: 5
8585

8686
- :meth:`~CallbackQuery.answer`
87+
- :meth:`~CallbackQuery.edit`
88+
- :meth:`~CallbackQuery.edit_caption`
89+
- :meth:`~CallbackQuery.edit_media`
90+
- :meth:`~CallbackQuery.edit_reply_markup`
8791

8892
InlineQuery
8993
^^^^^^^^^^^
@@ -137,6 +141,10 @@ Details
137141

138142
.. CallbackQuery
139143
.. automethod:: CallbackQuery.answer()
144+
.. automethod:: CallbackQuery.edit()
145+
.. automethod:: CallbackQuery.edit_caption()
146+
.. automethod:: CallbackQuery.edit_media()
147+
.. automethod:: CallbackQuery.edit_reply_markup()
140148

141149
.. InlineQuery
142150
.. automethod:: InlineQuery.answer()

pyrogram/client/ext/base_client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,3 +159,9 @@ def get_profile_photos(self, *args, **kwargs):
159159

160160
def edit_message_text(self, *args, **kwargs):
161161
pass
162+
163+
def edit_message_media(self, *args, **kwargs):
164+
pass
165+
166+
def edit_message_reply_markup(self, *args, **kwargs):
167+
pass

pyrogram/client/types/bots_and_keyboards/callback_query.py

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,175 @@ def answer(self, text: str = None, show_alert: bool = None, url: str = None, cac
172172
url=url,
173173
cache_time=cache_time
174174
)
175+
176+
def edit(
177+
self,
178+
text: str,
179+
parse_mode: str = "",
180+
disable_web_page_preview: bool = None,
181+
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
182+
) -> Union["pyrogram.Message", bool]:
183+
"""Bound method *edit* of :obj:`CallbackQuery`.
184+
185+
Parameters:
186+
text (``str``):
187+
New text of the message.
188+
189+
parse_mode (``str``, *optional*):
190+
Pass "markdown" or "html" if you want Telegram apps to show bold, italic, fixed-width text or inline
191+
URLs in your message. Defaults to "markdown".
192+
193+
disable_web_page_preview (``bool``, *optional*):
194+
Disables link previews for links in this message.
195+
196+
reply_markup (:obj:`InlineKeyboardMarkup`, *optional*):
197+
An InlineKeyboardMarkup object.
198+
199+
Returns:
200+
:obj:`Message` | ``bool``: On success, if the edited message was sent by the bot, the edited message is
201+
returned, otherwise True is returned (message sent via the bot, as inline query result).
202+
203+
Raises:
204+
RPCError: In case of a Telegram RPC error.
205+
"""
206+
chat_id = None
207+
message_id = None
208+
inline_message_id = None
209+
210+
if self.message is not None:
211+
chat_id = self.message.chat.id
212+
message_id = self.message.message_id
213+
214+
if self.inline_message_id is not None:
215+
inline_message_id = self.inline_message_id
216+
217+
return self._client.edit_message_text(
218+
text=text,
219+
chat_id=chat_id,
220+
message_id=message_id,
221+
inline_message_id=inline_message_id,
222+
parse_mode=parse_mode,
223+
disable_web_page_preview=disable_web_page_preview,
224+
reply_markup=reply_markup
225+
)
226+
227+
def edit_caption(
228+
self,
229+
caption: str,
230+
parse_mode: str = "",
231+
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
232+
) -> Union["pyrogram.Message", bool]:
233+
"""Bound method *edit_caption* of :obj:`Message`.
234+
235+
Parameters:
236+
caption (``str``):
237+
New caption of the message.
238+
239+
parse_mode (``str``, *optional*):
240+
Pass "markdown" or "html" if you want Telegram apps to show bold, italic, fixed-width text or inline
241+
URLs in your message. Defaults to "markdown".
242+
243+
reply_markup (:obj:`InlineKeyboardMarkup`, *optional*):
244+
An InlineKeyboardMarkup object.
245+
246+
Returns:
247+
:obj:`Message` | ``bool``: On success, if the edited message was sent by the bot, the edited message is
248+
returned, otherwise True is returned (message sent via the bot, as inline query result).
249+
250+
Raises:
251+
RPCError: In case of a Telegram RPC error.
252+
"""
253+
chat_id = None
254+
message_id = None
255+
inline_message_id = None
256+
257+
if self.message is not None:
258+
chat_id = self.message.chat.id
259+
message_id = self.message.message_id
260+
261+
if self.inline_message_id is not None:
262+
inline_message_id = self.inline_message_id
263+
264+
return self._client.edit_message_text(
265+
text=caption,
266+
chat_id=chat_id,
267+
message_id=message_id,
268+
inline_message_id=inline_message_id,
269+
parse_mode=parse_mode,
270+
reply_markup=reply_markup
271+
)
272+
273+
def edit_media(
274+
self,
275+
media: "pyrogram.InputMedia",
276+
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
277+
) -> Union["pyrogram.Message", bool]:
278+
"""Bound method *edit_media* of :obj:`Message`.
279+
280+
Parameters:
281+
media (:obj:`InputMedia`):
282+
One of the InputMedia objects describing an animation, audio, document, photo or video.
283+
284+
reply_markup (:obj:`InlineKeyboardMarkup`, *optional*):
285+
An InlineKeyboardMarkup object.
286+
287+
Returns:
288+
:obj:`Message` | ``bool``: On success, if the edited message was sent by the bot, the edited message is
289+
returned, otherwise True is returned (message sent via the bot, as inline query result).
290+
291+
Raises:
292+
RPCError: In case of a Telegram RPC error.
293+
"""
294+
chat_id = None
295+
message_id = None
296+
inline_message_id = None
297+
298+
if self.message is not None:
299+
chat_id = self.message.chat.id
300+
message_id = self.message.message_id
301+
302+
if self.inline_message_id is not None:
303+
inline_message_id = self.inline_message_id
304+
305+
return self._client.edit_message_media(
306+
media=media,
307+
chat_id=chat_id,
308+
message_id=message_id,
309+
inline_message_id=inline_message_id,
310+
reply_markup=reply_markup
311+
)
312+
313+
def edit_reply_markup(
314+
self,
315+
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
316+
) -> Union["pyrogram.Message", bool]:
317+
"""Bound method *edit_reply_markup* of :obj:`Message`.
318+
319+
Parameters:
320+
reply_markup (:obj:`InlineKeyboardMarkup`):
321+
An InlineKeyboardMarkup object.
322+
323+
Returns:
324+
:obj:`Message` | ``bool``: On success, if the edited message was sent by the bot, the edited message is
325+
returned, otherwise True is returned (message sent via the bot, as inline query result).
326+
327+
Raises:
328+
RPCError: In case of a Telegram RPC error.
329+
"""
330+
chat_id = None
331+
message_id = None
332+
inline_message_id = None
333+
334+
if self.message is not None:
335+
chat_id = self.message.chat.id
336+
message_id = self.message.message_id
337+
338+
if self.inline_message_id is not None:
339+
inline_message_id = self.inline_message_id
340+
341+
return self._client.edit_message_reply_markup(
342+
reply_markup=reply_markup,
343+
chat_id=chat_id,
344+
message_id=message_id,
345+
inline_message_id=inline_message_id
346+
)

0 commit comments

Comments
 (0)