apexify.js 4.5.58 → 4.5.591
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/dist/cjs/ai/ApexAI.d.ts +132 -1
- package/dist/cjs/ai/ApexAI.d.ts.map +1 -1
- package/dist/cjs/ai/ApexAI.js +234 -190
- package/dist/cjs/ai/ApexAI.js.map +1 -1
- package/dist/cjs/ai/ApexModules.d.ts +7 -3
- package/dist/cjs/ai/ApexModules.d.ts.map +1 -1
- package/dist/cjs/ai/ApexModules.js +40 -7
- package/dist/cjs/ai/ApexModules.js.map +1 -1
- package/dist/cjs/ai/buttons/tools.d.ts.map +1 -1
- package/dist/cjs/ai/buttons/tools.js +1 -0
- package/dist/cjs/ai/buttons/tools.js.map +1 -1
- package/dist/cjs/ai/functions/readFiles.d.ts.map +1 -1
- package/dist/cjs/ai/functions/readFiles.js +12 -27
- package/dist/cjs/ai/functions/readFiles.js.map +1 -1
- package/dist/cjs/ai/functions/validOptions.d.ts +18 -10
- package/dist/cjs/ai/functions/validOptions.d.ts.map +1 -1
- package/dist/cjs/ai/functions/validOptions.js +82 -44
- package/dist/cjs/ai/functions/validOptions.js.map +1 -1
- package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts +2 -2
- package/dist/cjs/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
- package/dist/cjs/ai/modals-chat/groq/whisper.d.ts +3 -0
- package/dist/cjs/ai/modals-chat/groq/whisper.d.ts.map +1 -1
- package/dist/cjs/ai/modals-chat/groq/whisper.js +30 -21
- package/dist/cjs/ai/modals-chat/groq/whisper.js.map +1 -1
- package/dist/cjs/ai/utils.d.ts +2 -6
- package/dist/cjs/ai/utils.d.ts.map +1 -1
- package/dist/cjs/ai/utils.js +2 -9
- package/dist/cjs/ai/utils.js.map +1 -1
- package/dist/cjs/canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/cjs/canvas/utils/Image/imageProperties.js +11 -76
- package/dist/cjs/canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/cjs/canvas/utils/types.d.ts +26 -0
- package/dist/cjs/canvas/utils/types.d.ts.map +1 -1
- package/dist/cjs/canvas/utils/types.js.map +1 -1
- package/dist/cjs/index.d.ts +9 -12
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +22 -18
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/utils.d.ts +2 -2
- package/dist/cjs/utils.d.ts.map +1 -1
- package/dist/cjs/utils.js +2 -2
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/ai/ApexAI.d.ts +132 -1
- package/dist/esm/ai/ApexAI.d.ts.map +1 -1
- package/dist/esm/ai/ApexAI.js +234 -190
- package/dist/esm/ai/ApexAI.js.map +1 -1
- package/dist/esm/ai/ApexModules.d.ts +7 -3
- package/dist/esm/ai/ApexModules.d.ts.map +1 -1
- package/dist/esm/ai/ApexModules.js +40 -7
- package/dist/esm/ai/ApexModules.js.map +1 -1
- package/dist/esm/ai/buttons/tools.d.ts.map +1 -1
- package/dist/esm/ai/buttons/tools.js +1 -0
- package/dist/esm/ai/buttons/tools.js.map +1 -1
- package/dist/esm/ai/functions/readFiles.d.ts.map +1 -1
- package/dist/esm/ai/functions/readFiles.js +12 -27
- package/dist/esm/ai/functions/readFiles.js.map +1 -1
- package/dist/esm/ai/functions/validOptions.d.ts +18 -10
- package/dist/esm/ai/functions/validOptions.d.ts.map +1 -1
- package/dist/esm/ai/functions/validOptions.js +82 -44
- package/dist/esm/ai/functions/validOptions.js.map +1 -1
- package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts +2 -2
- package/dist/esm/ai/modals-chat/electronHub/speechModels.d.ts.map +1 -1
- package/dist/esm/ai/modals-chat/groq/whisper.d.ts +3 -0
- package/dist/esm/ai/modals-chat/groq/whisper.d.ts.map +1 -1
- package/dist/esm/ai/modals-chat/groq/whisper.js +30 -21
- package/dist/esm/ai/modals-chat/groq/whisper.js.map +1 -1
- package/dist/esm/ai/utils.d.ts +2 -6
- package/dist/esm/ai/utils.d.ts.map +1 -1
- package/dist/esm/ai/utils.js +2 -9
- package/dist/esm/ai/utils.js.map +1 -1
- package/dist/esm/canvas/utils/Image/imageProperties.d.ts.map +1 -1
- package/dist/esm/canvas/utils/Image/imageProperties.js +11 -76
- package/dist/esm/canvas/utils/Image/imageProperties.js.map +1 -1
- package/dist/esm/canvas/utils/types.d.ts +26 -0
- package/dist/esm/canvas/utils/types.d.ts.map +1 -1
- package/dist/esm/canvas/utils/types.js.map +1 -1
- package/dist/esm/index.d.ts +9 -12
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +22 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils.d.ts +2 -2
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/esm/utils.js.map +1 -1
- package/lib/ai/ApexAI.ts +442 -195
- package/lib/ai/ApexModules.ts +45 -12
- package/lib/ai/buttons/tools.ts +1 -0
- package/lib/ai/functions/readFiles.ts +14 -31
- package/lib/ai/functions/validOptions.ts +96 -49
- package/lib/ai/modals-chat/electronHub/speechModels.ts +2 -2
- package/lib/ai/modals-chat/groq/whisper.ts +34 -20
- package/lib/ai/utils.ts +3 -10
- package/lib/canvas/utils/Image/imageProperties.ts +18 -104
- package/lib/canvas/utils/types.ts +21 -1
- package/lib/index.ts +44 -28
- package/lib/utils.ts +2 -2
- package/package.json +2 -5
- package/dist/cjs/ai/functions/chunkString.d.ts +0 -2
- package/dist/cjs/ai/functions/chunkString.d.ts.map +0 -1
- package/dist/cjs/ai/functions/chunkString.js +0 -7
- package/dist/cjs/ai/functions/chunkString.js.map +0 -1
- package/dist/cjs/ai/functions/draw.d.ts +0 -10
- package/dist/cjs/ai/functions/draw.d.ts.map +0 -1
- package/dist/cjs/ai/functions/draw.js +0 -649
- package/dist/cjs/ai/functions/draw.js.map +0 -1
- package/dist/cjs/ai/functions/imageReader.d.ts +0 -3
- package/dist/cjs/ai/functions/imageReader.d.ts.map +0 -1
- package/dist/cjs/ai/functions/imageReader.js +0 -22
- package/dist/cjs/ai/functions/imageReader.js.map +0 -1
- package/dist/cjs/ai/functions/shouldDrawImage.d.ts +0 -2
- package/dist/cjs/ai/functions/shouldDrawImage.d.ts.map +0 -1
- package/dist/cjs/ai/functions/shouldDrawImage.js +0 -10
- package/dist/cjs/ai/functions/shouldDrawImage.js.map +0 -1
- package/dist/cjs/ai/modals-chat/others/otherModels.d.ts +0 -9
- package/dist/cjs/ai/modals-chat/others/otherModels.d.ts.map +0 -1
- package/dist/cjs/ai/modals-chat/others/otherModels.js +0 -101
- package/dist/cjs/ai/modals-chat/others/otherModels.js.map +0 -1
- package/dist/esm/ai/functions/chunkString.d.ts +0 -2
- package/dist/esm/ai/functions/chunkString.d.ts.map +0 -1
- package/dist/esm/ai/functions/chunkString.js +0 -7
- package/dist/esm/ai/functions/chunkString.js.map +0 -1
- package/dist/esm/ai/functions/draw.d.ts +0 -10
- package/dist/esm/ai/functions/draw.d.ts.map +0 -1
- package/dist/esm/ai/functions/draw.js +0 -649
- package/dist/esm/ai/functions/draw.js.map +0 -1
- package/dist/esm/ai/functions/imageReader.d.ts +0 -3
- package/dist/esm/ai/functions/imageReader.d.ts.map +0 -1
- package/dist/esm/ai/functions/imageReader.js +0 -22
- package/dist/esm/ai/functions/imageReader.js.map +0 -1
- package/dist/esm/ai/functions/shouldDrawImage.d.ts +0 -2
- package/dist/esm/ai/functions/shouldDrawImage.d.ts.map +0 -1
- package/dist/esm/ai/functions/shouldDrawImage.js +0 -10
- package/dist/esm/ai/functions/shouldDrawImage.js.map +0 -1
- package/dist/esm/ai/modals-chat/others/otherModels.d.ts +0 -9
- package/dist/esm/ai/modals-chat/others/otherModels.d.ts.map +0 -1
- package/dist/esm/ai/modals-chat/others/otherModels.js +0 -101
- package/dist/esm/ai/modals-chat/others/otherModels.js.map +0 -1
- package/lib/ai/functions/chunkString.ts +0 -3
- package/lib/ai/functions/draw.ts +0 -695
- package/lib/ai/functions/imageReader.ts +0 -24
- package/lib/ai/functions/shouldDrawImage.ts +0 -7
- package/lib/ai/modals-chat/others/otherModels.ts +0 -115
package/lib/ai/functions/draw.ts
DELETED
|
@@ -1,695 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ButtonBuilder,
|
|
3
|
-
StringSelectMenuBuilder,
|
|
4
|
-
StringSelectMenuOptionBuilder,
|
|
5
|
-
ButtonStyle,
|
|
6
|
-
ActionRowBuilder,
|
|
7
|
-
AttachmentBuilder,
|
|
8
|
-
AttachmentData
|
|
9
|
-
} from "discord.js";
|
|
10
|
-
import axios from "axios";
|
|
11
|
-
import { validateModels } from './validOptions';
|
|
12
|
-
import { groqAnalyzer } from "../utils";
|
|
13
|
-
import { electronImagine } from "../modals-chat/electronHub/imageModels";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
async function aiImagine(
|
|
17
|
-
message: any,
|
|
18
|
-
numOfImages: number,
|
|
19
|
-
textToDraw: string,
|
|
20
|
-
hercai: any,
|
|
21
|
-
imageModal: string,
|
|
22
|
-
nsfw: boolean,
|
|
23
|
-
nsfwKeyWords: string[],
|
|
24
|
-
deepCheck: boolean,
|
|
25
|
-
enhancer: any,
|
|
26
|
-
buttons: any[],
|
|
27
|
-
RespondMessage: any,
|
|
28
|
-
imageAPIS?: { groqAPI?: string, rsnAPI?: string, prodiaAPI?: string, freesedGPTApi?: string, electronHubKey?: string }
|
|
29
|
-
) {
|
|
30
|
-
const maxRetryAttempts = 4;
|
|
31
|
-
const retryInterval = 5000;
|
|
32
|
-
const imageType = await validateModels();
|
|
33
|
-
const attachData: AttachmentData[] = [];
|
|
34
|
-
const buttonsRow1: ButtonBuilder[] = [];
|
|
35
|
-
const imageUrls: string[] = [];
|
|
36
|
-
|
|
37
|
-
async function retry(fn: any, retriesLeft = maxRetryAttempts) {
|
|
38
|
-
try {
|
|
39
|
-
return await fn();
|
|
40
|
-
} catch (error: any) {
|
|
41
|
-
if (retriesLeft === 0) throw error;
|
|
42
|
-
await new Promise((resolve) => setTimeout(resolve, retryInterval));
|
|
43
|
-
return retry(fn, retriesLeft - 1);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
try {
|
|
48
|
-
if (numOfImages > 4 || numOfImages <= 0) {
|
|
49
|
-
throw new Error("Number of images can't be greater than 4 or smaller than 0.");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
await message.channel?.sendTyping();
|
|
53
|
-
|
|
54
|
-
const translatedText = await electronChat({ modelName: 'gpt-4o', prompt: `Translate The text below into english:\n\n${prompt}` }) as string;
|
|
55
|
-
|
|
56
|
-
const nsfwWords: string[] = nsfwKeyWords || [
|
|
57
|
-
"2g1c",
|
|
58
|
-
"2 girls 1 cup",
|
|
59
|
-
"acrotomophilia",
|
|
60
|
-
"alabama hot pocket",
|
|
61
|
-
"alaskan pipeline",
|
|
62
|
-
"anal",
|
|
63
|
-
"anilingus",
|
|
64
|
-
"anus",
|
|
65
|
-
"apeshit",
|
|
66
|
-
"arsehole",
|
|
67
|
-
"ass",
|
|
68
|
-
"asshole",
|
|
69
|
-
"assmunch",
|
|
70
|
-
"auto erotic",
|
|
71
|
-
"autoerotic",
|
|
72
|
-
"babeland",
|
|
73
|
-
"baby batter",
|
|
74
|
-
"baby juice",
|
|
75
|
-
"ball gag",
|
|
76
|
-
"ball gravy",
|
|
77
|
-
"ball kicking",
|
|
78
|
-
"ball licking",
|
|
79
|
-
"ball sack",
|
|
80
|
-
"ball sucking",
|
|
81
|
-
"bangbros",
|
|
82
|
-
"bangbus",
|
|
83
|
-
"bareback",
|
|
84
|
-
"barely legal",
|
|
85
|
-
"barenaked",
|
|
86
|
-
"bastard",
|
|
87
|
-
"bastardo",
|
|
88
|
-
"bastinado",
|
|
89
|
-
"bbw",
|
|
90
|
-
"bdsm",
|
|
91
|
-
"beaner",
|
|
92
|
-
"beaners",
|
|
93
|
-
"beaver cleaver",
|
|
94
|
-
"beaver lips",
|
|
95
|
-
"beastiality",
|
|
96
|
-
"bestiality",
|
|
97
|
-
"big black",
|
|
98
|
-
"big breasts",
|
|
99
|
-
"big knockers",
|
|
100
|
-
"big tits",
|
|
101
|
-
"bimbos",
|
|
102
|
-
"birdlock",
|
|
103
|
-
"bitch",
|
|
104
|
-
"bitches",
|
|
105
|
-
"black cock",
|
|
106
|
-
"blonde action",
|
|
107
|
-
"blonde on blonde action",
|
|
108
|
-
"blowjob",
|
|
109
|
-
"blow job",
|
|
110
|
-
"blow your load",
|
|
111
|
-
"blue waffle",
|
|
112
|
-
"blumpkin",
|
|
113
|
-
"bollocks",
|
|
114
|
-
"bondage",
|
|
115
|
-
"boner",
|
|
116
|
-
"boob",
|
|
117
|
-
"boobs",
|
|
118
|
-
"booty call",
|
|
119
|
-
"brown showers",
|
|
120
|
-
"brunette action",
|
|
121
|
-
"bukkake",
|
|
122
|
-
"bulldyke",
|
|
123
|
-
"bullet vibe",
|
|
124
|
-
"bullshit",
|
|
125
|
-
"bung hole",
|
|
126
|
-
"bunghole",
|
|
127
|
-
"busty",
|
|
128
|
-
"butt",
|
|
129
|
-
"buttcheeks",
|
|
130
|
-
"butthole",
|
|
131
|
-
"camel toe",
|
|
132
|
-
"camgirl",
|
|
133
|
-
"camslut",
|
|
134
|
-
"camwhore",
|
|
135
|
-
"carpet muncher",
|
|
136
|
-
"carpetmuncher",
|
|
137
|
-
"chocolate rosebuds",
|
|
138
|
-
"cialis",
|
|
139
|
-
"circlejerk",
|
|
140
|
-
"cleveland steamer",
|
|
141
|
-
"clit",
|
|
142
|
-
"clitoris",
|
|
143
|
-
"clover clamps",
|
|
144
|
-
"clusterfuck",
|
|
145
|
-
"cock",
|
|
146
|
-
"cocks",
|
|
147
|
-
"coprolagnia",
|
|
148
|
-
"coprophilia",
|
|
149
|
-
"cornhole",
|
|
150
|
-
"coon",
|
|
151
|
-
"coons",
|
|
152
|
-
"creampie",
|
|
153
|
-
"cum",
|
|
154
|
-
"cumming",
|
|
155
|
-
"cumshot",
|
|
156
|
-
"cumshots",
|
|
157
|
-
"cunnilingus",
|
|
158
|
-
"cunt",
|
|
159
|
-
"darkie",
|
|
160
|
-
"date rape",
|
|
161
|
-
"daterape",
|
|
162
|
-
"deep throat",
|
|
163
|
-
"deepthroat",
|
|
164
|
-
"dendrophilia",
|
|
165
|
-
"dick",
|
|
166
|
-
"dildo",
|
|
167
|
-
"dingleberry",
|
|
168
|
-
"dingleberries",
|
|
169
|
-
"dirty pillows",
|
|
170
|
-
"dirty sanchez",
|
|
171
|
-
"doggie style",
|
|
172
|
-
"doggiestyle",
|
|
173
|
-
"doggy style",
|
|
174
|
-
"doggystyle",
|
|
175
|
-
"dog style",
|
|
176
|
-
"dolcett",
|
|
177
|
-
"domination",
|
|
178
|
-
"dominatrix",
|
|
179
|
-
"dommes",
|
|
180
|
-
"donkey punch",
|
|
181
|
-
"double dong",
|
|
182
|
-
"double penetration",
|
|
183
|
-
"dp action",
|
|
184
|
-
"dry hump",
|
|
185
|
-
"dvda",
|
|
186
|
-
"eat my ass",
|
|
187
|
-
"ecchi",
|
|
188
|
-
"ejaculation",
|
|
189
|
-
"erotic",
|
|
190
|
-
"erotism",
|
|
191
|
-
"escort",
|
|
192
|
-
"eunuch",
|
|
193
|
-
"fag",
|
|
194
|
-
"faggot",
|
|
195
|
-
"fecal",
|
|
196
|
-
"felch",
|
|
197
|
-
"fellatio",
|
|
198
|
-
"feltch",
|
|
199
|
-
"female squirting",
|
|
200
|
-
"femdom",
|
|
201
|
-
"figging",
|
|
202
|
-
"fingerbang",
|
|
203
|
-
"fingering",
|
|
204
|
-
"fisting",
|
|
205
|
-
"foot fetish",
|
|
206
|
-
"footjob",
|
|
207
|
-
"frotting",
|
|
208
|
-
"fuck",
|
|
209
|
-
"fuck buttons",
|
|
210
|
-
"fuckin",
|
|
211
|
-
"fucking",
|
|
212
|
-
"fucktards",
|
|
213
|
-
"fudge packer",
|
|
214
|
-
"fudgepacker",
|
|
215
|
-
"futanari",
|
|
216
|
-
"gangbang",
|
|
217
|
-
"gang bang",
|
|
218
|
-
"gay sex",
|
|
219
|
-
"genitals",
|
|
220
|
-
"giant cock",
|
|
221
|
-
"girl on",
|
|
222
|
-
"girl on top",
|
|
223
|
-
"girls gone wild",
|
|
224
|
-
"goatcx",
|
|
225
|
-
"goatse",
|
|
226
|
-
"god damn",
|
|
227
|
-
"gokkun",
|
|
228
|
-
"golden shower",
|
|
229
|
-
"goodpoop",
|
|
230
|
-
"goo girl",
|
|
231
|
-
"goregasm",
|
|
232
|
-
"grope",
|
|
233
|
-
"group sex",
|
|
234
|
-
"g-spot",
|
|
235
|
-
"guro",
|
|
236
|
-
"hand job",
|
|
237
|
-
"handjob",
|
|
238
|
-
"hard core",
|
|
239
|
-
"hardcore",
|
|
240
|
-
"hentai",
|
|
241
|
-
"homoerotic",
|
|
242
|
-
"honkey",
|
|
243
|
-
"hooker",
|
|
244
|
-
"horny",
|
|
245
|
-
"hot carl",
|
|
246
|
-
"hot chick",
|
|
247
|
-
"how to kill",
|
|
248
|
-
"how to murder",
|
|
249
|
-
"huge fat",
|
|
250
|
-
"humping",
|
|
251
|
-
"incest",
|
|
252
|
-
"intercourse",
|
|
253
|
-
"jack off",
|
|
254
|
-
"jail bait",
|
|
255
|
-
"jailbait",
|
|
256
|
-
"jelly donut",
|
|
257
|
-
"jerk off",
|
|
258
|
-
"jigaboo",
|
|
259
|
-
"jiggaboo",
|
|
260
|
-
"jiggerboo",
|
|
261
|
-
"jizz",
|
|
262
|
-
"juggs",
|
|
263
|
-
"kike",
|
|
264
|
-
"kinbaku",
|
|
265
|
-
"kinkster",
|
|
266
|
-
"kinky",
|
|
267
|
-
"knobbing",
|
|
268
|
-
"leather restraint",
|
|
269
|
-
"leather straight jacket",
|
|
270
|
-
"lemon party",
|
|
271
|
-
"livesex",
|
|
272
|
-
"lolita",
|
|
273
|
-
"lovemaking",
|
|
274
|
-
"make me come",
|
|
275
|
-
"male squirting",
|
|
276
|
-
"masturbate",
|
|
277
|
-
"masturbating",
|
|
278
|
-
"masturbation",
|
|
279
|
-
"menage a trois",
|
|
280
|
-
"milf",
|
|
281
|
-
"missionary position",
|
|
282
|
-
"mong",
|
|
283
|
-
"motherfucker",
|
|
284
|
-
"mound of venus",
|
|
285
|
-
"mr hands",
|
|
286
|
-
"muff diver",
|
|
287
|
-
"muffdiving",
|
|
288
|
-
"nambla",
|
|
289
|
-
"nawashi",
|
|
290
|
-
"negro",
|
|
291
|
-
"neonazi",
|
|
292
|
-
"nigga",
|
|
293
|
-
"nigger",
|
|
294
|
-
"nig nog",
|
|
295
|
-
"nimphomania",
|
|
296
|
-
"nipple",
|
|
297
|
-
"nipples",
|
|
298
|
-
"nsfw",
|
|
299
|
-
'nsfw images',
|
|
300
|
-
"nude",
|
|
301
|
-
"nudity",
|
|
302
|
-
"nutten",
|
|
303
|
-
"nympho",
|
|
304
|
-
"nymphomania",
|
|
305
|
-
"octopussy",
|
|
306
|
-
"omorashi",
|
|
307
|
-
"one cup two girls",
|
|
308
|
-
'one guy one jar',
|
|
309
|
-
"orgasm",
|
|
310
|
-
"orgy",
|
|
311
|
-
'paedophile',
|
|
312
|
-
"paki",
|
|
313
|
-
"panties",
|
|
314
|
-
"panty",
|
|
315
|
-
"pedobear",
|
|
316
|
-
"pedophile",
|
|
317
|
-
'pegging',
|
|
318
|
-
'penis',
|
|
319
|
-
"phone sex",
|
|
320
|
-
'piece of shit',
|
|
321
|
-
"pikey",
|
|
322
|
-
"pissing",
|
|
323
|
-
"piss pig",
|
|
324
|
-
"pisspig",
|
|
325
|
-
"playboy",
|
|
326
|
-
"pleasure chest",
|
|
327
|
-
"pole smoker",
|
|
328
|
-
"ponyplay",
|
|
329
|
-
"poof",
|
|
330
|
-
"poon",
|
|
331
|
-
"poontang",
|
|
332
|
-
"punany",
|
|
333
|
-
"poop chute",
|
|
334
|
-
"poopchute",
|
|
335
|
-
"porn",
|
|
336
|
-
"porno",
|
|
337
|
-
"pornography",
|
|
338
|
-
"prince albert piercing",
|
|
339
|
-
"pthc",
|
|
340
|
-
"pubes",
|
|
341
|
-
"pussy",
|
|
342
|
-
"queaf",
|
|
343
|
-
"queef",
|
|
344
|
-
"quim",
|
|
345
|
-
"raghead",
|
|
346
|
-
"raging boner",
|
|
347
|
-
"rape",
|
|
348
|
-
"raping",
|
|
349
|
-
"rapist",
|
|
350
|
-
"rectum",
|
|
351
|
-
"reverse cowgirl",
|
|
352
|
-
"rimjob",
|
|
353
|
-
"rimming",
|
|
354
|
-
"rosy palm",
|
|
355
|
-
"rosy palm and her 5 sisters",
|
|
356
|
-
"rusty trombone",
|
|
357
|
-
"sadism",
|
|
358
|
-
"santorum",
|
|
359
|
-
"scat",
|
|
360
|
-
"schlong",
|
|
361
|
-
"scissoring",
|
|
362
|
-
"semen",
|
|
363
|
-
"sex",
|
|
364
|
-
"sexcam",
|
|
365
|
-
"sexo",
|
|
366
|
-
"sexy",
|
|
367
|
-
"sexual",
|
|
368
|
-
"sexually",
|
|
369
|
-
"sexuality",
|
|
370
|
-
"shaved beaver",
|
|
371
|
-
"shaved pussy",
|
|
372
|
-
"shemale",
|
|
373
|
-
"shibari",
|
|
374
|
-
"shit",
|
|
375
|
-
"shitblimp",
|
|
376
|
-
"shitty",
|
|
377
|
-
"shota",
|
|
378
|
-
"shrimping",
|
|
379
|
-
"skeet",
|
|
380
|
-
"slanteye",
|
|
381
|
-
"slut",
|
|
382
|
-
"s&m",
|
|
383
|
-
"smut",
|
|
384
|
-
"snatch",
|
|
385
|
-
"snowballing",
|
|
386
|
-
"sodomize",
|
|
387
|
-
"sodomy",
|
|
388
|
-
"spastic",
|
|
389
|
-
"spic",
|
|
390
|
-
"splooge",
|
|
391
|
-
"splooge moose",
|
|
392
|
-
"spooge",
|
|
393
|
-
"spread legs",
|
|
394
|
-
"spunk",
|
|
395
|
-
"strap on",
|
|
396
|
-
"strapon",
|
|
397
|
-
"strappado",
|
|
398
|
-
"strip club",
|
|
399
|
-
"style doggy",
|
|
400
|
-
"suck",
|
|
401
|
-
"sucks",
|
|
402
|
-
"suicide girls",
|
|
403
|
-
"sultry women",
|
|
404
|
-
"swastika",
|
|
405
|
-
"swinger",
|
|
406
|
-
"tainted love",
|
|
407
|
-
"taste my",
|
|
408
|
-
"tea bagging",
|
|
409
|
-
"threesome",
|
|
410
|
-
"throating",
|
|
411
|
-
"thumbzilla",
|
|
412
|
-
"tied up",
|
|
413
|
-
"tight white",
|
|
414
|
-
"tit",
|
|
415
|
-
"tits",
|
|
416
|
-
"titties",
|
|
417
|
-
"titty",
|
|
418
|
-
"topless",
|
|
419
|
-
"tosser",
|
|
420
|
-
"towelhead",
|
|
421
|
-
"tranny",
|
|
422
|
-
"tribadism",
|
|
423
|
-
"tub girl",
|
|
424
|
-
'tubgirl',
|
|
425
|
-
"tushy",
|
|
426
|
-
"twat",
|
|
427
|
-
"twink",
|
|
428
|
-
"twinkie",
|
|
429
|
-
"two girls one cup",
|
|
430
|
-
"undressing",
|
|
431
|
-
'upskirt',
|
|
432
|
-
"urethra play",
|
|
433
|
-
"urophilia",
|
|
434
|
-
"vagina",
|
|
435
|
-
"venus mound",
|
|
436
|
-
"viagra",
|
|
437
|
-
"vibrator",
|
|
438
|
-
"violet wand",
|
|
439
|
-
"vorarephilia",
|
|
440
|
-
"voyeur",
|
|
441
|
-
"voyeurweb",
|
|
442
|
-
"voyuer",
|
|
443
|
-
"vulva",
|
|
444
|
-
"wank",
|
|
445
|
-
"wetback",
|
|
446
|
-
"wet dream",
|
|
447
|
-
"white power",
|
|
448
|
-
"whore",
|
|
449
|
-
"worldsex",
|
|
450
|
-
"wrapping men",
|
|
451
|
-
"wrinkled starfish",
|
|
452
|
-
"xx",
|
|
453
|
-
"xxx",
|
|
454
|
-
"yaoi",
|
|
455
|
-
"yellow showers",
|
|
456
|
-
"yiffy",
|
|
457
|
-
"zoophilia",
|
|
458
|
-
"anal",
|
|
459
|
-
"arousal",
|
|
460
|
-
"balls",
|
|
461
|
-
"blowjob",
|
|
462
|
-
"busty",
|
|
463
|
-
"butt",
|
|
464
|
-
"cameltoe",
|
|
465
|
-
"climax",
|
|
466
|
-
"clitoris",
|
|
467
|
-
"cock",
|
|
468
|
-
"crotch",
|
|
469
|
-
"cum",
|
|
470
|
-
"cumshot",
|
|
471
|
-
"cunnilingus",
|
|
472
|
-
"dirty",
|
|
473
|
-
"dirtytalk",
|
|
474
|
-
"dildo",
|
|
475
|
-
"erect",
|
|
476
|
-
"erogenous",
|
|
477
|
-
"escort",
|
|
478
|
-
"explicit",
|
|
479
|
-
"facial",
|
|
480
|
-
"fetish",
|
|
481
|
-
"flirt",
|
|
482
|
-
"foreplay",
|
|
483
|
-
"genitals",
|
|
484
|
-
"groin",
|
|
485
|
-
"hardcore",
|
|
486
|
-
"hardon",
|
|
487
|
-
"horniness",
|
|
488
|
-
"horny",
|
|
489
|
-
"kamasutra",
|
|
490
|
-
"kinky",
|
|
491
|
-
"lewd",
|
|
492
|
-
"lingerie",
|
|
493
|
-
"lust",
|
|
494
|
-
"lustful",
|
|
495
|
-
"masturbate",
|
|
496
|
-
"mature",
|
|
497
|
-
"milf",
|
|
498
|
-
"naughty",
|
|
499
|
-
"naked",
|
|
500
|
-
"nipples",
|
|
501
|
-
"nude",
|
|
502
|
-
"obscene",
|
|
503
|
-
"oral",
|
|
504
|
-
"orgasm",
|
|
505
|
-
"penetration",
|
|
506
|
-
"penis",
|
|
507
|
-
"pleasure",
|
|
508
|
-
"porn",
|
|
509
|
-
"prostitute",
|
|
510
|
-
"provocative",
|
|
511
|
-
"pubic",
|
|
512
|
-
"pussy",
|
|
513
|
-
"seduce",
|
|
514
|
-
"seductive",
|
|
515
|
-
"sensual",
|
|
516
|
-
"sex",
|
|
517
|
-
"sexual",
|
|
518
|
-
"sperm",
|
|
519
|
-
"strip",
|
|
520
|
-
"striptease",
|
|
521
|
-
"swinger",
|
|
522
|
-
"testicles",
|
|
523
|
-
"thong",
|
|
524
|
-
"threesome",
|
|
525
|
-
"undies",
|
|
526
|
-
"undress",
|
|
527
|
-
"vagina",
|
|
528
|
-
"vibrator",
|
|
529
|
-
"wank",
|
|
530
|
-
"wet",
|
|
531
|
-
"hentai",
|
|
532
|
-
"bdsm",
|
|
533
|
-
"gay",
|
|
534
|
-
"lesbian",
|
|
535
|
-
"femboy",
|
|
536
|
-
"ass",
|
|
537
|
-
];
|
|
538
|
-
if (deepCheck) {
|
|
539
|
-
if (translatedText && nsfwWords.some(word => translatedText.includes(word))) {
|
|
540
|
-
return message.reply("Warning ⚠️. Your prompt contains **`NSFW/Illegal/Prohibited`** words. Please refrain from doing this.");
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
if (textToDraw && nsfwWords.some(word => textToDraw.includes(word))) {
|
|
544
|
-
return message.reply("Warning ⚠️. Your prompt contains **`NSFW/Illegal/Prohibited`** words. Please refrain from doing this.");
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
for (let i = 0; i < numOfImages; i++) {
|
|
549
|
-
let response: any;
|
|
550
|
-
|
|
551
|
-
try {
|
|
552
|
-
if (imageModal === 'prodia-v2') {
|
|
553
|
-
response = await retry(() => hercai.betaDrawImage({ prompt: translatedText, ...enhancer }));
|
|
554
|
-
} else if (imageType.validHercaiModels.includes(imageModal)) {
|
|
555
|
-
response = await retry(() => hercai.drawImage({ model: imageModal, prompt: translatedText }));
|
|
556
|
-
} else if (imageType.validElectronModels.includes(imageModal)) {
|
|
557
|
-
response = await electronImagine({ ApiKey: imageAPIS?.electronHubKey as any, prompt: translatedText, modelName: imageModal, resizeOptions: { width: enhancer.width , height: enhancer.height, format: enhancer.format, quality: enhancer.quality } });
|
|
558
|
-
} else {
|
|
559
|
-
throw new Error("Invalid modal name.");
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
if (!response || response === 'This Modal is Currently Under Maintenance.') {
|
|
563
|
-
throw new Error('Model under maintenance.');
|
|
564
|
-
}
|
|
565
|
-
} catch (error) {
|
|
566
|
-
console.error(error);
|
|
567
|
-
return message.reply(`Please wait, I am in cooldown for a minute.`);
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
const imageUrl = response?.url || response;
|
|
571
|
-
|
|
572
|
-
if (nsfw) {
|
|
573
|
-
const textToCheck = await groqAnalyzer({ imgURL: imageUrl, prompt: textToDraw });
|
|
574
|
-
|
|
575
|
-
if (textToCheck && nsfwWords.some(word => textToCheck.includes(word))) {
|
|
576
|
-
return message.reply("Warning ⚠️. Your prompt contains **`NSFW/Illegal/Prohibited`** content. Please refrain from this.");
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
if (nsfwKeyWords.length > 0 && textToCheck && nsfwKeyWords.some(word => textToCheck.includes(word))) {
|
|
580
|
-
return message.reply("Warning ⚠️. The generated image contains NSFW content. Disable NSFW filter to proceed.");
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
if (imageModal === "v3") {
|
|
585
|
-
const res = await retry(() => axios.get(response.url, { responseType: "arraybuffer" }));
|
|
586
|
-
const buffferedImage = Buffer.from(res.data, "binary");
|
|
587
|
-
|
|
588
|
-
const resizedImage = await resizeAndSharpen(buffferedImage);
|
|
589
|
-
|
|
590
|
-
const attach = new AttachmentBuilder(resizedImage, { name: `image_${i + 1}.png` });
|
|
591
|
-
attachData.push(attach as any);
|
|
592
|
-
} else {
|
|
593
|
-
const attach = new AttachmentBuilder(imageUrl, { name: `image_${i + 1}.png` });
|
|
594
|
-
attachData.push(attach as any);
|
|
595
|
-
imageUrls.push(imageUrl);
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
const urlButton = new ButtonBuilder()
|
|
599
|
-
.setStyle(ButtonStyle.Link)
|
|
600
|
-
.setLabel(`Image ${i + 1}`)
|
|
601
|
-
.setURL(imageUrl);
|
|
602
|
-
|
|
603
|
-
buttonsRow1.push(urlButton);
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
const row1 = new ActionRowBuilder().addComponents(...buttonsRow1);
|
|
607
|
-
const row2 = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder().setCustomId("image_processing_select").setPlaceholder("Select Image Process").addOptions([
|
|
608
|
-
"Resizing", "Color Filters", "Convert Image Extension", "Brightness", "Sepia", "Pixelate", "Blur", "Fade", "Opaque", "Grayscale", "Contrast"
|
|
609
|
-
].map((option, index) => new StringSelectMenuOptionBuilder().setLabel(option).setValue(`process_${index + 1}`))));
|
|
610
|
-
|
|
611
|
-
RespondMessage = await message.reply({
|
|
612
|
-
files: attachData,
|
|
613
|
-
components: [...buttons, row1, row2],
|
|
614
|
-
allowedMentions: { repliedUser: false }
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
return { imageUrls, RespondMessage };
|
|
618
|
-
} catch (error: any) {
|
|
619
|
-
console.error("Error in drawImage:", error.message);
|
|
620
|
-
return { imageUrls: [], RespondMessage };
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
export { aiImagine };
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
import { createCanvas, loadImage } from "@napi-rs/canvas";
|
|
629
|
-
import { electronChat } from "../modals-chat/electronHub/chatmodels";
|
|
630
|
-
|
|
631
|
-
export async function resizeAndSharpen(imageBuffer: Buffer) {
|
|
632
|
-
const originalImage = await loadImage(imageBuffer);
|
|
633
|
-
|
|
634
|
-
const width = 2048;
|
|
635
|
-
const height = 2048;
|
|
636
|
-
|
|
637
|
-
const canvas = createCanvas(width, height);
|
|
638
|
-
const ctx = canvas.getContext("2d");
|
|
639
|
-
|
|
640
|
-
const aspectRatio = originalImage.width / originalImage.height;
|
|
641
|
-
let drawWidth = width;
|
|
642
|
-
let drawHeight = height;
|
|
643
|
-
let offsetX = 0, offsetY = 0;
|
|
644
|
-
|
|
645
|
-
if (aspectRatio > 1) {
|
|
646
|
-
drawWidth = width * aspectRatio;
|
|
647
|
-
offsetX = (width - drawWidth) / 2;
|
|
648
|
-
} else {
|
|
649
|
-
drawHeight = height / aspectRatio;
|
|
650
|
-
offsetY = (height - drawHeight) / 2;
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
ctx.drawImage(originalImage, offsetX, offsetY, drawWidth, drawHeight);
|
|
654
|
-
|
|
655
|
-
sharpenImage(ctx);
|
|
656
|
-
|
|
657
|
-
return canvas.toBuffer("image/png");
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
function sharpenImage(ctx: any) {
|
|
661
|
-
const imageData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
|
|
662
|
-
const pixels = imageData.data;
|
|
663
|
-
const width = ctx.canvas.width;
|
|
664
|
-
const height = ctx.canvas.height;
|
|
665
|
-
const newPixels = new Uint8ClampedArray(pixels.length);
|
|
666
|
-
|
|
667
|
-
const kernel = [
|
|
668
|
-
[0, -1, 0],
|
|
669
|
-
[-1, 5, -1],
|
|
670
|
-
[0, -1, 0],
|
|
671
|
-
];
|
|
672
|
-
|
|
673
|
-
for (let y = 1; y < height - 1; y++) {
|
|
674
|
-
for (let x = 1; x < width - 1; x++) {
|
|
675
|
-
let r = 0, g = 0, b = 0;
|
|
676
|
-
|
|
677
|
-
for (let ky = -1; ky <= 1; ky++) {
|
|
678
|
-
for (let kx = -1; kx <= 1; kx++) {
|
|
679
|
-
const idx = ((y + ky) * width + (x + kx)) * 4;
|
|
680
|
-
r += pixels[idx] * kernel[ky + 1][kx + 1];
|
|
681
|
-
g += pixels[idx + 1] * kernel[ky + 1][kx + 1];
|
|
682
|
-
b += pixels[idx + 2] * kernel[ky + 1][kx + 1];
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
const idx = (y * width + x) * 4;
|
|
687
|
-
newPixels[idx] = Math.min(Math.max(r, 0), 255);
|
|
688
|
-
newPixels[idx + 1] = Math.min(Math.max(g, 0), 255);
|
|
689
|
-
newPixels[idx + 2] = Math.min(Math.max(b, 0), 255);
|
|
690
|
-
newPixels[idx + 3] = pixels[idx + 3]; // Preserve alpha
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
ctx.putImageData(new ImageData(newPixels, width, height), 0, 0);
|
|
695
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { createWorker } from 'tesseract.js';
|
|
2
|
-
|
|
3
|
-
async function imageReader(imageURL: string): Promise<string> {
|
|
4
|
-
try {
|
|
5
|
-
|
|
6
|
-
if (imageURL === null) return '';
|
|
7
|
-
|
|
8
|
-
const worker = await createWorker();
|
|
9
|
-
const ret = await worker.recognize(imageURL);
|
|
10
|
-
await worker.terminate(ret.jobId);
|
|
11
|
-
|
|
12
|
-
const text = ret.data.text;
|
|
13
|
-
|
|
14
|
-
if (text.length <= 0) {
|
|
15
|
-
return `No text found on image`
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return text;
|
|
19
|
-
} catch (error: any) {
|
|
20
|
-
return `Error occurred while processing image: ${error.message}`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export { imageReader };
|