От идеи до воплощения: запускаем чат-бота на VPS

От идеи до воплощения: запускаем чат-бота на VPS

В статье описан процесс создания простого чат-бота для Telegram на собственном VPS. Вы узнаете, как выбрать сервер, установить систему, подключить бота и настроить его на выполнение полезных задач.

С чего всё началось

Первые чат-боты появились в 1966 году, когда профессор MIT Джозеф Уизербаум создал ELIZA — программу, имитирующую разговор с психотерапевтом, только без пауз для слов: «М-м… и как вы себя чувствуете?».

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

Типы ботов

В зависимости от функций их можно разделить на множество категорий. 

  • Торговые боты помогают клиентам в покупках, консультируют по товарам, предлагают акции и скидки.  
  • Боты техподдержки решают типовые технические проблемы и отвечают на вопросы, предлагая инструкции или направляя запрос в службу поддержки. Они работают с базами данных, чтобы быстро находить ответы на типичные вопросы.
  • Лид-боты специально настроены для сбора информации о потенциальных клиентах и их интересах. Они интегрированы с CRM-системами и передают собранные данные в базу для последующей обработки. 
  • Информационные чат-боты предоставляют актуальную информацию и новости. Такой помощник покажет прогноз погоды, новости, расписание мероприятий или информацию о курсах валют. 

Это лишь несколько вариантов из огромного числа.

Подготовка VPS

Итак, нужно выбрать подходящий сервер. Это похоже на подбор плана для мобильного телефона, только вместо минут и гигабайт мы настраиваем мощность оборудования. Вот главное, на что стоит обратить внимание.

  • Ресурс. Для простого ассистента достаточно базового тарифа. Не переживайте, если это звучит сложно — как правило, провайдеры предлагают чёткое описание того, что именно он в себя включает.
  • Операционная система. Проверьте, чтобы VPS поддерживал нужную ОС. Для чат-бота обычно подходит Ubuntu или любая другая версия Linux.

Зарегистрируйтесь на сайте выбранного оператора, подберите подходящий тариф и следуйте инструкциям для создания VPS.

Провайдер AdminVPS предлагает аренду VPS/VDS с гибкой конфигурацией.


Аренда VPS/VDS виртуального сервера от AdminVPS — это:

  • Бесплатное администрирование
  • Только NVMe диски
  • Быстрая техподдержка
  • Защита от DDoS-атак
  • Доступная цена

Установка операционной системы

  1. Выбираем программное обеспечение. Большинство провайдеров предлагают несколько вариантов. Для бота лучше Linux, например, Ubuntu. Оно бесплатное и отлично подходит для новичков.
  2. Установка. Нужно выбрать систему и нажать кнопку «Установить». Процесс автоматически начнётся.
  3. После этого вы получите логин и пароль для подключения к серверу. Эти данные обычно приходят на e-mail или отображаются в панели управления VPS.

Вот и всё. Теперь сервер с установленной операционной системой готов к настройке чат-бота. 

Телеграммный бот

Наш информационный Telegram-бот будет отвечать на вопросы, помогать в поиске справочной информации и решать простые задачи на основе введённых ключевых слов.

Шаг 1. Открываем BotFather

BotFather ― это помощник Telegram, через которого создаются и управляются все виртуальные ассистенты. С него и начнём.

  1. Открываем Telegram и в строке поиска вводим BotFather. Жмём на чат.
  2. Вступаем в диалог, отправляя команду /start, а затем /newbot.
  3. Придумываем username (не так важно, какой), обязательно заканчивающееся на bot (например, YourCoolBot).
  4. После этого BotFather выдаст токен — ключ для подключения бота к серверу. Скопируйте его и сохраните, скоро он пригодится.

Шаг 2. Подключаемся к своему VPS по SSH

Открываем терминал и вводим:

ssh root@ваш-ip-адрес

Заменяем «ваш-ip-адрес» на реальный IP-адрес сервера. Нажимаем Enter и вводим пароль. Вы на сервере.

Если установлен Node.js, можно сразу переходить к следующему шагу. Если нет, устанавливаем:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
apt install -y nodejs

Шаг 3. Пишем код бота

