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.
Files changed (247) hide show
  1. package/Database/database.js +446 -0
  2. package/Database/migration.js +327 -0
  3. package/Database/pgSync.js +229 -0
  4. package/Database/settingsStore.js +305 -0
  5. package/config.js +32 -0
  6. package/dave.js +3063 -0
  7. package/davelib/antibadword.js +278 -0
  8. package/davelib/antilink.js +88 -0
  9. package/davelib/antilinkHelper.js +48 -0
  10. package/davelib/botConfig.js +71 -0
  11. package/davelib/connect4.js +111 -0
  12. package/davelib/converter.js +89 -0
  13. package/davelib/dicegame.js +114 -0
  14. package/davelib/exif.js +138 -0
  15. package/davelib/fakeContact.js +85 -0
  16. package/davelib/fontStyles.js +237 -0
  17. package/davelib/greetings.js +47 -0
  18. package/davelib/id.js +11 -0
  19. package/davelib/index.js +577 -0
  20. package/davelib/isAdmin.js +32 -0
  21. package/davelib/isBanned.js +12 -0
  22. package/davelib/isOwner.js +15 -0
  23. package/davelib/lightweight_store.js +169 -0
  24. package/davelib/messageConfig.js +15 -0
  25. package/davelib/messageHandler.js +87 -0
  26. package/davelib/myfunc.js +379 -0
  27. package/davelib/myfunc2.js +170 -0
  28. package/davelib/reactions.js +180 -0
  29. package/davelib/server.html +563 -0
  30. package/davelib/sticker.js +208 -0
  31. package/davelib/tempCleanup.js +53 -0
  32. package/davelib/tictactoe.js +104 -0
  33. package/davelib/uploadImage.js +100 -0
  34. package/davelib/uploader.js +110 -0
  35. package/davelib/welcome.js +100 -0
  36. package/davelib/wordchain.js +121 -0
  37. package/daveset.js +16 -0
  38. package/davexcore/ai/ai.js +100 -0
  39. package/davexcore/ai/aiGpt4.js +59 -0
  40. package/davexcore/ai/aimodels.js +284 -0
  41. package/davexcore/ai/aivideo.js +31 -0
  42. package/davexcore/ai/analyze.js +233 -0
  43. package/davexcore/ai/bard.js +101 -0
  44. package/davexcore/ai/bird.js +101 -0
  45. package/davexcore/ai/blackbox.js +30 -0
  46. package/davexcore/ai/character.js +80 -0
  47. package/davexcore/ai/copilot.js +58 -0
  48. package/davexcore/ai/dalle.js +39 -0
  49. package/davexcore/ai/davex.js +50 -0
  50. package/davexcore/ai/deepseek.js +96 -0
  51. package/davexcore/ai/grok.js +67 -0
  52. package/davexcore/ai/imagine.js +89 -0
  53. package/davexcore/ai/meta.js +82 -0
  54. package/davexcore/ai/mistral.js +101 -0
  55. package/davexcore/ai/perplexity.js +95 -0
  56. package/davexcore/ai/sora.js +44 -0
  57. package/davexcore/ai/speechwriter.js +46 -0
  58. package/davexcore/ai/vision.js +244 -0
  59. package/davexcore/ai/wormgpt.js +56 -0
  60. package/davexcore/anti/antiaudio.js +106 -0
  61. package/davexcore/anti/antibadword.js +313 -0
  62. package/davexcore/anti/antibug.js +156 -0
  63. package/davexcore/anti/anticall.js +219 -0
  64. package/davexcore/anti/antichart.js +280 -0
  65. package/davexcore/anti/antidelete.js +673 -0
  66. package/davexcore/anti/antideletestatus.js +535 -0
  67. package/davexcore/anti/antidemote.js +352 -0
  68. package/davexcore/anti/antidocument.js +105 -0
  69. package/davexcore/anti/antiedit.js +410 -0
  70. package/davexcore/anti/antifiles.js +109 -0
  71. package/davexcore/anti/antigroupmention.js +206 -0
  72. package/davexcore/anti/antiimage.js +105 -0
  73. package/davexcore/anti/antikick.js +125 -0
  74. package/davexcore/anti/antilink.js +237 -0
  75. package/davexcore/anti/antimention.js +143 -0
  76. package/davexcore/anti/antipromote.js +320 -0
  77. package/davexcore/anti/antisticker.js +105 -0
  78. package/davexcore/anti/antitag.js +191 -0
  79. package/davexcore/anti/antivideo.js +105 -0
  80. package/davexcore/anti/antiviewonce.js +396 -0
  81. package/davexcore/anti/groupanticall.js +262 -0
  82. package/davexcore/anti/mention.js +242 -0
  83. package/davexcore/automation/alwaysonline.js +226 -0
  84. package/davexcore/automation/autoReadReciepts.js +96 -0
  85. package/davexcore/automation/autoread.js +104 -0
  86. package/davexcore/automation/autorecording.js +197 -0
  87. package/davexcore/automation/autostatus.js +317 -0
  88. package/davexcore/automation/autotyping.js +197 -0
  89. package/davexcore/automation/chatbot.js +444 -0
  90. package/davexcore/automation/chatmanage.js +199 -0
  91. package/davexcore/automation/devReact.js +43 -0
  92. package/davexcore/automation/goodbye.js +181 -0
  93. package/davexcore/automation/greetings.js +154 -0
  94. package/davexcore/automation/welcome.js +187 -0
  95. package/davexcore/downloads/apk.js +157 -0
  96. package/davexcore/downloads/facebook.js +94 -0
  97. package/davexcore/downloads/gitclone.js +137 -0
  98. package/davexcore/downloads/igs.js +333 -0
  99. package/davexcore/downloads/instagram.js +133 -0
  100. package/davexcore/downloads/mediafire.js +144 -0
  101. package/davexcore/downloads/pinterest.js +38 -0
  102. package/davexcore/downloads/play.js +158 -0
  103. package/davexcore/downloads/saveStatus.js +3 -0
  104. package/davexcore/downloads/song.js +135 -0
  105. package/davexcore/downloads/spotify.js +133 -0
  106. package/davexcore/downloads/tiktok.js +167 -0
  107. package/davexcore/downloads/tiktokaudio.js +158 -0
  108. package/davexcore/downloads/video.js +188 -0
  109. package/davexcore/downloads/ytdl.js +252 -0
  110. package/davexcore/downloads/ytdocplay.js +130 -0
  111. package/davexcore/downloads/ytdocvideo.js +95 -0
  112. package/davexcore/downloads/yts.js +64 -0
  113. package/davexcore/games/connect4.js +267 -0
  114. package/davexcore/games/dice.js +286 -0
  115. package/davexcore/games/eightball.js +24 -0
  116. package/davexcore/games/hangman.js +60 -0
  117. package/davexcore/games/rps.js +25 -0
  118. package/davexcore/games/ship.js +36 -0
  119. package/davexcore/games/slot.js +21 -0
  120. package/davexcore/games/tictactoe.js +263 -0
  121. package/davexcore/games/trivia.js +46 -0
  122. package/davexcore/games/wordchain.js +242 -0
  123. package/davexcore/group/addmember.js +101 -0
  124. package/davexcore/group/ban.js +63 -0
  125. package/davexcore/group/blockUnblock.js +177 -0
  126. package/davexcore/group/clear.js +196 -0
  127. package/davexcore/group/creategroup.js +43 -0
  128. package/davexcore/group/demote.js +115 -0
  129. package/davexcore/group/disappear.js +67 -0
  130. package/davexcore/group/groupinfo.js +167 -0
  131. package/davexcore/group/groupmanage.js +133 -0
  132. package/davexcore/group/hidetag.js +108 -0
  133. package/davexcore/group/joinrequests.js +145 -0
  134. package/davexcore/group/kick.js +92 -0
  135. package/davexcore/group/kickall.js +63 -0
  136. package/davexcore/group/leave.js +38 -0
  137. package/davexcore/group/linkgroup.js +63 -0
  138. package/davexcore/group/mute.js +57 -0
  139. package/davexcore/group/online.js +117 -0
  140. package/davexcore/group/pmblocker.js +65 -0
  141. package/davexcore/group/promote.js +93 -0
  142. package/davexcore/group/resetlink.js +57 -0
  143. package/davexcore/group/staff.js +99 -0
  144. package/davexcore/group/tag.js +111 -0
  145. package/davexcore/group/tagadmins.js +88 -0
  146. package/davexcore/group/tagall.js +99 -0
  147. package/davexcore/group/tagnotadmin.js +92 -0
  148. package/davexcore/group/topmembers.js +202 -0
  149. package/davexcore/group/unban.js +64 -0
  150. package/davexcore/group/unmute.js +45 -0
  151. package/davexcore/group/warn.js +83 -0
  152. package/davexcore/group/warnings.js +26 -0
  153. package/davexcore/media/anime.js +130 -0
  154. package/davexcore/media/attp.js +127 -0
  155. package/davexcore/media/design.js +52 -0
  156. package/davexcore/media/emojimix.js +105 -0
  157. package/davexcore/media/getpp.js +108 -0
  158. package/davexcore/media/image.js +87 -0
  159. package/davexcore/media/imageedit.js +329 -0
  160. package/davexcore/media/img-blur.js +70 -0
  161. package/davexcore/media/meme.js +35 -0
  162. package/davexcore/media/pies.js +53 -0
  163. package/davexcore/media/quotesticker.js +153 -0
  164. package/davexcore/media/remini.js +126 -0
  165. package/davexcore/media/removebg.js +114 -0
  166. package/davexcore/media/setpp.js +65 -0
  167. package/davexcore/media/shazam.js +251 -0
  168. package/davexcore/media/simage.js +74 -0
  169. package/davexcore/media/sticker.js +134 -0
  170. package/davexcore/media/stickercrop.js +133 -0
  171. package/davexcore/media/stickertelegram.js +133 -0
  172. package/davexcore/media/take.js +76 -0
  173. package/davexcore/media/textmaker.js +106 -0
  174. package/davexcore/media/toAudio.js +180 -0
  175. package/davexcore/media/togif.js +33 -0
  176. package/davexcore/media/toimg.js +26 -0
  177. package/davexcore/media/tomp4.js +34 -0
  178. package/davexcore/media/tostatus.js +160 -0
  179. package/davexcore/media/tts.js +47 -0
  180. package/davexcore/media/viewonce.js +59 -0
  181. package/davexcore/media/vn.js +67 -0
  182. package/davexcore/media/vv2.js +3 -0
  183. package/davexcore/media/wallpaper.js +89 -0
  184. package/davexcore/media/wasted.js +57 -0
  185. package/davexcore/misc/compliment.js +93 -0
  186. package/davexcore/misc/dare.js +47 -0
  187. package/davexcore/misc/fact.js +14 -0
  188. package/davexcore/misc/flirt.js +26 -0
  189. package/davexcore/misc/goodnight.js +33 -0
  190. package/davexcore/misc/insult.js +281 -0
  191. package/davexcore/misc/joke.js +66 -0
  192. package/davexcore/misc/misc.js +200 -0
  193. package/davexcore/misc/quote.js +22 -0
  194. package/davexcore/misc/roseday.js +24 -0
  195. package/davexcore/misc/shayari.js +62 -0
  196. package/davexcore/misc/simp.js +47 -0
  197. package/davexcore/misc/stupid.js +51 -0
  198. package/davexcore/misc/truth.js +146 -0
  199. package/davexcore/owner/alive.js +67 -0
  200. package/davexcore/owner/bio.js +49 -0
  201. package/davexcore/owner/broadcast.js +74 -0
  202. package/davexcore/owner/chanel.js +79 -0
  203. package/davexcore/owner/channelid.js +50 -0
  204. package/davexcore/owner/clearsession.js +86 -0
  205. package/davexcore/owner/help.js +649 -0
  206. package/davexcore/owner/hijack.js +69 -0
  207. package/davexcore/owner/menuManage.js +173 -0
  208. package/davexcore/owner/menuSettings.js +1 -0
  209. package/davexcore/owner/owner.js +17 -0
  210. package/davexcore/owner/pair.js +160 -0
  211. package/davexcore/owner/pinchat.js +44 -0
  212. package/davexcore/owner/ping.js +65 -0
  213. package/davexcore/owner/profilepic.js +61 -0
  214. package/davexcore/owner/resetmenuimage.js +16 -0
  215. package/davexcore/owner/setGroupStatus.js +315 -0
  216. package/davexcore/owner/setbotconfig.js +306 -0
  217. package/davexcore/owner/setfont.js +79 -0
  218. package/davexcore/owner/setowner.js +144 -0
  219. package/davexcore/owner/setprefix.js +131 -0
  220. package/davexcore/owner/settings.js +98 -0
  221. package/davexcore/owner/startupwelcome.js +94 -0
  222. package/davexcore/owner/sudo.js +138 -0
  223. package/davexcore/owner/update.js +282 -0
  224. package/davexcore/tmp/1772020249097.jpg +0 -0
  225. package/davexcore/utility/bible.js +239 -0
  226. package/davexcore/utility/cleartmp.js +107 -0
  227. package/davexcore/utility/delete.js +182 -0
  228. package/davexcore/utility/encrypt.js +99 -0
  229. package/davexcore/utility/ethicalhacking.js +108 -0
  230. package/davexcore/utility/fetch.js +127 -0
  231. package/davexcore/utility/github.js +85 -0
  232. package/davexcore/utility/google.js +79 -0
  233. package/davexcore/utility/join.js +52 -0
  234. package/davexcore/utility/lastseen.js +67 -0
  235. package/davexcore/utility/location.js +106 -0
  236. package/davexcore/utility/lyrics.js +54 -0
  237. package/davexcore/utility/movie.js +66 -0
  238. package/davexcore/utility/news.js +37 -0
  239. package/davexcore/utility/sports.js +403 -0
  240. package/davexcore/utility/ss.js +63 -0
  241. package/davexcore/utility/tinyurl.js +83 -0
  242. package/davexcore/utility/translate.js +101 -0
  243. package/davexcore/utility/url.js +112 -0
  244. package/davexcore/utility/vcf.js +84 -0
  245. package/davexcore/utility/weather.js +162 -0
  246. package/index.js +994 -0
  247. package/package.json +64 -0
