Skip to main content

Web Dashboard

The dashboard is a website where server admins change Ririko's settings, read logs and see statistics. You do not need to remember commands. Everything you change on the dashboard works at once, and the bot picks it up within seconds.

1. Sign In​

You can sign in if you have the Manage Server or Administrator permission in a server where Ririko is.

  1. Open the dashboard address that the host gave you. The default for a local install is http://localhost:3000.
  2. Click Sign in with Discord and approve the request. Ririko asks only to see your name and your list of servers.
  3. Pick your server on the Servers page.

The Servers page lists the servers where you can manage Ririko. If Ririko is not in a server yet, the page shows an Invite Ririko button.

If you lose the permission on Discord, or if Ririko leaves the server, the dashboard stops showing that server within a minute.

2. Keep Your Account Safe​

2.1. Sessions​

  • A session ends after 30 minutes without activity, or after 12 hours.
  • Open Account, then Sessions, to see where you are signed in. You can sign out one session or all other sessions.
  • When you sign in from a new browser, Ririko sends you a direct message.

2.2. Passkeys​

A passkey is a second step, such as a fingerprint or a security key. Passkeys are optional, but we recommend them.

  1. Open Account, then Passkeys.
  2. Click to add a passkey and follow your browser.

After you add a passkey, every sign-in needs a passkey check. Someone who steals your Discord account still cannot use the dashboard.

Some changes always need a passkey check from the last 5 minutes:

  • the warning policy on the Moderation page,
  • every change on the Reaction Roles page,
  • everything in the owner console (section 6),
  • removing a passkey.

If you have no passkey, you cannot make these changes. The page links to the Passkeys page. Ririko sends you a direct message when someone adds or removes a passkey.

If you lose your passkey, the operator of the bot can reset it with ririko passkeys:reset <user_id>. See deployment.md.

2.3. Your Card Album​

Account, then Card Album, shows your own Waifu TCG cards, 24 on a page, newest first. You can filter by rarity or show only favorites. It is read only. Use /cards in Discord to equip, trade or dismantle cards.

3. Pages for Each Server​

The sidebar groups the pages. This table tells you what each page does and where to read more.

GroupPageWhat it doesMore
ServerOverviewShows statistics (section 4.1).Section 4.1
ServerGeneralSets the prefix and the time zone.Section 4.2
ServerCommandsTurns commands off, limits them to roles, sets cooldowns.commands.md
ServerIntegrationsShows which outside services the host has set up.Section 4.3
ModerationModerationSets the warning policy.moderation.md
ModerationAutoModSets the AutoMod rules.moderation.md
ModerationLoggingPicks the log channel.Section 4.4
ModerationCase LogLists moderation cases.moderation.md
ModerationAudit LogLists changes made on the dashboard.Section 4.5
MembersAuto RolesGives roles to new members and bots.modules.md
MembersReaction RolesBuilds role buttons and menus.modules.md
MembersAuto VoiceSets up "Join to Create" channels.modules.md
MembersWelcome CardSets the welcome card.modules.md
MembersFarewell CardSets the farewell card.modules.md
EngagementXP & RankingSets XP rules and level-up messages.economy.md
EngagementGamesSets wager limits, game switches and cooldowns.modules.md
EngagementGiveawaysEnds giveaways and rerolls winners.modules.md
Waifu TCGWaifu TCGSets card drops and the TCG Manager Role.waifu-tcg.md
Waifu TCGTCG AchievementsShows how many members unlocked each achievement.waifu-tcg.md
FeaturesMusicSets the default volume, music channel and DJ role.music.md
FeaturesAI ChatbotSets the AI channel, style, persona, tools and model.ai.md
FeaturesImage GenerationSets image defaults and limits.ai.md
FeaturesStream AlertsAdds streamers and sets alerts.modules.md
FeaturesFree GamesSets the free games channel.modules.md

Every page has a Save button. Ririko shows an error under a field if a value is not valid. Nothing is saved until all fields are valid.

4. Pages Explained​

4.1. Overview​

The Overview page shows:

  • the number of members and how many are online,
  • the number of voice channels in use,
  • a chart of the commands used in the last 30 days, and the most used commands,
  • Ririko's latency, version and uptime.

If Ririko is offline, the page shows that. Voice activity then shows as unknown.

The Overview page of the dashboard: member and voice counts, a chart of commands run in the last 30 days, the most used commands and Ririko&#39;s status.

4.2. General​

SettingWhat it does
Command prefixStarts text commands, such as !help. It has 1 to 5 characters and no spaces. Slash commands do not change.
Time zoneAn IANA name, such as Asia/Kuala_Lumpur. Ririko uses it for reminders and for times it shows in this server.

