Найти идентификатор сессии с помощью telethon и убить сеанс - PullRequest
0 голосов
/ 14 сентября 2018

Прежде чем задать этот вопрос, я проверил здесь . Я хочу убить все другие сеансы, кроме сеанса, с которым я сейчас соединяюсь. Основываясь на API-интерфейсе telethon, я использовал 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'
}

Я хочу убить эту сессию, но я не знаю, что такое session id, упомянутое в приведенном выше линке (документы по telethon API). Я пробовал с этими командами:

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

Но не только удаление сеансов, но и отсутствие ответа от API и команд, ожидающих и ожидающих ответ без ошибок или исключений. Как я могу завершить сеанс?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Чтобы убить другие сеансы, вам нужно использовать функцию 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

0 голосов
/ 15 сентября 2018

Чтобы удалить текущий сеанс, вы:

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

Telethon автоматически создает файл .session для хранения сведений о сеансе каждый раз, когда используется новое имя пользователя. Имя файла начинается с переменной username (например, my_username.session). Файлы сессий постоянно хранятся в файловой системе, поэтому иногда вы можете увидеть несколько доступных сессий. Вы можете вручную удалить ненужные файлы сеанса, и связанный сеанс больше не будет доступен. Более подробную информацию о сеансах Telethon можно найти в Документация по Telethon API .

...