apexify.js 2.2.0 → 2.2.3

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.
@@ -35,13 +35,23 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
46
+ };
38
47
  Object.defineProperty(exports, "__esModule", { value: true });
39
48
  exports.drawImage = void 0;
40
49
  var google_translate_1 = require("@iamtraction/google-translate");
41
- var sharp_1 = require("sharp");
50
+ var sharp = require("sharp");
42
51
  var discord_js_1 = require("discord.js");
43
52
  var axios_1 = require("axios");
44
- var sdk = require("api")("@prodia/v1.3.0#be019b2kls0gqss3");
53
+ var api = require("api");
54
+ var sdk = api("@prodia/v1.3.0#be019b2kls0gqss3");
45
55
  sdk.auth("43435e1c-cab1-493f-a224-f51e4b97ce8d");
46
56
  var validHercaiModals = [
47
57
  "v1",
@@ -114,12 +124,12 @@ var validProdiaModals = [
114
124
  "timeless-1.0.ckpt [7c4971d4]",
115
125
  "toonyou_beta6.safetensors [980f6b15]",
116
126
  ];
117
- function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x182d15) {
127
+ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x182d15, nsfw) {
118
128
  return __awaiter(this, void 0, void 0, function () {
119
129
  function retry(fn, retriesLeft) {
120
130
  if (retriesLeft === void 0) { retriesLeft = maxRetryAttempts; }
121
131
  return __awaiter(this, void 0, void 0, function () {
122
- var error_2;
132
+ var error_1;
123
133
  return __generator(this, function (_a) {
124
134
  switch (_a.label) {
125
135
  case 0:
@@ -127,11 +137,11 @@ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x1
127
137
  return [4 /*yield*/, fn()];
128
138
  case 1: return [2 /*return*/, _a.sent()];
129
139
  case 2:
130
- error_2 = _a.sent();
140
+ error_1 = _a.sent();
131
141
  if (retriesLeft === 0) {
132
- throw error_2;
142
+ throw error_1;
133
143
  }
134
- console.error("Retry failed, ".concat(retriesLeft, " attempts left. Error: ").concat(error_2.message));
144
+ console.error("Retry failed, ".concat(retriesLeft, " attempts left. Error: ").concat(error_1.message));
135
145
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, retryInterval); })];
136
146
  case 3:
137
147
  _a.sent();
@@ -141,15 +151,16 @@ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x1
141
151
  });
142
152
  });
143
153
  }
