From 87969745f5ffee5a640e7aafe494729de092b617 Mon Sep 17 00:00:00 2001 From: Lonami Date: Fri, 23 Sep 2016 12:50:01 +0200 Subject: [PATCH] Fixed logging out, added a proper function to list sessions By fixing logging out, other request probably got fixed as well, since now we can also read MessagesAcknowledge requests --- telethon/network/mtproto_sender.py | 10 ++++++++++ telethon/telegram_client.py | 14 ++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/telethon/network/mtproto_sender.py b/telethon/network/mtproto_sender.py index 023a7734..bf79910f 100755 --- a/telethon/network/mtproto_sender.py +++ b/telethon/network/mtproto_sender.py @@ -192,6 +192,16 @@ class MtProtoSender: if code == 0xa7eff811: # bad_msg_notification return self.handle_bad_msg_notification(msg_id, sequence, reader) + if code == 0x62d6b459: # msgs_ack, it may handle the request we wanted + ack = reader.tgread_object() + for message_id in ack.msg_ids: + if message_id in self.need_confirmation: + self.need_confirmation.remove(message_id) + + if request and request.msg_id in ack.msg_ids: + request.confirm_received = True + return False + # If the code is not parsed manually, then it was parsed by the code generator! # In this case, we will simply treat the incoming TLObject as an Update, # if we can first find a matching TLObject diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index 022c3003..162bf39f 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -1,7 +1,7 @@ import platform from datetime import datetime from hashlib import md5 -from os import path +from os import path, listdir from mimetypes import guess_extension, guess_type # For sending and receiving requests @@ -35,7 +35,7 @@ from telethon.tl.all_tlobjects import layer class TelegramClient: # Current TelegramClient version - __version__ = '0.5' + __version__ = '0.6' # region Initialization @@ -182,8 +182,7 @@ class TelegramClient: def log_out(self): """Logs out and deletes the current session. Returns True if everything went OK""" try: - # This request is a bit special. Nothing is received after - self.sender.send(LogOutRequest()) + self.invoke(LogOutRequest()) if not self.session.delete(): return False @@ -191,6 +190,13 @@ class TelegramClient: except: return False + @staticmethod + def list_sessions(): + """Lists all the sessions of the users who have ever connected + using this client and never logged out""" + return [path.splitext(path.basename(f))[0] # splitext = split ext (not spli text!) + for f in listdir('.') if f.endswith('.session')] + # endregion # region Dialogs ("chats") requests