apexify.js 4.5.59 → 4.5.592

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 (144) hide show
  1. package/dist/cjs/ai/ApexAI.d.ts +132 -1
  2. package/dist/cjs/ai/ApexAI.d.ts.map +1 -1
  3. package/dist/cjs/ai/ApexAI.js +236 -190
  4. package/dist/cjs/ai/ApexAI.js.map +1 -1
  5. package/dist/cjs/ai/ApexModules.d.ts +7 -3
  6. package/dist/cjs/ai/ApexModules.d.ts.map +1 -1
  7. package/dist/cjs/ai/ApexModules.js +40 -7
  8. package/dist/cjs/ai/ApexModules.js.map +1 -1
  9. package/dist/cjs/ai/buttons/tools.d.ts.map +1 -1
  10. package/dist/cjs/ai/buttons/tools.js +1 -0
  11. package/dist/cjs/ai/buttons/tools.js.map +1 -1
  12. package/dist/cjs/ai/functions/readFiles.d.ts.map +1 -1
  13. package/dist/cjs/ai/functions/readFiles.js +12 -27
  14. package/dist/cjs/ai/functions/readFiles.js.map +1 -1
  15. package/dist/cjs/ai/functions/validOptions.d.ts +18 -10
  16. package/dist/cjs/ai/functions/validOptions.d.ts.map +1 -1
  17. package/dist/cjs/ai/functions/validOptions.js +82 -44
  18. package/dist/cjs/ai/functions/validOptions.js.map +1 -1
  19. package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts +2 -2
  20. package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
  21. package/dist/cjs/ai/modals-chat/groq/whisper.d.ts +3 -0
  22. package/dist/cjs/ai/modals-chat/groq/whisper.d.ts.map +1 -1
  23. package/dist/cjs/ai/modals-chat/groq/whisper.js +30 -21
  24. package/dist/cjs/ai/modals-chat/groq/whisper.js.map +1 -1
  25. package/dist/cjs/ai/utils.d.ts +2 -6
  26. package/dist/cjs/ai/utils.d.ts.map +1 -1
  27. package/dist/cjs/ai/utils.js +2 -9
  28. package/dist/cjs/ai/utils.js.map +1 -1
  29. package/dist/cjs/canvas/utils/Image/imageProperties.d.ts.map +1 -1
  30. package/dist/cjs/canvas/utils/Image/imageProperties.js +4 -6
  31. package/dist/cjs/canvas/utils/Image/imageProperties.js.map +1 -1
  32. package/dist/cjs/canvas/utils/types.d.ts +26 -0
  33. package/dist/cjs/canvas/utils/types.d.ts.map +1 -1
  34. package/dist/cjs/canvas/utils/types.js.map +1 -1
  35. package/dist/cjs/index.d.ts +9 -12
  36. package/dist/cjs/index.d.ts.map +1 -1
  37. package/dist/cjs/index.js +22 -18
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  40. package/dist/cjs/utils.d.ts +2 -2
  41. package/dist/cjs/utils.d.ts.map +1 -1
  42. package/dist/cjs/utils.js +2 -2
  43. package/dist/cjs/utils.js.map +1 -1
  44. package/dist/esm/ai/ApexAI.d.ts +132 -1
  45. package/dist/esm/ai/ApexAI.d.ts.map +1 -1
  46. package/dist/esm/ai/ApexAI.js +236 -190
  47. package/dist/esm/ai/ApexAI.js.map +1 -1
  48. package/dist/esm/ai/ApexModules.d.ts +7 -3
  49. package/dist/esm/ai/ApexModules.d.ts.map +1 -1
  50. package/dist/esm/ai/ApexModules.js +40 -7
  51. package/dist/esm/ai/ApexModules.js.map +1 -1
  52. package/dist/esm/ai/buttons/tools.d.ts.map +1 -1
  53. package/dist/esm/ai/buttons/tools.js +1 -0
  54. package/dist/esm/ai/buttons/tools.js.map +1 -1
  55. package/dist/esm/ai/functions/readFiles.d.ts.map +1 -1
  56. package/dist/esm/ai/functions/readFiles.js +12 -27
  57. package/dist/esm/ai/functions/readFiles.js.map +1 -1
  58. package/dist/esm/ai/functions/validOptions.d.ts +18 -10
  59. package/dist/esm/ai/functions/validOptions.d.ts.map +1 -1
  60. package/dist/esm/ai/functions/validOptions.js +82 -44
  61. package/dist/esm/ai/functions/validOptions.js.map +1 -1
  62. package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts +2 -2
  63. package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
  64. package/dist/esm/ai/modals-chat/groq/whisper.d.ts +3 -0
  65. package/dist/esm/ai/modals-chat/groq/whisper.d.ts.map +1 -1
  66. package/dist/esm/ai/modals-chat/groq/whisper.js +30 -21
  67. package/dist/esm/ai/modals-chat/groq/whisper.js.map +1 -1
  68. package/dist/esm/ai/utils.d.ts +2 -6
  69. package/dist/esm/ai/utils.d.ts.map +1 -1
  70. package/dist/esm/ai/utils.js +2 -9
  71. package/dist/esm/ai/utils.js.map +1 -1
  72. package/dist/esm/canvas/utils/Image/imageProperties.d.ts.map +1 -1
  73. package/dist/esm/canvas/utils/Image/imageProperties.js +4 -6
  74. package/dist/esm/canvas/utils/Image/imageProperties.js.map +1 -1
  75. package/dist/esm/canvas/utils/types.d.ts +26 -0
  76. package/dist/esm/canvas/utils/types.d.ts.map +1 -1
  77. package/dist/esm/canvas/utils/types.js.map +1 -1
  78. package/dist/esm/index.d.ts +9 -12
  79. package/dist/esm/index.d.ts.map +1 -1
  80. package/dist/esm/index.js +22 -18
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  83. package/dist/esm/utils.d.ts +2 -2
  84. package/dist/esm/utils.d.ts.map +1 -1
  85. package/dist/esm/utils.js +2 -2
  86. package/dist/esm/utils.js.map +1 -1
  87. package/lib/ai/ApexAI.ts +447 -195
  88. package/lib/ai/ApexModules.ts +45 -12
  89. package/lib/ai/buttons/tools.ts +1 -0
  90. package/lib/ai/functions/readFiles.ts +14 -31
  91. package/lib/ai/functions/validOptions.ts +96 -49
  92. package/lib/ai/modals-chat/electronHub/speechModels.ts +2 -2
  93. package/lib/ai/modals-chat/groq/whisper.ts +34 -20
  94. package/lib/ai/utils.ts +3 -10
  95. package/lib/canvas/utils/Image/imageProperties.ts +5 -6
  96. package/lib/canvas/utils/types.ts +21 -1
  97. package/lib/index.ts +44 -28
  98. package/lib/utils.ts +2 -2
  99. package/package.json +2 -5
  100. package/dist/cjs/ai/functions/chunkString.d.ts +0 -2
  101. package/dist/cjs/ai/functions/chunkString.d.ts.map +0 -1
  102. package/dist/cjs/ai/functions/chunkString.js +0 -7
  103. package/dist/cjs/ai/functions/chunkString.js.map +0 -1
  104. package/dist/cjs/ai/functions/draw.d.ts +0 -10
  105. package/dist/cjs/ai/functions/draw.d.ts.map +0 -1
  106. package/dist/cjs/ai/functions/draw.js +0 -649
  107. package/dist/cjs/ai/functions/draw.js.map +0 -1
  108. package/dist/cjs/ai/functions/imageReader.d.ts +0 -3
  109. package/dist/cjs/ai/functions/imageReader.d.ts.map +0 -1
  110. package/dist/cjs/ai/functions/imageReader.js +0 -22
  111. package/dist/cjs/ai/functions/imageReader.js.map +0 -1
  112. package/dist/cjs/ai/functions/shouldDrawImage.d.ts +0 -2
  113. package/dist/cjs/ai/functions/shouldDrawImage.d.ts.map +0 -1
  114. package/dist/cjs/ai/functions/shouldDrawImage.js +0 -10
  115. package/dist/cjs/ai/functions/shouldDrawImage.js.map +0 -1
  116. package/dist/cjs/ai/modals-chat/others/otherModels.d.ts +0 -9
  117. package/dist/cjs/ai/modals-chat/others/otherModels.d.ts.map +0 -1
  118. package/dist/cjs/ai/modals-chat/others/otherModels.js +0 -101
  119. package/dist/cjs/ai/modals-chat/others/otherModels.js.map +0 -1
  120. package/dist/esm/ai/functions/chunkString.d.ts +0 -2
  121. package/dist/esm/ai/functions/chunkString.d.ts.map +0 -1
  122. package/dist/esm/ai/functions/chunkString.js +0 -7
  123. package/dist/esm/ai/functions/chunkString.js.map +0 -1
  124. package/dist/esm/ai/functions/draw.d.ts +0 -10
  125. package/dist/esm/ai/functions/draw.d.ts.map +0 -1
  126. package/dist/esm/ai/functions/draw.js +0 -649
  127. package/dist/esm/ai/functions/draw.js.map +0 -1
  128. package/dist/esm/ai/functions/imageReader.d.ts +0 -3
  129. package/dist/esm/ai/functions/imageReader.d.ts.map +0 -1
  130. package/dist/esm/ai/functions/imageReader.js +0 -22
  131. package/dist/esm/ai/functions/imageReader.js.map +0 -1
  132. package/dist/esm/ai/functions/shouldDrawImage.d.ts +0 -2
  133. package/dist/esm/ai/functions/shouldDrawImage.d.ts.map +0 -1
  134. package/dist/esm/ai/functions/shouldDrawImage.js +0 -10
  135. package/dist/esm/ai/functions/shouldDrawImage.js.map +0 -1
  136. package/dist/esm/ai/modals-chat/others/otherModels.d.ts +0 -9
  137. package/dist/esm/ai/modals-chat/others/otherModels.d.ts.map +0 -1
  138. package/dist/esm/ai/modals-chat/others/otherModels.js +0 -101
  139. package/dist/esm/ai/modals-chat/others/otherModels.js.map +0 -1
  140. package/lib/ai/functions/chunkString.ts +0 -3
  141. package/lib/ai/functions/draw.ts +0 -695
  142. package/lib/ai/functions/imageReader.ts +0 -24
  143. package/lib/ai/functions/shouldDrawImage.ts +0 -7
  144. package/lib/ai/modals-chat/others/otherModels.ts +0 -115
