A Discord bot for downloading videos from Tweets.
Using Slash Commands (like /dl), you can send Tweet URLs to the bot, and it will trigger a GitHub Actions workflow to fetch the video and reply with the result directly in Discord.
- Discord Slash Commands support
- Download single or multiple Tweet videos
- Live progress updates: progress, success, and failure notifications
- Asynchronous video processing powered by GitHub Actions
- Built with Deno + TypeScript
- Deno + TypeScript
- discordeno
- Hono for lightweight web routing
- Deno test +
@std/assertfor the test suite - GitHub Actions + Docker for background jobs
- yt-dlp for video downloading
Make sure these environment variables are set:
DISCORD_TOKEN– Discord Bot TokenDISPATCH_URL–repository_dispatchendpoint of your GitHub repositoryGITHUB_TOKEN– GitHub Personal Access Token (for triggering Actions)
deno task devdeno task build/dl url:<Tweet URL>Downloads one or more Tweet videos (space-separated URLs supported)/dl-spoiler url:<Tweet URL>Same as/dl, but the resulting file is uploaded as a Discord spoiler attachment/threaddl name:<Thread Name>Opens a Modal where you paste any number of Tweet URLs (one per line, or any combination of newlines / spaces / commas / semicolons), creates a thread with the given name, and posts each download result inside it; URLs are processed in parallel by a GitHub Actions matrix workflow/threaddl-spoiler name:<Thread Name>Same as/threaddl, but every resulting file is uploaded with theSPOILER_prefix
See docs/commands.md for the full command reference.
- You run a Slash Command on Discord
- The bot triggers a repository_dispatch event in GitHub Actions
- A Docker container uses yt-dlp to download the video
- The result (video or error) is sent back to Discord
deno lintRun code and text lintingdeno task runStart the bot locallydeno task test/deno task test:coverageRun the Deno test suite (with optional coverage report) undertests/docker/DockerfileDefines the video processing runner image, shared byrun.ymlandrun-thread.yml
In-depth documentation lives under docs/:
docs/architecture.md— system overview and data flowdocs/commands.md— slash command referencedocs/development.md— local setup, env vars, GitHub token scopesdocs/deployment.md— runner image and bot deploymentdocs/github-actions.md—repository_dispatchpayload, callback API, secrets
日本語版ドキュメントは docs/jp/ を参照してください。
This project is licensed under the MIT License.