
Для разработки бота в Telegram потребуется зарегистрировать его через BotFather, получить уникальный токен доступа и настроить окружение для работы с Python. Минимальный набор инструментов: установленный Python 3.8+, пакетный менеджер pip и библиотека python-telegram-bot или её альтернатива aiogram.
Перед написанием кода стоит определить, какие задачи будет выполнять бот: от простых уведомлений до обработки пользовательских команд или интеграции с внешними API. Это повлияет на выбор архитектуры и библиотек. Для проектов с высокой нагрузкой предпочтительнее асинхронный подход с использованием aiogram, тогда как для небольших задач подойдёт python-telegram-bot.
Следующий шаг – настройка виртуального окружения и установка зависимостей. Рекомендуется использовать venv, чтобы изолировать проект от глобальных пакетов. Это позволит без конфликтов обновлять библиотеки и запускать несколько разных ботов на одной машине.
Регистрация нового бота через BotFather

Отправьте команду /newbot. BotFather попросит указать название бота – оно отображается в списке чатов и может содержать пробелы.
Следующим шагом необходимо придумать уникальный username, который всегда должен заканчиваться на bot (например, my_test_bot). Если имя занято, BotFather предложит изменить его.
После успешной регистрации вы получите токен формата 123456789:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Этот ключ используется для работы с Telegram Bot API. Никогда не публикуйте токен в открытых репозиториях и не пересылайте посторонним.
Сразу после выдачи токена можно настроить бота: изменить описание командой /setdescription, добавить аватар через /setuserpic и прописать команды с помощью /setcommands. Эти настройки делают взаимодействие с ботом удобнее.
Получение и хранение токена доступа
Для начала необходимо обратиться к официальному боту @BotFather. После команды /newbot он запросит название и уникальное имя, а затем вернёт строку формата 123456789:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Это и есть токен, который используется для авторизации запросов к API Telegram.
Никогда не храните токен напрямую в коде. Надёжный вариант – использовать переменные окружения. В Linux и macOS можно добавить строку export TELEGRAM_TOKEN="ваш_токен" в файл ~/.bashrc или ~/.zshrc. В Windows задайте переменную через «Переменные среды» в настройках системы.
Для доступа к токену в Python применяйте модуль os:
import os
token = os.getenv("TELEGRAM_TOKEN")
При использовании систем контроля версий добавляйте файл с токеном в .gitignore, чтобы исключить его попадание в репозиторий. Для проектов, развёрнутых на сервере или в Docker, указывайте переменные окружения в конфигурационных файлах или в настройках хостинга.
Установка и настройка библиотеки python-telegram-bot

