/* *
* Scraping fetch With Failover
* website endpoint ceknickname.com & ceknickname.vercel.app
* */
const fetch = require('node-fetch');
const config = {
domains: {
primary: "https://ceknickname.com",
fallback: "https://ceknickname.vercel.app"
},
apis: {
mobileLegends: {
default: "mobile-legends",
alternatives: ["mobile-legends-dg", "mobile-legends-mp"]
}
}
};
// ====================================
async function fetchWithFallback(game, params, usePrimaryDomain = true, apiIndex = -1) {
if (!config.apis[game]) {
return {
code: 400,
status: "false",
message: `Game ${game} tidak didukung`
};
}
const domain = usePrimaryDomain ? config.domains.primary : config.domains.fallback;
let apiEndpoint;
if (apiIndex === -1) {
apiEndpoint = config.apis[game].default;
} else if (apiIndex < config.apis[game].alternatives.length) {
apiEndpoint = config.apis[game].alternatives[apiIndex];
} else {
if (usePrimaryDomain) {
return fetchWithFallback(game, params, false, -1);
} else {
return {
code: 503,
status: "false",
message: "Semua API tidak tersedia saat ini"
};
}
}
const queryString = Object.keys(params)
.map(key => `${key}=${params[key]}`)
.join('&');
const url = `${domain}/api/game/${apiEndpoint}?${queryString}`;
try {
const response = await fetch(url, { method: 'GET' });
const data = await response.json();
if (response.ok && data.status !== "false") {
return data;
} else {
return fetchWithFallback(game, params, usePrimaryDomain, apiIndex + 1);
}
} catch (error) {
if (usePrimaryDomain) {
return fetchWithFallback(game, params, false, -1);
}
else if (apiIndex < config.apis[game].alternatives.length - 1) {
return fetchWithFallback(game, params, false, apiIndex + 1);
}
else {
return {
code: 500,
status: "false",
message: "Internal Server Error"
};
}
}
}
// ====================================
exports.stalkml = async (userId, zoneId) => {
return new Promise(async (resolve) => {
if (!userId || !zoneId) {
return resolve({
code: 400,
status: "false",
message: "Format Salah! Silakan isi ID dan Zone"
});
}
try {
const result = await fetchWithFallback('mobileLegends', { id: userId, zone: zoneId });
if (result.code === 404 || result.status === "false") {
resolve({
code: 404,
status: "false",
message: "ID atau Zone tidak ditemukan"
});
} else {
resolve({
code: 200,
status: "true",
message: "ID berhasil ditemukan",
data: {
username: result.data.username,
user_id: userId,
zone: zoneId
}
});
}
} catch (error) {
console.error('Error in stalkml:', error);
resolve({
code: 500,
status: "false",
message: "Internal Server Error"
});
}
});
};
// ====================================
/*
* CODE CASE
*/
case "stalkml": {
if (!text) {
return m.reply(`Example : stalkml 12345678 1234`);
}
const args = text.split(" ");
const userId = args[0];
const zoneId = args[1];
if (!zoneId) {
return m.reply(`Example : ${command} userid zone\nGunakan format yang benar!`);
}
let xst = "`";
try {
const data = await stalkml(userId, zoneId);
if (data.code === 200) {
m.reply(`🔎 ${xst}Mobile Legends${xst} 🔍\n
*›› Id Game :* ${data.data.user_id} (${data.data.zone})
*›› Nickname :* ${data.data.username}`);
} else {
m.reply(`Maaf, Tidak dapat menemukan nickname.`);
}
} catch (error) {
console.error('Error in stalkml command:', error);
m.reply("Terjadi kesalahan saat memproses permintaan");
}
}
break;