Search Discord with AI
Ask ChatGPT or Claude what was said in your Discord servers and DMs. Every way to do it, compared, and one that reads both as you, with no bot and no token.
Messaging
Archive every message of #channel in my Discord server server name: read it page by page, oldest pages included, and save the author, time, text and link of each message to database or file.

A server you are in will delete a channel, and you want to keep its history. As a regular member you cannot archive it, change its settings or add a bot. With Reduck, Claude, ChatGPT or any AI agent reads the channel as you, page by page, and saves every message before it is gone. To keep saving new messages, the Reduck CLI runs the same reads from a cron job and writes them to a database.
Discord has no export button. Archiving a channel inside Discord, by hiding it, locking it or moving it to an archive category, needs the Manage Channels permission, and a logging bot that writes messages to a database has to be added by someone with Manage Server. Discord's data package holds only the messages you sent. DiscordChatExporter exports a whole channel, but it asks for your Discord token, which works like your password, and its own FAQ says that automating a user account is technically against Discord's terms. Copying 3,000 messages by hand is not realistic.
Reduck runs Discord actions in your own Chrome, where you are already signed in, so it sees every channel you can see, with no token. It finds the server with list_servers and the channel with list_channels. Then it calls search_messages on that channel alone, 25 messages per call, and follows next_offset until the last page: each message comes back with its id, author, time, text and link, with Discord's total count to check that nothing is missing.
Get the server id and the channel id from your agent (list_servers, list_channels) or from Discord's developer mode. Then save this as save-discord.sh:
#!/bin/bash
SERVER=123456789012345678
CHANNEL=234567890123456789
sqlite3 discord.db "CREATE TABLE IF NOT EXISTS messages (id TEXT PRIMARY KEY, author TEXT, time TEXT, text TEXT, link TEXT)"
offset=0
while [ "$offset" != "null" ]; do
npx @reduck-ai/cli@latest run --script reduck/discord.com/search_messages \
guildId=$SERVER "channelIds=[\"$CHANNEL\"]" offset=$offset > page.json || exit 1
added=$(sqlite3 discord.db "INSERT OR IGNORE INTO messages
SELECT json_extract(value, '$.messageId'), json_extract(value, '$.author.name'),
json_extract(value, '$.timestamp'), json_extract(value, '$.content'), json_extract(value, '$.url')
FROM json_each(readfile('page.json'), '$.messages'); SELECT changes();")
[ "$added" = "0" ] && break
offset=$(jq -r '.next_offset' page.json)
done
The first run reads the whole channel. The next runs stop at the first page with no new message. Run it every morning with cron, with an API key in REDUCK_API_KEY:
0 8 * * * cd ~/discord-archive && ./save-discord.sh
To write to Postgres or another database, call the same script from your own code with the REST API: POST /run with your API key in x-api-key, the script reduck/discord.com/search_messages and its arguments, and "browser": "extension" so the run uses your signed-in Chrome. The answer holds the same JSON page of messages.
| Script | What it does | Takes |
|---|---|---|
list_servers |
The servers you are a member of, with their ids | nothing |
list_channels |
A server's channels, with their ids and links | the server id |
search_messages |
One page of 25 messages of a channel, with the total count and the next page | the server id, the channel id, the offset |
read_messages |
The latest messages of a channel, thread or forum post | its url, how many |
| Method | Other members' messages | No permissions, no token | Saved to a database, on a schedule | Images and files |
|---|---|---|---|---|
| Copy by hand | Yes | Yes | No | By hand |
| Discord data package | No, only yours | Yes | No | Only yours |
| Logging bot | Yes | No, needs Manage Server | Yes | Depends on the bot |
| DiscordChatExporter | Yes | No, needs your token | Files only, with a cron job | Yes |
| Reduck | Yes | Yes | Yes, with the CLI or API | No, text and links |
Ask ChatGPT or Claude what was said in your Discord servers and DMs. Every way to do it, compared, and one that reads both as you, with no bot and no token.
MessagingLet Claude, ChatGPT or any AI agent read the Discord servers you are a member of and summarize what you missed, channel by channel, with links to the messages, from your own account, with no bot to add and no admin rights.
MessagingA Discord MCP server that acts as your own user account, not as a bot. Reduck gives ChatGPT, Claude or any MCP client tools to read your servers, channels and DMs and reply as you, through browser automation in your own Chrome, with no bot to invite and no user token to paste.
Messaging