Miscellaneous

Social Lookups & Feeds

Profile lookups and feed notifications for popular platforms.

Overview

greed integrates with popular social platforms to provide two distinct features:

  • Feed Notifications: Automatically post updates to Discord when creators go live or publish something new — TikTok, Twitch, YouTube, Instagram, X, Pinterest, SoundCloud and Kick.
  • Profile Lookups: Query user profiles, stats, and game information across multiple platforms (Roblox, Valorant, Spotify, Minecraft, GitHub, and more).

Feed Notifications

Set up live feed notifications to post creator updates directly to a channel. Up to 10 feeds per guild per platform.

Pinterest, SoundCloud and Kick are prefix-only commands — Discord caps a bot at 100 slash commands and greed is at that limit, so these three are driven with the , prefix or from the dashboard. Every other feed platform works on both surfaces.

TikTok Feeds

Post new uploads from TikTok creators in a channel.

,tiktok add (username) (channel)

TikTok feeds check for new posts every 20 seconds. Up to 10 creators per server.

greed must have permission to send messages in the target channel. If a creator's account is deleted or suspended, their feed will stop posting automatically.

Instagram Feeds

Post an account's new uploads in a channel, and optionally announce when they go live.

,instagram add (username) (channel)

greed checks tracked accounts every 2 minutes for new posts. Live status is checked at most every 10 minutes. Up to 10 accounts per server. ,instagram also answers to ,ig.

Feed variables:

VariableOutput
{instagram.url}Link to the post. Required — a template without it is rejected.
{instagram.caption}The post's caption.
{instagram.id}The post's ID.
{instagram.created}When the post went up.
{instagram.likes}Like count, shortened (e.g. 12.4K).
{instagram.comments}Comment count, shortened.
{instagram.type}image, video or carousel.
{instagram.media}Direct URL to the first media item.
{instagram.creator}The account's username.
{instagram.creator.url}Link to the account's profile.
{instagram.creator.avatar}The account's profile picture.

Feed management commands require Manage Server. Private accounts cannot be tracked — greed only sees what a logged-out visitor sees.

Twitch Alerts

Announce when a Twitch channel goes live.

,twitch add (login) (channel)

Live alerts check every minute. You can ping a role when a streamer goes live with ,twitch ping (login) [role].

If a Twitch channel is set to private or deleted, alerts will stop. Ensure greed can send messages in the target channel.

YouTube Feeds

Post new uploads and live streams from YouTube channels.

,youtube add (channel_name) (channel)

YouTube supports channel handles (@name), channel IDs, and URLs. Uploads are checked every 2 minutes and live streams every 5 minutes. You can enable live stream announcements separately with ,youtube live (channel_name).

YouTube channels must be public. If a channel is made private or deleted, feeds will stop posting. The bot requires send-message permissions in the target channel.


X Feeds

Post an account's new posts from X (formerly Twitter) in a channel.

,x add (handle) (channel)

X feeds check every 3 minutes. Reposts are included by default and are labelled as reposts — turn them off per feed with ,x reposts (handle) off.

Replies to other accounts are never posted, but replies an account makes to itself are — so threads still arrive in full.

Feeds follow the account's numeric ID, so a handle change does not break them. Protected (private) accounts cannot be followed.

Pinterest Feeds

Post an account's new pins in a channel, either from every board or from one specific board.

,pinterest add (username) (channel) [board]

Pinterest feeds check every 3 minutes. Leave the board off to follow everything the account saves, on any board. On the dashboard, pick the account and its boards appear underneath.

Saving someone else's pin to a board counts as a new pin, because that is what Pinterest shows the account's followers. An account that mostly re-pins will therefore be chatty — following a single board is usually quieter.

Pinterest feeds follow the username, because Pinterest offers no way to look an account up by ID. If the account is renamed its feed stops silently and has to be added again under the new name.

SoundCloud Feeds

Post an artist's new tracks in a channel.

,soundcloud add (artist) (channel)

SoundCloud feeds check every 3 minutes. ,soundcloud also answers to ,sc, and accepts a profile name or a full profile link.

Feeds follow the artist's numeric ID, so renaming a profile does not break them. Private tracks are never posted.

Kick Alerts

Announce when a Kick channel goes live.

,kicklive add (channel_name) (channel)

Kick alerts check every minute. The command is ,kicklive (also ,kickalerts) because ,kick is the moderation command for removing a member.

