March 25, 2024

видос про то как сделать простого бота котрий будет видовать данные при старте

Давайте разобьем объяснение кода на части с включением конкретных фрагментов кода для более детального понимания.

Импортирование модулей и классов

pythonCopy codefrom telegram import Update, KeyboardButton, ReplyKeyboardMarkup
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters

Эти строки отвечают за импорт необходимых классов из библиотеки python-telegram-bot. Классы Update, KeyboardButton, и ReplyKeyboardMarkup позволяют работать с сообщениями, кнопками и клавиатурами в Telegram. Классы из модуля telegram.ext предоставляют функциональность для создания приложения бота, обработки команд (CommandHandler), сообщений (MessageHandler), и использования фильтров (filters).

Токен бота

pythonCopy codeTOKEN = 'YOUR_TOKEN_HERE'

Эта строка определяет переменную TOKEN, в которой должен быть сохранен уникальный токен вашего бота, полученный от BotFather в Telegram.

Асинхронная функция start

pythonCopy codeasync def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    contact_keyboard = KeyboardButton('Отправить контакт', request_contact=True)
    reply_markup = ReplyKeyboardMarkup([[contact_keyboard]], one_time_keyboard=True)

    await update.message.reply_text('Пожалуйста, отправьте свой контакт.', reply_markup=reply_markup)

Функция start вызывается, когда пользователь отправляет команду /start. Она создает клавиатуру с кнопкой "Отправить контакт", которая предложит пользователю отправить свои контактные данные. Пользователю отправляется сообщение с просьбой поделиться своим контактом.

Асинхронная функция contact

pythonCopy codeasync def contact(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    contact = update.effective_message.contact
    info = f"Имя: {contact.first_name}\n"
    if contact.last_name:
        info += f"Фамилия: {contact.last_name}\n"
    info += f"Номер телефона: {contact.phone_number}\n"
    info += f"ID пользователя: {contact.user_id}"

    await update.message.reply_text(info)

Эта функция обрабатывает полученные контактные данные пользователя после того, как он нажимает на кнопку "Отправить контакт". Функция извлекает имя, фамилию, номер телефона и ID пользователя из полученных данных и отправляет эту информацию обратно пользователю.

Функция main и запуск бота

pythonCopy codedef main() -> None:
    application = Application.builder().token(TOKEN).build()

    start_handler = CommandHandler('start', start)
    contact_handler = MessageHandler(filters.CONTACT, contact)

    application.add_handler(start_handler)
    application.add_handler(contact_handler)

    application.run_polling()

if __name__ == '__main__':
    main()

Функция main настраивает и запускает бота. Она создает экземпляр Application с использованием токена бота, добавляет обработчики для команды /start и для обработки полученных контактных данных. После этого бот запускается в режиме опроса с помощью метода run_polling(). Блок if __name__ == '__main__': гарантирует, что функция main() будет вызвана только если скрипт запускается напрямую.