// commands

Bot commands

Everything the R3DRenderer Discord bot can do. The fastest path is to just drop a .osr replay in any channel the bot can see. It renders automatically. Search or filter below; in Discord, /help lists these and /help <command> shows detail for one. Every command also works as a text command: type <<name with the same args in any channel the bot's in, e.g. <<recent, <<rp mrekk, <<c.

Status

/status

A live snapshot of the render farm: how long the bot has been up, how many renders are queued or in flight, the lifetime render count, and the GPU pool (our local farm plus any online contributor GPUs). Quick health check before you queue.

example<<status

text<<status

Render

/recent [user] [ruleset] [server]

Grabs your latest osu! play and renders it into a video using your linked skin and settings. Works in DMs too. @mention a linked user to render their recent play instead of yours. Choose server:r3dcatch to show a Sunrise catch score card (private replay rendering is a later step); without a server argument the bot uses your remembered source (initially R3DCatch when your accounts are linked, otherwise osu!).

  • user: A linked Discord @user whose recent play to render (omit for your own; they must be linked).
  • ruleset: std / taiko / catch / mania — which mode's recent play (omit to auto-pick your most recent across all modes).
  • server: osu or r3dcatch; an explicit choice becomes your remembered score source.

example<<recent mania

text<<recent [std|taiko|catch|mania] [server=osu|r3dcatch]

/render <replay>

Upload an osu! replay file and get a rendered video back. You can also just drop a .osr into any channel I can see and I'll render it automatically — drop a .osk alongside it to use that skin.

  • replay: The .osr replay file to render (max 5 MB).

example<<render (attach my-play.osr)

text<<render (attach one or more .osr)

Or just drop a .osr file in any channel I can see — I'll render it automatically.

Profile & stats

/recentplay [username] [user] [mode] [index] [passes] [server]

Shows a recent play, map, mods, score, accuracy, PP and map difficulty without starting a render. Use your linked account, a linked @user, or an osu! username. <<rp and <<rpc/<<rps/<<rpt/<<rpm show passing plays. <<rc/<<rs/<<rt/<<rm show literal recent attempts, including fails; add pass=true or use <<rcp/<<rsp/<<rtp/<<rmp for passes only. Append a one-based offset to any shortcut (<<rc2, <<rp3) to pick the Nth play, up to 50. /recentplay exposes the same mode, index, and passes controls and works in servers, DMs, and user installs. Catch score cards include locally calculated trig0n rework PP. Choose server:r3dcatch for Sunrise; omitting it uses your remembered source, seeded from your R3DCatch link.

  • username: An osu! username (omit for your linked account).
  • user: A linked Discord @user (omit for your own account).
  • mode: std / taiko / catch / mania (omit to auto-pick the newest play across all modes).
  • index: 1-based recent-play position from 1–50; 1 is the latest.
  • passes: True shows passes only; false includes failed attempts. If omitted, bare recentplay is pass-only while a mode selection follows rc/rs/rt/rm and includes fails.
  • server: osu or r3dcatch; an explicit choice becomes your remembered score source.

example<<rc2 mrekk pass=true

text<<rp [username|@user] (rpc/rps/rpt/rpm=passes; rc/rs/rt/rm=include fails; rcp/rsp/rtp/rmp or pass=true=passes; append N for the Nth result) [server=osu|r3dcatch]

/profile [user]

Renderer-only R3D activity: total renders, Most rendered rank, renders by mode, top skins, and top players. Skill stats belong to the replay owners and are intentionally not shown. Defaults to you; @mention someone for their render profile.

  • user: Whose render profile to show (omit for your own).

example<<profile @friend

text<<profile [@user] [mode]

/compare <user1> [user2]

Puts two R3D render profiles side by side. Omit the second user to compare someone against yourself.

  • user1: First player.
  • user2: Second player (omit to compare against yourself).

example<<compare @a @b

text<<compare @user1 [@user2] [mode]

/compare-on-map [player] [mode]

Pass a beatmap ID/link directly, or omit it to scan recent channel context for an osu! beatmap or score link. Then it shows the selected player's highest-PP score in your saved default mode. If you have no default, it uses the map's native mode. Use <<cs, <<cc, <<ct, or <<cm to force standard, catch, taiko, or mania. Reply to a score card to target that card's map directly. Catch scores include their locally calculated trig0n rework PP line. The slash command works in servers, DMs, and user installs.

  • player: osu! username, id, or linked @mention; omit for yourself.
  • mode: Optional mode override; omit to use your saved default.

