This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Мануал FAQ Хранение логов при помощи бота Telegram (JavaScript)

dooj

Гуру
Автор темы
high coder
24 Мар 2022
459
166
100
Всех приветствую! Это мой первый мануал и хотелось бы рассказать о хранение логов, в удобном и привычном для всех месте - это мессенджер Telegram. Бот будет написан на языке JavaScript.

Для начала всего, необходимо создать бота. Делать мы это будем через другого телеграмм бота

Переходим по этой ссылке и создаем бота командой /newbot. После команды следуйте инструкции (придумайте имя боту и его логин). На выходе вы получите токен, который нам совсем скоро понадобится. НЕ В КОЕМ СЛУЧАЕ НЕ ПЕРЕДАВАЙТЕ ТОКЕН 3-М ЛИЦАМ!

Для начала самой разработки, откроем любой IDE. Я буду использовать WebStorm, разницы от того какой будете использовать - нету.
Создадим папку и назовем ее rage_logs. Открываем терминал, переходим в эту папку и пишем команду
Bash:
npm init && npm i dotenv && npm i node-telegram-bot-api
Данные команды помогут нам инициализировать проект (npm init) и установить несколько зависимостей (dotenv и node-telegram-bot-api)
При инициализации проекта вам нужно будет заполнить некоторые данные в терминале.

Пока устанавливаются зависимости мы создаем два файла. Первый файл будет называться .env и второй index.js


В файлике .env пропишем некоторые данные с которыми будем работать. Тут то как раз нам и понадобится наш токен, который мы получали у бота

Вставляем в данный файл данные - TELEGRAM_BOT_TOKEN=<TOKEN>
<TOKEN> - заменяем на ваш токен


Теперь, открываем второй файл - index.js и первым делом импортируем наши ранее установленные зависимости в проект.

JavaScript:
require('dotenv').config(); // получаем доступ к .env файлу
const TelegramBot = require('node-telegram-bot-api'); // зависимость для работы с ботом TG

После этого нам нужно создать самого бота из забинденного нами ранее токена в файле .env и прописать ему некоторый конфиг, а именно polling для получения новых обновлений.

JavaScript:
const bot = new TelegramBot(process.env.TELEGRAM_BOT_TOKEN, {polling: true});

Обращаемся к файлу .env через process.env и забираем от туда наш токен.

Дальше работаем с API node-telegram-bot-api. В данном мануале я не буду разжевывать все ивенты которые присутствуют в данном API, рассмотрим минимальные ресурсы, которые нам понядобятся.
Нам нужно создать переменную, которая будет отвечать за чат, в который будут идти логи. Назовем ее chatId и пропишем функцию, которая при отправке сообщения будет присваивать этой переменной ее ID.

JavaScript:
let chatId;

bot.on('message', (msg) => {
    chatId = msg.chat.id
})

Сейчас нам нужно запустить бота. Пропишем команду
Bash:
node index.js

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

Если вас не устраивает динамический chatId, то возьмем статик и присвоим его переменной вручную, чтобы логи шли только к вам. (в будущем, если понадобится, обновлю мануал и расскажу как сделать так, чтобы можно было добавлять разные chatId, для отправки логов сразу в несколько чатов)

Приступим! Сразу создадим переменную chatId и пропишем функцию которая будет писать нам в чат с ботом наш chatId.

JavaScript:
let chatId;

bot.on('message', (msg) => {
    bot.sendMessage(
        chatId,
        chatId,
    )
})

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

JavaScript:
let chatId = 2135154329;

bot.on('message', (msg) => {
    chatId = msg.chat.id

    bot.sendMessage(
        chatId,
        chatId,
    )
})

Можно удалить функцию которая отправляет вам в чат ваш ID.

Основа положена, поздравляю! Не забываем включать бота, при работе с ним

Пропишем ивент, для проверки работоспособности бота.
JavaScript:
mp.events.add('packagesLoaded', () => {
    bot.sendMessage(
        chatId,
        `Сервер был запущен!`,
    )
})

Данная команда отправит сообщение через бота Telegram при включении сервера (загрузки пакетов).
Теперь создадим/откроем RageMP проект, перейдем по пути server-files\packages\gamemode и перенесем папку rage_logs туда.

(папка может называться не gamemode, а по другому, на всех проектах название индивидуальное)

Советую удалить node_modules перед переносом. Если удалили данную папку, то после переноса через терминал переходим по пути server-files\packages\gamemode/rage_logs и прописываем команду
Bash:
npm install

Через терминал переходим по пути server-files\packages\gamemode/rage_logs и прописываем команду
Bash:
node index.js

Теперь если это пустой проект, в папке gamemode создаем еще один файл index.js и пишем там:

JavaScript:
require('./rage_logs/index')

Данная команда импортирует бота к нам в проект.

Дело за малым! Запустите бота, а после сервер.

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

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

Зайдите в терминал где у вас запущен бот и нажмите сочетание клавиш CTRL + C 1 - 2 раза.
JavaScript:
require('dotenv').config();
const TelegramBot = require('node-telegram-bot-api');

const bot = new TelegramBot(process.env.TELEGRAM_BOT_TOKEN, {polling: true});

let chatId = 12343243212;

mp.events.add('packagesLoaded', () => {
    bot.sendMessage(
        chatId,
        `Сервер был запущен!`,
    )
})
 

dooj

Гуру
Автор темы
high coder
24 Мар 2022
459
166
100
Последнее редактирование:
Реакции: Harland David Sanders