diff --git a/.gitignore b/.gitignore index aef0b91f..588a20f5 100755 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,6 @@ ENV/ # Rope project settings .ropeproject + +# Developer tests +test.py diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index 729be4ef..812aa613 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -3,9 +3,7 @@ import re from datetime import datetime, timedelta from functools import lru_cache from mimetypes import guess_type - -from .tl.functions import channels -from .tl.functions import messages +from pprint import pprint try: import socks @@ -34,6 +32,10 @@ from .tl.functions.messages import ( GetDialogsRequest, GetHistoryRequest, ReadHistoryRequest, SendMediaRequest, SendMessageRequest, GetChatsRequest ) + +from .tl.functions import channels +from .tl.functions import messages + from .tl.functions.users import ( GetUsersRequest ) @@ -366,12 +368,12 @@ class TelegramClient(TelegramBareClient): :param entity: ID or Entity of the chat :param list message_ids: ID(s) or `Message` object(s) of the message(s) to delete :param revoke: Delete the message for everyone or just this client - :returns messages.AffectedMessages: Messages affected by deletion. + :returns .messages.AffectedMessages: Messages affected by deletion. """ if not isinstance(message_ids, list): message_ids = [message_ids] - message_ids = [m.id if isinstance(m, Message) else m for m in message_ids] + message_ids = [m.id if isinstance(m, Message) else int(m) for m in message_ids] if entity is None: return self(messages.DeleteMessagesRequest(message_ids, revoke=revoke)) diff --git a/telethon_examples/interactive_telegram_client.py b/telethon_examples/interactive_telegram_client.py index 754d0e8b..031a78cd 100644 --- a/telethon_examples/interactive_telegram_client.py +++ b/telethon_examples/interactive_telegram_client.py @@ -94,11 +94,11 @@ class InteractiveTelegramClient(TelegramClient): # Enter a while loop to chat as long as the user wants while True: # Retrieve the top dialogs - dialog_count = 10 + dialog_count = 15 # Entities represent the user, chat or channel # corresponding to the dialog on the same index - dialogs, entities = self.get_dialogs(dialog_count) + dialogs, entities = self.get_dialogs(limit=dialog_count) i = None while i is None: @@ -141,6 +141,7 @@ class InteractiveTelegramClient(TelegramClient): print(' !h: prints the latest messages (message History).') print(' !up : Uploads and sends the Photo from path.') print(' !uf : Uploads and sends the File from path.') + print(' !d : Deletes a message by its id') print(' !dm : Downloads the given message Media (if any).') print(' !dp: Downloads the current dialog Profile picture.') print() @@ -206,6 +207,13 @@ class InteractiveTelegramClient(TelegramClient): # Slice the message to get the path self.send_document(path=msg[len('!uf '):], entity=entity) + # Delete messages + elif msg.startswith('!d '): + # Slice the message to get message ID + deleted_msg = self.delete_messages(entity, msg[len('!d '):]) + print('Deleted. {}'.format(deleted_msg)) + + # Download media elif msg.startswith('!dm '): # Slice the message to get message ID