postech
@postech
программист

Как запросить код подтверждения авторизации в Telegram у пользователя?

Реализую бота, который собирает данные по подписчикам канала (бот для использования владельцем канала).

Делаю так: все мелкие функции выполняет бот (собрать подписчиков канала, получить открытые данные и т.д.), а для выгрузки всех админов канала и invite-ссылок каждого админа запускаю отдельный клиент pyrogram под аккаунтом владельца (потому что invite-ссылки всех админов может получить только владелец канала - Client.get_chat_admin_invite_link()).
При первой авторизации телеграм отправляет код подтверждения, который хотелось бы запросить через бот, поймать и передать для успешной авторизации в клиент Pyrogram. Код подтверждения отправляется, но как его получить от пользователя и передать в Client.sign_in внутри вызванной функции - не пойму.

Хэндлер, в котором запускается парсер подписчиков:

@app.on_message(filters.private & filters.command(['parse'], prefixes='/'))
async def parsing(client, message):
    if await is_admin(app, message.from_user.id) == True:
        # получаем все отслеживаемые каналы из БД
        channels = await get_channels(app)
        await parse_channels(app, message.from_user.id, channels)
    else:
        await message.reply('❌ Доступ запрещен')


Сама функция parse_channels, в которой и запрашивается авторизация:

async def parse_channels(bot_app, init_by, channels):

    # запускаем клиента владельца канала
    user_app = Client(
        session, 
        api_id=api_id, 
        api_hash=api_hash,
        phone_number=phone_number,
        password=password)
    await user_app.connect()
    sent_code_info = await user_app.send_code(phone_number)
    await bot_app.send_message(init_by, 'Введите код подтверждения для предоставления прав боту:')
    # pass - здесь как-то нужно получить код подтверждения
    auth_result = await user_app.sign_in(
        phone_number=phone_number, 
        phone_code_hash=sent_code_info.phone_code_hash,
        phone_code=phone_code)
    ....
  • Вопрос задан
  • 354 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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