{"id":26217392,"url":"https://github.com/rhidium/rhidium","last_synced_at":"2025-08-10T04:17:38.325Z","repository":{"id":38207855,"uuid":"489296205","full_name":"rhidium/rhidium","owner":"rhidium","description":"A template for discord.js v14. Always up-to-date, integrates the latest Discord API features, and actively maintained.","archived":false,"fork":false,"pushed_at":"2025-04-01T22:55:13.000Z","size":4015,"stargazers_count":79,"open_issues_count":5,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-07T19:32:55.045Z","etag":null,"topics":["api","autocomplete","boilerplate","bot-template","buttons","context-menus","discord","discord-api","discord-bot","discord-bot-template","discordjs","documentation","documented","modals","nodejs","rest","select-menus","skeleton","slash-commands","template"],"latest_commit_sha":null,"homepage":"https://djs.mirasaki.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhidium.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-06T09:34:30.000Z","updated_at":"2025-03-18T13:11:41.000Z","dependencies_parsed_at":"2023-10-01T16:08:51.611Z","dependency_job_id":"6a09da4f-7895-4f27-b716-7376e61647b8","html_url":"https://github.com/rhidium/rhidium","commit_stats":null,"previous_names":["mirasaki/discord.js-bot-template"],"tags_count":19,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhidium%2Frhidium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhidium%2Frhidium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhidium%2Frhidium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhidium%2Frhidium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhidium","download_url":"https://codeload.github.com/rhidium/rhidium/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248045230,"owners_count":21038553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","autocomplete","boilerplate","bot-template","buttons","context-menus","discord","discord-api","discord-bot","discord-bot-template","discordjs","documentation","documented","modals","nodejs","rest","select-menus","skeleton","slash-commands","template"],"created_at":"2025-03-12T12:26:39.631Z","updated_at":"2025-08-10T04:17:38.265Z","avatar_url":"https://github.com/rhidium.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://rhidium.xyz\"\u003e\u003cimg src=\"https://github.com/rhidium/core/assets/57721238/e6d25fa1-07cb-4284-a02a-f73fe7ef3878\" width=\"100\" alt=\"logo\" /\u003e\u003c/a\u003e\n\n![Font_PNG](https://github.com/rhidium/core/assets/57721238/9ccc5763-8336-4d1e-8187-a738bafdc519)\n\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n![GitHub Release](https://img.shields.io/github/v/release/rhidium/rhidium)\n![GitHub License](https://img.shields.io/github/license/rhidium/rhidium)\n\n  \u003cp\u003e\n    \u003ca href=\"https://discord.gg/mirasaki\"\u003e\u003cimg src=\"https://img.shields.io/discord/793894728847720468?color=5865F2\u0026logo=discord\u0026logoColor=white\" alt=\"Discord server\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n\u003c/div\u003e\n\n# 👋 Introduction\n\nRhidium 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.\n\n## 🤝 About\n\nRhidium is **not** a lightweight framework. It is built on top of the [discord.js](https://discord.js.org/#/) 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.\n\n\u003e With Rhidium, you can focus on what's really important: **Creating meaningful features**\n\nExcited to begin? [Get started](#-installation) or try [the demo](#-support)!\n\n## 🤩 Features (non-exhaustive)\n\nWe've compromised a list of some of the core functionality provided by Rhidium:\n\n- [x] Type-safe, re-usable [controllers](https://rhidium.xyz/modules/Commands.Controllers.html)\n- [x] Dynamic [component](https://rhidium.xyz/modules/Commands.html) handlers\n- [x] Synchronized local \u0026 API commands, automatic refreshes\n- [x] Fully localized (through [i18next](https://www.npmjs.com/package/i18next)), convenience localization for commands\n- [x] Colorful console logging \u0026 verbose, organized file logging\n- [x] Wide range of everyday utilities and functionality\n- [x] [CRON](https://crontab.guru/) and interval-based jobs\n\n## 💽 Database\n\nThis TypeScript project uses [Prisma](https://www.prisma.io/docs/getting-started/quickstart) TypeORM using the `postgresql` adapter.\n\nAvailable adapters: `cockroachdb`, `mongodb`, `postgresql`\n\n\u003e **Note**: When using CockroachDB, the `autoincrement()` default function is defined only on BigInt fields. Change `autoincrement()` to `sequence()` if you want an sequential Int field.\n\n## 🛠️ Installation\n\n\u003cdetails\u003e\n\n\u003csummary\u003eCollapse/Expand\u003c/summary\u003e\n\nPlease note, a [Discord Application](https://wiki.mirasaki.dev/docs/discord-create-application#go-to-discord-developer-portal) is required for both installation methods.\n\n### 📦 Run as a Docker container (preferred)\n\nThe quickest, and easiest, way to host/use this bot template is by deploying it inside of a [Docker](https://www.docker.com/) container. We recommend [Docker Desktop](https://www.docker.com/products/docker-desktop/).\n\n1. Download the [latest release](https://github.com/rhidium/rhidium/releases`) or `git clone git@github.com:rhidium/rhidium.git` the repo\n2. Run `pnpm setup:linux` or `pnpm setup:windows` (depending on your OS) in the project root folder\n3. Edit the newly created `.env` and `/config/config.json` files and provide your configuration\n4. Sync the database: `docker compose run --rm client sh -c \"npx prisma db push\"`\n5. Start the application: `docker compose up -d client` (you can view logs with `docker compose logs -f client`)\n\n### 🖥️ Run as a plain NodeJS app\n\n1. Install the additional pre-requisites:\n   - [pnpm](https://pnpm.io/installation) v9.15.4\n   - [Node.js](https://nodejs.org/en/) v16.6.0 or newer\n   - [PostgreSQL](https://www.postgresql.org/) v13 or newer\n2. Download the [latest release](https://github.com/rhidium/rhidium/releases`) or `git clone git@github.com:rhidium/rhidium.git` the repo\n3. Run `pnpm setup:linux` or `pnpm setup:windows` in the project root folder\n4. Edit the newly created `.env` and `/config/config.json` files and provide your configuration\n5. Sync the database: `pnpm db:push`\n6. Start the application: `pnpm start` for production, and `pnpm dev` for local development\n\n## ⚙️ Configuration\n\nThe configuration for this project can be found [here](/config/config.example.json), and should be very straight-forward.\n\n```json\n{\n  \"client\": {\n    \"id\": \"\", // Client id from https://discord.dev/application\n    \"token\": \"\", // Client/bot token from https://discord.dev/application\n    \"development_server_id\": \"\" // Only needed for developers/development environments\n  },\n  \"permissions\": {\n    \"owner_id\": \"1148597817498140774\", // The discord user id of the bot owner\n    \"system_administrator_ids\": [], // List of discord user ids for system administrators\n    \"developer_ids\": [] // List of discord user ids for developers\n  }\n}\n```\n\n\u003e Additionally, feel free to explore the [personalization options](/config/extended-config.example.json).\n\n### dotenv\n\nThe `.env` file holds your secrets and other environmental values. Let's explain the different keys here:\n\n```bash\nNODE_ENV=production # The node environment your bot is running in. Available values: production, development\n\n# ---------------------------------- Database ---------------------------------- #\nPOSTGRES_HOST=localhost # Change to \"database\" if using docker (compose)\nPOSTGRES_PORT=5432 # The port your PostgreSQL server is running on. Default is 5432.\nPOSTGRES_USER=postgres # The username for your PostgreSQL server. Default is \"postgres\".\nPOSTGRES_PASSWORD=CHANGE_ME # The password for your PostgreSQL server.\nPOSTGRES_DB=rhidium # The name of the database to connect to. Default is \"rhidium\".\n\n# The database URL for connecting to the (PostgreSQL) database. You generally don't\n# need to change this, but you can if you want to use a different database or schema.\nDATABASE_URL=\"postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public\"\n\n```\n\n\u003c/details\u003e\n\n## 📚 Documentation\n\nWe provide multiple resources to help get you started on your project quickly:\n\n- Explore the [Template / Example](https://github.com/rhidium/rhidium) - If you're new here, the best way to determine if Rhidium is a fit for you is by exploring this complete example.\n- Check out the [API Documentation](https://rhidium.xyz/modules.html) - Once you're convinced, clone the example/template and check out the API docs to learn more about the inner workings and possibilities.\n- Made with [TypeScript](https://www.typescriptlang.org/) and [discord.js](https://discord.js.org/) - comes with [PM2](https://pm2.io/), [Docker](https://www.docker.com/), [docker compose](https://docs.docker.com/compose/) configurations\n\n## 🙋 Support\n\nJoin our [support server](https://discord.gg/mirasaki) if you have any questions, feature requests or other feedback:\n\n[![banner](https://invidget.switchblade.xyz/mirasaki)](https://discord.gg/mirasaki)\n\n## 🗺️ Roadmap / To-Do\n\n### High Priority\n\n- [ ] Localization for `prompts/interactions`\n- [ ] Resolve or otherwise review Typedoc warnings\n- [ ] Add documentation for `COMPONENT_HANDLER_IDENTIFIER`\n- [ ] Apply `data#setDefaultMemberPermissions` to relevant commands\n- [ ] Refactor (now-required) `(as unknown) as (Any)(Typed/API)Command`\n- [ ] Implement (+ refactor) `embeds` and `placeholders` from previous version\n- [ ] Implement (global) reusable command middleware, refactor from previous version\n- [ ] Command **deployment** currently doesn't respect `enabled#guilds`, meaning they are registered as global commands\n\n### Low Priority\n\n- [ ] Dashboard for _command usage statistics_ and _database metrics_\n- [ ] Refactor `Prompts` into a standalone, opt-in, NPM package\n\n## 🙋 Support\n\nJoin our [support server](https://discord.gg/mirasaki) if you have any questions, feature requests or other feedback:\n\n[![banner](https://invidget.switchblade.xyz/mirasaki)](https://discord.gg/mirasaki)\n\n\u003e Open-source and ISC licensed, meaning you're in full control.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhidium%2Frhidium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhidium%2Frhidium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhidium%2Frhidium/lists"}