Найти идентификатор сессии с помощью telethon и убить сеанс

1

Прежде чем задать этот вопрос, я проверил здесь. Я хочу убить все остальные сеансы, кроме сеанса, с которым я сейчас подключаюсь. Основываясь на all_sessions = client(GetAuthorizationsRequest()).to_dict() 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'
}

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

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

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

Теги:
telegram
telethon

2 ответа

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

0

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

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

  • 0
    Это просто удаляет текущий файл сессии. Я хочу не только сделать это с другими сеансами, чем текущий сеанс, но также я хочу прекратить все другие сеансы, которые не находятся на моем локальном компьютере.
  • 0
    Вы можете написать скрипт, который будет управлять всеми вашими файлами сессии и удалять ненужные.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню