class ConvertPlugin: """Plugin para conversión de unidades.""" conversiones = { "m": {"km": 0.001, "cm": 100, "mm": 1000, "ft": 3.28084, "in": 39.3701}, "km": {"m": 1000, "cm": 100000, "mm": 1000000, "mi": 0.621371}, "cm": {"m": 0.01, "mm": 10, "in": 0.393701}, "mm": {"m": 0.001, "cm": 0.1}, "ft": {"m": 0.3048, "in": 12}, "in": {"m": 0.0254, "cm": 2.54, "ft": 0.0833333}, "kg": {"g": 1000, "lb": 2.20462, "oz": 35.274}, "g": {"kg": 0.001, "lb": 0.00220462, "oz": 0.035274}, "lb": {"kg": 0.453592, "g": 453.592, "oz": 16}, "oz": {"kg": 0.0283495, "g": 28.3495, "lb": 0.0625}, "c": {"f": lambda x: (x * 9/5) + 32, "k": lambda x: x + 273.15}, "f": {"c": lambda x: (x - 32) * 5/9, "k": lambda x: ((x - 32) * 5/9) + 273.15}, "k": {"c": lambda x: x - 273.15, "f": lambda x: ((x - 273.15) * 9/5) + 32}, "b": {"kb": 0.001, "mb": 0.000001, "gb": 0.000000001}, "kb": {"b": 1000, "mb": 0.001, "gb": 0.000001}, "mb": {"b": 1000000, "kb": 1000, "gb": 0.001}, "gb": {"b": 1000000000, "kb": 1000000, "mb": 1000} } def convertir_unidad(self, valor: float, unidad_origen: str, unidad_destino: str): """Convierte unidades de medida entre sí.""" unidad_origen = unidad_origen.lower() unidad_destino = unidad_destino.lower() if unidad_origen in self.conversiones and unidad_destino in self.conversiones[unidad_origen]: conversion = self.conversiones[unidad_origen][unidad_destino] resultado = conversion(valor) if callable(conversion) else valor * conversion return f" {valor} {unidad_origen} equivale a **{resultado:.4f} {unidad_destino}**." else: return " Conversión no soportada. Usa `.convert help` para ver opciones." def run(self, sender, *args): """Función principal ejecutada por el bot.""" if len(args) != 3: return " Uso: `.convert ` (Ej: `.convert 10 km m`)" try: valor = float(args[0]) return self.convertir_unidad(valor, args[1], args[2]) except ValueError: return " El valor debe ser un número." def help(self): """Descripción del plugin para el comando .help""" return (" Usa `.convert ` para convertir unidades.\n" "Ejemplo: `.convert 100 cm m` → 100 cm equivale a 1.0 m.\n" "**Unidades soportadas:** m, km, cm, mm, ft, in, kg, g, lb, oz, c, f, k, b, kb, mb, gb.")