@@ -1,2 +1,133 @@
1
- export declare function ApexAI(): Promise<void>;
1
+ import { Message } from "discord.js";
2
+ export interface Options {
3
+ /**
4
+ * Configuration options related to voice functionality.
5
+ * @param voice.textVoice Configuration options for text-to-voice functionality.
6
+ * @param voice.textVoice.enable Whether text-to-voice functionality is enabled.
7
+ * @param voice.textVoice.voiceModel The voice model to be used.
8
+ * @param voice.textVoice.character The character name.
9
+ */
10
+ voice?: {
11
+ enable?: boolean;
12
+ voiceModel?: "elevenlabs" | "myshell-tts" | "deepinfra-tts" | "whisper-large-v3" | "distil-large-v3" | string;
13
+ characterName?: string;
14
+ };
15
+ /**
16
+ * Configuration options related to image generation.
17
+ * @param imagine.enable Whether image generation is enabled.
18
+ * @param imagine.drawTrigger The trigger phrases for initiating image generation.
19
+ * @param imagine.imageModal The model for the image generation.
20
+ * @param imagine.numOfImages The number of images to generate.
21
+ * @param imagine.nsfw Configuration options for NSFW filtering.
22
+ * @param imagine.nsfw.enable Whether NSFW filtering is enabled.
23
+ * @param imagine.nsfw.keywords Keywords for NSFW filtering.
24
+ * @param imagine.enhancer.enable Whether image enhancement is enabled (rewrites your prompt in more descriptive way).
25
+ * @param imagine.enhancer.negative_prompt The negative prompt for image enhancement only for (Prodia models).
26
+ */
27
+ imagine?: {
28
+ enable: boolean;
29
+ drawTrigger: string[];
30
+ imageModel: string;
31
+ numOfImages: number;
32
+ ApiKeys?: {
33
+ electronHubKey?: string;
34
+ };
35
+ nsfw?: {
36
+ enable?: boolean;
37
+ keywords?: string[];
38
+ deepCheck?: boolean;
39
+ };
40
+ enhancer?: {
41
+ enable: boolean;
42
+ negative_prompt?: string;
43
+ width?: number;
44
+ height?: number;
45
+ format?: "jpeg" | "png";
46
+ quality?: number;
47
+ };
48
+ };
49
+ /**
50
+ * Configuration options related to chat functionality.
51
+ * @param chat.chatModel The chat model to be used.
52
+ * @param chat.readFiles Whether to read files.
53
+ * @param chat.readImages Whether to read images.
54
+ * @param chat.personality The personality for the chat.
55
+ * @param chat.API_KEY The API key for accessing the chat service.
56
+ * @param chat.lang The Language of the voice message sent.
57
+ * @param chat.memory Configuration options for memory.
58
+ * @param chat.memory.memoryOn Whether memory is enabled.
59
+ * @param chat.memory.id The ID for memory.
60
+ * @param chat.typeWriting Configuration options for typing effect.
61
+ * @param chat.typeWriting.enable Whether the typing effect is enabled.
62
+ * @param chat.typeWriting.speed The speed of typing.
63
+ * @param chat.typeWriting.delay The delay for typing.
64
+ */
65
+ chat?: {
66
+ enable?: boolean;
67
+ chatModel?: string;
68
+ readFiles?: boolean;
69
+ readImages?: boolean;
70
+ instruction?: string;
71
+ Api_Keys?: {
72
+ groq_API?: string;
73
+ electronHub_Key?: string;
74
+ };
75
+ memory?: {
76
+ memoryOn?: boolean;
77
+ id?: string;
78
+ };
79
+ typeWriting?: {
80
+ enable?: boolean;
81
+ speed?: number;
82
+ delay?: number;
83
+ };
84
+ };
85
+ /**
86
+ * Additional configuration options.
87
+ * @param others.messageType Configuration options for message types.
88
+ * @param others.messageType.type The type of message.
89
+ * @param others.messageType.intialContent The initial content of the message.
90
+ * @param others.buttons Buttons configuration.
91
+ * @param others.keywords Keywords for response.
92
+ * @param others.keywordResponses Responses for keywords.
93
+ * @param others.loader Configuration options for loader.
94
+ * @param others.loader.enable Whether the loader is enabled.
95
+ * @param others.loader.loadingMessage The loading message.
96
+ * @param others.loader.loadingTimer The loading timer.
97
+ * @param others.channel Configuration options for channels.
98
+ * @param others.channel.enable Whether channels are enabled.
99
+ * @param others.channel.id The ID of the channels.
100
+ * @param others.permissions Configuration options for permissions.
101
+ * @param others.permissions.enable Whether permissions are enabled.
102
+ * @param others.permissions.role The role for permissions.
103
+ * @param others.permissions.permission The permission.
104
+ * @param others.permissions.blockedUsers Blocked users.
105
+ */
106
+ others?: {
107
+ messageType?: {
108
+ type?: string;
109
+ intialContent?: string;
110
+ sendAs?: string | "embed" | "content";
111
+ };
112
+ onMention?: boolean;
113
+ buttons?: any[];
114
+ keywordResponses?: Record<string, string>;
115
+ loader?: {
116
+ enable?: boolean;
117
+ loadingMessage?: string;
118
+ loadingTimer?: number;
119
+ };
120
+ channel?: {
121
+ enable?: boolean;
122
+ id?: string[];
123
+ };
124
+ permissions?: {
125
+ enable?: boolean;
126
+ role?: string[];
127
+ permission?: string[];
128
+ blockedUsers?: string[];
129
+ };
130
+ };
131
+ }
132
+ export declare function ApexAI(message: Message, ApexOptions: Options): Promise<import("discord.js").OmitPartialGroupDMChannel<Message<boolean>> | undefined>;
2
133
  //# sourceMappingURL=ApexAI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApexAI.d.ts","sourceRoot":"","sources":["../../../lib/ai/ApexAI.ts"],"names":[],"mappings":"AAgMA,wBAAsB,MAAM,kBAI3B"}