@@ -0,0 +1,649 @@
1
+ const settings = require('../../daveset');
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+ const os = require('os');
5
+ const { getMenuStyle, getMenuSettings, MENU_STYLES } = require('./menuManage');
6
+ const { generateWAMessageFromContent } = require('@whiskeysockets/baileys');
7
+ const { getPrefix, handleSetPrefixCommand } = require('./setprefix');
8
+ const { getOwnerName, handleSetOwnerCommand } = require('./setowner');
9
+ const { getGreetingMessage, formatTime, formatDate, getTimeGreeting } = require('../../davelib/greetings');
10
+
11
+ const { createFakeContact, getBotName } = require('../../davelib/fakeContact');
12
+ const { getMenuImage, getMenuVideo } = require('../../davelib/botConfig');
13
+
14
+ function formatUptime(seconds) {
15
+ const days = Math.floor(seconds / (24 * 60 * 60));
16
+ seconds = seconds % (24 * 60 * 60);
17
+ const hours = Math.floor(seconds / (60 * 60));
18
+ seconds = seconds % (60 * 60);
19
+ const minutes = Math.floor(seconds / 60);
20
+ seconds = Math.floor(seconds % 60);
21
+
22
+ let time = '';
23
+ if (days > 0) time += `${days}d `;
24
+ if (hours > 0) time += `${hours}h `;
25
+ if (minutes > 0) time += `${minutes}m `;
26
+ if (seconds > 0 || time === '') time += `${seconds}s`;
27
+
28
+ return time.trim();
29
+ }
30
+
31
+ const detectPlatform = () => {
32
+ if (process.env.DYNO) return "Heroku";
33
+ if (process.env.RENDER) return "Render";
34
+ if (process.env.PREFIX && process.env.PREFIX.includes("termux")) return "Termux";
35
+ if (process.env.PORTS && process.env.CYPHERX_HOST_ID) return "CypherX";
36
+ if (process.env.P_SERVER_UUID) return "Panel";
37
+ if (process.env.LXC) return "Linux Container";
38
+
39
+ switch (os.platform()) {
40
+ case "win32": return "Windows";
41
+ case "darwin": return "macOS";
42
+ case "linux": return "Linux";
43
+ default: return "Unknown";
44
+ }
45
+ };
46
+
47
+ const progressBar = (used, total, size = 10) => {
48
+ let percentage = Math.round((used / total) * size);
49
+ let bar = '█'.repeat(percentage) + '░'.repeat(size - percentage);
50
+ return `${bar} ${Math.round((used / total) * 100)}%`;
51
+ };
52
+
53
+ const generateMenu = (pushname, currentMode, hostName, ping, uptimeFormatted, prefix = '.') => {
54
+ const memoryUsage = process.memoryUsage();
55
+ const totalMemory = os.totalmem();
56
+ const systemUsedMemory = totalMemory - os.freemem();
57
+ const prefix2 = getPrefix();
58
+ let newOwner = getOwnerName();
59
+
60
+ const botName = getBotName();
61
+
62
+ const menuSettings = getMenuSettings();
63
+
64
+ // Get personalized greeting for the user
65
+ const greeting = getGreetingMessage(pushname);
66
+
67
+ let menu = '';
68
+
69
+ // Add greeting at the top with extra space
70
+ menu += `${greeting}\n`;
71
+ menu += `━━━━━━━━━━━━━━\n\n`;
72
+
73
+ // Bot info header
74
+ menu += `┏▣ ◈ *${botName}* ◈\n`;
75
+ menu += `┃ *Owner* : ${newOwner}\n`;
76
+ menu += `┃ *Prefix* : [ ${prefix2} ]\n`;
77
+ menu += `┃ *Host* : ${hostName}\n`;
78
+ menu += `┃ *Mode* : ${currentMode}\n`;
79
+ menu += `┃ *Version* : v${settings.version}\n`;
80
+ menu += `┃ *Speed* : ${ping} ms\n`;
81
+ menu += `┃ *Uptime* : ${uptimeFormatted}\n`;
82
+ menu += `┃ *RAM* : ${progressBar(systemUsedMemory, totalMemory)}\n`;
83
+ menu += `┗▣ \n\n`;
84
+
85
+ // ==================== OWNER COMMANDS ====================
86
+ menu += `┏▣ ◈ *OWNER* ◈\n`;
87
+ menu += `│› ${prefix2}setowner\n`;
88
+ menu += `│› ${prefix2}setprefix\n`;
89
+ menu += `│› ${prefix2}mode\n`;
90
+ menu += `│› ${prefix2}restart\n`;
91
+ menu += `│› ${prefix2}ban\n`;
92
+ menu += `│› ${prefix2}unban\n`;
93
+ menu += `│› ${prefix2}sudo\n`;
94
+ menu += `│› ${prefix2}addsudo\n`;
95
+ menu += `│› ${prefix2}delsudo\n`;
96
+ menu += `│› ${prefix2}listsudo\n`;
97
+ menu += `│› ${prefix2}clearsession\n`;
98
+ menu += `│› ${prefix2}cleartmp\n`;
99
+ menu += `│› ${prefix2}broadcast\n`;
100
+ menu += `│› ${prefix2}creategroup\n`;
101
+ menu += `│› ${prefix2}tostatus\n`;
102
+ menu += `│› ${prefix2}autostatus\n`;
103
+ menu += `│› ${prefix2}pmblocker\n`;
104
+ menu += `│› ${prefix2}areact\n`;
105
+ menu += `│› ${prefix2}update\n`;
106
+ menu += `│› ${prefix2}vv2\n`;
107
+ menu += `│› ${prefix2}anticall\n`;
108
+ menu += `│› ${prefix2}setcallmsg\n`;
109
+ menu += `│› ${prefix2}setbotconfig\n`;
110
+ menu += `│› ${prefix2}setbotname\n`;
111
+ menu += `│› ${prefix2}setmenuimage\n`;
112
+ menu += `│› ${prefix2}resetmenuimage\n`;
113
+ menu += `│› ${prefix2}hijack\n`;
114
+ menu += `│› ${prefix2}pair\n`;
115
+ menu += `│› ${prefix2}autotyping\n`;
116
+ menu += `│› ${prefix2}autoread\n`;
117
+ menu += `│› ${prefix2}autorecording\n`;
118
+ menu += `│› ${prefix2}antidelete\n`;
119
+ menu += `│› ${prefix2}antiedit\n`;
120
+ menu += `│› ${prefix2}antideletestatus\n`;
121
+ menu += `│› ${prefix2}startupwelcome\n`;
122
+ menu += `│› ${prefix2}menustyle\n`;
123
+ menu += `│› ${prefix2}alwaysonline\n`;
124
+ menu += `│› ${prefix2}alwaysoffline\n`;
125
+ menu += `│› ${prefix2}readreceipts\n`;
126
+ menu += `│› ${prefix2}lastseen\n`;
127
+ menu += `┗▣ \n\n`;
128
+
129
+ // ==================== GROUP COMMANDS ====================
130
+ menu += `┏▣ ◈ *GROUP* ◈\n`;
131
+ menu += `│› ${prefix2}promote\n`;
132
+ menu += `│› ${prefix2}demote\n`;
133
+ menu += `│› ${prefix2}kick\n`;
134
+ menu += `│› ${prefix2}warn\n`;
135
+ menu += `│› ${prefix2}mute\n`;
136
+ menu += `│› ${prefix2}unmute\n`;
137
+ menu += `│› ${prefix2}tagall\n`;
138
+ menu += `│› ${prefix2}tagnotadmin\n`;
139
+ menu += `│› ${prefix2}hidetag\n`;
140
+ menu += `│› ${prefix2}linkgroup\n`;
141
+ menu += `│› ${prefix2}reset\n`;
142
+ menu += `│› ${prefix2}leave\n`;
143
+ menu += `│› ${prefix2}add\n`;
144
+ menu += `│› ${prefix2}groupinfo\n`;
145
+ menu += `│› ${prefix2}admins\n`;
146
+ menu += `│› ${prefix2}open\n`;
147
+ menu += `│› ${prefix2}close\n`;
148
+ menu += `│› ${prefix2}settings\n`;
149
+ menu += `│› ${prefix2}topmembers\n`;
150
+ menu += `│› ${prefix2}setgdesc\n`;
151
+ menu += `│› ${prefix2}setgname\n`;
152
+ menu += `│› ${prefix2}setgpp\n`;
153
+ menu += `│› ${prefix2}mention\n`;
154
+ menu += `│› ${prefix2}setmention\n`;
155
+ menu += `│› ${prefix2}welcome\n`;
156
+ menu += `│› ${prefix2}goodbye\n`;
157
+ menu += `│› ${prefix2}chatbot\n`;
158
+ menu += `│› ${prefix2}accept\n`;
159
+ menu += `│› ${prefix2}reject\n`;
160
+ menu += `│› ${prefix2}acceptall\n`;
161
+ menu += `│› ${prefix2}rejectall\n`;
162
+ menu += `│› ${prefix2}listrequests\n`;
163
+ menu += `│› ${prefix2}tagadmins\n`;
164
+ menu += `│› ${prefix2}online\n`;
165
+ menu += `│› ${prefix2}pin\n`;
166
+ menu += `│› ${prefix2}unpin\n`;
167
+ menu += `│› ${prefix2}archive\n`;
168
+ menu += `│› ${prefix2}unarchive\n`;
169
+ menu += `│› ${prefix2}disappearing\n`;
170
+ menu += `│› ${prefix2}tosgroup\n`;
171
+ menu += `│› ${prefix2}groupanticall\n`;
172
+ menu += `│› ${prefix2}kickall\n`;
173
+ menu += `│› ${prefix2}staff\n`;
174
+ menu += `│› ${prefix2}warnings\n`;
175
+ menu += `│› ${prefix2}tag\n`;
176
+ menu += `│› ${prefix2}join\n`;
177
+ menu += `┗▣ \n\n`;
178
+
179
+ // ==================== ANTI-FEATURES COMMANDS ====================
180
+ menu += `┏▣ ◈ *ANTI-FEATURES* ◈\n`;
181
+ menu += `│› ${prefix2}antilink\n`;
182
+ menu += `│› ${prefix2}antitag\n`;
183
+ menu += `│› ${prefix2}antibadword\n`;
184
+ menu += `│› ${prefix2}antichart\n`;
185
+ menu += `│› ${prefix2}antimention\n`;
186
+ menu += `│› ${prefix2}antigroupmention\n`;
187
+ menu += `│› ${prefix2}antikick\n`;
188
+ menu += `│› ${prefix2}antipromote\n`;
189
+ menu += `│› ${prefix2}antidemote\n`;
190
+ menu += `│› ${prefix2}antibug\n`;
191
+ menu += `│› ${prefix2}antisticker\n`;
192
+ menu += `│› ${prefix2}antiimage\n`;
193
+ menu += `│› ${prefix2}antiaudio\n`;
194
+ menu += `│› ${prefix2}antivideo\n`;
195
+ menu += `│› ${prefix2}antidocument\n`;
196
+ menu += `│› ${prefix2}antifiles\n`;
197
+ menu += `┗▣ \n\n`;
198
+
199
+ // ==================== AI COMMANDS ====================
200
+ menu += `┏▣ ◈ *AI* ◈\n`;
201
+ menu += `│› ${prefix2}ai\n`;
202
+ menu += `│› ${prefix2}gpt\n`;
203
+ menu += `│› ${prefix2}gpt4o\n`;
204
+ menu += `│› ${prefix2}gemini\n`;
205
+ menu += `│› ${prefix2}deepseek\n`;
206
+ menu += `│› ${prefix2}llama\n`;
207
+ menu += `│› ${prefix2}mixtral\n`;
208
+ menu += `│› ${prefix2}mistral\n`;
209
+ menu += `│› ${prefix2}claude\n`;
210
+ menu += `│› ${prefix2}qwen\n`;
211
+ menu += `│› ${prefix2}gemma\n`;
212
+ menu += `│› ${prefix2}copilot\n`;
213
+ menu += `│› ${prefix2}wormgpt\n`;
214
+ menu += `│› ${prefix2}davex\n`;
215
+ menu += `│› ${prefix2}blackbox\n`;
216
+ menu += `│› ${prefix2}bard\n`;
217
+ menu += `│› ${prefix2}perplexity\n`;
218
+ menu += `│› ${prefix2}grok\n`;
219
+ menu += `│› ${prefix2}bird\n`;
220
+ menu += `│› ${prefix2}speechwriter\n`;
221
+ menu += `│› ${prefix2}meta\n`;
222
+ menu += `│› ${prefix2}vision\n`;
223
+ menu += `│› ${prefix2}imagine\n`;
224
+ menu += `│› ${prefix2}flux\n`;
225
+ menu += `│› ${prefix2}dalle2\n`;
226
+ menu += `│› ${prefix2}aivideo\n`;
227
+ menu += `│› ${prefix2}analyze\n`;
228
+ menu += `│› ${prefix2}night\n`;
229
+ menu += `│› ${prefix2}pretty\n`;
230
+ menu += `│› ${prefix2}ugly\n`;
231
+ menu += `┗▣ \n\n`;
232
+
233
+ // ==================== STICKER COMMANDS ====================
234
+ menu += `┏▣ ◈ *STICKER* ◈\n`;
235
+ menu += `│› ${prefix2}sticker\n`;
236
+ menu += `│› ${prefix2}tgsticker\n`;
237
+ menu += `│› ${prefix2}take\n`;
238
+ menu += `│› ${prefix2}emojimix\n`;
239
+ menu += `│› ${prefix2}stickertelegram\n`;
240
+ menu += `│› ${prefix2}simage\n`;
241
+ menu += `│› ${prefix2}attp\n`;
242
+ menu += `│› ${prefix2}stickercrop\n`;
243
+ menu += `│› ${prefix2}qc\n`;
244
+ menu += `┗▣ \n\n`;
245
+
246
+ // ==================== TOOLS COMMANDS ====================
247
+ menu += `┏▣ ◈ *TOOLS* ◈\n`;
248
+ menu += `│› ${prefix2}ping\n`;
249
+ menu += `│› ${prefix2}runtime\n`;
250
+ menu += `│› ${prefix2}trt\n`;
251
+ menu += `│› ${prefix2}url\n`;
252
+ menu += `│› ${prefix2}idch\n`;
253
+ menu += `│› ${prefix2}tourl\n`;
254
+ menu += `│› ${prefix2}ssweb\n`;
255
+ menu += `│› ${prefix2}shazam\n`;
256
+ menu += `│› ${prefix2}tomp3\n`;
257
+ menu += `│› ${prefix2}weather\n`;
258
+ menu += `│› ${prefix2}getpp\n`;
259
+ menu += `│› ${prefix2}news\n`;
260
+ menu += `│› ${prefix2}movie\n`;
261
+ menu += `│› ${prefix2}quote\n`;
262
+ menu += `│› ${prefix2}fact\n`;
263
+ menu += `│› ${prefix2}joke\n`;
264
+ menu += `│› ${prefix2}encrypt\n`;
265
+ menu += `│› ${prefix2}mediafire\n`;
266
+ menu += `│› ${prefix2}gitclone\n`;
267
+ menu += `│› ${prefix2}yts\n`;
268
+ menu += `│› ${prefix2}fetch\n`;
269
+ menu += `│› ${prefix2}lyrics\n`;
270
+ menu += `│› ${prefix2}apk\n`;
271
+ menu += `│› ${prefix2}removbg\n`;
272
+ menu += `│› ${prefix2}remini\n`;
273
+ menu += `│› ${prefix2}sora\n`;
274
+ menu += `│› ${prefix2}vcf\n`;
275
+ menu += `│› ${prefix2}save\n`;
276
+ menu += `│› ${prefix2}setgstatus\n`;
277
+ menu += `│› ${prefix2}bible\n`;
278
+ menu += `│› ${prefix2}biblelist\n`;
279
+ menu += `│› ${prefix2}quran\n`;
280
+ menu += `│› ${prefix2}vn\n`;
281
+ menu += `│› ${prefix2}viewonce\n`;
282
+ menu += `│› ${prefix2}shorten\n`;
283
+ menu += `│› ${prefix2}channelid\n`;
284
+ menu += `│› resetprefix (no prefix)\n`;
285
+ menu += `│› getprefix (no prefix)\n`;
286
+ menu += `┗▣ \n\n`;
287
+
288
+ // ==================== MEDIA DOWNLOAD ====================
289
+ menu += `┏▣ ◈ *MEDIA* ◈\n`;
290
+ menu += `│› ${prefix2}ytmp4\n`;
291
+ menu += `│› ${prefix2}video\n`;
292
+ menu += `│› ${prefix2}song\n`;
293
+ menu += `│› ${prefix2}tiktok\n`;
294
+ menu += `│› ${prefix2}tiktokaudio\n`;
295
+ menu += `│› ${prefix2}instagram\n`;
296
+ menu += `│› ${prefix2}facebook\n`;
297
+ menu += `│› ${prefix2}play\n`;
298
+ menu += `│› ${prefix2}spotify\n`;
299
+ menu += `│› ${prefix2}ytplay\n`;
300
+ menu += `│› ${prefix2}ytsong\n`;
301
+ menu += `│› ${prefix2}igs\n`;
302
+ menu += `│› ${prefix2}mediafire\n`;
303
+ menu += `┗▣ \n\n`;
304
+
305
+ // ==================== CONVERSION ====================
306
+ menu += `┏▣ ◈ *CONVERT* ◈\n`;
307
+ menu += `│› ${prefix2}tomp4\n`;
308
+ menu += `│› ${prefix2}togif\n`;
309
+ menu += `│› ${prefix2}toimg\n`;
310
+ menu += `│› ${prefix2}toaudio\n`;
311
+ menu += `│› ${prefix2}tts\n`;
312
+ menu += `┗▣ \n\n`;
313
+
314
+ // ==================== SEARCH ====================
315
+ menu += `┏▣ ◈ *SEARCH* ◈\n`;
316
+ menu += `│› ${prefix2}google\n`;
317
+ menu += `│› ${prefix2}pinterest\n`;
318
+ menu += `│› ${prefix2}wallpaper\n`;
319
+ menu += `│› ${prefix2}image\n`;
320
+ menu += `┗▣ \n\n`;
321
+
322
+ // ==================== GREETINGS ====================
323
+ menu += `┏▣ ◈ *GREETINGS* ◈\n`;
324
+ menu += `│› ${prefix2}goodmorning\n`;
325
+ menu += `│› ${prefix2}goodafternoon\n`;
326
+ menu += `│› ${prefix2}goodevening\n`;
327
+ menu += `│› ${prefix2}goodnight\n`;
328
+ menu += `┗▣ \n\n`;
329
+
330
+ // ==================== GAMES ====================
331
+ menu += `┏▣ ◈ *GAMES* ◈\n`;
332
+ menu += `│› ${prefix2}tictactoe\n`;
333
+ menu += `│› ${prefix2}tttai\n`;
334
+ menu += `│› ${prefix2}wcg\n`;
335
+ menu += `│› ${prefix2}wcgai\n`;
336
+ menu += `│› ${prefix2}dice\n`;
337
+ menu += `│› ${prefix2}diceai\n`;
338
+ menu += `│› ${prefix2}hangman\n`;
339
+ menu += `│› ${prefix2}truth\n`;
340
+ menu += `│› ${prefix2}dare\n`;
341
+ menu += `│› ${prefix2}connect4\n`;
342
+ menu += `│› ${prefix2}trivia\n`;
343
+ menu += `│› ${prefix2}ship\n`;
344
+ menu += `│› ${prefix2}8ball\n`;
345
+ menu += `│› ${prefix2}compliment\n`;
346
+ menu += `│› ${prefix2}insult\n`;
347
+ menu += `│› ${prefix2}flirt\n`;
348
+ menu += `│› ${prefix2}pies\n`;
349
+ menu += `│› ${prefix2}china\n`;
350
+ menu += `│› ${prefix2}indonesia\n`;
351
+ menu += `│› ${prefix2}japan\n`;
352
+ menu += `│› ${prefix2}korea\n`;
353
+ menu += `│› ${prefix2}hijab\n`;
354
+ menu += `│› ${prefix2}animu\n`;
355
+ menu += `│› ${prefix2}nom\n`;
356
+ menu += `│› ${prefix2}poke\n`;
357
+ menu += `│› ${prefix2}cry\n`;
358
+ menu += `│› ${prefix2}hug\n`;
359
+ menu += `│› ${prefix2}pat\n`;
360
+ menu += `│› ${prefix2}kiss\n`;
361
+ menu += `│› ${prefix2}wink\n`;
362
+ menu += `│› ${prefix2}facepalm\n`;
363
+ menu += `│› ${prefix2}loli\n`;
364
+ menu += `│› ${prefix2}simp\n`;
365
+ menu += `│› ${prefix2}stupid\n`;
366
+ menu += `│› ${prefix2}rps\n`;
367
+ menu += `│› ${prefix2}slot\n`;
368
+ menu += `┗▣ \n\n`;
369
+
370
+ // ==================== SPORTS ====================
371
+ menu += `┏▣ ◈ *SPORTS* ◈\n`;
372
+ menu += `│› ${prefix2}epl\n`;
373
+ menu += `│› ${prefix2}eplfixtures\n`;
374
+ menu += `│› ${prefix2}bundesliga\n`;
375
+ menu += `│› ${prefix2}laliga\n`;
376
+ menu += `│› ${prefix2}seriea\n`;
377
+ menu += `│› ${prefix2}ligue1\n`;
378
+ menu += `│› ${prefix2}matches\n`;
379
+ menu += `┗▣ \n\n`;
380
+
381
+ // ==================== HACKING ====================
382
+ menu += `┏▣ ◈ *HACKING* ◈\n`;
383
+ menu += `│› ${prefix2}iplookup\n`;
384
+ menu += `│› ${prefix2}whois\n`;
385
+ menu += `│› ${prefix2}reverseip\n`;
386
+ menu += `┗▣ \n\n`;
387
+
388
+ // ==================== DESIGN ====================
389
+ menu += `┏▣ ◈ *DESIGN* ◈\n`;
390
+ menu += `│› ${prefix2}logo\n`;
391
+ menu += `│› ${prefix2}carbon\n`;
392
+ menu += `│› ${prefix2}neon\n`;
393
+ menu += `│› ${prefix2}matrix\n`;
394
+ menu += `│› ${prefix2}fire\n`;
395
+ menu += `│› ${prefix2}glitch\n`;
396
+ menu += `│› ${prefix2}tweet\n`;
397
+ menu += `│› ${prefix2}ytcomment\n`;
398
+ menu += `│› ${prefix2}advanceglow\n`;
399
+ menu += `│› ${prefix2}metallic\n`;
400
+ menu += `│› ${prefix2}ice\n`;
401
+ menu += `│› ${prefix2}snow\n`;
402
+ menu += `│› ${prefix2}impressive\n`;
403
+ menu += `│› ${prefix2}light\n`;
404
+ menu += `│› ${prefix2}purple\n`;
405
+ menu += `│› ${prefix2}thunder\n`;
406
+ menu += `│› ${prefix2}leaves\n`;
407
+ menu += `│› ${prefix2}1917\n`;
408
+ menu += `│› ${prefix2}arena\n`;
409
+ menu += `│› ${prefix2}hacker\n`;
410
+ menu += `│› ${prefix2}sand\n`;
411
+ menu += `│› ${prefix2}blackpink\n`;
412
+ menu += `│› ${prefix2}comrade\n`;
413
+ menu += `│› ${prefix2}gay\n`;
414
+ menu += `│› ${prefix2}glass\n`;
415
+ menu += `│› ${prefix2}jail\n`;
416
+ menu += `│› ${prefix2}passed\n`;
417
+ menu += `│› ${prefix2}triggered\n`;
418
+ menu += `│› ${prefix2}heart\n`;
419
+ menu += `│› ${prefix2}horny\n`;
420
+ menu += `│› ${prefix2}circle\n`;
421
+ menu += `│› ${prefix2}lgbtq\n`;
422
+ menu += `│› ${prefix2}lolice\n`;
423
+ menu += `│› ${prefix2}simpcard\n`;
424
+ menu += `│› ${prefix2}namecard\n`;
425
+ menu += `│› ${prefix2}oogway\n`;
426
+ menu += `│› ${prefix2}oogway2\n`;
427
+ menu += `│› ${prefix2}blur\n`;
428
+ menu += `│› ${prefix2}wasted\n`;
429
+ menu += `│› ${prefix2}character\n`;
430
+ menu += `┗▣ \n\n`;
431
+
432
+ // ==================== DEVELOPER ====================
433
+ menu += `┏▣ ◈ *DEVELOPER* ◈\n`;
434
+ menu += `│› ${prefix2}git\n`;
435
+ menu += `│› ${prefix2}github\n`;
436
+ menu += `│› ${prefix2}script\n`;
437
+ menu += `│› ${prefix2}repo\n`;
438
+ menu += `│› ${prefix2}menuconfig\n`;
439
+ menu += `┗▣ \n\n`;
440
+
441
+ return menu;
442
+ };
443
+
444
+ async function loadThumbnail(thumbnailPath) {
445
+ try {
446
+ if (thumbnailPath && (thumbnailPath.startsWith('http://') || thumbnailPath.startsWith('https://'))) {
447
+ const fetch = require('node-fetch');
448
+ const response = await fetch(thumbnailPath);
449
+ if (response.ok) {
450
+ return Buffer.from(await response.arrayBuffer());
451
+ }
452
+ return Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==', 'base64');
453
+ }
454
+ if (fs.existsSync(thumbnailPath)) {
455
+ return fs.readFileSync(thumbnailPath);
456
+ } else {
457
+ return Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==', 'base64');
458
+ }
459
+ } catch (error) {
460
+ console.error('Error loading thumbnail:', error.message);
461
+ return Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==', 'base64');
462
+ }
463
+ }
464
+
465
+ async function sendMenuWithStyle(sock, chatId, message, menulist, menustyle, thumbnailBuffer, pushname) {
466
+ const fkontak = createFakeContact(message);
467
+ const botName = getBotName();
468
+ const ownerName = pushname;
469
+ const thumbnail = thumbnailBuffer;
470
+ const sourceUrl = "https://github.com/gifteddevsmd";
471
+
472
+ if (menustyle === '1') {
473
+ await sock.sendMessage(chatId, {
474
+ document: {
475
+ url: "https://i.ibb.co/2W0H9Jq/avatar-contact.png",
476
+ },
477
+ caption: menulist,
478
+ mimetype: "application/zip",
479
+ fileName: `${botName}`,
480
+ fileLength: "9999999",
481
+ contextInfo: {
482
+ externalAdReply: {
483
+ showAdAttribution: false,
484
+ title: "",
485
+ body: "",
486
+ thumbnail: thumbnail,
487
+ sourceUrl: sourceUrl,
488
+ mediaType: 1,
489
+ renderLargerThumbnail: true,
490
+ },
491
+ },
492
+ }, { quoted: fkontak });
493
+ } else if (menustyle === '2') {
494
+ await sock.sendMessage(chatId, {
495
+ text: menulist
496
+ }, { quoted: fkontak });
497
+ } else if (menustyle === '3') {
498
+ await sock.sendMessage(chatId, {
499
+ text: menulist,
500
+ contextInfo: {
501
+ externalAdReply: {
502
+ showAdAttribution: false,
503
+ title: botName,
504
+ body: ownerName,
505
+ thumbnail: thumbnail,
506
+ sourceUrl: sourceUrl,
507
+ mediaType: 1,
508
+ renderLargerThumbnail: true,
509
+ },
510
+ },
511
+ }, { quoted: fkontak });
512
+ } else if (menustyle === '4') {
513
+ await sock.sendMessage(chatId, {
514
+ image: thumbnail,
515
+ caption: menulist,
516
+ }, { quoted: fkontak });
517
+ } else if (menustyle === '5') {
518
+ let massage = generateWAMessageFromContent(chatId, {
519
+ viewOnceMessage: {
520
+ message: {
521
+ interactiveMessage: {
522
+ body: {
523
+ text: null,
524
+ },
525
+ footer: {
526
+ text: menulist,
527
+ },
528
+ nativeFlowMessage: {
529
+ buttons: [{
530
+ text: null
531
+ }],
532
+ },
533
+ },
534
+ },
535
+ },
536
+ }, { quoted: fkontak });
537
+ await sock.relayMessage(chatId, massage.message, { messageId: massage.key.id });
538
+ } else if (menustyle === '6') {
539
+ await sock.relayMessage(chatId, {
540
+ requestPaymentMessage: {
541
+ currencyCodeIso4217: 'USD',
542
+ requestFrom: '0@s.whatsapp.net',
543
+ amount1000: '1',
544
+ noteMessage: {
545
+ extendedTextMessage: {
546
+ text: menulist,
547
+ contextInfo: {
548
+ mentionedJid: [message.key.participant || message.key.remoteJid],
549
+ externalAdReply: {
550
+ showAdAttribution: false,
551
+ },
552
+ },
553
+ },
554
+ },
555
+ },
556
+ }, {});
557
+ } else if (menustyle === '7') {
558
+ const videoUrl = getMenuVideo();
559
+ if (videoUrl) {
560
+ await sock.sendMessage(chatId, {
561
+ video: { url: videoUrl },
562
+ caption: menulist,
563
+ gifPlayback: true,
564
+ }, { quoted: fkontak });
565
+ } else {
566
+ await sock.sendMessage(chatId, {
567
+ text: `⚠️ No menu video set. Use .menuset video <url>\n\n${menulist}`
568
+ }, { quoted: fkontak });
569
+ }
570
+ } else {
571
+ await sock.sendMessage(chatId, {
572
+ text: menulist
573
+ }, { quoted: fkontak });
574
+ }
575
+ }
576
+
577
+ async function helpCommand(sock, chatId, message) {
578
+ const pushname = message.pushName || "User";
579
+ const menuStyle = getMenuStyle();
580
+
581
+ console.log('Menu style:', menuStyle);
582
+
583
+ let data = { mode: 'public', isPublic: true, messageCount: 0 };
584
+ try {
585
+ const { getBotMode } = require('../../Database/database');
586
+ const mode = getBotMode();
587
+ data = { mode: mode, isPublic: mode === 'public', messageCount: 0 };
588
+ } catch (e) {}
589
+
590
+ const fkontak = createFakeContact(message);
591
+
592
+ const start = Date.now();
593
+ await sock.sendMessage(chatId, {
594
+ text: 'Loading menu...'
595
+ }, { quoted: fkontak });
596
+ const end = Date.now();
597
+ const ping = Math.round((end - start) / 2);
598
+
599
+ const uptimeInSeconds = process.uptime();
600
+ const uptimeFormatted = formatUptime(uptimeInSeconds);
601
+ const currentMode = data.isPublic ? 'public' : 'private';
602
+ const hostName = detectPlatform();
603
+
604
+ const menulist = generateMenu(pushname, currentMode, hostName, ping, uptimeFormatted);
605
+
606
+ const customMenuImage = getMenuImage();
607
+ let thumbnailPath;
608
+ if (customMenuImage && !customMenuImage.startsWith('http')) {
609
+ thumbnailPath = customMenuImage;
610
+ } else if (customMenuImage && customMenuImage.startsWith('http')) {
611
+ thumbnailPath = customMenuImage;
612
+ } else {
613
+ const thumbnailFiles = [
614
+ 'menu1.jpg',
615
+ 'menu2.jpg',
616
+ 'menu3.jpg',
617
+ 'menu4.jpg',
618
+ 'menu5.jpg'
619
+ ];
620
+ const randomThumbFile = thumbnailFiles[Math.floor(Math.random() * thumbnailFiles.length)];
621
+ thumbnailPath = path.join(__dirname, '../../assets', randomThumbFile);
622
+ }
623
+
624
+ await sock.sendMessage(chatId, {
625
+ react: { text: '📔', key: message.key }
626
+ });
627
+
628
+ try {
629
+ const thumbnailBuffer = await loadThumbnail(thumbnailPath);
630
+
631
+ await sendMenuWithStyle(sock, chatId, message, menulist, menuStyle, thumbnailBuffer, pushname);
632
+
633
+ await sock.sendMessage(chatId, {
634
+ react: { text: '✅', key: message.key }
635
+ });
636
+
637
+ } catch (error) {
638
+ console.error('Menu error:', error);
639
+ try {
640
+ await sock.sendMessage(chatId, {
641
+ text: menulist
642
+ }, { quoted: fkontak });
643
+ } catch (fallbackError) {
644
+ console.error('Fallback error:', fallbackError);
645
+ }
646
+ }
647
+ }
648
+
649
+ module.exports = helpCommand;