tempmail2
#rd4qh98javascript · 225 baris · 26 dilihat
/*
* 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;