Задать вопрос
@DoGiG

Почему telethon просит авторизацию при каждом запуске при созданном файле сессии?

Есть скрипт для создания сессии
from telethon import TelegramClient
api_id = ...
api_hash = ...
client = TelegramClient(name, api_id, api_hash)
client.start()
client.run_until_disconnected()

И есть скрипт для парсинга
import json

from telethon.sync import TelegramClient

from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch

api_id = ...
api_hash = '...'
username = 'anon'


with TelegramClient(username, api_id, api_hash) as client:
    client.start()


async def dump_all_participants(channel):
  offset_user = 0    
  limit_user = 100  

  all_participants = []
  filter_user = ChannelParticipantsSearch('')

  while True:
    participants = await client(GetParticipantsRequest(channel,
      filter_user, offset_user, limit_user, hash=0))
    if not participants.users:
      break
    all_participants.extend(participants.users)
    offset_user += len(participants.users)

  all_users_details = []

  for participant in all_participants:
    all_users_details.append({"id": participant.id,
      "first_name": participant.first_name,
      "last_name": participant.last_name,
      "user": participant.username,
      "phone": participant.phone,
      "is_bot": participant.bot})

  with open('channel_users.json', 'w', encoding='utf8') as outfile:
    json.dump(all_users_details, outfile, ensure_ascii=False)


async def main():
  url = input("Введите ссылку на канал или чат: ")
  channel = await client.get_entity(url)
  await dump_all_participants(channel)


with client:
  client.loop.run_until_complete(main())

При запуске второго несмотря на ранний запуск первого и создание файла сессии с тем же именем telethon заново запрашивает авторизацию, из-за чего банят аккаунт по причине частой авторизации.
  • Вопрос задан
  • 763 просмотра
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
Если вы используете файл сессии в telethon, то после авторизации вам не нужно будет вводить свои данные при каждом запуске. Однако, если вы получаете такую ошибку, то это может быть вызвано следующими причинами:
  1. Файл сессии был удален или перемещен в другое место. В таком случае нужно выполнить авторизацию заново или указать telethon на путь к файлу сессии.

  2. Файл сессии был поврежден. В таком случае нужно выполнить авторизацию заново, чтобы создать новый файл сессии.

  3. Данные авторизации были изменены. В этом случае также нужно выполнить авторизацию заново, чтобы обновить данные в файле сессии.

  4. Ваш аккаунт был забанен или удален. В таком случае вам нужно будет создать новый аккаунт или обратится в поддержку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы