File size: 2,921 Bytes
80287e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ee83604
80287e2
 
ee83604
5ca2077
ee83604
 
80287e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import requests
from pyrogram import Client, filters
from Devine import app as Devine
import time
import asyncio
from config import OWNER_ID

CLOUDINARY_UPLOAD_URL = "https://api.cloudinary.com/v1_1/your_cloud_name/upload"
CLOUD_NAME = "Untitled"  
API_KEY = "769593722143466"
API_SECRET = "DztGFORQqYfBoxCdawh0g5jBRCg"
MAX_FILE_SIZE_MB = 32  
USER_UPLOAD_LIMIT = {}

async def send_temp_message(message, text):
    reply = await message.reply(text)
    
    for i in range(3):
        await asyncio.sleep(0.3)  
        updated_text = text + '.' * (i + 1)  
        await reply.edit(updated_text)  
        
    return reply  

async def upload_file(client, message, file_path):
    waiting_message = await send_temp_message(message, "ᴡᴀɪᴛ")
    
    start_time = time.time()

    with open(file_path, 'rb') as file:
        files = {
            "file": file,
            "api_key": API_KEY,
            "timestamp": int(time.time()),
            "signature": API_SECRET  
        }
        response = requests.post(CLOUDINARY_UPLOAD_URL, data=files)

    upload_time = round(time.time() - start_time, 2)

    if response.status_code == 200:
        response_data = response.json()
        file_url = response_data["secure_url"]  

        await waiting_message.edit(f"<b>ᴜᴘʟᴏᴀᴅᴇᴅ ᴛᴏ <a href='{file_url}' target='_blank'>Cloudinary</a> ɪɴ {upload_time} sᴇᴄᴏɴᴅs.</b>\n\n"
                                   f"<b>ᴄᴏᴘʏ ʟɪɴᴋ : <code>{file_url}</code></b> ")
    else:
        await waiting_message.edit("<b>ғᴀɪʟᴇᴅ ᴛᴏ ᴜᴘʟᴏᴀᴅ ᴛʜᴇ ғɪʟᴇ.</b>")

async def handle_upload(client, message, target_message):
    user_id = message.from_user.id
    current_time = time.time()
    last_upload_time = USER_UPLOAD_LIMIT.get(user_id, 0)

    if current_time - last_upload_time < 10:
        await message.reply("<b>ʏᴏᴜ ᴀʀᴇ ʙᴇɪɴɢ ʀᴀᴛᴇ-ʟɪᴍɪᴛᴇᴅ. ᴛʀʏ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 10 sᴇᴄᴏɴᴅs.</b>")
        return

    USER_UPLOAD_LIMIT[user_id] = current_time

    file_size = (target_message.photo or target_message.video).file_size / (1024 * 1024)  
    if file_size > MAX_FILE_SIZE_MB:
        await message.reply("<b>ғɪʟᴇ sɪᴢᴇ ᴇxᴄᴇᴇᴅs 32 ᴍʙ ʟɪᴍɪᴛ.</b>")
    else:
        file_path = await target_message.download()
        await upload_file(client, message, file_path)

@Devine.on_message(filters.command("xtgm"))
async def upload_command(client, message):
    if message.from_user.is_bot:
        return  

    target_message = message.reply_to_message if message.reply_to_message else message
    media = target_message.photo or target_message.video

    if media:
        await handle_upload(client, message, target_message)
    else:
        await message.reply("<b>sᴇɴᴅ ᴏʀ ʀᴇᴘʟʏ ᴛᴏ ᴀ ᴘʜᴏᴛᴏ ᴏʀ ᴠɪᴅᴇᴏ ғᴏʀ ᴜᴘʟᴏᴀᴅ.</b>")