Article

Telegram sebagai Cloud Storage Pribadi

0
Please log in or register to do it.

Cara Kerja yang Akan Dibuat

File di S3 kamu
      
Bot Telegram upload langsung dari URL (wget)
      
Tersimpan di Server Telegram
      
Kapanpun butuh, tinggal cari di chat bot

Langkah 1 – Buat Bot Telegram

1. Buka Telegram -> cari @BotFather
2. Ketik /newbot
3. Isi nama bot
4. Isi username bot (harus diakhiri 'bot')
5. Dapat TOKEN -> simpan!

Contoh token:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz

Langkah 2 – Dapat Chat ID Kamu

1. Cari @userinfobot di Telegram
2. Start -> langsung dapat ID kamu
3. Simpan ID tersebut

Contoh: 987654321

Langkah 3 – Script Bot (Python)

pip install python-telegram-bot requests

Buat file storage_bot.py:

import os
import requests
import subprocess
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes

TOKEN = "ISI_TOKEN_BOT_KAMU"
OWNER_ID = 987654321  # Ganti dengan chat ID kamu
DOWNLOAD_DIR = "./temp_downloads"

os.makedirs(DOWNLOAD_DIR, exist_ok=True)

# Cek apakah yang akses adalah owner
def is_owner(update: Update) -> bool:
    return update.effective_user.id == OWNER_ID

# Command /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not is_owner(update):
        return
    await update.message.reply_text(
        "🤖 Bot Storage Pribadi\n\n"
        "Perintah:\n"
        "/upload [URL] - Upload file dari URL\n"
        "/help - Bantuan"
    )

# Command /upload dari URL
async def upload_from_url(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not is_owner(update):
        return
    
    if not context.args:
        await update.message.reply_text("❌ Format: /upload [URL]")
        return
    
    url = context.args[0]
    
    # Ambil nama file dari URL
    filename = url.split("/")[-1].split("?")[0]
    filepath = os.path.join(DOWNLOAD_DIR, filename)
    
    msg = await update.message.reply_text(f"⏳ Downloading: {filename}")
    
    try:
        # Download file dari URL (S3 kamu)
        subprocess.run(["wget", "-O", filepath, url], check=True)
        
        await msg.edit_text(f"📤 Uploading ke Telegram: {filename}")
        
        # Kirim ke Telegram berdasarkan tipe file
        ext = filename.lower().split(".")[-1]
        
        with open(filepath, "rb") as f:
            if ext in ["mp4", "mkv", "avi", "mov", "ts"]:
                await update.message.reply_video(
                    video=f,
                    filename=filename,
                    caption=f"✅ {filename}"
                )
            elif ext in ["mp3", "m4a", "aac", "flac"]:
                await update.message.reply_audio(
                    audio=f,
                    filename=filename,
                    caption=f"✅ {filename}"
                )
            elif ext in ["jpg", "jpeg", "png", "gif"]:
                await update.message.reply_photo(
                    photo=f,
                    caption=f"✅ {filename}"
                )
            else:
                await update.message.reply_document(
                    document=f,
                    filename=filename,
                    caption=f"✅ {filename}"
                )
        
        # Hapus file temp setelah upload
        os.remove(filepath)
        await msg.edit_text(f"✅ Selesai: {filename}")
        
    except Exception as e:
        await msg.edit_text(f"❌ Error: {str(e)}")
        if os.path.exists(filepath):
            os.remove(filepath)

# Upload multiple URL sekaligus
async def upload_batch(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not is_owner(update):
        return
    
    if not context.args:
        await update.message.reply_text(
            "❌ Format:\n/batch url1 url2 url3"
        )
        return
    
    urls = context.args
    await update.message.reply_text(f"⏳ Memproses {len(urls)} file...")
    
    for url in urls:
        context.args = [url]
        await upload_from_url(update, context)

async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not is_owner(update):
        return
    await update.message.reply_text(
        "📖 Cara Pakai:\n\n"
        "Upload 1 file:\n"
        "/upload https://s3.amazonaws.com/bucket/file.mp4\n\n"
        "Upload banyak file:\n"
        "/batch url1 url2 url3\n\n"
        "💡 File tersimpan di chat ini\n"
        "🔍 Gunakan search Telegram untuk cari file"
    )

def main():
    app = Application.builder().token(TOKEN).build()
    
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CommandHandler("upload", upload_from_url))
    app.add_handler(CommandHandler("batch", upload_batch))
    app.add_handler(CommandHandler("help", help_command))
    
    print("Bot berjalan...")
    app.run_polling()

if __name__ == "__main__":
    main()

Langkah 4 – Jalankan Bot

python storage_bot.py

Cara Pakai

# Upload 1 file dari S3
/upload https://s3.amazonaws.com/bucketmu/video1.mp4

# Upload banyak sekaligus
/batch https://s3.amazonaws.com/bucketmu/video1.mp4 \
       https://s3.amazonaws.com/bucketmu/video2.mp4

# Cari file yang sudah diupload
Gunakan fitur Search di Telegram
Ketik nama file -> langsung ketemu

Tips Penting

📌 Simpan semua file di "Saved Messages"
   supaya mudah dicari

🔍 Search Telegram sangat powerful
   bisa cari berdasarkan nama file

⚠️  Batas 2GB per file (free)
    Lebih dari itu perlu Premium (4GB)

🚀 Jalankan bot di VPS supaya
   tidak perlu PC selalu nyala

Mau Lebih Praktis?

Jika bot dijalankan di VPS yang sama dengan S3/storage, proses download->upload lebih cepat karena tidak perlu lewat internet lokal kamu

Kamu pakai S3 provider mana? AWS, Cloudflare R2, atau lainnya? Bisa saya sesuaikan script untuk akses langsung tanpa URL publik 😊

Bot Storage ke Telegram dari AWS S3 & Pixeldrain
Penyimpanan File di Telegram (Server Side)

Your email address will not be published. Required fields are marked *