example<<cc 4172054 mrekk

text<<c [beatmap-id|url] [username|id|@user] · mode overrides: <<cs / <<cc / <<ct / <<cm (slash: /compare-on-map [player] [mode])

/osuprofile [player] [mode] [server]

Pulls a profile from osu! or R3DCatch — rank, pp, accuracy, and top plays. Use your linked account, an @mention of a linked user, or a raw osu! username/id. Catch profiles also show the locally calculated trig0n rework total, top play, top-100 average, and rework global rank when available. R3DCatch is a catch-only source; without server the bot uses your remembered source, seeded from your account link.

  • player: osu! username, id, or @mention of a linked Discord user (omit to use your linked account).
  • mode: std / taiko / ctb / mania (omit for the player's default).
  • server: osu or r3dcatch; an explicit choice becomes your remembered score source.

example<<osuprofile mrekk std

text<<osuprofile [player] [mode] [server=osu|r3dcatch]

/osutop [player] [mode] [server]

Pulls a player's top plays straight from osu! as an image card you can page through with ◀ ▶. Use your linked account, an @mention of a linked user, or a raw osu! username/id. Catch rows include locally calculated trig0n rework PP. R3DCatch returns its trig0n PP directly. Omit server to use your remembered source, seeded from your R3DCatch link.

  • player: osu! username, id, or @mention of a linked Discord user (omit to use your linked account).
  • mode: std / taiko / ctb / mania (omit for the player's default).
  • server: osu or r3dcatch; an explicit choice becomes your remembered score source.

example<<osutop mrekk std

text<<osutop [player] [mode] [server=osu|r3dcatch]

/recentbest [player] [mode] [server]

Pulls a player's pp-ranked best plays, keeps each play's top-play rank, then shows the newest ones first in a linked paged card. Use your linked account, an @mention of a linked user, or a raw osu! username/id. <<rb is the shortcut; <<rbc/<<rbs/<<rbt/<<rbm force catch/std/taiko/mania. Catch rows include locally calculated trig0n rework PP. Choose R3DCatch for its private catch best list; omitting server uses your remembered source, seeded from your R3DCatch link.

  • player: osu! username, id, or @mention of a linked Discord user (omit to use your linked account).
  • mode: std / taiko / ctb / mania (omit for the player's default).
  • server: osu or r3dcatch; an explicit choice becomes your remembered score source.

example<<rb mrekk std

text<<rb [player] [mode] · mode shortcuts: <<rbc / <<rbs / <<rbt / <<rbm (slash: /recentbest [player] [mode] [server]) [server=osu|r3dcatch]

/osucompare <username_a> <username_b> [mode]

Head-to-head of two osu! accounts — rank, pp, accuracy, playcount.

  • username_a: First osu! username or id.
  • username_b: Second osu! username or id.
  • mode: std / taiko / ctb / mania (omit for the first player's default).

example<<osucompare mrekk vaxei std

text<<osucompare <a> <b> [c] [d] [mode]

/defaultmode [mode]

Sets the mode /osuprofile, /osutop, and /osucompare use when you don't pass one. Omit the mode to see your current setting; auto follows your osu! profile's own mode. Needs a linked osu! account (the setting lives on your osu! link).

  • mode: std / taiko / ctb / mania, or auto to follow your osu! profile (omit to view your current default).

example<<defaultmode mania

text<<defaultmode [mode|auto]

/wrapped [user] Admin

A Wrapped-style recap of your renders on R3DRenderer. Admin-only for now while the web Rewind is built out. Defaults to you; @mention someone for theirs.

  • user: Whose Wrapped to show (omit for your own).

example<<wrapped

text<<wrapped [@user]

Versus

/versus grid [player_a] [player_b] [map] Supporter

Two players → side-by-side. Just a map → pick a roster (2 side-by-side, 3-8 grid). Neither → a menu of maps that have shared-speed renders. Built from our render database, so there's no re-rendering.

  • player_a: First player — start typing an osu! username and pick from the list.
  • player_b: Second player — same.
  • map: Optional — paste an osu! beatmap or R3D render link/id; omit to pick from a menu.

example<<versus grid mrekk vaxei

text<<versus grid [player_a] [player_b] [map]

/versus overlay [map] [breakdown] Admin

Draws multiple players' cursors and hits on a single osu!std playfield. Heavy and still in testing — admin only.

  • map: beatmap link / id / name (optional — omit for the map menu).
  • breakdown: slow-mo the hardest sections (silent, adds render time).

example<<versus overlay 1234567

text<<versus overlay [map] [breakdown]

Auto-render & multiplayer

/autorender <recent|multi> <on|off> [channel] [dm] Supporter

Set-and-forget rendering. recent renders each new play you set; multi renders every finished map in MP lobbies you watch. Posts to a channel or your DMs.

  • source: recent = your plays; multi = MP lobby maps.
  • state: on or off.
  • channel: Post auto-renders here (default: the current channel).
  • dm: Send to your DMs instead.

example<<autorender recent on

text<<autorender <recent|multi> <on|off> [#channel] [dm]

/multi <room> Supporter

Point me at an osu! multiplayer room and I'll render every map as it finishes and post it. Runs until you /multistop.

  • room: osu! multiplayer room link or id.

example<<multi https://osu.ppy.sh/multiplayer/rooms/123456

text<<multi <room>

/multistop [room]

Stops a /multi watch. Give a room to stop just that one; leave it blank to stop all of your watches.

  • room: Room link/id, or leave blank to stop all.

example<<multistop

text<<multistop [room]

Skins

/setskin <osk> [mode]

Registers a skin to your library. With no mode it's used for all four modes; pick a mode to pin it there only. Renders fall back to the bundled default if you haven't set one.

  • osk: A .osk archive to register.
  • mode: std / taiko / ctb / mania — pin this skin to one mode only (omit to use it for all four).

example<<setskin mania (attach myskin.osk)

text<<setskin [mode] (attach .osk)

/myskin

Lists the skins you've uploaded and which one is active for each mode.

example<<myskin

text<<myskin

/clearskin [mode]

Un-pins a skin so those renders use the bundled default again. Give a mode to clear just that one, or omit to clear all four. Your uploaded skins stay in your library.

  • mode: std / taiko / ctb / mania — clear just this mode (omit to clear all four).

example<<clearskin mania

text<<clearskin [mode]

Account

/link

Connects your Discord to your osu! account so renders use your saved web preset, skin, and supporter tier. Replies privately with a one-time link that expires in 10 minutes.

example<<link

text<<link

/unlink

Removes your Discord ↔ osu! link (e.g. you linked the wrong account). Renders fall back to defaults until you link again.

example<<unlink

text<<unlink

/support

Shows whether you're currently a supporter (and until when), the perks supporting unlocks, and how to chip in on Ko-fi. Replies privately.

example<<support

text<<support

Most commands also work as text in a server channel where the bot is active: type <<name with the same args (e.g. <<recent mania, <<osuprofile mrekk, <<server list). In DMs, use the slash commands. <<help <command> explains any one.

Server admin

/track <channel> <ruleset> <rank_low> <rank_high> [trig0n] [min_pp] [min_pp_basis] [depth] [country] Admin

Creates or updates one ruleset tracker for this server. Multiple channels and rulesets can be configured. Set trig0n for a separate osu!catch rework-pp tracker whose TopRankRange selects players from the union of the trig0n rework and live osu! leaderboards. Its score card shows the player's rework-top-play position and the signed PP difference from Live; Live catch tracker cards also include the trig0n rework comparison line. A trig0n tracker automatically tapers how many of each player's top rework plays it posts, by that player's rework rank: top-200 get 100 plays, then -20 every 200 ranks (201-400 -> 80, 401-600 -> 60, 601-800 -> 40, 801-1000 and below -> 20). You do NOT set this per band — one trig0n tracker covering the whole range is enough. Narrow which scores post with the optional eligibility/source options: **min_pp** is a hard pp floor (0 = no floor), **min_pp_basis** chooses which pp that floor compares against (Rework = trig0n's recomputed pp, the default on a trig0n tracker; Live = official osu! pp, the only option on a live tracker), **depth** posts a play only when it sits within the player's top-N personal bests (omit = no cap; on a trig0n tracker the automatic taper already caps depth, so Depth only tightens it further), and **country** restricts the tracked player set to one 2-letter ISO code (omit = global). To watch an explicit, hand-picked list of players instead of a rank range, use **/trackplayer** — it builds a manual tracker in the channel (don't also point /track at the same channel+ruleset; that makes it rank-based). The command upserts by (server, channel, ruleset), so re-running it only changes the options you pass this time — every omitted option (including trig0n, the rank range, min_pp, min_pp_basis, depth and country) keeps its stored value. A brand-new tracker defaults to Live, no pp floor, no depth cap, and the global leaderboard; a new trig0n tracker's floor basis defaults to Rework. Requires **Manage Server** or Administrator.

  • channel: A text channel where matching scores will be posted.
  • ruleset: Catch / STD / Mania / Taiko.
  • rank_low: Lowest leaderboard rank to include (minimum 1).
  • rank_high: Highest rank (live maximum 100000; trig0n maximum 1000).
  • trig0n: Use rework+live player ranks and trig0n pp (Catch only).
  • min_pp: Minimum pp a play must reach to post (default 0 = none).
  • min_pp_basis: Floor compares Rework or Live pp (trig0n default: Rework).
  • depth: Only post a play within the player's top-N PBs (default none).
  • country: Restrict to a 2-letter country code, e.g. NZ (default global).

example<<track #scores RuleSet:Catch TopRankRange:1-1000 MinPP:500 trig0n=True

text<<track #scores RuleSet:Catch TopRankRange:1-1000 [MinPP:500] [MinPPBasis:Rework] [Depth:100] [Country:NZ] [trig0n=True]

/trackplayer add | remove | list Admin

Builds a **manual** score tracker: instead of a rank range, it posts the new top plays of exactly the players you name. The first /trackplayer add in a channel+ruleset creates the manual tracker automatically; later adds grow its watchlist. add resolves an osu! username or numeric id to a stable user id and (optionally) sets a pp floor / top-N PB depth cap that apply to every tracked player — the same eligibility controls as /track. remove drops one player (the now-empty tracker stays until you /untrack it). list shows the current watchlist and its size. If a channel+ruleset already has a rank-based /track tracker, /trackplayer refuses it — /untrack it first. Requires **Manage Server** or Administrator.

  • add #channel RuleSet:X Player:Y: Add osu! player Y (username or id) to the channel's watchlist.
  • remove #channel RuleSet:X Player:Y: Remove player Y from the watchlist.
  • list #channel RuleSet:X: Show the channel's tracked players for that ruleset.
  • MinPP / Depth: Optional on add: pp floor and top-N PB depth cap for the whole manual tracker.

example<<trackplayer add #scores RuleSet:Catch Player:mrekk

text<<trackplayer add|remove|list #channel RuleSet:Catch [Player:<username|id>]

/untrack <channel> [ruleset] Admin

Removes one ruleset tracker from a channel, or every tracker in that channel when RuleSet is omitted. Requires **Manage Server** or Administrator.

  • #channel: The configured server text channel.
  • RuleSet: Optional Catch / STD / Mania / Taiko filter.

example<<untrack #scores RuleSet:Catch

text<<untrack #scores [RuleSet:Catch]

/tracklist Admin

Shows every enabled channel, ruleset, and rank range configured for this server. Requires **Manage Server** or Administrator.

example<<tracklist

text<<tracklist

/server here | stop | list | output | role | auto | block | unblock Admin

I watch every channel I can see for .osr drops and render them automatically. These commands tune that per server. Server-admin only (needs **Manage Channels**).

  • here: Un-mute the bot in this channel.
  • stop: Mute the bot in this channel.
  • list: Show this server's render settings.
  • output [channel]: Post auto-drop renders in one channel (e.g. #renders) instead of inline; the drop channel keeps just a reaction. Omit the channel to clear.
  • role [role]: Only let members with a role trigger renders (anyone with **Manage Server** always can). Omit the role to open it up.
  • auto <on/off>: Turn auto-watching of .osr drops on or off server-wide. Off = renders happen only via /render.
  • block <user>: Stop a specific member triggering renders here (everyone else still can). Outranks the render role. Undo with unblock.
  • unblock <user>: Let a previously-blocked member trigger renders again.

example<<server output #renders

text<<server <here|stop|list|output|role|auto|block|unblock>

Help

/help [command]

With no argument, lists every command grouped by category. Pass a command name for a detailed breakdown — usage, options, and an example.

  • command: A command name to get detailed help for (e.g. recent, versus grid). Omit for the full list.

example<<help versus grid

text<<help