Для работы с API Telegram удобнее всего использовать библиотеку python-telegram-bot. Она поддерживает актуальные версии Python и предоставляет готовые классы для обработки сообщений и команд.
Установка через pip:
pip install python-telegram-bot --upgrade
Рекомендуется использовать виртуальное окружение:
- Создайте окружение:
python -m venv venv - Активируйте его:
Windows:venv\Scripts\activate
Linux/macOS:source venv/bin/activate - Установите библиотеку внутри окружения.
Проверка версии:
python -m telegram --version
Минимальная настройка бота:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Бот запущен!")
app = ApplicationBuilder().token("ВАШ_API_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
- Используйте
ApplicationBuilderдля инициализации. CommandHandlerсвязывает команды с функциями.run_polling()запускает бота без дополнительных настроек сервера.
Создание простого обработчика сообщений
Для обработки входящих сообщений в Python удобнее всего использовать библиотеку python-telegram-bot. Она предоставляет механизм регистрации функций-обработчиков для различных типов апдейтов.
Простейший обработчик работает через MessageHandler и фильтры. Например, чтобы реагировать на текстовые сообщения, используется фильтр filters.TEXT.
Пример кода:
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(f"Вы написали: {update.message.text}")
app = Application.builder().token("ВАШ_ТОКЕН").build()
app.add_handler(MessageHandler(filters.TEXT, echo))
app.run_polling()
В этом примере функция echo вызывается при каждом сообщении с текстом. Ответ возвращается пользователю с сохранением его содержимого.
Основные типы фильтров для текстовых сообщений:
| Фильтр | Назначение |
|---|---|
filters.TEXT |
Любое текстовое сообщение |
filters.COMMAND |
Сообщение, начинающееся с «/» |
filters.Regex("шаблон") |
Сообщение, соответствующее регулярному выражению |
filters.Document |
Сообщение с файлом |
Рекомендуется добавлять несколько обработчиков для разных фильтров и размещать их в отдельном модуле, чтобы код оставался структурированным.
Добавление команд с использованием CommandHandler

Модуль telegram.ext библиотеки python-telegram-bot предоставляет класс CommandHandler, который связывает команду пользователя с функцией-обработчиком.
Пример добавления команды /start:
from telegram.ext import Updater, CommandHandler
def start(update, context):
update.message.reply_text("Бот запущен!")
updater = Updater("ТОКЕН")
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
updater.start_polling()
updater.idle()
Ключевые моменты:
CommandHandler("start", start)связывает команду/startс функциейstart.- Имена команд указываются без символа
/. - Функция-обработчик принимает два аргумента:
updateиcontext.
Для регистрации нескольких команд:
def help(update, context):
update.message.reply_text("Список команд: /start, /help")
dispatcher.add_handler(CommandHandler("help", help))
- Определите функцию с логикой ответа.
- Создайте
CommandHandler, указав команду и функцию. - Добавьте обработчик в
dispatcher.
Таким образом можно регистрировать любое количество команд, каждая из которых будет выполняться независимо.
Запуск и тестирование бота на локальном компьютере

Убедитесь, что на компьютере установлен Python версии 3.10 или выше. Установите библиотеку python-telegram-bot через команду pip install python-telegram-bot==20.4. Эта версия поддерживает асинхронное выполнение и упрощает обработку обновлений.
Создайте файл bot.py и добавьте код инициализации бота с токеном, который был получен у BotFather:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text('Бот запущен')
app = ApplicationBuilder().token('ВАШ_ТОКЕН').build()
app.add_handler(CommandHandler('start', start))
app.run_polling()
Для локального тестирования используйте команду python bot.py в терминале. Если бот запускается без ошибок, он начнет получать сообщения через polling. Проверку корректной работы можно провести, отправив команду /start в вашем Telegram-чате с ботом. Ответ должен появиться мгновенно.
Для отладки ошибок добавьте логирование:
import logging
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
Логи помогут определить причину сбоев, например, неверный токен или проблемы с сетью.
Для тестирования различных сценариев создайте временные команды и обработчики сообщений. Например, можно добавить обработчик текстовых сообщений:
from telegram.ext import MessageHandler, filters
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(update.message.text)
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
Это позволит проверить корректность обработки текста и ответ бота на любые вводимые сообщения.
После локального тестирования убедитесь, что бот стабильно работает в фоне. Для этого можно использовать screen или tmux в Linux, либо планировщик задач в Windows, чтобы запускать бота автоматически при перезапуске компьютера.
Вопрос-ответ:
Какие библиотеки Python нужны для создания Telegram-бота?
Для работы с Telegram API чаще всего используют библиотеку `python-telegram-bot`. Она позволяет легко обрабатывать сообщения пользователей, отправлять ответы и работать с разными типами контента. Также может понадобиться `requests`, если нужно обращаться к внешним API, и `logging` для ведения журналов работы бота.
Как получить токен для бота в Telegram?
Сначала нужно создать бота через официальный бот BotFather в Telegram. После запуска BotFather используйте команду /newbot, выберите имя и юзернейм для бота. В ответ BotFather пришлет уникальный токен — это длинная строка символов, которая используется для взаимодействия вашего Python-скрипта с Telegram API. Токен нужно хранить в секрете, иначе кто угодно сможет управлять ботом.
Какая структура кода нужна для базового бота, который отвечает на сообщения?
Минимальная структура включает импорт библиотеки, создание объекта `Updater` с токеном бота, определение функции-обработчика сообщений и подключение этой функции через `Dispatcher`. После этого вызывается метод `start_polling()`, который запускает проверку новых сообщений. Например, можно сделать функцию, которая отвечает текстом «Привет!» на любое сообщение пользователя.
Можно ли запускать бота на сервере, чтобы он работал постоянно?
Да, для постоянной работы бота нужен сервер или виртуальная машина. На локальном компьютере бот работает только пока включен Python-скрипт. На сервере его можно запускать через `screen` или `tmux`, либо настроить как системную службу с автозапуском. Также есть облачные платформы вроде Heroku, где можно разместить бота без собственного сервера.
Как сделать так, чтобы бот понимал команды типа /start и /help?
В библиотеке `python-telegram-bot` есть объект `CommandHandler`, который позволяет привязать команды к определенным функциям. Например, `CommandHandler(‘start’, start_function)` будет вызывать функцию `start_function`, когда пользователь отправит /start. Аналогично можно добавить /help или другие команды, создавая отдельные функции для обработки каждой.
Какой пакет Python лучше использовать для создания Telegram-бота и почему?
Для разработки Telegram-бота на Python чаще всего применяют библиотеку **python-telegram-bot**. Она предоставляет удобный интерфейс для взаимодействия с API Telegram, поддерживает обработку сообщений, кнопок и команд. Кроме того, есть встроенные механизмы для работы с обновлениями через long polling или webhook. Для простых ботов подойдет minimal-пример с использованием только этой библиотеки, а для более сложных проектов можно подключать дополнительные модули для хранения данных и планирования задач.
