Skip to content

ysdragon/StreamBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

abfc27d · Feb 27, 2025
Feb 12, 2025
Feb 27, 2025
Jan 10, 2025
Oct 22, 2024
Jan 4, 2025
May 27, 2024
Feb 16, 2025
Feb 27, 2025
Feb 16, 2025
Jan 10, 2025
Feb 27, 2025
Feb 11, 2025

Repository files navigation

StreamBot

A powerful Discord selfbot for streaming videos and live content to Discord voice channels.

GitHub release CodeFactor

✨ Features

  • 📁 Stream videos from a local folder
  • 🎬 Stream and search YouTube videos by title
  • 🔗 Stream YouTube videos/live streams by link
  • 🌐 Stream from arbitrary links (video files, live streams, Twitch, etc.)
  • ⚡ Playback controls: play, stop
  • 📋 Video library management

📋 Requirements

  • Bun v1.1.39+
  • FFmpeg (in PATH or working directory)

🚀 Installation

This project is hosted on GitHub.

  1. Clone the repository:
git clone https://github.com/ysdragon/StreamBot
  1. Install dependencies:
bun install
  1. Configure environment:
    • Rename .env.example to .env
    • Update configuration values

🎮 Usage

Start with Bun:

bun run start

Start with Node.js:

bun run build
bun run start:node

🐳 Docker Setup

Standard Setup

  1. Create a directory and navigate to it:
mkdir streambot && cd streambot
  1. Download the compose file:
wget https://raw.githubusercontent.com/ysdragon/StreamBot/main/docker-compose.yml
  1. Configure environment variables in docker-compose.yml

  2. Launch container:

docker compose up -d

Cloudflare WARP Setup

  1. Download WARP compose file:
wget https://raw.githubusercontent.com/ysdragon/StreamBot/main/docker-compose-warp.yml
  1. Configure docker-compose-warp.yml and add your WARP license key

  2. Launch with WARP:

docker compose -f docker-compose-warp.yml up -d

Note

The basic video server will not work if you use WARP.

🎯 Commands

Command Description
play <video> Play local video
playlink <url> Stream from URL/YouTube/Twitch
ytplay <query> Play YouTube video
ytsearch <query> Search YouTube
stop Stop playback
list Show video library
refresh Update video list
status Show playback status
preview <video> Generate thumbnails
help Show help

Configuration

Configuration is done via .env:

# Selfbot options
TOKEN = "" # Your Discord self-bot token
PREFIX = "$" # The prefix used to trigger your self-bot commands
GUILD_ID = "" # The ID of the Discord server your self-bot will be running on
COMMAND_CHANNEL_ID = "" # The ID of the Discord channel where your self-bot will respond to commands
VIDEO_CHANNEL_ID = "" # The ID of the Discord voice/video channel where your self-bot will stream videos

# General options
VIDEOS_DIR = "./videos" # The local path where you store video files
PREVIEW_CACHE_DIR = "./tmp/preview-cache" # The local path where your self-bot will cache video preview thumbnails

# Stream options
STREAM_RESPECT_VIDEO_PARAMS = "false"  # This option is used to respect video parameters such as width, height, fps, bitrate, and max bitrate.
STREAM_WIDTH = "1280" # The width of the video stream in pixels
STREAM_HEIGHT = "720" # The height of the video stream in pixels
STREAM_FPS = "30" # The frames per second (FPS) of the video stream
STREAM_BITRATE_KBPS = "2000" # The bitrate of the video stream in kilobits per second (Kbps)
STREAM_MAX_BITRATE_KBPS = "2500" # The maximum bitrate of the video stream in kilobits per second (Kbps)
STREAM_HARDWARE_ACCELERATION = "false" # Whether to use hardware acceleration for video decoding, set to "true" to enable, "false" to disable
STREAM_VIDEO_CODEC = "H264" # The video codec to use for the stream, can be "H264" or "H265" or "VP8"

# STREAM_H26X_PRESET: Determines the encoding preset for H26x video streams. 
# If the STREAM_H26X_PRESET environment variable is set, it parses the value 
# using the parsePreset function. If not set, it defaults to 'ultrafast' for 
# optimal encoding speed. This preset is only applicable when the codec is 
# H26x; otherwise, it should be disabled or ignored.
# Available presets: "ultrafast", "superfast", "veryfast", "faster", 
# "fast", "medium", "slow", "slower", "veryslow".
STREAM_H26X_PRESET = "ultrafast"

# Videos server options
SERVER_ENABLED = "false" # Whether to enable the built-in video server
SERVER_USERNAME = "admin" # The username for the video server's admin interface
SERVER_PASSWORD = "admin" # The password for the video server's admin interface
SERVER_PORT = "8080" # The port number the video server will listen on

Get Token ?

Check the Get token wiki

Server

An optional basic HTTP server can be enabled to manage the video library:

  • List videos
  • Upload videos
  • Delete videos
  • Generate video preview thumbnails

Todo

  • Adding ytsearch and ytplay commands

🤝 Contributing

Contributions are welcome! Feel free to:

⚠️ Legal

This bot may violate Discord's ToS. Use at your own risk.

إبراء الذمة

أتبرأ من أي استخدام غير أخلاقي لهذا المشروع أمام الله.

📝 License

Licensed under MIT License. See LICENSE for details.