Создаём чат-бота на JavaScript: пошаговое руководство для новичков

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

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

Начать курс

Не просто "привет, мир": ваш первый живой чат-бот на JavaScript

Чат-боты перестали быть игрушкой для гиков. Сегодня это рабочий инструмент: от техподдержки до продажи пиццы. И если вы думаете, что для создания бота нужно знать C++ или Python, — спешу обрадовать. Создание чат-бота на JavaScript — это реально, быстро и невероятно увлекательно.

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

Готовы? Тогда открывайте любимый редактор, ставьте Node.js, и погнали!

Что нам понадобится?

  • Node.js (версия 16+) — среда выполнения. Скачать можно с официального сайта.
  • Любой редактор кода — VS Code, WebStorm или даже Блокнот (но я не рекомендую).
  • Терпение и чашка кофе — остальное сделает JavaScript.

В качестве платформы для тестов возьмём Telegram — у него простой API и куча документации. Позже вы сможете адаптировать код для Discord, Slack или своего сайта.

Шаг 1. Регистрируем бота и получаем токен

Прежде чем писать код, нам нужно "родить" бота. Делается это через главного бота Telegram — @BotFather.

  1. Откройте Telegram и найдите BotFather.
  2. Напишите команду /newbot.
  3. Придумайте имя (например, MyFirstJBot) и юзернейм (обязательно заканчивается на bot, например my_first_js_bot).
  4. Получите токен — длинную строку вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Это пароль вашего бота.

Сохраните токен в надёжном месте. Если потеряете — придётся создавать нового бота.

Шаг 2. Настройка проекта и установка зависимостей

Создадим папку для проекта и инициализируем npm:

mkdir my-telegram-bot
cd my-telegram-bot
npm init -y

Теперь установим библиотеку node-telegram-bot-api — это самый популярный пакет для создания чат-бота на node.js:

npm install node-telegram-bot-api

Готово. Теперь создайте файл bot.js и откройте его в редакторе.

Шаг 3. Пишем "скелет" бота

Начнём с самого простого — бот будет отвечать на команду /start и повторять за пользователем любое сообщение.

const TelegramBot = require('node-telegram-bot-api');

const token = 'ВАШ_ТОКЕН_СЮДА';
const bot = new TelegramBot(token, { polling: true });

bot.onText(/\/start/, (msg) => {
  const chatId = msg.chat.id;
  bot.sendMessage(chatId, `Привет, ${msg.from.first_name}! Я — твой первый чат-бот на JavaScript. Чем могу помочь?`);
});

bot.on('message', (msg) => {
  const chatId = msg.chat.id;
  const text = msg.text;

  // Игнорируем команды, чтобы не дублировать ответ
  if (text.startsWith('/')) return;

  bot.sendMessage(chatId, `Ты написал: "${text}". А я — эхо-бот!`);
});

Запускаем:

node bot.js

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

Шаг 4. Добавляем логику: простой FAQ-бот

Эхо-боты быстро надоедают. Давайте сделаем так, чтобы бот отвечал на конкретные вопросы. Это уже похоже на реальный чат-бот для сайта.

Создадим простую базу знаний в виде объекта:

const faq = {
  'как дела': 'Отлично! А у тебя?',
  'что ты умеешь': 'Я могу отвечать на простые вопросы и рассказывать анекдоты.',
  'расскажи анекдот': 'Идёт медведь по лесу, видит — машина горит. Сел в неё и сгорел. Вот такой вот анекдот!',
  'кто тебя создал': 'Меня создал разработчик, который изучает JavaScript. Он молодец!',
};

bot.on('message', (msg) => {
  const chatId = msg.chat.id;
  const text = msg.text?.toLowerCase().trim();

  if (!text || text.startsWith('/')) return;

  // Ищем точное совпадение или частичное совпадение
  let answer = faq[text];
  if (!answer) {
    // Если точного ответа нет, ищем по ключевым словам
    for (const key in faq) {
      if (text.includes(key)) {
        answer = faq[key];
        break;
      }
    }
  }

  if (answer) {
    bot.sendMessage(chatId, answer);
  } else {
    bot.sendMessage(chatId, 'Я пока не знаю, что ответить. Но я учусь!');
  }
});

Теперь напишите боту "расскажи анекдот" — он выдаст шутку. А если написать "как дела, бот?", он найдёт ключевое слово "как дела" и ответит. Вот так работает создание чат-бота javascript с элементарной логикой.

Шаг 5. Запоминаем пользователей (простое хранилище)

Настоящий telegram bot javascript должен помнить, кто с ним общался. Добавим простейшую "память" — будем сохранять имена пользователей в JSON-файл.

const fs = require('fs');
const path = require('path');

const USERS_FILE = path.join(__dirname, 'users.json');

// Загружаем пользователей из файла (если есть)
let users = {};
if (fs.existsSync(USERS_FILE)) {
  users = JSON.parse(fs.readFileSync(USERS_FILE, 'utf-8'));
}

function saveUsers() {
  fs.writeFileSync(USERS_FILE, JSON.stringify(users, null, 2));
}

bot.onText(/\/start/, (msg) => {
  const chatId = msg.chat.id;
  const userId = msg.from.id;
  const userName = msg.from.first_name;

  // Запоминаем пользователя
  if (!users[userId]) {
    users[userId] = {
      name: userName,
      firstSeen: new Date().toISOString(),
    };
    saveUsers();
    bot.sendMessage(chatId, `Новый пользователь! Привет, ${userName}!`);
  } else {
    bot.sendMessage(chatId, `С возвращением, ${users[userId].name}!`);
  }
});

bot.onText(/\/stats                

Блоги

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