How It Works
Kelpyyium uses a node-based permission system similar to Bukkit/Spigot Minecraft plugins. Every action in the bot is gated behind a permission node (e.g., mod.ban, economy.daily). Admins can grant or deny these nodes at the user, role, or @everyone level.
Nodes are organized hierarchically using dot notation. You can use wildcards to grant entire categories at once (e.g., mod.* grants all moderation permissions).
Permission Hierarchy
When the bot checks a permission, it evaluates in this order (highest priority first):
1. User-specific
→
2. Role permissions
→
3. @everyone
→
4. Built-in defaults
- User-specific — permissions set directly on a user always win.
- Role — users inherit from all their roles. If any role grants the permission, it's allowed (unless a user-level override denies it).
- @everyone — server-wide defaults for all members.
- Built-in defaults — the bot's hardcoded defaults (basic utility commands allowed, everything else denied).
Wildcard Permissions
Use * at any level to grant all nodes in that category:
| Wildcard | Effect |
|---|---|
| * | Grants all permissions (use with extreme caution) |
| mod.* | Grants all moderation permissions (ban, kick, warn, etc.) |
| economy.* | Grants all economy permissions (balance, daily, games, admin) |
| economy.games.* | Grants all gambling game permissions |
| leveling.* | Grants all leveling permissions |
| leveling.admin.* | Grants all leveling admin permissions |
| logging.* | Grants all logging permissions |
| automod.* | Grants all auto-moderation permissions |
| admin.* | Grants all admin permissions |
All Permission Nodes
Auto-Moderation (automod.*)
| Node | Description |
|---|---|
| automod.enable | Enable auto-moderation |
| automod.disable | Disable auto-moderation |
| automod.spam | Configure spam protection |
| automod.links | Configure link protection |
| automod.mentions | Configure mention protection |
| automod.caps | Configure caps protection |
| automod.invites | Configure invite protection |
| automod.blacklist | Manage blacklisted words |
| automod.whitelist | Manage whitelisted words |
| automod.bypass | Bypass auto-moderation |
Moderation (mod.*)
| Node | Description |
|---|---|
| mod.kick | Kick members |
| mod.ban | Ban members |
| mod.unban | Unban members |
| mod.warn | Warn members |
| mod.unwarn | Remove warnings |
| mod.mute | Mute members |
| mod.unmute | Unmute members |
| mod.purge | Purge messages |
| mod.lockdown | Lock/unlock channels |
| mod.slowmode | Manage slowmode |
Economy (economy.*)
| Node | Description |
|---|---|
| economy.balance | View balances |
| economy.daily | Claim daily rewards |
| economy.work | Use work command |
| economy.pay | Pay other users |
| economy.rob | Rob other users |
| economy.baltop | View balance leaderboard |
| economy.games.flip | Play coin flip |
| economy.games.dice | Play dice game |
| economy.games.slots | Play slot machine |
| economy.games.blackjack | Play blackjack |
| economy.admin.add | Add points to users |
| economy.admin.remove | Remove points from users |
| economy.admin.set | Set user balances |
Leveling (leveling.*)
| Node | Description |
|---|---|
| leveling.rank | View own rank |
| leveling.level | View levels |
| leveling.xp | View XP |
| leveling.leaderboard | View XP leaderboard |
| leveling.admin.add | Add XP to users |
| leveling.admin.remove | Remove XP from users |
| leveling.admin.set | Set user XP/levels |
Logging (logging.*)
| Node | Description |
|---|---|
| logging.view | View log settings |
| logging.channel | Set log channels |
| logging.enable | Enable logging |
| logging.disable | Disable logging |
| logging.events.messages | Configure message logging |
| logging.events.joins | Configure join logging |
| logging.events.leaves | Configure leave logging |
| logging.events.bans | Configure ban logging |
| logging.events.roles | Configure role logging |
Utility (utility.*)
| Node | Description |
|---|---|
| utility.ping | Use ping command |
| utility.info | View bot info |
| utility.help | Access help system |
| utility.status | View bot status |
| utility.echo | Use echo command |
Rules (rules.*)
| Node | Description |
|---|---|
| rules.view | View server rules |
| rules.add | Add new rules |
| rules.remove | Remove rules |
| rules.edit | Edit existing rules |
| rules.list | List all rules |
Admin (admin.*)
| Node | Description |
|---|---|
| admin.restart | Restart bot |
| admin.presence | Change bot presence |
| admin.appearance | Change bot appearance |
| admin.settings | Manage bot settings |
| admin.permissions | Manage permissions |
| admin.config | Access configuration |
Global Chat (globalchat.*)
| Node | Description |
|---|---|
| globalchat.use | Send messages in global chat channels |
| globalchat.manage | Create, delete, and manage global chat channels |
Usage Examples
# Grant all moderation permissions to the Moderator role
/permissions role-set @Moderator mod.* true
# Deny all economy commands for @everyone
/permissions everyone-set economy.* false
# Allow a specific user to use the restart command
/permissions user-set @User admin.restart true
# Remove a permission from a role
/permissions role-remove @Role economy.daily
# Check if a user has a specific permission
/permissions check @User mod.kick
# View all permissions for a role
/permissions role-view @Moderator
# List all available permission nodes
/permissions list-nodes
# List nodes in a specific category
/permissions list-nodes mod
Default Permissions
Out of the box, the following defaults apply:
| Group | Default Permissions |
|---|---|
| @everyone | Basic utility commands — utility.ping, utility.help, utility.info |
| Discord moderators | Members with Discord's built-in moderation permissions automatically receive moderation command access |
| Bot owner | * — all permissions (hardcoded, cannot be overridden) |
All other permissions are denied by default and must be explicitly granted by a server administrator.