@diegofemello/bitbot-types
v1.3.30
Published
Interfaces e tipos compartilhados do Bit Bot
Maintainers
Readme
n# BitBot Types
Interfaces e tipos compartilhados do Bit Bot - Uma biblioteca TypeScript profissional para desenvolvimento de bots Discord.
📦 Instalação
Via NPM (Recomendado)
npm install @diegofemello/bitbot-typesVia Yarn
yarn add @diegofemello/bitbot-typesVia GitHub (Desenvolvimento)
npm install github:diegofemello/bitbot-types#master🚀 Uso
// Importando interfaces e enums específicos
import { IUser, Bot, Card, Pokemon, Auction, UserRole, CommandIndex } from '@diegofemello/bitbot-types';
// Importando funções utilitárias
import { logUserInfo, hasUserRole, formatBitCoins, logCommandExecution, logCardInfo } from '@diegofemello/bitbot-types';
// Importando tudo
import * as BitBotTypes from '@diegofemello/bitbot-types';
// Exemplos de uso das interfaces
const user: BitBotTypes.IUser = {
// ... propriedades do usuário
roles: [UserRole.User, UserRole.Vip]
};
// Exemplos de uso das funções utilitárias
logUserInfo(user, '[DEBUG]');
hasUserRole(user, UserRole.Admin);
formatBitCoins(12500); // "12.500 BitCoins"
logCommandExecution(CommandIndex.abracar, user.lid, true);🔄 Geração Automática de Exports
Esta biblioteca utiliza geração automática de exports, ou seja, você NÃO precisa editar manualmente os arquivos index.ts quando adicionar novas interfaces, enums ou funções utilitárias!
Como Funciona
- Detecção Automática: Scripts escaneiam automaticamente todos os arquivos
.tsnos diretórios - Geração de Exports: Criam automaticamente
export * from "./seu-arquivo" - Integração com Build: Roda automaticamente antes de cada build
- Watch Mode: Para desenvolvimento, monitora mudanças em tempo real
Scripts Disponíveis
# Regenera exports manualmente
npm run generate-exports
# Inicia watch mode (regenera automaticamente quando arquivos mudam)
npm run dev
# Versão alternativa com padrões glob
npm run generate-exports:globPara Desenvolvedores da Biblioteca
Quando você adicionar um novo arquivo como nova-interface.interface.ts, simplesmente:
- Crie o arquivo normalmente na pasta apropriada
- Execute
npm run generate-exports(ou usenpm run devpara auto-regeneração) - Pronto! O arquivo será automaticamente incluído nos exports
Não edite os arquivos index.ts - eles são auto-gerados e serão sobrescritos!
📋 Interfaces Disponíveis
| Interface | Descrição |
|-----------|-----------|
| User | Interface do usuário do bot |
| Bot | Interface de configuração do bot |
| Card | Interface de cartas colecionáveis |
| Pokemon | Interface de Pokémon |
| Auction | Interface de leilões |
| Tournament | Interface de torneios |
| RPGPlayer | Interface do jogador RPG |
| Raid | Interface de raids |
| Group | Interface de grupos |
| E muitas outras... | Veja todos os tipos no código fonte |
🎮 Enums Disponíveis
| Enum | Descrição | Valores |
|------|-----------|---------|
| CommandIndex | Índice de comandos do bot | abracar, addgrupo, atividade, etc. |
| UserRole | Níveis de acesso do usuário | User, Admin, GameMaster, SuperAdmin, Moderator, Vip |
🛠️ Funções Utilitárias
👤 User Utils
logUserInfo(user, prefix?)- Faz log das informações do usuáriohasUserRole(user, role)- Verifica se usuário tem uma role específicaformatBitCoins(amount)- Formata valor de BitCoins com separadores
⚡ Command Utils
logCommandExecution(command, lid, success?)- Loga execução de comandosisGameCommand(command)- Verifica se é um comando de jogoformatExecutionTime(startTime, endTime?)- Formata tempo de execução
🃏 Card Utils
logCardInfo(card, context?)- Faz log das informações da cartaisRareCard(card)- Verifica se a carta é rara (raridade >= 8)calculateCardValue(card, baseValue?)- Calcula valor da carta baseado na raridadegetCardsStats(cards)- Gera estatísticas de múltiplas cartas
✅ Testando a Instalação
Para testar se a instalação funcionou corretamente, você pode criar um arquivo de teste:
// test.ts
import {
IUser,
CommandIndex,
UserRole,
logUserInfo,
hasUserRole,
formatBitCoins,
logCommandExecution
} from '@diegofemello/bitbot-types';
// Teste de interface e funções utilitárias
const user: IUser = {
_id: '123',
lid: 'user123',
nome: 'João',
bitbcoins: 12500,
slots: 5,
frags: 10,
xp: 500,
createdAt: new Date(),
updatedAt: new Date(),
pontuacao: 100,
discord_id: 'discord123',
roles: [UserRole.User, UserRole.Vip]
};
// Testando as funções utilitárias
logUserInfo(user, '[TEST]');
hasUserRole(user, UserRole.Admin);
console.log(formatBitCoins(user.bitbcoins));
logCommandExecution(CommandIndex.abracar, user.lid, true);
console.log('✅ Tipos e funções importados com sucesso!');🛠️ Desenvolvimento
Para contribuir com este projeto:
Clone o repositório
git clone https://github.com/diegofemello/bitbot-types.git cd bitbot-typesInstale as dependências
npm installFaça suas alterações nos arquivos TypeScript
- Edite os arquivos em
src/interfaces/ousrc/enum/
- Edite os arquivos em
Compile e teste localmente
npm run build npm testFaça commit e push das mudanças
git add . git commit -m "Descrição das mudanças" git push origin master📦 Publicação Automática
- O GitHub Actions irá automaticamente:
- Fazer build do projeto
- Executar testes
- Publicar no NPM (se a versão não existir)
- Criar uma release no GitHub
- O GitHub Actions irá automaticamente:
Scripts Disponíveis
npm run build- Compila o TypeScriptnpm run clean- Remove o diretório distnpm test- Executa os testesnpm run prepare- Build automático antes de install
🔄 CI/CD com GitHub Actions
Este projeto utiliza GitHub Actions para:
- ✅ Build automático a cada push/PR
- ✅ Testes em múltiplas versões do Node.js (18.x, 20.x)
- ✅ Publicação automática no NPM quando há push na master
- ✅ Criação de releases automáticas no GitHub
- ✅ Verificação de versão - só publica se a versão não existir
📝 Versionamento
Para publicar uma nova versão:
Atualize a versão no package.json manualmente
{ "version": "1.0.1" // ou 1.1.0, 2.0.0, etc. }Faça commit e push
git add package.json git commit -m "Bump version to 1.0.1" git push origin masterA publicação será automática via GitHub Actions
📄 Licença
MIT - Veja o arquivo LICENSE para mais detalhes.
🤝 Contribuição
Contribuições são bem-vindas! Por favor, abra uma issue ou faça um pull request.
📞 Suporte
Se você encontrar algum problema ou tiver dúvidas, por favor abra uma issue no GitHub.
