首页 > 解决方案 > 是否可以检查会话是否已创建?

问题描述

我试图检查是否已使用 telethon 库创建了新会话。

我的第一个想法是从 Telegram 获取警告消息(新访问权限:[...]),因此当我收到此类消息时,我知道另一台设备已连接到我的帐户。我无法收到该消息,因此我尝试以另一种方式获得它:

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

(这不是完整的代码。)

我能够检索到的唯一消息是确认码,但只有这样我才能做任何事情。

另一个想法是不断接收活动会话列表(使用GetAuthorizationsRequest()),如果该列表发生更改,则意味着新设备已连接到我的帐户。但是连续向 Telegram 服务器发送请求是否方便?

我到处搜索,但找不到解决问题的好方法。

任何帮助表示赞赏。

标签: pythontelegramtelethon

解决方案


在 Lonami 的帮助下,我能够解决我的问题。使用client.iter_messages(chat),我只能查看消息,而我正在寻找的“消息”是UpdateServiceNotification,所以我曾经events.Raw获得所有类型的更新。

这是代码:

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()


推荐阅读