144
- var maxRetryAttempts, retryInterval, translatedText_1, _0x168f75, buttonsRow1, imageUrls, _0x4d7fb6, generateResponse, generatedJobId, error_1, _0x279cfe, _0x2b4402, _0x46cafe, _0x254246, urlButton, imageUrl, _0x29a652, urlButton, selectMenu_1, options, redrawButton, row1, row2, _0x56e917_1;
145
- return __generator(this, function (_a) {
146
- switch (_a.label) {
154
+ var maxRetryAttempts, retryInterval, translatedText_1, _0x168f75, buttonsRow1, imageUrls, _loop_1, _0x4d7fb6, state_1, selectMenu_1, options, redrawButton, row1, row2, _0x56e917_1;
155
+ var _a;
156
+ return __generator(this, function (_b) {
157
+ switch (_b.label) {
147
158
  case 0:
148
159
  maxRetryAttempts = 3;
149
160
  retryInterval = 5000;
150
- _a.label = 1;
161
+ _b.label = 1;
151
162
  case 1:
152
- _a.trys.push([1, 25, , 26]);
163
+ _b.trys.push([1, 8, , 9]);
153
164
  if (numOfImages > 4 || numOfImages <= 0) {
154
165
  throw new Error("Number of images can't be greater than 4 or smaller than 0.");
155
166
  }
@@ -160,102 +171,207 @@ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x1
160
171
  });
161
172
  })];
162
173
  case 2:
163
- translatedText_1 = _a.sent();
174
+ translatedText_1 = _b.sent();
164
175
  _0x168f75 = [];
165
176
  buttonsRow1 = [];
166
177
  imageUrls = [];
178
+ _loop_1 = function (_0x4d7fb6) {
179
+ var generateResponse, generatedJobId, error_2, _0x279cfe, _0x2b4402, _0x46cafe, attachment, urlButton, imageUrl, textToCheck_1, nsfwWords, _0x29a652, urlButton;
180
+ return __generator(this, function (_c) {
181
+ switch (_c.label) {
182
+ case 0:
183
+ _c.trys.push([0, 7, , 12]);
184
+ if (!validHercaiModals.includes(_0x182d15)) return [3 /*break*/, 2];
185
+ return [4 /*yield*/, retry(function () {
186
+ return _0x5cea2c.drawImage({
187
+ model: _0x182d15,
188
+ prompt: translatedText_1.text,
189
+ });
190
+ })];
191
+ case 1:
192
+ _0x59b128 = _c.sent();
193
+ return [3 /*break*/, 6];
194
+ case 2:
195
+ if (!validProdiaModals.includes(_0x182d15)) return [3 /*break*/, 5];
196
+ return [4 /*yield*/, sdk.generate({
197
+ model: _0x182d15,
198
+ prompt: translatedText_1.text,
199
+ })];
200
+ case 3:
201
+ generateResponse = _c.sent();
202
+ generatedJobId = generateResponse.data.job;
203
+ return [4 /*yield*/, checkJobStatus(generatedJobId)];
204
+ case 4:
205
+ _0x59b128 = _c.sent();
206
+ return [3 /*break*/, 6];
207
+ case 5: throw new Error("Invalid modal name.");
208
+ case 6: return [3 /*break*/, 12];
209
+ case 7:
210
+ error_2 = _c.sent();
211
+ if (!(error_2.response && error_2.response.status === 429)) return [3 /*break*/, 8];
212
+ console.error("Too many requests. Please try again later.");
213
+ return [2 /*return*/, { value: _0x2f79ae.reply("Please wait i am in a cool down for a minute") }];
214
+ case 8:
215
+ if (!(error_2.response && error_2.response.status === 500)) return [3 /*break*/, 9];
216
+ console.error("Internal server error. Please try again later.");
217
+ return [2 /*return*/, { value: _0x2f79ae.reply("Please wait i am in a cool down for a minute") }];
218
+ case 9: return [4 /*yield*/, _0x2f79ae.reply("Please wait i am in a cool down for a minute")];
219
+ case 10:
220
+ _c.sent();
221
+ throw new Error("Error processing message in file");
222
+ case 11: return [3 /*break*/, 12];
223
+ case 12:
224
+ _0x279cfe = void 0;
225
+ if (!(_0x182d15 === "v3")) return [3 /*break*/, 15];
226
+ return [4 /*yield*/, retry(function () {
227
+ return axios_1.get(_0x59b128.url, {
228
+ responseType: "arraybuffer",
229
+ });
230
+ })];
231
+ case 13:
232
+ _0x2b4402 = _c.sent();
233
+ _0x279cfe = Buffer.from(_0x2b4402.data, "binary");
234
+ return [4 /*yield*/, sharp(_0x279cfe)
235
+ .resize({
236
+ width: 0x320,
237
+ })
238
+ .toBuffer()];
239
+ case 14:
240
+ _0x46cafe = _c.sent();
241
+ attachment = {
242
+ file: _0x46cafe,
243
+ name: "image_".concat(_0x4d7fb6 + 1, ".png"),
244
+ };
245
+ _0x168f75.push(attachment);
246
+ urlButton = new discord_js_1.ButtonBuilder()
247
+ .setStyle(discord_js_1.ButtonStyle.Link)
248
+ .setLabel("Image ".concat(_0x4d7fb6 + 1))
249
+ .setURL(_0x59b128.url);
250
+ buttonsRow1.push(urlButton);
251
+ imageUrls.push(_0x59b128.url);
252
+ return [3 /*break*/, 18];
253
+ case 15:
254
+ imageUrl = _0x59b128.url || _0x59b128;
255
+ if (!nsfw) return [3 /*break*/, 17];
256
+ return [4 /*yield*/, attemptImageCaptioning(imageUrl)];
257
+ case 16:
258
+ textToCheck_1 = _c.sent();
259
+ nsfwWords = [
260
+ "anal",
261
+ "arousal",
262
+ "balls",
263
+ "blowjob",
264
+ "busty",
265
+ "butt",
266
+ "cameltoe",
267
+ "climax",
268
+ "clitoris",
269
+ "cock",
270
+ "crotch",
271
+ "cum",
272
+ "cumshot",
273
+ "cunnilingus",
274
+ "dirty",
275
+ "dirtytalk",
276
+ "dildo",
277
+ "erect",
278
+ "erogenous",
279
+ "escort",
280
+ "explicit",
281
+ "facial",
282
+ "fetish",
283
+ "flirt",
284
+ "foreplay",
285
+ "genitals",
286
+ "groin",
287
+ "hardcore",
288
+ "hardon",
289
+ "horniness",
290
+ "horny",
291
+ "kamasutra",
292
+ "kinky",
293
+ "lewd",
294
+ "lingerie",
295
+ "lust",
296
+ "lustful",
297
+ "masturbate",
298
+ "mature",
299
+ "milf",
300
+ "naughty",
301
+ "naked",
302
+ "nipples",
303
+ "nude",
304
+ "obscene",
305
+ "oral",
306
+ "orgasm",
307
+ "penetration",
308
+ "penis",
309
+ "pleasure",
310
+ "porn",
311
+ "prostitute",
312
+ "provocative",
313
+ "pubic",
314
+ "pussy",
315
+ "seduce",
316
+ "seductive",
317
+ "sensual",
318
+ "sex",
319
+ "sexual",
320
+ "sperm",
321
+ "strip",
322
+ "striptease",
323
+ "swinger",
324
+ "testicles",
325
+ "thong",
326
+ "threesome",
327
+ "undies",
328
+ "undress",
329
+ "vagina",
330
+ "vibrator",
331
+ "wank",
332
+ "wet",
333
+ "hentai",
334
+ "bdsm",
335
+ "gay",
336
+ "lesbian",
337
+ "femboy",
338
+ "ass",
339
+ ];
340
+ if (nsfwWords.some(function (word) { return textToCheck_1.includes(word); })) {
341
+ _0x2f79ae.reply("Warning ⚠️. The generated image contatining nsfw content. Turn off nsfw to sedn nsfw images.");
342
+ }
343
+ _c.label = 17;
344
+ case 17:
345
+ _0x29a652 = new discord_js_1.AttachmentBuilder(imageUrl, { name: "image_".concat(_0x4d7fb6 + 1, ".png") });
346
+ _0x168f75.push(_0x29a652);
347
+ urlButton = new discord_js_1.ButtonBuilder()
348
+ .setStyle(discord_js_1.ButtonStyle.Link)
349
+ .setLabel("Image ".concat(_0x4d7fb6 + 1))
350
+ .setURL(imageUrl);
351
+ buttonsRow1.push(urlButton);
352
+ imageUrls.push(imageUrl);
353
+ _c.label = 18;
354
+ case 18: return [4 /*yield*/, new Promise(function (_0x412825) { return setTimeout(_0x412825, 0x7d0); })];
355
+ case 19:
356
+ _c.sent();
357
+ return [2 /*return*/];
358
+ }
359
+ });
360
+ };
167
361
  _0x4d7fb6 = 0x0;
168
- _a.label = 3;
362
+ _b.label = 3;
169
363
  case 3:
170
- if (!(_0x4d7fb6 < numOfImages)) return [3 /*break*/, 23];
171
- _a.label = 4;
364
+ if (!(_0x4d7fb6 < numOfImages)) return [3 /*break*/, 6];
365
+ return [5 /*yield**/, _loop_1(_0x4d7fb6)];
172
366
  case 4:
173
- _a.trys.push([4, 11, , 16]);
174
- if (!validHercaiModals.includes(_0x182d15)) return [3 /*break*/, 6];
175
- return [4 /*yield*/, retry(function () {
176
- return _0x5cea2c.drawImage({
177
- model: _0x182d15,
178
- prompt: translatedText_1.text,
179
- });
180
- })];
367
+ state_1 = _b.sent();
368
+ if (typeof state_1 === "object")
369
+ return [2 /*return*/, state_1.value];
370
+ _b.label = 5;
181
371
  case 5:
182
- _0x59b128 = _a.sent();
183
- return [3 /*break*/, 10];
184
- case 6:
185
- if (!validProdiaModals.includes(_0x182d15)) return [3 /*break*/, 9];
186
- return [4 /*yield*/, sdk.generate({
187
- model: _0x182d15,
188
- prompt: translatedText_1.text,
189
- })];
190
- case 7:
191
- generateResponse = _a.sent();
192
- generatedJobId = generateResponse.data.job;
193
- return [4 /*yield*/, checkJobStatus(generatedJobId)];
194
- case 8:
195
- _0x59b128 = _a.sent();
196
- return [3 /*break*/, 10];
197
- case 9: throw new Error("Invalid modal name.");
198
- case 10: return [3 /*break*/, 16];
199
- case 11:
200
- error_1 = _a.sent();
201
- if (!(error_1.response && error_1.response.status === 429)) return [3 /*break*/, 12];
202
- console.error("Too many requests. Please try again later.");
203
- return [2 /*return*/, _0x2f79ae.reply("Please wait i am in a cool down for a minute")];
204
- case 12:
205
- if (!(error_1.response && error_1.response.status === 500)) return [3 /*break*/, 13];
206
- console.error("Internal server error. Please try again later.");
207
- return [2 /*return*/, _0x2f79ae.reply("Please wait i am in a cool down for a minute")];
208
- case 13: return [4 /*yield*/, _0x2f79ae.reply("Please wait i am in a cool down for a minute")];
209
- case 14:
210
- _a.sent();
211
- throw new Error("Error processing message in file");
212
- case 15: return [3 /*break*/, 16];
213
- case 16:
214
- _0x279cfe = void 0;
215
- if (!(_0x182d15 === "v3")) return [3 /*break*/, 19];
216
- return [4 /*yield*/, retry(function () {
217
- return axios_1.get(_0x59b128.url, {
218
- responseType: "arraybuffer",
219
- });
220
- })];
221
- case 17:
222
- _0x2b4402 = _a.sent();
223
- _0x279cfe = Buffer.from(_0x2b4402.data, "binary");
224
- return [4 /*yield*/, (0, sharp_1)(_0x279cfe)
225
- .resize({
226
- width: 0x320,
227
- })
228
- .toBuffer()];
229
- case 18:
230
- _0x46cafe = _a.sent();
231
- _0x254246 = new discord_js_1.AttachmentBuilder(_0x46cafe, "image_".concat(_0x4d7fb6 + 1, ".png"));
232
- _0x168f75.push(_0x254246);
233
- urlButton = new discord_js_1.ButtonBuilder()
234
- .setStyle("Link")
235
- .setLabel("Image ".concat(_0x4d7fb6 + 1))
236
- .setURL(_0x59b128.url);
237
- buttonsRow1.push(urlButton);
238
- imageUrls.push(_0x59b128.url);
239
- return [3 /*break*/, 20];
240
- case 19:
241
- imageUrl = _0x59b128.url || _0x59b128;
242
- _0x29a652 = new discord_js_1.AttachmentBuilder(imageUrl, "image_".concat(_0x4d7fb6 + 1, ".png"));
243
- _0x168f75.push(_0x29a652);
244
- urlButton = new discord_js_1.ButtonBuilder()
245
- .setStyle("Link")
246
- .setLabel("Image ".concat(_0x4d7fb6 + 1))
247
- .setURL(imageUrl);
248
- buttonsRow1.push(urlButton);
249
- imageUrls.push(imageUrl);
250
- _a.label = 20;
251
- case 20: return [4 /*yield*/, new Promise(function (_0x412825) { return setTimeout(_0x412825, 0x7d0); })];
252
- case 21:
253
- _a.sent();
254
- _a.label = 22;
255
- case 22:
256
372
  _0x4d7fb6++;
257
373
  return [3 /*break*/, 3];
258
- case 23:
374
+ case 6:
259
375
  selectMenu_1 = new discord_js_1.StringSelectMenuBuilder()
260
376
  .setCustomId("image_processing_select")
261
377
  .setPlaceholder("Select Image Process");
@@ -279,21 +395,21 @@ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x1
279
395
  selectMenu_1.addOptions(selectOption);
280
396
  });
