Как создать и задеплоить бота-модератора на Node.JS
Как сделать простого бота-модератора чата в Telegram с помощью Node.JS и развернуть на сервере через push в Git за три команды в терминале.
74 открытий925 показов
Всем привет! В этой статье мы поговорим о том, как сделать простого бота-модератора чата в телеграм с помощью Node.JS.
В нашем случае будут вот такие команды:
- /help
— выводит список команд,
- /ban
— банит пользователя в чате,
- /mute
— выдает мут пользователю в чате,
- /unban
— анбанит пользователя в чате,
- /unmute
— снимает мут пользователю в чате.
После написания кода бота мы развернем его в облаке Amvera буквально за пару минут и три команды в IDE, делая git push
в привязанный репозиторий.
Создание бота
Начнем с того, что нам нужно создать самого бота и получить его токен.
Для этого заходим в бота @BotFather, нажимаем старт и вводим команду /newbot
. Дальше пишем имя бота, а после имени — его @username.
Пишем код бота модератора
После того как мы создали бота, мы можем приступить к его коду.
1. Создаем файл bot.js
2. Импортируем библиотеку:
3. Создаем переменную(константу) бота где передаем токен:
Перейдем к командам бота-модератора
1. Создаем обработчик команды /start
:
2. Создаем обработчик команды /help
:
3. Создаем команду /ban
:
4. Создаем команду /mute
:
5. Создаем команду /unban
:
6. Создаем команду /unmute
:
7. В конце файла пишем запуск бота:
Итоговый файл bot.js
Подготовка к деплою бота модератора
После того как мы написали код, нам нужно запустить его на хостинге.
Для этого отлично подойдет облако Amvera Cloud.
Встроенный функционал CI/CD Amvera позволит нам накатывать обновления простой командой git push amvera master и максимально упростить процесс развертывания в сравнении с классической VPS.
Но перед деплоем нам необходимо создать конфигурационный файл amvera.yml (а если бы наш бот был на python, то и файл с зависимостями requirements.txt).
В разделе «Конфигурация» создадим amvera.yaml, в котором и будет наша конфигурация.
Здесь выбираем NODE.JS Server
Далее выбираем все как на скриншоте ниже:
Нажимаем кнопку Generate YAML и файл загрузится со всеми настройками.
Следует обратить внимание, что порт в конфигурации должен соответствовать порту в коде. Это поможет избежать 502 ошибки.
И если вы используете SQLite3, сохранение необходимо провести в постоянное хранилище /data. Это позволит избежать ее утери при пересборке проекта.
Деплой
После того как мы получили файл конфигурации, мы можем приступить к деплою бота.
Переходим на сайт amvera.ru и регистрируемся если не сделали этого.
P.S.: за регистрацию вы можете получить 111 рублей на баланс.
Деплой через интерфейс
Создаем проект — вводим его имя, выбираем приложение и выбираем тариф начальный плюс.
Загружаем основной файл бота и файл конфигураций:
Нажимаем кнопку «Далее» и у нас появится окно настроек конфигураци, тут ничего не делаем, так как файл конфигураций сделал все за нас, нажимаем «Завершить» и начнется сборка. Если сборка прошла успешно, то начнется запуск бота.
И вауля, приложение не выдало ошибки и бот запустился:
Деплой через git push
Это альтернативный способ, который в дальнейшем позволит нам доставлять обновления буквально тремя командами в терминале.
Создаем папку и закидываем туда все файлы. Открываем командную строку и переходим в нашу папку с помощью команды
. Создаем репозиторий с помощью команды cd
"путь к папке"git init
. Заходим в амвера и создаем проект. На данном этапе мы выбираем метод «Через Git» и нажимаем «Отмена».
Теперь нам нужно подключиться к существующему репозиторию, для этого копируем команду ниже и вставляем в командную строку. Вводим логин и пароль от ЛК Amvera.
После чего вводим команды:
Это необходимо для добавления файлов и создания коммита.
Теперь нам остается запушить все файлы, и сборка начнется автоматически. Для этого вводим команду:
Результат
Наш бот запущен, а значит, мы можем ввести команды:
Все работает, и это отлично!
В этой статье мы поговорили о том как сделать простейшего бота модератора на Node.JS, и развернули его в облаке Amvera через простую команду git push amvera master.
Данный пример содержит самый базовый функционал, практически "hello world", но надеюсь, даст первое представление о работе подобных ботов.
74 открытий925 показов