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
2026-08-26 00:42:13 +00:00

itako

discord.gg <---> fluxer.app channel bridge. unifies platforms, unifies friends.

One channel on each side; messages are relayed through webhooks so they show the original author's name and avatar.

Docs

  • INSTALL.md — setup guide (bots, tokens, .env, running)
  • TODO.md — roadmap: edit/delete sync, stickers, service mode, …

Layout

  • itako/bridge.py — runs both bots in one asyncio process:
    • discord.py bot listens on Discord, relays to a Fluxer webhook
    • fluxer.py Bot listens on Fluxer, relays to a Discord webhook
  • Webhooks named itako-bridge (configurable) are created once per channel and reused.

Setup

  1. uv sync
  2. Copy .env.example to .env and fill in (see INSTALL.md):
    • Discord: bot token + the channel ID to bridge (enable Message Content intent!)
    • Fluxer: create a bot application at fluxer.app, grab its token, invite it to your guild, put its token + the channel ID
  3. uv run python -m itako.bridge

Loop protection

  • Messages authored by either bot account are ignored.
  • Messages posted by either side's webhook (message.webhook_id) are ignored, so relayed copies never bounce back.
S
Description
discord.gg <---> fluxer.app channel bridge. unifies platforms, unifies friends.
Readme
105 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 100%