baileys-joss 1.0.1 → 1.0.2

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 (125) hide show
  1. package/README.md +1983 -79
  2. package/lib/Socket/business.d.ts +4 -0
  3. package/lib/Socket/business.d.ts.map +1 -1
  4. package/lib/Socket/chats.d.ts +4 -0
  5. package/lib/Socket/chats.d.ts.map +1 -1
  6. package/lib/Socket/chats.js +44 -1
  7. package/lib/Socket/chats.js.map +1 -1
  8. package/lib/Socket/communities.d.ts +4 -0
  9. package/lib/Socket/communities.d.ts.map +1 -1
  10. package/lib/Socket/groups.d.ts +4 -0
  11. package/lib/Socket/groups.d.ts.map +1 -1
  12. package/lib/Socket/index.d.ts +4 -0
  13. package/lib/Socket/index.d.ts.map +1 -1
  14. package/lib/Socket/messages-recv.d.ts +4 -0
  15. package/lib/Socket/messages-recv.d.ts.map +1 -1
  16. package/lib/Socket/messages-send.d.ts +4 -0
  17. package/lib/Socket/messages-send.d.ts.map +1 -1
  18. package/lib/Socket/newsletter.d.ts +4 -0
  19. package/lib/Socket/newsletter.d.ts.map +1 -1
  20. package/lib/Types/Message.d.ts +4 -0
  21. package/lib/Types/Message.d.ts.map +1 -1
  22. package/lib/Utils/activity-logger.d.ts +189 -0
  23. package/lib/Utils/activity-logger.d.ts.map +1 -0
  24. package/lib/Utils/activity-logger.js +418 -0
  25. package/lib/Utils/activity-logger.js.map +1 -0
  26. package/lib/Utils/anti-spam.d.ts +145 -0
  27. package/lib/Utils/anti-spam.d.ts.map +1 -0
  28. package/lib/Utils/anti-spam.js +398 -0
  29. package/lib/Utils/anti-spam.js.map +1 -0
  30. package/lib/Utils/auto-reply.d.ts +123 -0
  31. package/lib/Utils/auto-reply.d.ts.map +1 -0
  32. package/lib/Utils/auto-reply.js +234 -0
  33. package/lib/Utils/auto-reply.js.map +1 -0
  34. package/lib/Utils/broadcast.d.ts +121 -0
  35. package/lib/Utils/broadcast.d.ts.map +1 -0
  36. package/lib/Utils/broadcast.js +223 -0
  37. package/lib/Utils/broadcast.js.map +1 -0
  38. package/lib/Utils/bulk-messaging.d.ts +79 -0
  39. package/lib/Utils/bulk-messaging.d.ts.map +1 -0
  40. package/lib/Utils/bulk-messaging.js +148 -0
  41. package/lib/Utils/bulk-messaging.js.map +1 -0
  42. package/lib/Utils/chat-analytics.d.ts +92 -0
  43. package/lib/Utils/chat-analytics.d.ts.map +1 -0
  44. package/lib/Utils/chat-analytics.js +337 -0
  45. package/lib/Utils/chat-analytics.js.map +1 -0
  46. package/lib/Utils/chat-control.d.ts +156 -0
  47. package/lib/Utils/chat-control.d.ts.map +1 -0
  48. package/lib/Utils/chat-control.js +224 -0
  49. package/lib/Utils/chat-control.js.map +1 -0
  50. package/lib/Utils/chat-export.d.ts +75 -0
  51. package/lib/Utils/chat-export.d.ts.map +1 -0
  52. package/lib/Utils/chat-export.js +309 -0
  53. package/lib/Utils/chat-export.js.map +1 -0
  54. package/lib/Utils/content-detector.d.ts +199 -0
  55. package/lib/Utils/content-detector.d.ts.map +1 -0
  56. package/lib/Utils/content-detector.js +442 -0
  57. package/lib/Utils/content-detector.js.map +1 -0
  58. package/lib/Utils/index.d.ts +23 -0
  59. package/lib/Utils/index.d.ts.map +1 -1
  60. package/lib/Utils/index.js +52 -0
  61. package/lib/Utils/index.js.map +1 -1
  62. package/lib/Utils/link-scanner.d.ts +112 -0
  63. package/lib/Utils/link-scanner.d.ts.map +1 -0
  64. package/lib/Utils/link-scanner.js +433 -0
  65. package/lib/Utils/link-scanner.js.map +1 -0
  66. package/lib/Utils/media-downloader.d.ts +86 -0
  67. package/lib/Utils/media-downloader.d.ts.map +1 -0
  68. package/lib/Utils/media-downloader.js +269 -0
  69. package/lib/Utils/media-downloader.js.map +1 -0
  70. package/lib/Utils/meme-generator.d.ts +96 -0
  71. package/lib/Utils/meme-generator.d.ts.map +1 -0
  72. package/lib/Utils/meme-generator.js +368 -0
  73. package/lib/Utils/meme-generator.js.map +1 -0
  74. package/lib/Utils/message-search.d.ts +96 -0
  75. package/lib/Utils/message-search.d.ts.map +1 -0
  76. package/lib/Utils/message-search.js +261 -0
  77. package/lib/Utils/message-search.js.map +1 -0
  78. package/lib/Utils/messages-media.d.ts +20 -1
  79. package/lib/Utils/messages-media.d.ts.map +1 -1
  80. package/lib/Utils/messages-media.js +100 -5
  81. package/lib/Utils/messages-media.js.map +1 -1
  82. package/lib/Utils/messages.d.ts.map +1 -1
  83. package/lib/Utils/messages.js +9 -2
  84. package/lib/Utils/messages.js.map +1 -1
  85. package/lib/Utils/mini-games.d.ts +155 -0
  86. package/lib/Utils/mini-games.d.ts.map +1 -0
  87. package/lib/Utils/mini-games.js +445 -0
  88. package/lib/Utils/mini-games.js.map +1 -0
  89. package/lib/Utils/pomodoro.d.ts +139 -0
  90. package/lib/Utils/pomodoro.d.ts.map +1 -0
  91. package/lib/Utils/pomodoro.js +434 -0
  92. package/lib/Utils/pomodoro.js.map +1 -0
  93. package/lib/Utils/qr-generator.d.ts +95 -0
  94. package/lib/Utils/qr-generator.d.ts.map +1 -0
  95. package/lib/Utils/qr-generator.js +226 -0
  96. package/lib/Utils/qr-generator.js.map +1 -0
  97. package/lib/Utils/quotes.d.ts +110 -0
  98. package/lib/Utils/quotes.d.ts.map +1 -0
  99. package/lib/Utils/quotes.js +325 -0
  100. package/lib/Utils/quotes.js.map +1 -0
  101. package/lib/Utils/scheduling.d.ts +88 -0
  102. package/lib/Utils/scheduling.d.ts.map +1 -0
  103. package/lib/Utils/scheduling.js +163 -0
  104. package/lib/Utils/scheduling.js.map +1 -0
  105. package/lib/Utils/status-posting.d.ts +151 -0
  106. package/lib/Utils/status-posting.d.ts.map +1 -0
  107. package/lib/Utils/status-posting.js +162 -0
  108. package/lib/Utils/status-posting.js.map +1 -0
  109. package/lib/Utils/templates.d.ts +154 -0
  110. package/lib/Utils/templates.d.ts.map +1 -0
  111. package/lib/Utils/templates.js +368 -0
  112. package/lib/Utils/templates.js.map +1 -0
  113. package/lib/Utils/vcard.d.ts +86 -0
  114. package/lib/Utils/vcard.d.ts.map +1 -0
  115. package/lib/Utils/vcard.js +195 -0
  116. package/lib/Utils/vcard.js.map +1 -0
  117. package/lib/Utils/voice-note.d.ts +115 -0
  118. package/lib/Utils/voice-note.d.ts.map +1 -0
  119. package/lib/Utils/voice-note.js +212 -0
  120. package/lib/Utils/voice-note.js.map +1 -0
  121. package/lib/Utils/weather.d.ts +118 -0
  122. package/lib/Utils/weather.d.ts.map +1 -0
  123. package/lib/Utils/weather.js +362 -0
  124. package/lib/Utils/weather.js.map +1 -0
  125. package/package.json +6 -3
