Создание чат-ботов: как сделать чат-бота самостоятельно с нуля

    Команда Simple-Server
    03.06.2026
    15 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Сферы применения чат-ботов

    Чат-боты используются во многих отраслях и могут решать широкий спектр задач:

    • Поддержка клиентов – автоматический ответ на часто задаваемые вопросы, помощь в оформлении заказов, консультирование.
    • Автоматизация задач – упрощение внутренних процессов компаний, напоминания, бронирование встреч, сбор данных.
    • Маркетинг – взаимодействие с клиентами, персонализированные рекомендации, проведение опросов и акций.
    • Образование – чат-боты-репетиторы, помощники в обучении, предоставление учебных материалов.
    • Финансы – управление счетами, расчеты, отправка уведомлений о транзакциях.

    Существует несколько типов чат-ботов в зависимости от их функционала и способа взаимодействия:

    1. Правило-ориентированные – работают по заранее запрограммированным сценариям.
    2. Использующие искусственный интеллект – обучаемые боты, анализирующие сообщения пользователя и подбирающие наиболее релевантные ответы.
    3. Гибридные – сочетают элементы правил и искусственного интеллекта.
    4. Голосовые боты – взаимодействуют с пользователем через голосовые команды (например Яндекс Алиса и Google Assistant).

    Советы по разработке чат-ботов

    Создание эффективного чат-бота требует не только технической реализации, но и продуманного взаимодействия с пользователем. Хороший бот должен быть полезным, интуитивно понятным и решать конкретные задачи. Важно учитывать удобство общения, а также избегать распространенных ошибок, которые могут испортить пользовательский опыт.

    Как сделать чат-бота полезным и удобным

    • Делайте простую и понятную структуру диалогов.
    • Используйте персонализацию (обращение по имени, настройка предпочтений).
    • Включайте кнопки быстрого ответа для удобства пользователей.

    Частые ошибки при создании чат-ботов

    • Отсутствие четкой цели – бот должен решать конкретную задачу.
    • Сложные диалоги – пользователи не любят длинные ответы и запутанные сценарии.
    • Отсутствие тестирования – важно проверять работу чат-бота перед запуском.
    • Игнорирование обратной связи – улучшайте бота на основе отзывов пользователей.

    Создадим собственного чат-бота в мессенджере Telegram, в котором будет находиться база знаний по языкам программирования и их фреймворкам.

    Не обязательно быть программистом, чтобы создать чат-бота. Существуют удобные платформы-конструкторы, которые позволяют создать чат-бот самостоятельно бесплатно.

    Воспользуемся конструктором Botman, на котором предварительно необходимо зарегистрироваться.

    После регистрации вас перебросит на главный экран, где необходимо выбрать Telegram:

    Вы увидите вот такое меню, где попросят ввести токен бота:

    Чтобы получить этот токен, необходимо создать нового бота через BotFather. Запустите его и отправьте команду /newbot и следуйте предложенным шагам. Подробнее о том, как работать с BotFather, мы рассказывали в этой статье.

    После успешного создания BotFather отправит вам сообщение с токеном, который необходимо скопировать и вставить в поле ввода, после чего нажать на кнопку «Подключить». Вам должны ответить таким экраном:

    Нажмите «Готово», чтобы приступить к созданию цепочки сообщений.

    При создании первой цепочки сообщений вас перенесет в рабочую область, где будут две рамки: «Начало скрипта» и «Сообщение 1». В «Сообщение 1» добавим текст и три кнопки с названиями «JavaScript», «Python» и «Java».

    После этого необходимо добавить к каждой кнопке новые сообщения, которые будут вызываться при нажатии на них. Чтобы это сделать, нажмите на «+», который расположен справа от них, и выберите следующий шаг «Сообщение (контент)».

    Также к каждому из этих новых сообщений необходимо добавить кнопки.

    • К сообщению с JavaScript: React, Vue, Angular, Node.js, Express.
    • К Python: Django, Flask, FastAPI.
    • К Java: Spring, Hibernate, Jakarta EE.

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

    Также можно добавить параметр «Удалить предыдущее сообщение», благодаря которому чат не будет засоряться. Чтобы включить эту функцию, необходимо зайти в настройки сообщения, нажав на него, и внизу нажать на «Доп. параметры шага». В открывшемся меню нужно выбрать «Удалить предыдущий шаг».

    После этого можно нажать на кнопку «Опубликовать» в правом верхнем углу, и через некоторое время вам сообщат о том, что бот успешно опубликован. Теперь можно начать им пользоваться.

    Плюсы и минусы конструкторов

    Создание чат-ботов с помощью конструкторов имеет определенные плюсы и минусы.

    • Не требует навыков программирования.

    • Не нужно тратить деньги на хостинг сервера, на котором работает бот.

    • Быстрое развертывание и простота использования.

    • Готовые решения и алгоритмы для разнообразных ситуаций.

    • Многие конструкторы ограничены в функционале или требуют Pro-подписку.

    • В процессе использования боты могут отправлять сообщения о том, где они созданы (например, «Чат-бот создан на платформе BotMan.pro»).

    • Ограниченные возможности кастомизации логики работы бота.

    • Возможны задержки в обработке сообщений из-за загрузки сервера платформы.

    • Доступ к данным пользователей может зависеть от политики платформы, что может быть нежелательно для бизнеса.

    С помощью программирования

    Создадим чат-бота на Node.js, который будет повторять функционал, ранее реализованный с помощью конструктора. Предварительно необходимо, чтобы Node.js был установлен у вас на ПК. Скачать его можно с официального сайта.

    Сперва создайте на GitHub новый приватный репозиторий и в пункте Add .gitignore выберите Node.

    Теперь клонируйте этот репозиторий себе на ПК, используя консоль. Если вы хотите, чтобы проект находился на рабочем столе, то введите:

    Затем введите команду для клонирования вашего репозитория, указав ссылку на него:

    git clone https://github.com/Tulopex/plkb

    Откройте клонированную папку в редакторе кода, например в Visual Studio Code (VS Code).

    Потом откройте терминал внутри VS Code и инициализируйте проект:

    Во время инициализации проекта, внутри терминала вам будет предложено ввести дополнительные данные о проекте. Всё это можно пропустить, просто нажимая на «Enter».

    После инициализации введите команду для установки специальной библиотеки, на которой будет работать бот:

    npm install node-telegram-bot-api

    Создайте файл index.js и скопируйте в него следующий код, заменив переменную TOKEN на действующий токен, который вам выдал BotFather:

    const TelegramBot = require('node-telegram-bot-api'); const fs = require('fs'); const token = 'TOKEN'; const bot = new TelegramBot(token, { polling: true }); const languages = JSON.parse(fs.readFileSync('languages.json')); const frameworks = JSON.parse(fs.readFileSync('frameworks.json')); bot.onText(/\/start/, (msg) => { const chatId = msg.chat.id; sendLanguages(chatId, 'Привет! Я бот, который поможет тебе узнать больше о языках программирования и фреймворках.\n\nВыбери язык с помощью инлайн-кнопок снизу, чтобы узнать всю информацию о нём.'); }); function sendLanguages(chatId, text, messageId = null) { const buttons = []; const keys = Object.keys(languages); for (let i = 0; i < keys.length; i += 3) { buttons.push(keys.slice(i, i + 3).map(lang => ({ text: lang, callback_data: `lang_${lang}` }))); } if (messageId) { bot.editMessageText(text, { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: buttons } }); } else { bot.sendMessage(chatId, text, { reply_markup: { inline_keyboard: buttons } }); } } function sendFrameworks(chatId, lang, messageId) { const fwList = frameworks[lang] || []; const buttons = []; for (let i = 0; i < fwList.length; i += 2) { buttons.push(fwList.slice(i, i + 2).map(fw => ({ text: fw, callback_data: `fw_${fw}` }))); } buttons.push([{ text: 'Назад', callback_data: 'back_to_languages' }]); bot.editMessageText(languages[lang], { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: buttons } }); } function sendFrameworkInfo(chatId, fw, messageId) { bot.editMessageText(frameworks[fw] || 'Информация отсутствует.', { chat_id: chatId, message_id: messageId, reply_markup: { inline_keyboard: [[{ text: 'Назад', callback_data: 'back_to_languages' }]] } }); } bot.on('callback_query', (query) => { const chatId = query.message.chat.id; const messageId = query.message.message_id; const data = query.data; if (data.startsWith('lang_')) { const lang = data.replace('lang_', ''); sendFrameworks(chatId, lang, messageId); } else if (data.startsWith('fw_')) { const fw = data.replace('fw_', ''); sendFrameworkInfo(chatId, fw, messageId); } else if (data === 'back_to_languages') { sendLanguages(chatId, 'Выбери язык программирования для получения информации о нём:', messageId); } bot.answerCallbackQuery(query.id); }); console.log("Бот запущен!");

    Затем создайте файл languages.json и добавьте в него следующее:

    { "JavaScript": "JavaScript — это динамичный язык программирования, используемый для разработки интерактивных веб-приложений. Он работает как на стороне клиента, так и на сервере через Node.js. JavaScript позволяет управлять DOM, поддерживает асинхронность, взаимодействует с API и веб-сокетами. Существует множество популярных фреймворков, таких как React, Vue и Angular, значительно упрощающих разработку.\n\nПрименение: веб-разработка, серверные приложения, мобильные решения (React Native), игровая индустрия и автоматизация.", "Python": "Python — универсальный язык программирования с простым синтаксисом, подходящий как для начинающих, так и для профессионалов. Он широко применяется в веб-разработке (Django, Flask), анализе данных (Pandas, NumPy), машинном обучении (TensorFlow, PyTorch), автоматизации и кибербезопасности.\n\nPython поддерживает несколько парадигм программирования и обладает обширной стандартной библиотекой.\n\nПрименение: машинное обучение, наука о данных, веб-разработка, автоматизация процессов, кибербезопасность.", "Java": "Java — мощный объектно-ориентированный язык программирования, отличающийся строгой типизацией и высокой производительностью. Благодаря виртуальной машине Java (JVM), код можно запускать на разных платформах. Java активно используется в корпоративных приложениях, разработке Android, серверных решениях и облачных сервисах.\n\nПопулярные фреймворки: Spring, Hibernate, JavaFX.\n\nПрименение: корпоративное ПО, мобильные приложения, серверные системы, финансовые технологии (FinTech)." }

    Создайте также файл frameworks.json, где будет храниться информация о фреймворках:

    { "JavaScript": ["React", "Vue", "Angular", "Node.js", "Express"], "Python": ["Django", "Flask", "FastAPI"], "Java": ["Spring", "Hibernate", "Jakarta EE"], "React": "React — это современная библиотека JavaScript, разработанная для создания динамических пользовательских интерфейсов. Она использует виртуальное представление DOM, что ускоряет рендеринг и минимизирует обновления страницы. Благодаря компонентной структуре React позволяет разработчикам легко управлять состоянием приложения и переиспользовать код. Часто применяется в создании одностраничных веб-приложений (SPA) и мобильных интерфейсов. Ключевые инструменты: React Router, Redux, Next.js.", "Vue": "Vue.js — легковесный и удобный фреймворк для создания интерактивных пользовательских интерфейсов. Он обеспечивает реактивные обновления данных и простую интеграцию с существующими проектами. Vue сочетает гибкость с мощным инструментарием, что делает его подходящим как для небольших компонентов, так и для полноценных веб-приложений. Популярные инструменты: Vue Router, Vuex, Pinia, Nuxt.js.", "Angular": "Angular — это крупный фреймворк от Google, ориентированный на создание сложных веб-приложений. Он построен на TypeScript и поддерживает строгую модульную архитектуру, двустороннюю привязку данных и мощные инструменты для работы с асинхронными потоками. Часто используется в корпоративной разработке. Основные технологии: RxJS, Angular CLI, NgRx.", "Node.js": "Node.js — это среда выполнения JavaScript, которая позволяет запускать код на сервере, обеспечивая высокую производительность благодаря асинхронной обработке событий. Она основана на движке V8 и активно применяется для создания масштабируемых серверных решений, микросервисов и API.", "Express": "Express — минималистичный и гибкий фреймворк для Node.js, предназначенный для создания веб-приложений и API. Он предоставляет удобные механизмы маршрутизации, middleware и интеграции с базами данных, что делает его популярным выбором для серверных разработчиков.", "Django": "Django — высокоуровневый Python-фреймворк, предназначенный для быстрого создания безопасных и масштабируемых веб-приложений. Django включает встроенную ORM, систему аутентификации, административную панель и множество инструментов для разработки сложных проектов. Применяется в крупных сервисах, таких как Instagram и Spotify.", "Flask": "Flask — легковесный веб-фреймворк на Python, который предоставляет разработчикам максимальную гибкость. В отличие от Django, он не навязывает жесткую архитектуру, что делает его идеальным для небольших веб-приложений и REST API.", "FastAPI": "FastAPI — высокопроизводительный фреймворк для создания API на Python. Он поддерживает асинхронную обработку запросов, автоматически генерирует документацию и использует Pydantic для валидации данных, что делает его идеальным выбором для разработки современных API.", "Spring": "Spring — мощный фреймворк на Java, предназначенный для создания корпоративных приложений. Он включает в себя инструменты для работы с базами данных, безопасностью, микросервисами и тестированием. Использует принципы инверсии управления (IoC) и внедрения зависимостей (DI).", "Hibernate": "Hibernate — популярный ORM-фреймворк для Java, позволяющий разработчикам работать с базами данных через объектную модель. Это значительно упрощает управление данными и минимизирует необходимость написания SQL-запросов вручную.", "Jakarta EE": "Jakarta EE (ранее Java EE) — это набор спецификаций и API для разработки масштабируемых корпоративных приложений на Java. Он включает такие технологии, как JPA, EJB, JSF, и обеспечивает стандартизированные решения для создания сложных серверных систем." }

    Теперь откройте файл package.json и отредактируйте пункт scripts следующим образом:

    "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" },

    Загрузим все наши файлы проекта на GitHub.

    Добавляем все изменения к следующему коммиту:

    Создаем коммит с сообщением, фиксируя все изменения:

    git commit -m "first commit"

    Отправляем изменения на GitHub:

    Теперь, чтобы бот мог работать беспрерывно 24/7, его необходимо загрузить и запустить на сервере. Для развертывания я буду использовать сервис Simple-Server. Предварительно необходимо зарегистрироваться на сайте.

    Первым делом создайте проект, указав его название. При желании загрузите иконку и добавьте описание.

    Теперь необходимо создать облачный сервер. В процессе создания перейдите на вкладку «Маркетплейс» и выберите Node.js. Благодаря этому сервер сразу будет создан с установленным Node.js, и вам не придется устанавливать его вручную.

    В регионе выберите тот, который ближе всего, — где минимальный пинг.

    Конфигурацию выбираете по своему усмотрению. Для запуска данного проекта достаточно минимальной конфигурации.

    В сети обязательно должен быть установлен публичный IP, а дополнительные услуги настраивайте по своему усмотрению.

    В авторизации и Cloud-init ничего не меняйте. В информации о сервере введите имя сервера, его описание, а также выберите проект, который мы создали ранее.

    Когда всё выбрали и проверили, нажимаем на кнопку «Заказать». Через несколько минут сервер запустится — можно продолжить работу.

    После создания сервера на вкладке «Дашборд» скопируйте Root-пароль для входа и перейдите на вкладку «Консоль». Введите логин пользователя root. Далее вставьте пароль который вы скопировали. При вставке или вводе пароля он не будет виден!

    Вы также можете подключиться к серверу через терминал на вашем компьютере. SSH-команду для подключения и реквизиты root можно найти на дашборде сервера.

    После входа в систему введите команду, чтобы получить последние обновления:

    Создадим новую папку, куда и поместим бота. Вводите эти команды последовательно:

    Перенесем код с GitHub на наш сервер. Введите команду для клонирования репозитория, указав свою ссылку:

    git clone https://github.com/Tulopex/plkb

    В процессе клонирования потребуется указать имя пользователя и токен для авторизации. Подробнее о том как создать этот токен, рассказано здесь.

    После клонирования перейдите в вашу папку с проектом с помощью команды:

    Вместо plkb укажите название своего проекта.

    Для установки пакетов проекта используйте команду:

    Теперь, чтобы бот работал постоянно, а также автоматически запускался после перезагрузки сервера, достаточно установить менеджер процессов pm2.

    Затем запустите сервер Node.js, используя pm2:

    sudo pm2 start index.js --name "plkb" --watch

    Настройте автоматический запуск при старте или перезапуске сервера:

    Теперь можно полноценно пользоваться ботом. Чтобы проверить статус работы того или иного процесса, воспользуйтесь командой pm2 list внутри папки вашего проекта.

    При отправке команды /start бот ответит следующим образом:

    При нажатии на одну из инлайн-кнопок, например, «JavaScript», бот изменит сообщение следующим образом:

    При нажатии на одну из инлайн-кнопок под сообщением о JavaScript, бот также отредактирует сообщение.

    А при нажатии инлайн-кнопки «Назад» бот вернет нас в главное меню с выбором языка программирования.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны