discord-message-resender
real-time capture & relay

Never miss an alert buried in a Discord you don't own.

Intercept trading-alert channels as messages land, archive every one in Postgres, and relay them into a server you control.

self-hosted · Docker · one command to start

!

Before you start: this reads channels using your own Discord user token, which is against Discord's Terms of Service and can get the account terminated. Use it only if you accept that. If a source channel is an Announcement channel, Discord's built-in Follow feature mirrors it into your server with no token and no risk; prefer that where you can.

One connection in, your archive and your server out

A single live gateway connection feeds everything. Nothing polls, and the account never sends a message; forwarding goes through webhooks, so it stays read-only.

01 · source

Watched channels

Alert channels in servers you're already a member of.

02 · ingest

Capture

Holds the gateway connection, normalizes each message, edit, and delete.

03 · store

Postgres archive

Every message kept, deduplicated by ID. Deleted alerts are retained, not erased.

04 · out

Relay & browse

Forward matches to your server by webhook; browse the archive by API or dashboard.

Get it running

You need Docker and just. A Discord account in the alert servers supplies the token.

1

Clone and set up

One recipe copies the config templates and installs both toolchains.

git clone https://github.com/yorch/discord-message-resender.git
cd discord-message-resender
just setup
2

Get your Discord token

Read it from your logged-in session in a browser. It bypasses two-factor auth, so treat it like your password.

  1. Open discord.com/app and log in.
  2. Open developer tools, then the Network tab, and filter to /api/v.
  3. Click any request and copy the Authorization header value, verbatim. It has no Bearer or Bot prefix.
3

Fill in your config

Put the token, your webhook URLs, and an API token in .env; put the source guild and channel IDs in config/routes.yaml. Then check the token.

just check-token   # confirms it works, without printing it
4

Start capturing

Bring up the stack and watch alerts arrive.

just docker-up     # start the stack
just docker-logs   # follow the ingest logs

Read back everything it captured

The archive is the point. Browse it visually, or query it from your own tools.

Dashboard

Open localhost:4000, paste your API token, and scan captured messages with their embeds, images, and delivery status. Search, filter by channel, and see deleted alerts struck through.

Query API

Pull alerts into your own scripts and backtests over HTTP.

curl -H "Authorization: Bearer $TOKEN" \
  localhost:4000/alerts?limit=20