myircbot/plugins/geoip.py
2025-05-29 22:58:53 +02:00

42 lines
1.6 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
class GeoipPlugin:
"""Plugin para obtener información de geolocalización de una IP o dominio."""
def run(self, sender, *args):
"""Ejecuta la consulta de GeoIP."""
if not args:
return "Uso: `.geoip <IP o dominio>` (Ejemplo: `.geoip 8.8.8.8`)"
ip_o_dominio = args[0]
return self.obtener_geoip(ip_o_dominio)
def obtener_geoip(self, ip_o_dominio: str) -> str:
"""Consulta la geolocalización de una IP o dominio."""
try:
response = requests.get(f"https://ipwhois.app/json/{ip_o_dominio}", timeout=5)
data = response.json()
if "error" in data:
return f"Error: {data.get('reason', 'No se pudo obtener información de geolocalización.')}"
ciudad = data.get("city", "Desconocida")
region = data.get("region", "Desconocida")
pais = data.get("country_name", "Desconocido")
latitud = data.get("latitude", "N/A")
longitud = data.get("longitude", "N/A")
isp = data.get("org", "Desconocida")
return (f" **GeoIP de {ip_o_dominio}:**\n"
f"- Ubicación: {ciudad}, {region}, {pais}\n"
f"- ISP: {isp}\n"
f"- Coordenadas: {latitud}, {longitud}")
except requests.RequestException as e:
return f" Error de conexión: {str(e)}"
def help(self):
"""Muestra la ayuda para el comando .geoip"""
return " Uso: `.geoip <IP o dominio>` - Obtiene información de geolocalización."