2026-03-18 04:42:02 +00:00
2026-03-17 15:17:36 +00:00
2026-03-17 15:17:36 +00:00
2026-03-17 15:17:36 +00:00
2026-03-18 04:42:02 +00:00
2026-03-17 15:17:36 +00:00
2026-03-18 04:02:11 +00:00
2026-03-18 01:35:09 +00:00

Velox Bot

A Discord bot written in Go with a PostgreSQL backing store.

It currently includes:

  • Fun commands (/ping, /joke, /dice, /rps, …)
  • Leveling system (opt-in per server via /slvl toggle)
  • Meeting rooms (voice lobby → auto-created temporary voice channels)
  • Scheduling (1:1 sessions with DM invites + reaction-based accept/decline/reschedule)
  • Projects (list/create projects + helpers)
  • Music (Lavalink-powered /play, /queue, /volume)

Requirements

  • Go (see go.mod)
  • PostgreSQL 16+ (or use the provided docker-compose.yml)
  • (Optional) Air for live reload during development
  • (Optional) Lavalink if you want music commands

Configuration

The app loads environment variables from .env (see internal/config/config.go).

Required:

  • BOT_TOKEN: Discord bot token
  • APP_ID: Discord application ID
  • GUILD_ID: Target guild/server ID (commands are registered per-guild)
  • DB_HOST: Postgres connection string (pgx), e.g. postgres://velox:velox_pwd@localhost:5432/velox?sslmode=disable

Optional (music):

  • LAVALINK_HOST: Lavalink WebSocket/HTTP host (depends on your Lavalink setup)
  • LAVALINK_PASSWORD: Lavalink password

Database setup

If you use the compose file:

docker compose up -d

Then apply the schema:

psql "postgres://velox:velox_pwd@localhost:5432/velox?sslmode=disable" -f schema.sql

Run

Plain Go:

go run .

With live reload (Air):

air

If you use just, a small workflow is included:

just up      # start postgres
just start   # start postgres + run air
just down    # stop postgres

Commands (high-level)

  • Fun
    • /ping, /joke [type], /coinflip, /dice <expr>
    • /rps <hand>, /rpsstats, /rpsleaderboard (server only)
  • Help
    • /help (sends a DM with command reference)
  • Leveling
    • /slvl ... admin/config
    • /rank, /leaderboard, /rewards
  • Meetings (Manage Server)
    • /meeting set-lobby, /meeting lock, /meeting lock-private, /meeting unlock, /meeting invite, /meeting uninvite
  • Timezone
    • /timezone set, /timezone show
  • Scheduling
    • /schedule create, /schedule list, /schedule reschedule
  • Projects
    • /projects list, /projects create, /projects add-helper
  • Music (requires DJ role)
    • /play, /queue, /volume

Notes

  • Slash commands are registered to the configured GUILD_ID on startup.
  • Some features require server permissions (e.g. Manage Server) or roles (e.g. DJ for music).
S
Description
No description provided
Readme
27 MiB
Languages
Go 99.9%
Dockerfile 0.1%