在问这个问题之前,我检查了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也没有响应,并且等待和等待响应的命令没有错误或没有异常。我该如何终止会话?
答案 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