@dp.message_handler(commands=['login'])
async def ask_for_phone(message: types.Message):
await message.reply(" Введите номер телефона в формате +71234567890:")
await AuthState.waiting_for_phone.set()
@dp.message_handler(state=AuthState.waiting_for_phone)
async def process_phone(message: types.Message, state: FSMContext):
phone = message.text.strip()
if not phone.startswith("+") or not phone[1:].isdigit():
await message.reply("❌ Неверный формат. Пример: +71234567890")
return
try:
client = TelegramClient(StringSession(), API_ID, API_HASH)
await client.connect()
await client.send_code_request(phone)
await client.disconnect()
await state.update_data(phone=phone)
await message.reply("✉️ Введите код из Telegram:")
await AuthState.waiting_for_code.set()
except Exception as e:
await message.reply(f" Ошибка при отправке кода: {e}")
await state.finish()
@dp.message_handler(state=AuthState.waiting_for_code)
async def process_code(message: types.Message, state: FSMContext):
code = message.text.strip()
data = await state.get_data()
phone = data.get("phone")
try:
client = TelegramClient(StringSession(), API_ID, API_HASH)
await client.connect()
await client.send_code_request(phone)
await client.sign_in(phone=phone, code=code)
session_str = client.session.save()
with open(f"sessions/{phone}.session", "w") as f:
f.write(session_str)
await message.reply("✅ Сессия успешно сохранена.")
await state.finish()
await client.disconnect()
except SessionPasswordNeededError:
await state.update_data(code=code)
await message.reply(" Аккаунт защищён 2FA. Введите пароль:")
await AuthState.waiting_for_2fa.set()
except Exception as e:
await message.reply(f"❌ Ошибка входа: {e}")
await state.finish()
@dp.message_handler(state=AuthState.waiting_for_2fa)
async def process_2fa(message: types.Message, state: FSMContext):
password = message.text.strip()
data = await state.get_data()
phone = data.get("phone")
code = data.get("code")
try:
client = TelegramClient(StringSession(), API_ID, API_HASH)
await client.connect()
await client.send_code_request(phone)
await client.sign_in(phone=phone, code=code)
await client.sign_in(password=password)
session_str = client.session.save()
with open(f"sessions/{phone}.session", "w") as f:
f.write(session_str)
await message.reply("✅ Сессия успешно сохранена (с 2FA).")
await state.finish()
await client.disconnect()
except Exception as e:
await message.reply(f"❌ Ошибка входа (2FA): {e}")
await state.finish()
как не крути код выдает ошибку после ввода номера - Ошибка при отправке кода: bytes or str expected, not
class int
Пробовал делать через with TelegramClient(StringSession(), API_ID, API_HASH) as client: но запрашивает номер и код в консоль как не крути