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.
Files changed (75) hide show
  1. package/README.md +1117 -0
  2. package/index.js +111 -0
  3. package/lib/ai/apexAI.js +312 -0
  4. package/lib/ai/functions/chunkString.js +8 -0
  5. package/lib/ai/functions/draw.js +347 -0
  6. package/lib/ai/functions/generateVoiceResponse.js +239 -0
  7. package/lib/ai/functions/processImageAttachments.js +93 -0
  8. package/lib/ai/functions/processMessageContent.js +48 -0
  9. package/lib/ai/functions/readFiles.js +95 -0
  10. package/lib/ai/functions/shouldDrawImage.js +12 -0
  11. package/lib/ai/utils.js +18 -0
  12. package/lib/canvas/ApexPainter.js +1194 -0
  13. package/lib/canvas/themes/level ara.ttf +0 -0
  14. package/lib/canvas/themes/levelFont.ttf +0 -0
  15. package/lib/canvas/themes/levels-card.js +872 -0
  16. package/lib/canvas/themes/music-card.js +342 -0
  17. package/lib/canvas/themes/numbers.ttf +0 -0
  18. package/lib/canvas/themes/tajawal.ttf +0 -0
  19. package/lib/database/MongoDB.js +126 -0
  20. package/lib/database/NanoDB.js +1318 -0
  21. package/lib/database/mongoDb/aggregate.js +120 -0
  22. package/lib/database/mongoDb/countDocs.js +115 -0
  23. package/lib/database/mongoDb/createCollection.js +125 -0
  24. package/lib/database/mongoDb/dataSize.js +89 -0
  25. package/lib/database/mongoDb/distinct.js +110 -0
  26. package/lib/database/mongoDb/drop.js +76 -0
  27. package/lib/database/mongoDb/find.js +122 -0
  28. package/lib/database/mongoDb/geoNear.js +91 -0
  29. package/lib/database/mongoDb/index.js +71 -0
  30. package/lib/database/mongoDb/listCollections.js +81 -0
  31. package/lib/database/mongoDb/migrateAndPrune.js +89 -0
  32. package/lib/database/mongoDb/migrateData.js +79 -0
  33. package/lib/database/mongoDb/remove.js +73 -0
  34. package/lib/database/mongoDb/removeMany.js +73 -0
  35. package/lib/database/mongoDb/removeManyExcept.js +91 -0
  36. package/lib/database/mongoDb/removeSpecific.js +93 -0
  37. package/lib/database/mongoDb/save.js +94 -0
  38. package/lib/database/mongoDb/searchMany.js +109 -0
  39. package/lib/database/mongoDb/textSearch.js +88 -0
  40. package/lib/database/mongoDb/updateAll.js +80 -0
  41. package/lib/database/mongoDb/updateAllExcept.js +108 -0
  42. package/lib/database/mongoDb/updateData.js +106 -0
  43. package/lib/database/nanoDb/fetchData.js +39 -0
  44. package/lib/database/nanoDb/removeField.js +46 -0
  45. package/lib/database/nanoDb/saveData.js +68 -0
  46. package/lib/database/nanoDb/updateFilter.js +24 -0
  47. package/lib/database/ready-schemas.js +245 -0
  48. package/lib/database/utils.js +58 -0
  49. package/lib/discord/discord-build/commands-(prefix)/music/functions/buttons.js +361 -0
  50. package/lib/discord/discord-build/commands-(prefix)/music/functions/end.js +58 -0
  51. package/lib/discord/discord-build/commands-(prefix)/music/functions/start.js +115 -0
  52. package/lib/discord/discord-build/commands-(prefix)/music/play.js +152 -0
  53. package/lib/discord/discord-build/commands-(prefix)/music/previous.js +82 -0
  54. package/lib/discord/discord-build/commands-(prefix)/music/resume.js +93 -0
  55. package/lib/discord/discord-build/commands-(prefix)/music/skip.js +82 -0
  56. package/lib/discord/discord-build/commands-(prefix)/music/stop.js +79 -0
  57. package/lib/discord/discord-build/components/buttons.js +75 -0
  58. package/lib/discord/discord-build/components/menus.js +81 -0
  59. package/lib/discord/discord-build/components/paginator.js +156 -0
  60. package/lib/discord/discord-build/components/permsChecker.js +81 -0
  61. package/lib/discord/discord-build/utils.js +21 -0
  62. package/lib/discord/events/eventer.js +100 -0
  63. package/lib/discord/events/handler/drawMenu.js +351 -0
  64. package/lib/discord/events/handler/tools.js +652 -0
  65. package/lib/discord/events/prefixRegister.js +136 -0
  66. package/lib/discord/events/prefixResponder.js +163 -0
  67. package/lib/discord/events/slashRegister.js +199 -0
  68. package/lib/discord/events/slashResponder.js +108 -0
  69. package/lib/discord/events/starter.js +335 -0
  70. package/lib/discord/functions/perms.js +19 -0
  71. package/lib/discord/utils.js +6 -0
  72. package/lib/general-functions/discord/type-writer.js +77 -0
  73. package/lib/general-functions/utils.js +0 -0
  74. package/lib/utils.js +90 -0
  75. package/package.json +118 -0
