@luxorbots/fac-shared-db 1.27.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.
Files changed (95) hide show
  1. package/README.md +62 -0
  2. package/dist/connection.d.ts +16 -0
  3. package/dist/connection.js +23 -0
  4. package/dist/connection.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.js +3 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/models/AcaoMarcada.d.ts +165 -0
  9. package/dist/models/AcaoMarcada.js +24 -0
  10. package/dist/models/AcaoMarcada.js.map +1 -0
  11. package/dist/models/AcoesConfig.d.ts +83 -0
  12. package/dist/models/AcoesConfig.js +36 -0
  13. package/dist/models/AcoesConfig.js.map +1 -0
  14. package/dist/models/Advertencia.d.ts +46 -0
  15. package/dist/models/Advertencia.js +22 -0
  16. package/dist/models/Advertencia.js.map +1 -0
  17. package/dist/models/BaqueMarcado.d.ts +387 -0
  18. package/dist/models/BaqueMarcado.js +42 -0
  19. package/dist/models/BaqueMarcado.js.map +1 -0
  20. package/dist/models/Blacklist.d.ts +106 -0
  21. package/dist/models/Blacklist.js +12 -0
  22. package/dist/models/Blacklist.js.map +1 -0
  23. package/dist/models/BotConfig.d.ts +62 -0
  24. package/dist/models/BotConfig.js +53 -0
  25. package/dist/models/BotConfig.js.map +1 -0
  26. package/dist/models/Caixa2Item.d.ts +69 -0
  27. package/dist/models/Caixa2Item.js +9 -0
  28. package/dist/models/Caixa2Item.js.map +1 -0
  29. package/dist/models/CanalConfig.d.ts +19 -0
  30. package/dist/models/CanalConfig.js +10 -0
  31. package/dist/models/CanalConfig.js.map +1 -0
  32. package/dist/models/CargoConfig.d.ts +18 -0
  33. package/dist/models/CargoConfig.js +13 -0
  34. package/dist/models/CargoConfig.js.map +1 -0
  35. package/dist/models/Cidade.d.ts +160 -0
  36. package/dist/models/Cidade.js +24 -0
  37. package/dist/models/Cidade.js.map +1 -0
  38. package/dist/models/CidadeCache.d.ts +127 -0
  39. package/dist/models/CidadeCache.js +17 -0
  40. package/dist/models/CidadeCache.js.map +1 -0
  41. package/dist/models/CraftConfig.d.ts +41 -0
  42. package/dist/models/CraftConfig.js +34 -0
  43. package/dist/models/CraftConfig.js.map +1 -0
  44. package/dist/models/Farm.d.ts +24 -0
  45. package/dist/models/Farm.js +20 -0
  46. package/dist/models/Farm.js.map +1 -0
  47. package/dist/models/FarmValidacaoState.d.ts +47 -0
  48. package/dist/models/FarmValidacaoState.js +31 -0
  49. package/dist/models/FarmValidacaoState.js.map +1 -0
  50. package/dist/models/FeatureTogglesConfig.d.ts +54 -0
  51. package/dist/models/FeatureTogglesConfig.js +7 -0
  52. package/dist/models/FeatureTogglesConfig.js.map +1 -0
  53. package/dist/models/History.d.ts +14 -0
  54. package/dist/models/History.js +8 -0
  55. package/dist/models/History.js.map +1 -0
  56. package/dist/models/KeyValue.d.ts +41 -0
  57. package/dist/models/KeyValue.js +7 -0
  58. package/dist/models/KeyValue.js.map +1 -0
  59. package/dist/models/LoadRequest.d.ts +95 -0
  60. package/dist/models/LoadRequest.js +25 -0
  61. package/dist/models/LoadRequest.js.map +1 -0
  62. package/dist/models/LogsExporterGuildConfig.d.ts +126 -0
  63. package/dist/models/LogsExporterGuildConfig.js +26 -0
  64. package/dist/models/LogsExporterGuildConfig.js.map +1 -0
  65. package/dist/models/MembroCadastro.d.ts +16 -0
  66. package/dist/models/MembroCadastro.js +10 -0
  67. package/dist/models/MembroCadastro.js.map +1 -0
  68. package/dist/models/MensagemRecrutamento.d.ts +71 -0
  69. package/dist/models/MensagemRecrutamento.js +10 -0
  70. package/dist/models/MensagemRecrutamento.js.map +1 -0
  71. package/dist/models/MensagemRotacao.d.ts +18 -0
  72. package/dist/models/MensagemRotacao.js +12 -0
  73. package/dist/models/MensagemRotacao.js.map +1 -0
  74. package/dist/models/PedirRecGuildConfig.d.ts +153 -0
  75. package/dist/models/PedirRecGuildConfig.js +17 -0
  76. package/dist/models/PedirRecGuildConfig.js.map +1 -0
  77. package/dist/models/RegistroOlheiro.d.ts +34 -0
  78. package/dist/models/RegistroOlheiro.js +25 -0
  79. package/dist/models/RegistroOlheiro.js.map +1 -0
  80. package/dist/models/Servidor.d.ts +145 -0
  81. package/dist/models/Servidor.js +15 -0
  82. package/dist/models/Servidor.js.map +1 -0
  83. package/dist/models/SolicitacaoUp.d.ts +29 -0
  84. package/dist/models/SolicitacaoUp.js +23 -0
  85. package/dist/models/SolicitacaoUp.js.map +1 -0
  86. package/dist/models/Venda.d.ts +22 -0
  87. package/dist/models/Venda.js +14 -0
  88. package/dist/models/Venda.js.map +1 -0
  89. package/dist/models/VendaConfig.d.ts +23 -0
  90. package/dist/models/VendaConfig.js +16 -0
  91. package/dist/models/VendaConfig.js.map +1 -0
  92. package/dist/models/index.d.ts +56 -0
  93. package/dist/models/index.js +29 -0
  94. package/dist/models/index.js.map +1 -0
  95. package/package.json +58 -0