1
+ {"version":3,"file":"ApexAI.d.ts","sourceRoot":"","sources":["../../../lib/ai/ApexAI.ts"],"names":[],"mappings":"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"}
@@ -1,196 +1,242 @@
1
1
  "use strict";
2
- // import { Hercai } from "hercai";
3
- // import {
4
- // toDraw,
5
- // aiImagine,
6
- // typeWriter,
7
- // groqAnalyzer,
8
- // readFile
9
- // } from "./utils";
10
- // import {
11
- // ModalBuilder,
12
- // TextInputBuilder,
13
- // TextInputStyle,
14
- // ActionRowBuilder,
15
- // Message,
16
- // PermissionResolvable
17
- // } from "discord.js";
18
- // import { filters } from "./buttons/tools";
19
- // import { imageTools } from "./buttons/drawMenu";
20
- // import { whisper } from "./modals-chat/groq/whisper";
21
- // import { validateModels} from "./functions/validOptions";
22
- // import { chatHercai } from "./modals-chat/hercai/chatModels";
23
- // import { otherChatModels } from "./modals-chat/others/otherModels";
24
- // import { chatGroq } from "./modals-chat/groq/chatgroq";
25
- // import { electronChat } from "./modals-chat/electronHub/chatmodels";
26
2
  Object.defineProperty(exports, "__esModule", { value: true });