Each broadcast is announced once. Ending and restarting a stream is a new broadcast and announces again, but a brief connection drop on Kick's side will not re-announce the same stream.


Custom Feed Messages

Every social feed supports fully custom notification messages. Use the ,<platform> message command to set a template that renders when new content is posted. Templates use greed's scripting language to combine text, embeds, and interactive components — see Embed Scripting and Components for syntax.

Fallback Behavior

If your custom template renders to nothing (empty text content, no embeds, no components), greed falls back to the built-in default layout for that platform. This lets you use conditionals and optional content without losing notifications.

Twitch Custom Messages

Twitch live alerts use 8 available variables to build rich notifications. The built-in layout shows the streamer's name, stream title, thumbnail, viewer count, category, and a direct link to the stream.

Set ,twitch ping (login) (role) to prepend a role mention to any custom message — the role is added as <@&role_id> before your rendered content.

Twitch Variables

VariableDescriptionExample Value
{twitch.url}Direct link to the streamhttps://twitch.tv/streamername
{twitch.title}Stream title24-hour charity speedrun!
{twitch.category}Game or category nameJust Chatting
{twitch.game}Alias for twitch.categoryJust Chatting
{twitch.viewers}Current viewer count (formatted)1,234
{twitch.started}Stream start time as Discord relative timestamp<t:1692374400:R>
{twitch.thumbnail}Thumbnail image URLhttps://static-cdn.jtvnw.net/previews-ttv/...
{twitch.id}Twitch stream ID48573294857
{twitch.creator}Streamer's login (lowercase name)streamername
{twitch.creator.name}Streamer's display nameStreamerName
{twitch.creator.url}Streamer's profile URL (alias for twitch.url)https://twitch.tv/streamername

Twitch Examples

{twitch.creator.name} is live on Twitch playing {twitch.category}!
{twitch.title}
{twitch.url}

YouTube Custom Messages

YouTube feeds support two distinct events: uploads (new videos or Shorts) and live streams. Each has a different set of available variables. The built-in layout shows the channel name, video title, thumbnail, publication time, and a link.

Enable live stream notifications with ,youtube live (channel_name) on to post when the channel goes live. Upload and live messages can have different custom templates.

YouTube Variables by Event Type

Upload Variables (triggered when a new video or Short is posted):

VariableDescriptionExample Value
{youtube.url}Link to the videohttps://www.youtube.com/watch?v=dQw4w9WgXcQ
{youtube.title}Video titleHow to make the perfect soufflé
{youtube.description}Video description (first 5000 chars)In this video I show you...
{youtube.id}YouTube video IDdQw4w9WgXcQ
{youtube.thumbnail}Thumbnail image URLhttps://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg
{youtube.published}Upload time as Discord relative timestamp<t:1692374400:R>
{youtube.type}Content type: "short" or "video"video
{youtube.creator}Channel nameCulinary Arts Daily
{youtube.creator.url}Channel profile URLhttps://www.youtube.com/channel/UCxxxxxxxxxxxxxxxx

Live Stream Variables (triggered when the channel goes live):

VariableDescriptionExample Value
{youtube.url}Link to the live stream (may be empty initially)https://www.youtube.com/watch?v=dQw4w9WgXcQ
{youtube.title}Stream titleLive Cooking Q&A
{youtube.description}Always empty for live streams``
{youtube.id}Video ID (may be empty initially)dQw4w9WgXcQ
{youtube.thumbnail}Thumbnail image URL (may be empty initially)https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg
{youtube.published}Always empty for live streams``
{youtube.type}Always "live" for live streamslive
{youtube.viewers}Current live viewer count (formatted)5,432
{youtube.creator}Channel nameCulinary Arts Daily
{youtube.creator.url}Channel profile URLhttps://www.youtube.com/channel/UCxxxxxxxxxxxxxxxx

Live stream variables like url, thumbnail, and id may be empty when the stream first starts. Design templates to handle missing data with optional content or fallback text.

YouTube Examples

New video from {youtube.creator}!
{youtube.title}
{youtube.url}

TikTok Custom Messages

TikTok feeds post when creators upload new videos or photos. The built-in layout shows the creator's name, post caption, engagement stats (likes, comments, plays), media thumbnails, and a direct link.

TikTok Variables

