В статье описан процесс создания простого чат-бота для Telegram на собственном VPS. Вы узнаете, как выбрать сервер, установить систему, подключить бота и настроить его на выполнение полезных задач.
С чего всё началось
Первые чат-боты появились в 1966 году, когда профессор MIT Джозеф Уизербаум создал ELIZA — программу, имитирующую разговор с психотерапевтом, только без пауз для слов: «М-м… и как вы себя чувствуете?».
С тех пор технологии превратили невозможное в обыденное. Сегодня чат-боты выполняют массу задач, которые раньше казались сложными. Они помогают командам менеджеров справляться с однообразной работой, потому что освобождают время для действительно важных дел.
Типы ботов
В зависимости от функций их можно разделить на множество категорий.
- Торговые боты помогают клиентам в покупках, консультируют по товарам, предлагают акции и скидки.
- Боты техподдержки решают типовые технические проблемы и отвечают на вопросы, предлагая инструкции или направляя запрос в службу поддержки. Они работают с базами данных, чтобы быстро находить ответы на типичные вопросы.
- Лид-боты специально настроены для сбора информации о потенциальных клиентах и их интересах. Они интегрированы с CRM-системами и передают собранные данные в базу для последующей обработки.
- Информационные чат-боты предоставляют актуальную информацию и новости. Такой помощник покажет прогноз погоды, новости, расписание мероприятий или информацию о курсах валют.
Это лишь несколько вариантов из огромного числа.
Подготовка VPS
Итак, нужно выбрать подходящий сервер. Это похоже на подбор плана для мобильного телефона, только вместо минут и гигабайт мы настраиваем мощность оборудования. Вот главное, на что стоит обратить внимание.
- Ресурс. Для простого ассистента достаточно базового тарифа. Не переживайте, если это звучит сложно — как правило, провайдеры предлагают чёткое описание того, что именно он в себя включает.
- Операционная система. Проверьте, чтобы VPS поддерживал нужную ОС. Для чат-бота обычно подходит Ubuntu или любая другая версия Linux.
Зарегистрируйтесь на сайте выбранного оператора, подберите подходящий тариф и следуйте инструкциям для создания VPS.
Провайдер AdminVPS предлагает аренду VPS/VDS с гибкой конфигурацией.
Аренда VPS/VDS виртуального сервера от AdminVPS — это:
- Бесплатное администрирование
- Только NVMe диски
- Быстрая техподдержка
- Защита от DDoS-атак
- Доступная цена
Установка операционной системы
- Выбираем программное обеспечение. Большинство провайдеров предлагают несколько вариантов. Для бота лучше Linux, например, Ubuntu. Оно бесплатное и отлично подходит для новичков.
- Установка. Нужно выбрать систему и нажать кнопку «Установить». Процесс автоматически начнётся.
- После этого вы получите логин и пароль для подключения к серверу. Эти данные обычно приходят на e-mail или отображаются в панели управления VPS.
Вот и всё. Теперь сервер с установленной операционной системой готов к настройке чат-бота.
Телеграммный бот
Наш информационный Telegram-бот будет отвечать на вопросы, помогать в поиске справочной информации и решать простые задачи на основе введённых ключевых слов.
Шаг 1. Открываем BotFather
BotFather ― это помощник Telegram, через которого создаются и управляются все виртуальные ассистенты. С него и начнём.
- Открываем Telegram и в строке поиска вводим BotFather. Жмём на чат.
- Вступаем в диалог, отправляя команду /start, а затем /newbot.
- Придумываем username (не так важно, какой), обязательно заканчивающееся на bot (например, YourCoolBot).
- После этого 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. Теперь, когда базовые навыки в кармане, можно смело браться за более сложный вариант.
Читайте в блоге: