Skip to main content
Righteous

Letterboxd

Link your Letterboxd account, sync your library, look up films by title, plan a watchparty, and mirror a member's new logs into a channel.

Righteous reads public Letterboxd data: a film's own page, a member's diary, their watchlist, and who else in this server has logged the same thing. Once a member syncs their whole library, the family goes further: full-history lookups, group watchparty planning, and taste-based recommendations. Everything under ,letterboxd and /letterboxd is free. The only paid part is mirroring a member's new logs into a channel automatically, which is its own section below. Righteous never posts to Letterboxd or changes anything there. It only reads public pages.

Run the login command

Syntax

,letterboxd login <username|profile URL>

Example

,letterboxd login moiiisty

Also /letterboxd login. Give it your username, your full profile URL, an @handle, or a URL with no https:// in front: all of those work. Righteous checks the name against Letterboxd before storing it, so a name that doesn't exist is refused rather than saved.

Or set it from your profile instead

Syntax

,profile letterboxd set <username>

Example

,profile letterboxd set moiiisty

This writes the exact same setting ,letterboxd login does, not a second one. Use whichever command you happen to be in.

Check it worked

Run ,letterboxd profile with no argument. If your own stats come back, you're linked.

A private Letterboxd profile can't be read

Linking checks that a public member by that name exists, but it can't tell in advance whether their diary itself is private. If every lookup for a linked account comes back empty, that's almost always why.

To unlink, ,letterboxd reset (aliases unlink, logout) or ,profile letterboxd reset. Neither asks for confirmation, so a re-link is just running login again.

Sync your library

Syntax

,letterboxd update

This is the one thing worth understanding before the rest of this family makes sense. Once you're linked, running ,letterboxd update (alias resync) reads your whole Letterboxd library and watchlist and stores it, so the commands further down (watchparty, who-knows, recommendations, the leaderboards, and the deep version of taste comparisons) can answer instantly instead of only seeing your last few diary entries. It's free, also available as /letterboxd update.

You don't need to run it after every film. It only needs re-running occasionally: recently logged films are usually picked up on their own. If a group command or a taste comparison says you or someone else hasn't synced, running update again is the fix.

It's not instant for a large library, so the reply is a progress message that updates itself in place while it works, followed by the final totals. This isn't a screenshot, it's a text illustration of what the two stages actually contain:

Syncing your Letterboxd library
→ Syncing your library — page 5/18, 500 films so far
→ Syncing your library — page 18/18, 1,204 films so far
→ Syncing your watchlist
Library synced

1,204 films read (890 rated) across 18 pages.
96 watchlist entries stored.

Your whole library is now stored — `whoknows` and friends can answer from it instantly.

If Letterboxd stops responding partway through, the reply says exactly how far it got instead of reading as a clean finish, and nothing already stored is removed: running update again picks up where it left off.

Plan a watchparty

Syntax

,letterboxd watchparty <@member> [@member...]

Example

,letterboxd watchparty @friend1 @friend2

The most useful thing in this whole family: mention between one and four other members, and ,letterboxd watchparty finds films sitting on everyone's watchlist that nobody in the group has logged yet, ranked by Letterboxd's own rating. Also /letterboxd watchparty, which takes up to four members as its own options instead of mentions.

Everyone counted needs a linked Letterboxd account and a synced watchlist (see Sync your library above). At least two people in the group need both for a result; anyone missing either is named in the reply rather than silently dropped from the count.

Here's what that looks like in practice, illustrated as text rather than a screenshot, for a three-person group where one friend hasn't linked a Letterboxd account yet:

Watchparty picks

**1.** Perfect Days (2023) — 4.21/5 · listed by 2/2
**2.** The Worst Person in the World (2021) — 4.02/5 · listed by 1/2
**3.** Aftersun (2022) — 3.98/5 · listed by 2/2

2 of 3 named members contributed a synced watchlist • skipped: friend2 (no linked Letterboxd account)

The footer always names who was skipped and why, rather than just quietly planning around them: "no linked Letterboxd account" and "watchlist not synced" are the two possible reasons.

Look someone up

Every command below takes an optional target. Leave it off and Righteous answers for you. Name a member and it answers for them if they've linked their account, and now you can also give a bare Letterboxd username or a profile link directly, for an account nobody in the server has linked, or someone who isn't in the server at all: ,letterboxd following moiiisty and ,letterboxd following https://letterboxd.com/moiiisty/ both work the same way.

CommandShows
,letterboxd film <title>A film's details and its Letterboxd rating
,letterboxd recent [user]Recently logged films, with star ratings, ♥ likes and rewatch markers
,letterboxd following [user]Who they follow on Letterboxd
,letterboxd profile [user]Films watched, films this year, lists and followers
,letterboxd watchlist [user]Their watchlist
,letterboxd lists [user]Their published lists
,letterboxd favorites [user]Their four favorite films (alias favourites)
,letterboxd random [user]A random pick off their watchlist

Each has a matching leaf under /letterboxd with the same name.

Search for a film

Syntax

,letterboxd film <title|letterboxd link|tmdb link>

Example

,letterboxd film dune part two

