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 botLangkah 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:ABCdefGHIjklMNOpqrsTUVwxyzLangkah 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 requestsBuat 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.pyCara 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 ketemuTips 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 nyalaMau 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 😊