281
397
  redrawButton = new discord_js_1.ButtonBuilder()
282
- .setStyle("Primary")
398
+ .setStyle(discord_js_1.ButtonStyle.Primary)
283
399
  .setLabel("Redraw")
284
400
  .setCustomId("redraw_button");
285
- row1 = new discord_js_1.ActionRowBuilder().addComponents(buttonsRow1, redrawButton);
401
+ row1 = (_a = new discord_js_1.ActionRowBuilder()).addComponents.apply(_a, __spreadArray(__spreadArray([], buttonsRow1, false), [redrawButton], false));
286
402
  row2 = new discord_js_1.ActionRowBuilder().addComponents(selectMenu_1);
287
403
  return [4 /*yield*/, _0x2f79ae.reply({
288
404
  files: _0x168f75,
289
405
  components: [row1, row2],
290
406
  allowedMentions: { repliedUser: false },
291
407
  })];
292
- case 24:
293
- _a.sent();
408
+ case 7:
409
+ _b.sent();
294
410
  return [2 /*return*/, imageUrls];
295
- case 25:
296
- _0x56e917_1 = _a.sent();
411
+ case 8:
412
+ _0x56e917_1 = _b.sent();
297
413
  console.error("Error in drawImage:", _0x56e917_1.message);
298
414
  if (_0x56e917_1.response) {
299
415
  console.error("Status code:", _0x56e917_1.response.status);
@@ -304,7 +420,7 @@ function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x1
304
420
  allowedMentions: { repliedUser: false },
305
421
  });