Give ,letterboxd film a title and it looks the film up directly, the same way you'd search on Letterboxd itself. A Letterboxd film link (https://letterboxd.com/film/dune-part-two/) or a TMDB link works too, and is worth reaching for if a title search finds the wrong film first. On slash, /letterboxd film's title box suggests matches as you type.

Get recommendations from your taste neighbours

Syntax

,letterboxd rec [user|username|link]

Example

,letterboxd rec @friend

,letterboxd rec looks at everyone else in this server who's synced a library, ranks them by how much their library overlaps with the target's, and pulls highly-rated films from those "taste neighbours" that the target hasn't logged yet. Only works in a server, and both the target and at least one other member need a synced library (see Sync your library) for it to find anything.

Compare taste with someone

Syntax

,letterboxd taste <user|username|link>

Example

,letterboxd taste @friend

If you and the other person have both synced your libraries, ,letterboxd taste compares your whole logged histories: how much overlaps, an agreement score, and a short list of films you both loved. If either side hasn't synced, it falls back to comparing your last 50 or so logged films instead. Either way, the reply itself names which comparison it used, right in its title, so you always know whether you're looking at a full picture or a recent snapshot.

With both libraries synced, a reply reads like this (text, not a screenshot):

moiiisty vs davidehrlich — shared taste (full library)

**Overlap:** 214 films logged by both (out of 1,842 / 967 total).
**Agreement:** 78% (from 190 films rated by both).

**Both loved:**
Perfect Days (2023) — ★★★★½ vs ★★★★★
Aftersun (2022) — ★★★★ vs ★★★★½

Comparing synced libraries, not recent diary activity

If either of you hasn't synced, the title, the body and the footer all say so instead:

moiiisty vs davidehrlich — shared taste (recent activity)

Perfect Days (2023) — ★★★★½ vs ★★★★★
Dune: Part Two (2024) — ★★★★ vs ★★★★

From each member's last 50 logged films, not their whole library — sync both sides (letterboxd update) for a full-library comparison

See who in this server has logged something

Syntax

,letterboxd whoknows <film>

Example

,letterboxd whoknows dune part two

,letterboxd whoknows ranks the members of this server who've logged that film. Only works inside a server, and only counts members who've linked their own account. Anyone who's synced their library (see Sync your library) is checked against their whole history, so this finds a film someone watched years ago, not just recently; anyone who hasn't synced yet is still checked against their recent diary activity, so they can still show up if they logged it lately. The reply says which of the two produced each name, and how many linked members have never synced at all.

On a very large server, checking the not-yet-synced members against Letterboxd itself (rather than the stored library) can leave a few of them unchecked in one run; the reply says so when it happens, and running it again shortly after picks them up.

For a server where three linked members already have the film in a synced library, one more only has it in a recent diary, and two linked members have never synced at all, the reply looks like this (illustrated as text, since nobody has captured a real one of these yet):

Who knows Dune: Part Two (2024)

**1.** @distant_moon — ★★★★½
**2.** @filmfan22 — ★★★★
**3.** @reelwatcher — ★★★½
**4.** @newmember — ♥

3 from synced libraries • 1 from recent diary only • 2 linked members never synced

That footer is the feature: it says plainly which of the ranked names came from a full synced library versus a recent-diary guess, and it counts the linked members it couldn't check against a library at all, so a short list never quietly passes itself off as a complete one.

See the server's leaderboards

Syntax

,letterboxd top

Syntax

,letterboxd obscurity

Both are read straight from synced libraries, so nobody needs to be pinged and nothing is fetched live. ,letterboxd top ranks members by how many films they've logged; ,letterboxd obscurity ranks them by how little their logged films overlap with everyone else's here, for whoever's taste is furthest off the beaten path. obscurity needs at least two members with a synced library to compare against each other; top works with just one, though it's more interesting with more.

Force a re-read

Syntax

,letterboxd refresh

If you just logged something on Letterboxd and it hasn't shown up in recent or whoknows yet, run ,letterboxd refresh to make Righteous re-read your diary right away instead of waiting.

Recent still reads only the last diary window

recent shows roughly the last 50 entries on a member's diary, which is also all Letterboxd's own feed for a profile ever hands back. taste and whoknows read a member's whole synced library once they've run ,letterboxd update; until then, they fall back to that same recent window too.

Mention the bot in a message that includes a Letterboxd link and Righteous replies with a styled card, then removes your original message.

Syntax

@Righteous <letterboxd link>

Example

@Righteous https://letterboxd.com/film/dune-part-two/

Pasting the link on its own does nothing

The bot only responds when it's mentioned. A bare Letterboxd link dropped in chat with no mention gets no reaction from Righteous at all, on purpose. That's the single most common reason this looks broken when it isn't.

A link to a film's own page (letterboxd.com/film/<slug>/) gets that film's card: rating, cast, genres, runtime. A link to a member's diary entry for that film (letterboxd.com/<user>/film/<slug>/) gets the same film card plus that member's own rating, whether they liked it, and their review if they wrote one.

You don't have to mention the bot if you'd rather type a command directly:

Syntax

,letterboxd <letterboxd link>

Example

