Как решить проблему подключения с pyrogram?

import logging
from aiogram import Bot, Dispatcher, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.utils import executor
from database import Database
import asyncio
import config
from pyrogram import Client as PyroClient
# Инициализация бота aiogram
bot = Bot(token=config.BOT_TOKEN_PARSER)
dp = Dispatcher(bot)

# Инициализация подключения к базе данных
db = Database()

# Вспомогательная функция для запроса кода верификации через Telegram-бот
async def request_verification_code(bot, chat_id, phone_number):
 await bot.send_message(chat_id, f'На номер {phone_number} отправлен код верификации. Пожалуйста, введите его.')
 print(f"Запрос верификации отправлен на номер: {phone_number}")

# Верификация и авторизация пользователя
verification_data = {}  # Словарь для хранения временной информации о проверке

@dp.message_handler(commands=['start'])
 async def cmd_start(message: types.Message):
 print(f"Команда /start получена от {message.from_user.id}")

# Получаем данные пользователя из базы данных
user_data = await db.get_active_user_data(message.from_user.id)

if not user_data:
    print(f"Пользователь {message.from_user.id} не найден в системе.")
    await message.answer("Вы не зарегистрированы в системе.")
    return

print(f"Данные пользователя {message.from_user.id} получены: {user_data}")
# Удостоверимся, что phone_number сохраняется в области видимости, который нужен для доступа позже
global phone_number
api_id, api_hash, phone_number, status_connect = user_data['api_id'], user_data['api_hash'], user_data['phone_number'], user_data['status_connect']

print(f"Начинаем инициализацию Pyrogram для пользователя {message.from_user.id}")
pyro_client = PyroClient("user_session", api_id=api_id, api_hash=api_hash)

# Коннектимся к Telegram API
await pyro_client.connect()
print("Pyrogram клиент подключен.")

# Сохраняем временные данные по пользователю для верификации
sent_code = await pyro_client.send_code(phone_number)
verification_data[message.from_user.id] = (pyro_client, sent_code.phone_code_hash)
print(f"Код верификации отправлен на номер: {phone_number}")

# Запрашиваем у пользователя код верификации
await request_verification_code(bot, message.chat.id, phone_number)

@dp.message_handler(lambda message: message.from_user.id in verification_data)
async def verification_handler(message: types.Message):
pyro_client, phone_code_hash = verification_data[message.from_user.id]
print(f"Код верификации получен от пользователя {message.from_user.id}: {message.text}")

try:
    # Пытаемся войти с использованием кода верификации
    print("Пытаемся авторизовать пользователя...")
    await pyro_client.sign_in(phone_number=phone_number, phone_code_hash=phone_code_hash, phone_code=message.text)
    print("Пользователь авторизован.")
    
    await message.answer("Вы успешно авторизованы в системе!")
    
    # Задачи после авторизации...
    
except Exception as e:
    print(f"Произошла ошибка при вводе кода: {e}")
    await message.answer(f'Ошибка при вводе кода: {e}')
    

# Удаляем пользователя из словаря верификации после успешного входа или ошибки
del verification_data[message.from_user.id]

# Это код для инициализации пула соединений к базе данных и начала поллинга
async def create_db_pool():
print("Инициализация пула соединений к базе данных...")
logging.info("Создание пула соединений к базе данных...")
await db.create_pool()

if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(create_db_pool()) 
print("Запуск бота...")
executor.start_polling(dp, skip_updates=True)

# Настройки логирования
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

Pyrogram клиент подключен.

INFO:pyrogram.session.session:PingTask started

Код верификации отправлен на номер: +7989******

Запрос верификации отправлен на номер: +7989******

Код верификации получен от пользователя 5917*****: 55834

Пытаемся авторизовать пользователя...

Произошла ошибка при вводе кода: Telegram says: [400 PHONE_CODE_EXPIRED] - The confirmation code has expired (caused by "auth.SignIn")

Незавершённая попытка входа.Telegram остановил попытку входа в Ваш аккаунт с нового устройства 26/02/2024 в 08:27:11 UTC. Устройство: Pyrogram 2.0.106, CPython 3.8.10, Android, Windows 10 Место: St Petersburg, Russia Никто не получил доступ к Вашей переписке, потому что входа в аккаунт не произошло. Код был введен верно, но вход был заблокирован, поскольку ранее Вы сообщили этот код со своего аккаунта. Пожалуйста, не сообщайте никому проверочные коды. Зная их, любой может войти в аккаунт и получить доступ к Вашим чатам.


Ответы (0 шт):