mirror of
https://github.com/arthur-pbty/flint.git
synced 2026-08-01 20:29:03 +02:00
fc0daa671df0aa88578428de2793ab2dc321ca0c
- Introduced `goodbyeCommand` and `welcomeCommand` to handle member leave and join events. - Implemented `memberMessagePanel` for interactive message configuration. - Created `dispatchMemberMessage` to send messages based on member events. - Added database support for storing member message configurations. - Integrated image rendering for member messages using `@napi-rs/canvas`. - Registered event listeners for `GuildMemberAdd` and `GuildMemberRemove` to trigger messages. - Updated `package.json` to include `@napi-rs/canvas` dependency.
Discord.js v14 Framework Template
Professional command framework template for Discord.js 14.26.2 with:
- Single command object schema
- Minimal command authoring (
name,category,execute) - Optional per-user command cooldown (
cooldownin seconds) - Shared execution logic for prefix and slash
- External JSON i18n
- Automatic prefix and slash localizations from locale files
- One localized
nameper language drives both prefix and slash triggers - Typed argument schema
- User permission checks
- Auto-generated help from command metadata
Presence Storage
- The
presencecommand is persisted in PostgreSQL. - Storage is keyed by
bot_id(Discord user id), so one PostgreSQL instance can serve multiple bots. - Presence survives bot restarts and container restarts.
Setup
- Install dependencies: npm install
- Create environment file: cp .env.example .env
- Fill required values in
.env:DISCORD_TOKENDISCORD_CLIENT_IDDATABASE_URL
- Optional values:
DATABASE_SSL(truefor managed cloud DB,falsefor local Docker)PRESENCE_STREAM_URL(used when activity type isSTREAMING)
- Deploy slash commands: npm run deploy:commands
- Start in development: npm run dev
- Validate code quality:
- npm run typecheck
- npm run test
- npm run check
Docker Deployment (Bot + PostgreSQL)
- Configure
.envwith at least:DISCORD_TOKENDISCORD_CLIENT_IDPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORD
- Start stack: docker compose up -d --build
- Stop stack: docker compose down
By default, docker-compose.yml provisions:
bot: the Discord bot containerpostgres: PostgreSQL 16 with persistent volumepostgres_data
The bot container uses:
DATABASE_URL=postgresql://<POSTGRES_USER>:<POSTGRES_PASSWORD>@postgres:5432/<POSTGRES_DB>
Security defaults:
- PostgreSQL is bound to
127.0.0.1by default in Compose. - Keep strong values for
POSTGRES_PASSWORDand rotate credentials if exposed.
Multi-Bot With One DB
You can run several bot services against the same PostgreSQL instance.
- Keep one shared
postgresservice. - Add additional bot services with different
DISCORD_TOKEN/DISCORD_CLIENT_ID. - Keep
DATABASE_URLpointing to the same PostgreSQL service.
Because rows are keyed by bot_id, each bot keeps its own independent presence configuration.
An example with two bot services is available in docker-compose.multi-bot.example.yml.
Architecture
src/framework/types/command.ts: strict command schemasrc/framework/commands/defineCommand.ts: default command completionsrc/framework/commands/registry.ts: trigger/name mapping generated from localessrc/framework/commands/argParser.ts: prefix/slash args parsing from schemasrc/framework/execution/CommandExecutor.ts: unified pipeline (permissions/cooldown/execute)src/framework/handlers/prefixHandler.ts: prefix entrypointsrc/framework/handlers/slashHandler.ts: slash entrypointsrc/framework/presence/presenceStore.ts: PostgreSQL presence storagesrc/framework/presence/presenceTypes.ts: shared presence types/validationlocales/*.json: external i18n dictionariessrc/commands/*: business commands only (execute, optionalcooldown)
Included Commands
kiss(fun) with requireduserargping(utility)advanced(utility) with full argument/permission examplepresence(utility) with interactive status/activity/text panelhelp(core) with auto category and usage generation
Adding A Command
- Create a command object in
src/commands/... - Follow the schema in
src/framework/types/command.ts - Add command to
src/commands/index.ts - Deploy slash commands again (
npm run deploy:commands)
Description
Template Discord.js avec commandes prefix & slash auto, components v2, help auto, multi-langue et variables dynamiques (ex: {{bot_latency}}).
Readme
3.6 MiB
Languages
TypeScript
93.3%
JavaScript
3.2%
PLpgSQL
1.7%
CSS
0.9%
Dockerfile
0.9%