Логирование Discord-сервера
Или как создать бота и веб-сайт для логирования вашего Discord-сервера
В этой статье мы рассмотрим, как создать бота и веб-сайт для логирования вашего Discord-сервера. Вы, вероятно, задаетесь вопросом: что такое логирование и зачем оно нужно? В нашем случае логирование — формирование записей о происходящих событиях: что, где и когда происходит на сервере. Это позволит администраторам более эффективно контролировать порядок, выявлять нарушения и упрощать управление сервером.
Основной функционал проекта логирования discord-сервера:
- Отслеживание всех сообщений на сервере.
- Логирование удаленных сообщений.
- Запись редактированных сообщений.
- Мониторинг входов, выходов и перемещений пользователей в голосовых каналах.
Кроме того, мы задеплоим оба проекта в Amvera Cloud, используя простое перетягивание файлов в интерфейсе и преднастроенную базу данных MySQL. Amvera, это облако для простого развертывания ботов со встроенным Ci/Cd, мониторингом, бэкапами и алертингом. Данный способ развертывания и обновления проще, чем использование VPS.
Создание и настройка базы данных
Для начала заходим на хостинг и регистрируемся, если вы еще этого не сделали. Затем переходим в раздел "Преднастроенные сервисы" и создаем новый сервис. В открывшемся окне выбора сервисов, делаем как показано на скриншоте.
После этого нажимаем кнопку "Далее", вводим название проекта и выбираем тарифный план.
На следующем этапе конфигурации вам потребуется ввести версию базы данных, аргументы запуска, рут-пароль, имя пользователя и его пароль. Рекомендуется установить версию 5.7. Не забывайте использовать надежные пароли для безопасности. После завершения этих шагов, можно нажимать "Завершить" и ждать завершения создания сервера.
Поздравляю, вы успешно создали сервер!
Теперь необходимо развернуть phpMyAdmin для управления вашей базой данных. Для этого снова перейдите в раздел "Преднастроенные сервисы" и создайте новый сервис, делая так, как на скриншоте.
Нажмите "Далее", введите название проекта и выберите тариф. В окне конфигурации нужно ввести переменные окружения `PMA_ABSOLUTE_URI` и `PMA_ARBITRARY`.
В поле `PMA_ABSOLUTE_URI` укажите ссылку на сайт phpMyAdmin - `https://www.phpmyadmin.net`, а в поле `PMA_ARBITRARY` введите просто 0.
После завершения всех настроек, нажмите "Завершить" и ждите запуска. Пока ваш сервис запускается, перейдите в раздел "Домены", выберите "Создать доменное имя" и выбираете как на скриншоте.
После создания доменного имени, переходите к phpMyAdmin. Теперь осталось добавить нашу базу данных для управления.
Перейдите в проект с phpMyAdmin и в разделе "Переменные" выберите "Создать переменную". В поле названия впишите `PMA_HOST`, а в значение вставьте хост (внутреннее доменное имя) вашего сервера базы данных. Скопировать его можно из проекта с базой данных, как показано ниже:
После вставки скопированного имени, нажмите "Применить". После создания переменной перезагрузите проект с phpMyAdmin.
Перед началом работы, зайдите в phpMyAdmin под пользователем root. В боковом меню выберите "Создать БД" и введите название, например, `logs`, а для сравнения выберите `utf8mb4_general_ci`.
Отлично! Вы полностью настроили сервер и базу данных, теперь можно приступать к работе.
Разработка бота и деплой
Подготовка к работе
Установим библиотеки с помощьб pip в CMD: `
Можем приступать!
Создание бота
Файл settings.py
Создайте файл с именем `settings.py` и добавьте в него следующие настройки:
Сохраните файл.
Файл bot.py
Создайте файл с именем `bot.py` и добавьте в него следующий код:
Запуск бота с использованием токена
Сохраните файл `bot.py`. Теперь ваш бот готов к работе с базой данных, а также может обрабатывать события сообщений и голосовых каналов.
Деплоим бота
Для развертывания бота мы используем тот же сервер, на котором находится база данных. Первым шагом переходим в раздел "Приложения" и создаем новое приложение, указывая тариф и название.
После этого загружаем в интерфейс файлы `main.py` и `settings.py`.
В папке с ботом создаем файл `requirements.txt` со следующим содержимым:
Далее создаем файл конфигурации amvera.yaml с таким содержанием:
Затем загружаем данные файлы в проект. После завершения всех шагов нажимаем "Далее" и затем "Завершить". После того как бот запустился и получил статус "Приложение запущено", можем проверить его работу. Если все правильно, то при заходе в голосовой канал в базе появится запись:
А при переходе из канала в канал:
Вот примеры при редактировании сообщения и его отправки:
Поздравляю, мы создали бота. Теперь осталось создать сайт, в котором будем делать вывод логов.
Создание и деплой сайта
Подготовка к работе
Для разработки сайта на PHP нам понадобится веб-сервер, так как PHP файлы не могут быть прочитаны браузером так же, как HTML файлы. В данном случае я рекомендую использовать Denwer, поскольку он прост в установке и использовании.
1. Установка Denwer: перейдите на официальный сайт Denwer и установите его.
2. Запуск Denwer: после установки запустите Denwer через ярлык "Run" или через файл `Run.exe`, который находится в папке `WebServers/denwer`.
3. Создание структуры проекта: перейдите в директорию `WebServers/home/test1.ru` и для удобства создайте в ней папку `logs`. В этой папке создайте следующие файлы: - `style.css`, `del_messages.php`, `exit.php`, `index.php`, `login.php`, `message.php`, `edit_message.php`
Также создайте папку `includes`, в которой создайте файлы: - `link.php`, `config.php`
Теперь вы готовы начать разработку вашего сайта.
Создание верстки и бэкенда
Главная страница
Создайте файл `index.php`, который будет служить главной страницей. Добавьте в него следующий php код: ```php
Форма авторизации
еперь создадим форму для авторизации в файле `login.php`
Выход из аккаунта
Создайте файл `exit.php` с кодом для выхода: ```php ```
Инклюды
Теперь создайте необходимые инклюды в папке `includes`.
Вывод логов
Теперь приступим к созданию файлов для вывода логов. **Файл message.php** будет содержать код для отображения всех сообщений:
**Файл del_message.php** будет для показа удаленных сообщений:
**Файл edit_message.php** будет для редактирования сообщений:
**Файл voice.php** будет содержать логи голосовых каналов:
Создание стилей
Остался последний шаг - создание стилей. Открываем ранне созданный файл style.css и редактируем его следующим образом:
Отлично! Теперь мы можем приступить к деплою сайта.
Деплой сайта
Мы задеплоем сайт на том же хостинге Amvera Cloud. Первым делом идем в раздел "Приложения" и создаем новое приложение, указав тариф и название.
Через интерфейс закидываем файлы и нажимаем "Далее". В окне конфигурации выбираем все как на скриншоте:
все что в разделе run оставляем неизменным. После ввода и выбора всех нужных значений нажимаем кнопку "Завершить" и ждем запуск.
Заключение и результат
Теперь, когда все наши проекты настроены и работают, можем проверить их работу! Давайте зайдем на наш сайт и выполним вход, используя следующие данные: имя пользователя — root, пароль — oxddeadtime2168. После входа мы будем перенаправлены на страницу с таблицей, содержащей ссылки на разделы логов.
Затем перейдем в раздел логов сообщений, где увидим наше сообщение:
Далее, перейдя в раздел логов голосовых каналов, мы сможем увидеть запись о нашем заходе в канал:
Таким образом, мы успешно завершили настройку и развертывание нашего проекта! Все компоненты работают корректно, и мы можем продолжать развивать функционал в будущем.
А если потребуется обновить код, достаточно будет просто закинуть новые файлы в интерфейсе Amvera, или сделать git push в привязанный репозиторий. Это бесшовно обновит наш проект.
Код проекта доступен по ссылке.