Создаём Telegram бота на JavaScript: гайд для новичков

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Telegram бот на JavaScript: с чего начать и как не запутаться

Вы когда-нибудь задумывались, как работают те самые умные боты в Telegram, которые присылают погоду, напоминают о дедлайнах или просто смешно шутят? А что, если я скажу вам, что написать собственного Telegram бота на JavaScript можно за один вечер? Да-да, даже если вы новичок. В этом гайде мы разберём процесс создания бота шаг за шагом, с реальными примерами кода и без лишней воды.

Почему именно JavaScript? Потому что это универсальный язык, который работает везде: на серверах, в браузере и даже на Raspberry Pi. А с библиотекой Telegraf создание Telegram бота превращается в настоящее удовольствие. Готовы? Поехали!

Что нам понадобится для создания Telegram бота на JS

Прежде чем писать код, давайте подготовим инструменты. Вам понадобится:

  • Node.js (версия 14 или новее) — среда выполнения JavaScript на сервере.
  • Текстовый редактор — Visual Studio Code, Sublime Text или любой другой.
  • Аккаунт в Telegram — ну куда без него.
  • Терминал — командная строка для установки пакетов.

Если Node.js ещё не установлен — скачайте его с официального сайта. Процесс установки тривиален: просто нажимайте "Далее".

Регистрация бота и получение токена

Первый шаг к созданию Telegram бота на JavaScript — получить API-токен. Это такой секретный ключ, который связывает ваш код с Telegram.

  1. Откройте Telegram и найдите бота @BotFather.
  2. Отправьте команду /newbot.
  3. Придумайте имя бота (например, MyFirstTestBot).
  4. Придумайте уникальный username, заканчивающийся на bot (например, my_first_test_2025_bot).
  5. Сохраните полученный токен — он будет выглядеть примерно так: 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz.

Важно: токен — это ваш пароль. Никому его не показывайте и не загружайте на GitHub в открытом виде.

Установка библиотек и настройка проекта

Теперь перейдём к коду. Создайте папку для проекта, откройте её в терминале и выполните:

npm init -y

Эта команда создаст файл package.json. Теперь установим главную библиотеку — Telegraf:

npm install telegraf

Telegraf — это мощная и простая библиотека для работы с Telegram Bot API на JavaScript. Она поддерживает команды, клавиатуры, инлайн-режим и многое другое.

Для удобства установите также dotenv — он поможет хранить токен в отдельном файле:

npm install dotenv

Создайте файл .env в корне проекта и запишите туда ваш токен:

BOT_TOKEN=ваш_токен_здесь

Не забудьте добавить .env в .gitignore, если планируете выкладывать код.

Пишем первого Telegram бота на JavaScript

Создайте файл bot.js и откройте его в редакторе. Начнём с самого простого — бот, который отвечает на команду /start.

require('dotenv').config();
const { Telegraf } = require('telegraf');

const bot = new Telegraf(process.env.BOT_TOKEN);

bot.start((ctx) => {
    ctx.reply('Привет! Я твой первый бот на JavaScript!');
});

bot.launch();
console.log('Бот запущен!');

Запустите бота командой:

node bot.js

Откройте вашего бота в Telegram и нажмите Start. Если всё сделано правильно, бот ответит вам приветствием. Поздравляю — вы только что создали работающего Telegram бота на JavaScript!

Обработка команд и текстовых сообщений

Бот, который только здоровается, — это скучно. Давайте добавим больше команд. Например, команду /help и обработку любого текста:

bot.help((ctx) => {
    ctx.reply('Вот что я умею:\n/start — приветствие\n/help — эта справка');
});

bot.on('text', (ctx) => {
    const userText = ctx.message.text;
    ctx.reply(`Ты написал: "${userText}". А я отвечаю эхом!`);
});

Теперь бот не только отвечает на команды, но и повторяет всё, что вы ему пишете. Полезно? Не очень. Зато наглядно показывает, как работает обработка сообщений.

Добавляем клавиатуры и кнопки

Чтобы сделать бота интерактивнее, добавим клавиатуру. В Telegraf это делается очень просто:

const { Markup } = require('telegraf');

bot.command('menu', (ctx) => {
    ctx.reply('Выбери опцию:', Markup.keyboard([
        ['Погода', 'Курс валют'],
        ['Анекдот', 'Помощь']
    ]).resize());
});

bot.hears('Погода', (ctx) => {
    ctx.reply('Сегодня солнечно и +25°C!');
});

bot.hears('Курс валют', (ctx) => {
    ctx.reply('1 USD = 90 RUB (примерно)');
});

bot.hears('Анекдот', (ctx) => {
    ctx.reply('Шёл медведь по лесу, видит — машина горит. Сел в неё и сгорел. Вот такой анекдот.');
});

Клавиатура появляется внизу экрана и исчезает после нажатия кнопки. Обратите внимание на hears — он реагирует на точное совпадение текста.

Inline-клавиатуры: кнопки прямо в сообщении

Бывают ситуации, когда нужно, чтобы кнопки были привязаны к конкретному сообщению. Для этого используются инлайн-кнопки:

bot.command('inline', (ctx) => {
    ctx.reply('Нажми на кнопку:', Markup.inlineKeyboard([
        Markup.button.url('Перейти на PythonLib', 'https://pythonlib.ru'),
        Markup.button.callback('Нажми меня', 'btn_press')
    ]));
});

bot.action('btn_press', (ctx) => {
    ctx.answerCbQuery('Кнопка нажата!');
    ctx.editMessageText('Ты нажал на кнопку! Молодец!');
});

Блоги

Рекомендаций по книгам