{"id":31664010,"url":"https://github.com/tenequm/discord-relay","last_synced_at":"2026-04-29T20:33:50.623Z","repository":{"id":314347535,"uuid":"1049149018","full_name":"tenequm/discord-relay","owner":"tenequm","description":"Relay Discord messages between channels on different servers automatically","archived":false,"fork":false,"pushed_at":"2025-09-11T22:22:03.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T20:55:59.635Z","etag":null,"topics":["automation","deno","discord","discord-bot","docker","relay","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tenequm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-02T14:56:47.000Z","updated_at":"2025-09-11T22:22:06.000Z","dependencies_parsed_at":"2025-09-12T00:57:35.107Z","dependency_job_id":"0690dc05-93b1-4924-8355-34dc196079d9","html_url":"https://github.com/tenequm/discord-relay","commit_stats":null,"previous_names":["tenequm/discord-relay"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tenequm/discord-relay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenequm%2Fdiscord-relay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenequm%2Fdiscord-relay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenequm%2Fdiscord-relay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenequm%2Fdiscord-relay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tenequm","download_url":"https://codeload.github.com/tenequm/discord-relay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tenequm%2Fdiscord-relay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32443559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","deno","discord","discord-bot","docker","relay","typescript"],"created_at":"2025-10-07T20:53:12.074Z","updated_at":"2026-04-29T20:33:50.618Z","avatar_url":"https://github.com/tenequm.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# discord-relay\n\nAutomatically copies messages from source Discord channels to target channels.\n\n## Disclaimer\n\nThis tool is provided for educational and personal use only. By using this\nsoftware:\n\n- You are responsible for complying with Discord's Terms of Service\n- You must have permission to access and read from source channels\n- You must use your own tokens and credentials\n- The authors are not liable for any misuse or violations\n\nUse at your own risk and responsibility.\n\n## Prerequisites\n\n- Docker and Docker Compose\n- Discord bot token\n- Discord user tokens\n- Channel IDs\n\n## Important: Understanding Tokens\n\nThis tool uses two different types of Discord tokens:\n\n### Bot Token (`bot_token` in config)\n- This is for the Discord bot that **POSTS** messages to your target channels\n- You must create a bot application and invite it to your server\n- The bot needs \"Send Messages\" and \"Embed Links\" permissions\n- Messages appear as sent by your bot, not your personal account\n- [Create a bot here](https://discord.com/developers/applications)\n\n### User Tokens (`tokens` array in config)\n- These are for **READING** messages from source channels\n- Can be your personal Discord account or alt accounts\n- Must have access to the source channels you want to monitor\n- Used only by DiscordChatExporter to export messages\n\n**Why both?** User tokens read from source channels, bot token posts to target channels. This separation ensures proper Discord compliance - the bot posts messages on its own behalf, not impersonating users.\n\n## Setup\n\n1. Clone repository:\n\n```bash\ngit clone https://github.com/tenequm/discord-relay.git\ncd discord-relay\n```\n\n2. Configure:\n\n```bash\ncp config.example.yml config.yml\n# Edit config.yml with your tokens and channel IDs\n```\n\n[Get tokens and IDs guide](https://github.com/Tyrrrz/DiscordChatExporter/blob/master/.docs/Token-and-IDs.md)\n\n3. Run:\n\n```bash\ndocker compose up --build -d\n```\n\n## Commands\n\n```bash\ndocker compose ps          # Check status\ndocker compose logs -f     # View logs\ndocker compose down        # Stop\ndocker compose restart     # Restart\n```\n\n## Running Without Docker\n\nIf you prefer to run the bot directly with Deno, use tmux for session management:\n\n```bash\n# Install Deno if not already installed\ncurl -fsSL https://deno.land/install.sh | sh\n\n# Start bot in a tmux session with auto-restart\ntmux new -s discord-bot -d 'while true; do deno run --allow-all export.ts; sleep 2; done'\n\n# Attach to view output\ntmux attach -t discord-bot\n\n# Detach from session: Ctrl+B then D\n# List sessions: tmux ls\n# Kill session: tmux kill-session -t discord-bot\n```\n\nThis keeps the bot running in the background and automatically restarts if it crashes.\n\n## Credits\n\nThis project wouldn't be possible without [DiscordChatExporter](https://github.com/Tyrrrz/DiscordChatExporter) by Tyrrrz, which handles the message extraction from Discord channels. Huge thanks to the DiscordChatExporter project for making Discord data exports accessible and reliable.\n\n## Development\n\n### Releasing New Versions\n\nTo release a new version:\n\n1. Update version in `deno.jsonc`\n2. Commit your changes\n3. Create release with auto-generated notes:\n\n   ```bash\n   gh release create v1.1.0 --generate-notes\n   ```\n\n   Or with custom notes:\n\n   ```bash\n   gh release create v1.1.0 --notes \"Description of changes\"\n   ```\n\nThe release command automatically creates the git tag and publishes to GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenequm%2Fdiscord-relay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftenequm%2Fdiscord-relay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftenequm%2Fdiscord-relay/lists"}