NordGuard Docs
v1.0Welcome to the NordGuard documentation. Here you'll find a complete reference for all slash commands and the REST API used by the web dashboard.
Getting Started
1. Invite the bot. Click "Add to Discord", select your server, and accept the permissions. NordGuard requires Manage Roles, Send Messages, and Embed Links at minimum.
2. Open the Dashboard. Log in at /dashboard using Discord OAuth2. You'll see all servers where you have Manage Server permissions.
3. Configure modules. Each module (Welcome, Economy, Birthdays, etc.) can be toggled and configured independently per server. Changes persist immediately.
4. Use slash commands. All bot functionality is accessible via / slash commands in Discord. Type /help for a quick overview.
Slash Commands
All commands use Discord's native slash command interface. Options marked with * are required.
💰 Economy
| Command | Description | Options | Cooldown |
|---|---|---|---|
| /economy balance | Check your or another member's coin balance. | [user] | — |
| /economy daily | Claim your daily coin reward. | — | 24 hours |
| /economy work | Work for coins. Amount is random each time. | — | 1 hour |
| /economy pay | Send coins to another member. | user*, amount* | — |
| /economy leaderboard | Show the top 10 richest members in the server. | — | — |
🎂 Birthday
| Command | Description | Options |
|---|---|---|
| /birthday set | Set your birthday. Will be announced annually. | month*, day* |
| /birthday check | Check when your or another member's birthday is. | [user] |
| /birthday remove | Remove your birthday from the system. | — |
🏆 Leveling
| Command | Description | Options |
|---|---|---|
| /rank | Show your current XP level and rank card. | [user] |
| /leaderboard | Show the server's top members by XP. | — |
🛡️ Moderation
| Command | Description | Permissions |
|---|---|---|
| /kick | Kick a member from the server. | Kick Members |
| /ban | Ban a member permanently or with an optional duration. | Ban Members |
| /timeout | Temporarily mute a member. | Moderate Members |
| /warn | Issue a warning. Warns are logged and visible to staff. | Moderate Members |
| /purge | Bulk-delete up to 100 messages from a channel. | Manage Messages |
⚡ General
| Command | Description |
|---|---|
| /help | Show all available commands. |
| /ping | Check the bot's current latency and status. |
| /userinfo | Display detailed info about a user (join date, roles, etc.). |
| /serverinfo | Display info about the current server. |
| /avatar | Get a user's full-size avatar. |
REST API
The dashboard exposes a REST API for reading and updating guild configuration. All endpoints require the user to be authenticated via Discord OAuth2 and to have Manage Server permission on the target guild.
https://nordguard.nordcappe.com/apiAuth: Cookie: next-auth.session-token⚙️ Guilds
/api/guildsReturns all Discord guilds the authenticated user is a member of that have NordGuard installed.
Response
[
{
"id": "123456789012345678",
"name": "My Server",
"icon": "a_abc123",
"owner": true,
"permissions": "2147483647",
"botPresent": true
}
]/api/guild/[guildId]Returns configuration and status for a specific guild.
Parameters
| Name | Type | Description |
|---|---|---|
| guildId* | string | Discord guild (server) snowflake ID. |
Response
{
"id": "123456789012345678",
"name": "My Server",
"icon": "a_abc123",
"memberCount": 420,
"botOnline": true
}👋 Welcome
/api/guild/[guildId]/welcomeFetch the current welcome message configuration for the guild.
Response
{
"enabled": true,
"channelId": "987654321098765432",
"message": "Welcome to {server.name}, {user.mention}!",
"embedColor": "#5865F2"
}/api/guild/[guildId]/welcomeUpdate the welcome message configuration.
Request Body
{
"enabled": true,
"channelId": "987654321098765432",
"message": "Welcome to {server.name}, {user.mention}!",
"embedColor": "#5865F2"
}Response
{ "success": true }⚡ Custom Commands
/api/guild/[guildId]/customcommandsList all custom commands for the guild.
Response
[
{
"id": "clxyz123",
"trigger": "rules",
"response": "Please follow the server rules in #rules!",
"createdAt": "2024-01-15T10:30:00.000Z"
}
]/api/guild/[guildId]/customcommandsCreate a new custom command.
Request Body
{
"trigger": "rules",
"response": "Please follow the server rules in #rules!"
}Response
{
"id": "clxyz123",
"trigger": "rules",
"response": "Please follow the server rules in #rules!",
"createdAt": "2024-01-15T10:30:00.000Z"
}/api/guild/[guildId]/customcommands/[id]Delete a custom command by ID.
Parameters
| Name | Type | Description |
|---|---|---|
| id* | string | The custom command record ID. |
Response
{ "success": true }🎂 Birthdays
/api/guild/[guildId]/birthdaysGet the birthday module configuration for the guild.
Response
{
"enabled": true,
"channelId": "987654321098765432",
"roleId": "111222333444555666",
"message": "Happy Birthday {user.mention}! 🎉"
}/api/guild/[guildId]/birthdaysUpdate the birthday module configuration.
Request Body
{
"enabled": true,
"channelId": "987654321098765432",
"roleId": "111222333444555666",
"message": "Happy Birthday {user.mention}! 🎉"
}Response
{ "success": true }💰 Economy
/api/guild/[guildId]/economyGet the economy module configuration.
Response
{
"enabled": true,
"currencyName": "coins",
"currencySymbol": "🪙",
"dailyAmount": 100,
"workMin": 10,
"workMax": 50
}/api/guild/[guildId]/economyUpdate the economy module configuration.
Request Body
{
"enabled": true,
"currencyName": "gold",
"currencySymbol": "🥇",
"dailyAmount": 200,
"workMin": 20,
"workMax": 80
}Response
{ "success": true }🏆 Leveling
/api/guild/[guildId]/levelingGet the leveling module configuration.
Response
{
"enabled": true,
"channelId": "987654321098765432",
"xpPerMessage": 15,
"xpCooldown": 60,
"levelUpMessage": "GG {user.mention}, you reached level {level}!"
}/api/guild/[guildId]/levelingUpdate the leveling module configuration.
Request Body
{
"enabled": true,
"channelId": "987654321098765432",
"xpPerMessage": 15,
"xpCooldown": 60
}Response
{ "success": true }🛡️ Automod
/api/guild/[guildId]/automodGet the automod configuration for the guild.
Response
{
"enabled": true,
"filterProfanity": true,
"filterLinks": false,
"filterCaps": true,
"capsThreshold": 70,
"logChannelId": "987654321098765432"
}/api/guild/[guildId]/automodUpdate the automod configuration.
Request Body
{
"enabled": true,
"filterProfanity": true,
"filterLinks": true,
"capsThreshold": 80
}Response
{ "success": true }Rate Limits
The dashboard API enforces per-user rate limits to prevent abuse. Limits reset on a rolling window.
| Scope | Limit | Window |
|---|---|---|
| GET requests | 120 requests | 1 minute |
| POST / PUT / DELETE | 30 requests | 1 minute |
| Global per IP | 200 requests | 1 minute |
When rate limited, the API returns 429 Too Many Requests with a Retry-After header indicating when you can retry.
Need help or found a bug? Join the support server.