Введение

Это мой первый серьезный проект на Node.js без учебы в качестве бэкенд-разработчика. Я создал бота для частного сервера Discord, предназначенного для общения и ролевых игр.

Ссылки

В качестве основной библиотеки для работы с Discord.js с Nest.js я использовал эту.

Команды бота

Бот может делать следующее.

  • Подсчитывает посты пользователей в определенных каналах (админ решает, в каких именно) и выводит рейтинг за все время, неделю или месяц.
  • С помощью RANDOM.ORG выдает случайное число/действие.
  • Поддерживает простую экономику сервера - позволяет пользователям сервера зарабатывать валюту и покупать на нее игровые предметы (которые могут быть созданы администратором)

Детали реализации

  • Язык разработки: Node.js
  • Фреймворк Nest.js
  • База данных: Google Firebase

Прогресс в работе

В процессе работы я познакомился с Nest.js и Discord.js поближе, получил опыт разработки ботов. Я настроил Github Actions так, чтобы образ на Docker Hub обновлялся после изменений в основной ветке репозитория.

Скриншоты

Рейтинг участников сервера
Скиллчек
Вывод рейтинга, в случае малого количества сообщений
Меню команд бота

Запуск бота с помощью docker compose

Прежде всего, вам нужно создать файл docker-compose.yml со следующим содержимым:

name: paimon
services:
  paimon-bot:
    ports:
      - 8000:8000
    volumes:
      - .:/usr/src/app
    env_file:
      - .env
    restart: always
    logging:
      options:
        max-size: 1g
    image: koshacha/paimon-bot:master

Вам также нужно будет создать файл .env и поместить в него следующее.

DISCORD_TOKEN=""
DEV_GUILD=""
GOOGLE_APPLICATION_CREDENTIAL=""
GOOGLE_PROJECT_ID=""
GOOGLE_CLIENT_EMAIL=""
GOOGLE_PRIVATE_KEY=""

Конечно, сначала вам нужно будет получить токен Discord и ключи Google Firebase.

Все, что вам останется сделать, так это запустить приложение с помощью команды:

docker-compose up -d