,letterboxd https://letterboxd.com/film/dune-part-two/

The slash equivalent is /links letterboxd. Both do the same thing the mention path does, on request instead of automatically.

Premium members can skip the mention too

With any premium (boosting counts, and so does being in a Server Premium server), typing righteous <link> on its own, no prefix and no mention, does the same thing.

Server admins can turn the whole thing off:

Syntax

,config social letterboxd [on|off]

Example

,config social letterboxd off

Needs Administrator. Like every other platform this toggle covers, a server that's never touched the setting has it switched on by default.

Not part of /fyp

Reposted films and TikTok/Twitter/Instagram reposts aren't the same feature under the hood, and it shows here: a Letterboxd card never gets added to /fyp's shuffle. There's no video or audio on a film card for it to replay.

Mirror new logs into a channel

Server Premium. Point a channel at a Letterboxd member and Righteous posts their newly logged films and reviews there as they happen.

Syntax

,letterboxdfeed add <#channel> <username> [message]

Example

,letterboxdfeed add #movies davidehrlich

Also /feeds letterboxd add. A server can hold up to 3 Letterboxd feeds, checked roughly every 15 minutes.

A new feed doesn't backfill

Adding a feed starts it from the moment you add it. It doesn't dump that member's existing diary into the channel, so the first thing you'll see is whatever they log after you set it up, not anything older. If nothing has posted yet, that almost always means they simply haven't logged anything new since.

A posted entry is its own card: the member's name and picture at the top, what they did, and their rating, like and review if they left one. As text rather than a screenshot, a reviewed and liked film looks like this:

davidehrlich (@davidehrlich)
Reviewed Perfect Days (2023)

★★★★½ ❤️

A quiet, patient film that trusts you to sit still with it. One of the best of the year.

@davidehrlich · feed

A plain watch with no rating or review posts as just the title, "Watched Perfect Days (2023)", with nothing else in the card. A rewatch adds "🔁 Rewatch" the same way a rating adds stars.

Syntax

,letterboxdfeed list

Syntax

,letterboxdfeed info <#channel> <username>

Example

,letterboxdfeed info #movies davidehrlich

Checking what's configured only needs Manage Server, no Server Premium: list and info stay free to run even if the server's subscription has lapsed, so whoever's asking why a feed went quiet can always see the answer.

Syntax

/feeds panel

Opens a management panel for GitHub, Twitter and Letterboxd feeds together, with a tab for each. It only opens over slash; running ,letterboxdfeed panel on prefix points you at /feeds panel instead of posting anything.

Pausing, resuming or retrying a feed, choosing who its posts appear as, and the reasons a feed can go quiet are the same across all three feed platforms. See Feeds for that shared ground rather than repeating it here.

Honest limits

  • Private Letterboxd accounts can't be read, by any command here, including feeds.
  • The library and social commands need a synced library first. Watchparty, whoknows' whole- history answers, recommendations, both leaderboards, and taste's full-library comparison all need ,letterboxd update run at least once. Anyone who hasn't is named as such in the reply rather than silently left out or counted as a "no."
  • ,letterboxd recent always reads only the last 50 or so diary entries, synced library or not. It's the one lookup here with no whole-history mode.
  • Righteous never writes to Letterboxd. No follows, no likes, no logs on your behalf. Every command here only reads public pages.

Common issues

"No Letterboxd member by that name or link." Either the username is misspelled, or you pasted a link to something other than a profile (a film, a list, a search page). ,letterboxd login says which when it can tell.

A lookup comes back empty for someone who's clearly active on Letterboxd. Their account is almost certainly private. Nothing here can read a private profile.

Mentioning the bot with a link does nothing. Check that the message actually mentions the bot, not just contains the link: pasting a Letterboxd link with no mention is silent by design. Also check ,config social letterboxd hasn't been turned off.

,letterboxd taste says there's no overlap. If either of you hasn't run ,letterboxd update, it's comparing your last 50 or so logged films instead of your whole library, and two real Letterboxd users can still show nothing in common there if neither has rated much recently. If you've both synced and it still says no overlap, you genuinely haven't logged any of the same films yet.

,letterboxd whoknows says nobody has logged a film you know someone here watched. Either they haven't linked their Letterboxd account, or they haven't synced their library and the watch fell outside their recent diary window. Ask them to run ,letterboxd update, or ,letterboxd refresh if they just logged it, and try again.

,letterboxd watchparty says nobody qualifies, or leaves someone out. Everyone counted needs a linked Letterboxd account and a synced watchlist. The reply names whoever's missing one or the other; have them run ,letterboxd update and try again.

,letterboxd rec, top or obscurity come back empty. All three only look at members who've run ,letterboxd update; rec also needs the target specifically to have synced, and obscurity needs at least two synced members to compare against each other. If nobody here has synced yet, that's why.

A feed I just added hasn't posted anything. New feeds don't backfill; see A new feed doesn't backfill above. It'll post the next time that member logs something.

,letterboxdfeed add refuses. A server can hold up to 3 Letterboxd feeds at once. Run ,letterboxdfeed list and remove one before adding another.

Nothing here fixed it. The shared common issues page works the same ground from the symptom end.