Discord Bot
Discord Bot Commands
Every command the Soteria bot exposes, grouped by who can run it. All commands work inside a Discord server (not in DMs) and reply privately, so keys and results are only visible to you. New to the bot? Start with the Setup guide.
<user> mark required options and square brackets like [days] mark optional ones. Do not type the brackets themselves.Everyone
Available to every member of the server.
/getkey
Available to everyone
Pick a script and get its key-system (gateway) link. If the service has only one script, the link is returned instantly. If it has several, the bot shows a dropdown to choose from, paginated in groups of 25.
/getkey/resethwid
Available to everyone
Reset the HWID and UID locks on your own key by pasting it. Limited to 2 resets per key in a rolling 24 hour window, resets are tracked per key, not per Discord account. This is the self-service version of the panel's Reset HWID button.
/resethwid <key>| Option | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | The key to reset. |
/help
Available to everyone
Show a paginated list of every command, grouped by permission tier. Use the arrow buttons to move between pages.
/helpStaff
Available to members with the Manage Server permission, or a role granted access with /manager add. These commands act on the Oracle service the server is bound to.
/whitelist
Staff
Create a key for a Discord user, or update their existing one. The user is sent their key by DM, and the bot reports whether the DM went through. By default it updates the user's current key rather than minting a second one.
/whitelist <user> [days] [premium] [max_hwids] [max_uids] [new_key]| Option | Type | Required | Description |
|---|---|---|---|
| user | User | Yes | The member to whitelist. |
| days | Integer | No | Days until the key expires. Omit for a permanent key. Minimum 1. |
| premium | Boolean | No | Grant a premium key. |
| max_hwids | Integer | No | HWID slot limit, 1 to 10. Omit for unlimited. |
| max_uids | Integer | No | UID slot limit, 1 to 10. Omit for unlimited. |
| new_key | Boolean | No | Mint an additional key for the user instead of updating their existing one. |
/unwhitelist
Staff
Revoke a user's key, removing their access to the service.
/unwhitelist <user>| Option | Type | Required | Description |
|---|---|---|---|
| user | User | Yes | The member whose key should be revoked. |
/blacklist
Staff
Blacklist a user account-wide and revoke any key they currently hold. Optionally record a reason and set an expiry.
/blacklist <user> [reason] [days]| Option | Type | Required | Description |
|---|---|---|---|
| user | User | Yes | The member to blacklist. |
| reason | String | No | Reason for the blacklist, kept for your records. |
| days | Integer | No | Days until the blacklist expires. Omit for an indefinite blacklist. Minimum 1. |
/unblacklist
Staff
Remove a user from the blacklist, allowing them to be whitelisted again.
/unblacklist <user>| Option | Type | Required | Description |
|---|---|---|---|
| user | User | Yes | The member to remove from the blacklist. |
/force-resethwid
Staff
Reset a user's HWID and UID locks, bypassing any cooldown. Use this when a member has legitimately changed hardware and cannot wait out the normal reset timer.
/force-resethwid <user>| Option | Type | Required | Description |
|---|---|---|---|
| user | User | Yes | The member whose HWID lock should be reset. |
/compensate
Staff
Add days to every active key on the service at once. Useful for making up for downtime. Permanent keys are left untouched, and the bot reports how many keys were extended.
/compensate <days>| Option | Type | Required | Description |
|---|---|---|---|
| days | Integer | Yes | Number of days to add to each active key. Minimum 1. |
/generate
Staff
Mint a standalone key that is not tied to any Discord user. The key is returned in the reply for you to hand out however you like.
/generate [name] [days] [premium] [max_hwids] [max_uids]| Option | Type | Required | Description |
|---|---|---|---|
| name | String | No | A label for the key, 3 to 32 characters. |
| days | Integer | No | Days until the key expires. Omit for a permanent key. Minimum 1. |
| premium | Boolean | No | Generate a premium key. |
| max_hwids | Integer | No | HWID slot limit, 1 to 10. Omit for unlimited. |
| max_uids | Integer | No | UID slot limit, 1 to 10. Omit for unlimited. |
/key
Staff
Look up a user's key or keys, showing expiry, usage count, and premium status. If the user has more than one key, the results are paginated in groups of 10. Defaults to looking up yourself when no user is given.
/key [user]| Option | Type | Required | Description |
|---|---|---|---|
| user | User | No | The member to look up. Defaults to you if omitted. |
/obfuscate
Staff, or everyone if enabled in the dashboard
Obfuscate a Luau script through Soteria without leaving Discord. Attach a .lua or .luau file and the bot opens an interactive panel to configure the target, node, optimization level, flow complexity, and toggles for the compression loader, compatibility mode, and custom error handler. Hit Obfuscate and the protected file is returned as an attachment. This draws on the linked account's membership quota.
/obfuscate <file>| Option | Type | Required | Description |
|---|---|---|---|
| file | Attachment | Yes | The .lua or .luau file to obfuscate. |
/panel
Staff
Post a persistent control panel embed for a script in a channel. Customers get a Get Key button that links straight to the gateway, a Get Script button that replies with a ready-to-run loadstring snippet, and a Reset HWID button that opens a modal for them to paste their key into (same limits as /resethwid). A Get Stats button is also included, but only replies for staff, anyone else who clicks it is told they lack permission. Pass a role to add a Get Role button too, customers who submit a valid, unexpired key for the service (and aren't blacklisted) are given that role automatically. Since keys aren't scoped to individual scripts, the check only verifies the key against the service the script belongs to.
/panel [channel] [role]| Option | Type | Required | Description |
|---|---|---|---|
| channel | Channel | No | The channel to post the panel in. Defaults to the channel you run the command in. |
| role | Role | No | Role to grant customers who verify a valid key. Omit to leave out the Get Role button. |
Admin only
Available only to members with the Manage Server permission. These commands manage the link between the server and your Soteria account, and always reply privately.
/login
Admin (Manage Server)
Link this server to your Soteria account with your API key. The bot confirms the account and lists your Oracle services and their IDs, which you then pass to /setservice.
/login <api_key>| Option | Type | Required | Description |
|---|---|---|---|
| api_key | String | Yes | Your Soteria API key, from Dashboard, then Settings, then API Key. |
/logout
Admin (Manage Server)
Unlink this server from your Soteria account. Commands will stop working until the server is linked again with /login.
/logout/setservice
Admin (Manage Server)
Bind this server to one of your Oracle services. Every key and script command then operates on that service. Run it again at any time to switch to a different service.
/setservice <id>| Option | Type | Required | Description |
|---|---|---|---|
| id | String | Yes | The service ID, shown in the reply from /login. |
/unsetservice
Admin (Manage Server)
Clear the service this server is bound to. Key and script commands stay unavailable until you bind a new service with /setservice.
/unsetservice/manager
Admin (Manage Server)
Control which roles can use the staff commands without needing the Manage Server permission. Members with Manage Server always count as staff.
/manager add <role>
/manager remove <role>
/manager list| Option | Type | Required | Description |
|---|---|---|---|
| add | Subcommand | - | Allow a role to use staff commands. Takes a role option. |
| remove | Subcommand | - | Revoke a role's access to staff commands. Takes a role option. |
| list | Subcommand | - | List the roles currently allowed to use staff commands. |