@@ -0,0 +1,387 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Registro de um baque entre duas facções, dentro da mesma cidade. Dois
4
+ * jeitos de nascer (campo `origem`):
5
+ * - "painel": a própria facção desafia outra pelo painel "Marcar Baque"
6
+ * (fac-assist-bot) — `data`/`hora`/`aposta`/`desafiador*` preenchidos.
7
+ * Anunciado pelo self-bot (fac-helper-bot) no canal MARCAR_BAQUE da
8
+ * Cidade; confirmado por reação/resposta de quem tem o cargo desafiado.
9
+ * - "externa": detectado pelo self-bot quando ALGUÉM (não o self-bot)
10
+ * marca o cargo da própria facção no canal MARCAR_BAQUE — sem
11
+ * data/hora/aposta. Aprovado/reprovado por botão no fac-assist-bot;
12
+ * o self-bot reage/responde na mensagem original (`mensagemOrigemId`).
13
+ */
14
+ export interface IBaqueMarcado extends Document {
15
+ origem: "painel" | "externa";
16
+ /** Nome da facção desafiada (Cidade.faccoes[].nome) */
17
+ baqueContraNome: string;
18
+ /** Cargo Discord da facção desafiada */
19
+ baqueContraCargoId: string;
20
+ /** Nome da facção desafiadora — sempre a facção dona do servidor que solicitou (origem "painel") ou resolvida pelo cargo de quem marcou (origem "externa", melhor esforço) */
21
+ desafiadorNome?: string;
22
+ /** Cargo Discord da facção desafiadora */
23
+ desafiadorCargoId?: string;
24
+ /** Data do baque (dd/mm) — só em origem "painel" */
25
+ data?: string;
26
+ /** Hora do baque (hh:mm) — só em origem "painel" */
27
+ hora?: string;
28
+ /** Tipo de aposta — só em origem "painel" */
29
+ aposta?: string;
30
+ /** Discord ID de quem marcou (admin do painel) ou de quem mencionou o cargo (origem "externa") */
31
+ criadoPor: string;
32
+ criadoEm: Date;
33
+ /** ID da mensagem do anúncio no canal MARCAR_BAQUE, depois de enviado pelo self-bot — origem "painel" */
34
+ mensagemId?: string;
35
+ /** ID da mensagem onde ALGUÉM marcou o cargo da própria facção — origem "externa" */
36
+ mensagemOrigemId?: string;
37
+ /**
38
+ * "pendente" → "enviado" → "confirmado" (origem "painel", anúncio + confirmação por reação/resposta)
39
+ * "pendente" → "aprovado"/"reprovado" (origem "externa", decisão por botão no fac-assist-bot)
40
+ */
41
+ status: "pendente" | "enviado" | "confirmado" | "aprovado" | "reprovado";
42
+ /** Discord ID de quem confirmou (reação ou resposta) — sempre alguém com o cargo da facção desafiada (origem "painel") */
43
+ confirmadoPor?: string;
44
+ /** Como foi confirmado */
45
+ confirmadoVia?: "reacao" | "resposta";
46
+ confirmadoEm?: Date;
47
+ /** true depois que o bot da facção desafiadora renderizou a confirmação no próprio canal de baques marcados (origem "painel") */
48
+ confirmacaoNotificada?: boolean;
49
+ /** Discord ID de quem clicou Aprovar/Reprovar (origem "externa") */
50
+ revisadoPor?: string;
51
+ revisadoEm?: Date;
52
+ /** true depois que o fac-assist-bot já renderizou o embed de Aprovar/Reprovar — evita duplicar a cada poll enquanto aguarda decisão */
53
+ anuncioAprovacaoEnviado?: boolean;
54
+ /** true depois que o self-bot já reagiu/respondeu na mensagem original (mensagemOrigemId) com o resultado */
55
+ reacaoNotificada?: boolean;
56
+ /** Discord ID de quem clicou "Assumir Responsabilidade" — sempre diferente do responsável principal */
57
+ responsavelSecundario?: string;
58
+ assumidoSecundarioEm?: Date;
59
+ /** Discord IDs de quem clicou "Participar Baque" — qualquer membro, sem checagem de cargo */
60
+ interessados?: string[];
61
+ /** Subconjunto de interessados escolhido ao escalar */
62
+ escalados?: string[];
63
+ escaladoPor?: string;
64
+ escaladoEm?: Date;
65
+ /** true depois que o worker de horário já liberou o botão "Escalar Baque" — evita reprocessar a cada poll */
66
+ escalarDisponivel?: boolean;
67
+ /** Resultado final do confronto, registrado pelo responsável */
68
+ resultado?: "vitoria" | "derrota";
69
+ resultadoPor?: string;
70
+ resultadoEm?: Date;
71
+ /** ID da mensagem do embed interativo de gerenciamento em CANAL_BAQUES_MARCADOS (distinto de mensagemId, que é o anúncio em MARCAR_BAQUE) */
72
+ mensagemGerenciamentoId?: string;
73
+ }
74
+ export declare const BaqueMarcadoSchema: mongoose.Schema<IBaqueMarcado, mongoose.Model<IBaqueMarcado, any, any, any, any, any, IBaqueMarcado>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
75
+ id: string;
76
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
77
+ _id: mongoose.Types.ObjectId;
78
+ }> & {
79
+ __v: number;
80
+ }, "id"> & {
81
+ id: string;
82
+ }, {
83
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
84
+ id: string;
85
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
86
+ _id: mongoose.Types.ObjectId;
87
+ }> & {
88
+ __v: number;
89
+ }, "id"> & {
90
+ id: string;
91
+ }>;
92
+ data?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
93
+ id: string;
94
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
95
+ _id: mongoose.Types.ObjectId;
96
+ }> & {
97
+ __v: number;
98
+ }, "id"> & {
99
+ id: string;
100
+ }>;
101
+ hora?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
102
+ id: string;
103
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
104
+ _id: mongoose.Types.ObjectId;
105
+ }> & {
106
+ __v: number;
107
+ }, "id"> & {
108
+ id: string;
109
+ }>;
110
+ escalados?: mongoose.SchemaDefinitionProperty<string[] | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
111
+ id: string;
112
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
113
+ _id: mongoose.Types.ObjectId;
114
+ }> & {
115
+ __v: number;
116
+ }, "id"> & {
117
+ id: string;
118
+ }>;
119
+ criadoPor?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
120
+ id: string;
121
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
122
+ _id: mongoose.Types.ObjectId;
123
+ }> & {
124
+ __v: number;
125
+ }, "id"> & {
126
+ id: string;
127
+ }>;
128
+ resultado?: mongoose.SchemaDefinitionProperty<"vitoria" | "derrota" | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
129
+ id: string;
130
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
131
+ _id: mongoose.Types.ObjectId;
132
+ }> & {
133
+ __v: number;
134
+ }, "id"> & {
135
+ id: string;
136
+ }>;
137
+ mensagemId?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
138
+ id: string;
139
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
140
+ _id: mongoose.Types.ObjectId;
141
+ }> & {
142
+ __v: number;
143
+ }, "id"> & {
144
+ id: string;
145
+ }>;
146
+ criadoEm?: mongoose.SchemaDefinitionProperty<Date, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
147
+ id: string;
148
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
149
+ _id: mongoose.Types.ObjectId;
150
+ }> & {
151
+ __v: number;
152
+ }, "id"> & {
153
+ id: string;
154
+ }>;
155
+ origem?: mongoose.SchemaDefinitionProperty<"painel" | "externa", IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
156
+ id: string;
157
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
158
+ _id: mongoose.Types.ObjectId;
159
+ }> & {
160
+ __v: number;
161
+ }, "id"> & {
162
+ id: string;
163
+ }>;
164
+ baqueContraNome?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
165
+ id: string;
166
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
167
+ _id: mongoose.Types.ObjectId;
168
+ }> & {
169
+ __v: number;
170
+ }, "id"> & {
171
+ id: string;
172
+ }>;
173
+ baqueContraCargoId?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
174
+ id: string;
175
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
176
+ _id: mongoose.Types.ObjectId;
177
+ }> & {
178
+ __v: number;
179
+ }, "id"> & {
180
+ id: string;
181
+ }>;
182
+ desafiadorNome?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
183
+ id: string;
184
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
185
+ _id: mongoose.Types.ObjectId;
186
+ }> & {
187
+ __v: number;
188
+ }, "id"> & {
189
+ id: string;
190
+ }>;
191
+ desafiadorCargoId?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
192
+ id: string;
193
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
194
+ _id: mongoose.Types.ObjectId;
195
+ }> & {
196
+ __v: number;
197
+ }, "id"> & {
198
+ id: string;
199
+ }>;
200
+ aposta?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
201
+ id: string;
202
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
203
+ _id: mongoose.Types.ObjectId;
204
+ }> & {
205
+ __v: number;
206
+ }, "id"> & {
207
+ id: string;
208
+ }>;
209
+ mensagemOrigemId?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
210
+ id: string;
211
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
212
+ _id: mongoose.Types.ObjectId;
213
+ }> & {
214
+ __v: number;
215
+ }, "id"> & {
216
+ id: string;
217
+ }>;
218
+ status?: mongoose.SchemaDefinitionProperty<"pendente" | "enviado" | "confirmado" | "aprovado" | "reprovado", IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
219
+ id: string;
220
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
221
+ _id: mongoose.Types.ObjectId;
222
+ }> & {
223
+ __v: number;
224
+ }, "id"> & {
225
+ id: string;
226
+ }>;
227
+ confirmadoPor?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
228
+ id: string;
229
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
230
+ _id: mongoose.Types.ObjectId;
231
+ }> & {
232
+ __v: number;
233
+ }, "id"> & {
234
+ id: string;
235
+ }>;
236
+ confirmadoVia?: mongoose.SchemaDefinitionProperty<"reacao" | "resposta" | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
237
+ id: string;
238
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
239
+ _id: mongoose.Types.ObjectId;
240
+ }> & {
241
+ __v: number;
242
+ }, "id"> & {
243
+ id: string;
244
+ }>;
245
+ confirmadoEm?: mongoose.SchemaDefinitionProperty<Date | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
246
+ id: string;
247
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
248
+ _id: mongoose.Types.ObjectId;
249
+ }> & {
250
+ __v: number;
251
+ }, "id"> & {
252
+ id: string;
253
+ }>;
254
+ confirmacaoNotificada?: mongoose.SchemaDefinitionProperty<boolean | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
255
+ id: string;
256
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
257
+ _id: mongoose.Types.ObjectId;
258
+ }> & {
259
+ __v: number;
260
+ }, "id"> & {
261
+ id: string;
262
+ }>;
263
+ revisadoPor?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
264
+ id: string;
265
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
266
+ _id: mongoose.Types.ObjectId;
267
+ }> & {
268
+ __v: number;
269
+ }, "id"> & {
270
+ id: string;
271
+ }>;
272
+ revisadoEm?: mongoose.SchemaDefinitionProperty<Date | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
273
+ id: string;
274
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
275
+ _id: mongoose.Types.ObjectId;
276
+ }> & {
277
+ __v: number;
278
+ }, "id"> & {
279
+ id: string;
280
+ }>;
281
+ anuncioAprovacaoEnviado?: mongoose.SchemaDefinitionProperty<boolean | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
282
+ id: string;
283
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
284
+ _id: mongoose.Types.ObjectId;
285
+ }> & {
286
+ __v: number;
287
+ }, "id"> & {
288
+ id: string;
289
+ }>;
290
+ reacaoNotificada?: mongoose.SchemaDefinitionProperty<boolean | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
291
+ id: string;
292
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
293
+ _id: mongoose.Types.ObjectId;
294
+ }> & {
295
+ __v: number;
296
+ }, "id"> & {
297
+ id: string;
298
+ }>;
299
+ responsavelSecundario?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
300
+ id: string;
301
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
302
+ _id: mongoose.Types.ObjectId;
303
+ }> & {
304
+ __v: number;
305
+ }, "id"> & {
306
+ id: string;
307
+ }>;
308
+ assumidoSecundarioEm?: mongoose.SchemaDefinitionProperty<Date | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
309
+ id: string;
310
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
311
+ _id: mongoose.Types.ObjectId;
312
+ }> & {
313
+ __v: number;
314
+ }, "id"> & {
315
+ id: string;
316
+ }>;
317
+ interessados?: mongoose.SchemaDefinitionProperty<string[] | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
318
+ id: string;
319
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
320
+ _id: mongoose.Types.ObjectId;
321
+ }> & {
322
+ __v: number;
323
+ }, "id"> & {
324
+ id: string;
325
+ }>;
326
+ escaladoPor?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
327
+ id: string;
328
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
329
+ _id: mongoose.Types.ObjectId;
330
+ }> & {
331
+ __v: number;
332
+ }, "id"> & {
333
+ id: string;
334
+ }>;
335
+ escaladoEm?: mongoose.SchemaDefinitionProperty<Date | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
336
+ id: string;
337
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
338
+ _id: mongoose.Types.ObjectId;
339
+ }> & {
340
+ __v: number;
341
+ }, "id"> & {
342
+ id: string;
343
+ }>;
344
+ escalarDisponivel?: mongoose.SchemaDefinitionProperty<boolean | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
345
+ id: string;
346
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
347
+ _id: mongoose.Types.ObjectId;
348
+ }> & {
349
+ __v: number;
350
+ }, "id"> & {
351
+ id: string;
352
+ }>;
353
+ resultadoPor?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
354
+ id: string;
355
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
356
+ _id: mongoose.Types.ObjectId;
357
+ }> & {
358
+ __v: number;
359
+ }, "id"> & {
360
+ id: string;
361
+ }>;
362
+ resultadoEm?: mongoose.SchemaDefinitionProperty<Date | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
363
+ id: string;
364
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
365
+ _id: mongoose.Types.ObjectId;
366
+ }> & {
367
+ __v: number;
368
+ }, "id"> & {
369
+ id: string;
370
+ }>;
371
+ mensagemGerenciamentoId?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
372
+ id: string;
373
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
374
+ _id: mongoose.Types.ObjectId;
375
+ }> & {
376
+ __v: number;
377
+ }, "id"> & {
378
+ id: string;
379
+ }>;
380
+ }, IBaqueMarcado>;
381
+ export declare const BaqueMarcadoModel: mongoose.Model<IBaqueMarcado, {}, {}, {}, mongoose.Document<unknown, {}, IBaqueMarcado, {}, mongoose.DefaultSchemaOptions> & IBaqueMarcado & Required<{
382
+ _id: mongoose.Types.ObjectId;
383
+ }> & {
384
+ __v: number;
385
+ } & {
386
+ id: string;
387
+ }, any, IBaqueMarcado>;
@@ -0,0 +1,42 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const BaqueMarcadoSchema = new Schema({
3
+ origem: { type: String, default: "painel", enum: ["painel", "externa"], index: true },
4
+ baqueContraNome: { type: String, required: true },
5
+ baqueContraCargoId: { type: String, required: true },
6
+ desafiadorNome: { type: String },
7
+ desafiadorCargoId: { type: String },
8
+ data: { type: String },
9
+ hora: { type: String },
10
+ aposta: { type: String },
11
+ criadoPor: { type: String, required: true, index: true },
12
+ criadoEm: { type: Date, default: Date.now },
13
+ mensagemId: { type: String },
14
+ mensagemOrigemId: { type: String },
15
+ status: {
16
+ type: String,
17
+ default: "pendente",
18
+ enum: ["pendente", "enviado", "confirmado", "aprovado", "reprovado"],
19
+ index: true,
20
+ },
21
+ confirmadoPor: { type: String },
22
+ confirmadoVia: { type: String, enum: ["reacao", "resposta"] },
23
+ confirmadoEm: { type: Date },
24
+ confirmacaoNotificada: { type: Boolean, default: false },
25
+ revisadoPor: { type: String },
26
+ revisadoEm: { type: Date },
27
+ anuncioAprovacaoEnviado: { type: Boolean, default: false },
28
+ reacaoNotificada: { type: Boolean, default: false },
29
+ responsavelSecundario: { type: String },
30
+ assumidoSecundarioEm: { type: Date },
31
+ interessados: { type: [String], default: [] },
32
+ escalados: { type: [String], default: [] },
33
+ escaladoPor: { type: String },
34
+ escaladoEm: { type: Date },
35
+ escalarDisponivel: { type: Boolean, default: false },
36
+ resultado: { type: String, enum: ["vitoria", "derrota"] },
37
+ resultadoPor: { type: String },
38
+ resultadoEm: { type: Date },
39
+ mensagemGerenciamentoId: { type: String },
40
+ }, { collection: "baquesmarcados" });
41
+ export const BaqueMarcadoModel = mongoose.model("BaqueMarcado", BaqueMarcadoSchema);
42
+ //# sourceMappingURL=BaqueMarcado.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaqueMarcado.js","sourceRoot":"","sources":["../../src/models/BaqueMarcado.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Vive em 3 lugares: banco PRÓPRIO de cada Servidor (cópia local de leitura,
4
+ * só da blacklist da cidade dele) e no banco do fac-control-bot (mestre,
5
+ * todas as cidades). `cidadeId` escopa a entrada — só Servidores vinculados
6
+ * à mesma Cidade enxergam a blacklist um do outro. Quem escreve é sempre o
7
+ * fac-helper-bot (parser de logs), nunca os bots de fac.
8
+ */
9
+ export interface IBlacklist extends Document {
10
+ playerId: string;
11
+ cidadeId: mongoose.Types.ObjectId;
12
+ organizacao?: string;
13
+ cargo?: string;
14
+ vencimento: Date;
15
+ criadoEm: Date;
16
+ atualizadoEm: Date;
17
+ }
18
+ export declare const BlacklistSchema: mongoose.Schema<IBlacklist, mongoose.Model<IBlacklist, any, any, any, any, any, IBlacklist>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
19
+ id: string;
20
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
21
+ _id: mongoose.Types.ObjectId;
22
+ }> & {
23
+ __v: number;
24
+ }, "id"> & {
25
+ id: string;
26
+ }, {
27
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
28
+ id: string;
29
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
30
+ _id: mongoose.Types.ObjectId;
31
+ }> & {
32
+ __v: number;
33
+ }, "id"> & {
34
+ id: string;
35
+ }>;
36
+ criadoEm?: mongoose.SchemaDefinitionProperty<Date, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
37
+ id: string;
38
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
39
+ _id: mongoose.Types.ObjectId;
40
+ }> & {
41
+ __v: number;
42
+ }, "id"> & {
43
+ id: string;
44
+ }>;
45
+ playerId?: mongoose.SchemaDefinitionProperty<string, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
46
+ id: string;
47
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
48
+ _id: mongoose.Types.ObjectId;
49
+ }> & {
50
+ __v: number;
51
+ }, "id"> & {
52
+ id: string;
53
+ }>;
54
+ cidadeId?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
55
+ id: string;
56
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
57
+ _id: mongoose.Types.ObjectId;
58
+ }> & {
59
+ __v: number;
60
+ }, "id"> & {
61
+ id: string;
62
+ }>;
63
+ organizacao?: mongoose.SchemaDefinitionProperty<string | undefined, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
64
+ id: string;
65
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
66
+ _id: mongoose.Types.ObjectId;
67
+ }> & {
68
+ __v: number;
69
+ }, "id"> & {
70
+ id: string;
71
+ }>;
72
+ cargo?: mongoose.SchemaDefinitionProperty<string | undefined, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
73
+ id: string;
74
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
75
+ _id: mongoose.Types.ObjectId;
76
+ }> & {
77
+ __v: number;
78
+ }, "id"> & {
79
+ id: string;
80
+ }>;
81
+ vencimento?: mongoose.SchemaDefinitionProperty<Date, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
82
+ id: string;
83
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
84
+ _id: mongoose.Types.ObjectId;
85
+ }> & {
86
+ __v: number;
87
+ }, "id"> & {
88
+ id: string;
89
+ }>;
90
+ atualizadoEm?: mongoose.SchemaDefinitionProperty<Date, IBlacklist, mongoose.Document<unknown, {}, IBlacklist, {
91
+ id: string;
92
+ }, mongoose.DefaultSchemaOptions> & Omit<IBlacklist & Required<{
93
+ _id: mongoose.Types.ObjectId;
94
+ }> & {
95
+ __v: number;
96
+ }, "id"> & {
97
+ id: string;
98
+ }>;
99
+ }, IBlacklist>;
100
+ export declare const BlacklistModel: mongoose.Model<IBlacklist, {}, {}, {}, mongoose.Document<unknown, {}, IBlacklist, {}, mongoose.DefaultSchemaOptions> & IBlacklist & Required<{
101
+ _id: mongoose.Types.ObjectId;
102
+ }> & {
103
+ __v: number;
104
+ } & {
105
+ id: string;
106
+ }, any, IBlacklist>;
@@ -0,0 +1,12 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const BlacklistSchema = new Schema({
3
+ playerId: { type: String, required: true, unique: true },
4
+ cidadeId: { type: Schema.Types.ObjectId, ref: "Cidade", required: true },
5
+ organizacao: { type: String },
6
+ cargo: { type: String },
7
+ vencimento: { type: Date, required: true, index: { expireAfterSeconds: 0 } },
8
+ criadoEm: { type: Date, default: Date.now },
9
+ atualizadoEm: { type: Date, default: Date.now },
10
+ }, { collection: "blacklist" });
11
+ export const BlacklistModel = mongoose.model("Blacklist", BlacklistSchema);
12
+ //# sourceMappingURL=Blacklist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Blacklist.js","sourceRoot":"","sources":["../../src/models/Blacklist.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,MAAM,EAAiB,MAAM,UAAU,CAAC;AAmB3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CACvC;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACvB,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE;IAC5E,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;IAC3C,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;CAChD,EACD,EAAE,UAAU,EAAE,WAAW,EAAE,CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAa,WAAW,EAAE,eAAe,CAAC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Configurações dinâmicas do bot (salvas no MongoDB).
4
+ * Apenas UM documento deve existir — uso Singleton via configId fixo.
5
+ */
6
+ export interface CargoHierarchyConfigEntry {
7
+ key: string;
8
+ /** ID do cargo no Discord (quando sincronizado do servidor) */
9
+ discordRoleId?: string;
10
+ nome: string;
11
+ sigla: string;
12
+ ordem: number;
13
+ /** Tags de permissão/grupo ativas para este cargo */
14
+ tags: string[];
15
+ }
16
+ export interface IBotConfig extends Document {
17
+ configId: string;
18
+ farmDiasVencimento: number;
19
+ rebaixamentoDiasRecrutador: number;
20
+ rebaixamentoDiasMembro: number;
21
+ farmDiaVencimentoGerencia: number;
22
+ recrutamentoValorPorAprovacao: number;
23
+ /** Texto da "ÁREA DE RISCO" no anúncio de recrutamento (/ilegal) */
24
+ ilegalAreaRisco: string;
25
+ /** Texto da condição de farm no anúncio (ex: "OPCIONAL") */
26
+ ilegalFarm: string;
27
+ /** Horário (HH:mm) em que mensagens automáticas são enviadas */
28
+ mensagensAutoHorarioEnvio: string;
29
+ /** Requisitos de itens por tipo de farm (parametrizável via painel admin) */
30
+ farmRequisitos: {
31
+ tipo: string;
32
+ label: string;
33
+ itens: {
34
+ nomes: string[];
35
+ quantidade: number;
36
+ acao: string;
37
+ }[];
38
+ }[];
39
+ /** Data da última execução da limpeza de blacklist */
40
+ ultimaLimpezaBlacklist: Date | null;
41
+ /** Intervalo (em horas) entre execuções da limpeza de blacklist */
42
+ limpezaBlacklistIntervaloHoras: number;
43
+ /** Dias até uma advertência (ADV) expirar automaticamente */
44
+ advDiasExpiracao: number;
45
+ /** Data da última execução da verificação de caixa2 líder */
46
+ ultimaExecucaoCaixa2Lider: Date | null;
47
+ /** Proporção mínima (0-1) que o líder deve manter no caixa2 */
48
+ caixa2LiderProporcaoMinima: number;
49
+ /** IDs de cargo que nunca recebem ADV automática de caixa2 (configurável via painel admin) */
50
+ caixa2BypassCargoIds: string[];
51
+ /** Membros com cargos fixos especiais (discordId → array de cargo keys). Configurável via painel admin. */
52
+ cargosEspeciais: Map<string, string[]>;
53
+ /** Última vez que o bot estava online (atualizado periodicamente) */
54
+ lastOnlineAt: Date | null;
55
+ }
56
+ export declare const BotConfigModel: mongoose.Model<IBotConfig, {}, {}, {}, mongoose.Document<unknown, {}, IBotConfig, {}, mongoose.DefaultSchemaOptions> & IBotConfig & Required<{
57
+ _id: mongoose.Types.ObjectId;
58
+ }> & {
59
+ __v: number;
60
+ } & {
61
+ id: string;
62
+ }, any, IBotConfig>;
@@ -0,0 +1,53 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ const BotConfigSchema = new Schema({
3
+ configId: { type: String, default: "main", unique: true },
4
+ // Farm
5
+ farmDiasVencimento: { type: Number, default: 7 },
6
+ // Rebaixamento
7
+ rebaixamentoDiasRecrutador: { type: Number, default: 14 },
8
+ rebaixamentoDiasMembro: { type: Number, default: 1 },
9
+ // Gerência
10
+ farmDiaVencimentoGerencia: { type: Number, default: 1 }, // 1 = segunda-feira
11
+ // Recrutamento
12
+ recrutamentoValorPorAprovacao: { type: Number, default: 150_000 },
13
+ // Anúncio Ilegal (Recrutamento)
14
+ ilegalAreaRisco: { type: String, default: "" },
15
+ ilegalFarm: { type: String, default: "OPCIONAL" },
16
+ // Mensagens automáticas
17
+ mensagensAutoHorarioEnvio: { type: String, default: "17:00" },
18
+ // Validação de Farm
19
+ farmRequisitos: {
20
+ type: [
21
+ {
22
+ tipo: { type: String, required: true },
23
+ label: { type: String, required: true },
24
+ itens: {
25
+ type: [
26
+ {
27
+ nomes: { type: [String], required: true },
28
+ quantidade: { type: Number, required: true },
29
+ acao: { type: String, required: true },
30
+ },
31
+ ],
32
+ default: [],
33
+ },
34
+ },
35
+ ],
36
+ default: [],
37
+ },
38
+ // Blacklist
39
+ ultimaLimpezaBlacklist: { type: Date, default: null },
40
+ limpezaBlacklistIntervaloHoras: { type: Number, default: 12 },
41
+ advDiasExpiracao: { type: Number, default: 30 },
42
+ // Caixa2 Líder
43
+ ultimaExecucaoCaixa2Lider: { type: Date, default: null },
44
+ caixa2LiderProporcaoMinima: { type: Number, default: 0.3 },
45
+ // Caixa2 — Bypass de ADV automática
46
+ caixa2BypassCargoIds: { type: [String], default: [] },
47
+ // Cargos Especiais
48
+ cargosEspeciais: { type: Map, of: [String], default: new Map() },
49
+ // Heartbeat
50
+ lastOnlineAt: { type: Date, default: null },
51
+ });
52
+ export const BotConfigModel = mongoose.model("BotConfig", BotConfigSchema);
53
+ //# sourceMappingURL=BotConfig.js.map