Official scripts
Explore our curated collection of scripts
Create a Discord forum post
Create a post (thread) in a Discord forum channel, with a title and an opening message. Forum channels reject plain messages — a post is the only way to write to one, which is why discord.com/post_message cannot target a forum. Returns the new post's threadId, name, url, parentId and the opening message id, read from Discord's own creation response. Reply to an existing post with discord.com/post_message against the post's own url (a post is itself a channel), and list a forum's posts with discord.com/list_forum_posts.
List Discord servers
Lists the Discord servers the logged-in account has access to (name + guildId), read from the server sidebar. Requires being logged in.
reply_to_message
Reply to a specific Discord message, addressed by its own url. Unlike discord.com/post_message, this creates a proper reply — visible as a reference to the original message rather than a plain new post in the channel. Returns the new message's id, channel id, timestamp and content, plus the id of the message it replied to.
Find Discord member ID by name
Resolves a Discord member's userId from their name, through a channel's mention autocomplete (@name). Useful to build a <@id> ping. Requires being logged in.
List Discord channels
Lists a Discord server's channels and categories from its sidebar (name, channelId, category, channel URL). Takes a guildId. Requires being logged in.
join_server_via_invite
Join a Discord server using an invite link or code, e.g. https://discord.com/invite/<code> or just the code. Returns the server's id and name, and whether the account was already a member before this ran. This is a write with lasting effect: joining a server is visible to its members and puts you on its member list until you leave.
Read Discord messages
Reads the most recent messages of a Discord channel (author, timestamp, text), newest first, scrolling up to load more until the requested count. Requires being logged in. It also reads a thread or a forum post, since both are channels in their own right: pass the post's url (from discord.com/list_forum_posts) and you get its replies plus the opening post, newest first — there is no separate thread-reading script. To list the posts of a forum channel rather than its messages, use discord.com/list_forum_posts instead.
Delete Discord message
Deletes a single Discord message by id (e.g. to clean up a message you sent). Requires being logged in as the message's author or having Manage Messages in the channel.
Discord login
Opens the Discord web app in the browser and reports whether the account is signed in, together with the username and display name it is signed in as. Run this first: the other Discord scripts need the web app open on a signed-in session.
Post a Discord message
Posts a text message in a Discord channel, addressed by channel URL. Requires being logged in to Discord. Returns `sent` plus the created message's messageId, channelId, timestamp and content as Discord stored it. This is a write: the message appears in the channel and is visible to everyone who can see it. Discord's own message limits are checked before anything is sent, so a message that is empty or whitespace-only, or longer than 2000 characters, is refused straight away with a clear reason.
Edit Discord message
Edit the text of one of your own Discord messages, addressed by its url. Discord marks an edited message with an "(edited)" tag visible to everyone. Returns the message's id, channel id, the new content as Discord stored it, and the edit timestamp. Only your own messages can be edited — Discord's UI offers no edit control on anyone else's.
create_channel
Create a channel in a Discord server — text, voice, announcement, stage or forum — optionally inside a category. Requires the Manage Channels permission in that server. Returns the created channel's channelId, name, type, url, parentId and the guildId, read from Discord's own creation response rather than the sidebar, plus already_present when a channel of that name and type already exists in the target category (it is reported, not duplicated — Discord itself allows duplicate channel names). Note Discord lowercases and hyphenates text/forum channel names, so the returned name may differ from the one you passed.
List Discord forum posts
List the posts (threads) in a Discord forum channel, newest first. Use this instead of read_messages, which forum channels don't support; pass a returned post's url to read_messages to read its replies. Returns per post: threadId, name, url, createdAt, authorName, messageCount (Discord's reply count, excluding the opening post), openingMessage and tagNames. Does not return user ids, tag ids, or archived/locked/pinned state.
add_reaction
React to a Discord message with a unicode emoji, or remove your own reaction with remove:true. Takes the message's own url, as copied from Discord or returned by discord.com/read_messages. Returns the emoji, the message and channel ids, whether your reaction was already there before this ran, and the reaction's count afterwards. Reactions are visible to everyone who can see the channel. Supports a small set of common emoji rather than any glyph, since Discord's picker only accepts an emoji name to search, not a pasted character. Does not work on a forum post's own opening message, whose context menu is shaped differently from a regular message's — react to a reply in the post instead.
send_dm
Send a direct message to a Discord user, addressed by their username. Opens (or reuses) the one-to-one DM conversation and posts the message there. Returns sent, the created message's messageId, the DM channelId, timestamp, and the content as Discord stored it, plus the recipient's resolved handle so the message is provably not sent to a near-name match. This is a write and the recipient is notified: confirm the exact recipient and text with the user before running, and note that approval for one message does not carry over to another.
Search Discord messages
Search a Discord server's message history, newest first, using Discord's own search. The query accepts Discord's search syntax (plain words, or filters like from:, in:, has:, before:, during:), so scoping to a channel or author is done in the query itself. Returns per hit: messageId, channelId, url, author (id, handle, name), content, timestamp, plus total_results as Discord reports it and complete, which is false when more hits exist beyond the page read. Discord returns search hits with surrounding context messages; only the hits themselves are returned.
Switch Discord display language
Change the display language of the signed-in Discord account, via User Settings > Language & Time. Accepts en, fr, de, it and es, and reads the new setting back off the settings page so the result confirms the change rather than echoing the request. It works whatever language the account is currently displaying in. This changes account-level state for everyone using that account. Requires being logged in.
get_member_list
List the members shown in a Discord server's member sidebar for a given channel. Returns per member their userId, display name without the role badges the row also renders, and whether Discord marks them as an app. userId is null for a member on a default avatar, which carries no id to read. Discord only sends the sidebar the members near the scroll position, so a large server returns those rendered while scrolling rather than a guaranteed roster; complete says which happened, and offline members are omitted where Discord collapses them. The sidebar's role grouping is not returned, as the headings expose no stable handle.
delete_channel
Delete a Discord channel by its id — text, voice, announcement, stage or forum. Requires the Manage Channels permission in that server. This cannot be undone: Discord removes the channel together with all of its message history, as its own confirmation dialog warns. Before confirming, the script checks that Discord's confirmation dialog names the very channel that was asked for, so a mis-targeted context menu can never remove the wrong channel, and it refuses outright when the id is a category rather than a channel. Success is taken from Discord's own deletion response, not from the sidebar. Pass expectedName to have the channel's name asserted as well.
Detect company's ATS (Greenhouse/Lever/Ashby)
Given a company's careers page URL, detect whether it's backed by Greenhouse, Lever, or Ashby and extract the board slug usable with greenhouse.io/get_company_jobs, lever.co/get_company_jobs, or ashbyhq.com/get_company_jobs. Detection combines two signals: network requests fired by the page (Greenhouse/Lever client-side API calls, seen e.g. on discord.com/careers) and embedded links to the ATS's own hosted board (seen e.g. on notion.com/careers linking jobs.ashbyhq.com/notion). Many companies fully proxy their ATS server-side with no client-visible signal (e.g. careers.airbnb.com, retool.com/careers) - for those this returns platform: null, which is a legitimate outcome, not a failure. Point this at the company's own marketing careers page, not at a guessed ATS URL: several large companies (e.g. Airbnb, Coinbase) configure their native Greenhouse board (boards.greenhouse.io/<slug>) to redirect to their custom-branded career site, which then also yields platform: null.
Send Slack message
Post a message to a channel or DM, identified by name ('social', '#social'), channel/DM id (C…/D…), or a user (@handle or U…) for a direct message. Pass threadTs to reply inside a thread (with broadcast to also send it to the channel). Returns the new message ts, channel id and permalink. Requires login.
Get Slack message permalink
Get the shareable permalink URL for a message by channel (name or id) and message ts. Requires login.
Send Chat Message
Send a message in a 1:1 Teams chat by contact name — finds the person, opens their chat, sends the message, then reads the sent message back to confirm it posted.
Open Slack DM
Open (or fetch) a direct message with one user, or a group DM with several, given as @handles or user ids (U…). Returns the conversation id you can then post to. Requires login.
Join subreddit
Join (subscribe to) a subreddit by name. If you're already a member, nothing changes and changed is returned as false. Runs only via the browser extension, not the hosted cloud browser.
