Official Discord bot for the Deakin University Cybersecurity Association (DUCA) Discord community server.
DUCA Sentinel provides member verification, utility commands, and entertainment features to enhance the server experience.
duca-sentinel/
├── dist/ # Compiled JavaScript output
│
├── emojis/ # Custom emoji assets
│
├── src/
│ ├── app/
│ │ ├── commands/ # Slash commands (tsx uses CommandKit components)
│ │ ├── events/ # Discord event handlers
│ │ └── tasks/ # @commandkit/tasks schedules
│ ├── flags/ # Feature flag definitions
│ ├── lib/ # Supabase client, env config, news helpers
│ └── providers/ # Flag provider implementations
│
├── commandkit.config.ts
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
└── README.md
- Node.js v24+
- pnpm
- A Discord application + bot token
- A Supabase project (database + service role key)
-
Clone the repository
git clone https://github.com/duca-club/duca-sentinel.git cd duca-sentinel -
Install dependencies
pnpm install
-
Set up environment variables
Create a
.envfile in the root directory using the provided.env.exampletemplate:cp .env.example .env
Configure environment variables:
Variable Required Description DISCORD_TOKEN✅ Discord bot token MEMBER_ROLE_ID✅ Role ID assigned on successful verification NEWS_CHANNEL_ID✅ Channel ID where news posts will be sent SUPABASE_URL✅ Supabase project URL SUPABASE_SECRET_KEY✅ Supabase service role key (server-side) NEWS_TIMEZONE⛔ Digest timezone (default Australia/Sydney)NEWS_DIGEST_CRON⛔ Digest schedule (default 0 9,17 * * *)NEWS_ALERT_CRON⛔ Alerts schedule (default 0 * * * *)NEWS_ALERT_KEYWORDS⛔ Comma-separated keywords (default critical,zero-day,zero day)Notes:
NEWS_FEED_URLis currently set in code tohttps://feeds.feedburner.com/TheHackersNews.- The alerts task runs in a fixed timezone (
Asia/Kolkata) to align with the RSS feed timestamp behavior.
-
Build the project
pnpm run build
-
Start the bot
pnpm start
Please refer to the contribution guideline for more details.
Developing this project is possible thanks to the following tools:
- discord.js - Powerful Node.js module that allows interaction with the Discord API.
- CommandKit - A discord.js handler for commands and events.
- Supabase - Open-source Firebase alternative.
Made with ❤️ by dec1bel