4.3. Integrations​

This page is read only. It lists the outside services (Discord, AI, images, streams, music) and whether each one is configured. It never shows a key. To change them, the host edits .env. See adapters.md.

4.4. Logging​

Pick the log channel. Ririko posts moderation cases, raid alerts and notices of dashboard changes there. Ririko needs View Channel, Send Messages and Embed Links in the channel.

Ririko writes no message, voice or role logs. The log channel is the only logging setting.

4.5. Audit Log​

The Audit Log lists the changes made to the server's settings, newest first, 25 on a page. Each entry shows who changed what, when, and the old and new value of each field. It also lists changes made with ririko guild:config. It does not show addresses or browsers.

4.6. Change Notices​

When someone changes a setting on the dashboard, Ririko posts a notice in the log channel. The notice says who changed which module and which fields. Text that members typed is shown as plain code and never pings anyone.

5. Command Line​

Every setting on a server page can also be set with the command line. This helps when you manage many servers.

ririko guild:config <server_id>
ririko guild:config <server_id> <key>
ririko guild:config <server_id> <key> <value>
  • With no key, the command lists all keys.
  • With a key, it shows the value.
  • With a key and a value, it sets the value.

The command line uses the same checks as the dashboard. Its changes appear in the Audit Log. See development.md.

6. Owner Console​

Some settings are the same for every server: the economy values, the item shop, the card game rules, the dungeon seasons, the card game items and the achievements. Only bot owners can change them. Bot owners are the users in BOT_OWNER_ID.

  1. Add your Discord user ID to BOT_OWNER_ID in .env and restart the bot.
  2. Add a passkey to your account (section 2.2).
  3. Sign in. A link to the Owner console appears in the header.
  4. Pick a page. Each save needs a passkey check from the last 5 minutes. The page offers Confirm with passkey and save when it needs one.
PageWhat it does
EconomyDaily reward, streak bonus and bank capacity. See economy.md.
Item shopThe items of the /shop command. See economy.md.
Waifu TCGMarket tax, listing time and energy rules. See waifu-tcg.md.
DungeonSeasons, bosses and floor loot. See waifu-tcg.md.
TCG itemsThe items of the card game town shop. See waifu-tcg.md.
AchievementsThe text and rewards of achievements. See waifu-tcg.md.
ServersEvery server that Ririko is in, who invited it, and how many commands each server used in 30 days. Read only.

Other people get a "not found" page when they open the owner console.

7. Host Setup​

The setup wizard (pnpm installer, see SETUP.md) writes these values for you. It also makes the SECRET_VAULT_KEY and checks with Discord that the client secret is right.

The dashboard needs these values in .env:

VariableWhat it does
DISCORD_CLIENT_SECRETThe OAuth2 secret of your Discord application.
DASHBOARD_URLThe public address of the dashboard.
SECRET_VAULT_KEYA key that encrypts sessions. Make one with openssl rand -hex 32. If you change it, everyone is signed out.
BOT_OWNER_IDThe user IDs of the bot owners, separated by commas.
CLIENT_IP_HEADEROptional. The header that holds the real client address, such as cf-connecting-ip behind Cloudflare. Set it only if every request comes through that proxy.

Steps:

  1. Follow section 8.1 of SETUP.md for a source install, or section 2.8 of deployment.md for Docker.
  2. In the Discord Developer Portal, open OAuth2 and add <DASHBOARD_URL>/api/auth/callback as a redirect.
  3. Start the bot first. It creates the database tables the dashboard needs.
  4. Start the dashboard.

Optional: let people invite Ririko from the dashboard. A dashboard invite records who added the bot.

  1. In the Developer Portal, open OAuth2 and add <DASHBOARD_URL>/api/invite/callback as a redirect.
  2. Open Installation and set the Install Link to Custom URL <DASHBOARD_URL>/api/invite.
  3. Optional: open Bot and turn on Requires OAuth2 Code Grant. Do this last, only after steps 1 and 2 work. Without them, every invite fails.

The dashboard uses the __Host- cookie prefix. Browsers accept it only on HTTPS or on localhost. Put the dashboard behind a proxy that sets the X-Forwarded-For header, or set CLIENT_IP_HEADER. Never open it over plain HTTP on a LAN address.

8. Limits​

  • The dashboard allows 30 changes in a burst and then about 1 each second for each person. Sign-in requests are limited to 20 a minute for each address.
  • The dashboard never shows keys or passwords.
  • Giveaways are created in Discord, not on the dashboard.
  • The dashboard changes only what the bot reads. If a setting is not on a page, the bot does not use it.