/server-infoGet basic information about a Discord server.
Payload:serverId (String Discord Server
ID) { "id": "...", "name": "...", "memberCount": 0, "iconUrl": "..." }A complete manual for setting up and mastering Viscra for your community.
Getting Viscra into your server is the first step. Ensure you have the correct permissions set up to avoid issues later.
Invite Viscra using the official invite link. You need Manage Server permissions to add bots.
Viscra allows you to use your own custom bot identity (name, profile picture, banner) while still powered by our engine.
Please ensure you have enabled intents under the Bot tab on the application page.
Tip: If you want to hide the original Viscra commands and only show your custom bot's commands, go to Server Settings > Integrations > Viscra. Set the permissions for "Roles & Members" and "Channels" to false. This will hide them for non-admins.
We recommend giving Viscra Administrator permissions for ease of use. If you prefer granular control, ensure the bot has:
Viscra uses Roblox's official OAuth2 for secure verification. No verification games or code phrases are required.
Use /settings to configure the basic roles:
/settings set-verified-role: The role given
to users who successfully verify./settings set-unverified-role: The role
given to new members (removed upon verification).Run /verifypanel in your verification channel. This
creates a permanent button that users can click to link their
account.
Connect your Roblox group ranks to Discord roles. This can be done via commands or the Dashboard.
Run /setup groupid:YOUR_GROUP_ID. Viscra will
fetch your group roles and offer to automatically create
corresponding Discord roles and binds for them.
/groupbind add-role groupid:123 roles:@Member/rankbind add-role groupid:123 rankid:255
roles:@Owner/rankbind add-role groupid:123 rankid:20-32
roles:@OfficerOptionally, You can enforce nickname formats per rank using
the dashboard or /rankbind command. Use
{roblox_username}
as a placeholder.
Example: [E1] {roblox_username}
Sticky roles are roles that Viscra will not remove from a user, even if they no longer meet the requirements for it. This allows roles to be given via binds but not removed.
Roles within this list will not be removed by the bot when
/update, /updateall, or the
verification panel is interacted with.
/stickyroles add role: - Add a role to the sticky
role list./stickyroles list - List all currently configured
sticky roles./stickyroles remove role: - Remove a role from
the sticky role list.Sync your game with Viscra to enable XP tracking, auto-promotions, and more. You will need the Viscra Handler script from our support server.
ViscraHandler_New script and
ViscraConfigs ModuleScript.ViscraHandler_New in
ServerScriptService.ViscraConfigs in
ServerStorage.
serverId = "YOUR_SERVER_ID",
APIKey = "YOUR_GAME_API_KEY",
GroupId = 123456, -- Your Group ID
XPEarningTeams = {game.Teams.Red, game.Teams["Blue Team"]}, -- Teams that earn XP
XPSystemEnabled = true,
statName = "XP", -- The leaderstat to track, name doesn't matter much for Viscra's side of things
/apikeys generate
and include it in your ViscraConfigs. The
legacy BotKey will remain functional until
10th of January 2026.For Viscra to rank users on Roblox, you must authorise GameLink. Run /settings set-gamelink-auth and follow the
OAuth flow. This replaces the old cookie system.
GameLink is also required for the dashboard to view group icons and group rank names.
ProgressionBar (set to true) to ReplicatedStorage
to show a UI bar to players.ProgressionBarTheme on ReplicatedStorage
to customize the UI bar's appearance, below are the themes
currently added:Default - The standard white-grey theme.SciFi - A black-white less rounded theme.SciFi2 - A black-white less rounded theme
with a visible container for the progress to next rank
text.Tactical - Black and white with an orange-yellow
touch, positioned in the left lower corner of your screen.Custom - Your own custom theme, Copy the
ViscraXPBar StarterGui and paste it under ReplicatedStorage
(after modifying it to your liking) and it'll have your
custom modifications! You must keep the default hierarchy
& naming, but other than that you're free to modify colours,
positions, sizes, effects, etc.GamepassGifting on ReplicatedStorage to true
to enable gamepass gifting.2xXP on a Player object to true to grant double
XP.local ReplicatedRoot, RemoteFunction, RemoteEvent:
game:GetService("ReplicatedStorage"):WaitForChild("ViscraExtensions"):WaitForChild("Assets"):FindFirstChild("CmdrCommands"):Clone().Parent = script.Parent.BuiltInCommands/gamepass configure universe_id: to setup your games universeId (can also be done via the
settings command),/gamepass gift user: roblox_username/@Mention pass:
[autofilled], you can gift multiple gamepasses by running this
multiple times./gamepass view user: roblox_username/@Mention./gamepass revoke user: roblox_username/@Mention
pass: [autofilled].You can modify the gamepass gifter roles with the following commands:
/settings gamepass-gifter-role view to
view existing gamepass gifter roles/settings gamepass-gifter-role add role: to add a new gamepass gifter role/settings gamepass-gifter-role remove role: to remove oneOnce your game is connected, Viscra can track XP and promote users automatically.
In your ViscraConfigs script, define the
promotionReqs table:
promotionReqs = {
[1] = { -- Starting rank in your group, EG: Cadet
statReq = 0, -- XP needed
groupRoleId = 1 -- Rank ID to promote to
},
[2] = { -- Next rank, EG: Trooper
statReq = 15,
groupRoleId = 2
}
} Whenever a server starts, these requirements are synced to Viscra.
/xp: View your own or another user's XP and
progress to the next rank./topxp: View the server leaderboard, top 10
users with the most XP. For performance this value is
cached for 5 minutes./xpchange add: (Officer+) Add XP to a users
existing XP amount./xpchange remove: (Officer+) Remove XP from
a users existing XP amount./xpchange set: (Officer+) Set a user's XP
to a specific amount.You can modify the officer roles with the following commands:
/settings officer-role view to view existing
officer roles/settings officer-role add role: to add a new
officer role/settings officer-role remove role: to remove
oneThe Quota/Event Point (EP) system is designed for activity tracking within divisions or units.
Run /ep setup to start the interactive configuration
wizard. You can define:
Members can request Leave of Absence (LOA) in a channel created by server admins which can then be managed however you wish. Users on LOA are not counted during te weekly EP check, the LOA commands are as follows:
/loa add: Set a user as on LOA./loa end: End a user's LOA early./loa viewall: View everyone on LOA within
your server./loa set-role: Set the role assigned to
users on LOA.Viscra tracks EP earned via /ep add. Every week
(Sunday 00:00 UTC), the bot checks if users met their unit's
quota. If they fail, the configured warning action is
applied automatically.
Award custom medals to your members to recognise achievements.
/medal view: View a user's medals./medal list: List all medals created./medal create: Create a new medal./medal award: Give a medal to a user./medal edit: Edit an existing medal./whois: View a user's medals (and other
info).Medals can be displayed ingame via our integration onto DarthKarim's mouse rank system, alternatively if you are (or know a programmer) you can integrate it into your own in-game display.
You can get our integration for Karim's system from our server here.
A robust warning system logged to your database.
/warn view: View a user's warnings./warn add: Warn a user. They will be DM'd
the reason and a Warning ID./warn remove: Remove a warning using its
ID.Warning permissions are managed by the server moderator roles, you can view/manage them with the following commands:
/settings server-moderator-role view to view
existing moderator roles/settings server-moderator-role add role: to
add a new server moderator role/settings server-moderator-role remove role: to remove oneViscra provides an expansive ticket system with support for categories, custom naming schemes for channels made, and dedicated staff roles.
/tickets create: Create a new support
ticket panel./tickets delete: Delete a support ticket
panel using the ticket-panel-id./tickets manage: Manage an existing ticket
panel, including customising the initial embed text./add [user]: Add a user to an active
ticket./close [reason]: Close the current ticket
with an optional reason.Categories allow you to route tickets to specific departments with their own settings.
/tickets category add: Create a new ticket
category./tickets category edit: Modify an existing
category's settings./tickets category list: View all configured
categories./tickets category remove: Delete a ticket
category.Customise how ticket channels are named globally or per category.
/tickets settings naming scheme: Configure
the channel naming format.Supported formats include:
ticket-[username] (Default)support-[number]appeals-[username]Ticket staff permissions are primarily managed by the server moderator roles.
/settings server-moderator-role view/add/remove: Manage which roles can access and manage tickets./settings set-ticket-category: Set the
default Discord category for tickets without an assigned
department./settings set-transcript-channel: Set the
channel for ticket logs.
Note: Transcripts now exclude bot messages
for better readability.When a user opens a ticket, they receive a message with a
customisable embed. You can modify this text via the /tickets manage command.
The Close Ticket button on the embed will now prompt staff for a reason via a modal before the ticket is finalised.
Powerful server management tools to streamline your community operations.
Create custom application forms for your members to complete. Upon acceptance, the bot can automatically add them to a group and/or set their rank.
/applications manage: View and manage all
your server's applications./applications create: Create a new
application form with custom questions./applications panel [id]: Send an
application panel to the current channel for members to
apply.Track Roblox group changes such as promotions, demotions, and leaves in semi-real-time, logged directly to your Discord channels. This is limited to 1 primary group and 6 sub groups for free servers, and 1 primary group and 13 sub groups for pro servers. You'll need the token of an account with view audit log permissions to view group logs and send them to your channels.
/grouplogs add: Add a Roblox group to be
tracked. You can specify the logging type (e.g.,
Primary: HICOM only, Sub: All ranks + ping for HICOM
changes) and the channel for logs./grouplogs view: View all currently tracked
groups in your server./grouplogs sethicomrole: Set a specific
Discord role to be pinged when a HICOM-level change
occurs./grouplogs settoken: Set the Roblox
cookie/token to view the group logs for your server.
(account needs view audit log permissions)/grouplogs delete: Stop tracking a specific
Roblox group./grouplogs antiabuse: Configure anti-abuse
settings for a group to prevent nuking./grouplogs rollback: (PRO) View and restore
group snapshots to undo mass changes.Disable specific groups of commands to customize which features are available in your server.
/commandgroups list: View all available
command groups and their current status.Available command groups include:
Create complete backups of your server configuration and restore them when needed.
/backupserver: Create a backup of your
server's current configuration./backuprestore: Restore your server from a
previous backup.Developers can use Viscra's public API to integrate server data into external tools or websites.
/apikeys generate. Legacy BotKeys will cease to
function on 10th of January 2026.Requests to the public API are limited to 100 per minute per instance.
Base URL: https://api.viscra.uk/api
Auth: Header
Authorization: YOUR_API_KEY
(Manage keys via /apikeys)
/server-infoGet basic information about a Discord server.
Payload:serverId (String Discord Server
ID) { "id": "...", "name": "...", "memberCount": 0, "iconUrl": "..." }/is-verifiedCheck if a Roblox user is verified with Viscra.
Payload:robloxId (Number/String Roblox
User ID) { "isVerified": true/false, "discordId": "..." }/user-rankGet the current rank of a user in a Discord server.
Payload:serverId (String),
robloxId (Number/String) { "groupId": 0, "rankName": "...", "rankId": 0 }All XP routes return { "success": true, "newXp": 150 }
or an error
{ "success": false, "error": "..." }.
/user-xpFetch the current XP balance for a user.
Payload:serverId (String),
robloxId (Number/String) { "xp": 100 }/xp/setSet a user's XP to an exact value.
Body:serverId (String),
robloxId (Number/String),
amount (Number),
reference (String, Optional)/xp/addAdd XP to a user's current balance.
Body: Same as Set XP/xp/removeSubtract XP from a user's current balance.
Body: Same as Set XPNote: If groupId is not provided, the bot defaults
to the server's configured Main Group.
/group/list-requestsList pending join requests for a Roblox group.
Payload:serverId (String),
groupId (Number, Optional) { "success": true, "data": [ { "id": "...", "user": { "userId": 123, "displayName": "..." } } ] }/group/accept-requestAccept a pending join request.
Body:serverId (String),
requestId (String),
groupId (Number, Optional)/group/decline-requestDecline or deny a pending join request. (Alias:
/api/group/deny-request)
/group/promotePromote a user in the Roblox group.
Body:serverId (String),
robloxId (Number/String),
groupId (Number, Optional) { "success": true, "newRole": { "name": "Captain", "rank": 50 } }/group/demoteDemote a user in the Roblox group, moving them down one rank.
Body: Same as Promote User