Создание Telegram-бота на Python: полная инструкция

Шаг 1. Получение токена 1. Открываем Telegram 2. Находим @BotFather 3. Пишем /newbot 4. Вводим имя бота 5. Вводим юзернейм с окончанием bot 6. Копируем полученный токен --- Шаг 2. Установка библиотеки ```bash --- Шаг 3. Полный код бота ```python import logging from telegram import Update, ReplyKeyboardMarkup, KeyboardButton from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) TOKEN = "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz" async def start(update: Update, context: ContextTypes.DEFAULT_TYPE): keyboard = [ [KeyboardButton("Кнопка 1"), KeyboardButton("Кнопка 2")], [KeyboardButton("Кнопка 3")] ] reply_markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True) await update.message.reply_text("Привет! Выберите действие:", reply_markup=reply_markup) async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE): await update.message.reply_text("/start - главное меню\n/help - справка") async def handle_text(update: Update, context: ContextTypes.DEFAULT_TYPE): text = update.message.text if text == "Кнопка 1": await update.message.reply_text("Вы нажали кнопку 1") elif text == "Кнопка 2": await update.message.reply_text("Вы нажали кнопку 2") elif text == "Кнопка 3": await update.message.reply_text("Вы нажали кнопку 3") else: await update.message.reply_text(f"Вы написали: {text}") def main(): app = Application.builder().token(TOKEN).build() app.add_handler(CommandHandler("start", start)) app.add_handler(CommandHandler("help", help_command)) app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text)) print("Бот запущен") app.run_polling() if __name__ == "__main__": main() ``` --- Шаг 4. Запуск ```bash python bot.py ``` --- Шаг 5. Что делает бот · Команда /start показывает клавиатуру с тремя кнопками · Команда /help показывает список команд · Нажатие на кнопки вызывает ответ · Любой текст бот повторяет --- Шаг 6. Что можно добавить · Подключение базы данных SQLite · Отправка изображений · Инлайн-кнопки · Регистрация пользователей · Расписание сообщений · Веб-хуки вместо polling