@diegofemello/bitbot-types 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -23,22 +23,25 @@ npm install github:diegofemello/bitbot-types#master
23
23
 
24
24
  ```typescript
25
25
  // Importando interfaces e enums específicos
26
- import { User, Bot, Card, Pokemon, Auction, UserRole, CommandIndex } from '@diegofemello/bitbot-types';
26
+ import { IUser, Bot, Card, Pokemon, Auction, UserRole, CommandIndex } from '@diegofemello/bitbot-types';
27
+
28
+ // Importando funções utilitárias
29
+ import { logUserInfo, hasUserRole, formatBitCoins, logCommandExecution, logCardInfo } from '@diegofemello/bitbot-types';
27
30
 
28
31
  // Importando tudo
29
32
  import * as BitBotTypes from '@diegofemello/bitbot-types';
30
33
 
31
- // Exemplos de uso
32
- const user: BitBotTypes.User = {
34
+ // Exemplos de uso das interfaces
35
+ const user: BitBotTypes.IUser = {
33
36
  // ... propriedades do usuário
34
37
  roles: [UserRole.User, UserRole.Vip]
35
38
  };
36
39
 
37
- const command = CommandIndex.abracar;
38
-
39
- const card: BitBotTypes.Card = {
40
- // ... propriedades do card
41
- };
40
+ // Exemplos de uso das funções utilitárias
41
+ logUserInfo(user, '[DEBUG]');
42
+ hasUserRole(user, UserRole.Admin);
43
+ formatBitCoins(12500); // "12.500 BitCoins"
44
+ logCommandExecution(CommandIndex.abracar, user.id_usuario, true);
42
45
  ```
43
46
 
44
47
  ## 📋 Interfaces Disponíveis
