Вы хотите создать Telegram-бота, но не знаете, с чего начать? Многие думают, что для этого нужно быть профессиональным разработчиком. На самом деле - нет. С помощью Node.js и библиотеки Telegraf вы можете запустить своего первого бота за час. Ниже - пошаговый гид без лишней теории, только то, что работает.
Почему Telegraf?
Telegram предлагает официальный API, но работать с ним напрямую - как пытаться собрать часы из 300 мелких деталей. Telegraf - это фреймворк для Node.js, который упрощает всё. Он берёт на себя рутину: обработку сообщений, кнопок, команд, медиа. Вы пишете только логику. Telegraf поддерживает TypeScript, имеет встроенную систему middleware и работает с любыми типами сообщений - от текста до файлов. Он используется в сотнях живых ботов, включая автоматизированные сервисы поддержки и уведомления.
Что вам понадобится
- Node.js версии 18 или выше
- Текстовый редактор (VS Code, Sublime, даже Notepad++)
- Телеграм-аккаунт
- Бот-токен от @BotFather
Убедитесь, что Node.js установлен. Откройте терминал и введите node -v. Если видите что-то вроде v18.17.0 - всё в порядке. Если нет - скачайте с nodejs.org. Не нужно устанавливать Python, MongoDB или другие сложные инструменты. Это не требует базы данных на старте.
Шаг 1: Получите токен бота
Откройте Telegram, найдите бота @BotFather. Напишите ему /newbot. Он спросит имя бота - придумайте что-то простое, например, MyFirstBot. Затем - имя пользователя (username). Оно должно быть уникальным, оканчиваться на _bot (например, myfirstbot_bot). После этого @BotFather выдаст токен. Он выглядит как 123456789:ABCdefGhIJKlmnoPqrStuVwxYz. Сохраните его. Это ваш ключ доступа. Никому не показывайте.
Шаг 2: Создайте проект
Создайте папку для проекта. Например, my-first-bot. Зайдите в неё через терминал и выполните:
npm init -y- создаёт файлpackage.jsonnpm install telegraf- устанавливает библиотеку
Теперь создайте файл bot.js в этой же папке. Откройте его в редакторе.
Шаг 3: Напишите первый бот
Вставьте этот код в bot.js:
const { Telegraf } = require('telegraf');
const bot = new Telegraf('123456789:ABCdefGhIJKlmnoPqrStuVwxYz');
bot.start((ctx) => ctx.reply('Привет! Я ваш первый бот. Напишите /help для помощи.'));
bot.help((ctx) => ctx.reply('Я отвечаю на /start и /help. Пока больше ничего не умею.'));
bot.on('text', (ctx) => ctx.reply('Вы написали: ' + ctx.message.text));
bot.launch();
Замените 123456789:ABCdefGhIJKlmnoPqrStuVwxYz на ваш реальный токен. Сохраните файл.
Шаг 4: Запустите бота
В терминале введите:
node bot.js
Если всё сделано правильно - вы увидите сообщение Launches.... Откройте Telegram, найдите своего бота и напишите ему /start. Он должен ответить. Попробуйте написать что-нибудь ещё - он ответит тем же текстом. Это работает. Вы создали бота.
Шаг 5: Добавьте команды и реакции
Теперь сделаем его полезнее. Добавим команду /weather, которая возвращает случайную температуру.
Добавьте эту строку в bot.js после bot.help(...):
bot.command('weather', (ctx) => {
const temp = Math.floor(Math.random() * 40) - 10;
ctx.reply(`Температура сейчас: ${temp}°C`);
});
Перезапустите бота (Ctrl+C, потом снова node bot.js). Напишите /weather. Он ответит, например: Температура сейчас: 14°C. Это просто пример. В реальности вы могли бы подключиться к погодному API, но для старта - этого достаточно.
Шаг 6: Как остановить и перезапустить бота
Когда вы остановите терминал (Ctrl+C), бот перестанет отвечать. Чтобы он работал постоянно, нужно запускать его как службу. Для тестов - хватает и терминала. Но если вы хотите, чтобы бот работал 24/7, используйте PM2. Установите его командой:
npm install -g pm2
Запустите бота через PM2:
pm2 start bot.js --name "my-first-bot"
Теперь даже если вы закроете терминал - бот продолжит работать. Проверить статус: pm2 list. Перезапустить: pm2 restart my-first-bot. Остановить: pm2 stop my-first-bot.
Что дальше?
Сейчас ваш бот отвечает на команды. Но вы можете сделать гораздо больше:
- Добавить кнопки с
bot.use(telegraf.keyboard()) - Отправлять фото или PDF-файлы через
ctx.replyWithPhoto() - Связать его с базой данных (например, SQLite или PostgreSQL)
- Сделать его многоязычным с помощью
telegraf-i18n - Интегрировать с Google Sheets для сбора данных
Телеграм-боты часто используются для:
- Уведомлений о заказах
- Автоматического ответа на частые вопросы
- Получения обратной связи от клиентов
- Отправки ежедневных напоминаний
Например, небольшой магазин в Остине использует бота, который отправляет клиентам уведомление, когда товар возвращён на склад. Это сократило звонки в поддержку на 60%. Бот не требует сервера - достаточно дешёвого VPS за $3 в месяц.
Частые ошибки
- Неправильный токен - если бот не отвечает, проверьте токен. Скопируйте его заново от @BotFather.
- Забыли перезапустить бота - после изменений в коде всегда перезапускайте его.
- Использование пробелов в username - имя бота должно быть в формате
имя_bot, без пробелов и спецсимволов. - Блокировка бота - если вы отправляете слишком много сообщений за раз, Telegram может временно заблокировать бота. Не спамьте.
Как проверить, что бот работает
Откройте в браузере ссылку:
https://api.telegram.org/bot[ВАШ_ТОКЕН]/getUpdates
Замените [ВАШ_ТОКЕН] на свой. Если вы видите JSON с сообщениями - бот получает запросы. Если пусто - проверьте, писали ли вы ему в Telegram.
Безопасность
Никогда не храните токен в коде в публичных репозиториях (например, на GitHub). Создайте файл .env в папке проекта и добавьте:
TG_BOT_TOKEN=123456789:ABCdefGhIJKlmnoPqrStuVwxYz
Установите библиотеку dotenv:
npm install dotenv
В начале bot.js добавьте:
require('dotenv').config();
А токен используйте так:
const bot = new Telegraf(process.env.TG_BOT_TOKEN);
Это защитит ваш токен от утечки.
Тестовые сценарии
Попробуйте эти команды в боте:
/start- должен ответить приветствием/help- должен показать инструкцию/weather- должен вернуть температуру- Просто напишите что-то без команды - должен ответить тем же
Если всё работает - вы успешно создали бота. Это не сложнее, чем настроить чат-бот в WhatsApp. Главное - начать.
Можно ли создать бота без Node.js?
Да, но не так удобно. Есть альтернативы: Python с библиотекой python-telegram-bot, или даже онлайн-конструкторы типа Botpress. Но для полного контроля, гибкости и скорости - Node.js с Telegraf остаётся лучшим выбором для тех, кто хочет понимать, как работает бот, а не просто настраивать шаблон.
Нужен ли сервер для бота?
Для тестирования - нет. Вы можете запускать бота на своём компьютере. Но для постоянной работы - да. Нужен всегда включённый компьютер или дешёвый VPS (например, от DigitalOcean или Hetzner). Стоимость - от $3 в месяц. Бот не требует много ресурсов - 128 МБ RAM достаточно.
Как сделать, чтобы бот отвечал только определённым пользователям?
Сохраняйте ID пользователей в массиве. Например: const allowedUsers = [123456789, 987654321];. Потом в обработчике проверяйте: if (!allowedUsers.includes(ctx.from.id)) return ctx.reply('Доступ запрещён');. ID пользователя можно узнать, написав боту /start и посмотрев ответ в консоли при запуске бота.
Бот не отвечает на сообщения. Что делать?
Проверьте три вещи: 1) Токен правильный? 2) Бот запущен (в терминале есть сообщение "Launches...")? 3) Вы не заблокировали бота в Telegram? Попробуйте написать ему через другой аккаунт. Если ничего не помогает - пересоздайте бота через @BotFather и начните заново.
Можно ли сделать бота на телефоне?
Нет, нельзя. Node.js не работает на Android или iOS. Вы можете писать код на телефоне, но запускать его - только на компьютере или сервере. Есть приложения для редактирования кода, но они не запускают Node.js-процессы. Для полноценного бота нужен процесс, который работает постоянно - это требует серверной среды.
Создание бота на Node.js с Telegraf - это не про сложные технологии. Это про то, чтобы начать. Один файл, одна команда, один токен - и вы уже владеете инструментом, который может автоматизировать часть вашей работы. Не ждите идеального момента. Начните сегодня. Сделайте бота, который отвечает на один вопрос. Потом добавьте второй. Потом третий. Вы удивитесь, насколько много можно сделать за пару часов.