Skip to main content
Righteous

TikTok Feeds

Mirror a TikTok account's new posts into a channel, with the video itself uploaded so people can watch without leaving Discord. Setup, styles, and the three reasons a feed can go quiet.

TikTok Feeds mirrors a public TikTok account's new posts into a channel, checking roughly every 5 minutes. By default the video itself is uploaded into the channel, not just a link, so people watch it without ever leaving Discord. Changing anything needs Manage Server and Server Premium, but reading is free: if your Server Premium has lapsed, you can still see exactly what's configured and why a channel has gone quiet. The command is ,tiktokfeed (also ,ttfeed or ,tiktokfeeds), and the slash form is /feeds tiktok.

Add a feed

Syntax

,tiktokfeed add <#channel> <@handle> [message]

Example

,tiktokfeed add #clips @nasa

Give it the channel and the handle. You can type the handle with or without the @, or paste a link to the profile instead. A server can hold up to 3 feeds, lower than YouTube's 5: checking a TikTok account costs more than checking a YouTube channel, so the ceiling is set to reflect that. If your server is already at the limit when you try to add another, remove one first; a server that was already over the limit before it dropped keeps every feed it has.

A new feed starts from now. It doesn't dump the account's history into the channel, so the first thing you'll see posted is whatever that account posts after you added it, not anything older.

Only public accounts

TikTok Feeds can't read a private account's posts, so adding one is refused by name up front rather than silently failing later.

To remove a feed:

Syntax

,tiktokfeed remove <#channel> <@handle>

Example

,tiktokfeed remove #clips @nasa

Check what's configured, free of charge

Syntax

,tiktokfeed list

Syntax

,tiktokfeed info <#channel> <@handle>

Example

,tiktokfeed info #clips @nasa

list shows every feed in the server; info shows one feed's full setup and current status. Neither needs Server Premium; only Manage Server to view your own server's configuration. This is deliberate: an admin whose channel has gone quiet because Server Premium lapsed is exactly the person who most needs to see why, and paywalling the explanation would refuse them.

Give a feed a nickname

Syntax

,tiktokfeed label <#channel> <@handle> <text|off>

Example

,tiktokfeed label #clips @nasa Space Clips

A short, display-only nickname, useful once a channel has more than one feed and the handle alone stops being a helpful label.

Choose how posts look

Syntax

,tiktokfeed style <#channel> <@handle> <card|link|compact>

Example

,tiktokfeed style #clips @nasa compact
StyleWhat you get
cardThe video itself, uploaded, plus a card with the author, caption and stats. This is the default
compactA small preview with a thumbnail. No upload, for a busy channel or a server that would rather not spend the bandwidth
linkJust the url, nothing else

Unlike YouTube Feeds, there's no default value here to reset to: card already is the one sensible default for TikTok, since a bare TikTok link unfurls poorly in Discord and would make people leave the channel to watch it anyway.

The default style needs Attach Files

Righteous needs the Attach Files permission in the channel to upload video for the card style. It doesn't need that permission for compact or link, since neither of those attaches anything.

A video too big for the channel falls back to a link, and says why

If a post's video is larger than the server's upload limit, card falls back to posting a link instead of failing to attach, and the post says that's what happened rather than silently arriving looking different. Boosting the server raises that upload limit.

Add a trailing message, and a ping

Syntax

,tiktokfeed message <#channel> <@handle> <text|off> [@role] [@everyone]

Example

,tiktokfeed message #clips @nasa New post: @Staff

This sets text that gets posted along with every one of that feed's posts, and it's also the only place you configure a ping. Mentioning a role, or typing @everyone, needs Mention Everyone on top of Manage Server and Server Premium. Running this command replaces the whole message and ping setup at once: run it again with plain text and no mention, and any ping you had configured is cleared along with it. TikTok Feeds announces every post it mirrors, with no per-post filter to turn some of them off.

The mention has to actually be in the message text

Discord only sends a notification from a mention that is genuinely part of the message content, so a role picked without a real @role mention typed into the text pings nobody: it renders, it looks configured, and it never fires. Make sure the @role or @everyone is written directly into the message you give this command.

Post under a different name and picture

A new feed's posts arrive as Righteous. You can change that per feed, so they post under the account's own name and picture, or under a name you pick yourself.

Syntax

,tiktokfeed webhook <#channel> <@handle> <off|source|custom|name|avatar> [value]

Example

,tiktokfeed webhook #clips @nasa source

There are three modes:

ModeWhat posts look like
offPosts as Righteous itself
sourcePosts as the tracked account, using its own display name and profile picture
customPosts as a name and picture you set yourself

For custom, set the two pieces separately:

Syntax

,tiktokfeed webhook <#channel> <@handle> name <text>

Example

,tiktokfeed webhook #clips @nasa name Space Clips

Syntax

,tiktokfeed webhook <#channel> <@handle> avatar <url>

Example

,tiktokfeed webhook #clips @nasa avatar https://example.com/icon.png

