aziziyanmahdiyar/ZorenixUploaderAI_UploaderbotPublic · Bot Template
AIZorenixUploader AI appears to be a Telegram automation bot. Commands include /start, /@, /!, /@@, /*, /files, /dl, /verify. Observed in code: messaging, storage, libs, keyboards, web.
Utilityutility
42 commands0 envUpdated 1mo agoCreated Sep 22, 2026
commands/files.js
javascript · 171 lines
1/**#command2name: files3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ═══════════ files — لیست و کتابخانه آموزشها ═══════════13let isCb = (update_type === "callback_query" && update && update.callback_query)14if (isCb) { await Api.answerCallbackQuery({ callback_query_id: update.callback_query.id }) }15 16let userLang = await db.bot.get("lang:" + user.id, "fa")17 18// 🔐 گارد قفل19let gcfg = {}20let gsok = false21let grok = false22let ginv = 023let gfresh = false24try {25 let gm0 = await db.bot.mget(["cfg", "sok:" + user.id, "rok:" + user.id, "inv:" + user.id, "pass:" + user.id])26 if (gm0) {27 gcfg = gm0["cfg"] || {}28 gsok = (gm0["sok:" + user.id] === true)29 grok = (gm0["rok:" + user.id] === true)30 ginv = Number(gm0["inv:" + user.id] || 0)31 if (gm0["pass:" + user.id] && (Date.now() - Number(gm0["pass:" + user.id]) < 180000)) { gfresh = true }32 }33} catch (e) { }34 35let gstaff = (user.id === 5861439682 || (gcfg.admins || []).indexOf(user.id) !== -1)36if (!gstaff) {37 let galways = (gcfg.gate_always === true)38 let gchans = (gcfg.channels || []).filter(x => x)39 let gjoinBad = false40 let gleft = []41 if (gcfg.gate_join !== false && gchans.length) {42 let gres = null43 try { gres = await Libs.mcl.check(user.id, gchans.slice(0, 10)) } catch (e) { gres = null }44 if (gres) {45 let gbad = Array.isArray(gres.invalid) ? gres.invalid : []46 gleft = Array.isArray(gres.left) ? gres.left : []47 gjoinBad = (gres.allJoined !== true)48 if (gjoinBad && gbad.length && gleft.length === 0) { gjoinBad = false }49 }50 }51 let gsaveNeed = (gcfg.gate_save !== false && !(gsok === true && (!galways || gfresh)))52 let greactNeed = (gcfg.gate_react !== false && !(grok === true && (!galways || gfresh)))53 let grefNeed = Number(gcfg.gate_ref || 0)54 let grefBad = (grefNeed > 0 && ginv < grefNeed)55 56 if (gjoinBad || gsaveNeed || greactNeed || grefBad) {57 let grows = []58 if (gjoinBad) {59 let gbtn = null60 try { gbtn = Libs.mcl.getBtn((gleft.length ? gleft : gchans).slice(0, 10), { buttonPrefix: (userLang === "en" ? "📢 Join" : (userLang === "ar" ? "📢 انضمام" : "📢 عضویت")) }) } catch (e) { gbtn = null }61 if (Array.isArray(gbtn) && gbtn.length) {62 grows = grows.concat(gbtn)63 } else {64 for (let gcx of (gleft.length ? gleft : gchans)) {65 if (String(gcx).indexOf("@") === 0) { grows.push([{ text: (userLang === "en" ? "📢 Join " : (userLang === "ar" ? "📢 انضمام " : "📢 عضویت ")) + gcx, url: "https://t.me/" + String(gcx).replace("@", ""), style: "primary" }]) }66 }67 }68 }69 if (gcfg.react_link && (gsaveNeed || greactNeed)) { grows.push([{ text: (userLang === "en" ? "📌 Go to Channel Post" : (userLang === "ar" ? "📌 الذهاب لمنشور القناة" : "📌 رفتن به پست کانال")), url: gcfg.react_link, style: "success" }]) }70 if (gsaveNeed) { grows.push([{ text: (userLang === "en" ? "🟢 💾 I Saved / Viewed" : (userLang === "ar" ? "🟢 💾 حفظت / شاهدت" : "💾 سیو کردم / سین کردم")), callback_data: "save", style: "success" }]) }71 if (greactNeed) { grows.push([{ text: (userLang === "en" ? "🟢 ❤️ I Reacted" : (userLang === "ar" ? "🟢 ❤️ تفاعلت مع المنشور" : "✅ ریاکشن زدم")), callback_data: "rc", style: "success" }]) }72 if (grefBad) { grows.push([{ text: (userLang === "en" ? "🔵 🎁 Invite Friends / My Link" : (userLang === "ar" ? "🔵 🎁 دعوة الأصدقاء / رابطي" : "🎁 دعوت دوستان / لینک من")), callback_data: "dl davat", style: "primary" }]) }73 grows.push([74 { text: (userLang === "en" ? "🔵 🔄 Verify Status" : (userLang === "ar" ? "🔵 🔄 التحقق من الحالة" : "🔄 بررسی وضعیت")), callback_data: "verify", style: "primary" },75 { text: (userLang === "en" ? "🔴 ✈️ Support" : (userLang === "ar" ? "🔴 ✈️ الدعم الفني" : "📞 پشتیبانی")), callback_data: "support", style: "danger" }76 ])77 78 let gtxt = ""79 if (userLang === "en") {80 gtxt = "🔐 <b>Access Restricted — Complete Requirements First</b>\n\n"81 if (gjoinBad) { gtxt = gtxt + "▫️ 📢 Join our " + gchans.length + " channel(s)\n" }82 if (gsaveNeed) { gtxt = gtxt + "▫️ 💾 Save / View channel post\n" }83 if (greactNeed) { gtxt = gtxt + "▫️ ❤️ Add reaction to channel post\n" }84 if (grefBad) { gtxt = gtxt + "▫️ 🎁 Invite " + grefNeed + " friends (Current: " + ginv + ")\n" }85 gtxt = gtxt + "\n🤖 Click 'Verify Status' after completing them."86 } else if (userLang === "ar") {87 gtxt = "🔐 <b>الدخول مقفل — يرجى إكمال الشروط أولاً</b>\n\n"88 if (gjoinBad) { gtxt = gtxt + "▫️ 📢 الانضمام إلى " + gchans.length + " من قنواتنا\n" }89 if (gsaveNeed) { gtxt = gtxt + "▫️ 💾 حفظ / مشاهدة منشور القناة\n" }90 if (greactNeed) { gtxt = gtxt + "▫️ ❤️ التفاعل مع منشور القناة\n" }91 if (grefBad) { gtxt = gtxt + "▫️ 🎁 دعوة " + grefNeed + " أصدقاء (حالياً: " + ginv + ")\n" }92 gtxt = gtxt + "\n🤖 اضغط على 'التحقق من الحالة' بعد الإتمام."93 } else {94 gtxt = "🔐 <b>درِ ورود بسته است — اول قفلها</b>\n\n"95 if (gjoinBad) { gtxt = gtxt + "▫️ 📢 عضویت در " + gchans.length + " کانال ما\n" }96 if (gsaveNeed) { gtxt = gtxt + "▫️ 💾 سیو (سین) کردن پست کانال\n" }97 if (greactNeed) { gtxt = gtxt + "▫️ ❤️ ریاکشن روی پست کانال\n" }98 if (grefBad) { gtxt = gtxt + "▫️ 🎁 دعوت " + grefNeed + " نفر از دوستات (تا الان: " + ginv + " نفر)\n" }99 gtxt = gtxt + "\n🤖 هر دکمهای بزنی خودم دوباره چک میکنم؛ تا همه رعایت نشه از همین صفحه بیرون نمیری."100 }101 return Api.sendMessage({ chat_id: chat.id, text: gtxt, parse_mode: "HTML", reply_markup: { inline_keyboard: grows } })102 }103}104 105let plist = await db.bot.get("plist", [])106let page = 0107let pParts = String(params || "").trim().split(" ")108if (pParts.length && !isNaN(Number(pParts[0]))) { page = Math.max(0, parseInt(pParts[0], 10)) }109 110let PER_PAGE = 8111let totalPages = Math.ceil(plist.length / PER_PAGE) || 1112if (page >= totalPages) { page = totalPages - 1 }113 114let startIdx = page * PER_PAGE115let endIdx = startIdx + PER_PAGE116let pageIds = plist.slice().reverse().slice(startIdx, endIdx)117 118let pageData = pageIds.length ? await db.bot.mget(pageIds.map(x => "p:" + x)) : {}119 120let rows = []121for (let id of pageIds) {122 let p = pageData["p:" + id]123 if (!p) { continue }124 let t = p.title ? p.title : ((userLang === "en" ? "Course #" : (userLang === "ar" ? "شرح #" : "آموزش #")) + id)125 if (t.length > 30) { t = t.slice(0, 30) + "…" }126 rows.push([{ text: (p.pass ? "🔒 " : "📄 ") + t, callback_data: "dl " + id, style: "primary" }])127}128 129if (!rows.length) {130 let emptyMsg = (userLang === "en" ? "📭 No tutorials added yet." : (userLang === "ar" ? "📭 لم تتم إضافة أي شروحات بعد." : "📭 هنوز آموزشی اضافه نشده است."))131 rows.push([{ text: emptyMsg, callback_data: "files 0", style: "primary" }])132}133 134let nav = []135if (page > 0) { nav.push({ text: (userLang === "en" ? "⬅️ Prev" : (userLang === "ar" ? "⬅️ السابق" : "⬅️ قبلی")), callback_data: "files " + (page - 1), style: "primary" }) }136nav.push({ text: (userLang === "en" ? "📄 Page " + (page + 1) + "/" + totalPages : (userLang === "ar" ? "📄 صفحة " + (page + 1) + "/" + totalPages : "📄 صفحه " + (page + 1) + " از " + totalPages)), callback_data: "files " + page, style: "primary" })137if (page < totalPages - 1) { nav.push({ text: (userLang === "en" ? "Next ➡️" : (userLang === "ar" ? "التالي ➡️" : "بعدی ➡️")), callback_data: "files " + (page + 1), style: "primary" }) }138if (nav.length > 1) { rows.push(nav) }139 140rows.push([141 { text: (userLang === "en" ? "🟢 🔍 Search" : (userLang === "ar" ? "🟢 🔍 بحث" : "🟢 🔎 جستوجو")), callback_data: "search", style: "success" },142 { text: (userLang === "en" ? "🔵 🏠 Main Menu" : (userLang === "ar" ? "🔵 🏠 القائمة الرئيسية" : "🔵 🏠 منوی اصلی")), callback_data: "/start", style: "primary" }143])144 145let titleMsg = ""146if (userLang === "en") {147 titleMsg = "<blockquote>📚 <b>TUTORIAL & COURSE LIBRARY</b></blockquote>\n\n" +148 "📚 <b>Total available tutorials:</b> " + plist.length + "\n" +149 "📄 <b>Page:</b> " + (page + 1) + " of " + totalPages + "\n\n" +150 "<i>Click on any tutorial to view preview details:</i>"151} else if (userLang === "ar") {152 titleMsg = "<blockquote>📚 <b>مكتبة الشروحات والدورات</b></blockquote>\n\n" +153 "📚 <b>إجمالي الشروحات:</b> " + plist.length + "\n" +154 "📄 <b>الصفحة:</b> " + (page + 1) + " من " + totalPages + "\n\n" +155 "<i>اضغط على أي شرح لمعاينة التفاصيل:</i>"156} else {157 titleMsg = "<blockquote>📚 <b>کتابخانه آموزشها</b></blockquote>\n\n" +158 "📚 <b>تعداد کل آموزشها:</b> " + plist.length + "\n" +159 "📄 <b>صفحه:</b> " + (page + 1) + " از " + totalPages + "\n\n" +160 "<i>برای مشاهده مشخصات روی هر آموزش کلیک کنید:</i>"161}162 163if (isCb && update.callback_query.message) {164 try {165 await Api.editMessageText({ chat_id: chat.id, message_id: update.callback_query.message.message_id, text: titleMsg, parse_mode: "HTML", reply_markup: { inline_keyboard: rows } })166 } catch(e) {167 await Api.sendMessage({ chat_id: chat.id, text: titleMsg, parse_mode: "HTML", reply_markup: { inline_keyboard: rows } })168 }169} else {170 await Api.sendMessage({ chat_id: chat.id, text: titleMsg, parse_mode: "HTML", reply_markup: { inline_keyboard: rows } })171}