VariableDescriptionExample Value
{tiktok.url}Direct link to the posthttps://www.tiktok.com/@username/video/7329482948574839
{tiktok.caption}Post caption textthis took 3 hours...
{tiktok.id}TikTok video/photo ID7329482948574839
{tiktok.created}Post creation time as Discord relative timestamp<t:1692374400:R>
{tiktok.likes}Like count in compact notation1.2K
{tiktok.comments}Comment count in compact notation342
{tiktok.plays}Play/view count in compact notation45.8K
{tiktok.shares}Share count in compact notation89
{tiktok.type}Content type: "photo" or "video"video
{tiktok.creator}Creator's username (without @)username
{tiktok.creator.name}Creator's display nameUser Name
{tiktok.creator.url}Creator's profile URLhttps://www.tiktok.com/@username
{tiktok.creator.avatar}Creator's avatar image URLhttps://p16-sign.tiktokcdn.com/avatar-...

TikTok Examples

{tiktok.creator.name} just posted!
{tiktok.caption}
{tiktok.url}

X Custom Messages

X feeds post original posts, self-replies (threads) and — unless you turn them off — reposts. {x.type} tells you which one you are rendering, so a single template can handle all three.

X Variables

VariableDescriptionExample Value
{x.url}Direct link to the posthttps://x.com/NASA/status/2090197889947451524
{x.text}Post textA new school year brings fresh opportunities…
{x.id}Post ID2090197889947451524
{x.media}First image or video thumbnail, if anyhttps://pbs.twimg.com/media/…
{x.published}Post time as Discord relative timestamp<t:1786477576:R>
{x.type}post, repost or replyrepost
{x.likes}Like count (formatted)27,325
{x.reposts}Repost count (formatted)4,438
{x.replies}Reply count (formatted)3,941
{x.creator}Account display nameNASA
{x.creator.handle}Account handle without the @NASA
{x.creator.url}Account profile URLhttps://x.com/NASA
{x.creator.avatar}Account avatar URLhttps://pbs.twimg.com/profile_images/…
{x.creator.verified}true when the account is verifiedtrue

X Examples

{x.creator} posted on X
{x.text}
{x.url}

Pinterest Custom Messages

Pinterest feeds post one message per new pin, whether the feed follows a single board or the whole account.

Pinterest Variables

VariableDescriptionExample Value
{pinterest.url}Direct link to the pinhttps://www.pinterest.com/pin/142567144448897971/
{pinterest.title}Pin descriptionA new school year brings fresh opportunities…
{pinterest.id}Pin ID142567144448897971
{pinterest.image}Pin image URLhttps://i.pinimg.com/736x/…
{pinterest.published}Pin time as Discord relative timestamp<t:1786477576:R>
{pinterest.creator}Account display nameNASA
{pinterest.creator.handle}Account usernamenasa
{pinterest.creator.url}Account profile URLhttps://www.pinterest.com/nasa/

Pinterest Examples

{pinterest.creator} pinned something new
{pinterest.title}
{pinterest.url}

SoundCloud Custom Messages

SoundCloud feeds post one message per new track, with the artwork, duration and play count available to your template.

SoundCloud Variables

VariableDescriptionExample Value
{soundcloud.url}Direct link to the trackhttps://soundcloud.com/flume/all-of-the-worlds
{soundcloud.title}Track titleAll Of The Worlds
{soundcloud.description}Track descriptionOut now on all platforms
{soundcloud.id}Track ID2119863225
{soundcloud.artwork}Cover artwork URLhttps://i1.sndcdn.com/artworks-…-t500x500.jpg
{soundcloud.duration}Track length3:42
{soundcloud.plays}Play count (formatted)1,204,551
{soundcloud.likes}Like count (formatted)48,201
{soundcloud.published}Upload time as Discord relative timestamp<t:1750942881:R>
{soundcloud.creator}Artist display nameFlume
{soundcloud.creator.handle}Artist profile nameflume
{soundcloud.creator.url}Artist profile URLhttps://soundcloud.com/flume

SoundCloud Examples

{soundcloud.creator} posted a new track — {soundcloud.title} ({soundcloud.duration})
{soundcloud.url}

Kick Custom Messages

Kick alerts fire once per broadcast, with the same shape as Twitch alerts.

Kick Variables

VariableDescriptionExample Value
{kick.url}Direct link to the streamhttps://kick.com/xqc
{kick.title}Stream title24-hour charity speedrun!
{kick.category}Category nameJust Chatting
{kick.viewers}Current viewer count (formatted)19,325
{kick.started}Stream start time as Discord relative timestamp<t:1787240701:R>
{kick.thumbnail}Stream thumbnail URLhttps://images.kick.com/video_thumbnails/…
{kick.language}Stream language codeen
{kick.creator}Channel name (lowercase)xqc
{kick.creator.name}Channel display namexQc
{kick.creator.url}Channel URL (alias for kick.url)https://kick.com/xqc

