Шаг 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