Теперь создаём файл bot.js, где «живут» команды:

nano bot.js

Базовый скрипт для простого ассистента:

javascript
const TelegramBot = require('node-telegram-bot-api');
const token = 'ВАШ_ТОКЕН'; // Вставляем сюда токен, который нам выдал BotFather
const bot = new TelegramBot(token, {polling: true});
bot.on('message', (msg) => {
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Привет! Чем могу помочь?');

Так мы подключили библиотеку и токен. Чат-бот ответит приветствием, как только кто-то ему напишет.

Шаг 4. Добавляем модуль, который помогает работать с Telegram API

Это «коробка с инструментами», упрощающая взаимодействие с платформой. Он позволяет быстро отправлять ответы, обрабатывать входящие запросы, управлять чатами и выполнять другие действия, не вникая в сложные детали процесса.

Введите:

npm install node-telegram-bot-api

Библиотека подключена. Теперь помощник сможет выполнять множество интересных и полезных функций. Например, ответит на текстовые сообщения пользователей, если указать:

javascript
bot.on('message', (msg) => {
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Привет! Как дела?');
})

Будет реагировать на команды, /start или /help:

javascript
bot.onText(/\/help/, (msg) => {
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Я могу помочь с вопросами! Просто напиши мне.');
}).

Вы сможете добавлять кнопки к сообщениям для взаимодействия с ботом:

javascript
const options = {
reply_markup: {
keyboard: [['Кнопка 1', 'Кнопка 2']],
one_time_keyboard: true,
},
};
bot.sendMessage(chatId, 'Выберите опцию:', options);

Если настроить это, ассистент сможет отправлять изображения, видео или документы:

javascript
bot.sendPhoto(chatId, 'URL_или_путь_к_фото').

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

javascript
bot.on('new_chat_member', (msg) => {
const chatId = msg.chat.id;
bot.sendMessage(chatId, 'Добро пожаловать в чат!').

Шаг 5. Запускаем бота

Вводим:

node bot.js

Чат-бот оживёт и будет реагировать на запросы в Telegram. 

Он должен оставаться активным и после закрытия терминала, поэтому указываем:

npm install pm2 -g
pm2 start bot.js

Шаг 6. Проверяем работу

Обращаемся с запросом к помощнику в Telegram и, если он отвечает, значит миссия выполнена. Ваш Telegram-ассистент запущен на VPS и теперь можно его дорабатывать.

Как улучшить виртуального трудягу 

Подключите бота к внешним сервисам, чтобы получать данные через API. Потренируемся на запросе погоды.

Найдём API погоды. Варианты: OpenWeatherMap, WeatherAPI. Зарегистрируйтесь на сайте, чтобы получить API-ключ.

Подключаемся к VPS через SSH.

Переходим в директорию своего проекта командой cd и в папку, где находится bot.js:

cd /путь/к/вашему/проекту

Добавляем библиотеку. Теперь устанавливаем axios:

npm install axios

После установки вы можете использовать axios в своём приложении. Например, чтобы сделать запрос к API погоды, добавьте следующий код в файл bot.js:

javascript

Копировать код:

const axios = require('axios') // Пример функции для получения погоды
async function getWeather(city) {
const apiKey = 'ВАШ_API_КЛЮЧ'; // Вставьте сюда ваш API-ключ
const url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`;
try {
const response = await axios.get(url);
return response.data;
} catch (error) {
console.error('Ошибка при получении погоды:', error);
return null;
}
}

Пример:

bot.onText(/\/weather (.+)/, async (msg, match) => {
const city = match[1];
const weatherData = await getWeather(city);
if (weatherData) {
const chatId = msg.chat.id;
const message = `Погода в ${city}: ${weatherData.main.temp}°C, ${weatherData.weather[0].description}.`;
bot.sendMessage(chatId, message);
} else {
bot.sendMessage(msg.chat.id, 'Не удалось получить данные о погоде. Проверьте название города.');
}
});

После внесения изменений сохраните файл и запустите вашего бота снова:

node bot.js

Мы прошли вместе весь путь создания простого чат-бота для Telegram. Теперь, когда базовые навыки в кармане, можно смело браться за более сложный вариант. 

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях