Найти - Пользователи
Полная версия: Авторизация пользователя telegram в чате с ботом
Начало » Python для экспертов » Авторизация пользователя telegram в чате с ботом
1
OttoRodygin
Не работает код. Помогите разобраться. После запроса тел ничего не происходит. Я ввожу в чате номер тел Ошибок не выдает.

```import logging
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from telethon.sync import TelegramClient

# Устанавливаем уровень логов (необязательно)
logging.basicConfig(level=logging.INFO)

# Инициализируем бота и диспетчер
bot = Bot(token=“”)
dp = Dispatcher(bot, storage=MemoryStorage())


# Определяем класс States, наследующий от StatesGroup
class States(StatesGroup):
PHONE = State() # Состояние для получения номера телефона
CODE = State() # Состояние для получения кода авторизации


# Команда /start начинает авторизацию
@dp.message_handler(commands='start')
async def cmd_start(message: types.Message):
# Переключаемся в состояние PHONE
await States.PHONE.set()
reply_markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
button = KeyboardButton(“Отправить номер телефона”, request_contact=True)
reply_markup.add(button)
await message.answer(“Пожалуйста, отправьте свой номер телефона”, reply_markup=reply_markup)


# Обрабатываем получение номера телефона
@dp.message_handler(content_types=types.ContentType.CONTACT, state=States.PHONE)
async def process_phone_number(message: types.Message, state: FSMContext):
phone_number = message.contact.phone_number
# Сохраняем номер телефона в контексте FSM
await state.update_data(phone_number=phone_number)

# Создаем клиента Telethon с вашими данными
client = TelegramClient(“session_name”, api_id=, api_hash=“”)
await client.start(phone=phone_number)

# Переключаемся в состояние CODE
await States.CODE.set()
await message.answer(“Отправьте код авторизации”)


# Обрабатываем получение кода авторизации
@dp.message_handler(content_types=types.ContentType.TEXT, state=States.CODE)
async def process_code(message: types.Message, state: FSMContext):
code = message.text
# Получаем номер телефона из контекста FSM
data = await state.get_data()
phone_number = data.get('phone_number')

# Создаем клиента Telethon с вашими данными
client = TelegramClient(“session_name”, api_id=, api_hash=“”)
await client.connect()

try:
# Входим в Telegram с помощью полученного номера телефона и кода авторизации
await client.sign_in(phone=phone_number, code=code)
await client.start()

# Здесь можно выполнить дополнительные действия после успешной авторизации, например, получить информацию о пользователе
me = await client.get_me()

# Отправляем пользователю подтверждение авторизации
await message.answer(f“Вы успешно авторизованы в Telegram!\n”
f“Ваше имя пользователя: {me.username}\n”
f“Ваш номер телефона: {me.phone}”)
except Exception as e:
await message.answer(f“Ошибка авторизации: {str(e)}”)

# Сбрасываем состояние FSM
await state.finish()
await client.disconnect()


if __name__ == ‘__main__’:
# Запускаем бота
from aiogram import executor

executor.start_polling(dp, skip_updates=True)```
py.user.next
Используй теги code для передачи кода на форуме.
learntune
Здравствуйте, живу в Беларуси, пытаюсь зарегистрировать аккаунт уже второй день, в итоге на мой личный номер не приходит смс с кодом проверки dinosaur game
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB