ابلود/upload
javascriptv1MITنُشر ١ أغسطس ٢٠٢٦· ♥ 0 · ⬇ 1 · 💬 0
رفع صور وملفات
// كود رفع ملفات يدعم 9 مصادر
// https://whatsapp.com/channel/0029Vb7Nq294Y9le1aAcTE0D
// تابعو القناة هننشر اكواد تانية "izana,uncel shawaza"
import axios from 'axios'
import FormData from 'form-data'
import { fileTypeFromBuffer } from 'file-type'
const API_BASE = 'https://engez.a7a.online/api/v1'
const SOURCES = {
'1': 'uguu',
'2': 'quax',
'3': 'ezgif',
'4': 'top4top',
'5': 'postimages',
'6': 'videy',
'7': '8upload',
'8': 'litterbox',
'9': 'tmpfiles'
}
const SOURCE_NAMES = {
'uguu': 'Uguu',
'quax': 'Quax',
'ezgif': 'Ezgif',
'top4top': 'Top4Top',
'postimages': 'PostImages',
'videy': 'Videy',
'8upload': '8Upload',
'litterbox': 'Litterbox',
'tmpfiles': 'TmpFiles'
}
async function uploadFile(fileBuffer, source = 'uguu') {
try {
const form = new FormData()
const fileInfo = await fileTypeFromBuffer(fileBuffer)
const ext = fileInfo?.ext || 'bin'
form.append('files[]', fileBuffer, `file.${ext}`)
const uploadRes = await axios.post('https://uguu.se/upload.php', form, {
headers: { ...form.getHeaders() },
timeout: 30000
})
if (!uploadRes.data?.files?.[0]?.url) {
throw new Error('فشل رفع الملف إلى Uguu')
}
const fileUrl = uploadRes.data.files[0].url
const params = new URLSearchParams()
params.append('fileUrl', fileUrl)
params.append('source', source)
const response = await axios.get(`${API_BASE}/tools/upload?${params.toString()}`, {
timeout: 30000
})
if (!response.data?.success) {
throw new Error(response.data?.error || 'فشل الرفع')
}
return response.data.response
} catch (error) {
throw new Error(error.message || 'فشل الاتصال')
}
}
const handler = async (m, { conn, text }) => {
const q = m.quoted
if (!q || !q.mimetype) {
return m.reply(
'📤 *رفع ملفات*\n\n' +
'📌 *الاستخدام:*\n' +
'• ارد على صورة/فيديو/ملف\n' +
'• اكتب `.لرابط` فقط للرفع التلقائي\n' +
'• اكتب `.لرابط 1` للرفع لـ Uguu\n' +
'• اكتب `.لرابط 2` للرفع لـ Quax\n' +
'• وهكذا حتى 9\n\n' +
'📌 *المصادر:*\n' +
'1- Uguu\n' +
'2- Quax\n' +
'3- Ezgif\n' +
'4- Top4Top\n' +
'5- PostImages\n' +
'6- Videy\n' +
'7- 8Upload\n' +
'8- Litterbox\n' +
'9- TmpFiles\n\n' +
'📌 *الرفع التلقائي:*\n' +
'• صور → PostImages\n' +
'• فيديوهات → Videy\n' +
'• ملفات أخرى → Uguu'
)
}
await m.react('⏳')
try {
const buffer = await q.download()
if (!buffer || buffer.length === 0) {
throw new Error('فشل تحميل الملف')
}
const fileInfo = await fileTypeFromBuffer(buffer)
const mimeType = fileInfo?.mime || q.mimetype || 'application/octet-stream'
// تحديد المصدر
let source
const selected = text?.trim()
if (selected && SOURCES[selected]) {
// مستخدم اختار رقم
source = SOURCES[selected]
} else {
// رفع تلقائي حسب النوع
if (mimeType.startsWith('image/')) {
source = 'postimages'
} else if (mimeType.startsWith('video/')) {
source = 'videy'
} else {
source = 'uguu'
}
}
const result = await uploadFile(buffer, source)
if (result?.url) {
const size = result.size || buffer.length
const sizeFormatted = size > 1024 * 1024
? `${(size / (1024 * 1024)).toFixed(2)} MB`
: `${(size / 1024).toFixed(2)} KB`
const sourceName = SOURCE_NAMES[source] || source
await m.reply(
`✅ *تم الرفع بنجاح*\n\n` +
`📦 *الملف:* ${result.fileName || 'ملف'}\n` +
`📂 *النوع:* ${result.mimeType || mimeType}\n` +
`📊 *الحجم:* ${sizeFormatted}\n` +
`📥 *المصدر:* ${sourceName}\n` +
`🔗 *الرابط:* ${result.url}`
)
await m.react('✅')
} else {
throw new Error('لم يتم العثور على رابط')
}
} catch (error) {
await m.react('❌')
return m.reply(`❌ *خطأ:* ${error.message}`)
}
}
handler.command = ['لرابط']
export default handler
التعليقات (0)
سجّل الدخول للتعليق.