Documentation

Build with VELOCITY

Everything you need to run, extend and integrate the bot — commands, tickets, plugins and the full REST API.

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.

70+ commands
Across 11 categories
Live plugins
Hot-reload, no downtime
Web transcripts
Searchable & shareable

Quick Start

Add the bot, then open the dashboard:

  1. Click Add to Discord and authorize VELOCITY.
  2. Open the dashboard and pick your server.
  3. Create a ticket panel under Panels.
  4. Install plugins from the Marketplace.

Run the bot locally:

bash
pip install -r requirements.txt
# fill in config.json (token, owner_id, guild_id)
python main.py

Commands

72 commands across 11 categories. Permissions:

everyone
staff
admin
owner

🏆 Tournament(10)

/tournament createCreate a new tournament
/tournament create <name> <game> <date>
/tournament startStart the active tournament
/tournament start
/tournament infoView tournament details
/tournament info
/tournament registerRegister for a tournament
/tournament register
/checkinCheck in for a tournament
/checkin
/bracketView the tournament bracket
/bracket
/resultsPost match results
/results <match> <winner>
/leaderboardView the player leaderboard
/leaderboard
/profileView a player tournament profile
/profile [user]
/historyView past tournaments
/history

🎫 Tickets(5)

/ticket createOpen a support ticket
/ticket create [topic]
/ticket closeClose the current ticket
/ticket close
/ticket claimClaim a ticket
/ticket claim
/ticket prioritySet ticket priority
/ticket priority <level>
/panel createCreate a ticket panel
/panel create

🛡️ Moderation(9)

/banBan a member
/ban <user> [reason]
/kickKick a member
/kick <user> [reason]
/muteTimeout a member
/mute <user> [duration]
/warnWarn a user
/warn <user> [reason]
/warningsView a user's warnings
/warnings <user>
/purgeBulk delete messages
/purge [count]
/lockLock a channel
/lock
/automod toggleEnable/disable AutoMod
/automod toggle <on|off>
/automod addwordAdd a banned word
/automod addword <word>

💰 Economy(8)

/dailyClaim 250 daily coins
/daily
/balanceCheck coin balance
/balance [user]
/workWork to earn coins
/work
/giveTransfer coins
/give <user> <amount>
/robRob another user (risky)
/rob <user>
/shopView the coin shop
/shop
/slotsSpin the slot machine
/slots
/rouletteBet on roulette
/roulette <bet> <color>

🎮 Fun(7)

/8ballMagic 8-ball answer
/8ball <question>
/coinflipHeads or tails
/coinflip
/diceRoll dice
/dice [sides]
/rpsRock paper scissors
/rps <choice>
/triviaAnswer trivia for coins
/trivia
/hugHug someone
/hug [user]
/roastRoast someone
/roast [user]

🎵 Music(5)

/playPlay a song
/play <song|url>
/skipSkip the current song
/skip
/queueView the queue
/queue
/nowplayingCurrently playing track
/nowplaying
/volumeSet playback volume
/volume <0-100>

ℹ️ Info(8)

/server ipShow the ZyperMC server IP
/server ip
/server playersLive player count for all servers
/server players
/server pingPing all ZyperMC servers
/server ping
/mcplayerLookup a Minecraft player (skin, UUID)
/mcplayer <ign>
/serverinfoGuild information
/serverinfo
/whoisDetailed user info
/whois [user]
/botinfoBot information & stats
/botinfo
/membercountServer member statistics
/membercount

⚙️ Utility(3)

/pingBot latency
/ping
/embedCreate a custom embed
/embed <title>
/pollCreate a poll
/poll <question> [opts]

🎁 Giveaway(3)

/giveaway startStart a giveaway
/giveaway start <prize> <mins>
/giveaway endEnd a giveaway early
/giveaway end [id]
/giveaway rerollReroll the winner
/giveaway reroll [id]

🛠️ Admin+(5)

!nukeWipe a channel (clone & delete)
!nuke [#channel]
!cloneDuplicate a channel
!clone [#channel]
!announcePost an announcement embed
!announce #ch <msg>
!sayMake the bot say something
!say <msg>
!dmDM a user from the bot
!dm @user <msg>

📊 Other(9)

/afkSet your AFK status
/afk [reason]
/suggestSubmit a suggestion
/suggest <text>
/rolemenu createCreate a role menu
/rolemenu create <name>
/countdown setCreate an event countdown
/countdown set <name> <date>
/quote randomGet a random saved quote
/quote random
/serverstats setupSetup live stats channels
/serverstats setup
/plugin listList installed plugins
/plugin list
/config viewView bot configuration
/config view
/helpInteractive 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:

json
{
  "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.

json
{
  "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:

python
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 everything

Hooks: 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.

MethodEndpoint
GET/api/health
GET/api/auth/login
GET/api/auth/callback
GET/api/auth/me
GET/api/guilds
GET/api/guilds/:id/tickets
PATCH/api/guilds/:id/tickets/:tid
GET·POST/api/guilds/:id/panels
PATCH·DELETE/api/guilds/:id/panels/:pid
GET/api/guilds/:id/plugins
POST·PATCH/api/guilds/:id/plugins/:name
GET/api/guilds/:id/analytics
GET·PATCH/api/guilds/:id/settings
GET/api/transcripts
GET/api/transcripts/:id
GET/api/commands
bash
curl https://bot.zypermc.fun/api/commands | jq '.total'
curl https://bot.zypermc.fun/api/guilds/123/tickets?status=open

Status & Support

Need help? Join the support server or check the live service status endpoint.

Documentation · VELOCITY