Ir al contenido

Módulo BuiltByBit License

El Módulo BuiltByBit License (@zumito-team/builtbybit-license) valida claves de licencia contra la API de BuiltByBit. Puede re-verificar periódicamente la licencia y opcionalmente terminar el proceso del bot si la licencia se vuelve inválida.

Ventana de terminal
npm install @zumito-team/builtbybit-license

Agrega a tu zumito.config.ts:

bundles: ['@zumito-team/builtbybit-license']
  1. Al inicializar el módulo, se crea un LicenseVerifier con tu configuración.
  2. Cuando el framework está listo (onAllReady), el verificador realiza una petición HTTP a la API de BuiltByBit.
  3. Si la licencia es válida:
    • Se ejecuta el callback onValid.
    • Si checkInterval está configurado, comienza la re-verificación periódica.
  4. Si la licencia es inválida:
    • Se ejecuta el callback onInvalid.
    • Si exitOnInvalid es true (por defecto), el proceso termina con el código de salida configurado.
  5. Si ocurre un error:
    • La petición se reintenta hasta retryAttempts veces con retryDelay ms entre intentos.
    • Si todos los reintentos fallan, se ejecuta el callback onError.
import { BuiltByBitLicenseModule } from '@zumito-team/builtbybit-license';
new BuiltByBitLicenseModule(__dirname, {
licenseKey: 'tu-clave-de-licencia'
});
new BuiltByBitLicenseModule(__dirname, {
licenseKey: 'xxxx-xxxx-xxxx',
apiUrl: 'https://api.builtbybit.com/v1/licenses',
productId: '12345',
requestHeaders: {
'X-Custom-Header': 'value'
},
retryAttempts: 3,
retryDelay: 5000,
exitOnInvalid: true,
exitCode: 1,
checkInterval: 3600000, // Re-verificar cada hora
validateResponse: async (body, status) => {
// Lógica de validación personalizada
return body.status === 'active' && body.product_id === '12345';
},
onValid: async () => {
console.log('Licencia válida. Iniciando bot...');
},
onInvalid: async (reason) => {
console.error(`Licencia inválida: ${reason}`);
},
onError: async (error) => {
console.error('Error en verificación:', error.message);
}
});
OpciónTipoPor defectoDescripción
licenseKeystringrequeridoClave de licencia de BuiltByBit.
apiUrlstringhttps://api.builtbybit.com/v1/licensesEndpoint de la API.
productIdstringID del producto/recurso en BuiltByBit.
requestHeadersRecord<string,string>Cabeceras HTTP personalizadas.
retryAttemptsnumber0Número de reintentos en caso de fallo.
retryDelaynumber5000Retraso entre reintentos (ms).
exitOnInvalidbooleantrueSi debe ejecutar process.exit() con licencia inválida.
exitCodenumber1Código de salida para terminación del proceso.
validateResponse(body, status) => boolean | Promise<boolean>integradoValidador de respuesta personalizado.
onValid() => void | Promise<void>Callback en verificación exitosa.
onInvalid(reason?) => void | Promise<void>Callback en licencia inválida.
onError(error: Error) => void | Promise<void>Callback en error de red/petición.
checkIntervalnumberRe-verificar periódicamente (ms). 0 para desactivar.

Por defecto, el validador comprueba la respuesta en este orden:

  1. Estado HTTP 200 → licencia válida.
  2. body.valid === true → licencia válida.
  3. body.success === true → licencia válida.
  4. body.status === "active" → licencia válida.

Sobrescribe con validateResponse para lógica personalizada.

Proporciona tu propia función validateResponse para verificar campos adicionales, validar contra una API diferente o implementar caché:

validateResponse: async (body, status) => {
if (status !== 200) return false;
return body.data?.license?.active === true
&& body.data?.license?.product_id === myProductId;
}

Usa onValid, onInvalid y onError para integrar con tus propios sistemas de logging, notificaciones o analíticas:

onInvalid: async (reason) => {
// Enviar notificación por webhook de Discord
await fetch(webhookUrl, {
method: 'POST',
body: JSON.stringify({ content: `Licencia inválida: ${reason}` })
});
}

Establece checkInterval a un valor mayor que 0 para aplicar la licencia continuamente. El intervalo comienza después de la primera verificación exitosa.

  • zumito-framework

El módulo también acepta opciones estándar de módulos Zumito:

OpciónTipoDescripción
commandWhiteliststring[]Solo permitir estos comandos.
commandBlackliststring[]Bloquear estos comandos.
commandRenamesRecord<string, string>Renombrar comandos.