Introduction
VELOCITY is an all-in-one Discord bot for the ZyperMC Minecraft network. It bundles tickets, tournaments, moderation, economy, music and a live plugin system — all controllable from this dashboard. The bot persists data as JSON; this dashboard mirrors those exact schemas.
Quick Start
Add the bot, then open the dashboard:
- Click Add to Discord and authorize VELOCITY.
- Open the dashboard and pick your server.
- Create a ticket panel under Panels.
- Install plugins from the Marketplace.
Run the bot locally:
pip install -r requirements.txt
# fill in config.json (token, owner_id, guild_id)
python main.pyCommands
72 commands across 11 categories. Permissions:
🏆 Tournament(10)
/tournament create | Create a new tournament /tournament create <name> <game> <date> |
/tournament start | Start the active tournament /tournament start |
/tournament info | View tournament details /tournament info |
/tournament register | Register for a tournament /tournament register |
/checkin | Check in for a tournament /checkin |
/bracket | View the tournament bracket /bracket |
/results | Post match results /results <match> <winner> |
/leaderboard | View the player leaderboard /leaderboard |
/profile | View a player tournament profile /profile [user] |
/history | View past tournaments /history |
🎫 Tickets(5)
/ticket create | Open a support ticket /ticket create [topic] |
/ticket close | Close the current ticket /ticket close |
/ticket claim | Claim a ticket /ticket claim |
/ticket priority | Set ticket priority /ticket priority <level> |
/panel create | Create a ticket panel /panel create |
🛡️ Moderation(9)
/ban | Ban a member /ban <user> [reason] |
/kick | Kick a member /kick <user> [reason] |
/mute | Timeout a member /mute <user> [duration] |
/warn | Warn a user /warn <user> [reason] |
/warnings | View a user's warnings /warnings <user> |
/purge | Bulk delete messages /purge [count] |
/lock | Lock a channel /lock |
/automod toggle | Enable/disable AutoMod /automod toggle <on|off> |
/automod addword | Add a banned word /automod addword <word> |
💰 Economy(8)
/daily | Claim 250 daily coins /daily |
/balance | Check coin balance /balance [user] |
/work | Work to earn coins /work |
/give | Transfer coins /give <user> <amount> |
/rob | Rob another user (risky) /rob <user> |
/shop | View the coin shop /shop |
/slots | Spin the slot machine /slots |
/roulette | Bet on roulette /roulette <bet> <color> |
🎮 Fun(7)
/8ball | Magic 8-ball answer /8ball <question> |
/coinflip | Heads or tails /coinflip |
/dice | Roll dice /dice [sides] |
/rps | Rock paper scissors /rps <choice> |
/trivia | Answer trivia for coins /trivia |
/hug | Hug someone /hug [user] |
/roast | Roast someone /roast [user] |
🎵 Music(5)
/play | Play a song /play <song|url> |
/skip | Skip the current song /skip |
/queue | View the queue /queue |
/nowplaying | Currently playing track /nowplaying |
/volume | Set playback volume /volume <0-100> |
ℹ️ Info(8)
/server ip | Show the ZyperMC server IP /server ip |
/server players | Live player count for all servers /server players |
/server ping | Ping all ZyperMC servers /server ping |
/mcplayer | Lookup a Minecraft player (skin, UUID) /mcplayer <ign> |
/serverinfo | Guild information /serverinfo |
/whois | Detailed user info /whois [user] |
/botinfo | Bot information & stats /botinfo |
/membercount | Server member statistics /membercount |
⚙️ Utility(3)
/ping | Bot latency /ping |
/embed | Create a custom embed /embed <title> |
/poll | Create a poll /poll <question> [opts] |
🎁 Giveaway(3)
/giveaway start | Start a giveaway /giveaway start <prize> <mins> |
/giveaway end | End a giveaway early /giveaway end [id] |
/giveaway reroll | Reroll the winner /giveaway reroll [id] |
🛠️ Admin+(5)
!nuke | Wipe a channel (clone & delete) !nuke [#channel] |
!clone | Duplicate a channel !clone [#channel] |
!announce | Post an announcement embed !announce #ch <msg> |
!say | Make the bot say something !say <msg> |
!dm | DM a user from the bot !dm @user <msg> |
📊 Other(9)
/afk | Set your AFK status /afk [reason] |
/suggest | Submit a suggestion /suggest <text> |
/rolemenu create | Create a role menu /rolemenu create <name> |
/countdown set | Create an event countdown /countdown set <name> <date> |
/quote random | Get a random saved quote /quote random |
/serverstats setup | Setup live stats channels /serverstats setup |
/plugin list | List installed plugins /plugin list |
/config view | View bot configuration /config view |
/help | Interactive help menu /help |
Ticket System
Tickets are created from panels. Each panel renders as buttons or a dropdown, and each option routes to a category with its own support roles, welcome message, default priority and optional modal form.
A panel option looks like:
{
"label": "Report a Player",
"emoji": "🚨",
"category_id": 1411032023514218672,
"support_roles": [1466096340340834496],
"button_style": "danger",
"default_priority": "high",
"form": [
{ "label": "Offender IGN", "style": "short", "required": true },
{ "label": "What happened?", "style": "long", "required": true }
]
}When a ticket closes, VELOCITY archives the conversation to https://transcript.zypermc.fun/transcript/{id} — searchable, shareable and downloadable.
Plugin Development
A plugin is a folder under plugins/ with a plugin.json manifest and a plugin.py entry point.
{
"name": "welcome_images",
"display_name": "Welcome Image Cards",
"version": "2.1.0",
"description": "Generates welcome cards for new members.",
"author": "ZyperMC Labs",
"dependencies": [],
"permissions": ["commands"],
"entry": "plugin.py",
"config": { "accent": "#7B2FBE" }
}Implement either a class with on_load/on_unload or module-level setup/teardown:
async def setup(api):
# register a ticket hook
api.register_ticket_hook("ticket_create", on_ticket)
# add a command, view, task or cog
api.add_prefix_command(my_command)
async def on_ticket(ticket, bot, actor):
print(f"Ticket #{ticket['number']} opened")
async def teardown(api):
await api.unwind() # cleans up everythingHooks: ticket_create, ticket_claim, ticket_close, ticket_reopen, ticket_delete. Config persists to data/plugin_{name}.json. Manage everything live from the Marketplace.
API Reference
The dashboard exposes a REST API. Mutating routes require a valid session and manage-permission on the guild; all routes are rate-limited.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/health | Service health check. |
| GET | /api/auth/login | Begin the Discord OAuth2 flow. |
| GET | /api/auth/callback | OAuth2 redirect; sets the session cookie. |
| GET | /api/auth/me | Current authenticated user. |
| GET | /api/guilds | Guilds the user can manage. |
| GET | /api/guilds/:id/tickets | List tickets (status/priority/q filters). |
| PATCH | /api/guilds/:id/tickets/:tid | Update a ticket (status, priority, claim…). |
| GET·POST | /api/guilds/:id/panels | List or create ticket panels. |
| PATCH·DELETE | /api/guilds/:id/panels/:pid | Edit or delete a panel. |
| GET | /api/guilds/:id/plugins | List plugins for a guild. |
| POST·PATCH | /api/guilds/:id/plugins/:name | Lifecycle action / save config. |
| GET | /api/guilds/:id/analytics | Aggregated analytics for a guild. |
| GET·PATCH | /api/guilds/:id/settings | Read or update the bot config. |
| GET | /api/transcripts | Transcript index (optional admin key). |
| GET | /api/transcripts/:id | Full transcript JSON. |
| GET | /api/commands | Public command catalog. |
curl https://bot.zypermc.fun/api/commands | jq '.total'
curl https://bot.zypermc.fun/api/guilds/123/tickets?status=openStatus & Support
Need help? Join the support server or check the live service status endpoint.