Telegram Video Downloader Bot ဖန်တီးနည်း 📥
မင်္ဂလာပါ ခင်ဗျာ။ ဒီနေ့မှာတော့ လူကြိုက်များပြီး အသုံးဝင်တဲ့ Telegram Downloader Bot တစ်ခုအကြောင်း မျှဝေပေးချင်ပါတယ်။ ဒီ Bot လေးက YouTube, TikTok, Facebook စတဲ့ Social Media တွေက Video တွေကို Watermark မပါဘဲ ဒေါင်းလုပ်ဆွဲပေးနိုင်မှာပါ။
✨ Bot ရဲ့ အားသာချက်များ
- ✅ Watermark မပါ — TikTok ဗီဒီယိုတွေကို သန့်သန့်ရှင်းရှင်း ဒေါင်းပေးနိုင်ပါတယ်။
- ✅ မြန်ဆန်မှု — VPS/Server အမြန်နှုန်းမြင့်ရင် ပိုမြန်ပါတယ်။
- ✅ အခမဲ့ — ကိုယ်ပိုင်တင်ထားရင် ကိုယ်ပိုင်အသုံးစရိတ်တင်ပဲရှိပါတယ်။
Programming အများကြီး မသိရင်တောင် လိုက်လုပ်လို့ရအောင် တစ်ဆင့်ချင်း ရှင်းပေးထားပါတယ်။
- VPS တစ်လုံး (Ubuntu OS)
- Telegram Bot Token (BotFather မှ ယူပါ)
- Python (Ver 3.x)
အဆင့် (၁) - Server ပြင်ဆင်ခြင်း
ပထမဆုံး Server ကို Update လုပ်ပါမယ်။
sudo apt update && sudo apt upgrade -y
Downloader အတွက် (ffmpeg) သွင်းပါမယ်။
sudo apt install ffmpeg -y
Bot run ဖို့ Python3 + screen သွင်းပါမယ်။
sudo apt install python3-pip screen -y
Python Library များ သွင်းခြင်း:
Pyrogram နဲ့ tgcrypto (မြန်ဆန်ဖို့) + yt-dlp (download) သွင်းပါ။
Error တက်ရင် --break-system-packages ဖြုတ်ပြီး ပြန်သွင်းပါ။
pip3 install pyrogram tgcrypto yt-dlp --break-system-packages
yt-dlp ကို Official GitHub ကနေ update (Facebook error မတက်အောင်)။
pip3 install -U https://github.com/yt-dlp/yt-dlp/archive/master.zip --break-system-packages
အဆင့် (၂) - API ID နှင့် Hash ရယူခြင်း
ပုံမှန် Bot တွေက 50MB limit ရှိတတ်ပါတယ်။ 2GB အထိ ပို့နိုင်အောင် Pyrogram သုံးထားလို့
API ID / HASH လိုပါတယ်။
- my.telegram.org ကို ဝင်ပါ။
- ဖုန်းနံပါတ်ရိုက်ထည့်ပြီး Login ဝင်ပါ။
- API Development tools ကို နှိပ်ပါ။
- App title / Short name ကို ဖြည့်ပါ (ဥပမာ
MyDownloader)။ - Create နှိပ်ပြီး api_id နဲ့ api_hash ကို ကူးယူထားပါ။
အဆင့် (၃) - Script ရေးသားခြင်း
Folder သီးသန့်ဆောက်ပြီး ဝင်ပါမယ်။
mkdir downloader_bot && cd downloader_bot
Bot ဖိုင်တည်ဆောက်ပါမယ်။
nano downloader.py
BOT_TOKEN, API_ID, API_HASH
ကို မိမိအချက်အလက်အမှန် ထည့်ပေးပါ။
import os
import time
import asyncio
import yt_dlp
from pyrogram import Client, filters
# ==========================================
# ⚠️ User Credentials
BOT_TOKEN = 'Bot token ထည့်ရန်'
API_ID = api id ထည့်ပေးရန်
API_HASH = 'api hash ထည့်ပေးရန်'
# ==========================================
app = Client("my_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)
# --- Helper: Progress Bar ---
async def progress(current, total, message):
now = time.time()
if not hasattr(message, 'last_update_time'):
message.last_update_time = 0
if now - message.last_update_time > 5:
percent = current * 100 / total
try:
await message.edit_text(f"📤 Uploading: {percent:.1f}%")
except:
pass
message.last_update_time = now
# --- Start Command ---
@app.on_message(filters.command("start"))
async def start(client, message):
await message.reply_text(
"👋 **Video Downloader Bot Ready!**\n\n"
"Link ပို့လိုက်ရင် Video ဒေါင်းပေးပါမယ်။\n"
"(YouTube, Facebook, TikTok, Instagram, Sora etc.)"
)
# --- Cookie Handler (Downloader အတွက် မရှိမဖြစ်မို့ ထားထားပါသည်) ---
@app.on_message(filters.document)
async def handle_cookies(client, message):
file_name = message.document.file_name.lower()
if file_name.endswith(".txt"):
save_name = "cookies.txt"
if "fb" in file_name:
save_name = "fb_cookies.txt"
elif "ig" in file_name:
save_name = "ig_cookies.txt"
elif "sora" in file_name:
save_name = "sora_cookies.txt"
elif "yt" in file_name:
save_name = "yt_cookies.txt"
await message.download(file_name=save_name)
await message.reply_text(f"🍪 **{save_name}** saved!")
# --- Downloader Logic ---
@app.on_message(filters.text & ~filters.command("start"))
async def download_video(client, message):
url = message.text
if not url.startswith("http"):
return await message.reply_text("⚠️ Link အမှန်ပေးပို့ပါ။")
status_msg = await message.reply_text("⏳ **Downloading...**")
try:
timestamp = int(time.time())
ydl_opts = {
'format': 'bestvideo+bestaudio/best',
'outtmpl': f"video_{timestamp}.%(ext)s",
'quiet': True,
'max_filesize': 2000 * 1024 * 1024, # 2GB
'extractor_args': {'generic': ['impersonate']},
}
cookie_file = None
if "facebook.com" in url or "fb.watch" in url:
cookie_file = "fb_cookies.txt"
elif "instagram.com" in url:
cookie_file = "ig_cookies.txt"
elif "sora" in url:
cookie_file = "sora_cookies.txt"
elif any(x in url for x in ["youtube.com", "youtu.be"]):
cookie_file = "yt_cookies.txt"
else:
cookie_file = "cookies.txt"
if cookie_file:
if os.path.exists(f"downloads/{cookie_file}"):
ydl_opts['cookiefile'] = f"downloads/{cookie_file}"
elif os.path.exists(cookie_file):
ydl_opts['cookiefile'] = cookie_file
loop = asyncio.get_event_loop()
def _dl():
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url, download=True)
return ydl.prepare_filename(info)
final_filename = await loop.run_in_executor(None, _dl)
if not os.path.exists(final_filename):
await status_msg.edit_text("❌ Download Failed.")
return
await status_msg.edit_text("📤 **Uploading...**")
await client.send_video(
chat_id=message.chat.id,
video=final_filename,
caption="✅ Downloaded via Bot",
supports_streaming=True,
progress=progress,
progress_args=(status_msg,)
)
os.remove(final_filename)
await status_msg.delete()
except Exception as e:
await status_msg.edit_text(f"⚠️ Error: {str(e)}")
if 'final_filename' in locals() and final_filename and os.path.exists(final_filename):
os.remove(final_filename)
if __name__ == '__main__':
print("Downloader Bot Started...")
app.run()
Save လုပ်ရန်: Ctrl+X → Y → Enter
Bot စမ်း run ကြည့်ပါမယ်။
python3 downloader.py
အဆင့် (၄) - 24/7 Run နိုင်ရန် Service ဖန်တီးခြင်း
Bot ကို terminal ပိတ်သွားရင်တောင် run နေဖို့ service ဖန်တီးပါမယ်။
အရင်ဆုံး bot ကို Ctrl+C နဲ့ ရပ်ပါ။
sudo nano /etc/systemd/system/downloader.service
Service file ထဲမှာ အောက်ကစာတွေ ထည့်ပါ။
[Unit] Description=Video Downloader Bot After=network.target [Service] User=root WorkingDirectory=/root/downloader_bot ExecStart=/usr/bin/python3 /root/downloader_bot/downloader.py Restart=always [Install] WantedBy=multi-user.target
ပြီးရင် Start/Enable လုပ်ပါ။
sudo systemctl daemon-reload sudo systemctl start downloader sudo systemctl enable downloader
အဆင့် (၅) - Login Error ဖြေရှင်းနည်း (Cookies)
YouTube/Facebook/Instagram မှာ login error တက်ရင် cookies ထည့်ရပါတယ်။
📱 Android
- Kiwi Browser ကို install လုပ်ပါ။
- YouTube.com ကိုသွားပြီး Gmail login ဝင်ထားပါ။
- Get cookies.txt LOCALLY extension ကို install လုပ်ပါ။
- Export လုပ်ပြီး
cookies.txtကို bot ဆီပို့ပါ။
💻 PC
- Chrome မှာ Get cookies.txt LOCALLY extension ထည့်ပါ။
- YouTube login ဝင်ပါ။
- Export လုပ်ပြီး ဖိုင်ကို bot ဆီ ပို့ပါ။
• Facebook:
fb_cookies.txt• YouTube:
yt_cookies.txt• Instagram:
ig_cookies.txt
🎉 ပြီးဆုံးပါပြီ
Demo Bot ကို စမ်းသုံးချင်ရင် အောက်ကနေ သွားနိုင်ပါတယ်။