package/index.js ADDED
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var axios_1 = require("axios");
4
+ var path = require("path");
5
+ var fs_1 = require("fs");
6
+ var RED = "\x1b[31m";
7
+ var GREEN = "\x1b[32m";
8
+ var CYAN = "\x1b[36m";
9
+ var RESET = "\x1b[0m";
10
+ var packageJsonPath = path.resolve(process.cwd(), "package.json");
11
+ var packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, "utf8"));
12
+ var getLibraryVersion = function (library) {
13
+ var dependencies = packageJson.dependencies || {};
14
+ var devDependencies = packageJson.devDependencies || {};
15
+ var version = (dependencies[library] || devDependencies[library] || "").replace(/^(\^|~)/, "") || "Not installed";
16
+ return version;
17
+ };
18
+ var checkLibraryVersion = function (library, version) {
19
+ var installedVersion = getLibraryVersion(library);
20
+ if (installedVersion === "Not installed") {
21
+ console.error(RED + "Error: Please install ".concat(library, " to continue.") + RESET);
22
+ }
23
+ if (installedVersion < version) {
24
+ console.error(CYAN +
25
+ "Error: Please update ".concat(library, " to at least version ").concat(version, ".") +
26
+ RESET);
27
+ }
28
+ };
29
+ checkLibraryVersion("discord.js", "14");
30
+ axios_1.default
31
+ .get("https://registry.npmjs.com/-/v1/search?text=apexify.js")
32
+ .then(function (response) {
33
+ var _a, _b;
34
+ var version = (_b = (_a = response.data.objects[0]) === null || _a === void 0 ? void 0 : _a.package) === null || _b === void 0 ? void 0 : _b.version;
35
+ if (version && getLibraryVersion("apexify.js") !== version) {
36
+ console.error(CYAN +
37
+ "Error: Please update apexify.js to the latest version (".concat(version, ").") +
38
+ RESET);
39
+ }
40
+ })
41
+ .catch(function (error) { });
42
+
43
+ "use strict";
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.adminUser = exports.ecoSystem = exports.roleMenu = exports.contactInfo = exports.shopItem = exports.eventInfo = exports.blogPost = exports.productInfo = exports.userEco = exports.xpConfig = exports.xpCount = exports.forumPost = exports.orderInfo = exports.productReview = exports.recipeInfo = exports.musicTrack = exports.setGameCount = exports.gameCount = exports.employeeInfo = exports.setserverCounter = exports.guildInfo = exports.userTemplate = exports.updateAllExcept = exports.updateAll = exports.updateData = exports.migrateAndPrune = exports.migrateData = exports.textSearch = exports.searchMany = exports.removeSpecific = exports.removeManyExcept = exports.removeMany = exports.remove = exports.listCollections = exports.listIndexes = exports.geoNear = exports.find = exports.drop = exports.distinct = exports.dataSize = exports.countDocs = exports.createTable = exports.aggregate = exports.save = exports.initializeDb = exports.getDb = exports.mongoConnect = exports.NanoDb = exports.apexAI = exports.ApexPainter = void 0;
46
+ exports.typeWriter = exports.starter = exports.previousCommand = exports.resumeCommand = exports.skipCommand = exports.stopCommand = exports.playCommand = exports.PermissionChecker = exports.Paginator = exports.SelectMenuManager = exports.ButtonManager = exports.cooldown = exports.whiteList = exports.blackList = void 0;
47
+ var utils_1 = require("./lib/utils");
48
+ Object.defineProperty(exports, "ApexPainter", { enumerable: true, get: function () { return utils_1.ApexPainter; } });
49
+ Object.defineProperty(exports, "apexAI", { enumerable: true, get: function () { return utils_1.apexAI; } });
50
+ Object.defineProperty(exports, "NanoDb", { enumerable: true, get: function () { return utils_1.NanoDb; } });
51
+ Object.defineProperty(exports, "mongoConnect", { enumerable: true, get: function () { return utils_1.mongoConnect; } });
52
+ Object.defineProperty(exports, "getDb", { enumerable: true, get: function () { return utils_1.getDb; } });
53
+ Object.defineProperty(exports, "initializeDb", { enumerable: true, get: function () { return utils_1.initializeDb; } });
54
+ Object.defineProperty(exports, "save", { enumerable: true, get: function () { return utils_1.save; } });
55
+ Object.defineProperty(exports, "aggregate", { enumerable: true, get: function () { return utils_1.aggregate; } });
56
+ Object.defineProperty(exports, "createTable", { enumerable: true, get: function () { return utils_1.createTable; } });
57
+ Object.defineProperty(exports, "countDocs", { enumerable: true, get: function () { return utils_1.countDocs; } });
58
+ Object.defineProperty(exports, "dataSize", { enumerable: true, get: function () { return utils_1.dataSize; } });
59
+ Object.defineProperty(exports, "distinct", { enumerable: true, get: function () { return utils_1.distinct; } });
60
+ Object.defineProperty(exports, "drop", { enumerable: true, get: function () { return utils_1.drop; } });
61
+ Object.defineProperty(exports, "find", { enumerable: true, get: function () { return utils_1.find; } });
62
+ Object.defineProperty(exports, "geoNear", { enumerable: true, get: function () { return utils_1.geoNear; } });
63
+ Object.defineProperty(exports, "listIndexes", { enumerable: true, get: function () { return utils_1.listIndexes; } });
64
+ Object.defineProperty(exports, "listCollections", { enumerable: true, get: function () { return utils_1.listCollections; } });
65
+ Object.defineProperty(exports, "remove", { enumerable: true, get: function () { return utils_1.remove; } });
66
+ Object.defineProperty(exports, "removeMany", { enumerable: true, get: function () { return utils_1.removeMany; } });
67
+ Object.defineProperty(exports, "removeManyExcept", { enumerable: true, get: function () { return utils_1.removeManyExcept; } });
68
+ Object.defineProperty(exports, "removeSpecific", { enumerable: true, get: function () { return utils_1.removeSpecific; } });
69
+ Object.defineProperty(exports, "searchMany", { enumerable: true, get: function () { return utils_1.searchMany; } });
70
+ Object.defineProperty(exports, "textSearch", { enumerable: true, get: function () { return utils_1.textSearch; } });
71
+ Object.defineProperty(exports, "migrateData", { enumerable: true, get: function () { return utils_1.migrateData; } });
72
+ Object.defineProperty(exports, "migrateAndPrune", { enumerable: true, get: function () { return utils_1.migrateAndPrune; } });
73
+ Object.defineProperty(exports, "updateData", { enumerable: true, get: function () { return utils_1.updateData; } });
74
+ Object.defineProperty(exports, "updateAll", { enumerable: true, get: function () { return utils_1.updateAll; } });
75
+ Object.defineProperty(exports, "updateAllExcept", { enumerable: true, get: function () { return utils_1.updateAllExcept; } });
76
+ Object.defineProperty(exports, "userTemplate", { enumerable: true, get: function () { return utils_1.userTemplate; } });
77
+ Object.defineProperty(exports, "guildInfo", { enumerable: true, get: function () { return utils_1.guildInfo; } });
78
+ Object.defineProperty(exports, "setserverCounter", { enumerable: true, get: function () { return utils_1.setserverCounter; } });
79
+ Object.defineProperty(exports, "employeeInfo", { enumerable: true, get: function () { return utils_1.employeeInfo; } });
80
+ Object.defineProperty(exports, "gameCount", { enumerable: true, get: function () { return utils_1.gameCount; } });
81
+ Object.defineProperty(exports, "setGameCount", { enumerable: true, get: function () { return utils_1.setGameCount; } });
82
+ Object.defineProperty(exports, "musicTrack", { enumerable: true, get: function () { return utils_1.musicTrack; } });
83
+ Object.defineProperty(exports, "recipeInfo", { enumerable: true, get: function () { return utils_1.recipeInfo; } });
84
+ Object.defineProperty(exports, "productReview", { enumerable: true, get: function () { return utils_1.productReview; } });
85
+ Object.defineProperty(exports, "orderInfo", { enumerable: true, get: function () { return utils_1.orderInfo; } });
86
+ Object.defineProperty(exports, "forumPost", { enumerable: true, get: function () { return utils_1.forumPost; } });
87
+ Object.defineProperty(exports, "xpCount", { enumerable: true, get: function () { return utils_1.xpCount; } });
88
+ Object.defineProperty(exports, "xpConfig", { enumerable: true, get: function () { return utils_1.xpConfig; } });
89
+ Object.defineProperty(exports, "userEco", { enumerable: true, get: function () { return utils_1.userEco; } });
90
+ Object.defineProperty(exports, "productInfo", { enumerable: true, get: function () { return utils_1.productInfo; } });
91
+ Object.defineProperty(exports, "blogPost", { enumerable: true, get: function () { return utils_1.blogPost; } });
92
+ Object.defineProperty(exports, "eventInfo", { enumerable: true, get: function () { return utils_1.eventInfo; } });
93
+ Object.defineProperty(exports, "shopItem", { enumerable: true, get: function () { return utils_1.shopItem; } });
94
+ Object.defineProperty(exports, "contactInfo", { enumerable: true, get: function () { return utils_1.contactInfo; } });
95
+ Object.defineProperty(exports, "roleMenu", { enumerable: true, get: function () { return utils_1.roleMenu; } });
96
+ Object.defineProperty(exports, "ecoSystem", { enumerable: true, get: function () { return utils_1.ecoSystem; } });
97
+ Object.defineProperty(exports, "adminUser", { enumerable: true, get: function () { return utils_1.adminUser; } });
98
+ Object.defineProperty(exports, "blackList", { enumerable: true, get: function () { return utils_1.blackList; } });
99
+ Object.defineProperty(exports, "whiteList", { enumerable: true, get: function () { return utils_1.whiteList; } });
100
+ Object.defineProperty(exports, "cooldown", { enumerable: true, get: function () { return utils_1.cooldown; } });
101
+ Object.defineProperty(exports, "ButtonManager", { enumerable: true, get: function () { return utils_1.ButtonManager; } });
102
+ Object.defineProperty(exports, "SelectMenuManager", { enumerable: true, get: function () { return utils_1.SelectMenuManager; } });
103
+ Object.defineProperty(exports, "Paginator", { enumerable: true, get: function () { return utils_1.Paginator; } });
104
+ Object.defineProperty(exports, "PermissionChecker", { enumerable: true, get: function () { return utils_1.PermissionChecker; } });
105
+ Object.defineProperty(exports, "playCommand", { enumerable: true, get: function () { return utils_1.playCommand; } });
106
+ Object.defineProperty(exports, "stopCommand", { enumerable: true, get: function () { return utils_1.stopCommand; } });
107
+ Object.defineProperty(exports, "skipCommand", { enumerable: true, get: function () { return utils_1.skipCommand; } });
108
+ Object.defineProperty(exports, "resumeCommand", { enumerable: true, get: function () { return utils_1.resumeCommand; } });
109
+ Object.defineProperty(exports, "previousCommand", { enumerable: true, get: function () { return utils_1.previousCommand; } });
110
+ Object.defineProperty(exports, "starter", { enumerable: true, get: function () { return utils_1.starter; } });
111
+ Object.defineProperty(exports, "typeWriter", { enumerable: true, get: function () { return utils_1.typeWriter; } });
@@ -0,0 +1,312 @@
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.apexAI = void 0;
40
+ var hercai_1 = require("hercai");
41
+ var axios_1 = require("axios");
42
+ var utils_1 = require("./utils");
43
+ var discord_js_1 = require("discord.js");
44
+ //var tools_1 = require("../discord/events/handler/tools");
45
+ var drawMenu_1 = require("../discord/events/handler/drawMenu");
46
+ //var btn_1 = require("../discord/events/handler/btn");
47
+ var hercai = new hercai_1.Hercai();
48
+ var unclearPhrases = [
49
+ "Can you please provide more information or clarify your question?",
50
+ "Could you please provide more context or clarify your question?",
51
+ "Could you please provide more context or clarify what you mean?",
52
+ "I'm not sure I understand the question.",
53
+ "Could you please provide more context or clarify your question",
54
+ "I'm not sure what you're asking for.",
55
+ "Could you please provide more context or rephrase your question?",
56
+ "I'm not sure what you're asking",
57
+ "Can you please rephrase or provide more context?",
58
+ "Could you please provide more context or clarify your request?",
59
+ "I couldn't understand your input",
60
+ "Could you please provide some more information or clarify what you mean?",
61
+ "Can you please provide more information or clarify your request?",
62
+ ];
63
+ function apexAI(message, options) {
64
+ var _a, _b, _c;
65
+ if (options === void 0) { options = {}; }
66
+ return __awaiter(this, void 0, void 0, function () {
67
+ var _d, voice, _e, voiceModel, _f, voice_code, _g, apiKey, _h, type, _j, draw, _k, drawTrigger, _l, imageModel, _m, numOfImages, _o, chatModel, _p, keywords, _q, keywordResponses, _r, loadingMessage, _s, readFiles, nsfw, combinedText, _t, attachment, pdfContent, txtContent, replied, fetchedMessage, _u, finalText, response, _i, keywords_1, keyword, drawValid, error_1, imageUrl, imageCaption, parts, _v, parts_1, part, error_2;
68
+ return __generator(this, function (_w) {
69
+ switch (_w.label) {
70
+ case 0:
71
+ if (!message) {
72
+ throw new Error("Invalid Usage, message is not defined. Please define the message parameter correctly");
73
+ }
74
+ return [4 /*yield*/, (0, drawMenu_1.imageTools)(message.client, discord_js_1.ModalBuilder, discord_js_1.TextInputBuilder, discord_js_1.TextInputStyle, discord_js_1.ActionRowBuilder)];
75
+ case 1:
76
+ _w.sent();
77
+ // return [4 /*yield*/, (0, tools_1.filters)(message.client)];
78
+ case 2:
79
+ _w.sent();
80
+ // return [4 /*yield*/, (0, btn_1.btn)(message.client)];
81
+ case 3:
82
+ _w.sent();
83
+ _w.label = 4;
84
+ case 4:
85
+ _w.trys.push([4, 36, , 37]);
86
+ _d = options.voice, voice = _d === void 0 ? false : _d, _e = options.voiceModel, voiceModel = _e === void 0 ? "google" : _e, _f = options.voice_code, voice_code = _f === void 0 ? "en-US-3" : _f, _g = options.apiKey, apiKey = _g === void 0 ? "" : _g, _h = options.type, type = _h === void 0 ? "b" : _h, _j = options.draw, draw = _j === void 0 ? false : _j, _k = options.drawTrigger, drawTrigger = _k === void 0 ? ["create", "رسم"] : _k, _l = options.imageModel, imageModel = _l === void 0 ? "prodia" : _l, _m = options.numOfImages, numOfImages = _m === void 0 ? 2 : _m, _o = options.chatModel, chatModel = _o === void 0 ? "v3" : _o, _p = options.keywords, keywords = _p === void 0 ? [] : _p, _q = options.keywordResponses, keywordResponses = _q === void 0 ? {} : _q, _r = options.loadingMessage, loadingMessage = _r === void 0 ? null : _r, _s = options.readFiles, readFiles = _s === void 0 ? false : _s, _t = options.nsfw, nsfw = _t === void 0 ? false : _t;
87
+ if (message.attachments.some(function (attachment) {
88
+ return attachment.contentType.startsWith("audio/");
89
+ })) {
90
+ return [2 /*return*/, "Voice messages are not supported at the moment. Stay tuned for future updates!"];
91
+ }
92
+ if (!(loadingMessage !== null)) return [3 /*break*/, 6];
93
+ return [4 /*yield*/, message.reply({
94
+ content: loadingMessage,
95
+ allowedMentions: { repliedUser: false },
96
+ })];
97
+ case 5:
98
+ _w.sent();
99
+ _w.label = 6;
100
+ case 6: return [4 /*yield*/, (0, utils_1.processMessageContent)(message.content)];
101
+ case 7:
102
+ combinedText = _w.sent();
103
+ _t = combinedText;
104
+ return [4 /*yield*/, (0, utils_1.processImageAttachments)(message.attachments)];
105
+ case 8:
106
+ combinedText = _t + _w.sent();
107
+ if (!combinedText) {
108
+ return [2 /*return*/, "Please provide a message or an attachment."];
109
+ }
110
+ if (!readFiles) return [3 /*break*/, 12];
111
+ if (!(message.attachments.size > 0)) return [3 /*break*/, 12];
112
+ attachment = message.attachments.first();
113
+ if (!attachment.name.endsWith('.pdf')) return [3 /*break*/, 10];
114
+ return [4 /*yield*/, (0, utils_1.readPdf)(attachment.url)];
115
+ case 9:
116
+ pdfContent = _w.sent();
117
+ combinedText += pdfContent;
118
+ return [3 /*break*/, 12];
119
+ case 10:
120
+ if (!attachment.name.endsWith('.txt')) return [3 /*break*/, 12];
121
+ return [4 /*yield*/, (0, utils_1.readTextFile)(attachment.url)];
122
+ case 11:
123
+ txtContent = _w.sent();
124
+ combinedText += txtContent;
125
+ _w.label = 12;
126
+ case 12: return [4 /*yield*/, message.channel.sendTyping()];
127
+ case 13:
128
+ _w.sent();
129
+ replied = "";
130
+ if (!((_a = message.reference) === null || _a === void 0 ? void 0 : _a.messageId)) return [3 /*break*/, 16];
131
+ return [4 /*yield*/, message.guild.channels.cache
132
+ .get(message.channel.id)
133
+ .messages.fetch((_b = message.reference) === null || _b === void 0 ? void 0 : _b.messageId)];
134
+ case 14:
135
+ fetchedMessage = _w.sent();
136
+ if (fetchedMessage.content) {
137
+ replied += fetchedMessage.content;
138
+ }
139
+ if (!fetchedMessage.attachments) return [3 /*break*/, 16];
140
+ _u = replied;
141
+ return [4 /*yield*/, (0, utils_1.processImageAttachments)(fetchedMessage.attachments)];
142
+ case 15:
143
+ replied = _u + _w.sent();
144
+ _w.label = 16;
145
+ case 16:
146
+ finalText = "".concat(combinedText, "\n\n").concat(replied);
147
+ response = { reply: "" };
148
+ for (_i = 0, keywords_1 = keywords; _i < keywords_1.length; _i++) {
149
+ keyword = keywords_1[_i];
150
+ if (finalText.toLowerCase().includes(keyword.toLowerCase())) {
151
+ response = keywordResponses[keyword] || "";
152
+ message.reply({
153
+ content: response,
154
+ allowedMentions: { repliedUser: false },
155
+ });
156
+ return [2 /*return*/];
157
+ }
158
+ }
159
+ drawValid = draw && (0, utils_1.shouldDrawImage)(finalText, drawTrigger);
160
+ if (!drawValid) return [3 /*break*/, 18];
161
+ return [4 /*yield*/, (0, utils_1.drawImage)(message, numOfImages, finalText, hercai, response, imageModel, nsfw)];
162
+ case 17: return [2 /*return*/, _w.sent()];
163
+ case 18:
164
+ if (!(voice === true)) return [3 /*break*/, 20];
165
+ return [4 /*yield*/, (0, utils_1.generateVoiceResponse)(message, numOfImages, finalText, hercai, response, imageModel, draw, drawValid, chatModel, voiceModel, voice_code, type, apiKey)];
166
+ case 19: return [2 /*return*/, _w.sent()];
167
+ case 20:
168
+ _w.trys.push([20, 22, , 27]);
169
+ return [4 /*yield*/, hercai.question({
170
+ model: chatModel,
171
+ content: finalText,
172
+ })];
173
+ case 21:
174
+ response = _w.sent();
175
+ return [3 /*break*/, 27];
176
+ case 22:
177
+ error_1 = _w.sent();
178
+ if (!(error_1.response && error_1.response.status === 429)) return [3 /*break*/, 23];
179
+ console.error("Too many requests. Please try again later.");
180
+ return [2 /*return*/, message.reply("Please wait i am in a cool down for a minute")];
181
+ case 23:
182
+ if (!(error_1.response && error_1.response.status === 500)) return [3 /*break*/, 24];
183
+ console.error("Internal server error. Please try again later.");
184
+ return [2 /*return*/, message.reply("Please wait i am in a cool down for a minute")];
185
+ case 24: return [4 /*yield*/, message.reply("Please wait i am in a cool down for a minute")];
186
+ case 25:
187
+ _w.sent();
188
+ throw new Error("The Api is on a cool down for 10 seconds");
189
+ case 26: return [3 /*break*/, 27];
190
+ case 27:
191
+ if (!containsUnclearPhrases(response.reply)) return [3 /*break*/, 29];
192
+ console.log("The response appears to be random or unclear!");
193
+ imageUrl = (_c = message.attachments.first()) === null || _c === void 0 ? void 0 : _c.url;
194
+ if (!imageUrl) {
195
+ console.error("No image attachment found.");
196
+ return [2 /*return*/];
197
+ }
198
+ return [4 /*yield*/, attemptImageCaptioning(imageUrl)];
199
+ case 28:
200
+ imageCaption = _w.sent();
201
+ if (imageCaption) {
202
+ response.reply = imageCaption + response.reply;
203
+ }
204
+ _w.label = 29;
205
+ case 29:
206
+ if (!(response.reply.length <= 2000)) return [3 /*break*/, 31];
207
+ return [4 /*yield*/, message.reply({
208
+ content: response.reply,
209
+ allowedMentions: { repliedUser: false },
210
+ })];
211
+ case 30:
212
+ _w.sent();
213
+ return [3 /*break*/, 35];
214
+ case 31:
215
+ parts = [];
216
+ while (response.reply.length > 0) {
217
+ parts.push(response.reply.substring(0, 1999));
218
+ response.reply = response.reply.substring(1999);
219
+ }
220
+ _v = 0, parts_1 = parts;
221
+ _w.label = 32;
222
+ case 32:
223
+ if (!(_v < parts_1.length)) return [3 /*break*/, 35];
224
+ part = parts_1[_v];
225
+ return [4 /*yield*/, message.reply({
226
+ content: part,
227
+ allowedMentions: { repliedUser: false },
228
+ })];
229
+ case 33:
230
+ _w.sent();
231
+ _w.label = 34;
232
+ case 34:
233
+ _v++;
234
+ return [3 /*break*/, 32];
235
+ case 35: return [3 /*break*/, 37];
236
+ case 36:
237
+ error_2 = _w.sent();
238
+ console.error("Error processing message in file");
239
+ throw error_2;
240
+ case 37: return [2 /*return*/];
241
+ }
242
+ });
243
+ });
244
+ }
245
+ exports.apexAI = apexAI;
246
+ function containsUnclearPhrases(text) {
247
+ return unclearPhrases.some(function (phrase) { return text.includes(phrase); });
248
+ }
249
+ function attemptImageCaptioning(imageUrl) {
250
+ return __awaiter(this, void 0, void 0, function () {
251
+ var retryCount, maxRetries, fetchData, error_3, error_4;
252
+ var _this = this;
253
+ return __generator(this, function (_a) {
254
+ switch (_a.label) {
255
+ case 0:
256
+ _a.trys.push([0, 7, , 8]);
257
+ retryCount = 0;
258
+ maxRetries = 3;
259
+ fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
260
+ var response, error_5;
261
+ return __generator(this, function (_a) {
262
+ switch (_a.label) {
263
+ case 0:
264
+ _a.trys.push([0, 2, , 3]);
265
+ return [4 /*yield*/, axios_1.post("https://api-inference.huggingface.co/models/Salesforce/blip-image-captioning-base", { image: imageUrl }, {
266
+ headers: {
267
+ "Content-Type": "application/json",
268
+ Authorization: "Bearer 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",
269
+ },
270
+ })];
271
+ case 1:
272
+ response = _a.sent();
273
+ if (response.status === 200) {
274
+ return [2 /*return*/, response.data[0].generated_text];
275
+ }
276
+ else {
277
+ console.error("Failed to fetch image captioning API: ".concat(response.statusText));
278
+ return [2 /*return*/, null];
279
+ }
280
+ return [3 /*break*/, 3];
281
+ case 2:
282
+ error_5 = _a.sent();
283
+ console.error("Error fetching data: ".concat(error_5.message));
284
+ throw error_5;
285
+ case 3: return [2 /*return*/];
286
+ }
287
+ });
288
+ }); };
289
+ _a.label = 1;
290
+ case 1:
291
+ if (!(retryCount < maxRetries)) return [3 /*break*/, 6];
292
+ _a.label = 2;
293
+ case 2:
294
+ _a.trys.push([2, 4, , 5]);
295
+ return [4 /*yield*/, fetchData()];
296
+ case 3: return [2 /*return*/, _a.sent()];
297
+ case 4:
298
+ error_3 = _a.sent();
299
+ console.error("Error fetching data (Retry ".concat(retryCount + 1, "): ").concat(error_3.message));
300
+ retryCount++;
301
+ return [3 /*break*/, 5];
302
+ case 5: return [3 /*break*/, 1];
303
+ case 6: return [2 /*return*/, null];
304
+ case 7:
305
+ error_4 = _a.sent();
306
+ console.error("Error in attemptImageCaptioning: ".concat(error_4.message));
307
+ return [2 /*return*/, null];
308
+ case 8: return [2 /*return*/];
309
+ }
310
+ });
311
+ });
312
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chunkString = void 0;
4
+ function chunkString(str, length) {
5
+ return str.match(new RegExp(".{1,".concat(length, "}"), 'g')) || [];
6
+ }
7
+
8
+ exports.chunkString = chunkString;