Fixed casting message id to int

Added message deletion to interactive telegram client and bumped dialog count up to 15 (feels better, correct me if I'm wrong)
This commit is contained in:
JosXa 2017-10-01 22:23:10 +02:00
parent 2dc47912bc
commit f85e565158
3 changed files with 20 additions and 7 deletions

3
.gitignore vendored
View File

@ -101,3 +101,6 @@ ENV/
# Rope project settings # Rope project settings
.ropeproject .ropeproject
# Developer tests
test.py

View File

@ -3,9 +3,7 @@ import re
from datetime import datetime, timedelta from datetime import datetime, timedelta
from functools import lru_cache from functools import lru_cache
from mimetypes import guess_type from mimetypes import guess_type
from pprint import pprint
from .tl.functions import channels
from .tl.functions import messages
try: try:
import socks import socks
@ -34,6 +32,10 @@ from .tl.functions.messages import (
GetDialogsRequest, GetHistoryRequest, ReadHistoryRequest, SendMediaRequest, GetDialogsRequest, GetHistoryRequest, ReadHistoryRequest, SendMediaRequest,
SendMessageRequest, GetChatsRequest SendMessageRequest, GetChatsRequest
) )
from .tl.functions import channels
from .tl.functions import messages
from .tl.functions.users import ( from .tl.functions.users import (
GetUsersRequest GetUsersRequest
) )
@ -366,12 +368,12 @@ class TelegramClient(TelegramBareClient):
:param entity: ID or Entity of the chat :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 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 :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): if not isinstance(message_ids, list):
message_ids = [message_ids] 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: if entity is None:
return self(messages.DeleteMessagesRequest(message_ids, revoke=revoke)) return self(messages.DeleteMessagesRequest(message_ids, revoke=revoke))

View File

@ -94,11 +94,11 @@ class InteractiveTelegramClient(TelegramClient):
# Enter a while loop to chat as long as the user wants # Enter a while loop to chat as long as the user wants
while True: while True:
# Retrieve the top dialogs # Retrieve the top dialogs
dialog_count = 10 dialog_count = 15
# Entities represent the user, chat or channel # Entities represent the user, chat or channel
# corresponding to the dialog on the same index # 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 i = None
while i is None: while i is None:
@ -141,6 +141,7 @@ class InteractiveTelegramClient(TelegramClient):
print(' !h: prints the latest messages (message History).') print(' !h: prints the latest messages (message History).')
print(' !up <path>: Uploads and sends the Photo from path.') print(' !up <path>: Uploads and sends the Photo from path.')
print(' !uf <path>: Uploads and sends the File from path.') print(' !uf <path>: Uploads and sends the File from path.')
print(' !d <msg-id>: Deletes a message by its id')
print(' !dm <msg-id>: Downloads the given message Media (if any).') print(' !dm <msg-id>: Downloads the given message Media (if any).')
print(' !dp: Downloads the current dialog Profile picture.') print(' !dp: Downloads the current dialog Profile picture.')
print() print()
@ -206,6 +207,13 @@ class InteractiveTelegramClient(TelegramClient):
# Slice the message to get the path # Slice the message to get the path
self.send_document(path=msg[len('!uf '):], entity=entity) 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 # Download media
elif msg.startswith('!dm '): elif msg.startswith('!dm '):
# Slice the message to get message ID # Slice the message to get message ID