Logs
The Logs module provides a centralized logging system for actions performed by other bot modules. Each log category can be directed to a separate channel with an individual embed color.
Enabling the Module
- Dashboard → Your server → toggle Logs
- Click Edit to configure individual log categories
- For each category: enable the toggle, select a channel, optionally change the color
- Save changes
You cannot save an enabled log category without a selected channel. The dashboard will highlight the missing field and display an error message.
Log Categories
| Category | Logged Actions |
|---|---|
moderation | Ban, kick, mute, unmute, warn, clear, setnick, role add/remove, warning threshold exceeded |
welcome | Member joined, member left |
reaction_roles | Role added/removed via buttons, dropdown, reactions + errors (missing role) |
suggestions | Suggestion created, approved, rejected |
polls | Poll created, poll closed |
message_builder | Embed sent |
alliances | Alliance created/deleted, member added/removed/promoted/demoted, leadership transfer, auto-succession |
presidents | President appointed, removed, decree issued |
armory | Armory slot assigned, cleared |
Configuration
Each log category has three settings:
| Option | Type | Description |
|---|---|---|
enabled | boolean | Whether this category is active |
channel_id | string | Target channel ID |
color | string (hex) | Log embed color (optional) |
Configuration Example (JSON)
{
"logs": {
"moderation": {
"enabled": true,
"channel_id": "1234567890",
"color": "#5865F2"
},
"welcome": {
"enabled": true,
"channel_id": "1234567890",
"color": "#22C55E"
},
"alliances": {
"enabled": true,
"channel_id": "9876543210",
"color": "#10B981"
}
}
}
Dashboard — Configuration
The Logs edit panel displays a tile grid — one per category:
Each tile contains:
- Category title + short description
- Toggle — enable/disable
- Channel Select — dropdown with text channels
- Color Picker — clickable color swatch + hex input
All categories are saved with a single Save click (UnsavedBar).
Log Format
Each log is a Discord embed with the following structure:
┌─────────────────────────────┐
│ 🔨 Ban │ ← title with action emoji
├─────────────────────────────┤
│ Target: @User (ID: 123) │
│ Moderator: @Mod (ID: 456) │
│ Reason: Spamming │
├─────────────────────────────┤
│ 2026-06-12T10:30:00Z │ ← ISO timestamp in footer
└─────────────────────────────┘
Action Emojis
| Action | Emoji + Title |
|---|---|
| Ban | 🔨 Ban |
| Kick | 👢 Kick |
| Mute | 🔇 Mute |
| Unmute | 🔊 Unmute |
| Warning | ⚠️ Warning |
| Clear | 🗑️ Clear |
| Nickname Change | 📝 Nickname Change |
| Role Added | ➕ Role Added |
| Role Removed | ➖ Role Removed |
| Member Joined | 📥 Member Joined |
| Member Left | 📤 Member Left |
| Suggestion Created | 💡 Suggestion Created |
| Suggestion Approved | ✅ Suggestion Approved |
| Suggestion Rejected | ❌ Suggestion Rejected |
| Poll Created | 📊 Poll Created |
| Poll Closed | 📊 Poll Closed |
| Embed Sent | 📨 Embed Sent |
| Alliance Created | ⚔️ Alliance Created |
| Alliance Deleted | 🗑️ Alliance Deleted |
| Member Added (alliance) | ➕ Member Added |
| Member Removed (alliance) | ➖ Member Removed |
| Rank Changed | 📊 Rank Changed |
| Leadership Transferred | 👑 Leadership Transferred |
| President Appointed | 🎖️ President Appointed |
| President Removed | 🚫 President Removed |
| Decree Issued | 📜 Decree Issued |
| Armory Assigned | 🏰 Armory Assigned |
| Armory Cleared | 🏰 Armory Cleared |
How Other Modules Send Logs
Other modules use the Logs module API:
logs_cog = self.bot.get_cog("LogsCog")
if logs_cog:
embed = logs_cog.build_log_embed("ban", target, moderator, reason)
await logs_cog.send_log(guild_id, "moderation", embed)
The send_log method checks:
- Whether the given category is enabled (
enabled) - Whether a channel is configured (
channel_id) - Optionally overrides the embed color with the configured one
If the category is disabled or there's no channel — the log is silently skipped.
Listened Events
The Logs module does not directly listen to any Discord events. It operates as a service — other modules call its send_log and build_log_embed methods.
Tips
- Create dedicated log channels (e.g.,
#logs-moderation,#logs-alliances) - Restrict access to log channels to moderators/admins only
- Use different colors for categories — makes it easier to quickly identify log types
- Enable at least the
moderationcategory — it's the basic audit trail
You can set the same channel for all categories — logs will be distinguished by color and emoji. But separate channels provide better organization.
The Logs module has no slash commands. All configuration is done through the dashboard.