306
422
  return [2 /*return*/, []];
307
- case 26: return [2 /*return*/];
423
+ case 9: return [2 /*return*/];
308
424
  }
309
425
  });
310
426
  });
@@ -344,4 +460,68 @@ function checkJobStatus(jobId) {
344
460
  }
345
461
  });
346
462
  });
463
+ }
464
+ function attemptImageCaptioning(imageUrl) {
465
+ return __awaiter(this, void 0, void 0, function () {
466
+ var retryCount, maxRetries, fetchData, error_4, error_5;
467
+ var _this = this;
468
+ return __generator(this, function (_a) {
469
+ switch (_a.label) {
470
+ case 0:
471
+ _a.trys.push([0, 7, , 8]);
472
+ retryCount = 0;
473
+ maxRetries = 3;
474
+ fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
475
+ var response, error_6;
476
+ return __generator(this, function (_a) {
477
+ switch (_a.label) {
478
+ case 0:
479
+ _a.trys.push([0, 2, , 3]);
480
+ return [4 /*yield*/, axios_1.post("https://api-inference.huggingface.co/models/Salesforce/blip-image-captioning-base", { image: imageUrl }, {
481
+ headers: {
482
+ "Content-Type": "application/json",
483
+ Authorization: "Bearer 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",
484
+ },
485
+ })];
486
+ case 1:
487
+ response = _a.sent();
488
+ if (response.status === 200) {
489
+ return [2 /*return*/, response.data[0].generated_text];
490
+ }
491
+ else {
492
+ console.error("Failed to fetch image captioning API: ".concat(response.statusText));
493
+ return [2 /*return*/, null];
494
+ }
495
+ return [3 /*break*/, 3];
496
+ case 2:
497
+ error_6 = _a.sent();
498
+ console.error("Error fetching data: ".concat(error_6.message));
499
+ throw error_6;
500
+ case 3: return [2 /*return*/];
501
+ }
502
+ });
503
+ }); };
504
+ _a.label = 1;
505
+ case 1:
506
+ if (!(retryCount < maxRetries)) return [3 /*break*/, 6];
507
+ _a.label = 2;
508
+ case 2:
509
+ _a.trys.push([2, 4, , 5]);
510
+ return [4 /*yield*/, fetchData()];
511
+ case 3: return [2 /*return*/, _a.sent()];
512
+ case 4:
513
+ error_4 = _a.sent();
514
+ console.error("Error fetching data (Retry ".concat(retryCount + 1, "): ").concat(error_4.message));
515
+ retryCount++;
516
+ return [3 /*break*/, 5];
517
+ case 5: return [3 /*break*/, 1];
518
+ case 6: return [2 /*return*/, null];
519
+ case 7:
520
+ error_5 = _a.sent();
521
+ console.error("Error in attemptImageCaptioning: ".concat(error_5.message));
522
+ return [2 /*return*/, null];
523
+ case 8: return [2 /*return*/];
524
+ }
525
+ });
526
+ });
347
527
  }
