// 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.
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
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!).
example<<recent mania
text<<recent [std|taiko|catch|mania] [server=osu|r3dcatch]
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.
.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.
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.
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]
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.
example<<profile @friend
text<<profile [@user] [mode]
Puts two R3D render profiles side by side. Omit the second user to compare someone against yourself.
example<<compare @a @b
text<<compare @user1 [@user2] [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.
example<<cc 4172054 mrekk
text<<c [beatmap-id|url] [username|id|@user] · mode overrides: <<cs / <<cc / <<ct / <<cm (slash: /compare-on-map [player] [mode])
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.
example<<osuprofile mrekk std
text<<osuprofile [player] [mode] [server=osu|r3dcatch]
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.
example<<osutop mrekk std
text<<osutop [player] [mode] [server=osu|r3dcatch]
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.
example<<rb mrekk std
text<<rb [player] [mode] · mode shortcuts: <<rbc / <<rbs / <<rbt / <<rbm (slash: /recentbest [player] [mode] [server]) [server=osu|r3dcatch]
Head-to-head of two osu! accounts — rank, pp, accuracy, playcount.
example<<osucompare mrekk vaxei std
text<<osucompare <a> <b> [c] [d] [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).
auto to follow your osu! profile (omit to view your current default).example<<defaultmode mania
text<<defaultmode [mode|auto]
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.
example<<wrapped
text<<wrapped [@user]
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.
example<<versus grid mrekk vaxei
text<<versus grid [player_a] [player_b] [map]
Draws multiple players' cursors and hits on a single osu!std playfield. Heavy and still in testing — admin only.
example<<versus overlay 1234567
text<<versus overlay [map] [breakdown]
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.
example<<autorender recent on
text<<autorender <recent|multi> <on|off> [#channel] [dm]
Point me at an osu! multiplayer room and I'll render every map as it finishes and post it. Runs until you /multistop.
example<<multi https://osu.ppy.sh/multiplayer/rooms/123456
text<<multi <room>
Stops a /multi watch. Give a room to stop just that one; leave it blank to stop all of your watches.
example<<multistop
text<<multistop [room]
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 archive to register.example<<setskin mania (attach myskin.osk)
text<<setskin [mode] (attach .osk)
Lists the skins you've uploaded and which one is active for each mode.
example<<myskin
text<<myskin
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.
example<<clearskin mania
text<<clearskin [mode]
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
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
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.
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.
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]
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: 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>]
Removes one ruleset tracker from a channel, or every tracker in that channel when RuleSet is omitted. Requires **Manage Server** or Administrator.
example<<untrack #scores RuleSet:Catch
text<<untrack #scores [RuleSet:Catch]
Shows every enabled channel, ruleset, and rank range configured for this server. Requires **Manage Server** or Administrator.
example<<tracklist
text<<tracklist
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**).
#renders) instead of inline; the drop channel keeps just a reaction. Omit the channel to clear..osr drops on or off server-wide. Off = renders happen only via /render.unblock.example<<server output #renders
text<<server <here|stop|list|output|role|auto|block|unblock>
With no argument, lists every command grouped by category. Pass a command name for a detailed breakdown — usage, options, and an example.
recent, versus grid). Omit for the full list.example<<help versus grid
text<<help