baileys-joss 1.0.0 → 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 (127) hide show
  1. package/README.md +2554 -78
  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/messages-send.js +130 -1
  19. package/lib/Socket/messages-send.js.map +1 -1
  20. package/lib/Socket/newsletter.d.ts +4 -0
  21. package/lib/Socket/newsletter.d.ts.map +1 -1
  22. package/lib/Types/Message.d.ts +25 -1
  23. package/lib/Types/Message.d.ts.map +1 -1
  24. package/lib/Utils/activity-logger.d.ts +189 -0
  25. package/lib/Utils/activity-logger.d.ts.map +1 -0
  26. package/lib/Utils/activity-logger.js +418 -0
  27. package/lib/Utils/activity-logger.js.map +1 -0
  28. package/lib/Utils/anti-spam.d.ts +145 -0
  29. package/lib/Utils/anti-spam.d.ts.map +1 -0
  30. package/lib/Utils/anti-spam.js +398 -0
  31. package/lib/Utils/anti-spam.js.map +1 -0
  32. package/lib/Utils/auto-reply.d.ts +123 -0
  33. package/lib/Utils/auto-reply.d.ts.map +1 -0
  34. package/lib/Utils/auto-reply.js +234 -0
  35. package/lib/Utils/auto-reply.js.map +1 -0
  36. package/lib/Utils/broadcast.d.ts +121 -0
  37. package/lib/Utils/broadcast.d.ts.map +1 -0
  38. package/lib/Utils/broadcast.js +223 -0
  39. package/lib/Utils/broadcast.js.map +1 -0
  40. package/lib/Utils/bulk-messaging.d.ts +79 -0
  41. package/lib/Utils/bulk-messaging.d.ts.map +1 -0
  42. package/lib/Utils/bulk-messaging.js +148 -0
  43. package/lib/Utils/bulk-messaging.js.map +1 -0
  44. package/lib/Utils/chat-analytics.d.ts +92 -0
  45. package/lib/Utils/chat-analytics.d.ts.map +1 -0
  46. package/lib/Utils/chat-analytics.js +337 -0
  47. package/lib/Utils/chat-analytics.js.map +1 -0
  48. package/lib/Utils/chat-control.d.ts +156 -0
  49. package/lib/Utils/chat-control.d.ts.map +1 -0
  50. package/lib/Utils/chat-control.js +224 -0
  51. package/lib/Utils/chat-control.js.map +1 -0
  52. package/lib/Utils/chat-export.d.ts +75 -0
  53. package/lib/Utils/chat-export.d.ts.map +1 -0
  54. package/lib/Utils/chat-export.js +309 -0
  55. package/lib/Utils/chat-export.js.map +1 -0
  56. package/lib/Utils/content-detector.d.ts +199 -0
  57. package/lib/Utils/content-detector.d.ts.map +1 -0
  58. package/lib/Utils/content-detector.js +442 -0
  59. package/lib/Utils/content-detector.js.map +1 -0
  60. package/lib/Utils/index.d.ts +23 -0
  61. package/lib/Utils/index.d.ts.map +1 -1
  62. package/lib/Utils/index.js +52 -0
  63. package/lib/Utils/index.js.map +1 -1
  64. package/lib/Utils/link-scanner.d.ts +112 -0
  65. package/lib/Utils/link-scanner.d.ts.map +1 -0
  66. package/lib/Utils/link-scanner.js +433 -0
  67. package/lib/Utils/link-scanner.js.map +1 -0
  68. package/lib/Utils/media-downloader.d.ts +86 -0
  69. package/lib/Utils/media-downloader.d.ts.map +1 -0
  70. package/lib/Utils/media-downloader.js +269 -0
  71. package/lib/Utils/media-downloader.js.map +1 -0
  72. package/lib/Utils/meme-generator.d.ts +96 -0
  73. package/lib/Utils/meme-generator.d.ts.map +1 -0
  74. package/lib/Utils/meme-generator.js +368 -0
  75. package/lib/Utils/meme-generator.js.map +1 -0
  76. package/lib/Utils/message-search.d.ts +96 -0
  77. package/lib/Utils/message-search.d.ts.map +1 -0
  78. package/lib/Utils/message-search.js +261 -0
  79. package/lib/Utils/message-search.js.map +1 -0
  80. package/lib/Utils/messages-media.d.ts +20 -1
  81. package/lib/Utils/messages-media.d.ts.map +1 -1
  82. package/lib/Utils/messages-media.js +100 -5
  83. package/lib/Utils/messages-media.js.map +1 -1
  84. package/lib/Utils/messages.d.ts.map +1 -1
  85. package/lib/Utils/messages.js +14 -2
  86. package/lib/Utils/messages.js.map +1 -1
  87. package/lib/Utils/mini-games.d.ts +155 -0
  88. package/lib/Utils/mini-games.d.ts.map +1 -0
  89. package/lib/Utils/mini-games.js +445 -0
  90. package/lib/Utils/mini-games.js.map +1 -0
  91. package/lib/Utils/pomodoro.d.ts +139 -0
  92. package/lib/Utils/pomodoro.d.ts.map +1 -0
  93. package/lib/Utils/pomodoro.js +434 -0
  94. package/lib/Utils/pomodoro.js.map +1 -0
  95. package/lib/Utils/qr-generator.d.ts +95 -0
  96. package/lib/Utils/qr-generator.d.ts.map +1 -0
  97. package/lib/Utils/qr-generator.js +226 -0
  98. package/lib/Utils/qr-generator.js.map +1 -0
  99. package/lib/Utils/quotes.d.ts +110 -0
  100. package/lib/Utils/quotes.d.ts.map +1 -0
  101. package/lib/Utils/quotes.js +325 -0
  102. package/lib/Utils/quotes.js.map +1 -0
  103. package/lib/Utils/scheduling.d.ts +88 -0
  104. package/lib/Utils/scheduling.d.ts.map +1 -0
  105. package/lib/Utils/scheduling.js +163 -0
  106. package/lib/Utils/scheduling.js.map +1 -0
  107. package/lib/Utils/status-posting.d.ts +151 -0
  108. package/lib/Utils/status-posting.d.ts.map +1 -0
  109. package/lib/Utils/status-posting.js +162 -0
  110. package/lib/Utils/status-posting.js.map +1 -0
  111. package/lib/Utils/templates.d.ts +154 -0
  112. package/lib/Utils/templates.d.ts.map +1 -0
  113. package/lib/Utils/templates.js +368 -0
  114. package/lib/Utils/templates.js.map +1 -0
  115. package/lib/Utils/vcard.d.ts +86 -0
  116. package/lib/Utils/vcard.d.ts.map +1 -0
  117. package/lib/Utils/vcard.js +195 -0
  118. package/lib/Utils/vcard.js.map +1 -0
  119. package/lib/Utils/voice-note.d.ts +115 -0
  120. package/lib/Utils/voice-note.d.ts.map +1 -0
  121. package/lib/Utils/voice-note.js +212 -0
  122. package/lib/Utils/voice-note.js.map +1 -0
  123. package/lib/Utils/weather.d.ts +118 -0
  124. package/lib/Utils/weather.d.ts.map +1 -0
  125. package/lib/Utils/weather.js +362 -0
  126. package/lib/Utils/weather.js.map +1 -0
  127. package/package.json +6 -3
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Baileys-Joss: Media Downloader
3
+ *
4
+ * Download semua media dari chat
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { downloadMediaMessage } from './messages.js';
9
+ /**
10
+ * Get media type from message
11
+ */
12
+ const getMediaType = (message) => {
13
+ const content = message.message;
14
+ if (!content)
15
+ return null;
16
+ if (content.imageMessage)
17
+ return 'image';
18
+ if (content.videoMessage)
19
+ return 'video';
20
+ if (content.audioMessage)
21
+ return 'audio';
22
+ if (content.documentMessage)
23
+ return 'document';
24
+ if (content.stickerMessage)
25
+ return 'sticker';
26
+ return null;
27
+ };
28
+ /**
29
+ * Get file extension for media type
30
+ */
31
+ const getExtension = (message) => {
32
+ const content = message.message;
33
+ if (!content)
34
+ return '';
35
+ if (content.imageMessage) {
36
+ const mime = content.imageMessage.mimetype || 'image/jpeg';
37
+ if (mime.includes('png'))
38
+ return '.png';
39
+ if (mime.includes('gif'))
40
+ return '.gif';
41
+ if (mime.includes('webp'))
42
+ return '.webp';
43
+ return '.jpg';
44
+ }
45
+ if (content.videoMessage) {
46
+ const mime = content.videoMessage.mimetype || 'video/mp4';
47
+ if (mime.includes('3gp'))
48
+ return '.3gp';
49
+ if (mime.includes('webm'))
50
+ return '.webm';
51
+ return '.mp4';
52
+ }
53
+ if (content.audioMessage) {
54
+ const mime = content.audioMessage.mimetype || 'audio/ogg';
55
+ if (mime.includes('mp3') || mime.includes('mpeg'))
56
+ return '.mp3';
57
+ if (mime.includes('mp4'))
58
+ return '.m4a';
59
+ if (mime.includes('wav'))
60
+ return '.wav';
61
+ return '.ogg';
62
+ }
63
+ if (content.documentMessage) {
64
+ const filename = content.documentMessage.fileName;
65
+ if (filename) {
66
+ const ext = path.extname(filename);
67
+ if (ext)
68
+ return ext;
69
+ }
70
+ return '.bin';
71
+ }
72
+ if (content.stickerMessage) {
73
+ if (content.stickerMessage.isAnimated)
74
+ return '.webp';
75
+ return '.webp';
76
+ }
77
+ return '';
78
+ };
79
+ /**
80
+ * Generate filename from template
81
+ */
82
+ const generateFilename = (message, type, template) => {
83
+ const ts = message.messageTimestamp;
84
+ const timestamp = ts ? (typeof ts === 'number' ? ts : Number(ts)) : Date.now() / 1000;
85
+ const date = new Date(timestamp * 1000);
86
+ const id = message.key.id || 'unknown';
87
+ const ext = getExtension(message);
88
+ // Get original filename for documents
89
+ let originalName = '';
90
+ if (message.message?.documentMessage?.fileName) {
91
+ originalName = path.basename(message.message.documentMessage.fileName, path.extname(message.message.documentMessage.fileName));
92
+ }
93
+ if (template) {
94
+ const dateStr = date.toISOString().split('T')[0] || '';
95
+ const timeStr = (date.toTimeString().split(' ')[0] || '').replace(/:/g, '-');
96
+ return template
97
+ .replace('{id}', id)
98
+ .replace('{type}', type)
99
+ .replace('{timestamp}', timestamp.toString())
100
+ .replace('{date}', dateStr)
101
+ .replace('{time}', timeStr)
102
+ .replace('{originalName}', originalName || id)
103
+ .replace('{ext}', ext);
104
+ }
105
+ // Default format: type_date_time_id.ext
106
+ const dateStr = date.toISOString().split('T')[0] || '';
107
+ const timeStr = (date.toTimeString().split(' ')[0] || '').replace(/:/g, '-');
108
+ return `${type}_${dateStr}_${timeStr}_${id.substring(0, 8)}${ext}`;
109
+ };
110
+ /**
111
+ * Sleep helper
112
+ */
113
+ const sleep = (ms) => new Promise(r => setTimeout(r, ms));
114
+ /**
115
+ * Media Downloader
116
+ */
117
+ export class MediaDownloader {
118
+ constructor(getMessage) {
119
+ this.getMessage = getMessage;
120
+ }
121
+ /**
122
+ * Filter messages that have downloadable media
123
+ */
124
+ filterMediaMessages(messages, types = ['all']) {
125
+ return messages.filter(msg => {
126
+ const type = getMediaType(msg);
127
+ if (!type)
128
+ return false;
129
+ if (types.includes('all'))
130
+ return true;
131
+ return types.includes(type);
132
+ });
133
+ }
134
+ /**
135
+ * Download media from a single message
136
+ */
137
+ async downloadSingle(message, outputDir, options = {}) {
138
+ const type = getMediaType(message);
139
+ const result = {
140
+ messageId: message.key.id || 'unknown',
141
+ type: type || 'all',
142
+ filename: '',
143
+ filepath: '',
144
+ size: 0,
145
+ success: false
146
+ };
147
+ if (!type) {
148
+ result.error = 'No media in message';
149
+ return result;
150
+ }
151
+ try {
152
+ // Generate filename
153
+ const filename = generateFilename(message, type, options.filenameTemplate);
154
+ result.filename = filename;
155
+ // Determine output path
156
+ let outputPath = outputDir;
157
+ if (options.createSubfolders) {
158
+ outputPath = path.join(outputDir, type + 's'); // images, videos, etc.
159
+ }
160
+ // Ensure directory exists
161
+ await fs.promises.mkdir(outputPath, { recursive: true });
162
+ const filepath = path.join(outputPath, filename);
163
+ result.filepath = filepath;
164
+ // Skip if exists
165
+ if (options.skipExisting) {
166
+ try {
167
+ await fs.promises.access(filepath);
168
+ result.success = true;
169
+ result.error = 'Skipped (already exists)';
170
+ return result;
171
+ }
172
+ catch {
173
+ // File doesn't exist, continue
174
+ }
175
+ }
176
+ // Download media
177
+ const buffer = await downloadMediaMessage(message, 'buffer', {}, {
178
+ logger: console,
179
+ reuploadRequest: async () => message
180
+ });
181
+ if (!buffer || !(buffer instanceof Buffer)) {
182
+ throw new Error('Failed to download media');
183
+ }
184
+ // Check file size
185
+ if (options.maxFileSize && options.maxFileSize > 0 && buffer.length > options.maxFileSize) {
186
+ result.error = `File too large (${buffer.length} bytes)`;
187
+ return result;
188
+ }
189
+ // Save file
190
+ await fs.promises.writeFile(filepath, buffer);
191
+ result.size = buffer.length;
192
+ result.success = true;
193
+ }
194
+ catch (error) {
195
+ result.error = error.message;
196
+ options.onError?.(message, error);
197
+ }
198
+ return result;
199
+ }
200
+ /**
201
+ * Download media from multiple messages
202
+ */
203
+ async downloadMultiple(messages, options) {
204
+ const types = options.types || ['all'];
205
+ const mediaMessages = this.filterMediaMessages(messages, types);
206
+ const summary = {
207
+ total: mediaMessages.length,
208
+ successful: 0,
209
+ failed: 0,
210
+ skipped: 0,
211
+ totalSize: 0,
212
+ results: [],
213
+ startedAt: new Date(),
214
+ completedAt: new Date()
215
+ };
216
+ for (let i = 0; i < mediaMessages.length; i++) {
217
+ const msg = mediaMessages[i];
218
+ if (!msg)
219
+ continue;
220
+ const result = await this.downloadSingle(msg, options.outputDir, options);
221
+ summary.results.push(result);
222
+ if (result.success) {
223
+ if (result.error?.includes('Skipped')) {
224
+ summary.skipped++;
225
+ }
226
+ else {
227
+ summary.successful++;
228
+ summary.totalSize += result.size;
229
+ }
230
+ }
231
+ else {
232
+ summary.failed++;
233
+ }
234
+ options.onProgress?.(i + 1, mediaMessages.length, result.filename);
235
+ // Delay between downloads
236
+ if (options.delay && i < mediaMessages.length - 1) {
237
+ await sleep(options.delay);
238
+ }
239
+ }
240
+ summary.completedAt = new Date();
241
+ return summary;
242
+ }
243
+ /**
244
+ * Download all media from a chat
245
+ */
246
+ async downloadFromChat(jid, messages, options) {
247
+ // Create output directory based on JID
248
+ const sanitizedJid = jid.replace(/[^a-zA-Z0-9]/g, '_');
249
+ const outputDir = options.outputDir || path.join(process.cwd(), 'downloads', sanitizedJid);
250
+ return this.downloadMultiple(messages, {
251
+ ...options,
252
+ outputDir
253
+ });
254
+ }
255
+ }
256
+ /**
257
+ * Create media downloader
258
+ */
259
+ export const createMediaDownloader = (getMessage) => {
260
+ return new MediaDownloader(getMessage);
261
+ };
262
+ /**
263
+ * Quick download helper
264
+ */
265
+ export const downloadAllMedia = async (messages, outputDir, options) => {
266
+ const downloader = new MediaDownloader(async () => undefined);
267
+ return downloader.downloadMultiple(messages, { ...options, outputDir });
268
+ };
269
+ //# sourceMappingURL=media-downloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-downloader.js","sourceRoot":"","sources":["../../src/Utils/media-downloader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AA8CjD;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,OAAkB,EAA4B,EAAE;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,OAAO,CAAA;IACxC,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,OAAO,CAAA;IACxC,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,OAAO,CAAA;IACxC,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,UAAU,CAAA;IAC9C,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,SAAS,CAAA;IAE5C,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,OAAkB,EAAU,EAAE;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAEvB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAA;QAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAA;QACzC,OAAO,MAAM,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW,CAAA;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,OAAO,CAAA;QACzC,OAAO,MAAM,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,WAAW,CAAA;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAA;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;QACvC,OAAO,MAAM,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAA;QACjD,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;QACpB,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU;YAAE,OAAO,OAAO,CAAA;QACrD,OAAO,OAAO,CAAA;IACf,CAAC;IAED,OAAO,EAAE,CAAA;AACV,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,gBAAgB,GAAG,CACxB,OAAkB,EAClB,IAAuB,EACvB,QAAiB,EACR,EAAE;IACX,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAA;IACnC,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;IACrF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS,CAAA;IACtC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAEjC,sCAAsC;IACtC,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;QAChD,YAAY,GAAG,IAAI,CAAC,QAAQ,CAC3B,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CACtD,CAAA;IACF,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC5E,OAAO,QAAQ;aACb,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;aACvB,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;aAC5C,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC1B,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC1B,OAAO,CAAC,gBAAgB,EAAE,YAAY,IAAI,EAAE,CAAC;aAC7C,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAE5E,OAAO,GAAG,IAAI,IAAI,OAAO,IAAI,OAAO,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,CAAA;AACnE,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,OAAO,eAAe;IAG3B,YACC,UAAsF;QAEtF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,QAAqB,EAAE,QAA6B,CAAC,KAAK,CAAC;QAC9E,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAA;YACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACtC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CACnB,OAAkB,EAClB,SAAiB,EACjB,UAA8C,EAAE;QAEhD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,MAAM,GAAmB;YAC9B,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,SAAS;YACtC,IAAI,EAAE,IAAI,IAAI,KAAK;YACnB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,KAAK;SACd,CAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,GAAG,qBAAqB,CAAA;YACpC,OAAO,MAAM,CAAA;QACd,CAAC;QAED,IAAI,CAAC;YACJ,oBAAoB;YACpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;YAC1E,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAE1B,wBAAwB;YACxB,IAAI,UAAU,GAAG,SAAS,CAAA;YAC1B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC9B,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,CAAA,CAAC,uBAAuB;YACtE,CAAC;YAED,0BAA0B;YAC1B,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAChD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAE1B,iBAAiB;YACjB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACJ,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAClC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;oBACrB,MAAM,CAAC,KAAK,GAAG,0BAA0B,CAAA;oBACzC,OAAO,MAAM,CAAA;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACR,+BAA+B;gBAChC,CAAC;YACF,CAAC;YAED,iBAAiB;YACjB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACxC,OAAO,EACP,QAAQ,EACR,EAAE,EACF;gBACC,MAAM,EAAE,OAAc;gBACtB,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;aACpC,CACD,CAAA;YAED,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC5C,CAAC;YAED,kBAAkB;YAClB,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC3F,MAAM,CAAC,KAAK,GAAG,mBAAmB,MAAM,CAAC,MAAM,SAAS,CAAA;gBACxD,OAAO,MAAM,CAAA;YACd,CAAC;YAED,YAAY;YACZ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAC7C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAA;YAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;QAEtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,GAAI,KAAe,CAAC,OAAO,CAAA;YACvC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAc,CAAC,CAAA;QAC3C,CAAC;QAED,OAAO,MAAM,CAAA;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACrB,QAAqB,EACrB,OAAwB;QAExB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAE/D,MAAM,OAAO,GAAoB;YAChC,KAAK,EAAE,aAAa,CAAC,MAAM;YAC3B,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,WAAW,EAAE,IAAI,IAAI,EAAE;SACvB,CAAA;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG;gBAAE,SAAQ;YAElB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACzE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE5B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvC,OAAO,CAAC,OAAO,EAAE,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,UAAU,EAAE,CAAA;oBACpB,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAA;gBACjC,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,MAAM,EAAE,CAAA;YACjB,CAAC;YAED,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YAElE,0BAA0B;YAC1B,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;QAChC,OAAO,OAAO,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACrB,GAAW,EACX,QAAqB,EACrB,OAAoE;QAEpE,uCAAuC;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;QACtD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;QAE1F,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACtC,GAAG,OAAO;YACV,SAAS;SACT,CAAC,CAAA;IACH,CAAC;CACD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,UAAsF,EACpE,EAAE;IACpB,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,CAAA;AACvC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,QAAqB,EACrB,SAAiB,EACjB,OAA4C,EACjB,EAAE;IAC7B,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAA;IAC7D,OAAO,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;AACxE,CAAC,CAAA"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Baileys-Joss: Meme Generator
3
+ *
4
+ * Generate meme sederhana dengan text overlay
5
+ */
6
+ export interface MemeTemplate {
7
+ id: string;
8
+ name: string;
9
+ description: string;
10
+ textPositions: Array<{
11
+ id: string;
12
+ label: string;
13
+ defaultText: string;
14
+ position: 'top' | 'bottom' | 'center' | 'custom';
15
+ customPosition?: {
16
+ x: number;
17
+ y: number;
18
+ };
19
+ }>;
20
+ imageUrl?: string;
21
+ width?: number;
22
+ height?: number;
23
+ }
24
+ export interface MemeConfig {
25
+ template: string | MemeTemplate;
26
+ texts: Record<string, string>;
27
+ fontSize?: number;
28
+ fontColor?: string;
29
+ strokeColor?: string;
30
+ strokeWidth?: number;
31
+ }
32
+ export interface GeneratedMeme {
33
+ templateId: string;
34
+ texts: Record<string, string>;
35
+ svgContent: string;
36
+ htmlContent: string;
37
+ }
38
+ export declare const MEME_TEMPLATES: MemeTemplate[];
39
+ export declare class MemeGenerator {
40
+ private templates;
41
+ constructor();
42
+ /**
43
+ * Get all available templates
44
+ */
45
+ getTemplates(): MemeTemplate[];
46
+ /**
47
+ * Get template by ID
48
+ */
49
+ getTemplate(id: string): MemeTemplate | undefined;
50
+ /**
51
+ * Add custom template
52
+ */
53
+ addTemplate(template: MemeTemplate): void;
54
+ /**
55
+ * Generate meme as text (ASCII art style)
56
+ */
57
+ generateTextMeme(templateId: string, texts: Record<string, string>): string;
58
+ /**
59
+ * Generate meme as SVG
60
+ */
61
+ generateSvgMeme(config: MemeConfig): GeneratedMeme;
62
+ /**
63
+ * Generate meme description (for text-only display)
64
+ */
65
+ describeMeme(templateId: string, texts: Record<string, string>): string;
66
+ /**
67
+ * List templates as formatted message
68
+ */
69
+ listTemplates(): string;
70
+ /**
71
+ * Quick meme from popular formats
72
+ */
73
+ quickMeme(format: 'drake' | 'expanding' | 'buttons' | 'fine' | 'change', ...texts: string[]): string;
74
+ /**
75
+ * Wrap text to fit width
76
+ */
77
+ private wrapText;
78
+ /**
79
+ * Escape XML special characters
80
+ */
81
+ private escapeXml;
82
+ }
83
+ export declare const createMemeGenerator: () => MemeGenerator;
84
+ /**
85
+ * Quick Drake meme
86
+ */
87
+ export declare const drakeMeme: (bad: string, good: string) => string;
88
+ /**
89
+ * Quick expanding brain meme
90
+ */
91
+ export declare const expandingBrainMeme: (...levels: string[]) => string;
92
+ /**
93
+ * Quick "this is fine" meme
94
+ */
95
+ export declare const thisIsFineMeme: (text?: string) => string;
96
+ //# sourceMappingURL=meme-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meme-generator.d.ts","sourceRoot":"","sources":["../../src/Utils/meme-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,KAAK,CAAC;QACpB,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;QAChD,cAAc,CAAC,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACzC,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,GAAG,YAAY,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACnB;AAMD,eAAO,MAAM,cAAc,EAAE,YAAY,EA0FxC,CAAA;AAMD,qBAAa,aAAa;IACzB,OAAO,CAAC,SAAS,CAAuC;;IASxD;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAI9B;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIjD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIzC;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAgC3E;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa;IAyFlD;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAoBvE;;OAEG;IACH,aAAa,IAAI,MAAM;IAcvB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAgCpG;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,SAAS;CAQjB;AAMD,eAAO,MAAM,mBAAmB,QAAO,aAEtC,CAAA;AAMD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,KAAG,MAGrD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,QAAQ,MAAM,EAAE,KAAG,MAGxD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAG9C,CAAA"}