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
Back to folder

commands/fsave.js

javascript · 97 lines

Raw
1/**#command2name: fsave3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ═══════════ fsave — ثبت نهایی آموزش ═══════════13let OWNER = 586143968214let cfg = await db.bot.get("cfg", {})15let admins = cfg.admins || []16if (!user || (user.id !== OWNER && admins.indexOf(user.id) === -1)) { return }17 18if (update_type === "callback_query" && update && update.callback_query) {19  await Api.answerCallbackQuery({ callback_query_id: update.callback_query.id })20}21 22let d = await db.bot.get("draft:" + user.id, null)23if (!d) {24  return Bot.sendMessage("❌ پیش‌نویس پیدا نشد. از پنل → ➕ افزودن آموزش شروع کن.")25}26 27let id = await db.bot.incr("next_id", 1)28 29await db.bot.set("p:" + id, {30  id: id,31  title: d.title || ("آموزش #" + id),32  preview: d.preview || "",33  desc: d.desc || "",34  cover: d.cover || null,35  link: d.link || "",36  pass: d.pass || "",37  file_id: d.file_id || "",38  file_type: d.file_type || "",39  file_name: d.file_name || "",40  published: false,41  chmsg: null,42  dl: 0,43  by: user.id,44  created: new Date().toISOString()45})46 47let plist = await db.bot.get("plist", [])48plist.push(id)49await db.bot.set("plist", plist)50await db.bot.del("draft:" + user.id)51await db.bot.del("wstep:" + user.id)52 53Api.sendMessage({54  chat_id: chat.id,55  text: "🎉 <b>آموزش ساخته شد!</b>\n\n🆔 کد آموزش: <code>" + id + "</code>\n📝 " + Libs.tgutil.escapeText(d.title || ("آموزش #" + id), "html") + "\n" + (d.pass ? "🔒 با رمز\n" : "") + (d.file_id ? "" : "ℹ️ بدون فایل (فقط ویدیو/توضیحات)\n") + "\nحالا کاربرا از /start یا کیبورد پایین می‌تونن بازش کنن.",56  parse_mode: "HTML",57  reply_markup: {58    inline_keyboard: [59      [{ text: "📢 ارسال به کانال", callback_data: "adm pub " + id }],60      [{ text: "🗂 مدیریت آموزش", callback_data: "adm item " + id }, { text: "🛠 پنل", callback_data: "adm home" }]61    ]62  }63})64 65// ⌨️ کیبورد پایین صفحه با آموزش‌های جدید (برای همین ادمین، که ببینه چطور شده)66if (cfg.show_kb !== false) {67  let kIds = plist.slice().reverse()68  let kData = {}69  for (let ci = 0; ci < kIds.length; ci += 30) {70    let ck = kIds.slice(ci, ci + 30)71    let cp = await db.bot.mget(ck.map(x => "p:" + x))72    if (cp) { for (let key in cp) { kData[key] = cp[key] } }73  }74  let kbTop = [75    [{ text: "📚 آموزش‌ها" }, { text: "🔎 جست‌وجو" }],76    [{ text: "👤 پروفایل من" }, { text: "❓ راهنما" }],77    [{ text: "📞 پشتیبانی" }]78  ]79  let fRows = []80  let cur = []81  for (let kid of kIds) {82    let kp = kData["p:" + kid]83    if (!kp) { continue }84    let kt = kp.title || ("آموزش #" + kid)85    if (kt.length > 28) { kt = kt.slice(0, 28) + "…" }86    cur.push({ text: (kp.pass ? "🔒 " : "📄 ") + kt })87    if (cur.length === 2) { fRows.push(cur); cur = [] }88  }89  if (cur.length) { fRows.push(cur) }90 91  Api.sendMessage({92    chat_id: chat.id,93    text: "⌨️ <b>کیبورد پایین صفحه آپدیت شد</b> — آموزش جدید اضافه شد ✅",94    parse_mode: "HTML",95    reply_markup: { keyboard: [kbTop[0]].concat(fRows).concat(kbTop.slice(1)), resize_keyboard: true }96  })97}