Создание Telegram-бота с нуля: от регистрации до первого запуска
Чтобы создать бота в Telegram, нужно зарегистрировать его через официального бота @BotFather, получить уникальный токен доступа и написать простую программу (или использовать конструктор), которая будет обрабатывать сообщения пользователей. Весь процесс занимает от 5 до 15 минут.
В этой инструкции мы разберем все этапы: от получения токена до запуска работающего эхо-бота на Python.
Оглавление
Регистрация бота в BotFather
BotFather — это единственный официальный инструмент Telegram для создания и управления ботами.
- Найдите в поиске Telegram аккаунт @BotFather. Обратите внимание на синюю галочку верификации рядом с именем, чтобы не попасть на фишинговый аккаунт.
- Нажмите кнопку Запустить (или отправьте команду
/start). - Отправьте команду
/newbot.
Далее бот попросит ввести два параметра:
- Имя бота (Name) — то, как бот будет отображаться в списке чатов и в заголовке окна диалога. Может быть на любом языке, содержать пробелы и эмодзи. Например:
Мой Супер Бот 🤖. - Юзернейм (Username) — уникальный идентификатор для ссылок и поиска. Должен состоять только из латинских букв, цифр и нижних подчеркиваний. Обязательно должен заканчиваться на
botили_bot. Например:my_super_bot.
Если юзернейм свободен, BotFather поздравит вас с созданием бота и пришлет сообщение с токеном.
Сохраните ссылку на бота (t.me/ваш_юзернейм), чтобы быстро найти его после написания кода.
Токен: что это и как хранить
В сообщении от BotFather вы увидите строку вида:
123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
Это токен доступа (API Token). Он служит паролем для вашего бота. Любой, кто знает этот токен, может управлять вашим ботом: читать сообщения, отправлять ответы и менять настройки.
Правила безопасности:
- Никогда не публикуйте токен в открытых репозиториях (GitHub), на форумах или в чатах.
- Не храните токен прямо в коде, если вы планируете выкладывать проект в публичный доступ. Используйте переменные окружения.
- Если токен утекл, немедленно отзовите его командой
/revokeв BotFather и получите новый.
Настройка команд и меню
По умолчанию у бота есть только базовые возможности. Чтобы пользователям было удобно взаимодействовать с ним, нужно настроить список команд, которые появляются при вводе символа /.
- В диалоге с @BotFather отправьте команду
/mybots. - Выберите своего бота из списка.
- Нажмите Bot Settings → Edit Commands.
- Отправьте список команд в формате
команда - описание. Каждая команда с новой строки.
Пример списка для отправки:
start - Запустить бота
help - Помощь и инструкции
contact - Связаться с поддержкой
После этого при вводе / в чате с вашим ботом пользователи увидят аккуратное меню с подсказками.
Запуск бота: код на Python
Самый популярный способ заставить бота работать — написать скрипт на Python. Мы используем библиотеку python-telegram-bot, которая является стандартом индустрии.
Шаг 1: Установка библиотеки
Откройте терминал (консоль) и выполните:
pip install python-telegram-bot
Шаг 2: Создание файла бота
Создайте файл bot.py и вставьте в него следующий код. Это простой «эхо-бот», который повторяет всё, что вы ему напишете, и реагирует на команды /start и /help.
import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes
# Вставьте сюда ваш токен от BotFather
TOKEN = "ВАШ_ТОКЕН_ЗДЕСЬ"
# Настройка логирования
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
# Обработчик команды /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"Привет! Я твой новый бот. \n"
"Напиши мне что-нибудь, и я повторю."
)
# Обработчик команды /help
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"Доступные команды:\n"
"/start - Начать общение\n"
"/help - Показать справку"
)
# Обработчик обычных сообщений (эхо)
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
# Игнорируем команды, чтобы не дублировать ответ
if update.message.text.startswith('/'):
return
await update.message.reply_text(f"Вы написали: {update.message.text}")
if __name__ == '__main__':
# Создаем приложение
application = ApplicationBuilder().token(TOKEN).build()
# Регистрируем обработчики
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("help", help_command))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# Запускаем бота в режиме polling (опрос сервера)
print("Бот запущен...")
application.run_polling()
Шаг 3: Запуск
В терминале выполните:
python bot.py
Если в консоли нет ошибок, перейдите в чат с вашим ботом в Telegram и нажмите Запустить или напишите /start. Бот должен ответить приветствием.
Локальный запуск работает только пока включен ваш компьютер. Для круглосуточной работы бота необходимо разместить код на сервере (VPS) или использовать облачные платформы (например, Render, Railway или PythonAnywhere).
Альтернатива: конструкторы без кода
Если программирование кажется сложным, можно использовать визуальные конструкторы. Они позволяют собирать логику бота из блоков, как пазл.
Популярные сервисы:
- Manybot — бесплатный конструктор прямо внутри Telegram. Позволяет создавать меню, автопостинг и простые цепочки ответов.
- PuzzleBot / LeadConverter — более мощные платформы для маркетинга, интеграции с CRM и сбора заявок.
- BotPress — решение для сложных сценариев с использованием AI.
Как это работает:
- Вы регистрируетесь в сервисе.
- Вставляете токен, полученный от BotFather.
- В визуальном редакторе настраиваете кнопки и ответы.
- Сервис сам хостит бота, вам не нужно писать код или арендовать сервер.
Частые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Неверный токен | Проверьте, скопировали ли вы токен целиком без лишних пробелов. |
| Bot is blocked | Пользователь заблокировал бота | Бот не может писать первым, если пользователь не нажал /start. |
| Username invalid | Некорректное имя при создании | Юзернейм должен быть на латинице и оканчиваться на bot. |
| Connection Error | Проблемы с сетью или API | Проверьте интернет-соединение. В некоторых регионах требуется прокси для доступа к API Telegram. |
FAQ
Можно ли создать бота без программирования? Да, используйте конструкторы вроде Manybot или PuzzleBot. Они позволяют создавать функциональные чат-боты для поддержки и рассылок без написания кода.
Сколько стоит создание бота? Само создание и использование API Telegram бесплатно. Платить нужно только за хостинг (если вы пишете код сами и хотите, чтобы бот работал 24/7) или за подписку в продвинутых конструкторах.
Как сделать так, чтобы бот отвечал на картинки?
В коде Python нужно добавить обработчик MessageHandler(filters.PHOTO, function_name). В конструкторах обычно есть готовый блок «Реакция на фото».
Что делать, если бот не отвечает? Проверьте, запущен ли скрипт на компьютере или сервере. Убедитесь, что токен верный. Посмотрите логи консоли на наличие ошибок.