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'
export const pingCommand = 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: [],
async match(ctx) {
return ctx.parsedCommand?.normalizedName === 'ping'
},
async run(ctx) {
await ctx.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.