/* * Created by : febry.is-a.dev * Plugins create by : Lynx decode * GitHub : vandebry10-star * Github Author plugins : Lynxcode-id * Date : 07-08-2026 * Plugin di buat : 10-09-2026 * * Do not remove the creator's watermark, please respect the creator. */ const randomStr = (len = 12) => Math.random().toString(36).substring(2, 2 + len); class TempMailClient { constructor({ base = "https://api.internal.temp-mail.io/api/v3/" } = {}) { this.base = base.endsWith("/") ? base : base + "/"; } async _call(method, path, body = null, query = {}) { const url = new URL(this.base + path); Object.entries(query).forEach(([k, v]) => { if (v !== undefined && v !== null) url.searchParams.append(k, v); }); const opts = { method: method, headers: { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" } }; if (body) opts.body = JSON.stringify(body); const res = await fetch(url, opts); const text = await res.text(); if (!res.ok) { throw new Error(`HTTP ${res.status}: ${text || res.statusText}`); } const ct = res.headers.get("content-type") || ""; if (ct.includes("json")) { try { return JSON.parse(text); } catch { return text; } } if (ct.includes("text") || ct.includes("eml")) return text; return Buffer.from(text); } async domains() { return await this._call("GET", "domains"); } async create({ name, domain, token } = {}) { let availableDomains = ["tempmail.com"]; if (!domain || typeof domain !== "string" || !domain.includes(".")) { try { const resp = await this.domains(); if (Array.isArray(resp?.domains) && resp.domains.length > 0) { availableDomains = resp.domains.map(d => d.name).filter(n => n && typeof n === "string"); } } catch (err) {} if (availableDomains.length > 0) { domain = availableDomains[Math.floor(Math.random() * availableDomains.length)]; } } if (typeof domain !== "string" || !domain.includes(".")) { throw new Error("Domain must be a valid string (e.g. tempmail.com)"); } const payload = { name: (name && typeof name === "string" ? name.trim() : null) || `user${Math.floor(Math.random() * 999999)}`, domain: domain.trim(), token: token || `token_${randomStr()}` }; return await this._call("POST", "email/new", payload); } async messages({ email } = {}) { if (!email || typeof email !== "string") throw new Error("email required and must be string"); try { return await this._call("GET", `email/${encodeURIComponent(email)}/messages`); } catch (error) { if (error.message.includes("Email not found") || error.message.includes("101")) { return []; } throw error; } } async source({ messageId } = {}) { if (!messageId) throw new Error("messageId required"); return await this._call("GET", `message/${messageId}/source_code`); } async download({ messageId } = {}) { if (!messageId) throw new Error("messageId required"); const res = await this._call("GET", `message/${messageId}/source_code`, null, { download: 1 }); return Buffer.isBuffer(res) ? res : Buffer.from(res); } } const makeUI = (title, content) => { return `┌˚₊ ๑│ ${title} │๑˚₊\n` + `┇ \n` + content.split('\n').map(line => `│ ${line}`).join('\n') + `\n` + `┇ \n` + `└˚₊ ๑ ────────────── ๑˚₊`; }; let handler = async (m, { conn, args, usedPrefix, command }) => { const api = new TempMailClient(); let action = args[0] ? args[0].toLowerCase() : ''; if (!action) { let txt = `*PANDUAN TEMPMAIL:*\n\n` + `• *${usedPrefix + command} create* ➔ Buat email acak\n` + `• *${usedPrefix + command} custom [nama] [domain]* ➔ Buat email custom\n` + `• *${usedPrefix + command} messages [email]* ➔ Cek kotak masuk\n` + `• *${usedPrefix + command} domains* ➔ Cek list domain\n\n` + `_Contoh: ${usedPrefix + command} messages user@tempmail.com_`; return conn.sendMessage(m.chat, { text: makeUI('T E M P M A I L', txt) }, { quoted: m }); } await m.react('⏳'); try { if (action === 'create') { let res = await api.create(); let txt = `✅ *Email Berhasil Dibuat!*\n\n` + `📧 *Email:* ${res.email}\n` + `🔑 *Token:* ${res.token}\n\n` + `_Cek pesan masuk dengan mengetik:_\n*${usedPrefix + command} messages ${res.email}*`; await m.react('✅'); return conn.sendMessage(m.chat, { text: makeUI('N E W E M A I L', txt) }, { quoted: m }); } if (action === 'custom') { let name = args[1]; let domain = args[2]; if (!name || !domain) { await m.react('❌'); return m.reply(`❌ Format salah!\nContoh: *${usedPrefix + command} custom user tempmail.com*\n\n_Cek domain yang tersedia dengan *${usedPrefix + command} domains*_`); } let res = await api.create({ name, domain }); let txt = `✅ *Email Custom Dibuat!*\n\n` + `📧 *Email:* ${res.email}\n` + `🔑 *Token:* ${res.token}\n\n` + `_Cek pesan masuk dengan mengetik:_\n*${usedPrefix + command} messages ${res.email}*`; await m.react('✅'); return conn.sendMessage(m.chat, { text: makeUI('C U S T O M E M A I L', txt) }, { quoted: m }); } if (action === 'messages') { let email = args[1]; if (!email) { await m.react('❌'); return m.reply(`❌ Masukkan alamat email!\nContoh: *${usedPrefix + command} messages user@tempmail.com*`); } let res = await api.messages({ email }); if (!res || res.length === 0) { await m.react('✅'); return conn.sendMessage(m.chat, { text: makeUI('I N B O X', `📭 Kotak masuk kosong untuk:\n*${email}*`) }, { quoted: m }); } let txt = `📬 *Terdapat ${res.length} Pesan Masuk:*\n\n`; res.forEach((msg, i) => { let date = new Date(msg.created_at).toLocaleString('id-ID'); let bodyPreview = msg.text_body ? (msg.text_body.length > 250 ? msg.text_body.substring(0, 250) + '...' : msg.text_body) : 'Tidak ada teks.'; txt += `*${i + 1}. Dari:* ${msg.from}\n` + `*Subjek:* ${msg.subject}\n` + `*Tanggal:* ${date}\n` + `*Pesan:* ${bodyPreview}\n` + `*ID:* ${msg.id}\n\n` + `---------------------------\n\n`; }); await m.react('✅'); return conn.sendMessage(m.chat, { text: makeUI('I N B O X', txt.trim()) }, { quoted: m }); } if (action === 'domains') { let res = await api.domains(); let txt = `🌐 *Daftar Domain Tersedia:*\n\n`; if (res && res.domains) { res.domains.forEach((d, i) => { txt += `*${i + 1}.* ${d.name} _(${d.type})_\n`; }); } else { txt += `_Gagal memuat domain._`; } await m.react('✅'); return conn.sendMessage(m.chat, { text: makeUI('D O M A I N S', txt.trim()) }, { quoted: m }); } await m.react('❌'); return m.reply(`❌ Perintah tidak dikenal. Ketik *${usedPrefix + command}* untuk melihat panduan.`); } catch (e) { await m.react('❌'); return m.reply(`❌ Terjadi kesalahan API: ${e.message}`); } }; handler.help = ['tempmail2']; handler.tags = ['tools']; handler.command = /^(tempmail2)$/i; handler.limit = true; export default handler;