You can also set a name, a picture, and a default mode once for the whole server, which every feed that has not chosen for itself will use. This is shared across GitHub, Twitter, Letterboxd and YouTube feeds too, so setting it from any of those commands sets it for all of them:

Syntax

,tiktokfeed webhook default <name|avatar|mode> [value]

Example

,tiktokfeed webhook default mode source

A feed that chose for itself always wins

Setting off on a feed 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.

Turning it off stays free

Switching a feed back to off works even if your Server Premium has lapsed, and so does reading what is configured. Only source and custom, and setting a name or picture, need Server Premium. A feed whose Server Premium has lapsed keeps its setting and simply posts as Righteous until you renew, and info shows you that is what is happening rather than showing a name your posts are not actually wearing.

Righteous needs Manage Webhooks in the channel

Posting under a different name uses a webhook, which Righteous creates in the channel the first time it needs one. Without the Manage Webhooks permission it cannot create one, so posts arrive as Righteous instead. Nothing is ever lost this way: the post still goes out, and ,tiktokfeed info tells you exactly why it is not wearing the identity you set. Grant the permission and the next post picks it up on its own.

Why a feed goes quiet

A feed can stop posting for a few different reasons, and the fix is different for each one. None of them ever deletes a feed; they only pause it. Deleting the channel a feed posts to parks it the same way rather than destroying it.

ReasonFix
You paused it yourself,tiktokfeed resume
The account went privateNothing you can do from here
The account or the connection to TikTok failed repeatedly,tiktokfeed retry
Server Premium lapsedRenew it. Nothing was deleted, and every feed picks back up once you're paying again

Match the fix to the reason, or nothing changes

Resuming a feed that's actually broken doesn't fix it, and retrying a feed you paused on purpose doesn't un-pause it: each of these touches only its own reason and leaves the others exactly as they are. ,tiktokfeed list and ,tiktokfeed info tell you which reason currently applies to a feed, including when more than one does at once.

Syntax

,tiktokfeed pause <#channel> <@handle>

Example

,tiktokfeed pause #clips @nasa

Syntax

,tiktokfeed resume <#channel> <@handle>

Example

,tiktokfeed resume #clips @nasa

Syntax

,tiktokfeed retry <#channel> <@handle>

Example

,tiktokfeed retry #clips @nasa

Test a feed without waiting for a real post

Syntax

,tiktokfeed test <#channel> <@handle>

Example

,tiktokfeed test #clips @nasa

Posts that account's newest post into the channel right now, rendered exactly the way a real post would be. Nothing about the feed is changed: it's a preview, not a real check-in. If the feed has a ping configured, this test does not fire it; the real feed will still ping normally on its next genuine post.

Manage everything from one panel

Syntax

/feeds panel

Opens a private card for managing your GitHub, Twitter, Letterboxd and TikTok feeds, with a tab for each. It updates in place as you navigate or act on a feed, and it stays visible only to whoever opened it. This only opens over slash, on purpose, so it stays private: running ,tiktokfeed panel on prefix points you at /feeds panel instead of posting anything. Opening the panel is free; acting on a feed from it needs the same Manage Server and Server Premium the matching command needs.

For what all the feed platforms have in common, GitHub's real-time webhook versus the others' polling, Server Premium and what happens when it lapses, and the reasons any feed goes quiet, see Feeds.

Honest limits

  • Public accounts only. A private account is refused when you try to add it, not silently ignored later.
  • Every post is announced. There's no content-type toggle like YouTube's videos/Shorts/live split; a TikTok feed mirrors everything the account posts.
  • A very large video degrades to a link, and says why. If a post's video is bigger than your server's upload limit, it posts as a link instead of failing to attach.
  • This is separate from pasting a TikTok link into chat. That's a different setting entirely and doesn't interact with a feed you've configured here.

Common issues

A feed I added dumped a bunch of old posts into the channel. It shouldn't: a new feed starts from the moment you add it. If you're seeing old posts, check whether the feed shows as broken with ,tiktokfeed info; a feed recovering from an outage still only posts what's genuinely new.

I set up a ping and it never notifies anyone. Almost always this is the mention not actually being in the message text; see Add a trailing message, and a ping above. Re-run ,tiktokfeed message with a real @role mention or @everyone typed into the text.

A feed stopped posting and I don't know why. Run ,tiktokfeed info on it: it tells you which of the reasons in Why a feed goes quiet applies, including when more than one does.

,tiktokfeed add refuses a handle. Either it isn't a valid TikTok handle or profile link, the account doesn't exist, or the account is private, in which case TikTok Feeds can't read it at all.

The video never uploads and I only get a card and a link. Check that Righteous has Attach Files in that channel; the default card style needs it to upload video. If the permission is fine, the post itself may simply have been too large for your server's upload limit, in which case the post says so.

I set a custom name or picture and posts still arrive as Righteous. Run ,tiktokfeed info on the feed. It tells you which of these it is: Righteous is missing Manage Webhooks in that channel, the channel already holds Discord's maximum of 15 webhooks, Discord rejected the name you chose, or your Server Premium has lapsed. The posts keep arriving throughout, so this is always a cosmetic problem rather than a lost feed.