Telegram-боты — это удобные автоматизированные помощники, которые могут выполнять множество задач: от отправки уведомлений до обработки платежей. В этом гайде мы разберём, как создать своего первого бота на Python с использованием библиотеки python-telegram-bot.
Содержание
- Регистрация бота в Telegram
- Установка необходимых инструментов
- Написание кода бота (Python)
- Развертывание бота на сервере (бесплатные варианты)
- Дополнительные функции (кнопки, команды, обработка файлов)
- Публикация бота и мониторинг
1. Регистрация бота в Telegram
Перед написанием кода нужно получить
API-токен у
BotFather — официального бота для создания ботов.
Шаги:
- Откройте Telegram и найдите @BotFather.
- Отправьте команду /newbot.
- Укажите имя бота (например, MyTestBot).
- Придумайте username (должен заканчиваться на bot, например, MyTest123_bot).
- Получите API-токен (сохраните его, он понадобится для кода).
Пример ответа BotFather:
Copy
Done! Congratulations on your new bot.
Use this token to access the HTTP API:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ-123456789
Keep your token secure and store it safely...
2. Установка необходимых инструментов
Для работы бота нужен
Python 3.8+ и библиотека python-telegram-bot.
Установка:
bash
Copy
pip install python-telegram-bot
(Рекомендуется использовать виртуальное окружение venv)
3. Написание кода бота (Python)
Создадим простого бота, который отвечает на команды /start и /help, а также повторяет сообщения пользователя.
Код бота (bot.py):
python
Copy
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext
# Токен бота (замените на свой)
TOKEN = "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ-123456789"
# Обработчик команды /start
def start(update: Update, context: CallbackContext):
update.message.reply_text("Привет! Я простой бот. Напиши что-нибудь, и я повторю!")
# Обработчик команды /help
def help(update: Update, context: CallbackContext):
update.message.reply_text("Доступные команды:\n/start - начать общение\n/help - помощь")
# Обработчик текстовых сообщений
def echo(update: Update, context: CallbackContext):
update.message.reply_text(f"Ты написал: {update.message.text}")
def main():
# Создаём объект Updater и передаём токен
updater = Updater(TOKEN, use_context=True)
# Получаем диспетчер для регистрации обработчиков
dp = updater.dispatcher
# Регистрируем обработчики команд
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", help))
# Регистрируем обработчик текстовых сообщений
dp.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))
# Запускаем бота
updater.start_polling()
print("Бот запущен!")
# Останавливаем бота при нажатии Ctrl+C
updater.idle()
if __name__ == "__main__":
main()
Как это работает?
- CommandHandler — обрабатывает команды (/start, /help).
- MessageHandler — отвечает на обычные сообщения.
- start_polling() — запускает бота в режиме опроса сервера Telegram.
Запуск бота
bash
Copy
python bot.py
Теперь бот должен отвечать в Telegram!
4. Развертывание бота на сервере
Чтобы бот работал 24/7, его нужно разместить на сервере. Рассмотрим
бесплатные варианты:
Вариант 1: PythonAnywhere (бесплатно для простых ботов)
- Зарегистрируйтесь на .
- Создайте новый файл bot.py и загрузите код.
- Запустите в консоли:
bash
Copy
python3 bot.py
(Бот будет работать, пока вкладка активна. Для постоянной работы нужен платный аккаунт.)
Вариант 2: Replit (бесплатно + автоперезапуск)
- Зайдите на .
- Создайте новый Python-проект и вставьте код.
- Добавьте секретный ключ (TOKEN) в Secrets.
- Нажмите Run — бот будет работать даже после закрытия вкладки.
Вариант 3: Бесплатный VPS (Oracle Cloud, Heroku)
- Oracle Cloud предоставляет бесплатный VPS навсегда (но сложнее в настройке).
- Heroku (раньше был бесплатный тариф, сейчас платный).
5. Дополнительные функции
Добавляем кнопки (Inline Keyboard)
python
Copy
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
def button(update: Update, context: CallbackContext):
keyboard = [
[InlineKeyboardButton("Кнопка 1", callback_data="1")],
[InlineKeyboardButton("Кнопка 2", callback_data="2")],
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text("Выберите действие:", reply_markup=reply_markup)
(Не забудьте добавить обработчик CallbackQueryHandler.)
Обработка изображений и файлов
python
Copy
def photo(update: Update, context: CallbackContext):
file = update.message.photo[-1].get_file()
file.download("image.jpg")
update.message.reply_text("Фото сохранено!")
(Добавляем через MessageHandler(Filters.photo, photo).)
6. Публикация бота и мониторинг
- Добавьте описание через BotFather (/setdescription).
- Настройте команды (/setcommands):
Copy
start - Начать работу
help - Помощь
- Мониторинг ошибок:
- Логируйте ошибки в файл.
- Используйте try-except для обработки сбоев.
Заключение
Теперь у вас есть работающий Telegram-бот! Дальше можно улучшать его:
Добавить
базу данных (SQLite, PostgreSQL).
Подключить
платежи (через Telegram Payments или криптовалюты).
Сделать
веб-интерфейс (Flask/Django).
Полезные ссылки:
Удачи в создании бота!