PUBG Mobile

by โ˜˜๏ธ

14
Raw
/*
Api Stalk Nickname Menggunakan https://ceknickname.my.id
Silahkan Melakukan pendaftaran Terlebih Dahulu 
Selanjutnya Hubungi Admin Sertakan Username Yang Terdaftar
*/

const fetch = require('node-fetch');
const config = {
  domains: {
    primary: "https://ceknickname.my.id",
    fallback: "https://ceknickname.vercel.app"
  },
  apis: {
    PUBGmobile: {
      default: "pubg-mobile-dg",
      alternatives: ["fpubg-mobile-tp", "pubg-mobile-vc", "pubg-mobile-global-vc"]
    }
  },
  auth: {
  // dapatkan apikey dan username di https://ceknickname.my.id
    apiKey: global.apiKey, //"your-apikey",
    username: global.username //"your-username"
  }
};

// ====================================

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',
      headers: {
        'x-api-key': config.auth.apiKey,
        'x-username': config.auth.username
      }
    });
    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.stalkpubg = async (userId) => {
  return new Promise(async (resolve) => {
    if (!userId) {
      return resolve({
        code: 400,
        status: "false",
        message: "Format Salah! Silakan isi ID"
      });
    }

    try {
      const result = await fetchWithFallback('PUBGmobile', { id: userId });
      
      if (result.code === 404 || result.status === "false") {
        resolve({
          code: 404,
          status: "false",
          creator: "ceknickname.vercel.app",
          message: "ID tidak ditemukan"
        });
      } else {
        resolve({
          code: 200,
          status: "true",
          creator: "ceknickname.vercel.app",
          message: "ID berhasil ditemukan",
          data: {
            username: result.data.username,
            user_id: userId
          }
        });
      }
    } catch (error) {
      console.error('Error in stalkpubg:', error);
      resolve({
        code: 500,
        status: "false",
        message: "Internal Server Error"
      });
    }
  });
};

// ====================================

// Example usage in switch case
case "stalkpubg": {
  if (!text) {
    return m.reply(`Example : stalkpubg 12345678`);
  }
  const { stalkpubg } = require('./lib/stalkpubg')
  const userId = text.trim();
  
  let xst = "`";
  try {
    const data = await stalkpubg(userId);
    
    if (data.code === 200) {
      m.reply(`๐Ÿ”Ž ${xst}PUBG Mobile${xst} ๐Ÿ”\n
*ยป Nickname :* ${data.data.username}
*ยป userId :* ${data.data.user_id}\n`);
    } else {
      m.reply(`Maaf, Tidak dapat menemukan nickname.`);
    }
  } catch (error) {
    console.error('Error in stalkpubg command:', error);
    m.reply("Terjadi kesalahan saat memproses permintaan");
  }
}
break;