tg-streaming-bot

Self-hosted Telegram bot that streams movies, music, radio and live TV into a group voice chat — so friends in different cities watch together, in sync.

Built 2026
Python Pyrogram py-tgcalls yt-dlp ffmpeg
Terminal card: tg-streaming-bot playing a movie into a Telegram voice chat

A self-hosted Telegram bot that turns a group voice chat into a shared watch party. Play movies, YouTube, internet radio or live TV into the call and everyone sees the same frames, in sync, from a phone or desktop. Built on Pyrogram + py-tgcalls, with yt-dlp fetching and ffmpeg transcoding — plus an optional Reality-VPN sidecar for networks where Telegram voice is filtered.

Project facts

Scope

  • Streams video/audio into Telegram group voice chats via py-tgcalls
  • Bot + assistant-account architecture (a bot can't join a call)
  • Sources: YouTube, radio, IPTV (50k+ channels), files, live m3u8
  • Shared inline transport: pause/seek/master-volume for the whole room
  • Reality-VPN sidecar tunnelling signaling + voice UDP

Implementation highlights

  • Solved the bot-can't-join-a-call problem with a py-tgcalls assistant account.
  • Made YouTube reliable with a download-then-stream pipeline (android_vr client).
  • Realised voice runs on UDP and shipped a full-tunnel VPN sidecar, not a proxy.

Outcome

A synchronized watch party over Telegram — movies, radio and live TV in one group call, controlled from any phone.

What I'd improve now

Stream-while-downloading, richer queue management, and more sources (Spotify/SoundCloud routing).