使用Telethon查找会话ID并终止会话

时间:2018-09-14 18:54:40

标签: python telegram telethon

在问这个问题之前,我检查了here。我想杀死除我现在正在连接的会话以外的所有其他会话。基于Telethon api,我使用了all_sessions = client(GetAuthorizationsRequest()).to_dict(),并得到了以下结果:

{
       '_': 'Authorization',
       'api_id': ...,
       'app_name': '...',
       'app_version': '4.1.4',
       'country': 'Unknown',
       'date_active': ...,
       'date_created': ...,
       'device_model': 'SamsungSM-G920F',
       'flags': 0,
       'hash': ...,
       'ip': '...',
       'platform': 'Android',
       'region': '',
       'system_version': 'SDK 23'
}

我想终止本次会议,但我不知道上面链接(telethon API文档)中提到的session id是什么。我尝试使用这些命令:

client(DestroySessionRequest(api_id))
client(DestroySessionRequest(hash))

但是,不仅没有会话删除,而且api也没有响应,并且等待和等待响应的命令没有错误或没有异常。我该如何终止会话?

2 个答案:

答案 0 :(得分:0)

要删除当前会话,您:

names

Telethon每次使用新的用户名时都会自动创建一个from telethon import TelegramClient # start session client = TelegramClient(username, api_id, api_hash).start() # Now you can use all client methods listed below, like for example... client.send_message('me', 'Hello to myself!') # list all sessions print(client.session.list_sessions()) # delete current session (current session is associated with `username` variable) client.log_out() 文件来存储会话详细信息。文件名以用户名变量开头(例如.session)。会话文件永久存储在文件系统中,因此有时您可以看到几个可用的会话。您可以手动删除不需要的会话文件,并且相关的会话将不再可用。 可以在Telethon API documentation中找到有关Telethon会话的更多信息。

答案 1 :(得分:0)

要终止其他会话,您需要使用ResetAuthorizationRequest函数。

官方文档中的示例:

from telethon.sync import TelegramClient
from telethon import functions, types
with TelegramClient(name, api_id, api_hash) as client:
    result = client(functions.account.ResetAuthorizationRequest(hash=-12398745604826))
print(result)

https://lonamiwebs.github.io/Telethon/methods/account/reset_authorization.html#examples