Everything you need to know to add and configure Structra for the first time.
What is Structra?
Structra is a Discord bot purpose-built for Emergency Response: Liberty County (ER:LC) communities. It replaces the need for multiple bots by handling moderation, tickets, applications, advertising moderation, giveaways, sticky messages, server security, and more — all through one guided setup.
Adding the bot
Invite Structra
Click 'Add to Discord' and select your server. Structra requires Administrator or the following permissions: Manage Channels, Manage Roles, Manage Messages, Send Messages, Embed Links, Attach Files, Read Message History, Use External Emojis, Add Reactions, Manage Threads, Create Public Threads, Moderate Members.
Confirm permissions
Accept the permission request on the OAuth screen. Structra will not work correctly without the required permissions.
Run /config
Once the bot is in your server, run /config to open the interactive configuration wizard.
The Setup Wizard
The setup wizard walks you through all 12 modules in a single interactive session. It creates the channels and roles needed for each module automatically when you configure them.
The 12 modules in /config:
Some modules depend on others. The Ticket System should be configured before the Application System, and the Moderation module should be configured before using any moderation commands.
Run /config to open the interactive configuration panel. Each module has its own page. Navigate through the buttons — changes are saved immediately.
Welcome Messages
Configure a welcome embed that posts in a chosen channel every time a new member joins. Supports custom message text and live variables like member count and username.
Join Security
Smart join scanning on every join. Risk levels: Clean (account over 30 days, has avatar), Suspicious (7 to 30 days or default avatar), High Risk (under 7 days or bot account). High Risk joins automatically ping your configured staff role, and invite tracking shows which invite was used and who created it.
Moderation
Set your moderator role and the modlogs destination — a text channel or a forum channel. Every moderation action creates a numbered case automatically. See the Moderation section for the full command list.
Security System
Select which channels to monitor, add a blocked words list, choose the detection action, and set an exempt role. See the Security System section for details.
Server Logs
Logs server events to a designated channel. Covers message edits and deletes, member joins and leaves, bans and kicks, channel changes, and role changes. Each event type can be toggled individually.
Ticket System
Configure the ticket panel channel, the support role that can view and manage tickets, and the transcript channel where closed ticket transcripts are posted.
Server Templates
Enable the template system and set which roles can save and load server structures. See /template for usage.
Dashboard Builder
Configure web companion access. Locked during beta — configuration is available but the companion itself is not yet live.
Application System
Build application forms with custom questions. Set the management role that can approve and deny applications, and configure the review flow.
Advertising
Set the dedicated ad channel, the posting cooldown duration, and the ad moderator role. Moderators can warn users and manage violations from /ad-panel.
Sticky Messages
Configure the default sticky delay (number of messages before repost) and the manager role that can create and edit stickies.
Giveaways
Set the giveaway manager role, the announcement channel, and whether winners are DM'd automatically.
Every command maps to either a Discord permission or a role you configure in /config. Public commands need no special access. Custom Role means the manager role you set for that module.
| Command | Required Permission |
|---|---|
/config | ManageGuild |
/add | Custom RoleManageGuild |
/approve | ManageGuildCustom Role |
/deny | ManageGuildCustom Role |
/template save | ManageGuild |
/template load | ManageGuild |
/warn | Custom RoleManageMessages |
/warnings | Custom RoleManageMessages |
/clearwarnings | ManageGuildCustom Role |
/mute | Custom RoleManageMessages |
/timeout | Custom RoleManageMessages |
/unmute | Custom RoleManageMessages |
/kick | Custom RoleManageMessages |
/ban | Custom RoleManageMessages |
/unban | Custom RoleManageMessages |
/slowmode | Custom RoleManageMessages |
/purge | Custom RoleManageMessages |
/search | Custom RoleManageMessages |
/ad config | ManageGuild |
/ad warn | Custom RoleManageMessages |
/ad-panel | Custom RoleManageMessages |
/sticky set | Custom RoleManageGuild |
/sticky-manager | Custom RoleManageGuild |
/giveaway | Custom RoleManageGuild |
/stats | ManageGuild |
/roleall | ManageRolesManageGuild |
/robux | Public |
/timestamp | Public |
/help | Public |
If a command requires a Custom Role, the server owner sets that role in the relevant /config module. Discord permissions (Manage Guild, Manage Roles, Manage Messages) are granted in Server Settings → Roles.
Structra ships a full moderation suite. Every action DMs the user where appropriate, is logged automatically, and creates a numbered case in your modlogs. Moderation commands require your configured moderator role or the Manage Messages permission — set this up in /config under Moderation.
/warn @user [reason]Issues a warning, DMs the user, and creates a case.
/warnings @userView all warnings on a user's record.
/clearwarnings @userWipe warnings. Management only.
/mute @user [duration] [reason]Timeout with durations like 30m, 1h, 7d.
/timeout @user [duration] [reason]Alias for /mute.
/unmute @userLifts a mute early.
/kick @user [reason]Removes the user and DMs them the reason before removal.
/ban @user [reason] [delete_days]Bans the user with optional message deletion.
/unban [user_id] [reason]Unban by user ID.
/slowmode [channel] [seconds]Sets slowmode on a channel.
/purge [amount] [user]Bulk deletes messages, optionally filtered by one user.
/search [user]Complete moderation history with page buttons. Ephemeral — only visible to the moderator who runs it.
Modlogs Case System
- • Every moderation action creates a numbered case (Case #1, #2, #3…).
- • Configure in
/configunder Moderation: choose a text channel or a forum channel. - • If you pick a forum, each case gets its own thread titled Case #N, USERNAME, ACTION.
Kicks and bans done directly through Discord (outside of Structra commands) also appear as full numbered cases with the moderator and reason included.
The Security System automatically monitors the channels you select and acts on anything it detects. Configure it in /config under Security.
- • Select which channels to monitor.
- • Detects links, Discord invites, and link shorteners automatically.
- • Add a custom blocked words list.
- • Detection actions: log only, delete, delete and warn, or delete and timeout.
- • Set an exempt role that bypasses all checks.
- • All detections are logged to the security log channel with full details.
Structra needs Read Message History and Manage Messages in every monitored channel. Add your staff role as the exempt role so staff messages are never flagged.
Tickets are opened via a button on the configured ticket panel channel. Structra creates a private channel that only the support role and the ticket opener can see.
/add [user]Custom RoleManageGuildAdds a user to the active ticket channel. Must be used inside an open ticket, not in a regular channel.
/add remove [user]Custom RoleManageGuildRemoves a user from the active ticket channel. Cannot remove the ticket owner — this is by design.
Both /add commands only work inside an active ticket channel. Running them in a regular channel will return an error.
When a user submits an application, Structra creates two things: a locked private ticket channel (the applicant can read but not write) and a forum thread for staff review. Staff use /approve or /deny to process the application.
/approve [user] [reason]ManageGuildCustom RoleApproves an application. Structra will:
- • Unlock the ticket channel so the applicant can write
- • Post an approval message in the ticket
- • Update the forum thread with the approval status
- • DM the applicant with the result (if DMs are open)
/deny [user] [reason]ManageGuildCustom RoleDenies an application. Structra will:
- • Post a denial message in the ticket channel
- • Delete the ticket channel after 10 seconds
- • Archive the forum thread
- • DM the applicant with the result (if DMs are open)
If the applicant has DMs disabled, the action still completes — only the DM notification will fail. A note is posted in the ticket channel in this case.
To configure the application form, run /config and navigate to Application System.
Templates let you save your entire server structure as a shareable HTE-XXXXX code that can be loaded on any server. Templates save and restore everything: roles, categories, channels, role permissions, channel permission overwrites, slowmode, and NSFW flags.
/template saveManageGuildSaves the current server structure and returns a unique HTE-XXXXX share code. Keep this code — it's how you or others load the template later.
/template load [code]ManageGuildLoads a template from a share code. Requires confirmation before executing.
Official preset codes
HTE-ERLCStandard ER:LC Server
8 categories, 28 channels, and a 7-role hierarchy. The recommended starting point for a full ER:LC community.
HTE-SMALLSmall Community Server
The same role hierarchy in a minimal layout. Clean and easy to expand as you grow.
HTE-DEPTLarge Department Server
Built for big communities with dedicated Patrol, Fire, and Medical department sections.
After loading a preset, Structra automatically assigns the new channels to all modules — no manual configuration needed.
/template load is destructive. It DELETES ALL existing channels and roles on the server before rebuilding from the template. This cannot be undone. A confirmation prompt is shown — read it carefully before confirming.
The advertising module manages an ad channel with cooldowns, a warning system, and a staff moderation panel.
/ad configSet the ad channel, posting cooldown duration, and the ad moderator role.
/ad warn [user] [reason]Warn a user for an ad rule violation.
/ad addpreset [reason]Add a preset warning reason for quick use in /ad-panel.
/ad removepreset [reason]Remove an existing warning preset.
/ad presetsList all configured warning presets.
/ad check [user]Check a user's current cooldown status.
/ad warnings [user]View a user's full warning history.
/ad-panel
The staff hub. Opens an interactive panel with these action buttons:
Delete + Warn requires pasting a full Discord message link. The bot deletes the message and warns the user in a single action.
Sticky messages are pinned messages that Structra automatically reposts when a configurable delay condition is met — keeping important info at the bottom of the channel.
/sticky set [channel] [message]Set a sticky message in a channel. The bot reposts it when the configured delay is met.
/sticky remove [channel]Remove the sticky from a channel.
/sticky listView all active sticky messages across the server.
/sticky-managerFull management hub with paginated list, inline editing, live preview, custom accent color, and delay settings.
The sticky delay is configured in /config → Sticky Messages. The delay is based on message count — the sticky reposts after X new messages in the channel.
The giveaway system handles everything from entry to winner announcement. Timers survive bot restarts and are rescheduled automatically on the ready event.
/giveaway createPost an Enter button panel and schedule auto-end. Options: prize, duration, winner count, and entry requirements.
/giveaway endForce-end an active giveaway and pick winners immediately.
/giveaway rerollPick a new winner from the same entry pool of an already-ended giveaway.
/giveaway cancelCancel a giveaway without drawing a winner.
/giveaway sponsorsManage sponsored giveaway records.
/giveaway listView all active and past giveaways.
/giveaway-hubStaff panel with statistics and 9 action buttons including channel select and modal flows.
Winners are DM'd automatically when a giveaway ends. If a winner has DMs disabled, their name is still posted in the giveaway channel. Configure winner DM settings in /config → Giveaways.
Structra listens to 16 Discord events to power logging, security, welcomes, stickies, and giveaways. Configure which events are logged in /config → Server Logs. Each event below is logged to your designated channel with executor attribution where Discord provides it.
| Event Handler | What it does |
|---|---|
guildMemberAdd | Fires when a member joins — drives Welcome Messages, Join Security, and join logging. |
guildMemberRemove | Fires when a member leaves or is kicked — logs the departure. |
guildMemberUpdate | Tracks nickname changes and role additions/removals with executor attribution. |
messageCreate | Powers sticky message reposting and ad-channel cooldown tracking. |
messageUpdate | Logs message edits with before/after content. |
messageDelete | Logs deleted messages, including who deleted them where available. |
guildBanAdd | Logs bans with the responsible moderator and reason. |
guildBanRemove | Logs unbans with the responsible moderator. |
channelCreate | Logs new channels and categories. |
channelDelete | Logs deleted channels and categories. |
channelUpdate | Logs channel name, topic, and permission changes. |
roleCreate | Logs newly created roles. |
roleDelete | Logs deleted roles. |
roleUpdate | Logs role name, color, and permission changes. |
interactionCreate | Routes every slash command, button, modal, and select-menu interaction. |
ready | Runs on startup — reschedules giveaway timers and re-seeds the invite cache. |
Message content logging (edits and deletes with content) requires the Message Content Privileged Intent to be enabled for the bot in the Discord Developer Portal.
Run /stats to open the server statistics panel. Shows total members, join trends over 7 and 30 days, and the top inviter.
Two chart views:
- Join Graph — daily join count rendered as an image attachment
- Invite Chart — invite-by-inviter breakdown rendered as an image attachment
Invite tracking requires the bot to be present when invites are created. If Structra was added after existing invites, those invites won't be tracked until a bot restart re-seeds the cache.
All utility commands are public — no special permissions required except /roleall.
/robux tax [amount]PublicShows the listed price, how much tax is taken (30%), and the final payout you receive.
/robux reverse [desired]PublicShows what listing price you need to achieve a desired payout after the 30% tax.
/timestamp create [date] [time] [timezone]PublicGenerates all 7 Discord timestamp format styles for the given date and time. Shows the raw <t:UNIX:FLAG> code for each format. Supports 18 timezones.
/roleall add [role]/roleall remove [role]ManageRolesManageGuildBulk-assigns or removes a role from every server member. Processes in batches of 5 with rate-limit delays and shows a live progress bar. Requires confirmation before executing.
Members with roles higher than Structra's highest role cannot be modified. Move Structra's role to the top of the role list to avoid members being skipped.
Opens the interactive help center directly in Discord with category pages and a search modal for finding commands by keyword.
Smart behavior: if you run /help inside an active ticket channel, it opens to the Tickets page automatically. A link to the Structra support server is built in.