42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
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."
|
||
|