Python:
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)
Не работает код. Помогите разобраться. После запроса тел ничего не происходит. Я ввожу в чате номер тел. Ошибок не выдает.