{"id":17590727,"url":"https://github.com/ysdragon/streambot","last_synced_at":"2025-04-04T18:04:07.568Z","repository":{"id":191221237,"uuid":"683832220","full_name":"ysdragon/StreamBot","owner":"ysdragon","description":"A self bot to stream videos to Discord.","archived":false,"fork":false,"pushed_at":"2025-02-27T08:15:26.000Z","size":282,"stargazers_count":145,"open_issues_count":7,"forks_count":43,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-04T18:03:58.765Z","etag":null,"topics":["discord","discord-bot","discord-js","discordjs","discordvideo","nodejs","selfbot","selfbot-for-discord","streambot","streaming","video","youtube-api"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ysdragon.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}},"created_at":"2023-08-27T20:50:08.000Z","updated_at":"2025-04-04T06:19:01.000Z","dependencies_parsed_at":"2023-09-25T06:01:13.603Z","dependency_job_id":"df4b127c-29bc-4d79-af26-08d2c1c26f72","html_url":"https://github.com/ysdragon/StreamBot","commit_stats":{"total_commits":129,"total_committers":7,"mean_commits":"18.428571428571427","dds":0.2093023255813954,"last_synced_commit":"18a2eab2e13adc267b707fdb264c6cc04847bd12"},"previous_names":["drago0on/streambot","ysdragon/streambot"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysdragon%2FStreamBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysdragon%2FStreamBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysdragon%2FStreamBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ysdragon%2FStreamBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ysdragon","download_url":"https://codeload.github.com/ysdragon/StreamBot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226212,"owners_count":20904465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["discord","discord-bot","discord-js","discordjs","discordvideo","nodejs","selfbot","selfbot-for-discord","streambot","streaming","video","youtube-api"],"created_at":"2024-10-22T04:05:44.004Z","updated_at":"2025-04-04T18:04:07.550Z","avatar_url":"https://github.com/ysdragon.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# StreamBot\n\nA powerful Discord selfbot for streaming videos and live content to Discord voice channels.\n\n![GitHub release](https://img.shields.io/github/v/release/ysdragon/StreamBot)\n[![CodeFactor](https://www.codefactor.io/repository/github/ysdragon/streambot/badge)](https://www.codefactor.io/repository/github/ysdragon/streambot)\n\n\u003c/div\u003e\n\n## ✨ Features\n\n- 📁 Stream videos from a local folder\n- 🎬 Stream and search YouTube videos by title\n- 🔗 Stream YouTube videos/live streams by link\n- 🌐 Stream from arbitrary links (video files, live streams, Twitch, etc.)\n- ⚡ Playback controls: play, stop\n- 📋 Video library management\n\n## 📋 Requirements\n- [Bun](https://bun.sh/) `v1.1.39+`\n- [FFmpeg](https://www.ffmpeg.org/) _(in PATH or working directory)_\n\n## 🚀 Installation\n\nThis project is [hosted on GitHub](https://github.com/ysdragon/StreamBot).\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/ysdragon/StreamBot\n```\n\n2. Install dependencies:\n```bash\nbun install\n```\n\n3. Configure environment:\n   - Rename `.env.example` to `.env`\n   - Update configuration values\n\n## 🎮 Usage\n\nStart with Bun:\n```bash\nbun run start\n```\n\nStart with Node.js:\n```bash\nbun run build\nbun run start:node\n```\n\n## 🐳 Docker Setup\n\n### Standard Setup\n1. Create a directory and navigate to it:\n```bash\nmkdir streambot \u0026\u0026 cd streambot\n```\n\n2. Download the compose file:\n```bash\nwget https://raw.githubusercontent.com/ysdragon/StreamBot/main/docker-compose.yml\n```\n\n3. Configure environment variables in `docker-compose.yml`\n\n4. Launch container:\n```bash\ndocker compose up -d\n```\n\n### Cloudflare WARP Setup\n1. Download WARP compose file:\n```bash\nwget https://raw.githubusercontent.com/ysdragon/StreamBot/main/docker-compose-warp.yml\n```\n\n2. Configure `docker-compose-warp.yml` and add your WARP license key\n\n3. Launch with WARP:\n```bash\ndocker compose -f docker-compose-warp.yml up -d\n```\n\u003e [!NOTE]\n\u003e The basic video server will not work if you use WARP.\n\n\n## 🎯 Commands\n\n| Command | Description |\n|---------|-------------|\n| `play \u003cvideo\u003e` | Play local video |\n| `playlink \u003curl\u003e` | Stream from URL/YouTube/Twitch |\n| `ytplay \u003cquery\u003e` | Play YouTube video |\n| `ytsearch \u003cquery\u003e` | Search YouTube |\n| `stop` | Stop playback |\n| `list` | Show video library |\n| `refresh` | Update video list |\n| `status` | Show playback status |\n| `preview \u003cvideo\u003e` | Generate thumbnails |\n| `help` | Show help |\n\n## Configuration\n\nConfiguration is done via `.env`:\n\n```bash\n# Selfbot options\nTOKEN = \"\" # Your Discord self-bot token\nPREFIX = \"$\" # The prefix used to trigger your self-bot commands\nGUILD_ID = \"\" # The ID of the Discord server your self-bot will be running on\nCOMMAND_CHANNEL_ID = \"\" # The ID of the Discord channel where your self-bot will respond to commands\nVIDEO_CHANNEL_ID = \"\" # The ID of the Discord voice/video channel where your self-bot will stream videos\n\n# General options\nVIDEOS_DIR = \"./videos\" # The local path where you store video files\nPREVIEW_CACHE_DIR = \"./tmp/preview-cache\" # The local path where your self-bot will cache video preview thumbnails\n\n# Stream options\nSTREAM_RESPECT_VIDEO_PARAMS = \"false\"  # This option is used to respect video parameters such as width, height, fps, bitrate, and max bitrate.\nSTREAM_WIDTH = \"1280\" # The width of the video stream in pixels\nSTREAM_HEIGHT = \"720\" # The height of the video stream in pixels\nSTREAM_FPS = \"30\" # The frames per second (FPS) of the video stream\nSTREAM_BITRATE_KBPS = \"2000\" # The bitrate of the video stream in kilobits per second (Kbps)\nSTREAM_MAX_BITRATE_KBPS = \"2500\" # The maximum bitrate of the video stream in kilobits per second (Kbps)\nSTREAM_HARDWARE_ACCELERATION = \"false\" # Whether to use hardware acceleration for video decoding, set to \"true\" to enable, \"false\" to disable\nSTREAM_VIDEO_CODEC = \"H264\" # The video codec to use for the stream, can be \"H264\" or \"H265\" or \"VP8\"\n\n# STREAM_H26X_PRESET: Determines the encoding preset for H26x video streams. \n# If the STREAM_H26X_PRESET environment variable is set, it parses the value \n# using the parsePreset function. If not set, it defaults to 'ultrafast' for \n# optimal encoding speed. This preset is only applicable when the codec is \n# H26x; otherwise, it should be disabled or ignored.\n# Available presets: \"ultrafast\", \"superfast\", \"veryfast\", \"faster\", \n# \"fast\", \"medium\", \"slow\", \"slower\", \"veryslow\".\nSTREAM_H26X_PRESET = \"ultrafast\"\n\n# Videos server options\nSERVER_ENABLED = \"false\" # Whether to enable the built-in video server\nSERVER_USERNAME = \"admin\" # The username for the video server's admin interface\nSERVER_PASSWORD = \"admin\" # The password for the video server's admin interface\nSERVER_PORT = \"8080\" # The port number the video server will listen on\n```\n\n## Get Token ?\nCheck the [Get token wiki](https://github.com/ysdragon/StreamBot/wiki/Get-Discord-user-token)\n\n## Server\n\nAn optional basic HTTP server can be enabled to manage the video library:\n\n- List videos\n- Upload videos\n- Delete videos\n- Generate video preview thumbnails\n\n## Todo\n\n- [x]  Adding ytsearch and ytplay commands   \n\n## 🤝 Contributing\nContributions are welcome! Feel free to:\n- 🐛 Report bugs via [issues](https://github.com/ysdragon/StreamBot/issues/new)\n- 🔧 Submit [pull requests](https://github.com/ysdragon/StreamBot/pulls)\n- 💡 Suggest new features\n\n## ⚠️ Legal\n\nThis bot may violate Discord's ToS. Use at your own risk.\n\n## إبراء الذمة\nأتبرأ من أي استخدام غير أخلاقي لهذا المشروع أمام الله.\n\n## 📝 License\n\nLicensed under MIT License. See [LICENSE](https://github.com/ysdragon/StreamBot/blob/main/LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysdragon%2Fstreambot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fysdragon%2Fstreambot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fysdragon%2Fstreambot/lists"}