Rhidium is built out of love for Discord bot development, and has 1 primary goal: to make your life easier. Whether you're just getting started or a seasoned developer, Rhidium is designed to simplify your workflow and help you create bots you can be proud of.
Rhidium is not a lightweight framework. It is built on top of the discord.js library, and aims to provide most of the core functionality required to bootstrap a powerful, modern Discord bot. Written in TypeScript, it provides the benefits of static type-checking and code completion in modern editors.
With Rhidium, you can focus on what's really important: Creating meaningful features
Excited to begin? Get started or try the demo!
We've compromised a list of some of the core functionality provided by Rhidium:
This TypeScript project uses Prisma TypeORM using the postgresql
adapter.
Available adapters: cockroachdb
, mongodb
, postgresql
Note: When using CockroachDB, the
autoincrement()
default function is defined only on BigInt fields. Changeautoincrement()
tosequence()
if you want an sequential Int field.
Please note, a Discord Application is required for both installation methods.
The quickest, and easiest, way to host/use this bot template is by deploying it inside of a Docker container. We recommend Docker Desktop.
git clone [email protected]:rhidium/rhidium.git
the repopnpm setup:linux
or pnpm setup:windows
(depending on your OS) in the project root folder.env
and /config/config.json
files and provide your configurationdocker compose run --rm client sh -c "npx prisma db push"
docker compose up -d client
(you can view logs with docker compose logs -f client
)git clone [email protected]:rhidium/rhidium.git
the repopnpm setup:linux
or pnpm setup:windows
in the project root folder.env
and /config/config.json
files and provide your configurationpnpm db:push
pnpm start
for production, and pnpm dev
for local developmentThe configuration for this project can be found here, and should be very straight-forward.
{
"client": {
"id": "", // Client id from https://discord.dev/application
"token": "", // Client/bot token from https://discord.dev/application
"development_server_id": "" // Only needed for developers/development environments
},
"permissions": {
"owner_id": "1148597817498140774", // The discord user id of the bot owner
"system_administrator_ids": [], // List of discord user ids for system administrators
"developer_ids": [] // List of discord user ids for developers
}
}
Additionally, feel free to explore the personalization options.
The .env
file holds your secrets and other environmental values. Let's explain the different keys here:
NODE_ENV=production # The node environment your bot is running in. Available values: production, development
# ---------------------------------- Database ---------------------------------- #
POSTGRES_HOST=localhost # Change to "database" if using docker (compose)
POSTGRES_PORT=5432 # The port your PostgreSQL server is running on. Default is 5432.
POSTGRES_USER=postgres # The username for your PostgreSQL server. Default is "postgres".
POSTGRES_PASSWORD=CHANGE_ME # The password for your PostgreSQL server.
POSTGRES_DB=rhidium # The name of the database to connect to. Default is "rhidium".
# The database URL for connecting to the (PostgreSQL) database. You generally don't
# need to change this, but you can if you want to use a different database or schema.
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public"
We provide multiple resources to help get you started on your project quickly:
Join our support server if you have any questions, feature requests or other feedback:
enabled#guilds
, meaning they are registered as global commandsprompts/interactions
COMPONENT_HANDLER_IDENTIFIER
(as unknown) as (Any)(Typed/API)Command
data#setDefaultMemberPermissions
to relevant commandsembeds
and placeholders
from previous versionPrompts
into a standalone, opt-in, NPM packageJoin our support server if you have any questions, feature requests or other feedback:
Open-source and ISC licensed, meaning you're in full control.