@@ -0,0 +1,445 @@
1
+ /**
2
+ * Baileys-Joss: Mini Games
3
+ *
4
+ * Game sederhana untuk chat: Tebak Angka, Quiz, Tictactoe
5
+ */
6
+ // =====================================================
7
+ // GAME MANAGER
8
+ // =====================================================
9
+ export class MiniGamesManager {
10
+ constructor() {
11
+ this.sessions = new Map();
12
+ this.sessionTimeout = 5 * 60 * 1000; // 5 minutes
13
+ }
14
+ /**
15
+ * Generate unique session ID
16
+ */
17
+ generateId() {
18
+ return `game_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
19
+ }
20
+ /**
21
+ * Get session by JID
22
+ */
23
+ getSession(jid) {
24
+ for (const [, session] of this.sessions) {
25
+ if (session.jid === jid && session.state === 'active') {
26
+ return session;
27
+ }
28
+ }
29
+ return undefined;
30
+ }
31
+ /**
32
+ * End session
33
+ */
34
+ endSession(sessionId) {
35
+ const session = this.sessions.get(sessionId);
36
+ if (session) {
37
+ session.state = 'finished';
38
+ }
39
+ }
40
+ /**
41
+ * Clean expired sessions
42
+ */
43
+ cleanExpiredSessions() {
44
+ const now = Date.now();
45
+ for (const [id, session] of this.sessions) {
46
+ if (session.expiresAt.getTime() < now) {
47
+ session.state = 'timeout';
48
+ this.sessions.delete(id);
49
+ }
50
+ }
51
+ }
52
+ // =====================================================
53
+ // GUESS NUMBER GAME
54
+ // =====================================================
55
+ /**
56
+ * Start a number guessing game
57
+ */
58
+ startGuessNumber(jid, min = 1, max = 100) {
59
+ const secretNumber = Math.floor(Math.random() * (max - min + 1)) + min;
60
+ const session = {
61
+ id: this.generateId(),
62
+ jid,
63
+ type: 'guess',
64
+ state: 'active',
65
+ players: [],
66
+ data: {
67
+ secretNumber,
68
+ min,
69
+ max,
70
+ attempts: 0,
71
+ maxAttempts: 10
72
+ },
73
+ createdAt: new Date(),
74
+ expiresAt: new Date(Date.now() + this.sessionTimeout)
75
+ };
76
+ this.sessions.set(session.id, session);
77
+ return session;
78
+ }
79
+ /**
80
+ * Process guess for number game
81
+ */
82
+ guessNumber(sessionId, guess) {
83
+ const session = this.sessions.get(sessionId);
84
+ if (!session || session.type !== 'guess' || session.state !== 'active') {
85
+ return { correct: false, hint: 'correct', attempts: 0, gameOver: true, message: '❌ Game tidak ditemukan!' };
86
+ }
87
+ const { secretNumber, maxAttempts } = session.data;
88
+ session.data.attempts = (session.data.attempts || 0) + 1;
89
+ const attempts = session.data.attempts;
90
+ if (guess === secretNumber) {
91
+ session.state = 'finished';
92
+ return {
93
+ correct: true,
94
+ hint: 'correct',
95
+ attempts,
96
+ gameOver: true,
97
+ message: `🎉 BENAR! Angkanya adalah ${secretNumber}!\nKamu berhasil dalam ${attempts} percobaan!`
98
+ };
99
+ }
100
+ if (attempts >= maxAttempts) {
101
+ session.state = 'finished';
102
+ return {
103
+ correct: false,
104
+ hint: guess < secretNumber ? 'higher' : 'lower',
105
+ attempts,
106
+ gameOver: true,
107
+ message: `💀 Game Over! Angkanya adalah ${secretNumber}.\nKamu kehabisan kesempatan!`
108
+ };
109
+ }
110
+ const hint = guess < secretNumber ? 'higher' : 'lower';
111
+ return {
112
+ correct: false,
113
+ hint,
114
+ attempts,
115
+ gameOver: false,
116
+ message: hint === 'higher'
117
+ ? `⬆️ Terlalu kecil! Coba angka yang lebih BESAR\n📊 Sisa percobaan: ${maxAttempts - attempts}`
118
+ : `⬇️ Terlalu besar! Coba angka yang lebih KECIL\n📊 Sisa percobaan: ${maxAttempts - attempts}`
119
+ };
120
+ }
121
+ // =====================================================
122
+ // QUIZ GAME
123
+ // =====================================================
124
+ /**
125
+ * Start a quiz game
126
+ */
127
+ startQuiz(jid, questions) {
128
+ const session = {
129
+ id: this.generateId(),
130
+ jid,
131
+ type: 'quiz',
132
+ state: 'active',
133
+ players: [],
134
+ data: {
135
+ questions,
136
+ currentIndex: 0,
137
+ score: 0,
138
+ answers: []
139
+ },
140
+ createdAt: new Date(),
141
+ expiresAt: new Date(Date.now() + this.sessionTimeout)
142
+ };
143
+ this.sessions.set(session.id, session);
144
+ return session;
145
+ }
146
+ /**
147
+ * Get current quiz question
148
+ */
149
+ getCurrentQuestion(sessionId) {
150
+ const session = this.sessions.get(sessionId);
151
+ if (!session || session.type !== 'quiz' || session.state !== 'active') {
152
+ return null;
153
+ }
154
+ const { questions, currentIndex } = session.data;
155
+ const question = questions[currentIndex];
156
+ if (!question)
157
+ return null;
158
+ return {
159
+ question,
160
+ index: currentIndex + 1,
161
+ total: questions.length
162
+ };
163
+ }
164
+ /**
165
+ * Answer quiz question
166
+ */
167
+ answerQuiz(sessionId, answerIndex) {
168
+ const session = this.sessions.get(sessionId);
169
+ if (!session || session.type !== 'quiz' || session.state !== 'active') {
170
+ return { correct: false, correctAnswer: '', score: 0, gameOver: true, message: '❌ Quiz tidak ditemukan!' };
171
+ }
172
+ const data = session.data;
173
+ const currentQuestion = data.questions[data.currentIndex];
174
+ if (!currentQuestion) {
175
+ session.state = 'finished';
176
+ return { correct: false, correctAnswer: '', score: data.score, gameOver: true, message: '❌ Pertanyaan tidak valid!' };
177
+ }
178
+ const correct = answerIndex === currentQuestion.correctIndex;
179
+ if (correct)
180
+ data.score++;
181
+ data.answers.push(correct);
182
+ data.currentIndex++;
183
+ const gameOver = data.currentIndex >= data.questions.length;
184
+ if (gameOver) {
185
+ session.state = 'finished';
186
+ }
187
+ const nextQuestion = gameOver ? undefined : data.questions[data.currentIndex];
188
+ return {
189
+ correct,
190
+ correctAnswer: currentQuestion.options[currentQuestion.correctIndex] || '',
191
+ explanation: currentQuestion.explanation,
192
+ score: data.score,
193
+ gameOver,
194
+ nextQuestion,
195
+ message: correct
196
+ ? `✅ BENAR! +1 poin (${data.score}/${data.questions.length})`
197
+ : `❌ SALAH! Jawaban: ${currentQuestion.options[currentQuestion.correctIndex]}${currentQuestion.explanation ? `\n💡 ${currentQuestion.explanation}` : ''}`
198
+ };
199
+ }
200
+ // =====================================================
201
+ // TIC TAC TOE
202
+ // =====================================================
203
+ /**
204
+ * Start Tic Tac Toe game
205
+ */
206
+ startTictactoe(jid, playerX, playerO) {
207
+ const session = {
208
+ id: this.generateId(),
209
+ jid,
210
+ type: 'tictactoe',
211
+ state: 'active',
212
+ players: [playerX, playerO],
213
+ data: {
214
+ cells: Array(9).fill(null),
215
+ currentPlayer: 'X',
216
+ playerX,
217
+ playerO
218
+ },
219
+ createdAt: new Date(),
220
+ expiresAt: new Date(Date.now() + this.sessionTimeout)
221
+ };
222
+ this.sessions.set(session.id, session);
223
+ return session;
224
+ }
225
+ /**
226
+ * Make a move in Tic Tac Toe
227
+ */
228
+ tictactoeMove(sessionId, player, position) {
229
+ const session = this.sessions.get(sessionId);
230
+ if (!session || session.type !== 'tictactoe' || session.state !== 'active') {
231
+ return { valid: false, board: '', gameOver: true, message: '❌ Game tidak ditemukan!' };
232
+ }
233
+ const board = session.data;
234
+ const isPlayerX = player === board.playerX;
235
+ const isPlayerO = player === board.playerO;
236
+ const expectedSymbol = board.currentPlayer;
237
+ // Check if it's the player's turn
238
+ if ((expectedSymbol === 'X' && !isPlayerX) || (expectedSymbol === 'O' && !isPlayerO)) {
239
+ return { valid: false, board: this.renderTictactoeBoard(board.cells), gameOver: false, message: '❌ Bukan giliranmu!' };
240
+ }
241
+ // Check if position is valid
242
+ if (position < 0 || position > 8 || board.cells[position] !== null) {
243
+ return { valid: false, board: this.renderTictactoeBoard(board.cells), gameOver: false, message: '❌ Posisi tidak valid!' };
244
+ }
245
+ // Make the move
246
+ board.cells[position] = expectedSymbol;
247
+ // Check for winner
248
+ const winner = this.checkTictactoeWinner(board.cells);
249
+ if (winner) {
250
+ session.state = 'finished';
251
+ const winnerName = winner === 'X' ? board.playerX : board.playerO;
252
+ return {
253
+ valid: true,
254
+ board: this.renderTictactoeBoard(board.cells),
255
+ gameOver: true,
256
+ winner: winnerName,
257
+ message: `🎉 ${winnerName} (${winner}) MENANG!\n\n${this.renderTictactoeBoard(board.cells)}`
258
+ };
259
+ }
260
+ // Check for draw
261
+ if (board.cells.every(cell => cell !== null)) {
262
+ session.state = 'finished';
263
+ return {
264
+ valid: true,
265
+ board: this.renderTictactoeBoard(board.cells),
266
+ gameOver: true,
267
+ draw: true,
268
+ message: `🤝 SERI!\n\n${this.renderTictactoeBoard(board.cells)}`
269
+ };
270
+ }
271
+ // Switch player
272
+ board.currentPlayer = board.currentPlayer === 'X' ? 'O' : 'X';
273
+ const nextPlayer = board.currentPlayer === 'X' ? board.playerX : board.playerO;
274
+ return {
275
+ valid: true,
276
+ board: this.renderTictactoeBoard(board.cells),
277
+ gameOver: false,
278
+ message: `${this.renderTictactoeBoard(board.cells)}\n\nGiliran: ${nextPlayer} (${board.currentPlayer})`
279
+ };
280
+ }
281
+ /**
282
+ * Check for Tic Tac Toe winner
283
+ */
284
+ checkTictactoeWinner(cells) {
285
+ const lines = [
286
+ [0, 1, 2], [3, 4, 5], [6, 7, 8], // Rows
287
+ [0, 3, 6], [1, 4, 7], [2, 5, 8], // Columns
288
+ [0, 4, 8], [2, 4, 6] // Diagonals
289
+ ];
290
+ for (const line of lines) {
291
+ const a = line[0];
292
+ const b = line[1];
293
+ const c = line[2];
294
+ if (a !== undefined && b !== undefined && c !== undefined) {
295
+ if (cells[a] && cells[a] === cells[b] && cells[a] === cells[c]) {
296
+ return cells[a];
297
+ }
298
+ }
299
+ }
300
+ return null;
301
+ }
302
+ /**
303
+ * Render Tic Tac Toe board
304
+ */
305
+ renderTictactoeBoard(cells) {
306
+ const symbols = cells.map((cell, i) => cell || (i + 1).toString());
307
+ return `
308
+ ┌───┬───┬───┐
309
+ │ ${symbols[0]} │ ${symbols[1]} │ ${symbols[2]} │
310
+ ├───┼───┼───┤
311
+ │ ${symbols[3]} │ ${symbols[4]} │ ${symbols[5]} │
312
+ ├───┼───┼───┤
313
+ │ ${symbols[6]} │ ${symbols[7]} │ ${symbols[8]} │
314
+ └───┴───┴───┘`;
315
+ }
316
+ // =====================================================
317
+ // SIMPLE GAMES
318
+ // =====================================================
319
+ /**
320
+ * Rock Paper Scissors
321
+ */
322
+ rockPaperScissors(userChoice) {
323
+ const choices = ['rock', 'paper', 'scissors'];
324
+ const emojis = { rock: '🪨', paper: '📄', scissors: '✂️' };
325
+ const botChoice = choices[Math.floor(Math.random() * 3)] ?? 'rock';
326
+ let result;
327
+ if (userChoice === botChoice) {
328
+ result = 'draw';
329
+ }
330
+ else if ((userChoice === 'rock' && botChoice === 'scissors') ||
331
+ (userChoice === 'paper' && botChoice === 'rock') ||
332
+ (userChoice === 'scissors' && botChoice === 'paper')) {
333
+ result = 'win';
334
+ }
335
+ else {
336
+ result = 'lose';
337
+ }
338
+ const resultText = result === 'win' ? '🎉 Kamu MENANG!' : result === 'lose' ? '😢 Kamu KALAH!' : '🤝 SERI!';
339
+ return {
340
+ userChoice,
341
+ botChoice,
342
+ result,
343
+ message: `${emojis[userChoice]} vs ${emojis[botChoice]}\n\n${resultText}`
344
+ };
345
+ }
346
+ /**
347
+ * Roll a dice
348
+ */
349
+ rollDice(sides = 6, count = 1) {
350
+ const results = [];
351
+ for (let i = 0; i < count; i++) {
352
+ results.push(Math.floor(Math.random() * sides) + 1);
353
+ }
354
+ const total = results.reduce((sum, n) => sum + n, 0);
355
+ const diceEmojis = ['⚀', '⚁', '⚂', '⚃', '⚄', '⚅'];
356
+ const visual = results.map(r => sides === 6 ? diceEmojis[r - 1] : `[${r}]`).join(' ');
357
+ return {
358
+ results,
359
+ total,
360
+ message: `🎲 ${visual}\n\nTotal: ${total}`
361
+ };
362
+ }
363
+ /**
364
+ * Flip a coin
365
+ */
366
+ flipCoin() {
367
+ const result = Math.random() < 0.5 ? 'heads' : 'tails';
368
+ return {
369
+ result,
370
+ message: result === 'heads' ? '🪙 KEPALA! (Heads)' : '🪙 EKOR! (Tails)'
371
+ };
372
+ }
373
+ /**
374
+ * Random pick from options
375
+ */
376
+ randomPick(options) {
377
+ const index = Math.floor(Math.random() * options.length);
378
+ const selected = options[index];
379
+ return {
380
+ selected,
381
+ index,
382
+ message: `🎰 Hasil random:\n\n➡️ ${selected}`
383
+ };
384
+ }
385
+ }
386
+ // =====================================================
387
+ // SAMPLE QUIZ QUESTIONS
388
+ // =====================================================
389
+ export const sampleQuizQuestions = [
390
+ {
391
+ question: 'Apa ibu kota Indonesia?',
392
+ options: ['Surabaya', 'Jakarta', 'Bandung', 'Medan'],
393
+ correctIndex: 1,
394
+ category: 'Geography',
395
+ difficulty: 'easy'
396
+ },
397
+ {
398
+ question: 'Siapa penemu telepon?',
399
+ options: ['Thomas Edison', 'Nikola Tesla', 'Alexander Graham Bell', 'Albert Einstein'],
400
+ correctIndex: 2,
401
+ explanation: 'Alexander Graham Bell mematenkan telepon pada tahun 1876',
402
+ category: 'Science',
403
+ difficulty: 'medium'
404
+ },
405
+ {
406
+ question: 'Berapa jumlah provinsi di Indonesia (2024)?',
407
+ options: ['34', '37', '38', '35'],
408
+ correctIndex: 2,
409
+ explanation: 'Indonesia memiliki 38 provinsi setelah pemekaran',
410
+ category: 'Geography',
411
+ difficulty: 'medium'
412
+ },
413
+ {
414
+ question: 'Apa rumus kimia air?',
415
+ options: ['CO2', 'H2O', 'O2', 'NaCl'],
416
+ correctIndex: 1,
417
+ category: 'Science',
418
+ difficulty: 'easy'
419
+ },
420
+ {
421
+ question: 'Planet terbesar di tata surya?',
422
+ options: ['Mars', 'Saturnus', 'Jupiter', 'Neptunus'],
423
+ correctIndex: 2,
424
+ category: 'Science',
425
+ difficulty: 'easy'
426
+ }
427
+ ];
428
+ // =====================================================
429
+ // FACTORY FUNCTION
430
+ // =====================================================
431
+ export const createMiniGames = () => {
432
+ return new MiniGamesManager();
433
+ };
434
+ // =====================================================
435
+ // HELPER FUNCTIONS
436
+ // =====================================================
437
+ /**
438
+ * Format quiz question as message
439
+ */
440
+ export const formatQuizQuestion = (question, index, total) => {
441
+ const optionLabels = ['A', 'B', 'C', 'D', 'E', 'F'];
442
+ const options = question.options.map((opt, i) => `${optionLabels[i]}. ${opt}`).join('\n');
443
+ return `📚 *QUIZ* (${index}/${total})${question.difficulty ? ` [${question.difficulty.toUpperCase()}]` : ''}\n\n${question.question}\n\n${options}\n\n_Reply dengan huruf jawaban (A/B/C/D)_`;
444
+ };
445
+ //# sourceMappingURL=mini-games.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mini-games.js","sourceRoot":"","sources":["../../src/Utils/mini-games.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Baileys-Joss: Pomodoro Timer
3
+ *
4
+ * Timer produktivitas dengan teknik Pomodoro
5
+ */
6
+ export interface PomodoroConfig {
7
+ workDuration: number;
8
+ shortBreakDuration: number;
9
+ longBreakDuration: number;
10
+ sessionsBeforeLongBreak: number;
11
+ autoStartBreaks: boolean;
12
+ autoStartWork: boolean;
13
+ }
14
+ export interface PomodoroSession {
15
+ id: string;
16
+ jid: string;
17
+ status: 'idle' | 'work' | 'short_break' | 'long_break' | 'paused';
18
+ currentSession: number;
19
+ totalSessions: number;
20
+ startTime?: number;
21
+ pauseTime?: number;
22
+ remainingTime?: number;
23
+ config: PomodoroConfig;
24
+ }
25
+ export interface PomodoroStats {
26
+ jid: string;
27
+ totalWorkSessions: number;
28
+ totalWorkMinutes: number;
29
+ totalBreakMinutes: number;
30
+ currentStreak: number;
31
+ longestStreak: number;
32
+ lastSessionDate?: string;
33
+ }
34
+ export type PomodoroEventType = 'work_start' | 'work_end' | 'break_start' | 'break_end' | 'session_complete' | 'paused' | 'resumed';
35
+ export interface PomodoroEvent {
36
+ type: PomodoroEventType;
37
+ session: PomodoroSession;
38
+ timestamp: number;
39
+ }
40
+ export type PomodoroEventHandler = (event: PomodoroEvent) => void;
41
+ export declare const DEFAULT_POMODORO_CONFIG: PomodoroConfig;
42
+ export declare class PomodoroManager {
43
+ private sessions;
44
+ private stats;
45
+ private timers;
46
+ private eventHandlers;
47
+ /**
48
+ * Register event handler
49
+ */
50
+ onEvent(handler: PomodoroEventHandler): void;
51
+ /**
52
+ * Emit event to all handlers
53
+ */
54
+ private emit;
55
+ /**
56
+ * Create new pomodoro session
57
+ */
58
+ createSession(jid: string, config?: Partial<PomodoroConfig>): PomodoroSession;
59
+ /**
60
+ * Get session for user
61
+ */
62
+ getSession(jid: string): PomodoroSession | undefined;
63
+ /**
64
+ * Start work session
65
+ */
66
+ startWork(jid: string): PomodoroSession;
67
+ /**
68
+ * Start break (short or long)
69
+ */
70
+ startBreak(jid: string): PomodoroSession | null;
71
+ /**
72
+ * Pause current session
73
+ */
74
+ pause(jid: string): PomodoroSession | null;
75
+ /**
76
+ * Resume paused session
77
+ */
78
+ resume(jid: string): PomodoroSession | null;
79
+ /**
80
+ * Stop/reset session
81
+ */
82
+ stop(jid: string): void;
83
+ /**
84
+ * Get remaining time formatted
85
+ */
86
+ getRemainingTime(jid: string): string;
87
+ /**
88
+ * Get session status formatted
89
+ */
90
+ getStatusMessage(jid: string): string;
91
+ /**
92
+ * Get user stats
93
+ */
94
+ getStats(jid: string): PomodoroStats;
95
+ /**
96
+ * Get formatted stats
97
+ */
98
+ getStatsMessage(jid: string): string;
99
+ /**
100
+ * Start internal timer
101
+ */
102
+ private startTimer;
103
+ /**
104
+ * Clear timer
105
+ */
106
+ private clearTimer;
107
+ /**
108
+ * Handle timer completion
109
+ */
110
+ private onTimerComplete;
111
+ /**
112
+ * Format help message
113
+ */
114
+ getHelpMessage(): string;
115
+ /**
116
+ * Parse command
117
+ */
118
+ parseCommand(jid: string, command: string): string;
119
+ /**
120
+ * Handle set commands
121
+ */
122
+ private handleSet;
123
+ /**
124
+ * Cleanup all timers
125
+ */
126
+ cleanup(): void;
127
+ }
128
+ export declare const createPomodoroManager: () => PomodoroManager;
129
+ export declare const pomodoro: {
130
+ start: (jid: string) => PomodoroSession;
131
+ break: (jid: string) => PomodoroSession | null;
132
+ pause: (jid: string) => PomodoroSession | null;
133
+ resume: (jid: string) => PomodoroSession | null;
134
+ stop: (jid: string) => void;
135
+ status: (jid: string) => string;
136
+ stats: (jid: string) => string;
137
+ command: (jid: string, cmd: string) => string;
138
+ };
139
+ //# sourceMappingURL=pomodoro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pomodoro.d.ts","sourceRoot":"","sources":["../../src/Utils/pomodoro.ts"],"names":[],"mappings":"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"}