const BASE_URL = "https://lynxsnip.vercel.app"; const API_KEY = "Lynxsnippets"; let handler = async (m, { text, command, conn }) => { // Wajib reply pesan yang berisi kode if (!m.quoted || !m.quoted.text) { return m.reply( `📌 *Sistem Snippet Lynx (Reply Only)*\n\n` + `1. Kirim kode lu ke chat.\n` + `2. Reply kode tersebut dengan format:\n` + `*${command} ||*\n\n` + `*Format Waktu:* \`1h\` (1 jam), \`1d\` (1 hari), \`30m\` (30 menit). Lewati jika ingin permanen.\n\n` + `*Contoh Reply:*\n` + `*${command} config.js|1h|javascript*\n` + `*${command} index.html|html*` ); } let content = m.quoted.text.trim(); if (!content) return m.reply("❌ Pesan yang di-reply tidak mengandung teks/kode."); // Parsing argumen dari teks command let args = text ? text.split("|").map(v => v.trim()) : []; let title = "untitled"; let ttlHours = null; let lang = "plaintext"; let timeRaw = ""; if (args.length > 0) { title = args[0] || "untitled"; if (args.length > 1) { // Cek apakah part ke-2 adalah format waktu (contoh: 1h, 2d, 30m) let match = args[1].toLowerCase().match(/^(\d+)(h|d|m)$/); if (match) { timeRaw = args[1]; let val = parseInt(match[1]); ttlHours = match[2] === 'h' ? val : match[2] === 'd' ? val * 24 : val / 60; // Bahasa ada di part ke-3 lang = args[2] || "plaintext"; } else { // Jika bukan format waktu, anggap user langsung masukin bahasa (title|lang) lang = args[1] || "plaintext"; } } } try { await m.react('⏳'); await m.reply("⏳ Mengupload snippet ke server Lynx..."); let res = await fetch(`${BASE_URL}/api/paste`, { method: "POST", headers: { "Content-Type": "application/json", "x-api-key": API_KEY, }, body: JSON.stringify({ title, lang, content, ttlHours }), }); let data = await res.json(); if (!res.ok) { await m.react('❌'); return m.reply(`❌ Gagal upload: ${data.error || "error tidak diketahui"}`); } let expText = ttlHours ? `🕒 Expire: ${timeRaw} lagi` : "🕒 Expire: Permanen"; await m.react('✅'); await m.reply( `✅ *Snippet tersimpan!*\n\n` + `📄 Nama: ${title}\n` + `🔤 Bahasa: ${lang}\n` + `${expText}\n` + `🔗 Link: ${data.url}\n` + `📋 Raw: ${data.raw}` ); } catch (e) { await m.react('❌'); m.reply(`❌ Error: ${e.message}`); } }; handler.help = ['snip']; handler.command = /^(snip)$/i; handler.tags = ['developer']; handler.rowner = true; export default handler;