видос про то как сделать простого бота котрий будет видовать данные при старте
Давайте разобьем объяснение кода на части с включением конкретных фрагментов кода для более детального понимания.
Импортирование модулей и классов
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()
будет вызвана только если скрипт запускается напрямую.