ScribeBot moves messages around. Point it at a channel, narrow the messages down the way you
would in Discord’s search bar (from:@someone, has:image, after:2026-01-01, -from:bots,
"an exact phrase"), and choose where the matches go: another channel, or a file.
Copies are re-posted one message every 1.2 seconds with the author’s name in front, or, if an admin allows it, through a webhook as the original authors with their names and avatars. Attachments come along up to the server’s upload limit; bigger ones are linked. Mentions in copied text never ping anyone.
Exports come back as a transcript in .txt, .md, or .json, and with with_attachments as a
zip holding every attachment under its message id. Long transcripts and big zips are split
into parts that each fit under the server’s upload limit, so nothing has to leave Discord.
Setup
- Invite the bot. It needs to read the source channel’s history and post in the destination.
- Only the server owner, administrators, or members with a role you choose may run it. Pick
the role with
/scribebot setup admin_role:@Role. - Optional:
/scribebot setup webhook_mode:Trueallowsas_authorcopies, which need the bot to have Manage Webhooks in the destination. - Try
/scribebot export source:#somewhere limit:20to see a transcript, then acopy.
Good to know
Every job posts a progress message with the counts and a Cancel button, and one job runs per
server at a time; the next few queue behind it. A job reads at most 5,000 messages unless an
admin raises the ceiling, and downloads at most 250 MB or 500 files of attachments. Dates are
UTC and follow Discord’s rules, so after:2026-01-01 starts on the second. ScribeBot never reads
a channel the person running the command cannot read, and never works in DMs.
Commands
Anyone can use the first group. The second is for the people who run the server.
For everyone
/scribebot helpThe filters, the query syntax, and the ceilings, in Discord.
e.g.
/scribebot help
For admins
/scribebot copyadminRe-post every matching message from one channel into another, oldest first, one every 1.2 seconds. Filters are options or a search-style query.
e.g.
/scribebot copy source:#general destination:#best-of has:image from:@someone after:2026-01-01/scribebot exportadminCollect the matches into a .txt, .md, or .json transcript, optionally zipped with every attachment, split under the server's upload limit.
e.g.
/scribebot export source:#photos format:txt with_attachments:True has:image during:2026-02/scribebot preset saveadminSave a source, a filter query, and the output choices under a name, per server. Up to 50.
e.g.
/scribebot preset save name:weekly-photos kind:export source:#photos format:md with_attachments:True query:has:image during:2026-03/scribebot preset runadminRun a saved preset, optionally overriding a copy preset's destination.
e.g.
/scribebot preset run name:weekly-photos/scribebot preset listadminList the server's presets with their filters.
e.g.
/scribebot preset list/scribebot preset deleteadminRemove a preset.
e.g.
/scribebot preset delete name:weekly-photos/scribebot setupadminChoose an admin role that may run jobs, raise the per-job message ceiling (up to 20,000), or allow webhook copies. Owner or Administrator only.
e.g.
/scribebot setup admin_role:@Archivists message_ceiling:10000 webhook_mode:True/scribebot canceladminStop the server's running job.
e.g.
/scribebot cancel
What it needs
Requiredwithout these the bot cannot do its job
- View ChannelsSees the source channel and the destination.
- Read Message HistoryWalks the source channel's history to find the matches.
- Send MessagesPosts copies, the progress message, and the export files.
- Attach FilesRe-uploads attachments in copies and delivers transcripts and zips.
Optionaleach one switches on an extra part
- Manage WebhooksPosts copies as the original authors, with their names and avatars, when as_author is on.
- Embed LinksLets links in copied messages unfurl as they did in the original.
- Send Messages in ThreadsLets a thread be the destination of a copy.
Reads: Message Content intent, reads message text to filter it and to copy or export it; that is the whole job. These are Discord's privileged intents, already switched on for this bot.
By adding it you accept the terms. What it stores is in the privacy note.