Feeds
GitHub, X/Twitter and Letterboxd feeds explained together: the shared panel, posting identity, Server Premium, and the reasons a feed goes quiet.
A feed points a channel at something happening outside Discord and posts about it automatically, unattended, for as long as it's configured: a GitHub repository, a public X/Twitter account, or a Letterboxd member's diary. All three kinds are managed the same way underneath: one shared panel, one shared way of choosing who a post looks like it's from, and one shared set of reasons a feed goes quiet, even though each one mirrors something different and gets its data differently. This page covers what all three share; each platform's own guide covers what's specific to it.
The three kinds
| Kind | Mirrors | Cap per server | How it gets data |
|---|---|---|---|
| GitHub | Pushes, pull requests, issues, stars, releases and more from a repository | 10 | An inbound webhook you register on GitHub's own side. Real time, no polling |
| A public X/Twitter account's new posts | 5 | Polls the account roughly every 2 minutes | |
| Letterboxd | A member's newly logged films and reviews | 3 | Polls their diary roughly every 15 minutes |
Letterboxd's cadence is the slowest of the three on purpose. Twitter can ask "anything new since my last check", so most polls cost almost nothing; Letterboxd's diary gives the bot no such signal, so every single check has to read the whole thing, and 15 minutes is what keeps that polite.
A newly added feed of any kind starts from the moment you add it. None of the three backfills, so the first thing you'll see is whatever happens after setup, never anything from before it. For Twitter and Letterboxd, that also bounds recovery: if a feed goes dark and comes back, catching up is capped at 24 hours of missed activity, so a long gap doesn't dump a week of history into the channel at once. GitHub has nothing to catch up on in the same sense: it was never polling, so there's no backlog to bound. It only ever posts what GitHub's webhook actually delivers.
What it costs
All three need Server Premium to add. What happens when it lapses is where they differ: Twitter and Letterboxd feeds stop posting entirely, while a GitHub feed keeps posting and only loses whatever custom name and picture it was wearing (see Who the posts appear as below). None of this ever deletes a feed's configuration: a lapsed row is paused, not removed, so paying again resumes everything with nothing to set back up.
Checking what's configured is free on every tier, on all three platforms:
| Family | List | Info | Help |
|---|---|---|---|
| GitHub | ,github list | ,github info | the bare ,github command |
,twitterfeed list | ,twitterfeed info | ,twitterfeed help | |
| Letterboxd | ,letterboxdfeed list | ,letterboxdfeed info | ,letterboxdfeed help |
None of those six need Server Premium, only Manage Server, and opening
/feeds panel is free too. This is deliberate: the person whose feed
just went quiet because Server Premium lapsed is exactly the person who needs to read why, and
paywalling the explanation would refuse them.
One panel for all of them
Syntax
/feeds panel
Opens a private card for managing every feed in the server, GitHub, Twitter and Letterboxd
together, with a tab for each. It's ephemeral and visible only to whoever ran it, and it only
opens over slash: the prefix forms (,github panel, ,twitterfeed panel, ,letterboxdfeed panel)
don't fall back to posting publicly, they refuse outright and point you at /feeds panel instead.
Opening the panel is free; acting on a feed from it needs the same Manage Server and Server Premium
the matching command needs.
Twitter and Letterboxd feeds can both be added from the panel: press Add, pick the channel, then fill in the handle or username in the form that opens.
GitHub has no Add button, and never will
Adding a GitHub feed mints a live secret that has to reach you privately: it's sent to your DMs
on prefix, or shown in place in an ephemeral reply on slash. A shared panel message is somewhere
that secret could end up sitting forever, so GitHub feeds are always added with
,github add or /feeds github add instead. The
panel still handles everything else for a GitHub feed that already exists.
Who the posts appear as
Every feed, regardless of platform, posts under one of three identities:
| Mode | What posts look like |
|---|---|
off | Posts as Righteous |
source | Posts under the tracked account's, repository's, or member's own name and picture. This is what a brand-new feed uses if you configure nothing |
custom | Posts under a name and picture you choose |
off is always free. source and custom need Server Premium. The command differs per platform
(,twitterfeed webhook,
,github webhook,
,letterboxdfeed webhook), but the
three modes and what they mean are identical everywhere.
There's also one name, picture and default mode set for the whole server, shared across all
three feed types: whichever feed hasn't chosen a mode of its own uses it. Setting it from any one of
the three commands' webhook default action sets it for all three, not just the one you ran it
from.
A feed that chose for itself always wins
Setting a feed's own mode to off means "never wear an identity" and is respected even when the
server default says otherwise. Only a feed that has never been given a mode of its own follows the
server-wide default.
When Server Premium lapses, a source or custom feed's stored choice is never overwritten, only
the rendering falls back to off. That's why branding comes back on its own the moment Server
Premium is active again: there's nothing to reconfigure, because nothing was ever actually changed.
Three different things are all called webhook here
,webhooks is a separate, general-purpose command for posting your own
messages through a webhook. ,log webhook controls
whether log entries are delivered through a webhook. Neither is what this page means by
"webhook". A feed's posting identity, described above, is a third, unrelated thing, and none of
the three share storage or configuration with each other.
Why a feed goes quiet
A feed can stop posting for four different, independent reasons, checked in this order. Whichever applies first is what's reported, and clearing a lower one never touches a higher one that's still in effect:
- You paused it. Only resuming clears a manual pause: retrying it or renewing Server Premium changes nothing.
- It's marked broken. Only retrying clears this. A followed account or member that goes private is detected immediately and parked as a fact about the account; one that's deleted or simply unreachable takes about an hour of repeated failures before the bot gives up and parks it. GitHub has nothing to retry here: it isn't polled, so this reason never applies to it.
- Server Premium has lapsed. This is checked live, every single time, never stored: renewing clears it instantly, with nothing to retry. Twitter and Letterboxd stop posting entirely while it's lapsed; GitHub keeps posting regardless and only loses its custom name and picture (see What it costs above).
- Its channel was deleted. Parked, never removed outright. A GitHub feed can be repointed at a
new channel with
,github channel, keeping its existing webhook and everything else about its setup. Twitter and Letterboxd have no repoint command, so the fix there is removing the feed and adding a new one pointed at the right channel.
None of the four ever delete a feed's row, only pause it. list (the free command from the table
above) shows every feed's status at a glance; info shows one feed's full setup
and exactly which of these reasons currently applies to it, including when more than one does at
once. Both stay free on every tier, on every platform.
Honest limits
- A feed lives in exactly one channel. Moving a Twitter or Letterboxd feed to a different channel means removing it and adding it again there; only GitHub can be repointed without losing its setup, because only GitHub keeps a persistent webhook and secret worth preserving.
- None of the three ever post a backlog, even recovering from a long outage. Twitter and Letterboxd cap catch-up at 24 hours of history; GitHub was never polling, so there's nothing to catch up on at all.
- This is a different feature from pasting a link in chat. Twitter and Letterboxd links typed
into a message get their own card through a completely separate setting,
,config social. Turning that off doesn't pause a feed, and a feed keeps posting whether it's on or off.
Common issues
A feed I just added posted a pile of old activity. It shouldn't. A new feed starts from the
moment it's added; if you're seeing history, check info for whether the feed shows as broken and
is now catching up within its 24-hour cap rather than genuinely dumping the past.
A feed stopped posting and I don't know why. Run info on it (see the table in
What it costs for the exact command per platform). It names which of the
four reasons currently applies, including when more than one does.
Server Premium lapsed and my GitHub feed kept posting, but my Twitter/Letterboxd feed didn't. Is that a bug? No, that's the intended difference: see What it costs. GitHub delivery isn't gated at all; only its identity is.
I can't find an Add button for GitHub feeds on the panel. There isn't one, on purpose: see the
callout in One panel for all of them. Use
,github add or /feeds github add.
,github add said it couldn't DM me the secret. Your DMs are closed to the bot, and the feed
was deleted on the spot rather than left sitting half-configured with a secret nobody received: open
your DMs from server members and run it again, or use /feeds github add, whose reply shows the
secret in place instead of DMing it.
,github add refuses a repository. A server can hold up to 10 GitHub feeds at once: run
,github list and remove one you no longer need
before adding another. The same applies to Twitter (5) and Letterboxd (3), just with a lower cap.
,twitterfeed panel, ,github panel or ,letterboxdfeed panel doesn't open anything. These
only work over slash; use /feeds panel instead.
Nothing here fixed it. The shared common issues page works the same ground from the symptom end.