@@ -63,26 +66,63 @@ const card: BitBotTypes.Card = {
63
66
  | `CommandIndex` | Índice de comandos do bot | `abracar`, `addgrupo`, `atividade`, etc. |
64
67
  | `UserRole` | Níveis de acesso do usuário | `User`, `Admin`, `GameMaster`, `SuperAdmin`, `Moderator`, `Vip` |
65
68
 
69
+ ## 🛠️ Funções Utilitárias
70
+
71
+ ### 👤 User Utils
72
+ - `logUserInfo(user, prefix?)` - Faz log das informações do usuário
73
+ - `hasUserRole(user, role)` - Verifica se usuário tem uma role específica
74
+ - `formatBitCoins(amount)` - Formata valor de BitCoins com separadores
75
+
76
+ ### ⚡ Command Utils
77
+ - `logCommandExecution(command, userId, success?)` - Loga execução de comandos
78
+ - `isGameCommand(command)` - Verifica se é um comando de jogo
79
+ - `formatExecutionTime(startTime, endTime?)` - Formata tempo de execução
80
+
81
+ ### 🃏 Card Utils
82
+ - `logCardInfo(card, context?)` - Faz log das informações da carta
83
+ - `isRareCard(card)` - Verifica se a carta é rara (raridade >= 8)
84
+ - `calculateCardValue(card, baseValue?)` - Calcula valor da carta baseado na raridade
85
+ - `getCardsStats(cards)` - Gera estatísticas de múltiplas cartas
86
+
66
87
  ## ✅ Testando a Instalação
67
88
 
68
89
  Para testar se a instalação funcionou corretamente, você pode criar um arquivo de teste:
69
90
 
70
91
  ```typescript
71
92
  // test.ts
72
- import { User, CommandIndex, Card, Pokemon, UserRole } from '@diegofemello/bitbot-types';
73
-
74
- // Teste de enum
75
- console.log('Comando:', CommandIndex.abracar);
76
- console.log('Role:', UserRole.Admin);
77
-
78
- // Teste de interface
79
- const user: User = {
80
- id: '123',
81
- roles: [UserRole.User],
82
- // ... outras propriedades
93
+ import {
94
+ IUser,
95
+ CommandIndex,
96
+ UserRole,
97
+ logUserInfo,
98
+ hasUserRole,
99
+ formatBitCoins,
100
+ logCommandExecution
101
+ } from '@diegofemello/bitbot-types';
102
+
103
+ // Teste de interface e funções utilitárias
104
+ const user: IUser = {
105
+ _id: '123',
106
+ id_usuario: 'user123',
107
+ nome: 'João',
108
+ bitbcoins: 12500,
109
+ slots: 5,
110
+ frags: 10,
111
+ xp: 500,
112
+ createdAt: new Date(),
113
+ updatedAt: new Date(),
114
+ pontuacao: 100,
115
+ discord_id: 'discord123',
116
+ roles: [UserRole.User, UserRole.Vip]
83
117
  };
84
118
 
85
- console.log('Tipos importados com sucesso!');
119
+ // Testando as funções utilitárias
120
+ logUserInfo(user, '[TEST]');
121
+ hasUserRole(user, UserRole.Admin);
122
+ console.log(formatBitCoins(user.bitbcoins));
123
+ logCommandExecution(CommandIndex.abracar, user.id_usuario, true);
124
+
125
+ console.log('✅ Tipos e funções importados com sucesso!');
86
126
  ```
87
127
 
88
128
  ## 🛠️ Desenvolvimento
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./interfaces";
2
2
  export * from "./enum";
3
+ export * from "./utils";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAG7B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAG7B,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -18,3 +18,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./interfaces"), exports);
19
19
  // Export all enums
20
20
  __exportStar(require("./enum"), exports);
21
+ // Export all utilities
22
+ __exportStar(require("./utils"), exports);
@@ -0,0 +1,31 @@
1
+ import { ICard } from '../interfaces';
2
+ /**
3
+ * Função utilitária para logar informações de uma carta
4
+ * @param card - Objeto carta do tipo ICard
5
+ * @param context - Contexto do log (opcional)
6
+ */
7
+ export declare function logCardInfo(card: ICard, context?: string): void;
8
+ /**
9
+ * Verifica se uma carta é rara (raridade >= 8)
10
+ * @param card - Carta a ser verificada
11
+ * @returns true se a carta é rara
12
+ */
13
+ export declare function isRareCard(card: ICard): boolean;
14
+ /**
15
+ * Calcula o valor de uma carta baseado em sua raridade
16
+ * @param card - Carta para calcular o valor
17
+ * @param baseValue - Valor base (padrão: 100)
18
+ * @returns Valor calculado
19
+ */
20
+ export declare function calculateCardValue(card: ICard, baseValue?: number): number;
21
+ /**
22
+ * Gera um resumo rápido de múltiplas cartas
23
+ * @param cards - Array de cartas
24
+ * @returns Objeto com estatísticas
25
+ */
26
+ export declare function getCardsStats(cards: ICard[]): {
27
+ total: number;
28
+ raras: number;
29
+ valorTotal: number;
30
+ };
31
+ //# sourceMappingURL=card.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.utils.d.ts","sourceRoot":"","sources":["../../src/utils/card.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,GAAE,MAAiB,GAAG,IAAI,CAczE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAI/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAUlG"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logCardInfo = logCardInfo;
4
+ exports.isRareCard = isRareCard;
5
+ exports.calculateCardValue = calculateCardValue;
6
+ exports.getCardsStats = getCardsStats;
7
+ /**
8
+ * Função utilitária para logar informações de uma carta
9
+ * @param card - Objeto carta do tipo ICard
10
+ * @param context - Contexto do log (opcional)
11
+ */
12
+ function logCardInfo(card, context = '[CARD]') {
13
+ console.log(`${context} Nome: ${card.name} | Raridade: ${card.rarity} | ID: ${card.id}`);
14
+ if (card.price) {
15
+ console.log(`${context} Preço: ${card.price} BitCoins`);
16
+ }
17
+ if (card.title) {
18
+ console.log(`${context} Título: ${card.title}`);
19
+ }
20
+ if (card.description) {
21
+ console.log(`${context} Descrição: ${card.description.substring(0, 100)}...`);
22
+ }
23
+ }
24
+ /**
25
+ * Verifica se uma carta é rara (raridade >= 8)
26
+ * @param card - Carta a ser verificada
27
+ * @returns true se a carta é rara
28
+ */
29
+ function isRareCard(card) {
30
+ const isRare = card.rarity >= 8;
31
+ console.log(`[RARITY_CHECK] Carta ${card.name} ${isRare ? 'É' : 'NÃO É'} rara (raridade: ${card.rarity})`);
32
+ return isRare;
33
+ }
34
+ /**
35
+ * Calcula o valor de uma carta baseado em sua raridade
36
+ * @param card - Carta para calcular o valor
37
+ * @param baseValue - Valor base (padrão: 100)
38
+ * @returns Valor calculado
39
+ */
40
+ function calculateCardValue(card, baseValue = 100) {
41
+ const multiplier = Math.pow(1.5, card.rarity);
42
+ const calculatedValue = Math.floor(baseValue * multiplier);
43
+ console.log(`[CARD_VALUE] Carta ${card.name} (raridade ${card.rarity}) vale ${calculatedValue} BitCoins`);
44
+ return calculatedValue;
45
+ }
46
+ /**
47
+ * Gera um resumo rápido de múltiplas cartas
48
+ * @param cards - Array de cartas
49
+ * @returns Objeto com estatísticas
50
+ */
51
+ function getCardsStats(cards) {
52
+ const stats = {
53
+ total: cards.length,
54
+ raras: cards.filter(card => isRareCard(card)).length,
55
+ valorTotal: cards.reduce((total, card) => total + calculateCardValue(card), 0)
56
+ };
57
+ console.log(`[CARDS_STATS] Total: ${stats.total} | Raras: ${stats.raras} | Valor Total: ${stats.valorTotal} BitCoins`);
58
+ return stats;
59
+ }
@@ -0,0 +1,22 @@
1
+ import { CommandIndex } from '../enum';
2
+ /**
3
+ * Função utilitária para logar execução de comandos
4
+ * @param command - Comando executado
5
+ * @param userId - ID do usuário que executou
6
+ * @param success - Se o comando foi executado com sucesso
7
+ */
8
+ export declare function logCommandExecution(command: CommandIndex, userId: string, success?: boolean): void;
9
+ /**
10
+ * Verifica se um comando é relacionado a jogos
11
+ * @param command - Comando a ser verificado
12
+ * @returns true se é um comando de jogo
13
+ */
14
+ export declare function isGameCommand(command: CommandIndex): boolean;
15
+ /**
16
+ * Formata tempo de execução de comando
17
+ * @param startTime - Timestamp de início
18
+ * @param endTime - Timestamp de fim (opcional, usa Date.now() se não fornecido)
19
+ * @returns Tempo formatado em ms
20
+ */
21
+ export declare function formatExecutionTime(startTime: number, endTime?: number): string;
22
+ //# sourceMappingURL=command.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.utils.d.ts","sourceRoot":"","sources":["../../src/utils/command.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI,CAKxG;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAa5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAW/E"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logCommandExecution = logCommandExecution;
4
+ exports.isGameCommand = isGameCommand;
5
+ exports.formatExecutionTime = formatExecutionTime;
6
+ const enum_1 = require("../enum");
7
+ /**
8
+ * Função utilitária para logar execução de comandos
9
+ * @param command - Comando executado
10
+ * @param userId - ID do usuário que executou
11
+ * @param success - Se o comando foi executado com sucesso
12
+ */
13
+ function logCommandExecution(command, userId, success = true) {
14
+ const status = success ? '✅ SUCESSO' : '❌ ERRO';
15
+ const timestamp = new Date().toISOString();
16
+ console.log(`[COMMAND] ${timestamp} - ${status} - Usuário: ${userId} - Comando: ${command}`);
17
+ }
18
+ /**
19
+ * Verifica se um comando é relacionado a jogos
20
+ * @param command - Comando a ser verificado
21
+ * @returns true se é um comando de jogo
22
+ */
23
+ function isGameCommand(command) {
24
+ const gameCommands = [
25
+ enum_1.CommandIndex.bicho,
26
+ enum_1.CommandIndex.bingo,
27
+ enum_1.CommandIndex.capturar,
28
+ enum_1.CommandIndex.caracoroa,
29
+ // Adicione mais comandos de jogo conforme necessário
30
+ ];
31
+ const isGame = gameCommands.includes(command);
32
+ console.log(`[GAME_CHECK] Comando ${command} ${isGame ? 'É' : 'NÃO É'} um comando de jogo`);
33
+ return isGame;
34
+ }
35
+ /**
36
+ * Formata tempo de execução de comando
37
+ * @param startTime - Timestamp de início
38
+ * @param endTime - Timestamp de fim (opcional, usa Date.now() se não fornecido)
39
+ * @returns Tempo formatado em ms
40
+ */
41
+ function formatExecutionTime(startTime, endTime) {
42
+ const end = endTime || Date.now();
43
+ const duration = end - startTime;
44
+ console.log(`[PERFORMANCE] Comando executado em ${duration}ms`);
45
+ if (duration > 1000) {
46
+ return `${(duration / 1000).toFixed(2)}s`;
47
+ }
48
+ return `${duration}ms`;
49
+ }
@@ -0,0 +1,4 @@
1
+ export * from './user.utils';
2
+ export * from './command.utils';
3
+ export * from './card.utils';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Export all utility functions
18
+ __exportStar(require("./user.utils"), exports);
19
+ __exportStar(require("./command.utils"), exports);
20
+ __exportStar(require("./card.utils"), exports);
@@ -0,0 +1,21 @@
1
+ import { IUser, UserRole } from '../interfaces';
2
+ /**
3
+ * Função utilitária para fazer log de informações do usuário
4
+ * @param user - Objeto usuário do tipo IUser
5
+ * @param prefix - Prefixo para o log (opcional)
6
+ */
7
+ export declare function logUserInfo(user: IUser, prefix?: string): void;
8
+ /**
9
+ * Verifica se um usuário tem uma role específica
10
+ * @param user - Objeto usuário
11
+ * @param role - Role a ser verificada
12
+ * @returns true se o usuário tem a role
13
+ */
14
+ export declare function hasUserRole(user: IUser, role: UserRole): boolean;
15
+ /**
16
+ * Formata BitCoins com separadores de milhares
17
+ * @param amount - Quantidade de BitCoins
18
+ * @returns String formatada
19
+ */
20
+ export declare function formatBitCoins(amount: number): string;
21
+ //# sourceMappingURL=user.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.utils.d.ts","sourceRoot":"","sources":["../../src/utils/user.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAE,MAAiB,GAAG,IAAI,CAUxE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAIhE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrD"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logUserInfo = logUserInfo;
4
+ exports.hasUserRole = hasUserRole;
5
+ exports.formatBitCoins = formatBitCoins;
6
+ /**
7
+ * Função utilitária para fazer log de informações do usuário
8
+ * @param user - Objeto usuário do tipo IUser
9
+ * @param prefix - Prefixo para o log (opcional)
10
+ */
11
+ function logUserInfo(user, prefix = '[USER]') {
12
+ console.log(`${prefix} ID: ${user.id_usuario}, Nome: ${user.nome}, BitCoins: ${user.bitbcoins}`);
13
+ if (user.roles && user.roles.length > 0) {
14
+ console.log(`${prefix} Roles: ${user.roles.join(', ')}`);
15
+ }
16
+ if (user.vip?.status) {
17
+ console.log(`${prefix} VIP até: ${user.vip.until}`);
18
+ }
19
+ }
20
+ /**
21
+ * Verifica se um usuário tem uma role específica
22
+ * @param user - Objeto usuário
23
+ * @param role - Role a ser verificada
24
+ * @returns true se o usuário tem a role
25
+ */
26
+ function hasUserRole(user, role) {
27
+ const hasRole = user.roles?.includes(role) || false;
28
+ console.log(`[ROLE_CHECK] Usuário ${user.nome} ${hasRole ? 'TEM' : 'NÃO TEM'} a role: ${role}`);
29
+ return hasRole;
30
+ }
31
+ /**
32
+ * Formata BitCoins com separadores de milhares
33
+ * @param amount - Quantidade de BitCoins
34
+ * @returns String formatada
35
+ */
36
+ function formatBitCoins(amount) {
37
+ const formatted = amount.toLocaleString('pt-BR');
38
+ console.log(`[BITCOINS] Formatando ${amount} -> ${formatted} BitCoins`);
39
+ return `${formatted} BitCoins`;
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diegofemello/bitbot-types",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "Interfaces e tipos compartilhados do Bit Bot",
5
5
  "license": "MIT",
6
6
  "author": "Diego Mello <diegofemello@example.com>",
@@ -42,6 +42,7 @@
42
42
  "gaming"
43
43
  ],
44
44
  "devDependencies": {
45
+ "@types/node": "^24.0.13",
45
46
  "rimraf": "^5.0.10",
46
47
  "typescript": "^5.0.0"
47
48
  },