apexify.js 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1117 -0
- package/index.js +111 -0
- package/lib/ai/apexAI.js +312 -0
- package/lib/ai/functions/chunkString.js +8 -0
- package/lib/ai/functions/draw.js +347 -0
- package/lib/ai/functions/generateVoiceResponse.js +239 -0
- package/lib/ai/functions/processImageAttachments.js +93 -0
- package/lib/ai/functions/processMessageContent.js +48 -0
- package/lib/ai/functions/readFiles.js +95 -0
- package/lib/ai/functions/shouldDrawImage.js +12 -0
- package/lib/ai/utils.js +18 -0
- package/lib/canvas/ApexPainter.js +1194 -0
- package/lib/canvas/themes/level ara.ttf +0 -0
- package/lib/canvas/themes/levelFont.ttf +0 -0
- package/lib/canvas/themes/levels-card.js +872 -0
- package/lib/canvas/themes/music-card.js +342 -0
- package/lib/canvas/themes/numbers.ttf +0 -0
- package/lib/canvas/themes/tajawal.ttf +0 -0
- package/lib/database/MongoDB.js +126 -0
- package/lib/database/NanoDB.js +1318 -0
- package/lib/database/mongoDb/aggregate.js +120 -0
- package/lib/database/mongoDb/countDocs.js +115 -0
- package/lib/database/mongoDb/createCollection.js +125 -0
- package/lib/database/mongoDb/dataSize.js +89 -0
- package/lib/database/mongoDb/distinct.js +110 -0
- package/lib/database/mongoDb/drop.js +76 -0
- package/lib/database/mongoDb/find.js +122 -0
- package/lib/database/mongoDb/geoNear.js +91 -0
- package/lib/database/mongoDb/index.js +71 -0
- package/lib/database/mongoDb/listCollections.js +81 -0
- package/lib/database/mongoDb/migrateAndPrune.js +89 -0
- package/lib/database/mongoDb/migrateData.js +79 -0
- package/lib/database/mongoDb/remove.js +73 -0
- package/lib/database/mongoDb/removeMany.js +73 -0
- package/lib/database/mongoDb/removeManyExcept.js +91 -0
- package/lib/database/mongoDb/removeSpecific.js +93 -0
- package/lib/database/mongoDb/save.js +94 -0
- package/lib/database/mongoDb/searchMany.js +109 -0
- package/lib/database/mongoDb/textSearch.js +88 -0
- package/lib/database/mongoDb/updateAll.js +80 -0
- package/lib/database/mongoDb/updateAllExcept.js +108 -0
- package/lib/database/mongoDb/updateData.js +106 -0
- package/lib/database/nanoDb/fetchData.js +39 -0
- package/lib/database/nanoDb/removeField.js +46 -0
- package/lib/database/nanoDb/saveData.js +68 -0
- package/lib/database/nanoDb/updateFilter.js +24 -0
- package/lib/database/ready-schemas.js +245 -0
- package/lib/database/utils.js +58 -0
- package/lib/discord/discord-build/commands-(prefix)/music/functions/buttons.js +361 -0
- package/lib/discord/discord-build/commands-(prefix)/music/functions/end.js +58 -0
- package/lib/discord/discord-build/commands-(prefix)/music/functions/start.js +115 -0
- package/lib/discord/discord-build/commands-(prefix)/music/play.js +152 -0
- package/lib/discord/discord-build/commands-(prefix)/music/previous.js +82 -0
- package/lib/discord/discord-build/commands-(prefix)/music/resume.js +93 -0
- package/lib/discord/discord-build/commands-(prefix)/music/skip.js +82 -0
- package/lib/discord/discord-build/commands-(prefix)/music/stop.js +79 -0
- package/lib/discord/discord-build/components/buttons.js +75 -0
- package/lib/discord/discord-build/components/menus.js +81 -0
- package/lib/discord/discord-build/components/paginator.js +156 -0
- package/lib/discord/discord-build/components/permsChecker.js +81 -0
- package/lib/discord/discord-build/utils.js +21 -0
- package/lib/discord/events/eventer.js +100 -0
- package/lib/discord/events/handler/drawMenu.js +351 -0
- package/lib/discord/events/handler/tools.js +652 -0
- package/lib/discord/events/prefixRegister.js +136 -0
- package/lib/discord/events/prefixResponder.js +163 -0
- package/lib/discord/events/slashRegister.js +199 -0
- package/lib/discord/events/slashResponder.js +108 -0
- package/lib/discord/events/starter.js +335 -0
- package/lib/discord/functions/perms.js +19 -0
- package/lib/discord/utils.js +6 -0
- package/lib/general-functions/discord/type-writer.js +77 -0
- package/lib/general-functions/utils.js +0 -0
- package/lib/utils.js +90 -0
- package/package.json +118 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.drawImage = void 0;
|
|
40
|
+
var google_translate_1 = require("@iamtraction/google-translate");
|
|
41
|
+
var sharp_1 = require("sharp");
|
|
42
|
+
var discord_js_1 = require("discord.js");
|
|
43
|
+
var axios_1 = require("axios");
|
|
44
|
+
var sdk = require("api")("@prodia/v1.3.0#be019b2kls0gqss3");
|
|
45
|
+
sdk.auth("43435e1c-cab1-493f-a224-f51e4b97ce8d");
|
|
46
|
+
var validHercaiModals = [
|
|
47
|
+
"v1",
|
|
48
|
+
"v2",
|
|
49
|
+
"v2-beta",
|
|
50
|
+
"lexica",
|
|
51
|
+
"prodia",
|
|
52
|
+
"animefy",
|
|
53
|
+
"raava",
|
|
54
|
+
"shonin",
|
|
55
|
+
"v3",
|
|
56
|
+
];
|
|
57
|
+
var validProdiaModals = [
|
|
58
|
+
"3Guofeng3_v34.safetensors [50f420de]",
|
|
59
|
+
"absolutereality_V16.safetensors [37db0fc3]",
|
|
60
|
+
"absolutereality_v181.safetensors [3d9d4d2b]",
|
|
61
|
+
"amIReal_V41.safetensors [0a8a2e61]",
|
|
62
|
+
"analog-diffusion-1.0.ckpt [9ca13f02]",
|
|
63
|
+
"anythingv3_0-pruned.ckpt [2700c435]",
|
|
64
|
+
"anything-v4.5-pruned.ckpt [65745d25]",
|
|
65
|
+
"anythingV5_PrtRE.safetensors [893e49b9]",
|
|
66
|
+
"AOM3A3_orangemixs.safetensors [9600da17]",
|
|
67
|
+
"blazing_drive_v10g.safetensors [ca1c1eab]",
|
|
68
|
+
"cetusMix_Version35.safetensors [de2f2560]",
|
|
69
|
+
"childrensStories_v13D.safetensors [9dfaabcb]",
|
|
70
|
+
"childrensStories_v1SemiReal.safetensors [a1c56dbb]",
|
|
71
|
+
"childrensStories_v1ToonAnime.safetensors [2ec7b88b]",
|
|
72
|
+
"Counterfeit_v30.safetensors [9e2a8f19]",
|
|
73
|
+
"cuteyukimixAdorable_midchapter3.safetensors [04bdffe6]",
|
|
74
|
+
"cyberrealistic_v33.safetensors [82b0d085]",
|
|
75
|
+
"dalcefo_v4.safetensors [425952fe]",
|
|
76
|
+
"deliberate_v2.safetensors [10ec4b29]",
|
|
77
|
+
"deliberate_v3.safetensors [afd9d2d4]",
|
|
78
|
+
"dreamlike-anime-1.0.safetensors [4520e090]",
|
|
79
|
+
"dreamlike-diffusion-1.0.safetensors [5c9fd6e0]",
|
|
80
|
+
"dreamlike-photoreal-2.0.safetensors [fdcf65e7]",
|
|
81
|
+
"dreamshaper_6BakedVae.safetensors [114c8abb]",
|
|
82
|
+
"dreamshaper_7.safetensors [5cf5ae06]",
|
|
83
|
+
"dreamshaper_8.safetensors [9d40847d]",
|
|
84
|
+
"edgeOfRealism_eorV20.safetensors [3ed5de15]",
|
|
85
|
+
"EimisAnimeDiffusion_V1.ckpt [4f828a15]",
|
|
86
|
+
"elldreths-vivid-mix.safetensors [342d9d26]",
|
|
87
|
+
"epicrealism_naturalSinRC1VAE.safetensors [90a4c676]",
|
|
88
|
+
"ICantBelieveItsNotPhotography_seco.safetensors [4e7a3dfd]",
|
|
89
|
+
"juggernaut_aftermath.safetensors [5e20c455]",
|
|
90
|
+
"lofi_v4.safetensors [ccc204d6]",
|
|
91
|
+
"lyriel_v16.safetensors [68fceea2]",
|
|
92
|
+
"majicmixRealistic_v4.safetensors [29d0de58]",
|
|
93
|
+
"mechamix_v10.safetensors [ee685731]",
|
|
94
|
+
"meinamix_meinaV9.safetensors [2ec66ab0]",
|
|
95
|
+
"meinamix_meinaV11.safetensors [b56ce717]",
|
|
96
|
+
"neverendingDream_v122.safetensors [f964ceeb]",
|
|
97
|
+
"openjourney_V4.ckpt [ca2f377f]",
|
|
98
|
+
"pastelMixStylizedAnime_pruned_fp16.safetensors [793a26e8]",
|
|
99
|
+
"portraitplus_V1.0.safetensors [1400e684]",
|
|
100
|
+
"protogenx34.safetensors [5896f8d5]",
|
|
101
|
+
"Realistic_Vision_V1.4-pruned-fp16.safetensors [8d21810b]",
|
|
102
|
+
"Realistic_Vision_V2.0.safetensors [79587710]",
|
|
103
|
+
"Realistic_Vision_V4.0.safetensors [29a7afaa]",
|
|
104
|
+
"Realistic_Vision_V5.0.safetensors [614d1063]",
|
|
105
|
+
"redshift_diffusion-V10.safetensors [1400e684]",
|
|
106
|
+
"revAnimated_v122.safetensors [3f4fefd9]",
|
|
107
|
+
"rundiffusionFX25D_v10.safetensors [cd12b0ee]",
|
|
108
|
+
"rundiffusionFX_v10.safetensors [cd4e694d]",
|
|
109
|
+
"sdv1_4.ckpt [7460a6fa]",
|
|
110
|
+
"v1-5-pruned-emaonly.safetensors [d7049739]",
|
|
111
|
+
"v1-5-inpainting.safetensors [21c7ab71]",
|
|
112
|
+
"shoninsBeautiful_v10.safetensors [25d8c546]",
|
|
113
|
+
"theallys-mix-ii-churned.safetensors [5d9225a4]",
|
|
114
|
+
"timeless-1.0.ckpt [7c4971d4]",
|
|
115
|
+
"toonyou_beta6.safetensors [980f6b15]",
|
|
116
|
+
];
|
|
117
|
+
function drawImage(_0x2f79ae, numOfImages, _0x28baff, _0x5cea2c, _0x59b128, _0x182d15) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
119
|
+
function retry(fn, retriesLeft) {
|
|
120
|
+
if (retriesLeft === void 0) { retriesLeft = maxRetryAttempts; }
|
|
121
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
122
|
+
var error_2;
|
|
123
|
+
return __generator(this, function (_a) {
|
|
124
|
+
switch (_a.label) {
|
|
125
|
+
case 0:
|
|
126
|
+
_a.trys.push([0, 2, , 4]);
|
|
127
|
+
return [4 /*yield*/, fn()];
|
|
128
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
129
|
+
case 2:
|
|
130
|
+
error_2 = _a.sent();
|
|
131
|
+
if (retriesLeft === 0) {
|
|
132
|
+
throw error_2;
|
|
133
|
+
}
|
|
134
|
+
console.error("Retry failed, ".concat(retriesLeft, " attempts left. Error: ").concat(error_2.message));
|
|
135
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, retryInterval); })];
|
|
136
|
+
case 3:
|
|
137
|
+
_a.sent();
|
|
138
|
+
return [2 /*return*/, retry(fn, retriesLeft - 1)];
|
|
139
|
+
case 4: return [2 /*return*/];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
}
|
|
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) {
|
|
147
|
+
case 0:
|
|
148
|
+
maxRetryAttempts = 3;
|
|
149
|
+
retryInterval = 5000;
|
|
150
|
+
_a.label = 1;
|
|
151
|
+
case 1:
|
|
152
|
+
_a.trys.push([1, 25, , 26]);
|
|
153
|
+
if (numOfImages > 4 || numOfImages <= 0) {
|
|
154
|
+
throw new Error("Number of images can't be greater than 4 or smaller than 0.");
|
|
155
|
+
}
|
|
156
|
+
return [4 /*yield*/, retry(function () {
|
|
157
|
+
return (0, google_translate_1)(_0x28baff, {
|
|
158
|
+
from: "auto",
|
|
159
|
+
to: "en",
|
|
160
|
+
});
|
|
161
|
+
})];
|
|
162
|
+
case 2:
|
|
163
|
+
translatedText_1 = _a.sent();
|
|
164
|
+
_0x168f75 = [];
|
|
165
|
+
buttonsRow1 = [];
|
|
166
|
+
imageUrls = [];
|
|
167
|
+
_0x4d7fb6 = 0x0;
|
|
168
|
+
_a.label = 3;
|
|
169
|
+
case 3:
|
|
170
|
+
if (!(_0x4d7fb6 < numOfImages)) return [3 /*break*/, 23];
|
|
171
|
+
_a.label = 4;
|
|
172
|
+
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
|
+
})];
|
|
181
|
+
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
|
+
_0x4d7fb6++;
|
|
257
|
+
return [3 /*break*/, 3];
|
|
258
|
+
case 23:
|
|
259
|
+
selectMenu_1 = new discord_js_1.StringSelectMenuBuilder()
|
|
260
|
+
.setCustomId("image_processing_select")
|
|
261
|
+
.setPlaceholder("Select Image Process");
|
|
262
|
+
options = [
|
|
263
|
+
"Resizing",
|
|
264
|
+
"Color Filters",
|
|
265
|
+
"Convert Image Extension",
|
|
266
|
+
"Brightness",
|
|
267
|
+
"Sepia",
|
|
268
|
+
"Pixelate",
|
|
269
|
+
"Blur",
|
|
270
|
+
"Fade",
|
|
271
|
+
"Opaque",
|
|
272
|
+
"Grayscale",
|
|
273
|
+
"Contrast",
|
|
274
|
+
];
|
|
275
|
+
options.forEach(function (option, index) {
|
|
276
|
+
var selectOption = new discord_js_1.StringSelectMenuOptionBuilder()
|
|
277
|
+
.setLabel(option)
|
|
278
|
+
.setValue("process_".concat(index + 1));
|
|
279
|
+
selectMenu_1.addOptions(selectOption);
|
|
280
|
+
});
|
|
281
|
+
redrawButton = new discord_js_1.ButtonBuilder()
|
|
282
|
+
.setStyle("Primary")
|
|
283
|
+
.setLabel("Redraw")
|
|
284
|
+
.setCustomId("redraw_button");
|
|
285
|
+
row1 = new discord_js_1.ActionRowBuilder().addComponents(buttonsRow1, redrawButton);
|
|
286
|
+
row2 = new discord_js_1.ActionRowBuilder().addComponents(selectMenu_1);
|
|
287
|
+
return [4 /*yield*/, _0x2f79ae.reply({
|
|
288
|
+
files: _0x168f75,
|
|
289
|
+
components: [row1, row2],
|
|
290
|
+
allowedMentions: { repliedUser: false },
|
|
291
|
+
})];
|
|
292
|
+
case 24:
|
|
293
|
+
_a.sent();
|
|
294
|
+
return [2 /*return*/, imageUrls];
|
|
295
|
+
case 25:
|
|
296
|
+
_0x56e917_1 = _a.sent();
|
|
297
|
+
console.error("Error in drawImage:", _0x56e917_1.message);
|
|
298
|
+
if (_0x56e917_1.response) {
|
|
299
|
+
console.error("Status code:", _0x56e917_1.response.status);
|
|
300
|
+
console.error("Response data:", _0x56e917_1.response.data);
|
|
301
|
+
}
|
|
302
|
+
_0x2f79ae.reply({
|
|
303
|
+
content: "An error occurred while processing the images.",
|
|
304
|
+
allowedMentions: { repliedUser: false },
|
|
305
|
+
});
|
|
306
|
+
return [2 /*return*/, []];
|
|
307
|
+
case 26: return [2 /*return*/];
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
exports.drawImage = drawImage;
|
|
313
|
+
function checkJobStatus(jobId) {
|
|
314
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
315
|
+
var getJobResponse, jobData, error_3;
|
|
316
|
+
return __generator(this, function (_a) {
|
|
317
|
+
switch (_a.label) {
|
|
318
|
+
case 0:
|
|
319
|
+
_a.trys.push([0, 5, , 6]);
|
|
320
|
+
return [4 /*yield*/, sdk.getJob({ jobId: jobId })];
|
|
321
|
+
case 1:
|
|
322
|
+
getJobResponse = _a.sent();
|
|
323
|
+
jobData = getJobResponse.data;
|
|
324
|
+
if (!(jobData.status === "generating" || jobData.status === "queued")) return [3 /*break*/, 3];
|
|
325
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 3000); })];
|
|
326
|
+
case 2:
|
|
327
|
+
_a.sent();
|
|
328
|
+
return [2 /*return*/, checkJobStatus(jobId)];
|
|
329
|
+
case 3:
|
|
330
|
+
if (jobData.status === "succeeded") {
|
|
331
|
+
return [2 /*return*/, jobData.imageUrl];
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
console.error("Job failed:", jobData);
|
|
335
|
+
return [2 /*return*/, null];
|
|
336
|
+
}
|
|
337
|
+
_a.label = 4;
|
|
338
|
+
case 4: return [3 /*break*/, 6];
|
|
339
|
+
case 5:
|
|
340
|
+
error_3 = _a.sent();
|
|
341
|
+
console.error(error_3);
|
|
342
|
+
return [2 /*return*/, null];
|
|
343
|
+
case 6: return [2 /*return*/];
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.generateVoiceResponse = void 0;
|
|
40
|
+
var hercai_1 = require("hercai");
|
|
41
|
+
var google_translate_1 = require("@iamtraction/google-translate");
|
|
42
|
+
var axios_1 = require("axios");
|
|
43
|
+
var tesseract_1 = require("tesseract.js");
|
|
44
|
+
var chunkString_1 = require("./chunkString");
|
|
45
|
+
var draw_1 = require("./draw");
|
|
46
|
+
var fs_1 = require("fs");
|
|
47
|
+
var herc = new hercai_1.Hercai();
|
|
48
|
+
var isProcessing = false;
|
|
49
|
+
function generateVoiceResponse(message, numOfImages, finalText, hercai, response, imageModel, draw, drawValid, chatModel, voiceModel, voice_code, letter, apiKey) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
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
|
+
var _this = this;
|
|
53
|
+
return __generator(this, function (_a) {
|
|
54
|
+
switch (_a.label) {
|
|
55
|
+
case 0:
|
|
56
|
+
if (message.author.bot || isProcessing || !message.guild) {
|
|
57
|
+
return [2 /*return*/];
|
|
58
|
+
}
|
|
59
|
+
isProcessing = true;
|
|
60
|
+
_a.label = 1;
|
|
61
|
+
case 1:
|
|
62
|
+
_a.trys.push([1, 23, 24, 25]);
|
|
63
|
+
msg = message.content;
|
|
64
|
+
if (!drawValid) return [3 /*break*/, 3];
|
|
65
|
+
return [4 /*yield*/, (0, draw_1.drawImage)(message, numOfImages, finalText, hercai, response, imageModel)];
|
|
66
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
67
|
+
case 3:
|
|
68
|
+
if (!(message.attachments.size > 0)) return [3 /*break*/, 7];
|
|
69
|
+
attachment = message.attachments.first();
|
|
70
|
+
imageUrl = attachment.url;
|
|
71
|
+
return [4 /*yield*/, (0, tesseract_1.createWorker)()];
|
|
72
|
+
case 4:
|
|
73
|
+
worker = _a.sent();
|
|
74
|
+
return [4 /*yield*/, worker.recognize(imageUrl)];
|
|
75
|
+
case 5:
|
|
76
|
+
text = (_a.sent()).data.text;
|
|
77
|
+
return [4 /*yield*/, worker.terminate()];
|
|
78
|
+
case 6:
|
|
79
|
+
_a.sent();
|
|
80
|
+
msg += "\n" + text;
|
|
81
|
+
_a.label = 7;
|
|
82
|
+
case 7: return [4 /*yield*/, herc.question({
|
|
83
|
+
model: chatModel,
|
|
84
|
+
content: msg,
|
|
85
|
+
})];
|
|
86
|
+
case 8:
|
|
87
|
+
msg = _a.sent();
|
|
88
|
+
msg = msg.reply.replace(/\n/g, " ");
|
|
89
|
+
if (!(voiceModel === "google")) return [3 /*break*/, 11];
|
|
90
|
+
if (!!isEnglish(msg)) return [3 /*break*/, 10];
|
|
91
|
+
return [4 /*yield*/, (0, google_translate_1)(msg, {
|
|
92
|
+
from: "auto",
|
|
93
|
+
to: "en",
|
|
94
|
+
})];
|
|
95
|
+
case 9:
|
|
96
|
+
translationResult = _a.sent();
|
|
97
|
+
msg = translationResult.text;
|
|
98
|
+
_a.label = 10;
|
|
99
|
+
case 10:
|
|
100
|
+
chunks = (0, chunkString_1.chunkString)(msg, 200);
|
|
101
|
+
delay = 0;
|
|
102
|
+
_loop_1 = function (chunk) {
|
|
103
|
+
setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
104
|
+
var encodedChunk, url, mp3Stream;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0:
|
|
108
|
+
encodedChunk = encodeURIComponent(chunk);
|
|
109
|
+
url = "https://translate.google.com/translate_tts?ie=UTF-8&tl=en&client=tw-ob&q=".concat(encodedChunk);
|
|
110
|
+
return [4 /*yield*/, axios_1.get(url, {
|
|
111
|
+
responseType: "stream",
|
|
112
|
+
headers: {
|
|
113
|
+
Referer: "http://translate.google.com/",
|
|
114
|
+
"User-Agent": "stagefright/1.2 (Linux;Android 5.0)",
|
|
115
|
+
},
|
|
116
|
+
})];
|
|
117
|
+
case 1:
|
|
118
|
+
mp3Stream = _a.sent();
|
|
119
|
+
return [4 /*yield*/, message.reply({
|
|
120
|
+
files: [
|
|
121
|
+
{
|
|
122
|
+
attachment: mp3Stream.data,
|
|
123
|
+
name: "respond.mp3",
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
allowedMentions: { repliedUser: false },
|
|
127
|
+
})];
|
|
128
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}); }, delay);
|
|
132
|
+
delay += 3000;
|
|
133
|
+
};
|
|
134
|
+
for (_i = 0, chunks_1 = chunks; _i < chunks_1.length; _i++) {
|
|
135
|
+
chunk = chunks_1[_i];
|
|
136
|
+
_loop_1(chunk);
|
|
137
|
+
}
|
|
138
|
+
return [3 /*break*/, 22];
|
|
139
|
+
case 11:
|
|
140
|
+
if (!(voiceModel === "apexAI")) return [3 /*break*/, 17];
|
|
141
|
+
if (!apiKey) {
|
|
142
|
+
throw new Error('Error: The apexAI model requires a premium account for generation. Please visit our support server at https://discord.gg/4uhpr7w8wW for assistance.');
|
|
143
|
+
}
|
|
144
|
+
options = {
|
|
145
|
+
method: "POST",
|
|
146
|
+
url: "https://text-to-speech-neural-google.p.rapidapi.com/generateAudioFiles",
|
|
147
|
+
headers: {
|
|
148
|
+
"content-type": "application/json",
|
|
149
|
+
"X-RapidAPI-Key": "your_rapid_api_key_here",
|
|
150
|
+
"X-RapidAPI-Host": "text-to-speech-neural-google.p.rapidapi.com",
|
|
151
|
+
},
|
|
152
|
+
data: {
|
|
153
|
+
audioFormat: "ogg",
|
|
154
|
+
paragraphChunks: [msg],
|
|
155
|
+
voiceParams: {
|
|
156
|
+
name: "Wavenet-".concat(letter || "c"),
|
|
157
|
+
engine: "google",
|
|
158
|
+
languageCode: "en-US",
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
_a.label = 12;
|
|
163
|
+
case 12:
|
|
164
|
+
_a.trys.push([12, 15, , 16]);
|
|
165
|
+
return [4 /*yield*/, axios_1.request(options)];
|
|
166
|
+
case 13:
|
|
167
|
+
response_1 = _a.sent();
|
|
168
|
+
audioData = response_1.data.audioStream;
|
|
169
|
+
fs_1.writeFileSync("output.ogg", Buffer.from(audioData, "base64"));
|
|
170
|
+
return [4 /*yield*/, message.reply({
|
|
171
|
+
files: [
|
|
172
|
+
{
|
|
173
|
+
attachment: "output.ogg",
|
|
174
|
+
name: "respond.ogg",
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
allowedMentions: { repliedUser: false },
|
|
178
|
+
})];
|
|
179
|
+
case 14: return [2 /*return*/, _a.sent()];
|
|
180
|
+
case 15:
|
|
181
|
+
error_1 = _a.sent();
|
|
182
|
+
console.error(error_1);
|
|
183
|
+
return [3 /*break*/, 16];
|
|
184
|
+
case 16: return [3 /*break*/, 22];
|
|
185
|
+
case 17:
|
|
186
|
+
if (!(voiceModel === "zenithAi")) return [3 /*break*/, 22];
|
|
187
|
+
if (!apiKey) {
|
|
188
|
+
throw new Error('Error: The zenithAi model requires a premium account for generation. Please visit our support server at https://discord.gg/4uhpr7w8wW for assistance.');
|
|
189
|
+
}
|
|
190
|
+
encodedParams = new URLSearchParams();
|
|
191
|
+
encodedParams.set("voice_code", voice_code || "en-US-3");
|
|
192
|
+
encodedParams.set("text", msg);
|
|
193
|
+
encodedParams.set("speed", "1.00");
|
|
194
|
+
encodedParams.set("pitch", "1.00");
|
|
195
|
+
encodedParams.set("output_type", "audio_url");
|
|
196
|
+
options = {
|
|
197
|
+
method: "POST",
|
|
198
|
+
url: "https://cloudlabs-text-to-speech.p.rapidapi.com/synthesize",
|
|
199
|
+
headers: {
|
|
200
|
+
"content-type": "application/x-www-form-urlencoded",
|
|
201
|
+
"X-RapidAPI-Key": "your_rapid_api_key_here",
|
|
202
|
+
"X-RapidAPI-Host": "cloudlabs-text-to-speech.p.rapidapi.com",
|
|
203
|
+
},
|
|
204
|
+
data: encodedParams,
|
|
205
|
+
};
|
|
206
|
+
_a.label = 18;
|
|
207
|
+
case 18:
|
|
208
|
+
_a.trys.push([18, 21, , 22]);
|
|
209
|
+
return [4 /*yield*/, axios_1.request(options)];
|
|
210
|
+
case 19:
|
|
211
|
+
response_2 = _a.sent();
|
|
212
|
+
console.log(response_2.data.result.audio_url);
|
|
213
|
+
return [4 /*yield*/, message.reply({
|
|
214
|
+
files: [response_2.data.result.audio_url],
|
|
215
|
+
allowedMentions: { repliedUser: false },
|
|
216
|
+
})];
|
|
217
|
+
case 20: return [2 /*return*/, _a.sent()];
|
|
218
|
+
case 21:
|
|
219
|
+
error_2 = _a.sent();
|
|
220
|
+
console.error(error_2);
|
|
221
|
+
return [3 /*break*/, 22];
|
|
222
|
+
case 22: return [3 /*break*/, 25];
|
|
223
|
+
case 23:
|
|
224
|
+
error_3 = _a.sent();
|
|
225
|
+
console.error(error_3);
|
|
226
|
+
message.reply("The response of the bot was too long and couldn't be sent as a voice.");
|
|
227
|
+
return [3 /*break*/, 25];
|
|
228
|
+
case 24:
|
|
229
|
+
isProcessing = false;
|
|
230
|
+
return [7 /*endfinally*/];
|
|
231
|
+
case 25: return [2 /*return*/];
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
exports.generateVoiceResponse = generateVoiceResponse;
|
|
237
|
+
function isEnglish(str) {
|
|
238
|
+
return /^[A-Za-z0-9!@#$%^&()_+\-=\[\]{};':"\\|,.<>\/?]+$/.test(str);
|
|
239
|
+
}
|