Kick Examples

{kick.creator.name} is live on Kick playing {kick.category}!
{kick.title}
{kick.url}

Role Mentions in Feed Messages

When you set a role ping with ,<platform> ping (target) (role), greed prepends the role mention to your rendered message. The mention is added as <@&role_id> before your template's output, and configured for proper Discord allowedMentions.

If your custom template renders empty, the role mention still appears before the fallback default layout.

Example: If you set a custom Twitch message and assign a role:

,twitch message mystreamer {twitch.creator.name} is live!
,twitch ping mystreamer @StreamAlerts

The posted message will be: <@&123456789012345678> mystreamer is live!


Template Scripting Reference

Custom feed messages use greed's embedded scripting language. Master it with these resources:

  • Embed Scripting: Build rich embeds with titles, descriptions, fields, colors, images, and footers.
  • Variables: Variable interpolation, conditionals, mentions, and formatting.
  • Components: Add buttons, select menus, and text inputs (Components V2).

Key techniques:

  • Variables: Wrap any variable in {...} to interpolate — e.g., {twitch.creator.name}.
  • Embeds: Each field is its own node — {title: ...}, {description: ...}, {color: #hex}, {image: url}. Open with {embed} when a message mixes plain text and embed fields.
  • Fields and buttons: Arguments are separated by &&, never commas or key="value" pairs — {field: Name && Value && inline} and {button: label: Watch && url: https://...}.
  • Conditionals: Use {if condition}...{/if} to show content only when conditions are met.

Test your template before deploying to production. The ,<platform> message (target) command (without a script argument) displays your current template.


Common Issues & Troubleshooting


Profile Lookups

Query profiles and stats from gaming and social platforms. All lookups are one-off commands — they don't create persistent feeds.

Roblox Profiles

Look up Roblox user profiles, games, groups, and outfit information.

Some usernames may not be found if the account is private, deleted, or very new. Game and group lookups require exact or partial name matches.

Rolimons

Look up Roblox item values and trading stats via Rolimons.

Requires a valid Roblox username. The chart displays value trends over the past 7, 30, or 90 days.

Valorant Profiles

Look up player ranks, agents, weapons, and maps.

Player profiles require the exact Riot ID format: username#tag. If a player's match history is private, only ranked tier will display.

Minecraft

Look up Java Edition player skins and server info.

Only supports Java Edition. Bedrock players and servers are not supported. Server checks require the server to have query enabled.

Spotify

Search and preview tracks, albums, and artists.

Some tracks don't have preview clips available. Artist and album searches return the top result.

GitHub

Look up GitHub user profiles and repository information.

Usernames are case-insensitive. The email lookup only finds addresses linked to public commits. Repositories require an exact or partial match of the name.

X (Twitter)

Look up X/Twitter profiles and fetch individual posts.

X profile lookups display user bios, follower counts, and verified status (if applicable). To post an account's new posts automatically, see X Feeds.

Instagram Profiles

Instagram lookups work without any feed configuration and need no permissions.

League of Legends

Summoner lookups use Riot IDs — name#tag, not the old summoner name alone.

Bio Profiles

Look up user profiles from social bio platforms: guns.lol and haunt.gg.

Profiles display custom bios, social links, page views, and verification status. The leaderboard updates periodically.

Fortnite

View Fortnite cosmetics, news, and map information.

Cosmetic lookups may return multiple results; refine your search if needed. News updates with each patch cycle.

Last.fm Integration

Link your Last.fm account to get Spotify and YouTube links for currently playing tracks.

Requires a Last.fm account linked to your Discord profile. If omitted, uses your Last.fm username from Discord.


Troubleshooting

Feed channels deleted: If a feed's target channel is deleted, the feed stops posting and greed removes it. Set it up again with ,<platform> add pointing at a channel that still exists.

Creator not found: Ensure the username is spelled correctly and the account is public. Some very new accounts may not be indexed yet.

Profile lookups return no data: This may indicate the account is private, banned, or the username is misspelled. Try searching with different query formats.

Rate limits: Frequent lookups of the same profile may trigger temporary rate limiting. Space out requests if you're bulk-checking multiple profiles.