27
3
  exports.ApexAI = ApexAI;
28
- // export interface Options {
29
- // /**
30
- // * Configuration options related to voice functionality.
31
- // * @param voice.textVoice Configuration options for text-to-voice functionality.
32
- // * @param voice.textVoice.enable Whether text-to-voice functionality is enabled.
33
- // * @param voice.textVoice.voiceModel The voice model to be used.
34
- // * @param voice.textVoice.voice_code The voice code only for (apexAI and zenithAI model).
35
- // * @param voice.textVoice.apiKey The API key for accessing the voice service only for (apexAI and zenithAI model).
36
- // * @param voice.textVoice.type The type of voice only for (apexAI and zenithAI model).
37
- // */
38
- // voice?: {
39
- // textVoice?: {
40
- // enable?: boolean;
41
- // voiceModel?: string;
42
- // voice_code?: string;
43
- // apiKey?: string;
44
- // type?: string;
45
- // };
46
- // };
47
- // /**
48
- // * Configuration options related to image generation.
49
- // * @param imagine.enable Whether image generation is enabled.
50
- // * @param imagine.drawTrigger The trigger phrases for initiating image generation.
51
- // * @param imagine.imageModal The model for the image generation.
52
- // * @param imagine.numOfImages The number of images to generate.
53
- // * @param imagine.nsfw Configuration options for NSFW filtering.
54
- // * @param imagine.nsfw.enable Whether NSFW filtering is enabled.
55
- // * @param imagine.nsfw.keywords Keywords for NSFW filtering.
56
- // * @param imagine.enhancer Configuration options for image enhancement.
57
- // * @param imagine.enhancer.enable Whether image enhancement is enabled (rewrites your prompt in more descriptive way).
58
- // * @param imagine.enhancer.enhancerModal The model for image enhancement only for (Prodia models).
59
- // * @param imagine.enhancer.cfg_scale The scale for image enhancement only for (Prodia models).
60
- // * @param imagine.enhancer.steps The number of enhancement steps only for (Prodia models).
61
- // * @param imagine.enhancer.seed The seed for image enhancement only for (Prodia models).
62
- // * @param imagine.enhancer.imgStyle The style of the image only for (Prodia models).
63
- // * @param imagine.enhancer.negative_prompt The negative prompt for image enhancement only for (Prodia models).
64
- // * @param imagine.enhancer.sampler The sampler for image enhancement only for (Prodia models).
65
- // */
66
- // imagine?: {
67
- // enable?: boolean;
68
- // drawTrigger?: string[];
69
- // imageModel?: string;
70
- // numOfImages?: number;
71
- // ApiKeys?: {
72
- // groqAPI?: string;
73
- // rsnAPIkey?: string;
74
- // prodiaAPI?: string;
75
- // freesedGPTApi?: string;
76
- // electronHubKey?: string
77
- // };
78
- // nsfw?: {
79
- // enable?: boolean;
80
- // keywords?: string[];
81
- // deepCheck?: boolean;
82
- // };
83
- // enhancer?: {
84
- // enable: boolean;
85
- // enhancerModal?: string | "ESRGAN_4x" | "Lanczos" | "Nearest" | "LDSR" | "R-ESRGAN 4x+" | "R-ESRGAN 4x+ Anime6B" | "ScuNET GAN" | "ScuNET PSNR" | "SwinIR 4x" | undefined;
86
- // cfg_scale?: number;
87
- // steps?: number;
88
- // seed?: number;
89
- // imgStyle?: string | "3d-model" | "analog-film" | "anime" | "cinematic" | "comic-book" | "digital-art" | "enhance" | "isometric" | "fantasy-art" | "isometric" | "line-art" | "low-poly" | "neon-punk" | "origami" | "photographic" | "pixel-art" | "texture" | "craft-clay";
90
- // negative_prompt?: string;
91
- // sampler?: string | "DPM++ 2M Karras" | "DPM++ SDE Karras" | "DPM++ 2M SDE Exponential" | "DPM++ 2M SDE Karras" | "Euler a" | "Euler" | "LMS" | "Heun" | "DPM2" | "DPM2 a" | "DPM++ 2S a" | "DPM++ 2M" | "DPM++ SDE" | "DPM++ 2M SDE" | "DPM++ 2M SDE Heun" | "DPM++ 2M SDE Heun Karras" | "DPM++ 2M SDE Heun Exponential" | "DPM++ 3M SDE" | "DPM++ 3M SDE Karras" | "DPM++ 3M SDE Exponential" | "DPM fast" | "DPM adaptive" | "LMS Karras" | "DPM2 Karras" | "DPM2 a Karras" | "DPM++ 2S a Karras" | "Restart" | "DDIM" | "PLMS" | "UniPC";
92
- // width?: number;
93
- // height?: number;
94
- // upscale?: number;
95
- // format?: "jpeg" | "png";
96
- // quality?: number;
97
- // };
98
- // };
99
- // /**
100
- // * Configuration options related to chat functionality.
101
- // * @param chat.chatModel The chat model to be used.
102
- // * @param chat.readFiles Whether to read files.
103
- // * @param chat.readImages Whether to read images.
104
- // * @param chat.personality The personality for the chat.
105
- // * @param chat.API_KEY The API key for accessing the chat service.
106
- // * @param chat.lang The Language of the voice message sent.
107
- // * @param chat.memory Configuration options for memory.
108
- // * @param chat.memory.memoryOn Whether memory is enabled.
109
- // * @param chat.memory.id The ID for memory.
110
- // * @param chat.typeWriting Configuration options for typing effect.
111
- // * @param chat.typeWriting.enable Whether the typing effect is enabled.
112
- // * @param chat.typeWriting.speed The speed of typing.
113
- // * @param chat.typeWriting.delay The delay for typing.
114
- // */
115
- // chat?: {
116
- // enable?: boolean;
117
- // returnChat?: Boolean
118
- // chatModel?: string;
119
- // readFiles?: boolean;
120
- // readImages?: boolean;
121
- // personality?: string | any;
122
- // instruction?: string;
123
- // Api_Keys?: {
124
- // groq_API?: string;
125
- // rsn_API?: string;
126
- // prodia_API?: string;
127
- // geminiAPI?: string;
128
- // freesedGPT_Api?: string;
129
- // electronHub_Key?: string
130
- // };
131
- // lang?: string;
132
- // memory?: {
133
- // memoryOn?: boolean;
134
- // id?: string;
135
- // };
136
- // typeWriting?: {
137
- // enable?: boolean;
138
- // speed?: number;
139
- // delay?: number;
140
- // };
141
- // };
142
- // /**
143
- // * Additional configuration options.
144
- // * @param others.messageType Configuration options for message types.
145
- // * @param others.messageType.type The type of message.
146
- // * @param others.messageType.intialContent The initial content of the message.
147
- // * @param others.buttons Buttons configuration.
148
- // * @param others.keywords Keywords for response.
149
- // * @param others.keywordResponses Responses for keywords.
150
- // * @param others.loader Configuration options for loader.
151
- // * @param others.loader.enable Whether the loader is enabled.
152
- // * @param others.loader.loadingMessage The loading message.
153
- // * @param others.loader.loadingTimer The loading timer.
154
- // * @param others.channel Configuration options for channels.
155
- // * @param others.channel.enable Whether channels are enabled.
156
- // * @param others.channel.id The ID of the channels.
157
- // * @param others.permissions Configuration options for permissions.
158
- // * @param others.permissions.enable Whether permissions are enabled.
159
- // * @param others.permissions.role The role for permissions.
160
- // * @param others.permissions.permission The permission.
161
- // * @param others.permissions.blockedUsers Blocked users.
162
- // */
163
- // others?: {
164
- // messageType?: {
165
- // type?: string;
166
- // intialContent?: string;
167
- // sendAs?: string | "embed" | "content";
168
- // };
169
- // onMention?: boolean;
170
- // buttons?: any[];
171
- // keywords?: string[];
172
- // keywordResponses?: Record<string, string>;
173
- // loader?: {
174
- // enable?: boolean;
175
- // loadingMessage?: string;
176
- // loadingTimer?: number;
177
- // };
178
- // channel?: {
179
- // enable?: boolean;
180
- // id?: string[];
181
- // };
182
- // permissions?: {
183
- // enable?: boolean;
184
- // role?: string[];
185
- // permission?: string[];
186
- // blockedUsers?: string[];
187
- // };
188
- // };
189
- // }
190
- // type Response = string | { content?: string; reply?: string } | any;
191
- // const hercai = new Hercai('6eZZOdDwm6Epdzn8mnhcX9SBDkxvoNYcNj9ILS0P44=');
192
- async function ApexAI() {
193
- throw new Error('ApexAi is deprecated for the moment. It will be back soon');
4
+ const utils_1 = require("./utils");
5
+ const discord_js_1 = require("discord.js");
6
+ const tools_1 = require("./buttons/tools");
7
+ const drawMenu_1 = require("./buttons/drawMenu");
8
+ const whisper_1 = require("./modals-chat/groq/whisper");
9
+ async function ApexAI(message, ApexOptions) {
10
+ if (!message.guild)
11
+ return;
12
+ await (0, drawMenu_1.imageTools)(message.client, discord_js_1.ModalBuilder, discord_js_1.TextInputBuilder, discord_js_1.TextInputStyle, discord_js_1.ActionRowBuilder);
13
+ await (0, tools_1.filters)(message.client);
14
+ let prompt = message.content || "";
15
+ const { others, chat, voice, imagine } = ApexOptions;
16
+ const { permissions, channel, messageType, onMention, loader, buttons } = others ?? {};
17
+ const { Api_Keys, typeWriting } = chat ?? {};
18
+ if (permissions?.enable) {
19
+ const userRoles = message.member?.roles.cache.map((role) => role.id);
20
+ const hasPermission = permissions.role?.some((roleId) => userRoles?.includes(roleId)) ?? false;
21
+ const hasRequiredPerms = permissions.permission?.some((perm) => message.member?.permissions.has(perm)) ?? false;
22
+ const isBlocked = permissions.blockedUsers?.includes(message.author.id) ?? false;
23
+ if (!hasPermission || !hasRequiredPerms || isBlocked)
24
+ return;
25
+ }
26
+ if (channel?.enable && !channel.id?.includes(message.channel.id))
27
+ return;
28
+ if (onMention && prompt.startsWith(`<@${message.client.user.id}>`)) {
29
+ prompt = prompt.replace(`<@${message.client.user.id}>`, "").trim();
30
+ }
31
+ const mainPrompt = prompt;
32
+ if (message.channel.isTextBased() && "sendTyping" in message.channel)
33
+ await message.channel.sendTyping();
34
+ if (loader?.enable) {
35
+ const loadingMessage = await message.reply({
36
+ content: loader.loadingMessage,
37
+ allowedMentions: { repliedUser: false },
38
+ });
39
+ setTimeout(() => loadingMessage.delete().catch(console.error), loader.loadingTimer || 3000);
40
+ }
41
+ if (message.attachments.size > 0) {
42
+ for (const attachment of message.attachments.values()) {
43
+ try {
44
+ const url = attachment.url;
45
+ const contentType = attachment.contentType || "";
46
+ const fileSize = attachment.size;
47
+ const maxSize = 25 * 1024 * 1024;
48
+ if (contentType.startsWith("audio/")) {
49
+ if (fileSize > maxSize) {
50
+ console.error("Audio file exceeds 25MB.");
51
+ continue;
52
+ }
53
+ prompt += `\n> Transcribed from audio:\n${await (0, whisper_1.whisper)(prompt, url)}`;
54
+ }
55
+ else if (["image/png", "image/jpeg", "image/jpg", "image/webp"].includes(contentType)) {
56
+ if (!Api_Keys?.groq_API) {
57
+ console.error("Missing Groq API Key.");
58
+ continue;
59
+ }
60
+ prompt += `\n> Image analysis:\n${await (0, utils_1.groqAnalyzer)({ imgURL: url, ApiKey: Api_Keys.groq_API })}`;
61
+ }
62
+ else if (attachment.name.endsWith(".pdf") || attachment.name.endsWith(".txt")) {
63
+ const fileType = attachment.name.endsWith(".pdf") ? "pdf" : "txt";
64
+ const fileContent = await (0, utils_1.readFile)(url, fileType);
65
+ prompt += `\n\n- 📜 ${attachment.name} content:\n${fileContent}`;
66
+ }
67
+ else {
68
+ prompt += `\n> ❌ Unsupported file type uploaded: ${contentType}`;
69
+ }
70
+ }
71
+ catch (e) {
72
+ console.error("Error processing attachment:", e);
73
+ }
74
+ }
75
+ }
76
+ let prevReply = "";
77
+ if (message.reference?.messageId) {
78
+ const channel = message?.guild?.channels?.cache?.get(message.channel.id);
79
+ const messageId = message?.reference?.messageId;
80
+ // @ts-ignore
81
+ const fetchedMessage = await channel?.messages?.fetch(messageId);
82
+ if (fetchedMessage) {
83
+ prevReply += fetchedMessage.content || "";
84
+ const firstAttachment = fetchedMessage.attachments?.first();
85
+ if (firstAttachment && /\.(png|jpg|jpeg|webp)$/i.test(firstAttachment.url)) {
86
+ prevReply += await (0, utils_1.groqAnalyzer)({
87
+ imgURL: firstAttachment.url,
88
+ ApiKey: Api_Keys?.groq_API,
89
+ prompt,
90
+ });
91
+ prompt += `\n- 📷 Image analysis:\n${prevReply}`;
92
+ }
93
+ }
94
+ }
95
+ if (others?.keywordResponses) {
96
+ for (const [keyword, response] of Object.entries(others.keywordResponses)) {
97
+ if (prompt.toLowerCase().includes(keyword.toLowerCase())) {
98
+ return await message.reply({
99
+ content: response,
100
+ allowedMentions: { repliedUser: false },
101
+ });
102
+ }
103
+ }
104
+ }
105
+ let aiResponse = "";
106
+ const chatEnabled = chat?.enable ?? false;
107
+ const voiceEnabled = voice?.enable ?? false;
108
+ const imageEnabled = imagine?.enable ?? false;
109
+ let genImage = [];
110
+ const drawTrigger = imagine?.drawTrigger?.some(trigger => mainPrompt.toLowerCase().startsWith(trigger.toLowerCase()));
111
+ if (message.channel.isTextBased() && "sendTyping" in message.channel)
112
+ await message.channel.sendTyping();
113
+ if (chatEnabled && voiceEnabled) {
114
+ return await message.reply({
115
+ content: "❌ Error: Both Chat and Voice cannot be enabled at the same time.",
116
+ allowedMentions: { repliedUser: false },
117
+ });
118
+ }
119
+ if (chatEnabled) {
120
+ let instruction = chat?.instruction;
121
+ if (imageEnabled && drawTrigger) {
122
+ const enhancer = imagine?.enhancer?.enable ? imagine.enhancer : undefined;
123
+ let tempEnhancer;
124
+ if (enhancer) {
125
+ const enhancementRequest = `Rewrite this text below in a more descriptive way, making it clearer to be visualized correctly by an AI image generator. Use stronger words and return only the enhanced prompt—nothing more, nothing less.\n\n`;
126
+ tempEnhancer = await (0, utils_1.ApexChat)("v3-32k", prompt, { instruction: enhancementRequest });
127
+ }
128
+ genImage = await (0, utils_1.ApexImagine)(imagine?.imageModel, tempEnhancer || prompt, enhancer);
129
+ instruction += `\n\nThe image has already been generated. Do not attempt to generate or describe another image. Instead, provide feedback, thoughts, or a critique based on the given prompt:\n\n`;
130
+ }
131
+ aiResponse = await (0, utils_1.ApexChat)(chat?.chatModel, prompt, { instruction, memory: chat?.memory?.memoryOn, userId: chat?.memory?.id, limit: 15 });
132
+ }
133
+ else if (voiceEnabled) {
134
+ let instruction = chat?.instruction;
135
+ if (imageEnabled && drawTrigger) {
136
+ const enhancer = imagine?.enhancer?.enable ? imagine.enhancer : undefined;
137
+ let tempEnhancer;
138
+ if (enhancer) {
139
+ const enhancementRequest = `Rewrite this text below in a more descriptive way, making it clearer to be visualized correctly by an AI image generator. Use stronger words and return only the enhanced prompt—nothing more, nothing less.\n\n`;
140
+ tempEnhancer = await (0, utils_1.ApexChat)("v3-32k", prompt, { instruction: enhancementRequest });
141
+ }
142
+ genImage = await (0, utils_1.ApexImagine)(imagine?.imageModel, tempEnhancer || prompt, enhancer);
143
+ instruction += `\n\nThe image has already been generated. Do not attempt to generate or describe another image. Instead, provide feedback, thoughts, or a critique based on the given prompt:\n\n`;
144
+ }
145
+ aiResponse = await (0, utils_1.ApexChat)(chat?.chatModel, prompt, { instruction, memory: chat?.memory?.memoryOn, userId: chat?.memory?.id, limit: 15 });
146
+ aiResponse = await (0, utils_1.ApexText2Speech)({ modelName: voice?.voiceModel, inputText: aiResponse, personality: voice?.characterName });
147
+ }
148
+ else if (imageEnabled && drawTrigger) {
149
+ const enhancer = imagine?.enhancer?.enable ? imagine.enhancer : undefined;
150
+ let tempEnhancer;
151
+ if (enhancer) {
152
+ const enhancementRequest = `Rewrite this text below in a more descriptive way, making it clearer to be visualized correctly by an AI image generator. Use stronger words and return only the enhanced prompt—nothing more, nothing less.\n\n${prompt}`;
153
+ tempEnhancer = await (0, utils_1.ApexChat)("v3-32k", prompt, { instruction: enhancementRequest });
154
+ }
155
+ genImage = await (0, utils_1.ApexImagine)(imagine?.imageModel, tempEnhancer || prompt, enhancer);
156
+ }
157
+ else {
158
+ return await message.reply({
159
+ content: "❌ Error: No valid AI features are enabled.",
160
+ allowedMentions: { repliedUser: false },
161
+ });
162
+ }
163
+ const imageAttachments = [];
164
+ if (genImage.length > 0) {
165
+ for (const imageUrl of genImage) {
166
+ imageAttachments.push(new discord_js_1.AttachmentBuilder(imageUrl, { name: `image-${Date.now()}.png` }));
167
+ }
168
+ }
169
+ let voiceAttachment = null;
170
+ if (voiceEnabled && aiResponse instanceof Buffer) {
171
+ voiceAttachment = new discord_js_1.AttachmentBuilder(aiResponse, { name: "ai_voice.mp3" });
172
+ }
173
+ const chunkMessage = (text, maxLength = 2000) => {
174
+ const chunks = [];
175
+ while (text.length > maxLength) {
176
+ let sliceIndex = text.lastIndexOf("\n", maxLength);
177
+ if (sliceIndex === -1)
178
+ sliceIndex = maxLength;
179
+ chunks.push(text.slice(0, sliceIndex));
180
+ text = text.slice(sliceIndex);
181
+ }
182
+ if (text.length > 0)
183
+ chunks.push(text);
184
+ return chunks;
185
+ };
186
+ const finalText = typeof aiResponse === "string" ? aiResponse : "";
187
+ const messageChunks = chunkMessage(finalText);
188
+ const sendMessage = async (content) => {
189
+ if (!content.trim())
190
+ return;
191
+ if (others?.messageType?.sendAs === "embed") {
192
+ const embed = new discord_js_1.EmbedBuilder()
193
+ .setColor(0x0099ff)
194
+ .setDescription(content)
195
+ .setFooter({ text: "AI Response" });
196
+ if (others?.messageType?.type === "send") {
197
+ return message.channel.send({ embeds: [embed] });
198
+ }
199
+ else {
200
+ return message.reply({ embeds: [embed], allowedMentions: { repliedUser: false } });
201
+ }
202
+ }
203
+ else {
204
+ if (others?.messageType?.type === "send") {
205
+ return message.channel.send({ content });
206
+ }
207
+ else {
208
+ return message.reply({ content, allowedMentions: { repliedUser: false } });
209
+ }
210
+ }
211
+ };
212
+ const sendTypeWritingMessage = async (content) => {
213
+ if (!chat?.typeWriting?.enable) {
214
+ return sendMessage(content);
215
+ }
216
+ let currentMessage = "";
217
+ const speed = chat.typeWriting.speed ?? 50;
218
+ const delay = chat.typeWriting.delay ?? 500;
219
+ for (const char of content) {
220
+ currentMessage += char;
221
+ if (message.channel.isTextBased()) {
222
+ await message.channel.sendTyping();
223
+ }
224
+ await new Promise((resolve) => setTimeout(resolve, speed));
225
+ }
226
+ await sendMessage(currentMessage);
227
+ };
228
+ (async () => {
229
+ if (imageAttachments.length > 0) {
230
+ await message.channel.send({ files: imageAttachments });
231
+ }
232
+ for (const chunk of messageChunks) {
233
+ await sendTypeWritingMessage(chunk);
234
+ await new Promise((resolve) => setTimeout(resolve, chat?.typeWriting?.delay ?? 500));
235
+ }
236
+ if (voiceAttachment) {
237
+ await message.channel.send({ files: [voiceAttachment] });
238
+ }
239
+ })();
194
240
  }
195
241
  ;
196
242
  //# sourceMappingURL=ApexAI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApexAI.js","sourceRoot":"","sources":["../../../lib/ai/ApexAI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApexAI.js","sourceRoot":"","sources":["../../../lib/ai/ApexAI.ts"],"names":[],"mappings":"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"}