Loading Mateus Neiva's website…
Skip to content

Automation

Shiva Toolbox

A modular Discord bot with automatic roles, live alerts, reaction roles, and per-server configuration.

Technologies

TypeScript maintains contracts between commands, modules, and configuration. Discord.js provides Discord integration, while Prisma organizes PostgreSQL access. Shared packages and Docker-based execution support module development and operation.

  • TypeScript
  • Discord.js
  • Prisma
  • PostgreSQL

About the project

Shiva Toolbox brings automation for Discord communities together in a modular TypeScript bot. It covers recurring server tasks such as assigning roles, sending join and leave messages, and notifying members about streams. Each community can configure its resources through commands, including the language used by the bot.

Configuration is organized per server and persisted in PostgreSQL. This connects Discord commands to the modules that perform each task, without treating all communities as a single global configuration. The project also includes Docker-based execution and database migrations, bringing local development closer to the bot's operation.

What it does

  1. 01

    Automatic roles and reaction-based roles. The modules provide different ways to organize member participation and associate interactions with roles within a server.

  2. 02

    Join and leave messages configurable per server. The member alerts module complements community management with notifications about participants arriving or leaving.

  3. 03

    Twitch and YouTube stream alerts. Dedicated commands connect platform configuration with the notifications used by the community on Discord.

  4. 04

    Language and status commands, with configuration persisted through Prisma and PostgreSQL. Language is set per server, while status commands help inspect the bot's execution.

How it's built

The bot application uses discord.js to handle commands and events. Separate packages hold shared contracts and the data layer, built with Prisma and PostgreSQL. Modules are associated with their use cases, including automatic roles, member alerts, streams, and reaction roles.

Twitch and YouTube integrations use platform configuration to enable alerts. In the execution environment, Docker Compose organizes the database and the bot, with migrations applied before startup. The process also includes shutting down the Discord client and database connections when stop signals arrive.