Авторизация приложения telethon

Рейтинг: 1Ответов: 1Опубликовано: 13.03.2023

Всем привет, проблема такого рода, есть телеграм-бот, который осуществляет парсинг пользователей по чатам/каналам телеграм, работает на aiogram + telethon. В январе 2022 года всё работало корректно. Сейчас же при запуске бота, после ввода номера телефона и кода подтверждения выбрасывает со всех устройств, на которых открыт данный аккаунт, через 10-20 секунд завершается и сессия telethon со следующей ошибкой

telethon.errors.rpcerrorlist.SessionRevokedError: The authorization has been invalidated, because of the user terminating all sessions

Также прикладываю фрагмент кода

from telethon.sync import TelegramClient
from telethon.tl.functions.channels import GetParticipantsRequest
from telethon.tl.types import ChannelParticipantsSearch
from aiogram import Bot, Dispatcher, types, executor
from aiogram.contrib.fsm_storage.memory import MemoryStorage

bot = Bot(token=bot_settings.BOT_TOKEN)
storage = MemoryStorage() 
dp = Dispatcher(bot, storage=storage)

client = TelegramClient(bot_settings.SESSION_NAME, bot_settings.API_ID, bot_settings.API_HASH)
client.start()

@dp.message_handler(state=ChatOpenLink.waiting_link)
async def get_open_report(message: types.Message, state: FSMContext):
    await state.update_data(waiting_link=message.text)
    state_data = await state.get_data()
    link = state_data.get('waiting_link')
    channel = await client.get_entity(link)
    await bot.send_message(message.chat.id, text='Начинаю парсинг, это может занять от 10 до 15 минут⏱')
    upload_message = await bot.send_message(message.chat.id, text='Идёт парсинг: 0%')
    ALL_PARTICIPANTS = []
    for key in bot_settings.QUERY:
        progress = (bot_settings.QUERY.index(key)+1)*100/len(bot_settings.QUERY)
        progress = float('{:.2f}'.format(progress))
        await upload_message.edit_text(text=f'Идёт парсинг: {progress}%')
        OFFSET_USER = 0
        while True:
            participants = await client(GetParticipantsRequest(channel,ChannelParticipantsSearch(key), OFFSET_USER, bot_settings.LIMIT_USER, hash=0))
            if not participants.users:
                break
            ALL_PARTICIPANTS.extend(participants.users)
            OFFSET_USER += len(participants.users)

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
    with client:
        client.loop.run_until_complete()

Пробовал менять импорт на

from telethon import TelegramClient

прописывать

client.run_until_disconnected()

Также оставлял только данные строки

client = TelegramClient(bot_settings.SESSION_NAME, bot_settings.API_ID, bot_settings.API_HASH)
client.start()

результат всегда один - ошибка либо на этапе получения entity чата, либо парсинг начинается и через 10 секунд выбрасывает из всех сессий.

Не работает ни с номера телефона по которому всё работало в январе, ни с нового аккаунта и нового приложения.

Ответы

▲ 1

Допишите в TelegramClient device_model и system_version

как тут для примера:

client = TelegramClient(StringSession(SESSION_STRING), api_id=API_ID, api_hash=API_HASH, device_model="Linux 5.15.0", system_version="Ubuntu 20.04.6 LTS")
client.session.save()

Раньше этого не требовалось, да и сейчас у многих тоже все работает. Но у некоторых возникает этот глюк с выходом из всех сессий - очень странная ошибка.