jsdecryptor 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Database/database.js +446 -0
- package/Database/migration.js +327 -0
- package/Database/pgSync.js +229 -0
- package/Database/settingsStore.js +305 -0
- package/config.js +32 -0
- package/dave.js +3063 -0
- package/davelib/antibadword.js +278 -0
- package/davelib/antilink.js +88 -0
- package/davelib/antilinkHelper.js +48 -0
- package/davelib/botConfig.js +71 -0
- package/davelib/connect4.js +111 -0
- package/davelib/converter.js +89 -0
- package/davelib/dicegame.js +114 -0
- package/davelib/exif.js +138 -0
- package/davelib/fakeContact.js +85 -0
- package/davelib/fontStyles.js +237 -0
- package/davelib/greetings.js +47 -0
- package/davelib/id.js +11 -0
- package/davelib/index.js +577 -0
- package/davelib/isAdmin.js +32 -0
- package/davelib/isBanned.js +12 -0
- package/davelib/isOwner.js +15 -0
- package/davelib/lightweight_store.js +169 -0
- package/davelib/messageConfig.js +15 -0
- package/davelib/messageHandler.js +87 -0
- package/davelib/myfunc.js +379 -0
- package/davelib/myfunc2.js +170 -0
- package/davelib/reactions.js +180 -0
- package/davelib/server.html +563 -0
- package/davelib/sticker.js +208 -0
- package/davelib/tempCleanup.js +53 -0
- package/davelib/tictactoe.js +104 -0
- package/davelib/uploadImage.js +100 -0
- package/davelib/uploader.js +110 -0
- package/davelib/welcome.js +100 -0
- package/davelib/wordchain.js +121 -0
- package/daveset.js +16 -0
- package/davexcore/ai/ai.js +100 -0
- package/davexcore/ai/aiGpt4.js +59 -0
- package/davexcore/ai/aimodels.js +284 -0
- package/davexcore/ai/aivideo.js +31 -0
- package/davexcore/ai/analyze.js +233 -0
- package/davexcore/ai/bard.js +101 -0
- package/davexcore/ai/bird.js +101 -0
- package/davexcore/ai/blackbox.js +30 -0
- package/davexcore/ai/character.js +80 -0
- package/davexcore/ai/copilot.js +58 -0
- package/davexcore/ai/dalle.js +39 -0
- package/davexcore/ai/davex.js +50 -0
- package/davexcore/ai/deepseek.js +96 -0
- package/davexcore/ai/grok.js +67 -0
- package/davexcore/ai/imagine.js +89 -0
- package/davexcore/ai/meta.js +82 -0
- package/davexcore/ai/mistral.js +101 -0
- package/davexcore/ai/perplexity.js +95 -0
- package/davexcore/ai/sora.js +44 -0
- package/davexcore/ai/speechwriter.js +46 -0
- package/davexcore/ai/vision.js +244 -0
- package/davexcore/ai/wormgpt.js +56 -0
- package/davexcore/anti/antiaudio.js +106 -0
- package/davexcore/anti/antibadword.js +313 -0
- package/davexcore/anti/antibug.js +156 -0
- package/davexcore/anti/anticall.js +219 -0
- package/davexcore/anti/antichart.js +280 -0
- package/davexcore/anti/antidelete.js +673 -0
- package/davexcore/anti/antideletestatus.js +535 -0
- package/davexcore/anti/antidemote.js +352 -0
- package/davexcore/anti/antidocument.js +105 -0
- package/davexcore/anti/antiedit.js +410 -0
- package/davexcore/anti/antifiles.js +109 -0
- package/davexcore/anti/antigroupmention.js +206 -0
- package/davexcore/anti/antiimage.js +105 -0
- package/davexcore/anti/antikick.js +125 -0
- package/davexcore/anti/antilink.js +237 -0
- package/davexcore/anti/antimention.js +143 -0
- package/davexcore/anti/antipromote.js +320 -0
- package/davexcore/anti/antisticker.js +105 -0
- package/davexcore/anti/antitag.js +191 -0
- package/davexcore/anti/antivideo.js +105 -0
- package/davexcore/anti/antiviewonce.js +396 -0
- package/davexcore/anti/groupanticall.js +262 -0
- package/davexcore/anti/mention.js +242 -0
- package/davexcore/automation/alwaysonline.js +226 -0
- package/davexcore/automation/autoReadReciepts.js +96 -0
- package/davexcore/automation/autoread.js +104 -0
- package/davexcore/automation/autorecording.js +197 -0
- package/davexcore/automation/autostatus.js +317 -0
- package/davexcore/automation/autotyping.js +197 -0
- package/davexcore/automation/chatbot.js +444 -0
- package/davexcore/automation/chatmanage.js +199 -0
- package/davexcore/automation/devReact.js +43 -0
- package/davexcore/automation/goodbye.js +181 -0
- package/davexcore/automation/greetings.js +154 -0
- package/davexcore/automation/welcome.js +187 -0
- package/davexcore/downloads/apk.js +157 -0
- package/davexcore/downloads/facebook.js +94 -0
- package/davexcore/downloads/gitclone.js +137 -0
- package/davexcore/downloads/igs.js +333 -0
- package/davexcore/downloads/instagram.js +133 -0
- package/davexcore/downloads/mediafire.js +144 -0
- package/davexcore/downloads/pinterest.js +38 -0
- package/davexcore/downloads/play.js +158 -0
- package/davexcore/downloads/saveStatus.js +3 -0
- package/davexcore/downloads/song.js +135 -0
- package/davexcore/downloads/spotify.js +133 -0
- package/davexcore/downloads/tiktok.js +167 -0
- package/davexcore/downloads/tiktokaudio.js +158 -0
- package/davexcore/downloads/video.js +188 -0
- package/davexcore/downloads/ytdl.js +252 -0
- package/davexcore/downloads/ytdocplay.js +130 -0
- package/davexcore/downloads/ytdocvideo.js +95 -0
- package/davexcore/downloads/yts.js +64 -0
- package/davexcore/games/connect4.js +267 -0
- package/davexcore/games/dice.js +286 -0
- package/davexcore/games/eightball.js +24 -0
- package/davexcore/games/hangman.js +60 -0
- package/davexcore/games/rps.js +25 -0
- package/davexcore/games/ship.js +36 -0
- package/davexcore/games/slot.js +21 -0
- package/davexcore/games/tictactoe.js +263 -0
- package/davexcore/games/trivia.js +46 -0
- package/davexcore/games/wordchain.js +242 -0
- package/davexcore/group/addmember.js +101 -0
- package/davexcore/group/ban.js +63 -0
- package/davexcore/group/blockUnblock.js +177 -0
- package/davexcore/group/clear.js +196 -0
- package/davexcore/group/creategroup.js +43 -0
- package/davexcore/group/demote.js +115 -0
- package/davexcore/group/disappear.js +67 -0
- package/davexcore/group/groupinfo.js +167 -0
- package/davexcore/group/groupmanage.js +133 -0
- package/davexcore/group/hidetag.js +108 -0
- package/davexcore/group/joinrequests.js +145 -0
- package/davexcore/group/kick.js +92 -0
- package/davexcore/group/kickall.js +63 -0
- package/davexcore/group/leave.js +38 -0
- package/davexcore/group/linkgroup.js +63 -0
- package/davexcore/group/mute.js +57 -0
- package/davexcore/group/online.js +117 -0
- package/davexcore/group/pmblocker.js +65 -0
- package/davexcore/group/promote.js +93 -0
- package/davexcore/group/resetlink.js +57 -0
- package/davexcore/group/staff.js +99 -0
- package/davexcore/group/tag.js +111 -0
- package/davexcore/group/tagadmins.js +88 -0
- package/davexcore/group/tagall.js +99 -0
- package/davexcore/group/tagnotadmin.js +92 -0
- package/davexcore/group/topmembers.js +202 -0
- package/davexcore/group/unban.js +64 -0
- package/davexcore/group/unmute.js +45 -0
- package/davexcore/group/warn.js +83 -0
- package/davexcore/group/warnings.js +26 -0
- package/davexcore/media/anime.js +130 -0
- package/davexcore/media/attp.js +127 -0
- package/davexcore/media/design.js +52 -0
- package/davexcore/media/emojimix.js +105 -0
- package/davexcore/media/getpp.js +108 -0
- package/davexcore/media/image.js +87 -0
- package/davexcore/media/imageedit.js +329 -0
- package/davexcore/media/img-blur.js +70 -0
- package/davexcore/media/meme.js +35 -0
- package/davexcore/media/pies.js +53 -0
- package/davexcore/media/quotesticker.js +153 -0
- package/davexcore/media/remini.js +126 -0
- package/davexcore/media/removebg.js +114 -0
- package/davexcore/media/setpp.js +65 -0
- package/davexcore/media/shazam.js +251 -0
- package/davexcore/media/simage.js +74 -0
- package/davexcore/media/sticker.js +134 -0
- package/davexcore/media/stickercrop.js +133 -0
- package/davexcore/media/stickertelegram.js +133 -0
- package/davexcore/media/take.js +76 -0
- package/davexcore/media/textmaker.js +106 -0
- package/davexcore/media/toAudio.js +180 -0
- package/davexcore/media/togif.js +33 -0
- package/davexcore/media/toimg.js +26 -0
- package/davexcore/media/tomp4.js +34 -0
- package/davexcore/media/tostatus.js +160 -0
- package/davexcore/media/tts.js +47 -0
- package/davexcore/media/viewonce.js +59 -0
- package/davexcore/media/vn.js +67 -0
- package/davexcore/media/vv2.js +3 -0
- package/davexcore/media/wallpaper.js +89 -0
- package/davexcore/media/wasted.js +57 -0
- package/davexcore/misc/compliment.js +93 -0
- package/davexcore/misc/dare.js +47 -0
- package/davexcore/misc/fact.js +14 -0
- package/davexcore/misc/flirt.js +26 -0
- package/davexcore/misc/goodnight.js +33 -0
- package/davexcore/misc/insult.js +281 -0
- package/davexcore/misc/joke.js +66 -0
- package/davexcore/misc/misc.js +200 -0
- package/davexcore/misc/quote.js +22 -0
- package/davexcore/misc/roseday.js +24 -0
- package/davexcore/misc/shayari.js +62 -0
- package/davexcore/misc/simp.js +47 -0
- package/davexcore/misc/stupid.js +51 -0
- package/davexcore/misc/truth.js +146 -0
- package/davexcore/owner/alive.js +67 -0
- package/davexcore/owner/bio.js +49 -0
- package/davexcore/owner/broadcast.js +74 -0
- package/davexcore/owner/chanel.js +79 -0
- package/davexcore/owner/channelid.js +50 -0
- package/davexcore/owner/clearsession.js +86 -0
- package/davexcore/owner/help.js +649 -0
- package/davexcore/owner/hijack.js +69 -0
- package/davexcore/owner/menuManage.js +173 -0
- package/davexcore/owner/menuSettings.js +1 -0
- package/davexcore/owner/owner.js +17 -0
- package/davexcore/owner/pair.js +160 -0
- package/davexcore/owner/pinchat.js +44 -0
- package/davexcore/owner/ping.js +65 -0
- package/davexcore/owner/profilepic.js +61 -0
- package/davexcore/owner/resetmenuimage.js +16 -0
- package/davexcore/owner/setGroupStatus.js +315 -0
- package/davexcore/owner/setbotconfig.js +306 -0
- package/davexcore/owner/setfont.js +79 -0
- package/davexcore/owner/setowner.js +144 -0
- package/davexcore/owner/setprefix.js +131 -0
- package/davexcore/owner/settings.js +98 -0
- package/davexcore/owner/startupwelcome.js +94 -0
- package/davexcore/owner/sudo.js +138 -0
- package/davexcore/owner/update.js +282 -0
- package/davexcore/tmp/1772020249097.jpg +0 -0
- package/davexcore/utility/bible.js +239 -0
- package/davexcore/utility/cleartmp.js +107 -0
- package/davexcore/utility/delete.js +182 -0
- package/davexcore/utility/encrypt.js +99 -0
- package/davexcore/utility/ethicalhacking.js +108 -0
- package/davexcore/utility/fetch.js +127 -0
- package/davexcore/utility/github.js +85 -0
- package/davexcore/utility/google.js +79 -0
- package/davexcore/utility/join.js +52 -0
- package/davexcore/utility/lastseen.js +67 -0
- package/davexcore/utility/location.js +106 -0
- package/davexcore/utility/lyrics.js +54 -0
- package/davexcore/utility/movie.js +66 -0
- package/davexcore/utility/news.js +37 -0
- package/davexcore/utility/sports.js +403 -0
- package/davexcore/utility/ss.js +63 -0
- package/davexcore/utility/tinyurl.js +83 -0
- package/davexcore/utility/translate.js +101 -0
- package/davexcore/utility/url.js +112 -0
- package/davexcore/utility/vcf.js +84 -0
- package/davexcore/utility/weather.js +162 -0
- package/index.js +994 -0
- package/package.json +64 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
const db = require('./database');
|
|
2
|
+
|
|
3
|
+
const ownerCache = new Map();
|
|
4
|
+
const groupCache = new Map();
|
|
5
|
+
const CACHE_TTL = 60000;
|
|
6
|
+
|
|
7
|
+
function getCacheKey(jid, key) {
|
|
8
|
+
return `${jid}:${key}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function isOwner(jid) {
|
|
12
|
+
return jid === 'owner' || !jid || jid === 'global';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function getOwnerToggle(key, defaultValue = false) {
|
|
16
|
+
const cacheKey = getCacheKey('owner', key);
|
|
17
|
+
const cached = ownerCache.get(cacheKey);
|
|
18
|
+
|
|
19
|
+
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
|
|
20
|
+
return cached.value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const value = db.getOwnerSetting(key, defaultValue);
|
|
24
|
+
ownerCache.set(cacheKey, { value, timestamp: Date.now() });
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function setOwnerToggle(key, value) {
|
|
29
|
+
try {
|
|
30
|
+
db.setOwnerSetting(key, value);
|
|
31
|
+
const verify = db.getOwnerSetting(key);
|
|
32
|
+
if (verify === null && value !== null) {
|
|
33
|
+
console.error(`[ DAVE-X ][DB] WRITE FAILED for owner setting: ${key}`);
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
} catch (err) {
|
|
37
|
+
console.error(`[ DAVE-X ][DB] Error writing owner setting ${key}:`, err.message);
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const cacheKey = getCacheKey('owner', key);
|
|
41
|
+
ownerCache.set(cacheKey, { value, timestamp: Date.now() });
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function getGroupToggle(groupJid, key, defaultValue = false) {
|
|
46
|
+
const cacheKey = getCacheKey(groupJid, key);
|
|
47
|
+
const cached = groupCache.get(cacheKey);
|
|
48
|
+
|
|
49
|
+
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
|
|
50
|
+
return cached.value;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const value = db.getGroupSetting(groupJid, key, defaultValue);
|
|
54
|
+
groupCache.set(cacheKey, { value, timestamp: Date.now() });
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function setGroupToggle(groupJid, key, value) {
|
|
59
|
+
try {
|
|
60
|
+
db.setGroupSetting(groupJid, key, value);
|
|
61
|
+
const verify = db.getGroupSetting(groupJid, key);
|
|
62
|
+
if (verify === null && value !== null) {
|
|
63
|
+
console.error(`[ DAVE-X ][DB] WRITE FAILED for group setting: ${groupJid}/${key}`);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
} catch (err) {
|
|
67
|
+
console.error(`[ DAVE-X ][DB] Error writing group setting ${groupJid}/${key}:`, err.message);
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const cacheKey = getCacheKey(groupJid, key);
|
|
71
|
+
groupCache.set(cacheKey, { value, timestamp: Date.now() });
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function deleteGroupToggle(groupJid, key) {
|
|
76
|
+
db.deleteGroupSetting(groupJid, key);
|
|
77
|
+
const cacheKey = getCacheKey(groupJid, key);
|
|
78
|
+
groupCache.delete(cacheKey);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function invalidateCache(jid, key = null) {
|
|
83
|
+
if (key) {
|
|
84
|
+
const cacheKey = getCacheKey(jid, key);
|
|
85
|
+
if (isOwner(jid)) {
|
|
86
|
+
ownerCache.delete(cacheKey);
|
|
87
|
+
} else {
|
|
88
|
+
groupCache.delete(cacheKey);
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
if (isOwner(jid)) {
|
|
92
|
+
ownerCache.clear();
|
|
93
|
+
} else {
|
|
94
|
+
for (const k of groupCache.keys()) {
|
|
95
|
+
if (k.startsWith(jid + ':')) {
|
|
96
|
+
groupCache.delete(k);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function clearAllCache() {
|
|
104
|
+
ownerCache.clear();
|
|
105
|
+
groupCache.clear();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const OWNER_TOGGLES = {
|
|
109
|
+
antidelete: { default: { enabled: true, mode: 'private' } },
|
|
110
|
+
autoviewstatus: { default: false },
|
|
111
|
+
anticall: { default: { enabled: false, mode: 'block', message: 'Calls not allowed!' } },
|
|
112
|
+
chatbotpm: { default: false },
|
|
113
|
+
autolike: { default: false },
|
|
114
|
+
autobio: { default: { enabled: false, text: '' } },
|
|
115
|
+
autoread: { default: false },
|
|
116
|
+
autotyping: { default: false },
|
|
117
|
+
autorecording: { default: false },
|
|
118
|
+
presence: { default: 'available' },
|
|
119
|
+
pmblocker: { default: { enabled: false, message: 'Direct messages are blocked!\nYou cannot DM this bot. Please contact the owner in group chats only.' } },
|
|
120
|
+
autostatus: { default: { enabled: true, reactOn: false, reactionEmoji: '🖤', randomReactions: true } },
|
|
121
|
+
status_antidelete: { default: { enabled: true, mode: 'private', captureMedia: true, maxStorageMB: 100, cleanupInterval: 30, autoCleanup: true, maxStatuses: 200, notifyOwner: true, cleanRetrieved: true, maxAgeHours: 12 } },
|
|
122
|
+
prefix: { default: '.' },
|
|
123
|
+
botconfig: { default: { botName: 'DAVE-X', menuImage: '', menuVideo: '', ownerName: 'Dave', welcomeMessage: 'Welcome to the group!', goodbyeMessage: 'Goodbye!', antideletePrivate: true } },
|
|
124
|
+
menuSettings: { default: {} },
|
|
125
|
+
antiedit: { default: { enabled: false, mode: 'private' } },
|
|
126
|
+
antiviewonce: { default: { gc: { enabled: false, mode: 'private' }, pm: { enabled: false, mode: 'private' } } },
|
|
127
|
+
autoReaction: { default: { enabled: false, customReactions: ['💞', '💘', '🥰', '💙', '💓', '💕'] } },
|
|
128
|
+
startupWelcome: { default: true }
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const GROUP_TOGGLES = {
|
|
132
|
+
antidelete: { default: { enabled: true, mode: 'private' } },
|
|
133
|
+
gcpresence: { default: 'available' },
|
|
134
|
+
events: { default: true },
|
|
135
|
+
antidemote: { default: { enabled: false, mode: 'revert' } },
|
|
136
|
+
antipromote: { default: { enabled: false, mode: 'revert' } },
|
|
137
|
+
antilink: { default: { enabled: false, action: 'delete' } },
|
|
138
|
+
antibadword: { default: { enabled: false, action: 'delete', words: [] } },
|
|
139
|
+
antiedit: { default: { enabled: false, mode: 'private' } },
|
|
140
|
+
antiviewonce: { default: { enabled: false, mode: 'private' } },
|
|
141
|
+
welcome: { default: { enabled: false, message: '' } },
|
|
142
|
+
goodbye: { default: { enabled: false, message: '' } },
|
|
143
|
+
chatbot: { default: false },
|
|
144
|
+
antitag: { default: { enabled: false, action: 'delete' } },
|
|
145
|
+
antimention: { default: { enabled: false, maxMentions: 5, action: 'delete' } },
|
|
146
|
+
antisticker: { default: { enabled: false } },
|
|
147
|
+
antiimage: { default: { enabled: false } },
|
|
148
|
+
antivideo: { default: { enabled: false } },
|
|
149
|
+
antiaudio: { default: { enabled: false } },
|
|
150
|
+
antidocument: { default: { enabled: false } },
|
|
151
|
+
antigroupmention: { default: { enabled: false } }
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
function getOwnerConfig(key) {
|
|
155
|
+
const toggleDef = OWNER_TOGGLES[key];
|
|
156
|
+
const defaultVal = toggleDef ? toggleDef.default : false;
|
|
157
|
+
return getOwnerToggle(key, defaultVal);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function setOwnerConfig(key, value) {
|
|
161
|
+
return setOwnerToggle(key, value);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function getGroupConfig(groupJid, key) {
|
|
165
|
+
const toggleDef = GROUP_TOGGLES[key];
|
|
166
|
+
const defaultVal = toggleDef ? toggleDef.default : false;
|
|
167
|
+
|
|
168
|
+
if ((key === 'antidelete' || key === 'antiedit')) {
|
|
169
|
+
const ownerConf = getOwnerConfig(key);
|
|
170
|
+
if (ownerConf?.globalDisabled) {
|
|
171
|
+
const groupVal = getGroupToggle(groupJid, key, defaultVal);
|
|
172
|
+
if (typeof groupVal === 'object') {
|
|
173
|
+
return { ...groupVal, enabled: false };
|
|
174
|
+
}
|
|
175
|
+
return { enabled: false, mode: 'private' };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return getGroupToggle(groupJid, key, defaultVal);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function setGroupConfig(groupJid, key, value) {
|
|
183
|
+
return setGroupToggle(groupJid, key, value);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function matchTypoTolerant(input, targets) {
|
|
187
|
+
const clean = input.toLowerCase().trim();
|
|
188
|
+
|
|
189
|
+
for (const target of targets) {
|
|
190
|
+
if (clean === target) return target;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
for (const target of targets) {
|
|
194
|
+
if (clean.includes(target) || target.includes(clean)) return target;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
for (const target of targets) {
|
|
198
|
+
const distance = levenshteinDistance(clean, target);
|
|
199
|
+
if (distance <= 2) return target;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function levenshteinDistance(a, b) {
|
|
206
|
+
const matrix = [];
|
|
207
|
+
for (let i = 0; i <= b.length; i++) {
|
|
208
|
+
matrix[i] = [i];
|
|
209
|
+
}
|
|
210
|
+
for (let j = 0; j <= a.length; j++) {
|
|
211
|
+
matrix[0][j] = j;
|
|
212
|
+
}
|
|
213
|
+
for (let i = 1; i <= b.length; i++) {
|
|
214
|
+
for (let j = 1; j <= a.length; j++) {
|
|
215
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
216
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
217
|
+
} else {
|
|
218
|
+
matrix[i][j] = Math.min(
|
|
219
|
+
matrix[i - 1][j - 1] + 1,
|
|
220
|
+
matrix[i][j - 1] + 1,
|
|
221
|
+
matrix[i - 1][j] + 1
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return matrix[b.length][a.length];
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function parseToggleCommand(input) {
|
|
230
|
+
const onVariants = ['on', 'enable', 'enabled', 'yes', 'true', '1', 'start', 'activate'];
|
|
231
|
+
const offVariants = ['off', 'disable', 'disabled', 'no', 'false', '0', 'stop', 'deactivate'];
|
|
232
|
+
|
|
233
|
+
const clean = input.toLowerCase().trim();
|
|
234
|
+
|
|
235
|
+
if (onVariants.includes(clean)) return 'on';
|
|
236
|
+
if (offVariants.includes(clean)) return 'off';
|
|
237
|
+
|
|
238
|
+
for (const t of offVariants) {
|
|
239
|
+
if (levenshteinDistance(clean, t) <= 1) return 'off';
|
|
240
|
+
}
|
|
241
|
+
for (const t of onVariants) {
|
|
242
|
+
if (levenshteinDistance(clean, t) <= 1) return 'on';
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function parseActionCommand(input) {
|
|
249
|
+
const actions = {
|
|
250
|
+
block: ['block', 'blck', 'blok', 'ban'],
|
|
251
|
+
allow: ['allow', 'alw', 'permit', 'accept'],
|
|
252
|
+
decline: ['decline', 'declin', 'reject', 'deny'],
|
|
253
|
+
delete: ['delete', 'delet', 'del', 'remove', 'rem'],
|
|
254
|
+
kick: ['kick', 'kik', 'remove', 'boot'],
|
|
255
|
+
warn: ['warn', 'warning', 'wrn']
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
const clean = input.toLowerCase().trim();
|
|
259
|
+
|
|
260
|
+
for (const [action, variants] of Object.entries(actions)) {
|
|
261
|
+
if (matchTypoTolerant(clean, variants)) return action;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function getAllGroupConfigs() {
|
|
268
|
+
const result = {};
|
|
269
|
+
try {
|
|
270
|
+
const allGroups = db.getAllGroupJids ? db.getAllGroupJids() : [];
|
|
271
|
+
for (const gid of allGroups) {
|
|
272
|
+
const settings = db.getAllGroupSettings(gid);
|
|
273
|
+
if (settings && Object.keys(settings).length > 0) {
|
|
274
|
+
result[gid] = settings;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
} catch {}
|
|
278
|
+
for (const k of groupCache.keys()) {
|
|
279
|
+
const [gid] = k.split(':');
|
|
280
|
+
if (gid && gid.endsWith('@g.us') && !result[gid]) {
|
|
281
|
+
result[gid] = {};
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
module.exports = {
|
|
288
|
+
getOwnerToggle,
|
|
289
|
+
setOwnerToggle,
|
|
290
|
+
getGroupToggle,
|
|
291
|
+
setGroupToggle,
|
|
292
|
+
deleteGroupToggle,
|
|
293
|
+
invalidateCache,
|
|
294
|
+
clearAllCache,
|
|
295
|
+
getOwnerConfig,
|
|
296
|
+
setOwnerConfig,
|
|
297
|
+
getGroupConfig,
|
|
298
|
+
setGroupConfig,
|
|
299
|
+
getAllGroupConfigs,
|
|
300
|
+
matchTypoTolerant,
|
|
301
|
+
parseToggleCommand,
|
|
302
|
+
parseActionCommand,
|
|
303
|
+
OWNER_TOGGLES,
|
|
304
|
+
GROUP_TOGGLES
|
|
305
|
+
};
|
package/config.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require('dotenv').config();
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
global.APIs = {
|
|
5
|
+
xteam: 'https://api.xteam.xyz',
|
|
6
|
+
dzx: 'https://api.dhamzxploit.my.id',
|
|
7
|
+
lol: 'https://api.lolhuman.xyz',
|
|
8
|
+
violetics: 'https://violetics.pw',
|
|
9
|
+
neoxr: 'https://api.neoxr.my.id',
|
|
10
|
+
zenzapis: 'https://zenzapis.xyz',
|
|
11
|
+
akuari: 'https://api.akuari.my.id',
|
|
12
|
+
akuari2: 'https://apimu.my.id',
|
|
13
|
+
nrtm: 'https://fg-nrtm.ddns.net',
|
|
14
|
+
bg: 'http://bochil.ddns.net',
|
|
15
|
+
fgmods: 'https://api-fgmods.ddns.net'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
global.APIKeys = {
|
|
19
|
+
'https://api.xteam.xyz': 'd90a9e986e18778b',
|
|
20
|
+
'https://api.lolhuman.xyz': '85faf717d0545d14074659ad',
|
|
21
|
+
'https://api.neoxr.my.id': 'yourkey',
|
|
22
|
+
'https://violetics.pw': 'beta',
|
|
23
|
+
'https://zenzapis.xyz': 'yourkey',
|
|
24
|
+
'https://api-fgmods.ddns.net': 'fg-dylux'
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
module.exports = {
|
|
28
|
+
SESSION_ID: global.SESSION_ID || process.env.SESSION_ID,
|
|
29
|
+
WARN_COUNT: 3,
|
|
30
|
+
APIs: global.APIs,
|
|
31
|
+
APIKeys: global.APIKeys
|
|
32
|
+
};
|