WhoKnows and crowns

Rank your server by artist, album and track, hand out crowns, and post a recurring listening recap.

WhoKnows turns your server into a leaderboard for one artist, album or track at a time. Crowns are the persistent version of that — the top listener of an artist holds it until somebody out-plays them. Both read the libraries Righteous already stores, so they answer instantly and cost no waiting.

Everyone who wants to appear needs a linked account. See Setup and now playing.

See who else here listens to something

,lastfm wk <artist> ranks everyone in this server by their plays of that artist, with your own rank called out underneath. Two siblings narrow it:

CommandTakesSlash
,lastfm wk <artist>An artist name/lastfm wk artist
,lastfm wka <album> - <artist>An album, then the artist/lastfm wk album
,lastfm wkt <track> - <artist>A track, then the artist/lastfm wk track

Leave the argument off entirely and Righteous uses whatever you're playing right now. The slash form takes the two halves as separate boxes, so you don't need the - at all there.

Type a name that doesn't resolve and you get a picker of close matches rather than an error, so a misspelling costs one extra click instead of a retry.

The ranking is from stored libraries, not a live lookup

Righteous doesn't ask Last.fm for each member's play count when you run this — it reads what it already has. That's what makes a large server answer in one round trip. It also means somebody whose library hasn't refreshed lately shows a slightly old number. Any member can fix their own with ,lastfm update.

Free callers see the first page of the list. Boosting Premium or Server Premium in this server pages through all of it.

Widen it past this server

The global versions rank everyone Righteous knows about, not just this server: ,lastfm globalwhoknows (aliased gwk), ,lastfm gwka and ,lastfm gwkt. On slash they're /lastfm gwk artist, /lastfm gwk album and /lastfm gwk track.

These are read-only. They never claim or move a crown, and they aren't filtered by this server's blacklist — the list isn't about this server's membership, so a per-server hide would have no consistent meaning there.

Free callers see the top of the list. Boosting Premium or Server Premium shows the rest.

Claim a crown

A crown belongs to whoever has the most plays of an artist in this server. There are no album or track crowns.

Crowns are claimed as a side effect of running ,lastfm wk. When the list comes back, the top listener takes the crown if nobody holds it, or takes it from the current holder on strictly more plays. A tie claims nothing and leaves the existing holder alone.

To look at them:

  • ,lastfm crown shows your crowns. Add a mention for somebody else's.
  • ,lastfm crown lb shows the server leaderboard by crown count. /lastfm crown view is the slash form.

Two commands seed crowns in bulk instead of one artist at a time:

CommandScopeNeeds
,lastfm crownindexEvery artist in the server at onceManage Server and Server Premium
,lastfm update crownsJust your own claims, from your own librarySelf Premium

Both honour the same rules a normal claim does, including the minimum below. ,lastfm crown index works as a spelling of the first one and enforces the same requirements.

Set a minimum before a crown can change hands

By default a crown moves on one play more than the holder, which means a single curious listen can take it. Raise the bar with ,lastfm server crownminplays <number>. That needs Manage Server and Server Premium.

Below the threshold nothing happens at all. No claim, no transfer, and an existing holder keeps what they have rather than losing it to somebody lower down. Setting it back to 0 restores the default behaviour.

It reverts when Server Premium lapses

The minimum goes back to 0 the moment the subscription ends, so a stored paid setting never keeps enforcing itself for free. Your number is still there if you resubscribe.

Reset every crown

,lastfm server resetcrowns confirm deletes every crown in the server. It needs Manage Server and Server Premium, and it needs the word confirm because there is no undo. The same action is a button on the Last.fm page of the config panel.

Hide someone from the leaderboards

,lastfm blacklist add <user> removes a member from this server's Last.fm leaderboards. remove puts them back and list shows who's on it. It needs Manage Server, and it's free — the one server-side Last.fm control that isn't Server Premium.

A blacklisted member disappears from WhoKnows, the crown leaderboard, ,lastfm playing and the bulk crown index. They can't hold or win a crown, and any crown they currently hold is handed to the next eligible listener straight away.

They can still run every command themselves. This hides them from other people's lists rather than locking them out.

Compare taste with one person

,lastfm taste <person> [range] puts your library next to somebody else's and shows the overlap. It's Boosting Premium.

Where both of you have a synced scrobble history, it also marks who found each shared artist first and by how long. That annotation is skipped rather than guessed when either side hasn't synced, so the comparison itself never changes shape. Syncing is covered in History, sync and export.

See what the server is playing right now

,lastfm playing lists everyone in the server who's listening to something at this moment. Boosting Premium.

Post a listening recap on a schedule

The digest posts what the server has been listening to, on a schedule, with movement against the previous post. Configure it with ,lastfm server digest, which needs Manage Server.

The command is free. Every server can run a monthly digest. What Server Premium buys is frequency and count.

FreeServer Premium
Cadencemonthlymonthly, weekly or daily
How manyOneUp to three per server

The grammar is ,lastfm server digest [#channel [cadence]] <sub>. The subcommands:

SubDoes
bare, or list / show / statusShows the current setup and when the next post is due
add [#channel] [cadence]Creates another digest
channel <#channel>Creates or moves the main one
cadence <monthly|weekly|daily>Changes how often a digest posts
content <recap|artists|albums|tracks>All three charts, or just one
scope <period|alltime>The window the cadence implies, or server totals
on / offPauses a digest without deleting it
delete / delete allRemoves one, or every one

Name the channel by mention or ID, never by name, and put it before the subcommand. A channel can host one digest per cadence, so #music can run a weekly and a daily at the same time — both count against the server's total.

The digest reads Last.fm directly rather than the synced scrobble store, so it covers everyone who linked an account, not only members with premium. Blacklisted members are left out.

Lapsing doesn't delete anything

If Server Premium ends while three digests are configured, the extras go dormant instead of being deleted, and the surviving one is the oldest monthly digest you have. Everything resumes on its own the moment the server is covered again, with nothing to reconfigure.

Slash covers the same ground at /lastfm server digest, and the Last.fm page of the config panel has a channel picker plus a Digest Options button for content and scope.

Common issues

Somebody's plays look wrong. WhoKnows reads stored libraries. Ask them to run ,lastfm update, or check the background-refresh table in Setup and now playing.

Somebody is missing from the list entirely. Either they never ran ,lastfm set, or they're on the blacklist. Check with ,lastfm blacklist list.

The list stops after one page. That's the free tier. Boosting Premium or Server Premium opens the rest.

A crown didn't move even though the top listener changed. Check ,lastfm server crownminplays. Below the minimum, nothing is claimed and the current holder keeps it. A tie also claims nothing.

The digest hasn't posted. It posts on the first sweep after its period boundary rather than at the exact stroke of it, so a short delay is normal. Run ,lastfm server digest on its own to see the next scheduled run, whether the row is paused, and whether it went dormant after a lapse.