prem-ipweb.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import fetch from 'node-fetch';
  2. import dns from 'dns';
  3. let handler = async (m, { conn, args, usedPrefix, command }) => {
  4. if (!args[0]) return conn.reply(m.chat, `*💎 Ingrese un dominio válido para obtener la IP.*\n*⚡ Ejemplo de uso:* ${usedPrefix + command} google.com`, m);
  5. let domain = args[0];
  6. // Resuelve el dominio a una IP utilizando DNS
  7. dns.lookup(domain, async (err, address) => {
  8. if (err) {
  9. return conn.reply(m.chat, `🚩 Error al resolver el dominio: ${err.message}`, m);
  10. }
  11. // Una vez resuelto el dominio, procedemos a usar las APIs para obtener información adicional sobre la IP
  12. await m.react('🕓', rcanal); // Reacción para indicar que está procesando
  13. try {
  14. let api1, api2, api3, api4;
  15. try {
  16. api1 = await fetch(`http://ip-api.com/json/${address}`);
  17. api1 = await api1.json();
  18. } catch (e) {
  19. console.log(`Error con ip-api: ${e.message}`);
  20. }
  21. try {
  22. api2 = await fetch(`https://ipwhois.app/json/${address}`);
  23. api2 = await api2.json();
  24. } catch (e) {
  25. console.log(`Error con ipwhois: ${e.message}`);
  26. }
  27. try {
  28. api3 = await fetch(`https://ipinfo.io/${address}/json`);
  29. api3 = await api3.json();
  30. } catch (e) {
  31. console.log(`Error con ipinfo: ${e.message}`);
  32. }
  33. try {
  34. api4 = await fetch(`https://freegeoip.app/json/${address}`);
  35. api4 = await api4.json();
  36. } catch (e) {
  37. console.log(`Error con freegeoip: ${e.message}`);
  38. }
  39. // Validar si alguna API respondió correctamente
  40. if (!api1 && !api2 && !api3 && !api4) {
  41. return conn.reply(m.chat, '💎 No se pudo obtener la información de la IP en ninguna fuente.', m);
  42. }
  43. let flag = api1 ? `https://countryflagsapi.com/png/${api1.countryCode.toLowerCase()}` : '';
  44. let info = `乂 *IP Checker (Web)* 么\n`;
  45. info += `Script By https://CrxsMods.site\n\n`;
  46. info += `🔹 *Dominio:* ${domain}\n`;
  47. info += `🔹 *IP Resuelta:* ${address}\n`;
  48. // Datos de ip-api.com
  49. if (api1) {
  50. info += `- - - - - - - - - - - - - - -\n`;
  51. info += `🔹 *País:* ${api1.country} (${api1.countryCode})\n`;
  52. info += `🔹 *Región:* ${api1.regionName}\n`;
  53. info += `🔹 *Ciudad:* ${api1.city}\n`;
  54. info += `🔹 *Código Postal:* ${api1.zip}\n`;
  55. info += `🔹 *Latitud:* ${api1.lat}\n`;
  56. info += `🔹 *Longitud:* ${api1.lon}\n`;
  57. info += `🔹 *ISP:* ${api1.isp}\n`;
  58. info += `🔹 *Org:* ${api1.org}\n`;
  59. info += `🔹 *Host:* ${api1.reverse || 'N/A'}\n`;
  60. info += `🔹 *Zona Horaria:* ${api1.timezone}\n`;
  61. }
  62. // Datos de ipwhois.app
  63. if (api2) {
  64. info += `- - - - - - - - - - - - - - -\n`;
  65. info += `🔹 *ASN:* ${api2.asn}\n`;
  66. info += `🔹 *Dominio de ISP:* ${api2.domain || 'N/A'}\n`;
  67. info += `🔹 *Continente:* ${api2.continent}\n`;
  68. info += `🔹 *Bloque de IP:* ${api2.ip_range}\n`;
  69. info += `🔹 *Capital del País:* ${api2.country_capital}\n`;
  70. info += `🔹 *Países Fronterizos:* ${api2.country_neighbours}\n`;
  71. info += `🔹 *Teléfono Internacional:* ${api2.country_phone}\n`;
  72. info += `🔹 *Hora Actual:* ${api2.timezone_current_time}\n`;
  73. }
  74. // Datos de ipinfo.io
  75. if (api3) {
  76. info += `- - - - - - - - - - - - - - -\n`;
  77. info += `🔹 *Hostname:* ${api3.hostname || 'N/A'}\n`;
  78. info += `🔹 *Organización:* ${api3.org || 'N/A'}\n`;
  79. info += `🔹 *Localización:* ${api3.city}, ${api3.region}\n`;
  80. info += `🔹 *Coordenadas:* ${api3.loc}\n`;
  81. info += `🔹 *Código Postal:* ${api3.postal}\n`;
  82. }
  83. // Datos de freegeoip
  84. if (api4) {
  85. info += `- - - - - - - - - - - - - - -\n`;
  86. info += `🔹 *Continente Código:* ${api4.continent_code}\n`;
  87. info += `🔹 *Región Código:* ${api4.region_code}\n`;
  88. info += `🔹 *Metro Code:* ${api4.metro_code}\n`;
  89. }
  90. // Enviar la información al usuario
  91. await conn.reply(m.chat, info, m);
  92. if (flag) await conn.sendFile(m.chat, flag, 'flag.png', '', m, null);
  93. await m.react('✅', rcanal);
  94. } catch (error) {
  95. await conn.reply(m.chat, `🚩 Hubo un error al intentar obtener la información: ${error.message}`, m);
  96. await m.react('✖️', rcanal);
  97. }
  98. });
  99. }
  100. handler.help = ['ipweb *<domain>*']
  101. handler.tags = ['premium', "buscadores"]
  102. handler.command = ['ipweb']
  103. export default handler;
  104. handler.premium = false