Files
ph0sgene f3154396fa Initial bridge: Discord <-> Fluxer channel relay via webhooks
- discord.py + fluxer.py bots run side-by-side in one asyncio process
- messages relay through per-channel incoming webhooks with the original
  author's name and avatar (suffixed '(Discord)' / '(Fluxer)')
- loop protection: bot-authored and webhook-authored messages are ignored
- attachments re-uploaded natively both directions (8 MB cap)
- emoji mirroring: on-demand upload into the receiving guild with LRU
  eviction of bridge-created emojis only; pre-existing emojis untouched;
  to-Discord direction opt-in (50-slot default guild cap)
2026-08-25 18:41:43 -07:00

49 lines
2.2 KiB
Markdown

# itako TODO
Ideas and future work for the Discord <-> Fluxer bridge.
## Messaging
- [ ] **Edit syncing** — propagate message edits across the bridge (requires
tracking relayed-message id pairs; both platforms have
`MESSAGE_UPDATE` events, but webhooks can only edit their own messages,
so the bridge must remember each relayed message's webhook id + token).
- [ ] **Delete syncing** — remove a relayed message when the original is
deleted (same id-pair tracking as edits).
- [ ] **Reply threading** — show reply context (`referenced_message`) as a
quoted line instead of dropping it.
- [ ] **Multi-line / long-message handling** — split messages that exceed the
2000-char limit on Discord.
- [ ] **Typing indicator sync** — optional; likely noisy.
## Media
- [ ] **Attachment size config** — make the 8 MB cap configurable via `.env`
(Fluxer supports up to 100 MB on some tiers).
- [ ] **Sticker forwarding** — stickers currently do not cross the bridge.
- [ ] **Voice memo / audio attachments** — verify they embed inline on Fluxer.
## Emoji
Current behavior: no emoji slots are consumed. Tokens whose name exists on the
receiving side render natively; others degrade to plain `:name:` text.
- [ ] **Optional opt-in mirroring** — a config flag to re-enable uploading
unknown emojis to the other guild, with an LRU eviction policy to stay
under the 500-emoji Fluxer guild cap (Discord's is 50 for non-community
servers, so mirroring *into* Discord would need care).
*(DONE — `EMOJI_MIRROR_*` env vars in INSTALL.md; to-Fluxer is on by
default with LRU eviction of bridge-created emojis only; to-Discord is
opt-in.)*
- [ ] **Nitro/animated emoji fallback** — render unknown animated emojis as a
small inline image attachment instead of `:name:` text.
## Operations
- [ ] **Graceful reconnect logging** — alert (or self-heal) when one side
drops its gateway connection for more than N minutes.
- [ ] **Run as a service** — Windows scheduled task / NSSM service wrapper or
a systemd unit for Linux hosting, with auto-restart.
- [ ] **Metrics** — simple counters (messages relayed per day, failures) in a
log file or tiny status page.