Rollbot#
A TFT Ultimate Bravery Rollbot for Discord and Terminal.

Development#
Uses Deno with Deno Deploy for deployment.
Commands#
| Use | Command |
|---|---|
| Run tests | deno task test |
| Run CLI | deno run src/main.ts <command> |
| Run server | deno serve src/main.ts |
| Update set data | deno run src/main.ts update |
| List available sets | deno run src/main.ts list |
| Switch to a set | deno run src/main.ts switch --set=<set> |
| Register commands | deno run src/main.ts setup |
Project Structure#
src/
├── main.ts # CLI and server entrypoint
├── commands/ # CLI commands (Cliffy)
│ ├── routes/ # HTTP routes
│ │ ├── index.ts # Homepage
│ │ └── interactions.ts # Discord interactions
│ ├── list.ts # List sets command
│ ├── roll.ts # Roll command
│ ├── setup.ts # Register commands
│ ├── switch.ts # Switch set command
│ └── update.ts # Update set data
├── __tests__/ # Test files
└── utilities/
├── roll.ts # Roll logic
├── storage.ts # Deno KV storage
├── format.ts # Output formatting
├── sift.ts # HTTP utilities
└── constants.ts # Environment constants
Usage#
CLI#
# Roll for a single player
deno run src/main.ts roll
# Roll for multiple players
deno run src/main.ts roll --names "Alice Bob"
# Roll with a specific set
deno run src/main.ts roll --set=tft10
# List available sets
deno run src/main.ts list
# Switch to a different set
deno run src/main.ts switch --set=tft10
# Update set data from Community Dragon
deno run src/main.ts update
Discord Bot#
/roll
TFT RollBot (Season 6):
King: Graves
Team: Academy + Twinshot
/roll @player1 @player2 @player3
TFT RollBot (Season 6):
@player1
King: Quinn
Team: Sniper + Mercenary
@player2
King: DingerDonger
Team: Innovator + Socialite
@player3
King: Jinx
Team: Twinshot + Imperial
Data#
Our data comes from communitydragon.org
Set Names#
| Name | What is It? |
|---|---|
_TURBO |
Hyperroll |
Deployment#
The bot runs on Deno Deploy with Deno KV for storage.
Server mode (no args): deno serve src/main.ts
CLI mode (with args): deno run src/main.ts <command>
Set data is updated automatically via cron (daily at midnight UTC) when deployed.
Environment Variables#
| Variable | Required | Description |
|---|---|---|
PUBLIC_KEY |
Yes | Discord public key for verification |
CLIENT_ID |
No | Discord app ID for invite link |
CRON_SECRET |
No | Secret for /cron endpoint auth |