Как создать и задеплоить бота-модератора на Node.JS

Аватарка пользователя Илья Никитин
Отредактировано

Как сделать простого бота-модератора чата в Telegram с помощью Node.JS и развернуть на сервере через push в Git за три команды в терминале.

74 открытий925 показов
Как создать и задеплоить бота-модератора на Node.JS

Всем привет! В этой статье мы поговорим о том, как сделать простого бота-модератора чата в телеграм с помощью Node.JS.

В нашем случае будут вот такие команды:

- /help — выводит список команд,

- /ban — банит пользователя в чате,

- /mute — выдает мут пользователю в чате,

- /unban — анбанит пользователя в чате,

- /unmute — снимает мут пользователю в чате.

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

Создание бота

Начнем с того, что нам нужно создать самого бота и получить его токен.

Для этого заходим в бота @BotFather, нажимаем старт и вводим команду /newbot. Дальше пишем имя бота, а после имени — его @username.

Как создать и задеплоить бота-модератора на Node.JS 1

Пишем код бота модератора

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

1. Создаем файл bot.js

2. Импортируем библиотеку:

			const { Telegraf } = require("telegraf");
		

3. Создаем переменную(константу) бота где передаем токен:

			const bot = new Telegraf(TOKEN);
		

Перейдем к командам бота-модератора

1. Создаем обработчик команды /start:

			bot.start((ctx) => ctx.reply("Привет, я бот модератор"));
		

2. Создаем обработчик команды /help:

			bot.help((ctx) => ctx.reply("Команды:\n/start - начать\n/help - список команд,\n/ban - забанить\n/unban - разбанить\n/mute - замутить\n/unmute - размутить"));
		

3. Создаем команду /ban:

			bot.command('ban', async (ctx) => {
  await ctx.banChatMember(ctx.message.reply_to_message.from.id);
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} забанен`);
});
		

4. Создаем команду /mute:

			bot.command('mute', (ctx) => {
  ctx.telegram.restrictChatMember(ctx.chat.id, ctx.message.reply_to_message.from.id, {can_send_messages: false})
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} замучен`)
});
		

5. Создаем команду /unban:

			bot.command('unban', async (ctx) => {
  await ctx.unbanChatMember(ctx.message.reply_to_message.from.id);
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} разбанен`);
});
		

6. Создаем команду /unmute:

			bot.command('unmute', (ctx) => {
  ctx.telegram.restrictChatMember(ctx.chat.id, ctx.message.reply_to_message.from.id, {can_send_messages: true})
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} размучен`)
});
		

7. В конце файла пишем запуск бота:

			bot.launch();
		

Итоговый файл bot.js

			const { Telegraf } = require("telegraf");
const bot = new Telegraf('7374585695:AAFuWeQmW5yQgvwivblDSX7C14vP9cZa8KM');

bot.start((ctx) => ctx.reply("Привет, я бот модератор"));

bot.help((ctx) => ctx.reply("Команды:\n/start - начать\n/help - список команд,\n/ban - забанить\n/unban - разбанить\n/mute - замутить\n/unmute - размутить"));

bot.command('ban', async (ctx) => {
  await ctx.banChatMember(ctx.message.reply_to_message.from.id);
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} забанен`);
});

bot.command('mute', (ctx) => {
  ctx.telegram.restrictChatMember(ctx.chat.id, ctx.message.reply_to_message.from.id, {can_send_messages: false})
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} замучен`)
});

bot.command('unban', async (ctx) => {
  await ctx.unbanChatMember(ctx.message.reply_to_message.from.id);
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} разбанен`);
});

bot.command('unmute', (ctx) => {
  ctx.telegram.restrictChatMember(ctx.chat.id, ctx.message.reply_to_message.from.id, {can_send_messages: true})
  ctx.reply(`Пользователь ${ctx.message.reply_to_message.from.first_name} размучен`)
});

bot.launch();
		

Подготовка к деплою бота модератора

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

Для этого отлично подойдет облако Amvera Cloud.

Встроенный функционал CI/CD Amvera позволит нам накатывать обновления простой командой git push amvera master и максимально упростить процесс развертывания в сравнении с классической VPS.

Но перед деплоем нам необходимо создать конфигурационный файл amvera.yml (а если бы наш бот был на python, то и файл с зависимостями requirements.txt).

В разделе «Конфигурация» создадим amvera.yaml, в котором и будет наша конфигурация.

Здесь выбираем NODE.JS Server

Как создать и задеплоить бота-модератора на Node.JS 2

Далее выбираем все как на скриншоте ниже:

Как создать и задеплоить бота-модератора на Node.JS 3

Нажимаем кнопку Generate YAML и файл загрузится со всеми настройками.

Следует обратить внимание, что порт в конфигурации должен соответствовать порту в коде. Это поможет избежать 502 ошибки.
И если вы используете SQLite3, сохранение необходимо провести в постоянное хранилище /data. Это позволит избежать ее утери при пересборке проекта.

Деплой

После того как мы получили файл конфигурации, мы можем приступить к деплою бота.

Переходим на сайт amvera.ru и регистрируемся если не сделали этого.

P.S.: за регистрацию вы можете получить 111 рублей на баланс.

Деплой через интерфейс

Создаем проект — вводим его имя, выбираем приложение и выбираем тариф начальный плюс.

Загружаем основной файл бота и файл конфигураций:

Как создать и задеплоить бота-модератора на Node.JS 4

Нажимаем кнопку «Далее» и у нас появится окно настроек конфигураци, тут ничего не делаем, так как файл конфигураций сделал все за нас, нажимаем «Завершить» и начнется сборка. Если сборка прошла успешно, то начнется запуск бота.

И вауля, приложение не выдало ошибки и бот запустился:

Как создать и задеплоить бота-модератора на Node.JS 5

Деплой через git push

Это альтернативный способ, который в дальнейшем позволит нам доставлять обновления буквально тремя командами в терминале.

Создаем папку и закидываем туда все файлы. Открываем командную строку и переходим в нашу папку с помощью команды cd "путь к папке". Создаем репозиторий с помощью команды git init. Заходим в амвера и создаем проект. На данном этапе мы выбираем метод «Через Git» и нажимаем «Отмена».

Как создать и задеплоить бота-модератора на Node.JS 6

Теперь нам нужно подключиться к существующему репозиторию, для этого копируем команду ниже и вставляем в командную строку. Вводим логин и пароль от ЛК Amvera.

Как создать и задеплоить бота-модератора на Node.JS 7

После чего вводим команды:

			git add .
git commit -m "initial commit"

		

Это необходимо для добавления файлов и создания коммита.

Теперь нам остается запушить все файлы, и сборка начнется автоматически. Для этого вводим команду:

			git push amvera master
		

Результат

Наш бот запущен, а значит, мы можем ввести команды:

Как создать и задеплоить бота-модератора на Node.JS 8
Как создать и задеплоить бота-модератора на Node.JS 9
Как создать и задеплоить бота-модератора на Node.JS 10

Все работает, и это отлично!

В этой статье мы поговорили о том как сделать простейшего бота модератора на Node.JS, и развернули его в облаке Amvera через простую команду git push amvera master.

Данный пример содержит самый базовый функционал, практически "hello world", но надеюсь, даст первое представление о работе подобных ботов.

Следите за новыми постами
Следите за новыми постами по любимым темам
74 открытий925 показов