From 57be97566d9a182e10e39f4e55c99f7c1e2c67a3 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sun, 14 Apr 2019 22:34:05 +0200 Subject: [PATCH] Make delete_messages return False when it fails to delete This is because there will be no exception raised, because Telegram is not sending any RPCError when you try to delete a message you don't have rights on to. --- pyrogram/client/methods/messages/delete_messages.py | 10 ++++++---- pyrogram/client/types/messages_and_media/message.py | 6 ++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pyrogram/client/methods/messages/delete_messages.py b/pyrogram/client/methods/messages/delete_messages.py index bbd838ee..4076be22 100644 --- a/pyrogram/client/methods/messages/delete_messages.py +++ b/pyrogram/client/methods/messages/delete_messages.py @@ -48,7 +48,7 @@ class DeleteMessages(BaseClient): Defaults to True. Returns: - True on success. + True on success, False otherwise. Raises: :class:`RPCError ` in case of a Telegram RPC error. @@ -57,18 +57,20 @@ class DeleteMessages(BaseClient): message_ids = list(message_ids) if not isinstance(message_ids, int) else [message_ids] if isinstance(peer, types.InputPeerChannel): - self.send( + r = self.send( functions.channels.DeleteMessages( channel=peer, id=message_ids ) ) else: - self.send( + r = self.send( functions.messages.DeleteMessages( id=message_ids, revoke=revoke or None ) ) - return True + # Deleting messages you don't have right onto, won't raise any error. + # Check for pts_count, which is 0 in case deletes fail. + return bool(r.pts_count) diff --git a/pyrogram/client/types/messages_and_media/message.py b/pyrogram/client/types/messages_and_media/message.py index fc2cb8fb..727b6330 100644 --- a/pyrogram/client/types/messages_and_media/message.py +++ b/pyrogram/client/types/messages_and_media/message.py @@ -2729,19 +2729,17 @@ class Message(PyrogramType, Update): Defaults to True. Returns: - True on success. + True on success, False otherwise. Raises: :class:`RPCError ` """ - self._client.delete_messages( + return self._client.delete_messages( chat_id=self.chat.id, message_ids=self.message_id, revoke=revoke ) - return True - def click(self, x: int or str, y: int = None, quote: bool = None): """Bound method *click* of :obj:`Message `.