deadbyte-runtime é o pacote de contratos do DeadByte v4. Ele existe para concentrar tipos, schemas, helpers, manifesto e regras compartilhadas entre o bot e o spawner.
- Definir o formato de bots, comandos, mensagens, permissões, configs e eventos.
- Gerar manifestos serializáveis de comandos.
- Validar runtime config e eventos estruturados.
- Validar colisões de aliases por instância.
Este pacote não conhece WhatsApp, Nuxt, Nitro, Drizzle, PostgreSQL, Puppeteer, filesystem pesado ou processos. Ele não inicia bot, não acessa banco e não renderiza stickers.
pnpm installO runtime não precisa de .env. Ele recebe objetos TypeScript/JSON e valida com zod.
pnpm devpnpm buildpnpm testimport{defineCommand}from'@deadbyte/runtime'exportconstpingCommand=defineCommand({id: 'system.ping',group: 'system',name: 'Ping',description: 'Responde pong para validar se o bot está vivo.',aliases: ['ping','p'],enabledByDefault: true,ownerOnlyByDefault: false,supports: {private: true,groups: true,implicit: false},configFields: [],asyncmatch(ctx){returnctx.parsedCommand?.normalizedName==='ping'},asyncrun(ctx){awaitctx.reply('pong')}})Use createBotManifest(bot). O resultado não contém funções, apenas JSON serializável para o spawner sincronizar comandos existentes no código.
O banco do spawner pode configurar comandos por instância no formato:
commands: {'sticker.create': {enabled: true,ownerOnly: false,aliases: ['s','fig'],config: {}}}validateCommandAliases(commands, config) impede alias vazio, alias com prefixo e colisão entre comandos ativos.
deadbyte-botimporta o runtime para definir comandos, configs e eventos.deadbyte-spawnerimporta o runtime para validar manifesto, gerar config e interpretar eventos.
Adicione novos contratos no runtime quando eles forem compartilhados entre bot e spawner. Lógica específica de WhatsApp fica no bot; lógica de banco/processos fica no spawner.