Skip to content
BotFraggGPL-3.0

Guide

From invite to daily shop.

Everything you need to set BotFragg up, and to take your data back out again. Setup takes about two minutes; self-hosting is a longer walkthrough.

1

Invite BotFragg

Use the Add to Discord button on this site and approve the invite for your server. The invite itself requests:

  • Scopes: bot and applications.commands
  • Permissions: none (permissions=0)

Because the invite asks for nothing, a server admin has to grant the four permissions BotFragg uses once it has joined:

  • View Channels so it can see the channel you run commands in
  • Send Messages for replies
  • Embed Links for shop and stats embeds
  • Read Message History so interactive shop buttons keep working

That’s the whole list: no administrator access, no privileged intents, no message-content access. BotFragg talks through slash-command interactions and its own direct messages, so it doesn’t need to read ordinary conversation.

TipThe invite asks for no permissions. After the bot joins, grant it View Channels, Send Messages, Embed Links, and Read Message History.

2

Link your Riot account

Run /login. BotFragg sends you through Riot’s official sign-in page; when it finishes, you paste the Riot redirect URL into a private, ephemeral Discord form that only you and the bot can see.

The redirect is exchanged with Riot for a session credential, which is stored encrypted at rest with the operator’s key. Your password never touches the bot.

Linking more than one account? Repeat /login for each one (10 by default), switch the active account with /account, and list them all with /accounts. Alerts are per Riot account; privacy settings are per Discord user.

/login/account/accounts

TipSign-in happens on Riot's own website. Never type your Riot password into Discord, not even in DMs.

3

Check your daily shop

Run /shop and your daily rotation arrives as a clean embed: skin names, tier colours, and prices for each offer.

/bundles shows the bundles currently featured in your store, and you can open each one to see the items inside. When a Night Market is live, /nightmarket shows your six discounted offers the same way.

Feel like showing off? /shop user:@friend opens someone else’s shop. Shop sharing is off by default, so ask them to turn it on in /settings set first. Their in-game name is visible by default; they can hide it there if they’d rather stay anonymous.

/shop/bundles/nightmarket

TipEach command replies in the channel you run it in. Daily shop DMs are off by default and follow your active account.

4

Track wallet & battlepass

/balance shows all three currencies (VALORANT Points, Radianite, and Kingdom Credits), so you always know whether you can afford the bundle you’ve been eyeing.

/battlepass breaks down your current act, tier, and progress toward the next reward. For missions, /missions shows daily and weekly progress privately. /penalties checks your matchmaking penalties, five records per page, without opening the launcher.

/balance/battlepass/missions/penalties
5

Set up skin alerts

Pick the skin you’re hunting with /alert, and BotFragg sends you a direct message the day it appears in your shop. No more logging in every morning to check. Alerts belong to the Riot account that was active when you created them.

Alerts are restart-safe: the bot removing and re-adding them during an update won’t lose them. You can audit or clean up your list any time with /alerts.

Not sure delivery works for you? /testalerts sends a test DM on demand. It needs a linked account and at least one active alert first.

/alert/alerts/testalerts

TipAlerts arrive by DM. If nothing shows up, check that your Discord privacy settings allow DMs from server members.

6

Tune your settings

/settings view shows your current preferences privately, and /settings set changes them with a Yes/No menu:

  • Daily shop DM: send today’s shop to your DMs automatically. Off by default; follows your active account.
  • Night Market alerts: DM you when a tracked skin appears in the Night Market. On by default for linked accounts.
  • Hide in-game name: hide your Riot name and tag. Off by default, so your name is visible.
  • Profile sharing: let other users open your profile with /profile user:@you. Off by default.
  • Shop sharing: let other users open your shop with /shop user:@you. Off by default.

Everything is per Discord user. If you hide your in-game name, /accounts becomes private too.

/settings view/settings set
7

Manage or delete your data

Two commands, two levels of “leave”:

  • /logout removes the stored Riot credentials for an account. Your account record, alerts, and preferences stay, which is useful for relinking later.
  • /deletedata confirm:True deletes everything: linked accounts, encrypted credentials, alerts, preferences, and command analytics. It requires explicit confirmation and cannot be undone.

Done using BotFragg for good? The second command is the only one you need.

/logout/deletedata

TipThe privacy policy explains exactly what each command removes, and what it can't (messages already sent to Discord).

8

Self-host BotFragg

BotFragg is GPL-3.0, so you can run your own instance with the same source the maintainers do.

For production you need a Discord application token, a generated Fernet key for credential encryption, and a PostgreSQL database. The repo’s docker-compose.yml runs migrations and then the bot:

  1. Clone the repository and copy .env.example to .env.
  2. Set APP_ENV=production, DISCORD_TOKEN, TOKEN_ENCRYPTION_KEY, and DATABASE_URL (reachable from the bot container).
  3. Start it: docker compose up -d --build.

Prebuilt image

GitHub Actions publishes ghcr.io/botfragg/botfragg after CI passes on v* tags. latest tracks the newest version tag, and version and commit SHA tags are also available:

docker pull ghcr.io/botfragg/botfragg:latest

To use it, set image: ghcr.io/botfragg/botfragg:latest on the bot service in docker-compose.yml instead of build: ., keep the existing migration command, then start with docker compose up -d. The image does not run migrations on its own; the Compose command still does.

The Compose file does not provision PostgreSQL; supply your own database. For local development, Python 3.14 and uv with SQLite is enough when DATABASE_URL is unset; see the README for the full walk-through. Optional settings cover the daily alert time (ALERT_TIME_UTC) and other runtime limits.

docker compose up -d --build

TipThe Compose file runs migrations and then the bot. It does not create a database, so point DATABASE_URL at your own PostgreSQL instance.

Stuck on a step?

The support server is the fastest way to reach the team, and the contributing guide covers how to file issues properly.