@@ -46,7 +46,7 @@ var draw_1 = require("./draw");
46
46
  var fs_1 = require("fs");
47
47
  var herc = new hercai_1.Hercai();
48
48
  var isProcessing = false;
49
- function generateVoiceResponse(message, numOfImages, finalText, hercai, response, imageModel, draw, drawValid, chatModel, voiceModel, voice_code, letter, apiKey) {
49
+ function generateVoiceResponse(message, numOfImages, finalText, hercai, response, imageModel, draw, drawValid, chatModel, voiceModel, voice_code, letter, apiKey, nsfw) {
50
50
  return __awaiter(this, void 0, void 0, function () {
51
51
  var msg, attachment, imageUrl, worker, text, translationResult, chunks, delay, _loop_1, _i, chunks_1, chunk, options, response_1, audioData, error_1, encodedParams, options, response_2, error_2, error_3;
52
52
  var _this = this;
@@ -62,7 +62,7 @@ function generateVoiceResponse(message, numOfImages, finalText, hercai, response
62
62
  _a.trys.push([1, 23, 24, 25]);
63
63
  msg = message.content;
64
64
  if (!drawValid) return [3 /*break*/, 3];
65
- return [4 /*yield*/, (0, draw_1.drawImage)(message, numOfImages, finalText, hercai, response, imageModel)];
65
+ return [4 /*yield*/, (0, draw_1.drawImage)(message, numOfImages, finalText, hercai, response, imageModel, nsfw)];
66
66
  case 2: return [2 /*return*/, _a.sent()];
67
67
  case 3:
68
68
  if (!(message.attachments.size > 0)) return [3 /*break*/, 7];