SAL
SAL

Reputation: 545

Is it possible to check if a session has been created?

I was trying to check if a new session has been created using the telethon library.

My first idea was to get the warning message from Telegram (New access: [...]), so when I get that kind of message, I know that another device has connected to my account. I couldn't get that message, so I tried to get it another way:

chat = client.get_entity(777000) # Telegram chat id
print(chat)
for message in client.iter_messages(chat):
    print(message.text)

(This is not the full code.)

The only message I was able to retrieve was the confirmation code, but only with that I can't do anything.

Another idea was to continuously receive the list of active sessions (using GetAuthorizationsRequest()) and, if that list changed, it means that a new device has connected to my account. But is it convenient to continuously send requests to Telegram servers?

I searched everywhere but couldn't find a good solution to my problem.

Any help is appreciated.

Upvotes: 0

Views: 607

Answers (1)

SAL
SAL

Reputation: 545

With the help of Lonami, I was able to solve my problem. With client.iter_messages(chat), I could only view messages, while the "message" I was looking for was an UpdateServiceNotification, so I used events.Raw to get all types of updates.

Here is the code:

from telethon.sync import TelegramClient, events
from telethon.tl.types import UpdateServiceNotification
api_id = 123456
api_hash = "42132142c132145ej"

with TelegramClient('anon', api_id, api_hash) as client:
   @client.on(events.Raw(func = lambda e: type(e) == UpdateServiceNotification))
   async def handler(event):
      print("New Login!")
   client.run_until_disconnected()

Upvotes: 1

Related Questions