@omnizap-system/omnizap 2.5.12

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 (425) hide show
  1. package/.clusterfuzzlite/Dockerfile +10 -0
  2. package/.env.example +907 -0
  3. package/.github/codeql/codeql-config.yml +10 -0
  4. package/.github/dependabot.yml +35 -0
  5. package/.github/workflows/ci.yml +73 -0
  6. package/.github/workflows/codeql.yml +106 -0
  7. package/.github/workflows/db-migration-check.yml +98 -0
  8. package/.github/workflows/dependency-review.yml +22 -0
  9. package/.github/workflows/deploy.yml +95 -0
  10. package/.github/workflows/release.yml +106 -0
  11. package/.github/workflows/security-attest-provenance.yml +51 -0
  12. package/.github/workflows/security-gitleaks.yml +34 -0
  13. package/.github/workflows/security-runner-hardening.yml +31 -0
  14. package/.github/workflows/security-scorecard.yml +44 -0
  15. package/.github/workflows/security-zap-baseline.yml +44 -0
  16. package/.github/workflows/security-zap-full-scan.yml +43 -0
  17. package/.github/workflows/security-zizmor.yml +36 -0
  18. package/.github/workflows/wiki-sync.yml +44 -0
  19. package/.gitleaks.toml +15 -0
  20. package/.prettierrc +34 -0
  21. package/CODE_OF_CONDUCT.md +114 -0
  22. package/LICENSE +56 -0
  23. package/README.md +110 -0
  24. package/SECURITY.md +110 -0
  25. package/app/config/index.js +4 -0
  26. package/app/configParts/adminIdentity.js +92 -0
  27. package/app/configParts/baileysConfig.js +1818 -0
  28. package/app/configParts/groupUtils.js +692 -0
  29. package/app/configParts/loggerConfig.js +394 -0
  30. package/app/configParts/messagePersistenceService.js +305 -0
  31. package/app/connection/baileysCompatibility.test.js +40 -0
  32. package/app/connection/baileysDbAuthState.js +344 -0
  33. package/app/connection/socketController.js +2243 -0
  34. package/app/controllers/messageController.js +7 -0
  35. package/app/controllers/messagePipeline/commandMiddleware.js +146 -0
  36. package/app/controllers/messagePipeline/conversationMiddleware.js +183 -0
  37. package/app/controllers/messagePipeline/messagePipelineMiddlewares.test.js +522 -0
  38. package/app/controllers/messagePipeline/postProcessingMiddleware.js +41 -0
  39. package/app/controllers/messagePipeline/preProcessingMiddlewares.js +166 -0
  40. package/app/controllers/messageProcessingPipeline.js +699 -0
  41. package/app/modules/adminModule/AGENT.md +4056 -0
  42. package/app/modules/adminModule/adminAiHelpService.js +56 -0
  43. package/app/modules/adminModule/adminConfigRuntime.js +177 -0
  44. package/app/modules/adminModule/commandConfig.json +7122 -0
  45. package/app/modules/adminModule/groupCommandHandlers.js +1823 -0
  46. package/app/modules/adminModule/groupCommandHandlers.test.js +350 -0
  47. package/app/modules/adminModule/groupEventHandlers.js +399 -0
  48. package/app/modules/aiModule/AGENT.md +547 -0
  49. package/app/modules/aiModule/aiAiHelpService.js +14 -0
  50. package/app/modules/aiModule/aiConfigRuntime.js +135 -0
  51. package/app/modules/aiModule/catCommand.js +967 -0
  52. package/app/modules/aiModule/commandConfig.json +981 -0
  53. package/app/modules/analyticsModule/messageAnalysisEventRepository.js +83 -0
  54. package/app/modules/gameModule/AGENT.md +196 -0
  55. package/app/modules/gameModule/commandConfig.json +366 -0
  56. package/app/modules/gameModule/diceCommand.js +42 -0
  57. package/app/modules/gameModule/gameAiHelpService.js +14 -0
  58. package/app/modules/gameModule/gameConfigRuntime.js +68 -0
  59. package/app/modules/menuModule/AGENT.md +205 -0
  60. package/app/modules/menuModule/commandConfig.json +366 -0
  61. package/app/modules/menuModule/common.js +316 -0
  62. package/app/modules/menuModule/menuAiHelpService.js +14 -0
  63. package/app/modules/menuModule/menuConfigRuntime.js +68 -0
  64. package/app/modules/menuModule/menus.js +66 -0
  65. package/app/modules/playModule/AGENT.md +321 -0
  66. package/app/modules/playModule/commandConfig.json +584 -0
  67. package/app/modules/playModule/playAiHelpService.js +14 -0
  68. package/app/modules/playModule/playCommand.js +1417 -0
  69. package/app/modules/playModule/playConfigRuntime.js +68 -0
  70. package/app/modules/quoteModule/AGENT.md +199 -0
  71. package/app/modules/quoteModule/commandConfig.json +366 -0
  72. package/app/modules/quoteModule/quoteAiHelpService.js +14 -0
  73. package/app/modules/quoteModule/quoteCommand.js +842 -0
  74. package/app/modules/quoteModule/quoteConfigRuntime.js +68 -0
  75. package/app/modules/rpgPokemonModule/AGENT.md +229 -0
  76. package/app/modules/rpgPokemonModule/commandConfig.json +386 -0
  77. package/app/modules/rpgPokemonModule/rpgBattleCanvasRenderer.js +795 -0
  78. package/app/modules/rpgPokemonModule/rpgBattleService.js +2110 -0
  79. package/app/modules/rpgPokemonModule/rpgBattleService.test.js +770 -0
  80. package/app/modules/rpgPokemonModule/rpgEvolutionUtils.js +22 -0
  81. package/app/modules/rpgPokemonModule/rpgPokemonAiHelpService.js +14 -0
  82. package/app/modules/rpgPokemonModule/rpgPokemonCommand.js +174 -0
  83. package/app/modules/rpgPokemonModule/rpgPokemonConfigRuntime.js +68 -0
  84. package/app/modules/rpgPokemonModule/rpgPokemonDomain.js +192 -0
  85. package/app/modules/rpgPokemonModule/rpgPokemonDomain.test.js +93 -0
  86. package/app/modules/rpgPokemonModule/rpgPokemonEvolution.test.js +46 -0
  87. package/app/modules/rpgPokemonModule/rpgPokemonMessages.js +746 -0
  88. package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1847 -0
  89. package/app/modules/rpgPokemonModule/rpgPokemonService.js +6839 -0
  90. package/app/modules/rpgPokemonModule/rpgProfileCanvasRenderer.js +354 -0
  91. package/app/modules/statsModule/AGENT.md +320 -0
  92. package/app/modules/statsModule/commandConfig.json +540 -0
  93. package/app/modules/statsModule/globalRankingCommand.js +64 -0
  94. package/app/modules/statsModule/rankingCommand.js +41 -0
  95. package/app/modules/statsModule/rankingCommon.js +1305 -0
  96. package/app/modules/statsModule/statsAiHelpService.js +14 -0
  97. package/app/modules/statsModule/statsConfigRuntime.js +68 -0
  98. package/app/modules/stickerModule/AGENT.md +692 -0
  99. package/app/modules/stickerModule/addStickerMetadata.js +239 -0
  100. package/app/modules/stickerModule/commandConfig.json +1216 -0
  101. package/app/modules/stickerModule/convertToWebp.js +367 -0
  102. package/app/modules/stickerModule/stickerAiHelpService.js +14 -0
  103. package/app/modules/stickerModule/stickerCommand.js +446 -0
  104. package/app/modules/stickerModule/stickerConfigRuntime.js +68 -0
  105. package/app/modules/stickerModule/stickerConvertCommand.js +159 -0
  106. package/app/modules/stickerModule/stickerTextCommand.js +653 -0
  107. package/app/modules/stickerPackModule/AGENT.md +215 -0
  108. package/app/modules/stickerPackModule/autoPackCollectorRuntime.js +20 -0
  109. package/app/modules/stickerPackModule/autoPackCollectorService.js +357 -0
  110. package/app/modules/stickerPackModule/commandConfig.json +387 -0
  111. package/app/modules/stickerPackModule/domainEventOutboxRepository.js +227 -0
  112. package/app/modules/stickerPackModule/domainEvents.js +52 -0
  113. package/app/modules/stickerPackModule/semanticReclassificationEngine.js +429 -0
  114. package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +75 -0
  115. package/app/modules/stickerPackModule/semanticThemeClusterService.js +544 -0
  116. package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +400 -0
  117. package/app/modules/stickerPackModule/stickerAssetRepository.js +400 -0
  118. package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +175 -0
  119. package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +3702 -0
  120. package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +559 -0
  121. package/app/modules/stickerPackModule/stickerClassificationService.js +557 -0
  122. package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +249 -0
  123. package/app/modules/stickerPackModule/stickerDomainEventBus.js +65 -0
  124. package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +208 -0
  125. package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +99 -0
  126. package/app/modules/stickerPackModule/stickerObjectStorageService.js +285 -0
  127. package/app/modules/stickerPackModule/stickerPackAiHelpService.js +14 -0
  128. package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +1148 -0
  129. package/app/modules/stickerPackModule/stickerPackConfigRuntime.js +68 -0
  130. package/app/modules/stickerPackModule/stickerPackEngagementRepository.js +152 -0
  131. package/app/modules/stickerPackModule/stickerPackErrors.js +30 -0
  132. package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +101 -0
  133. package/app/modules/stickerPackModule/stickerPackItemRepository.js +432 -0
  134. package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +313 -0
  135. package/app/modules/stickerPackModule/stickerPackMessageService.js +268 -0
  136. package/app/modules/stickerPackModule/stickerPackRepository.js +450 -0
  137. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +179 -0
  138. package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +271 -0
  139. package/app/modules/stickerPackModule/stickerPackService.js +733 -0
  140. package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +32 -0
  141. package/app/modules/stickerPackModule/stickerPackUtils.js +107 -0
  142. package/app/modules/stickerPackModule/stickerStorageService.js +559 -0
  143. package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +242 -0
  144. package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +242 -0
  145. package/app/modules/systemMetricsModule/AGENT.md +193 -0
  146. package/app/modules/systemMetricsModule/commandConfig.json +344 -0
  147. package/app/modules/systemMetricsModule/pingCommand.js +399 -0
  148. package/app/modules/systemMetricsModule/systemMetricsAiHelpService.js +14 -0
  149. package/app/modules/systemMetricsModule/systemMetricsConfigRuntime.js +68 -0
  150. package/app/modules/tiktokModule/AGENT.md +196 -0
  151. package/app/modules/tiktokModule/commandConfig.json +366 -0
  152. package/app/modules/tiktokModule/tiktokAiHelpService.js +14 -0
  153. package/app/modules/tiktokModule/tiktokCommand.js +716 -0
  154. package/app/modules/tiktokModule/tiktokConfigRuntime.js +68 -0
  155. package/app/modules/userModule/AGENT.md +200 -0
  156. package/app/modules/userModule/commandConfig.json +386 -0
  157. package/app/modules/userModule/userAiHelpService.js +14 -0
  158. package/app/modules/userModule/userCommand.js +1155 -0
  159. package/app/modules/userModule/userConfigRuntime.js +68 -0
  160. package/app/modules/waifuPicsModule/AGENT.md +431 -0
  161. package/app/modules/waifuPicsModule/commandConfig.json +780 -0
  162. package/app/modules/waifuPicsModule/waifuPicsAiHelpService.js +14 -0
  163. package/app/modules/waifuPicsModule/waifuPicsCommand.js +586 -0
  164. package/app/modules/waifuPicsModule/waifuPicsConfigRuntime.js +68 -0
  165. package/app/observability/metrics.js +766 -0
  166. package/app/services/ai/aiHelpResponseCacheRepository.js +280 -0
  167. package/app/services/ai/aiLearningRepository.js +400 -0
  168. package/app/services/ai/commandConfigEnrichmentRepository.js +769 -0
  169. package/app/services/ai/commandConfigEnrichmentService.js +452 -0
  170. package/app/services/ai/commandConfigValidationService.js +443 -0
  171. package/app/services/ai/commandToolBuilderService.js +192 -0
  172. package/app/services/ai/conversationRouterService.js +516 -0
  173. package/app/services/ai/geminiService.js +115 -0
  174. package/app/services/ai/geminiService.test.js +87 -0
  175. package/app/services/ai/globalModuleAiHelpService.js +1412 -0
  176. package/app/services/ai/globalToolCallingService.js +203 -0
  177. package/app/services/ai/messageCommandExecutionService.js +391 -0
  178. package/app/services/ai/moduleAiHelpCoreService.js +1099 -0
  179. package/app/services/ai/moduleAiHelpWrapperFactory.js +65 -0
  180. package/app/services/ai/moduleCommandConfigRuntimeService.js +113 -0
  181. package/app/services/ai/moduleToolExecutorService.js +464 -0
  182. package/app/services/ai/moduleToolRegistryService.js +178 -0
  183. package/app/services/ai/toolCandidateSelectorService.js +781 -0
  184. package/app/services/auth/googleWebLinkService.js +80 -0
  185. package/app/services/auth/whatsappLoginLinkService.js +230 -0
  186. package/app/services/external/pokeApiService.js +398 -0
  187. package/app/services/group/groupMetadataService.js +311 -0
  188. package/app/services/infra/dbWriteQueue.js +874 -0
  189. package/app/services/infra/featureFlagService.js +131 -0
  190. package/app/services/infra/queueUtils.js +55 -0
  191. package/app/services/messaging/captchaService.js +491 -0
  192. package/app/services/messaging/messagePersistenceService.js +1 -0
  193. package/app/services/messaging/newsBroadcastService.js +347 -0
  194. package/app/services/sticker/stickerFocusService.js +347 -0
  195. package/app/services/sticker/stickerFocusService.test.js +43 -0
  196. package/app/store/aiPromptStore.js +38 -0
  197. package/app/store/conversationSessionStore.js +131 -0
  198. package/app/store/groupConfigStore.js +58 -0
  199. package/app/store/premiumUserStore.js +54 -0
  200. package/app/utils/antiLink/antiLinkModule.js +700 -0
  201. package/app/utils/http/getImageBufferModule.js +18 -0
  202. package/app/utils/json/jsonSanitizer.js +113 -0
  203. package/app/utils/json/jsonSanitizer.test.js +40 -0
  204. package/app/utils/systemMetrics/systemMetricsModule.js +88 -0
  205. package/app/workers/aiLearningWorker.js +605 -0
  206. package/app/workers/commandConfigEnrichmentWorker.js +242 -0
  207. package/database/index.js +2075 -0
  208. package/database/init.js +151 -0
  209. package/database/migrations/.gitkeep +0 -0
  210. package/database/migrations/20260307_d0_hardening_down.sql +64 -0
  211. package/database/migrations/20260307_d0_hardening_up.sql +79 -0
  212. package/database/migrations/20260307_d1_terms_acceptance_down.sql +11 -0
  213. package/database/migrations/20260307_d1_terms_acceptance_up.sql +37 -0
  214. package/database/migrations/20260307_d2_auth_hardening_down.sql +75 -0
  215. package/database/migrations/20260307_d2_auth_hardening_up.sql +100 -0
  216. package/database/migrations/20260314_d7_canonical_sender_down.sql +53 -0
  217. package/database/migrations/20260314_d7_canonical_sender_up.sql +114 -0
  218. package/database/migrations/20260406_d30_security_analytics_down.sql +95 -0
  219. package/database/migrations/20260406_d30_security_analytics_up.sql +292 -0
  220. package/database/migrations/20260407_d31_web_google_session_token_hardening_down.sql +2 -0
  221. package/database/migrations/20260407_d31_web_google_session_token_hardening_up.sql +17 -0
  222. package/database/migrations/20260408_d32_ai_help_response_cache_down.sql +1 -0
  223. package/database/migrations/20260408_d32_ai_help_response_cache_up.sql +22 -0
  224. package/database/migrations/20260409_d33_ai_learning_tables_down.sql +4 -0
  225. package/database/migrations/20260409_d33_ai_learning_tables_up.sql +52 -0
  226. package/database/migrations/20260410_d34_command_config_enrichment_down.sql +3 -0
  227. package/database/migrations/20260410_d34_command_config_enrichment_up.sql +48 -0
  228. package/database/schema.sql +1186 -0
  229. package/docker-compose.yml +104 -0
  230. package/docs/audits/stickerCatalogController-out-of-scope.md +103 -0
  231. package/docs/audits/stickerCatalogController-symbols.md +58 -0
  232. package/docs/compliance/acceptable-use-policy-2026-03-07.md +35 -0
  233. package/docs/compliance/dpa-b2b-standard-2026-03-07.md +80 -0
  234. package/docs/compliance/monthly-compliance-checklist-2026-03-07.md +88 -0
  235. package/docs/compliance/notice-and-takedown-policy-2026-03-07.md +34 -0
  236. package/docs/compliance/privacy-policy-2026-03-07.md +75 -0
  237. package/docs/compliance/subprocessors-inventory-2026-03-07.md +16 -0
  238. package/docs/database/production-db-evolution-runbook-2026q1.md +365 -0
  239. package/docs/security/dsar-lgpd-runbook-2026-03-07.md +86 -0
  240. package/docs/security/incident-response-lgpd-anpd-runbook-2026-03-07.md +77 -0
  241. package/docs/security/network-hardening-runbook-2026-03-07.md +137 -0
  242. package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +238 -0
  243. package/docs/seo/satellite-page-template.md +116 -0
  244. package/docs/seo/satellite-pages-phase1.json +364 -0
  245. package/docs/wiki/Home.md +120 -0
  246. package/docs/wiki/pair-extraordinaire-2026-03-08.md +3 -0
  247. package/docs/wiki/recent-changes-2026-03-08.md +47 -0
  248. package/ecosystem.prod.config.cjs +135 -0
  249. package/eslint.config.js +89 -0
  250. package/index.js +488 -0
  251. package/ml/clip_classifier/Dockerfile +18 -0
  252. package/ml/clip_classifier/README.md +118 -0
  253. package/ml/clip_classifier/adaptive_scoring.py +40 -0
  254. package/ml/clip_classifier/classifier.py +654 -0
  255. package/ml/clip_classifier/embedding_store.py +481 -0
  256. package/ml/clip_classifier/env_loader.py +15 -0
  257. package/ml/clip_classifier/llm_label_expander.py +144 -0
  258. package/ml/clip_classifier/main.py +213 -0
  259. package/ml/clip_classifier/requirements.txt +10 -0
  260. package/ml/clip_classifier/similarity_engine.py +74 -0
  261. package/new-logo.png +0 -0
  262. package/observability/alert-rules.yml +60 -0
  263. package/observability/grafana/dashboards/omnizap-mysql.json +136 -0
  264. package/observability/grafana/dashboards/omnizap-overview.json +170 -0
  265. package/observability/grafana/provisioning/dashboards/dashboards.yml +11 -0
  266. package/observability/grafana/provisioning/datasources/datasources.yml +15 -0
  267. package/observability/loki-config.yml +38 -0
  268. package/observability/mysql-setup.sql +46 -0
  269. package/observability/prometheus.yml +35 -0
  270. package/observability/promtail-config.yml +84 -0
  271. package/observability/sticker-catalog-slo.md +83 -0
  272. package/observability/sticker-scale-hardening-rollout.md +128 -0
  273. package/package.json +144 -0
  274. package/public/apple-touch-icon.png +0 -0
  275. package/public/assets/css/commands-react.input.css +71 -0
  276. package/public/assets/css/create-pack-react.input.css +31 -0
  277. package/public/assets/css/home-react.input.css +106 -0
  278. package/public/assets/css/login-react.input.css +58 -0
  279. package/public/assets/css/stickers-react.input.css +18 -0
  280. package/public/assets/css/terms-react.input.css +115 -0
  281. package/public/assets/css/user-react.input.css +57 -0
  282. package/public/assets/images/brand-icon-192.png +0 -0
  283. package/public/assets/images/brand-logo-128.webp +0 -0
  284. package/public/assets/images/hero-banner-1280.jpg +0 -0
  285. package/public/comandos/commands-catalog.json +4517 -0
  286. package/public/css/api-docs.css +161 -0
  287. package/public/css/stickers-admin.css +1288 -0
  288. package/public/css/styles.css +679 -0
  289. package/public/css/systemadm/admin.css +474 -0
  290. package/public/css/systemadm/base.css +73 -0
  291. package/public/css/systemadm/components.css +662 -0
  292. package/public/css/systemadm/layout.css +229 -0
  293. package/public/css/systemadm/tokens.css +56 -0
  294. package/public/favicon-16x16.png +0 -0
  295. package/public/favicon-32x32.png +0 -0
  296. package/public/favicon.ico +0 -0
  297. package/public/js/apps/apiDocsApp.js +235 -0
  298. package/public/js/apps/commandsReactApp.js +528 -0
  299. package/public/js/apps/createPackApp.js +1646 -0
  300. package/public/js/apps/homeReactApp.js +942 -0
  301. package/public/js/apps/loginReactApp.js +496 -0
  302. package/public/js/apps/stickersAdminApp.js +1753 -0
  303. package/public/js/apps/stickersApp.js +3797 -0
  304. package/public/js/apps/termsReactApp.js +528 -0
  305. package/public/js/apps/userApp.js +2540 -0
  306. package/public/js/apps/userProfile/actions.js +66 -0
  307. package/public/js/apps/userReactApp.js +547 -0
  308. package/public/js/catalog.js +950 -0
  309. package/public/pages/api-docs.html +40 -0
  310. package/public/pages/aup.html +158 -0
  311. package/public/pages/comandos.html +41 -0
  312. package/public/pages/dpa.html +227 -0
  313. package/public/pages/home.html +45 -0
  314. package/public/pages/licenca.html +182 -0
  315. package/public/pages/login.html +40 -0
  316. package/public/pages/notice-and-takedown.html +234 -0
  317. package/public/pages/politica-de-privacidade.html +251 -0
  318. package/public/pages/seo-bot-whatsapp-para-grupo.html +350 -0
  319. package/public/pages/seo-bot-whatsapp-sem-programar.html +350 -0
  320. package/public/pages/seo-como-automatizar-avisos-no-whatsapp.html +350 -0
  321. package/public/pages/seo-como-criar-comandos-whatsapp.html +350 -0
  322. package/public/pages/seo-como-evitar-spam-no-whatsapp.html +350 -0
  323. package/public/pages/seo-como-moderar-grupo-whatsapp.html +350 -0
  324. package/public/pages/seo-como-organizar-comunidade-whatsapp.html +350 -0
  325. package/public/pages/seo-melhor-bot-whatsapp-para-grupos.html +350 -0
  326. package/public/pages/stickers-admin.html +31 -0
  327. package/public/pages/stickers-create.html +41 -0
  328. package/public/pages/stickers.html +45 -0
  329. package/public/pages/suboperadores.html +237 -0
  330. package/public/pages/termos-de-uso-texto-integral.html +241 -0
  331. package/public/pages/termos-de-uso.html +41 -0
  332. package/public/pages/user-password-reset.html +32 -0
  333. package/public/pages/user-systemadm.html +508 -0
  334. package/public/pages/user.html +39 -0
  335. package/public/robots.txt +9 -0
  336. package/public/site.webmanifest +24 -0
  337. package/public/sitemap.xml +98 -0
  338. package/schemas/command-config.schema.json +582 -0
  339. package/scripts/baileys-compat-smoke.mjs +12 -0
  340. package/scripts/cache-bust.mjs +142 -0
  341. package/scripts/deploy.sh +916 -0
  342. package/scripts/email-broadcast-terms-update.mjs +170 -0
  343. package/scripts/enrich-command-discovery-fields.mjs +286 -0
  344. package/scripts/generate-command-config-schema.mjs +273 -0
  345. package/scripts/generate-commands-catalog.mjs +308 -0
  346. package/scripts/generate-module-agents.mjs +631 -0
  347. package/scripts/generate-seo-satellite-pages.mjs +400 -0
  348. package/scripts/github-deploy-notify.mjs +174 -0
  349. package/scripts/github-release-notify.mjs +219 -0
  350. package/scripts/release.sh +599 -0
  351. package/scripts/run-codeql-local.sh +116 -0
  352. package/scripts/run-prettier-all.mjs +25 -0
  353. package/scripts/security-smoketest.mjs +581 -0
  354. package/scripts/sticker-catalog-loadtest.mjs +210 -0
  355. package/scripts/sticker-worker-task.mjs +119 -0
  356. package/scripts/sync-readme-snapshot.mjs +133 -0
  357. package/scripts/validate-command-config-schema.mjs +130 -0
  358. package/scripts/validate-command-configs.mjs +15 -0
  359. package/scripts/wiki-sync.sh +191 -0
  360. package/server/auth/googleWebAuth/googleWebAuthRuntime.js +62 -0
  361. package/server/auth/googleWebAuth/googleWebAuthService.js +807 -0
  362. package/server/auth/jwt/webJwtService.js +147 -0
  363. package/server/auth/stickerCatalogAuthContext.js +165 -0
  364. package/server/auth/termsAcceptance/termsAcceptanceHandler.js +189 -0
  365. package/server/auth/userPassword/index.js +14 -0
  366. package/server/auth/userPassword/userPasswordAuthService.js +422 -0
  367. package/server/auth/userPassword/userPasswordCrypto.js +199 -0
  368. package/server/auth/userPassword/userPasswordCrypto.test.js +76 -0
  369. package/server/auth/userPassword/userPasswordRecoveryService.js +728 -0
  370. package/server/auth/validation/authSchemas.js +236 -0
  371. package/server/auth/webAccount/webAccountHandlers.js +1434 -0
  372. package/server/controllers/admin/adminBanService.js +138 -0
  373. package/server/controllers/admin/adminPanelHandlers.js +2083 -0
  374. package/server/controllers/admin/stickerCatalogAdminContext.js +17 -0
  375. package/server/controllers/admin/systemAdminController.js +201 -0
  376. package/server/controllers/email/emailAutomationController.js +239 -0
  377. package/server/controllers/metricsController.js +21 -0
  378. package/server/controllers/seo/stickerCatalogSeoContext.js +514 -0
  379. package/server/controllers/sticker/nonCatalogHandlers.js +303 -0
  380. package/server/controllers/sticker/stickerCatalogController.js +4700 -0
  381. package/server/controllers/system/contactController.js +115 -0
  382. package/server/controllers/system/githubController.js +137 -0
  383. package/server/controllers/system/stickerCatalogSystemContext.js +758 -0
  384. package/server/controllers/system/storageController.js +154 -0
  385. package/server/controllers/system/systemController.js +135 -0
  386. package/server/controllers/system/systemMetricsController.js +156 -0
  387. package/server/controllers/system/visitController.js +90 -0
  388. package/server/controllers/userController.js +145 -0
  389. package/server/email/emailAutomationRuntime.js +225 -0
  390. package/server/email/emailAutomationService.js +125 -0
  391. package/server/email/emailOutboxRepository.js +282 -0
  392. package/server/email/emailTemplateService.js +480 -0
  393. package/server/email/emailTransportService.js +156 -0
  394. package/server/http/clientIp.js +95 -0
  395. package/server/http/httpRequestUtils.js +262 -0
  396. package/server/http/httpRequestUtils.test.js +80 -0
  397. package/server/http/httpServer.js +180 -0
  398. package/server/http/requestContext.js +20 -0
  399. package/server/http/siteRoutingUtils.js +87 -0
  400. package/server/index.js +1 -0
  401. package/server/middleware/cachePolicy.js +26 -0
  402. package/server/middleware/cachePolicyHelpers.js +1 -0
  403. package/server/middleware/endpointRateLimit.js +181 -0
  404. package/server/middleware/rateLimit.js +70 -0
  405. package/server/middleware/requireAdminAuth.js +48 -0
  406. package/server/middleware/securityHeaders.js +97 -0
  407. package/server/routes/admin/systemAdminRouter.js +64 -0
  408. package/server/routes/email/emailAutomationRouter.js +46 -0
  409. package/server/routes/health/healthRouter.js +41 -0
  410. package/server/routes/indexRouter.js +234 -0
  411. package/server/routes/metrics/metricsRouter.js +58 -0
  412. package/server/routes/static/staticPageRouter.js +134 -0
  413. package/server/routes/sticker/catalogHandlers/catalogAdminHttp.js +105 -0
  414. package/server/routes/sticker/catalogHandlers/catalogAuthHttp.js +77 -0
  415. package/server/routes/sticker/catalogHandlers/catalogPublicHttp.js +120 -0
  416. package/server/routes/sticker/catalogHandlers/catalogUploadHttp.js +83 -0
  417. package/server/routes/sticker/catalogRouter.js +77 -0
  418. package/server/routes/sticker/stickerApiRouter.js +84 -0
  419. package/server/routes/sticker/stickerDataRouter.js +145 -0
  420. package/server/routes/sticker/stickerSiteRouter.js +43 -0
  421. package/server/routes/user/userApiPaths.js +66 -0
  422. package/server/routes/user/userRouter.js +65 -0
  423. package/server/utils/safePath.js +26 -0
  424. package/utils/logger/loggerModule.js +35 -0
  425. package/vite.config.mjs +38 -0
@@ -0,0 +1,4517 @@
1
+ {
2
+ "schema_version": "3.0.0",
3
+ "generated_at": "2026-03-13T02:09:44.351Z",
4
+ "totals": {
5
+ "modules": 14,
6
+ "categories": 10,
7
+ "commands": 55
8
+ },
9
+ "modules": [
10
+ {
11
+ "key": "adminModule",
12
+ "label": "adminModule",
13
+ "source_file": "app/modules/adminModule/commandConfig.json",
14
+ "enabled": true,
15
+ "command_count": 32
16
+ },
17
+ {
18
+ "key": "stickerModule",
19
+ "label": "stickerModule",
20
+ "source_file": "app/modules/stickerModule/commandConfig.json",
21
+ "enabled": true,
22
+ "command_count": 5
23
+ },
24
+ {
25
+ "key": "aiModule",
26
+ "label": "aiModule",
27
+ "source_file": "app/modules/aiModule/commandConfig.json",
28
+ "enabled": true,
29
+ "command_count": 3
30
+ },
31
+ {
32
+ "key": "waifuPicsModule",
33
+ "label": "waifuPicsModule",
34
+ "source_file": "app/modules/waifuPicsModule/commandConfig.json",
35
+ "enabled": true,
36
+ "command_count": 3
37
+ },
38
+ {
39
+ "key": "playModule",
40
+ "label": "playModule",
41
+ "source_file": "app/modules/playModule/commandConfig.json",
42
+ "enabled": true,
43
+ "command_count": 2
44
+ },
45
+ {
46
+ "key": "statsModule",
47
+ "label": "statsModule",
48
+ "source_file": "app/modules/statsModule/commandConfig.json",
49
+ "enabled": true,
50
+ "command_count": 2
51
+ },
52
+ {
53
+ "key": "gameModule",
54
+ "label": "gameModule",
55
+ "source_file": "app/modules/gameModule/commandConfig.json",
56
+ "enabled": true,
57
+ "command_count": 1
58
+ },
59
+ {
60
+ "key": "menuModule",
61
+ "label": "menuModule",
62
+ "source_file": "app/modules/menuModule/commandConfig.json",
63
+ "enabled": true,
64
+ "command_count": 1
65
+ },
66
+ {
67
+ "key": "quoteModule",
68
+ "label": "quoteModule",
69
+ "source_file": "app/modules/quoteModule/commandConfig.json",
70
+ "enabled": true,
71
+ "command_count": 1
72
+ },
73
+ {
74
+ "key": "rpgPokemonModule",
75
+ "label": "rpgPokemonModule",
76
+ "source_file": "app/modules/rpgPokemonModule/commandConfig.json",
77
+ "enabled": true,
78
+ "command_count": 1
79
+ },
80
+ {
81
+ "key": "stickerPackModule",
82
+ "label": "stickerPackModule",
83
+ "source_file": "app/modules/stickerPackModule/commandConfig.json",
84
+ "enabled": true,
85
+ "command_count": 1
86
+ },
87
+ {
88
+ "key": "systemMetricsModule",
89
+ "label": "systemMetricsModule",
90
+ "source_file": "app/modules/systemMetricsModule/commandConfig.json",
91
+ "enabled": true,
92
+ "command_count": 1
93
+ },
94
+ {
95
+ "key": "tiktokModule",
96
+ "label": "tiktokModule",
97
+ "source_file": "app/modules/tiktokModule/commandConfig.json",
98
+ "enabled": true,
99
+ "command_count": 1
100
+ },
101
+ {
102
+ "key": "userModule",
103
+ "label": "userModule",
104
+ "source_file": "app/modules/userModule/commandConfig.json",
105
+ "enabled": true,
106
+ "command_count": 1
107
+ }
108
+ ],
109
+ "categories": [
110
+ {
111
+ "key": "admin",
112
+ "label": "Moderação e Admin",
113
+ "icon": "🛡️",
114
+ "command_count": 32,
115
+ "modules": ["adminModule"],
116
+ "commands": [
117
+ {
118
+ "key": "adminModule:adicionar",
119
+ "name": "adicionar",
120
+ "id": "admin.adicionar",
121
+ "aliases": ["add"],
122
+ "module": "adminModule",
123
+ "module_label": "adminModule",
124
+ "category": "admin",
125
+ "category_label": "Moderação e Admin",
126
+ "descricao": "Adiciona participantes ao grupo atual.",
127
+ "requirements": {
128
+ "group": true,
129
+ "admin": true,
130
+ "owner": false,
131
+ "google_login": true,
132
+ "nsfw": false,
133
+ "media": false,
134
+ "reply": false
135
+ },
136
+ "premium": false,
137
+ "allowed_plans": ["comum", "premium"],
138
+ "rate_limit": null,
139
+ "local_de_uso": ["grupo"],
140
+ "subcomandos": [],
141
+ "metodos_de_uso": ["/adicionar @participante"],
142
+ "mensagens_uso": {
143
+ "missing_targets": ["/adicionar @participante1 @participante2 ...", "Também é possível informar os JIDs dos participantes."]
144
+ },
145
+ "arguments": [
146
+ {
147
+ "name": "participantes",
148
+ "type": "array",
149
+ "required": true,
150
+ "description": "menções/JIDs válidos",
151
+ "default": [],
152
+ "validation": "menções/JIDs válidos"
153
+ }
154
+ ],
155
+ "responses": {
156
+ "success": "Comando executado com sucesso.",
157
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
158
+ "permission_error": "Permissão insuficiente para executar este comando.",
159
+ "sucesso": "Comando executado com sucesso.",
160
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
161
+ "erro_permissao": "Permissão insuficiente para executar este comando."
162
+ },
163
+ "technical": {
164
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "lista de participantes mencionados/extraidos para adicionar"],
165
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
166
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
167
+ "behavior": {
168
+ "type": "action_target",
169
+ "target_type": "participant",
170
+ "action": "adicionar",
171
+ "requires_targets": true
172
+ },
173
+ "handler": {
174
+ "file": "groupCommandHandlers.js",
175
+ "method": "handleAdminCommand",
176
+ "command_case": "add"
177
+ },
178
+ "risk_level": "high",
179
+ "stability": "stable",
180
+ "version": "1.0.0"
181
+ },
182
+ "observability": {
183
+ "event_name": "command.executed",
184
+ "analytics_event": "whatsapp_command_add",
185
+ "tags": ["whatsapp", "command", "adminModule", "add"]
186
+ },
187
+ "privacy": {
188
+ "retention": "standard_app_logs",
189
+ "legal_basis": "service_execution_and_legitimate_interest"
190
+ },
191
+ "discovery": {
192
+ "keywords": ["adicionar", "admin", "grupo"],
193
+ "user_phrasings": ["quero usar adicionar", "me ajuda com adicionar", "adiciona participantes ao grupo"],
194
+ "priority": 100
195
+ }
196
+ },
197
+ {
198
+ "key": "adminModule:antilink",
199
+ "name": "antilink",
200
+ "id": "admin.antilink",
201
+ "aliases": [],
202
+ "module": "adminModule",
203
+ "module_label": "adminModule",
204
+ "category": "admin",
205
+ "category_label": "Moderação e Admin",
206
+ "descricao": "Gerencia bloqueio de links permitidos no grupo.",
207
+ "requirements": {
208
+ "group": true,
209
+ "admin": true,
210
+ "owner": false,
211
+ "google_login": true,
212
+ "nsfw": false,
213
+ "media": false,
214
+ "reply": false
215
+ },
216
+ "premium": false,
217
+ "allowed_plans": ["comum", "premium"],
218
+ "rate_limit": null,
219
+ "local_de_uso": ["grupo"],
220
+ "subcomandos": ["on", "off", "list", "allow", "disallow", "add", "remove"],
221
+ "metodos_de_uso": ["/antilink on", "/antilink off", "/antilink list", "/antilink allow <rede>", "/antilink disallow <rede>", "/antilink add <dominio>", "/antilink remove <dominio>"],
222
+ "mensagens_uso": {
223
+ "allow": ["/antilink allow <rede>"],
224
+ "disallow": ["/antilink disallow <rede>"],
225
+ "add": ["/antilink add <dominio>"],
226
+ "remove": ["/antilink remove <dominio>"]
227
+ },
228
+ "arguments": [
229
+ {
230
+ "name": "subcomando",
231
+ "type": "string",
232
+ "required": true,
233
+ "description": "on|off|list|allow|disallow|add|remove",
234
+ "default": null,
235
+ "validation": "on|off|list|allow|disallow|add|remove"
236
+ },
237
+ {
238
+ "name": "alvos",
239
+ "type": "array",
240
+ "required": false,
241
+ "description": "redes ou domínios",
242
+ "default": [],
243
+ "validation": "redes ou domínios"
244
+ }
245
+ ],
246
+ "responses": {
247
+ "success": "Comando executado com sucesso.",
248
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
249
+ "permission_error": "Permissão insuficiente para executar este comando.",
250
+ "sucesso": "Comando executado com sucesso.",
251
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
252
+ "erro_permissao": "Permissão insuficiente para executar este comando."
253
+ },
254
+ "technical": {
255
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "subcomando e argumentos (rede/dominio)", "listas atuais de redes e dominios permitidos no grupo"],
256
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
257
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
258
+ "behavior": {
259
+ "type": "list_management",
260
+ "allowed_actions": ["add", "remove", "list"],
261
+ "action_argument": "acao"
262
+ },
263
+ "handler": {
264
+ "file": "groupCommandHandlers.js",
265
+ "method": "handleAdminCommand",
266
+ "command_case": "antilink"
267
+ },
268
+ "risk_level": "low",
269
+ "stability": "stable",
270
+ "version": "1.0.0"
271
+ },
272
+ "observability": {
273
+ "event_name": "command.executed",
274
+ "analytics_event": "whatsapp_command_antilink",
275
+ "tags": ["whatsapp", "command", "adminModule", "antilink"]
276
+ },
277
+ "privacy": {
278
+ "retention": "standard_app_logs",
279
+ "legal_basis": "service_execution_and_legitimate_interest"
280
+ },
281
+ "discovery": {
282
+ "keywords": ["antilink", "admin", "grupo"],
283
+ "user_phrasings": ["quero usar antilink", "me ajuda com antilink", "gerencia bloqueio de links"],
284
+ "priority": 100
285
+ }
286
+ },
287
+ {
288
+ "key": "adminModule:assunto",
289
+ "name": "assunto",
290
+ "id": "admin.assunto",
291
+ "aliases": ["setsubject"],
292
+ "module": "adminModule",
293
+ "module_label": "adminModule",
294
+ "category": "admin",
295
+ "category_label": "Moderação e Admin",
296
+ "descricao": "Altera assunto do grupo.",
297
+ "requirements": {
298
+ "group": true,
299
+ "admin": true,
300
+ "owner": false,
301
+ "google_login": true,
302
+ "nsfw": false,
303
+ "media": false,
304
+ "reply": false
305
+ },
306
+ "premium": false,
307
+ "allowed_plans": ["comum", "premium"],
308
+ "rate_limit": null,
309
+ "local_de_uso": ["grupo"],
310
+ "subcomandos": [],
311
+ "metodos_de_uso": ["/assunto novo assunto"],
312
+ "mensagens_uso": {
313
+ "default": ["/assunto <novo_assunto>"]
314
+ },
315
+ "arguments": [
316
+ {
317
+ "name": "assunto",
318
+ "type": "string",
319
+ "required": true,
320
+ "description": "texto não vazio",
321
+ "default": null,
322
+ "validation": "texto não vazio"
323
+ }
324
+ ],
325
+ "responses": {
326
+ "success": "Comando executado com sucesso.",
327
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
328
+ "permission_error": "Permissão insuficiente para executar este comando.",
329
+ "sucesso": "Comando executado com sucesso.",
330
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
331
+ "erro_permissao": "Permissão insuficiente para executar este comando."
332
+ },
333
+ "technical": {
334
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "novo assunto do grupo informado no comando"],
335
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
336
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
337
+ "behavior": {
338
+ "type": "argument_driven",
339
+ "argument_count": 1
340
+ },
341
+ "handler": {
342
+ "file": "groupCommandHandlers.js",
343
+ "method": "handleAdminCommand",
344
+ "command_case": "setsubject"
345
+ },
346
+ "risk_level": "low",
347
+ "stability": "stable",
348
+ "version": "1.0.0"
349
+ },
350
+ "observability": {
351
+ "event_name": "command.executed",
352
+ "analytics_event": "whatsapp_command_setsubject",
353
+ "tags": ["whatsapp", "command", "adminModule", "setsubject"]
354
+ },
355
+ "privacy": {
356
+ "retention": "standard_app_logs",
357
+ "legal_basis": "service_execution_and_legitimate_interest"
358
+ },
359
+ "discovery": {
360
+ "keywords": ["assunto", "admin", "grupo"],
361
+ "user_phrasings": ["quero usar assunto", "me ajuda com assunto", "altera assunto do grupo."],
362
+ "priority": 100
363
+ }
364
+ },
365
+ {
366
+ "key": "adminModule:atualizarsolicitacoes",
367
+ "name": "atualizarsolicitacoes",
368
+ "id": "admin.atualizarsolicitacoes",
369
+ "aliases": ["updaterequests"],
370
+ "module": "adminModule",
371
+ "module_label": "adminModule",
372
+ "category": "admin",
373
+ "category_label": "Moderação e Admin",
374
+ "descricao": "Aprova ou rejeita solicitacoes de entrada no grupo.",
375
+ "requirements": {
376
+ "group": true,
377
+ "admin": true,
378
+ "owner": false,
379
+ "google_login": true,
380
+ "nsfw": false,
381
+ "media": false,
382
+ "reply": false
383
+ },
384
+ "premium": false,
385
+ "allowed_plans": ["comum", "premium"],
386
+ "rate_limit": null,
387
+ "local_de_uso": ["grupo"],
388
+ "subcomandos": ["approve", "reject"],
389
+ "metodos_de_uso": ["/atualizarsolicitacoes approve @participante", "/atualizarsolicitacoes reject @participante"],
390
+ "mensagens_uso": {
391
+ "invalid_action": ["/atualizarsolicitacoes <approve|reject> @participante1 ..."],
392
+ "missing_targets": ["/atualizarsolicitacoes <approve|reject> @participante1 ...", "Mencione os usuários que devem ser aprovados ou rejeitados."]
393
+ },
394
+ "arguments": [
395
+ {
396
+ "name": "acao",
397
+ "type": "string",
398
+ "required": true,
399
+ "description": "approve|reject",
400
+ "default": null,
401
+ "validation": "approve|reject"
402
+ },
403
+ {
404
+ "name": "participantes",
405
+ "type": "array",
406
+ "required": true,
407
+ "description": "menções/JIDs válidos",
408
+ "default": [],
409
+ "validation": "menções/JIDs válidos"
410
+ }
411
+ ],
412
+ "responses": {
413
+ "success": "Comando executado com sucesso.",
414
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
415
+ "permission_error": "Permissão insuficiente para executar este comando.",
416
+ "sucesso": "Comando executado com sucesso.",
417
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
418
+ "erro_permissao": "Permissão insuficiente para executar este comando."
419
+ },
420
+ "technical": {
421
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "acao solicitada (approve/reject)", "participantes mencionados para atualizar solicitacoes"],
422
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
423
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
424
+ "behavior": {
425
+ "type": "moderation_decision",
426
+ "allowed_actions": ["approve", "reject"],
427
+ "action_argument": "acao",
428
+ "requires_targets": true
429
+ },
430
+ "handler": {
431
+ "file": "groupCommandHandlers.js",
432
+ "method": "handleAdminCommand",
433
+ "command_case": "updaterequests"
434
+ },
435
+ "risk_level": "high",
436
+ "stability": "stable",
437
+ "version": "1.0.0"
438
+ },
439
+ "observability": {
440
+ "event_name": "command.executed",
441
+ "analytics_event": "whatsapp_command_updaterequests",
442
+ "tags": ["whatsapp", "command", "adminModule", "updaterequests"]
443
+ },
444
+ "privacy": {
445
+ "retention": "standard_app_logs",
446
+ "legal_basis": "service_execution_and_legitimate_interest"
447
+ },
448
+ "discovery": {
449
+ "keywords": ["atualizarsolicitacoes", "admin", "grupo"],
450
+ "user_phrasings": ["quero usar atualizarsolicitacoes", "me ajuda com atualizarsolicitacoes", "aprova ou rejeita solicitacoes"],
451
+ "priority": 100
452
+ }
453
+ },
454
+ {
455
+ "key": "adminModule:autofigurinha",
456
+ "name": "autofigurinha",
457
+ "id": "admin.autofigurinha",
458
+ "aliases": ["autosticker"],
459
+ "module": "adminModule",
460
+ "module_label": "adminModule",
461
+ "category": "admin",
462
+ "category_label": "Moderação e Admin",
463
+ "descricao": "Ativa/desativa a geracao automatica de figurinhas no grupo.",
464
+ "requirements": {
465
+ "group": true,
466
+ "admin": true,
467
+ "owner": false,
468
+ "google_login": true,
469
+ "nsfw": false,
470
+ "media": false,
471
+ "reply": false
472
+ },
473
+ "premium": false,
474
+ "allowed_plans": ["comum", "premium"],
475
+ "rate_limit": null,
476
+ "local_de_uso": ["grupo"],
477
+ "subcomandos": ["on", "off", "status"],
478
+ "metodos_de_uso": ["/autofigurinha on", "/autofigurinha off", "/autofigurinha status"],
479
+ "mensagens_uso": {},
480
+ "arguments": [
481
+ {
482
+ "name": "acao",
483
+ "type": "string",
484
+ "required": true,
485
+ "description": "on|off|status",
486
+ "default": null,
487
+ "validation": "on|off|status"
488
+ }
489
+ ],
490
+ "responses": {
491
+ "success": "Comando executado com sucesso.",
492
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
493
+ "permission_error": "Permissão insuficiente para executar este comando.",
494
+ "sucesso": "Comando executado com sucesso.",
495
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
496
+ "erro_permissao": "Permissão insuficiente para executar este comando."
497
+ },
498
+ "technical": {
499
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "estado de auto figurinha no grupo", "acao solicitada (on/off/status)"],
500
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
501
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
502
+ "behavior": {
503
+ "type": "toggle",
504
+ "allowed_actions": ["on", "off", "status"],
505
+ "action_argument": "acao"
506
+ },
507
+ "handler": {
508
+ "file": "groupCommandHandlers.js",
509
+ "method": "handleAdminCommand",
510
+ "command_case": "autosticker"
511
+ },
512
+ "risk_level": "medium",
513
+ "stability": "stable",
514
+ "version": "1.0.0"
515
+ },
516
+ "observability": {
517
+ "event_name": "command.executed",
518
+ "analytics_event": "whatsapp_command_autosticker",
519
+ "tags": ["whatsapp", "command", "adminModule", "autosticker"]
520
+ },
521
+ "privacy": {
522
+ "retention": "standard_app_logs",
523
+ "legal_basis": "service_execution_and_legitimate_interest"
524
+ },
525
+ "discovery": {
526
+ "keywords": ["autofigurinha", "admin", "grupo"],
527
+ "user_phrasings": ["quero usar autofigurinha", "me ajuda com autofigurinha", "ativa/desativa a geracao automatica"],
528
+ "priority": 100
529
+ }
530
+ },
531
+ {
532
+ "key": "adminModule:autosolicitacoes",
533
+ "name": "autosolicitacoes",
534
+ "id": "admin.autosolicitacoes",
535
+ "aliases": ["autorequests"],
536
+ "module": "adminModule",
537
+ "module_label": "adminModule",
538
+ "category": "admin",
539
+ "category_label": "Moderação e Admin",
540
+ "descricao": "Ativa/desativa auto aprovacao de solicitacoes no grupo.",
541
+ "requirements": {
542
+ "group": true,
543
+ "admin": true,
544
+ "owner": false,
545
+ "google_login": true,
546
+ "nsfw": false,
547
+ "media": false,
548
+ "reply": false
549
+ },
550
+ "premium": false,
551
+ "allowed_plans": ["comum", "premium"],
552
+ "rate_limit": null,
553
+ "local_de_uso": ["grupo"],
554
+ "subcomandos": ["on", "off", "status"],
555
+ "metodos_de_uso": ["/autosolicitacoes on", "/autosolicitacoes off", "/autosolicitacoes status"],
556
+ "mensagens_uso": {},
557
+ "arguments": [
558
+ {
559
+ "name": "acao",
560
+ "type": "string",
561
+ "required": true,
562
+ "description": "on|off|status",
563
+ "default": null,
564
+ "validation": "on|off|status"
565
+ }
566
+ ],
567
+ "responses": {
568
+ "success": "Comando executado com sucesso.",
569
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
570
+ "permission_error": "Permissão insuficiente para executar este comando.",
571
+ "sucesso": "Comando executado com sucesso.",
572
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
573
+ "erro_permissao": "Permissão insuficiente para executar este comando."
574
+ },
575
+ "technical": {
576
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "estado da aprovacao automatica do grupo", "acao solicitada (on/off/status)"],
577
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
578
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
579
+ "behavior": {
580
+ "type": "toggle",
581
+ "allowed_actions": ["on", "off", "status"],
582
+ "action_argument": "acao"
583
+ },
584
+ "handler": {
585
+ "file": "groupCommandHandlers.js",
586
+ "method": "handleAdminCommand",
587
+ "command_case": "autorequests"
588
+ },
589
+ "risk_level": "medium",
590
+ "stability": "stable",
591
+ "version": "1.0.0"
592
+ },
593
+ "observability": {
594
+ "event_name": "command.executed",
595
+ "analytics_event": "whatsapp_command_autorequests",
596
+ "tags": ["whatsapp", "command", "adminModule", "autorequests"]
597
+ },
598
+ "privacy": {
599
+ "retention": "standard_app_logs",
600
+ "legal_basis": "service_execution_and_legitimate_interest"
601
+ },
602
+ "discovery": {
603
+ "keywords": ["autosolicitacoes", "admin", "grupo"],
604
+ "user_phrasings": ["quero usar autosolicitacoes", "me ajuda com autosolicitacoes", "ativa/desativa auto aprovacao de"],
605
+ "priority": 100
606
+ }
607
+ },
608
+ {
609
+ "key": "adminModule:banir",
610
+ "name": "banir",
611
+ "id": "admin.banir",
612
+ "aliases": ["remover", "ban"],
613
+ "module": "adminModule",
614
+ "module_label": "adminModule",
615
+ "category": "admin",
616
+ "category_label": "Moderação e Admin",
617
+ "descricao": "Remove participantes do grupo atual.",
618
+ "requirements": {
619
+ "group": true,
620
+ "admin": true,
621
+ "owner": false,
622
+ "google_login": true,
623
+ "nsfw": false,
624
+ "media": false,
625
+ "reply": false
626
+ },
627
+ "premium": false,
628
+ "allowed_plans": ["comum", "premium"],
629
+ "rate_limit": null,
630
+ "local_de_uso": ["grupo"],
631
+ "subcomandos": [],
632
+ "metodos_de_uso": ["/banir @participante"],
633
+ "mensagens_uso": {
634
+ "missing_targets": ["/banir @participante1 @participante2 ...", "Também é possível responder à mensagem do participante desejado."]
635
+ },
636
+ "arguments": [
637
+ {
638
+ "name": "participantes",
639
+ "type": "array",
640
+ "required": true,
641
+ "description": "menções/JIDs válidos",
642
+ "default": [],
643
+ "validation": "menções/JIDs válidos"
644
+ }
645
+ ],
646
+ "responses": {
647
+ "success": "Comando executado com sucesso.",
648
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
649
+ "permission_error": "Permissão insuficiente para executar este comando.",
650
+ "sucesso": "Comando executado com sucesso.",
651
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
652
+ "erro_permissao": "Permissão insuficiente para executar este comando."
653
+ },
654
+ "technical": {
655
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "lista de participantes mencionados/extraidos para remover"],
656
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
657
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
658
+ "behavior": {
659
+ "type": "action_target",
660
+ "target_type": "participant",
661
+ "action": "banir",
662
+ "requires_targets": true
663
+ },
664
+ "handler": {
665
+ "file": "groupCommandHandlers.js",
666
+ "method": "handleAdminCommand",
667
+ "command_case": "ban"
668
+ },
669
+ "risk_level": "high",
670
+ "stability": "stable",
671
+ "version": "1.0.0"
672
+ },
673
+ "observability": {
674
+ "event_name": "command.executed",
675
+ "analytics_event": "whatsapp_command_ban",
676
+ "tags": ["whatsapp", "command", "adminModule", "ban"]
677
+ },
678
+ "privacy": {
679
+ "retention": "standard_app_logs",
680
+ "legal_basis": "service_execution_and_legitimate_interest"
681
+ },
682
+ "discovery": {
683
+ "keywords": ["banir", "admin", "grupo"],
684
+ "user_phrasings": ["quero usar banir", "me ajuda com banir", "remove participantes do grupo"],
685
+ "priority": 100
686
+ }
687
+ },
688
+ {
689
+ "key": "adminModule:boasvindas",
690
+ "name": "boasvindas",
691
+ "id": "admin.boasvindas",
692
+ "aliases": ["welcome"],
693
+ "module": "adminModule",
694
+ "module_label": "adminModule",
695
+ "category": "admin",
696
+ "category_label": "Moderação e Admin",
697
+ "descricao": "Configura mensagens/midia de boas-vindas no grupo.",
698
+ "requirements": {
699
+ "group": true,
700
+ "admin": true,
701
+ "owner": false,
702
+ "google_login": true,
703
+ "nsfw": false,
704
+ "media": false,
705
+ "reply": false
706
+ },
707
+ "premium": false,
708
+ "allowed_plans": ["comum", "premium"],
709
+ "rate_limit": null,
710
+ "local_de_uso": ["grupo"],
711
+ "subcomandos": ["on", "off", "set"],
712
+ "metodos_de_uso": ["/boasvindas on", "/boasvindas off", "/boasvindas set <mensagem_ou_midia>"],
713
+ "mensagens_uso": {
714
+ "missing_content": ["/boasvindas set <mensagem ou caminho da midia>", "Também é possível enviar uma mídia junto ao comando."]
715
+ },
716
+ "arguments": [
717
+ {
718
+ "name": "acao",
719
+ "type": "string",
720
+ "required": true,
721
+ "description": "on|off|set",
722
+ "default": null,
723
+ "validation": "on|off|set"
724
+ },
725
+ {
726
+ "name": "mensagem_ou_midia",
727
+ "type": "string",
728
+ "required": false,
729
+ "description": "texto, caminho local ou mídia anexada",
730
+ "default": null,
731
+ "validation": "texto, caminho local ou mídia anexada"
732
+ }
733
+ ],
734
+ "responses": {
735
+ "success": "Comando executado com sucesso.",
736
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
737
+ "permission_error": "Permissão insuficiente para executar este comando.",
738
+ "sucesso": "Comando executado com sucesso.",
739
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
740
+ "erro_permissao": "Permissão insuficiente para executar este comando."
741
+ },
742
+ "technical": {
743
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "subcomando (on/off/set)", "mensagem textual ou caminho de midia informado", "midia anexada/citada para salvar na configuracao do grupo"],
744
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
745
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
746
+ "behavior": {
747
+ "type": "subcommand",
748
+ "allowed_actions": ["on", "off", "set"],
749
+ "action_argument": "acao",
750
+ "supports_media_or_text": true
751
+ },
752
+ "handler": {
753
+ "file": "groupCommandHandlers.js",
754
+ "method": "handleAdminCommand",
755
+ "command_case": "welcome"
756
+ },
757
+ "risk_level": "medium",
758
+ "stability": "stable",
759
+ "version": "1.0.0"
760
+ },
761
+ "observability": {
762
+ "event_name": "command.executed",
763
+ "analytics_event": "whatsapp_command_welcome",
764
+ "tags": ["whatsapp", "command", "adminModule", "welcome"]
765
+ },
766
+ "privacy": {
767
+ "retention": "standard_app_logs",
768
+ "legal_basis": "service_execution_and_legitimate_interest"
769
+ },
770
+ "discovery": {
771
+ "keywords": ["boasvindas", "admin", "grupo"],
772
+ "user_phrasings": ["quero usar boasvindas", "me ajuda com boasvindas", "configura mensagens/midia de boas-vindas"],
773
+ "priority": 100
774
+ }
775
+ },
776
+ {
777
+ "key": "adminModule:captcha",
778
+ "name": "captcha",
779
+ "id": "admin.captcha",
780
+ "aliases": [],
781
+ "module": "adminModule",
782
+ "module_label": "adminModule",
783
+ "category": "admin",
784
+ "category_label": "Moderação e Admin",
785
+ "descricao": "Ativa/desativa captcha para novos membros no grupo.",
786
+ "requirements": {
787
+ "group": true,
788
+ "admin": true,
789
+ "owner": false,
790
+ "google_login": true,
791
+ "nsfw": false,
792
+ "media": false,
793
+ "reply": false
794
+ },
795
+ "premium": false,
796
+ "allowed_plans": ["comum", "premium"],
797
+ "rate_limit": null,
798
+ "local_de_uso": ["grupo"],
799
+ "subcomandos": ["on", "off", "status"],
800
+ "metodos_de_uso": ["/captcha on", "/captcha off", "/captcha status"],
801
+ "mensagens_uso": {},
802
+ "arguments": [
803
+ {
804
+ "name": "acao",
805
+ "type": "string",
806
+ "required": true,
807
+ "description": "on|off|status",
808
+ "default": null,
809
+ "validation": "on|off|status"
810
+ }
811
+ ],
812
+ "responses": {
813
+ "success": "Comando executado com sucesso.",
814
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
815
+ "permission_error": "Permissão insuficiente para executar este comando.",
816
+ "sucesso": "Comando executado com sucesso.",
817
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
818
+ "erro_permissao": "Permissão insuficiente para executar este comando."
819
+ },
820
+ "technical": {
821
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "status atual de captcha do grupo", "acao solicitada (on/off/status)"],
822
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
823
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
824
+ "behavior": {
825
+ "type": "toggle",
826
+ "allowed_actions": ["on", "off", "status"],
827
+ "action_argument": "acao"
828
+ },
829
+ "handler": {
830
+ "file": "groupCommandHandlers.js",
831
+ "method": "handleAdminCommand",
832
+ "command_case": "captcha"
833
+ },
834
+ "risk_level": "medium",
835
+ "stability": "stable",
836
+ "version": "1.0.0"
837
+ },
838
+ "observability": {
839
+ "event_name": "command.executed",
840
+ "analytics_event": "whatsapp_command_captcha",
841
+ "tags": ["whatsapp", "command", "adminModule", "captcha"]
842
+ },
843
+ "privacy": {
844
+ "retention": "standard_app_logs",
845
+ "legal_basis": "service_execution_and_legitimate_interest"
846
+ },
847
+ "discovery": {
848
+ "keywords": ["captcha", "admin", "grupo"],
849
+ "user_phrasings": ["quero usar captcha", "me ajuda com captcha", "ativa/desativa captcha para novos"],
850
+ "priority": 100
851
+ }
852
+ },
853
+ {
854
+ "key": "adminModule:configgrupo",
855
+ "name": "configgrupo",
856
+ "id": "admin.configgrupo",
857
+ "aliases": ["setgroup"],
858
+ "module": "adminModule",
859
+ "module_label": "adminModule",
860
+ "category": "admin",
861
+ "category_label": "Moderação e Admin",
862
+ "descricao": "Define estado do grupo (anuncio/aberto/locked/unlocked).",
863
+ "requirements": {
864
+ "group": true,
865
+ "admin": true,
866
+ "owner": false,
867
+ "google_login": true,
868
+ "nsfw": false,
869
+ "media": false,
870
+ "reply": false
871
+ },
872
+ "premium": false,
873
+ "allowed_plans": ["comum", "premium"],
874
+ "rate_limit": null,
875
+ "local_de_uso": ["grupo"],
876
+ "subcomandos": ["announcement", "not_announcement", "locked", "unlocked"],
877
+ "metodos_de_uso": ["/configgrupo announcement", "/configgrupo not_announcement", "/configgrupo locked", "/configgrupo unlocked"],
878
+ "mensagens_uso": {
879
+ "default": ["/configgrupo <announcement|not_announcement|locked|unlocked>"]
880
+ },
881
+ "arguments": [
882
+ {
883
+ "name": "modo",
884
+ "type": "string",
885
+ "required": true,
886
+ "description": "announcement|not_announcement|locked|unlocked",
887
+ "default": null,
888
+ "validation": "announcement|not_announcement|locked|unlocked"
889
+ }
890
+ ],
891
+ "responses": {
892
+ "success": "Comando executado com sucesso.",
893
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
894
+ "permission_error": "Permissão insuficiente para executar este comando.",
895
+ "sucesso": "Comando executado com sucesso.",
896
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
897
+ "erro_permissao": "Permissão insuficiente para executar este comando."
898
+ },
899
+ "technical": {
900
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "modo de configuracao do grupo (announcement/locked etc.)"],
901
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
902
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
903
+ "behavior": {
904
+ "type": "subcommand",
905
+ "allowed_actions": ["announcement", "not_announcement", "locked", "unlocked"],
906
+ "action_argument": "acao"
907
+ },
908
+ "handler": {
909
+ "file": "groupCommandHandlers.js",
910
+ "method": "handleAdminCommand",
911
+ "command_case": "setgroup"
912
+ },
913
+ "risk_level": "high",
914
+ "stability": "stable",
915
+ "version": "1.0.0"
916
+ },
917
+ "observability": {
918
+ "event_name": "command.executed",
919
+ "analytics_event": "whatsapp_command_setgroup",
920
+ "tags": ["whatsapp", "command", "adminModule", "setgroup"]
921
+ },
922
+ "privacy": {
923
+ "retention": "standard_app_logs",
924
+ "legal_basis": "service_execution_and_legitimate_interest"
925
+ },
926
+ "discovery": {
927
+ "keywords": ["configgrupo", "admin", "grupo"],
928
+ "user_phrasings": ["quero usar configgrupo", "me ajuda com configgrupo", "define estado do grupo"],
929
+ "priority": 100
930
+ }
931
+ },
932
+ {
933
+ "key": "adminModule:convite",
934
+ "name": "convite",
935
+ "id": "admin.convite",
936
+ "aliases": ["invite"],
937
+ "module": "adminModule",
938
+ "module_label": "adminModule",
939
+ "category": "admin",
940
+ "category_label": "Moderação e Admin",
941
+ "descricao": "Mostra codigo de convite atual do grupo.",
942
+ "requirements": {
943
+ "group": true,
944
+ "admin": true,
945
+ "owner": false,
946
+ "google_login": true,
947
+ "nsfw": false,
948
+ "media": false,
949
+ "reply": false
950
+ },
951
+ "premium": false,
952
+ "allowed_plans": ["comum", "premium"],
953
+ "rate_limit": null,
954
+ "local_de_uso": ["grupo"],
955
+ "subcomandos": [],
956
+ "metodos_de_uso": ["/convite"],
957
+ "mensagens_uso": {},
958
+ "arguments": [],
959
+ "responses": {
960
+ "success": "Comando executado com sucesso.",
961
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
962
+ "permission_error": "Permissão insuficiente para executar este comando.",
963
+ "sucesso": "Comando executado com sucesso.",
964
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
965
+ "erro_permissao": "Permissão insuficiente para executar este comando."
966
+ },
967
+ "technical": {
968
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "id do grupo para obter codigo de convite"],
969
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
970
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
971
+ "behavior": {
972
+ "type": "single_action",
973
+ "argument_count": 0
974
+ },
975
+ "handler": {
976
+ "file": "groupCommandHandlers.js",
977
+ "method": "handleAdminCommand",
978
+ "command_case": "invite"
979
+ },
980
+ "risk_level": "low",
981
+ "stability": "stable",
982
+ "version": "1.0.0"
983
+ },
984
+ "observability": {
985
+ "event_name": "command.executed",
986
+ "analytics_event": "whatsapp_command_invite",
987
+ "tags": ["whatsapp", "command", "adminModule", "invite"]
988
+ },
989
+ "privacy": {
990
+ "retention": "standard_app_logs",
991
+ "legal_basis": "service_execution_and_legitimate_interest"
992
+ },
993
+ "discovery": {
994
+ "keywords": ["convite", "admin", "grupo"],
995
+ "user_phrasings": ["quero usar convite", "me ajuda com convite", "mostra codigo de convite"],
996
+ "priority": 100
997
+ }
998
+ },
999
+ {
1000
+ "key": "adminModule:descricao",
1001
+ "name": "descricao",
1002
+ "id": "admin.descricao",
1003
+ "aliases": ["setdesc"],
1004
+ "module": "adminModule",
1005
+ "module_label": "adminModule",
1006
+ "category": "admin",
1007
+ "category_label": "Moderação e Admin",
1008
+ "descricao": "Altera descricao do grupo.",
1009
+ "requirements": {
1010
+ "group": true,
1011
+ "admin": true,
1012
+ "owner": false,
1013
+ "google_login": true,
1014
+ "nsfw": false,
1015
+ "media": false,
1016
+ "reply": false
1017
+ },
1018
+ "premium": false,
1019
+ "allowed_plans": ["comum", "premium"],
1020
+ "rate_limit": null,
1021
+ "local_de_uso": ["grupo"],
1022
+ "subcomandos": [],
1023
+ "metodos_de_uso": ["/descricao nova descricao"],
1024
+ "mensagens_uso": {
1025
+ "default": ["/descricao <nova_descricao>"]
1026
+ },
1027
+ "arguments": [
1028
+ {
1029
+ "name": "descricao",
1030
+ "type": "string",
1031
+ "required": true,
1032
+ "description": "texto não vazio",
1033
+ "default": null,
1034
+ "validation": "texto não vazio"
1035
+ }
1036
+ ],
1037
+ "responses": {
1038
+ "success": "Comando executado com sucesso.",
1039
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1040
+ "permission_error": "Permissão insuficiente para executar este comando.",
1041
+ "sucesso": "Comando executado com sucesso.",
1042
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1043
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1044
+ },
1045
+ "technical": {
1046
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "nova descricao do grupo informada no comando"],
1047
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1048
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1049
+ "behavior": {
1050
+ "type": "argument_driven",
1051
+ "argument_count": 1
1052
+ },
1053
+ "handler": {
1054
+ "file": "groupCommandHandlers.js",
1055
+ "method": "handleAdminCommand",
1056
+ "command_case": "setdesc"
1057
+ },
1058
+ "risk_level": "low",
1059
+ "stability": "stable",
1060
+ "version": "1.0.0"
1061
+ },
1062
+ "observability": {
1063
+ "event_name": "command.executed",
1064
+ "analytics_event": "whatsapp_command_setdesc",
1065
+ "tags": ["whatsapp", "command", "adminModule", "setdesc"]
1066
+ },
1067
+ "privacy": {
1068
+ "retention": "standard_app_logs",
1069
+ "legal_basis": "service_execution_and_legitimate_interest"
1070
+ },
1071
+ "discovery": {
1072
+ "keywords": ["descricao", "admin", "grupo"],
1073
+ "user_phrasings": ["quero usar descricao", "me ajuda com descricao", "altera descricao do grupo."],
1074
+ "priority": 100
1075
+ }
1076
+ },
1077
+ {
1078
+ "key": "adminModule:despedida",
1079
+ "name": "despedida",
1080
+ "id": "admin.despedida",
1081
+ "aliases": ["farewell"],
1082
+ "module": "adminModule",
1083
+ "module_label": "adminModule",
1084
+ "category": "admin",
1085
+ "category_label": "Moderação e Admin",
1086
+ "descricao": "Configura mensagens/midia de despedida no grupo.",
1087
+ "requirements": {
1088
+ "group": true,
1089
+ "admin": true,
1090
+ "owner": false,
1091
+ "google_login": true,
1092
+ "nsfw": false,
1093
+ "media": false,
1094
+ "reply": false
1095
+ },
1096
+ "premium": false,
1097
+ "allowed_plans": ["comum", "premium"],
1098
+ "rate_limit": null,
1099
+ "local_de_uso": ["grupo"],
1100
+ "subcomandos": ["on", "off", "set"],
1101
+ "metodos_de_uso": ["/despedida on", "/despedida off", "/despedida set <mensagem_ou_midia>"],
1102
+ "mensagens_uso": {
1103
+ "missing_content": ["/despedida set <mensagem ou caminho da midia>", "Também é possível enviar uma mídia junto ao comando."]
1104
+ },
1105
+ "arguments": [
1106
+ {
1107
+ "name": "acao",
1108
+ "type": "string",
1109
+ "required": true,
1110
+ "description": "on|off|set",
1111
+ "default": null,
1112
+ "validation": "on|off|set"
1113
+ },
1114
+ {
1115
+ "name": "mensagem_ou_midia",
1116
+ "type": "string",
1117
+ "required": false,
1118
+ "description": "texto, caminho local ou mídia anexada",
1119
+ "default": null,
1120
+ "validation": "texto, caminho local ou mídia anexada"
1121
+ }
1122
+ ],
1123
+ "responses": {
1124
+ "success": "Comando executado com sucesso.",
1125
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1126
+ "permission_error": "Permissão insuficiente para executar este comando.",
1127
+ "sucesso": "Comando executado com sucesso.",
1128
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1129
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1130
+ },
1131
+ "technical": {
1132
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "subcomando (on/off/set)", "mensagem textual ou caminho de midia informado", "midia anexada/citada para salvar na configuracao do grupo"],
1133
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1134
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1135
+ "behavior": {
1136
+ "type": "subcommand",
1137
+ "allowed_actions": ["on", "off", "set"],
1138
+ "action_argument": "acao",
1139
+ "supports_media_or_text": true
1140
+ },
1141
+ "handler": {
1142
+ "file": "groupCommandHandlers.js",
1143
+ "method": "handleAdminCommand",
1144
+ "command_case": "farewell"
1145
+ },
1146
+ "risk_level": "medium",
1147
+ "stability": "stable",
1148
+ "version": "1.0.0"
1149
+ },
1150
+ "observability": {
1151
+ "event_name": "command.executed",
1152
+ "analytics_event": "whatsapp_command_farewell",
1153
+ "tags": ["whatsapp", "command", "adminModule", "farewell"]
1154
+ },
1155
+ "privacy": {
1156
+ "retention": "standard_app_logs",
1157
+ "legal_basis": "service_execution_and_legitimate_interest"
1158
+ },
1159
+ "discovery": {
1160
+ "keywords": ["despedida", "admin", "grupo"],
1161
+ "user_phrasings": ["quero usar despedida", "me ajuda com despedida", "configura mensagens/midia de despedida"],
1162
+ "priority": 100
1163
+ }
1164
+ },
1165
+ {
1166
+ "key": "adminModule:entrar",
1167
+ "name": "entrar",
1168
+ "id": "admin.entrar",
1169
+ "aliases": ["join"],
1170
+ "module": "adminModule",
1171
+ "module_label": "adminModule",
1172
+ "category": "admin",
1173
+ "category_label": "Moderação e Admin",
1174
+ "descricao": "Faz o bot entrar em grupo por codigo de convite.",
1175
+ "requirements": {
1176
+ "group": false,
1177
+ "admin": false,
1178
+ "owner": false,
1179
+ "google_login": true,
1180
+ "nsfw": false,
1181
+ "media": false,
1182
+ "reply": false
1183
+ },
1184
+ "premium": false,
1185
+ "allowed_plans": ["comum", "premium"],
1186
+ "rate_limit": null,
1187
+ "local_de_uso": ["privado", "grupo"],
1188
+ "subcomandos": [],
1189
+ "metodos_de_uso": ["/entrar <codigo_de_convite>"],
1190
+ "mensagens_uso": {},
1191
+ "arguments": [
1192
+ {
1193
+ "name": "codigo_convite",
1194
+ "type": "string",
1195
+ "required": true,
1196
+ "description": "token de convite válido",
1197
+ "default": null,
1198
+ "validation": "token de convite válido"
1199
+ }
1200
+ ],
1201
+ "responses": {
1202
+ "success": "Comando executado com sucesso.",
1203
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1204
+ "permission_error": "Permissão insuficiente para executar este comando.",
1205
+ "sucesso": "Comando executado com sucesso.",
1206
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1207
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1208
+ },
1209
+ "technical": {
1210
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "codigo de convite informado no argumento"],
1211
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1212
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1213
+ "behavior": {
1214
+ "type": "argument_driven",
1215
+ "argument_count": 1
1216
+ },
1217
+ "handler": {
1218
+ "file": "groupCommandHandlers.js",
1219
+ "method": "handleAdminCommand",
1220
+ "command_case": "join"
1221
+ },
1222
+ "risk_level": "low",
1223
+ "stability": "stable",
1224
+ "version": "1.0.0"
1225
+ },
1226
+ "observability": {
1227
+ "event_name": "command.executed",
1228
+ "analytics_event": "whatsapp_command_join",
1229
+ "tags": ["whatsapp", "command", "adminModule", "join"]
1230
+ },
1231
+ "privacy": {
1232
+ "retention": "standard_app_logs",
1233
+ "legal_basis": "service_execution_and_legitimate_interest"
1234
+ },
1235
+ "discovery": {
1236
+ "keywords": ["entrar", "admin", "privado", "grupo"],
1237
+ "user_phrasings": ["quero usar entrar", "me ajuda com entrar", "faz o bot entrar"],
1238
+ "priority": 100
1239
+ }
1240
+ },
1241
+ {
1242
+ "key": "adminModule:infoconvite",
1243
+ "name": "infoconvite",
1244
+ "id": "admin.infoconvite",
1245
+ "aliases": ["infofrominvite"],
1246
+ "module": "adminModule",
1247
+ "module_label": "adminModule",
1248
+ "category": "admin",
1249
+ "category_label": "Moderação e Admin",
1250
+ "descricao": "Consulta dados de um grupo usando codigo de convite.",
1251
+ "requirements": {
1252
+ "group": false,
1253
+ "admin": false,
1254
+ "owner": false,
1255
+ "google_login": true,
1256
+ "nsfw": false,
1257
+ "media": false,
1258
+ "reply": false
1259
+ },
1260
+ "premium": false,
1261
+ "allowed_plans": ["comum", "premium"],
1262
+ "rate_limit": null,
1263
+ "local_de_uso": ["privado", "grupo"],
1264
+ "subcomandos": [],
1265
+ "metodos_de_uso": ["/infoconvite <codigo_de_convite>"],
1266
+ "mensagens_uso": {},
1267
+ "arguments": [
1268
+ {
1269
+ "name": "codigo_convite",
1270
+ "type": "string",
1271
+ "required": true,
1272
+ "description": "token de convite válido",
1273
+ "default": null,
1274
+ "validation": "token de convite válido"
1275
+ }
1276
+ ],
1277
+ "responses": {
1278
+ "success": "Comando executado com sucesso.",
1279
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1280
+ "permission_error": "Permissão insuficiente para executar este comando.",
1281
+ "sucesso": "Comando executado com sucesso.",
1282
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1283
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1284
+ },
1285
+ "technical": {
1286
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "codigo de convite para consulta de metadados"],
1287
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1288
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1289
+ "behavior": {
1290
+ "type": "argument_driven",
1291
+ "argument_count": 1
1292
+ },
1293
+ "handler": {
1294
+ "file": "groupCommandHandlers.js",
1295
+ "method": "handleAdminCommand",
1296
+ "command_case": "infofrominvite"
1297
+ },
1298
+ "risk_level": "low",
1299
+ "stability": "stable",
1300
+ "version": "1.0.0"
1301
+ },
1302
+ "observability": {
1303
+ "event_name": "command.executed",
1304
+ "analytics_event": "whatsapp_command_infofrominvite",
1305
+ "tags": ["whatsapp", "command", "adminModule", "infofrominvite"]
1306
+ },
1307
+ "privacy": {
1308
+ "retention": "standard_app_logs",
1309
+ "legal_basis": "service_execution_and_legitimate_interest"
1310
+ },
1311
+ "discovery": {
1312
+ "keywords": ["infoconvite", "admin", "privado", "grupo"],
1313
+ "user_phrasings": ["quero usar infoconvite", "me ajuda com infoconvite", "consulta dados de um"],
1314
+ "priority": 100
1315
+ }
1316
+ },
1317
+ {
1318
+ "key": "adminModule:janelachat",
1319
+ "name": "janelachat",
1320
+ "id": "admin.janelachat",
1321
+ "aliases": ["chat", "chatwindow"],
1322
+ "module": "adminModule",
1323
+ "module_label": "adminModule",
1324
+ "category": "admin",
1325
+ "category_label": "Moderação e Admin",
1326
+ "descricao": "Abre/fecha janela temporaria de chat livre no modo sticker.",
1327
+ "requirements": {
1328
+ "group": true,
1329
+ "admin": true,
1330
+ "owner": false,
1331
+ "google_login": true,
1332
+ "nsfw": false,
1333
+ "media": false,
1334
+ "reply": false
1335
+ },
1336
+ "premium": false,
1337
+ "allowed_plans": ["comum", "premium"],
1338
+ "rate_limit": null,
1339
+ "local_de_uso": ["grupo"],
1340
+ "subcomandos": ["on", "off", "status"],
1341
+ "metodos_de_uso": ["/janelachat on", "/janelachat off", "/janelachat status", "/janelachat on 15"],
1342
+ "mensagens_uso": {},
1343
+ "arguments": [
1344
+ {
1345
+ "name": "acao",
1346
+ "type": "string",
1347
+ "required": true,
1348
+ "description": "on|off|status",
1349
+ "default": null,
1350
+ "validation": "on|off|status"
1351
+ },
1352
+ {
1353
+ "name": "minutos",
1354
+ "type": "integer",
1355
+ "required": false,
1356
+ "description": "inteiro positivo dentro dos limites do módulo",
1357
+ "default": null,
1358
+ "validation": "inteiro positivo dentro dos limites do módulo"
1359
+ }
1360
+ ],
1361
+ "responses": {
1362
+ "success": "Comando executado com sucesso.",
1363
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1364
+ "permission_error": "Permissão insuficiente para executar este comando.",
1365
+ "sucesso": "Comando executado com sucesso.",
1366
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1367
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1368
+ },
1369
+ "technical": {
1370
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "acao da janela de chat (on/off/status)", "duracao em minutos quando informada"],
1371
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1372
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1373
+ "behavior": {
1374
+ "type": "toggle",
1375
+ "allowed_actions": ["on", "off", "status"],
1376
+ "action_argument": "acao"
1377
+ },
1378
+ "handler": {
1379
+ "file": "groupCommandHandlers.js",
1380
+ "method": "handleAdminCommand",
1381
+ "command_case": "chatwindow"
1382
+ },
1383
+ "risk_level": "medium",
1384
+ "stability": "stable",
1385
+ "version": "1.0.0"
1386
+ },
1387
+ "observability": {
1388
+ "event_name": "command.executed",
1389
+ "analytics_event": "whatsapp_command_chatwindow",
1390
+ "tags": ["whatsapp", "command", "adminModule", "chatwindow"]
1391
+ },
1392
+ "privacy": {
1393
+ "retention": "standard_app_logs",
1394
+ "legal_basis": "service_execution_and_legitimate_interest"
1395
+ },
1396
+ "discovery": {
1397
+ "keywords": ["janelachat", "chat", "admin", "grupo"],
1398
+ "user_phrasings": ["quero usar janelachat", "me ajuda com janelachat", "abre/fecha janela temporaria de"],
1399
+ "priority": 100
1400
+ }
1401
+ },
1402
+ {
1403
+ "key": "adminModule:limitefigurinha",
1404
+ "name": "limitefigurinha",
1405
+ "id": "admin.limitefigurinha",
1406
+ "aliases": ["smsglimit", "stickertextlimit", "stextlimit", "stickermsglimit"],
1407
+ "module": "adminModule",
1408
+ "module_label": "adminModule",
1409
+ "category": "admin",
1410
+ "category_label": "Moderação e Admin",
1411
+ "descricao": "Define limite de mensagens por usuario no modo sticker.",
1412
+ "requirements": {
1413
+ "group": true,
1414
+ "admin": true,
1415
+ "owner": false,
1416
+ "google_login": true,
1417
+ "nsfw": false,
1418
+ "media": false,
1419
+ "reply": false
1420
+ },
1421
+ "premium": false,
1422
+ "allowed_plans": ["comum", "premium"],
1423
+ "rate_limit": null,
1424
+ "local_de_uso": ["grupo"],
1425
+ "subcomandos": ["<minutos>", "status", "reset"],
1426
+ "metodos_de_uso": ["/limitefigurinha 5", "/limitefigurinha status", "/limitefigurinha reset"],
1427
+ "mensagens_uso": {},
1428
+ "arguments": [
1429
+ {
1430
+ "name": "valor",
1431
+ "type": "string",
1432
+ "required": true,
1433
+ "description": "minutos|status|reset",
1434
+ "default": null,
1435
+ "validation": "minutos|status|reset"
1436
+ }
1437
+ ],
1438
+ "responses": {
1439
+ "success": "Comando executado com sucesso.",
1440
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1441
+ "permission_error": "Permissão insuficiente para executar este comando.",
1442
+ "sucesso": "Comando executado com sucesso.",
1443
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1444
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1445
+ },
1446
+ "technical": {
1447
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "minutos/acao informados para limite de mensagens", "configuracao atual de cooldown do grupo"],
1448
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1449
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1450
+ "behavior": {
1451
+ "type": "subcommand",
1452
+ "allowed_actions": ["set", "status", "reset"],
1453
+ "action_argument": "valor"
1454
+ },
1455
+ "handler": {
1456
+ "file": "groupCommandHandlers.js",
1457
+ "method": "handleAdminCommand",
1458
+ "command_case": "stickermsglimit"
1459
+ },
1460
+ "risk_level": "medium",
1461
+ "stability": "stable",
1462
+ "version": "1.0.0"
1463
+ },
1464
+ "observability": {
1465
+ "event_name": "command.executed",
1466
+ "analytics_event": "whatsapp_command_stickermsglimit",
1467
+ "tags": ["whatsapp", "command", "adminModule", "stickermsglimit"]
1468
+ },
1469
+ "privacy": {
1470
+ "retention": "standard_app_logs",
1471
+ "legal_basis": "service_execution_and_legitimate_interest"
1472
+ },
1473
+ "discovery": {
1474
+ "keywords": ["limitefigurinha", "smsglimit", "stickertextlimit", "stextlimit", "admin", "grupo"],
1475
+ "user_phrasings": ["quero usar limitefigurinha", "me ajuda com limitefigurinha", "define limite de mensagens"],
1476
+ "priority": 100
1477
+ }
1478
+ },
1479
+ {
1480
+ "key": "adminModule:menuadmin",
1481
+ "name": "menuadmin",
1482
+ "id": "admin.menuadmin",
1483
+ "aliases": ["adm", "menuadm"],
1484
+ "module": "adminModule",
1485
+ "module_label": "adminModule",
1486
+ "category": "admin",
1487
+ "category_label": "Moderação e Admin",
1488
+ "descricao": "Exibe menu administrativo do bot para o grupo.",
1489
+ "requirements": {
1490
+ "group": true,
1491
+ "admin": true,
1492
+ "owner": false,
1493
+ "google_login": true,
1494
+ "nsfw": false,
1495
+ "media": false,
1496
+ "reply": false
1497
+ },
1498
+ "premium": false,
1499
+ "allowed_plans": ["comum", "premium"],
1500
+ "rate_limit": null,
1501
+ "local_de_uso": ["grupo"],
1502
+ "subcomandos": ["ajuda", "faq", "perguntar"],
1503
+ "metodos_de_uso": ["/menuadmin", "/menuadmin ajuda <comando>", "/menuadmin faq", "/menuadmin perguntar <pergunta>"],
1504
+ "mensagens_uso": {
1505
+ "default": ["/menuadmin", "/menuadmin ajuda <comando>", "/menuadmin faq", "/menuadmin perguntar <pergunta>"],
1506
+ "help": ["/menuadmin ajuda <comando>"],
1507
+ "ask": ["/menuadmin perguntar <pergunta>"]
1508
+ },
1509
+ "arguments": [],
1510
+ "responses": {
1511
+ "success": "Comando executado com sucesso.",
1512
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1513
+ "permission_error": "Permissão insuficiente para executar este comando.",
1514
+ "sucesso": "Comando executado com sucesso.",
1515
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1516
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1517
+ },
1518
+ "technical": {
1519
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "contexto de grupo e validacao de permissao de admin"],
1520
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1521
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1522
+ "behavior": {
1523
+ "type": "subcommand",
1524
+ "allowed_actions": ["ajuda", "faq", "perguntar"],
1525
+ "action_argument": "acao"
1526
+ },
1527
+ "handler": {
1528
+ "file": "groupCommandHandlers.js",
1529
+ "method": "handleAdminCommand",
1530
+ "command_case": "menuadm"
1531
+ },
1532
+ "risk_level": "medium",
1533
+ "stability": "stable",
1534
+ "version": "1.0.0"
1535
+ },
1536
+ "observability": {
1537
+ "event_name": "command.executed",
1538
+ "analytics_event": "whatsapp_command_menuadm",
1539
+ "tags": ["whatsapp", "command", "adminModule", "menuadm"]
1540
+ },
1541
+ "privacy": {
1542
+ "retention": "standard_app_logs",
1543
+ "legal_basis": "service_execution_and_legitimate_interest"
1544
+ },
1545
+ "discovery": {
1546
+ "keywords": ["menuadmin", "admin", "grupo"],
1547
+ "user_phrasings": ["quero usar menuadmin", "me ajuda com menuadmin", "exibe menu administrativo do"],
1548
+ "priority": 100
1549
+ }
1550
+ },
1551
+ {
1552
+ "key": "adminModule:metadados",
1553
+ "name": "metadados",
1554
+ "id": "admin.metadados",
1555
+ "aliases": ["metadata"],
1556
+ "module": "adminModule",
1557
+ "module_label": "adminModule",
1558
+ "category": "admin",
1559
+ "category_label": "Moderação e Admin",
1560
+ "descricao": "Retorna metadados de um grupo informado ou do grupo atual.",
1561
+ "requirements": {
1562
+ "group": false,
1563
+ "admin": true,
1564
+ "owner": false,
1565
+ "google_login": true,
1566
+ "nsfw": false,
1567
+ "media": false,
1568
+ "reply": false
1569
+ },
1570
+ "premium": false,
1571
+ "allowed_plans": ["comum", "premium"],
1572
+ "rate_limit": null,
1573
+ "local_de_uso": ["privado", "grupo"],
1574
+ "subcomandos": [],
1575
+ "metodos_de_uso": ["/metadados", "/metadados <group_jid>"],
1576
+ "mensagens_uso": {},
1577
+ "arguments": [
1578
+ {
1579
+ "name": "group_id",
1580
+ "type": "string",
1581
+ "required": false,
1582
+ "description": "JID de grupo válido",
1583
+ "default": "grupo atual",
1584
+ "validation": "JID de grupo válido"
1585
+ }
1586
+ ],
1587
+ "responses": {
1588
+ "success": "Comando executado com sucesso.",
1589
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1590
+ "permission_error": "Permissão insuficiente para executar este comando.",
1591
+ "sucesso": "Comando executado com sucesso.",
1592
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1593
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1594
+ },
1595
+ "technical": {
1596
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "id do grupo alvo (argumento ou grupo atual)", "metadados do grupo retornados pela API do WhatsApp"],
1597
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1598
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1599
+ "behavior": {
1600
+ "type": "argument_driven",
1601
+ "argument_count": 1
1602
+ },
1603
+ "handler": {
1604
+ "file": "groupCommandHandlers.js",
1605
+ "method": "handleAdminCommand",
1606
+ "command_case": "metadata"
1607
+ },
1608
+ "risk_level": "low",
1609
+ "stability": "stable",
1610
+ "version": "1.0.0"
1611
+ },
1612
+ "observability": {
1613
+ "event_name": "command.executed",
1614
+ "analytics_event": "whatsapp_command_metadata",
1615
+ "tags": ["whatsapp", "command", "adminModule", "metadata"]
1616
+ },
1617
+ "privacy": {
1618
+ "retention": "standard_app_logs",
1619
+ "legal_basis": "service_execution_and_legitimate_interest"
1620
+ },
1621
+ "discovery": {
1622
+ "keywords": ["metadados", "admin", "privado", "grupo"],
1623
+ "user_phrasings": ["quero usar metadados", "me ajuda com metadados", "retorna metadados de um"],
1624
+ "priority": 100
1625
+ }
1626
+ },
1627
+ {
1628
+ "key": "adminModule:modoadicao",
1629
+ "name": "modoadicao",
1630
+ "id": "admin.modoadicao",
1631
+ "aliases": ["addmode"],
1632
+ "module": "adminModule",
1633
+ "module_label": "adminModule",
1634
+ "category": "admin",
1635
+ "category_label": "Moderação e Admin",
1636
+ "descricao": "Define quem pode adicionar participantes no grupo.",
1637
+ "requirements": {
1638
+ "group": true,
1639
+ "admin": true,
1640
+ "owner": false,
1641
+ "google_login": true,
1642
+ "nsfw": false,
1643
+ "media": false,
1644
+ "reply": false
1645
+ },
1646
+ "premium": false,
1647
+ "allowed_plans": ["comum", "premium"],
1648
+ "rate_limit": null,
1649
+ "local_de_uso": ["grupo"],
1650
+ "subcomandos": [],
1651
+ "metodos_de_uso": ["/modoadicao all_member_add", "/modoadicao admin_add"],
1652
+ "mensagens_uso": {},
1653
+ "arguments": [
1654
+ {
1655
+ "name": "modo",
1656
+ "type": "string",
1657
+ "required": true,
1658
+ "description": "all_member_add|admin_add",
1659
+ "default": null,
1660
+ "validation": "all_member_add|admin_add"
1661
+ }
1662
+ ],
1663
+ "responses": {
1664
+ "success": "Comando executado com sucesso.",
1665
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1666
+ "permission_error": "Permissão insuficiente para executar este comando.",
1667
+ "sucesso": "Comando executado com sucesso.",
1668
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1669
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1670
+ },
1671
+ "technical": {
1672
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "modo de adicao de participantes (all_member_add/admin_add)"],
1673
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1674
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1675
+ "behavior": {
1676
+ "type": "argument_driven",
1677
+ "argument_count": 1
1678
+ },
1679
+ "handler": {
1680
+ "file": "groupCommandHandlers.js",
1681
+ "method": "handleAdminCommand",
1682
+ "command_case": "addmode"
1683
+ },
1684
+ "risk_level": "low",
1685
+ "stability": "stable",
1686
+ "version": "1.0.0"
1687
+ },
1688
+ "observability": {
1689
+ "event_name": "command.executed",
1690
+ "analytics_event": "whatsapp_command_addmode",
1691
+ "tags": ["whatsapp", "command", "adminModule", "addmode"]
1692
+ },
1693
+ "privacy": {
1694
+ "retention": "standard_app_logs",
1695
+ "legal_basis": "service_execution_and_legitimate_interest"
1696
+ },
1697
+ "discovery": {
1698
+ "keywords": ["modoadicao", "admin", "grupo"],
1699
+ "user_phrasings": ["quero usar modoadicao", "me ajuda com modoadicao", "define quem pode adicionar"],
1700
+ "priority": 100
1701
+ }
1702
+ },
1703
+ {
1704
+ "key": "adminModule:modofigurinha",
1705
+ "name": "modofigurinha",
1706
+ "id": "admin.modofigurinha",
1707
+ "aliases": ["smode", "stickermode"],
1708
+ "module": "adminModule",
1709
+ "module_label": "adminModule",
1710
+ "category": "admin",
1711
+ "category_label": "Moderação e Admin",
1712
+ "descricao": "Controla modo foco em figurinhas no grupo.",
1713
+ "requirements": {
1714
+ "group": true,
1715
+ "admin": true,
1716
+ "owner": false,
1717
+ "google_login": true,
1718
+ "nsfw": false,
1719
+ "media": false,
1720
+ "reply": false
1721
+ },
1722
+ "premium": false,
1723
+ "allowed_plans": ["comum", "premium"],
1724
+ "rate_limit": null,
1725
+ "local_de_uso": ["grupo"],
1726
+ "subcomandos": ["on", "off", "status"],
1727
+ "metodos_de_uso": ["/modofigurinha on", "/modofigurinha off", "/modofigurinha status"],
1728
+ "mensagens_uso": {},
1729
+ "arguments": [
1730
+ {
1731
+ "name": "acao",
1732
+ "type": "string",
1733
+ "required": true,
1734
+ "description": "on|off|status",
1735
+ "default": null,
1736
+ "validation": "on|off|status"
1737
+ }
1738
+ ],
1739
+ "responses": {
1740
+ "success": "Comando executado com sucesso.",
1741
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1742
+ "permission_error": "Permissão insuficiente para executar este comando.",
1743
+ "sucesso": "Comando executado com sucesso.",
1744
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1745
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1746
+ },
1747
+ "technical": {
1748
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "estado atual do modo sticker no grupo", "acao solicitada (on/off/status)"],
1749
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1750
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1751
+ "behavior": {
1752
+ "type": "toggle",
1753
+ "allowed_actions": ["on", "off", "status"],
1754
+ "action_argument": "acao"
1755
+ },
1756
+ "handler": {
1757
+ "file": "groupCommandHandlers.js",
1758
+ "method": "handleAdminCommand",
1759
+ "command_case": "stickermode"
1760
+ },
1761
+ "risk_level": "medium",
1762
+ "stability": "stable",
1763
+ "version": "1.0.0"
1764
+ },
1765
+ "observability": {
1766
+ "event_name": "command.executed",
1767
+ "analytics_event": "whatsapp_command_stickermode",
1768
+ "tags": ["whatsapp", "command", "adminModule", "stickermode"]
1769
+ },
1770
+ "privacy": {
1771
+ "retention": "standard_app_logs",
1772
+ "legal_basis": "service_execution_and_legitimate_interest"
1773
+ },
1774
+ "discovery": {
1775
+ "keywords": ["modofigurinha", "smode", "admin", "grupo"],
1776
+ "user_phrasings": ["quero usar modofigurinha", "me ajuda com modofigurinha", "controla modo foco em"],
1777
+ "priority": 100
1778
+ }
1779
+ },
1780
+ {
1781
+ "key": "adminModule:noticias",
1782
+ "name": "noticias",
1783
+ "id": "admin.noticias",
1784
+ "aliases": ["news", "noticia"],
1785
+ "module": "adminModule",
1786
+ "module_label": "adminModule",
1787
+ "category": "admin",
1788
+ "category_label": "Moderação e Admin",
1789
+ "descricao": "Ativa/desativa envio automatico de noticias no grupo.",
1790
+ "requirements": {
1791
+ "group": true,
1792
+ "admin": true,
1793
+ "owner": false,
1794
+ "google_login": true,
1795
+ "nsfw": false,
1796
+ "media": false,
1797
+ "reply": false
1798
+ },
1799
+ "premium": false,
1800
+ "allowed_plans": ["comum", "premium"],
1801
+ "rate_limit": null,
1802
+ "local_de_uso": ["grupo"],
1803
+ "subcomandos": ["on", "off", "status"],
1804
+ "metodos_de_uso": ["/noticias on", "/noticias off", "/noticias status", "/news status"],
1805
+ "mensagens_uso": {},
1806
+ "arguments": [
1807
+ {
1808
+ "name": "acao",
1809
+ "type": "string",
1810
+ "required": true,
1811
+ "description": "on|off|status",
1812
+ "default": null,
1813
+ "validation": "on|off|status"
1814
+ }
1815
+ ],
1816
+ "responses": {
1817
+ "success": "Comando executado com sucesso.",
1818
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1819
+ "permission_error": "Permissão insuficiente para executar este comando.",
1820
+ "sucesso": "Comando executado com sucesso.",
1821
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1822
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1823
+ },
1824
+ "technical": {
1825
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "status atual de noticias do grupo", "acao solicitada (on/off/status)"],
1826
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1827
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1828
+ "behavior": {
1829
+ "type": "toggle",
1830
+ "allowed_actions": ["on", "off", "status"],
1831
+ "action_argument": "acao"
1832
+ },
1833
+ "handler": {
1834
+ "file": "groupCommandHandlers.js",
1835
+ "method": "handleAdminCommand",
1836
+ "command_case": "noticias"
1837
+ },
1838
+ "risk_level": "medium",
1839
+ "stability": "stable",
1840
+ "version": "1.0.0"
1841
+ },
1842
+ "observability": {
1843
+ "event_name": "command.executed",
1844
+ "analytics_event": "whatsapp_command_noticias",
1845
+ "tags": ["whatsapp", "command", "adminModule", "noticias"]
1846
+ },
1847
+ "privacy": {
1848
+ "retention": "standard_app_logs",
1849
+ "legal_basis": "service_execution_and_legitimate_interest"
1850
+ },
1851
+ "discovery": {
1852
+ "keywords": ["noticias", "news", "admin", "grupo"],
1853
+ "user_phrasings": ["quero usar noticias", "me ajuda com noticias", "ativa/desativa envio automatico de"],
1854
+ "priority": 100
1855
+ }
1856
+ },
1857
+ {
1858
+ "key": "adminModule:novogrupo",
1859
+ "name": "novogrupo",
1860
+ "id": "admin.novogrupo",
1861
+ "aliases": ["newgroup"],
1862
+ "module": "adminModule",
1863
+ "module_label": "adminModule",
1864
+ "category": "admin",
1865
+ "category_label": "Moderação e Admin",
1866
+ "descricao": "Cria um novo grupo com participantes informados.",
1867
+ "requirements": {
1868
+ "group": false,
1869
+ "admin": false,
1870
+ "owner": false,
1871
+ "google_login": true,
1872
+ "nsfw": false,
1873
+ "media": false,
1874
+ "reply": false
1875
+ },
1876
+ "premium": false,
1877
+ "allowed_plans": ["comum", "premium"],
1878
+ "rate_limit": null,
1879
+ "local_de_uso": ["privado", "grupo"],
1880
+ "subcomandos": [],
1881
+ "metodos_de_uso": ["/novogrupo <titulo> <participante1> <participante2>"],
1882
+ "mensagens_uso": {},
1883
+ "arguments": [
1884
+ {
1885
+ "name": "titulo",
1886
+ "type": "string",
1887
+ "required": true,
1888
+ "description": "texto não vazio",
1889
+ "default": null,
1890
+ "validation": "texto não vazio"
1891
+ },
1892
+ {
1893
+ "name": "participantes",
1894
+ "type": "array",
1895
+ "required": true,
1896
+ "description": "mínimo 1 participante",
1897
+ "default": [],
1898
+ "validation": "mínimo 1 participante"
1899
+ }
1900
+ ],
1901
+ "responses": {
1902
+ "success": "Comando executado com sucesso.",
1903
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1904
+ "permission_error": "Permissão insuficiente para executar este comando.",
1905
+ "sucesso": "Comando executado com sucesso.",
1906
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1907
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1908
+ },
1909
+ "technical": {
1910
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "titulo do novo grupo", "lista de participantes informados no comando"],
1911
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1912
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1913
+ "behavior": {
1914
+ "type": "argument_driven",
1915
+ "argument_count": 2
1916
+ },
1917
+ "handler": {
1918
+ "file": "groupCommandHandlers.js",
1919
+ "method": "handleAdminCommand",
1920
+ "command_case": "newgroup"
1921
+ },
1922
+ "risk_level": "low",
1923
+ "stability": "stable",
1924
+ "version": "1.0.0"
1925
+ },
1926
+ "observability": {
1927
+ "event_name": "command.executed",
1928
+ "analytics_event": "whatsapp_command_newgroup",
1929
+ "tags": ["whatsapp", "command", "adminModule", "newgroup"]
1930
+ },
1931
+ "privacy": {
1932
+ "retention": "standard_app_logs",
1933
+ "legal_basis": "service_execution_and_legitimate_interest"
1934
+ },
1935
+ "discovery": {
1936
+ "keywords": ["novogrupo", "admin", "privado", "grupo"],
1937
+ "user_phrasings": ["quero usar novogrupo", "me ajuda com novogrupo", "cria um novo grupo"],
1938
+ "priority": 100
1939
+ }
1940
+ },
1941
+ {
1942
+ "key": "adminModule:nsfw",
1943
+ "name": "nsfw",
1944
+ "id": "admin.nsfw",
1945
+ "aliases": [],
1946
+ "module": "adminModule",
1947
+ "module_label": "adminModule",
1948
+ "category": "admin",
1949
+ "category_label": "Moderação e Admin",
1950
+ "descricao": "Ativa/desativa status de NSFW no grupo.",
1951
+ "requirements": {
1952
+ "group": true,
1953
+ "admin": true,
1954
+ "owner": false,
1955
+ "google_login": true,
1956
+ "nsfw": false,
1957
+ "media": false,
1958
+ "reply": false
1959
+ },
1960
+ "premium": true,
1961
+ "allowed_plans": ["premium"],
1962
+ "rate_limit": null,
1963
+ "local_de_uso": ["grupo"],
1964
+ "subcomandos": ["on", "off", "status"],
1965
+ "metodos_de_uso": ["/nsfw on", "/nsfw off", "/nsfw status"],
1966
+ "mensagens_uso": {},
1967
+ "arguments": [
1968
+ {
1969
+ "name": "acao",
1970
+ "type": "string",
1971
+ "required": true,
1972
+ "description": "on|off|status",
1973
+ "default": null,
1974
+ "validation": "on|off|status"
1975
+ }
1976
+ ],
1977
+ "responses": {
1978
+ "success": "Comando executado com sucesso.",
1979
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
1980
+ "permission_error": "Permissão insuficiente para executar este comando.",
1981
+ "sucesso": "Comando executado com sucesso.",
1982
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
1983
+ "erro_permissao": "Permissão insuficiente para executar este comando."
1984
+ },
1985
+ "technical": {
1986
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "estado NSFW atual do grupo", "acao solicitada (on/off/status)"],
1987
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
1988
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
1989
+ "behavior": {
1990
+ "type": "toggle",
1991
+ "allowed_actions": ["on", "off", "status"],
1992
+ "action_argument": "acao"
1993
+ },
1994
+ "handler": {
1995
+ "file": "groupCommandHandlers.js",
1996
+ "method": "handleAdminCommand",
1997
+ "command_case": "nsfw"
1998
+ },
1999
+ "risk_level": "medium",
2000
+ "stability": "stable",
2001
+ "version": "1.0.0"
2002
+ },
2003
+ "observability": {
2004
+ "event_name": "command.executed",
2005
+ "analytics_event": "whatsapp_command_nsfw",
2006
+ "tags": ["whatsapp", "command", "adminModule", "nsfw"]
2007
+ },
2008
+ "privacy": {
2009
+ "retention": "standard_app_logs",
2010
+ "legal_basis": "service_execution_and_legitimate_interest"
2011
+ },
2012
+ "discovery": {
2013
+ "keywords": ["nsfw", "admin", "grupo"],
2014
+ "user_phrasings": ["quero usar nsfw", "me ajuda com nsfw", "ativa/desativa status de nsfw"],
2015
+ "priority": 100
2016
+ }
2017
+ },
2018
+ {
2019
+ "key": "adminModule:prefixo",
2020
+ "name": "prefixo",
2021
+ "id": "admin.prefixo",
2022
+ "aliases": ["prefix"],
2023
+ "module": "adminModule",
2024
+ "module_label": "adminModule",
2025
+ "category": "admin",
2026
+ "category_label": "Moderação e Admin",
2027
+ "descricao": "Define prefixo personalizado de comandos para o grupo.",
2028
+ "requirements": {
2029
+ "group": true,
2030
+ "admin": true,
2031
+ "owner": false,
2032
+ "google_login": true,
2033
+ "nsfw": false,
2034
+ "media": false,
2035
+ "reply": false
2036
+ },
2037
+ "premium": false,
2038
+ "allowed_plans": ["comum", "premium"],
2039
+ "rate_limit": null,
2040
+ "local_de_uso": ["grupo"],
2041
+ "subcomandos": ["<novo_prefixo>", "status", "reset"],
2042
+ "metodos_de_uso": ["<prefixo>prefixo <novo_prefixo>", "<prefixo>prefixo status", "<prefixo>prefixo reset"],
2043
+ "mensagens_uso": {},
2044
+ "arguments": [
2045
+ {
2046
+ "name": "valor",
2047
+ "type": "string",
2048
+ "required": true,
2049
+ "description": "novo prefixo|status|reset",
2050
+ "default": null,
2051
+ "validation": "novo prefixo|status|reset"
2052
+ }
2053
+ ],
2054
+ "responses": {
2055
+ "success": "Comando executado com sucesso.",
2056
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2057
+ "permission_error": "Permissão insuficiente para executar este comando.",
2058
+ "sucesso": "Comando executado com sucesso.",
2059
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2060
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2061
+ },
2062
+ "technical": {
2063
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "novo prefixo informado ou acao (status/reset)", "prefixo atual salvo na configuracao do grupo"],
2064
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2065
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2066
+ "behavior": {
2067
+ "type": "subcommand",
2068
+ "allowed_actions": ["set", "status", "reset"],
2069
+ "action_argument": "valor"
2070
+ },
2071
+ "handler": {
2072
+ "file": "groupCommandHandlers.js",
2073
+ "method": "handleAdminCommand",
2074
+ "command_case": "prefix"
2075
+ },
2076
+ "risk_level": "medium",
2077
+ "stability": "stable",
2078
+ "version": "1.0.0"
2079
+ },
2080
+ "observability": {
2081
+ "event_name": "command.executed",
2082
+ "analytics_event": "whatsapp_command_prefix",
2083
+ "tags": ["whatsapp", "command", "adminModule", "prefix"]
2084
+ },
2085
+ "privacy": {
2086
+ "retention": "standard_app_logs",
2087
+ "legal_basis": "service_execution_and_legitimate_interest"
2088
+ },
2089
+ "discovery": {
2090
+ "keywords": ["prefixo", "admin", "grupo"],
2091
+ "user_phrasings": ["quero usar prefixo", "me ajuda com prefixo", "define prefixo personalizado de"],
2092
+ "priority": 100
2093
+ }
2094
+ },
2095
+ {
2096
+ "key": "adminModule:premium",
2097
+ "name": "premium",
2098
+ "id": "admin.premium",
2099
+ "aliases": ["vip"],
2100
+ "module": "adminModule",
2101
+ "module_label": "adminModule",
2102
+ "category": "admin",
2103
+ "category_label": "Moderação e Admin",
2104
+ "descricao": "Gerencia usuarios premium do sistema.",
2105
+ "requirements": {
2106
+ "group": false,
2107
+ "admin": false,
2108
+ "owner": true,
2109
+ "google_login": true,
2110
+ "nsfw": false,
2111
+ "media": false,
2112
+ "reply": false
2113
+ },
2114
+ "premium": false,
2115
+ "allowed_plans": ["comum", "premium"],
2116
+ "rate_limit": null,
2117
+ "local_de_uso": ["privado", "grupo"],
2118
+ "subcomandos": ["add", "remove", "list"],
2119
+ "metodos_de_uso": ["/premium list", "/premium add @usuario", "/premium remove @usuario"],
2120
+ "mensagens_uso": {
2121
+ "invalid_action": ["/premium <add|remove|list> @usuario1 @usuario2 ..."],
2122
+ "missing_targets": ["/premium <add|remove> @usuario1 @usuario2 ...", "Também é possível responder à mensagem do usuário desejado."]
2123
+ },
2124
+ "arguments": [
2125
+ {
2126
+ "name": "acao",
2127
+ "type": "string",
2128
+ "required": true,
2129
+ "description": "add|remove|list",
2130
+ "default": null,
2131
+ "validation": "add|remove|list"
2132
+ },
2133
+ {
2134
+ "name": "usuarios",
2135
+ "type": "array",
2136
+ "required": false,
2137
+ "description": "menções/JIDs para add/remove",
2138
+ "default": [],
2139
+ "validation": "menções/JIDs para add/remove"
2140
+ }
2141
+ ],
2142
+ "responses": {
2143
+ "success": "Comando executado com sucesso.",
2144
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2145
+ "permission_error": "Permissão insuficiente para executar este comando.",
2146
+ "sucesso": "Comando executado com sucesso.",
2147
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2148
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2149
+ },
2150
+ "technical": {
2151
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "participantes mencionados/reply para add/remove", "lista atual de usuarios premium no store", "validacao de identidade de administrador principal"],
2152
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2153
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2154
+ "behavior": {
2155
+ "type": "list_management",
2156
+ "allowed_actions": ["add", "remove", "list"],
2157
+ "action_argument": "acao"
2158
+ },
2159
+ "handler": {
2160
+ "file": "groupCommandHandlers.js",
2161
+ "method": "handleAdminCommand",
2162
+ "command_case": "premium"
2163
+ },
2164
+ "risk_level": "high",
2165
+ "stability": "stable",
2166
+ "version": "1.0.0"
2167
+ },
2168
+ "observability": {
2169
+ "event_name": "command.executed",
2170
+ "analytics_event": "whatsapp_command_premium",
2171
+ "tags": ["whatsapp", "command", "adminModule", "premium"]
2172
+ },
2173
+ "privacy": {
2174
+ "retention": "standard_app_logs",
2175
+ "legal_basis": "service_execution_and_legitimate_interest"
2176
+ },
2177
+ "discovery": {
2178
+ "keywords": ["premium", "admin", "privado", "grupo"],
2179
+ "user_phrasings": ["quero usar premium", "me ajuda com premium", "gerencia usuarios premium do"],
2180
+ "priority": 100
2181
+ }
2182
+ },
2183
+ {
2184
+ "key": "adminModule:promover",
2185
+ "name": "promover",
2186
+ "id": "admin.promover",
2187
+ "aliases": ["up"],
2188
+ "module": "adminModule",
2189
+ "module_label": "adminModule",
2190
+ "category": "admin",
2191
+ "category_label": "Moderação e Admin",
2192
+ "descricao": "Promove participantes a administradores do grupo.",
2193
+ "requirements": {
2194
+ "group": true,
2195
+ "admin": true,
2196
+ "owner": false,
2197
+ "google_login": true,
2198
+ "nsfw": false,
2199
+ "media": false,
2200
+ "reply": false
2201
+ },
2202
+ "premium": false,
2203
+ "allowed_plans": ["comum", "premium"],
2204
+ "rate_limit": null,
2205
+ "local_de_uso": ["grupo"],
2206
+ "subcomandos": [],
2207
+ "metodos_de_uso": ["/promover @participante"],
2208
+ "mensagens_uso": {
2209
+ "missing_targets": ["/promover @participante1 @participante2 ...", "Também é possível informar os JIDs dos participantes."]
2210
+ },
2211
+ "arguments": [
2212
+ {
2213
+ "name": "participantes",
2214
+ "type": "array",
2215
+ "required": true,
2216
+ "description": "menções/JIDs válidos",
2217
+ "default": [],
2218
+ "validation": "menções/JIDs válidos"
2219
+ }
2220
+ ],
2221
+ "responses": {
2222
+ "success": "Comando executado com sucesso.",
2223
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2224
+ "permission_error": "Permissão insuficiente para executar este comando.",
2225
+ "sucesso": "Comando executado com sucesso.",
2226
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2227
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2228
+ },
2229
+ "technical": {
2230
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "lista de participantes mencionados/extraidos para promover"],
2231
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2232
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2233
+ "behavior": {
2234
+ "type": "action_target",
2235
+ "target_type": "participant",
2236
+ "action": "promover",
2237
+ "requires_targets": true
2238
+ },
2239
+ "handler": {
2240
+ "file": "groupCommandHandlers.js",
2241
+ "method": "handleAdminCommand",
2242
+ "command_case": "up"
2243
+ },
2244
+ "risk_level": "high",
2245
+ "stability": "stable",
2246
+ "version": "1.0.0"
2247
+ },
2248
+ "observability": {
2249
+ "event_name": "command.executed",
2250
+ "analytics_event": "whatsapp_command_up",
2251
+ "tags": ["whatsapp", "command", "adminModule", "up"]
2252
+ },
2253
+ "privacy": {
2254
+ "retention": "standard_app_logs",
2255
+ "legal_basis": "service_execution_and_legitimate_interest"
2256
+ },
2257
+ "discovery": {
2258
+ "keywords": ["promover", "admin", "grupo"],
2259
+ "user_phrasings": ["quero usar promover", "me ajuda com promover", "promove participantes a administradores"],
2260
+ "priority": 100
2261
+ }
2262
+ },
2263
+ {
2264
+ "key": "adminModule:rebaixar",
2265
+ "name": "rebaixar",
2266
+ "id": "admin.rebaixar",
2267
+ "aliases": ["down"],
2268
+ "module": "adminModule",
2269
+ "module_label": "adminModule",
2270
+ "category": "admin",
2271
+ "category_label": "Moderação e Admin",
2272
+ "descricao": "Rebaixa administradores para membros comuns.",
2273
+ "requirements": {
2274
+ "group": true,
2275
+ "admin": true,
2276
+ "owner": false,
2277
+ "google_login": true,
2278
+ "nsfw": false,
2279
+ "media": false,
2280
+ "reply": false
2281
+ },
2282
+ "premium": false,
2283
+ "allowed_plans": ["comum", "premium"],
2284
+ "rate_limit": null,
2285
+ "local_de_uso": ["grupo"],
2286
+ "subcomandos": [],
2287
+ "metodos_de_uso": ["/rebaixar @participante"],
2288
+ "mensagens_uso": {
2289
+ "missing_targets": ["/rebaixar @participante1 @participante2 ...", "Também é possível informar os JIDs dos participantes."]
2290
+ },
2291
+ "arguments": [
2292
+ {
2293
+ "name": "participantes",
2294
+ "type": "array",
2295
+ "required": true,
2296
+ "description": "menções/JIDs válidos",
2297
+ "default": [],
2298
+ "validation": "menções/JIDs válidos"
2299
+ }
2300
+ ],
2301
+ "responses": {
2302
+ "success": "Comando executado com sucesso.",
2303
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2304
+ "permission_error": "Permissão insuficiente para executar este comando.",
2305
+ "sucesso": "Comando executado com sucesso.",
2306
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2307
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2308
+ },
2309
+ "technical": {
2310
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "lista de participantes mencionados/extraidos para rebaixar"],
2311
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2312
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2313
+ "behavior": {
2314
+ "type": "action_target",
2315
+ "target_type": "participant",
2316
+ "action": "rebaixar",
2317
+ "requires_targets": true
2318
+ },
2319
+ "handler": {
2320
+ "file": "groupCommandHandlers.js",
2321
+ "method": "handleAdminCommand",
2322
+ "command_case": "down"
2323
+ },
2324
+ "risk_level": "high",
2325
+ "stability": "stable",
2326
+ "version": "1.0.0"
2327
+ },
2328
+ "observability": {
2329
+ "event_name": "command.executed",
2330
+ "analytics_event": "whatsapp_command_down",
2331
+ "tags": ["whatsapp", "command", "adminModule", "down"]
2332
+ },
2333
+ "privacy": {
2334
+ "retention": "standard_app_logs",
2335
+ "legal_basis": "service_execution_and_legitimate_interest"
2336
+ },
2337
+ "discovery": {
2338
+ "keywords": ["rebaixar", "admin", "grupo"],
2339
+ "user_phrasings": ["quero usar rebaixar", "me ajuda com rebaixar", "rebaixa administradores para membros"],
2340
+ "priority": 100
2341
+ }
2342
+ },
2343
+ {
2344
+ "key": "adminModule:revogarconvite",
2345
+ "name": "revogarconvite",
2346
+ "id": "admin.revogarconvite",
2347
+ "aliases": ["revoke"],
2348
+ "module": "adminModule",
2349
+ "module_label": "adminModule",
2350
+ "category": "admin",
2351
+ "category_label": "Moderação e Admin",
2352
+ "descricao": "Revoga o codigo de convite e gera novo codigo.",
2353
+ "requirements": {
2354
+ "group": true,
2355
+ "admin": true,
2356
+ "owner": false,
2357
+ "google_login": true,
2358
+ "nsfw": false,
2359
+ "media": false,
2360
+ "reply": false
2361
+ },
2362
+ "premium": false,
2363
+ "allowed_plans": ["comum", "premium"],
2364
+ "rate_limit": null,
2365
+ "local_de_uso": ["grupo"],
2366
+ "subcomandos": [],
2367
+ "metodos_de_uso": ["/revogarconvite"],
2368
+ "mensagens_uso": {},
2369
+ "arguments": [],
2370
+ "responses": {
2371
+ "success": "Comando executado com sucesso.",
2372
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2373
+ "permission_error": "Permissão insuficiente para executar este comando.",
2374
+ "sucesso": "Comando executado com sucesso.",
2375
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2376
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2377
+ },
2378
+ "technical": {
2379
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "id do grupo para revogar codigo de convite"],
2380
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2381
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2382
+ "behavior": {
2383
+ "type": "single_action",
2384
+ "argument_count": 0
2385
+ },
2386
+ "handler": {
2387
+ "file": "groupCommandHandlers.js",
2388
+ "method": "handleAdminCommand",
2389
+ "command_case": "revoke"
2390
+ },
2391
+ "risk_level": "high",
2392
+ "stability": "stable",
2393
+ "version": "1.0.0"
2394
+ },
2395
+ "observability": {
2396
+ "event_name": "command.executed",
2397
+ "analytics_event": "whatsapp_command_revoke",
2398
+ "tags": ["whatsapp", "command", "adminModule", "revoke"]
2399
+ },
2400
+ "privacy": {
2401
+ "retention": "standard_app_logs",
2402
+ "legal_basis": "service_execution_and_legitimate_interest"
2403
+ },
2404
+ "discovery": {
2405
+ "keywords": ["revogarconvite", "admin", "grupo"],
2406
+ "user_phrasings": ["quero usar revogarconvite", "me ajuda com revogarconvite", "revoga o codigo de"],
2407
+ "priority": 100
2408
+ }
2409
+ },
2410
+ {
2411
+ "key": "adminModule:sair",
2412
+ "name": "sair",
2413
+ "id": "admin.sair",
2414
+ "aliases": ["leave"],
2415
+ "module": "adminModule",
2416
+ "module_label": "adminModule",
2417
+ "category": "admin",
2418
+ "category_label": "Moderação e Admin",
2419
+ "descricao": "Faz o bot sair do grupo.",
2420
+ "requirements": {
2421
+ "group": true,
2422
+ "admin": true,
2423
+ "owner": false,
2424
+ "google_login": true,
2425
+ "nsfw": false,
2426
+ "media": false,
2427
+ "reply": false
2428
+ },
2429
+ "premium": false,
2430
+ "allowed_plans": ["comum", "premium"],
2431
+ "rate_limit": null,
2432
+ "local_de_uso": ["grupo"],
2433
+ "subcomandos": [],
2434
+ "metodos_de_uso": ["/sair"],
2435
+ "mensagens_uso": {},
2436
+ "arguments": [],
2437
+ "responses": {
2438
+ "success": "Comando executado com sucesso.",
2439
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2440
+ "permission_error": "Permissão insuficiente para executar este comando.",
2441
+ "sucesso": "Comando executado com sucesso.",
2442
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2443
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2444
+ },
2445
+ "technical": {
2446
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "id do grupo atual para saida do bot"],
2447
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2448
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2449
+ "behavior": {
2450
+ "type": "single_action",
2451
+ "argument_count": 0
2452
+ },
2453
+ "handler": {
2454
+ "file": "groupCommandHandlers.js",
2455
+ "method": "handleAdminCommand",
2456
+ "command_case": "leave"
2457
+ },
2458
+ "risk_level": "high",
2459
+ "stability": "stable",
2460
+ "version": "1.0.0"
2461
+ },
2462
+ "observability": {
2463
+ "event_name": "command.executed",
2464
+ "analytics_event": "whatsapp_command_leave",
2465
+ "tags": ["whatsapp", "command", "adminModule", "leave"]
2466
+ },
2467
+ "privacy": {
2468
+ "retention": "standard_app_logs",
2469
+ "legal_basis": "service_execution_and_legitimate_interest"
2470
+ },
2471
+ "discovery": {
2472
+ "keywords": ["sair", "admin", "grupo"],
2473
+ "user_phrasings": ["quero usar sair", "me ajuda com sair", "faz o bot sair"],
2474
+ "priority": 100
2475
+ }
2476
+ },
2477
+ {
2478
+ "key": "adminModule:solicitacoes",
2479
+ "name": "solicitacoes",
2480
+ "id": "admin.solicitacoes",
2481
+ "aliases": ["requests"],
2482
+ "module": "adminModule",
2483
+ "module_label": "adminModule",
2484
+ "category": "admin",
2485
+ "category_label": "Moderação e Admin",
2486
+ "descricao": "Lista solicitacoes pendentes para entrar no grupo.",
2487
+ "requirements": {
2488
+ "group": true,
2489
+ "admin": true,
2490
+ "owner": false,
2491
+ "google_login": true,
2492
+ "nsfw": false,
2493
+ "media": false,
2494
+ "reply": false
2495
+ },
2496
+ "premium": false,
2497
+ "allowed_plans": ["comum", "premium"],
2498
+ "rate_limit": null,
2499
+ "local_de_uso": ["grupo"],
2500
+ "subcomandos": [],
2501
+ "metodos_de_uso": ["/solicitacoes"],
2502
+ "mensagens_uso": {},
2503
+ "arguments": [],
2504
+ "responses": {
2505
+ "success": "Comando executado com sucesso.",
2506
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2507
+ "permission_error": "Permissão insuficiente para executar este comando.",
2508
+ "sucesso": "Comando executado com sucesso.",
2509
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2510
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2511
+ },
2512
+ "technical": {
2513
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "lista de solicitacoes pendentes de entrada no grupo"],
2514
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2515
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2516
+ "behavior": {
2517
+ "type": "single_action",
2518
+ "argument_count": 0
2519
+ },
2520
+ "handler": {
2521
+ "file": "groupCommandHandlers.js",
2522
+ "method": "handleAdminCommand",
2523
+ "command_case": "requests"
2524
+ },
2525
+ "risk_level": "low",
2526
+ "stability": "stable",
2527
+ "version": "1.0.0"
2528
+ },
2529
+ "observability": {
2530
+ "event_name": "command.executed",
2531
+ "analytics_event": "whatsapp_command_requests",
2532
+ "tags": ["whatsapp", "command", "adminModule", "requests"]
2533
+ },
2534
+ "privacy": {
2535
+ "retention": "standard_app_logs",
2536
+ "legal_basis": "service_execution_and_legitimate_interest"
2537
+ },
2538
+ "discovery": {
2539
+ "keywords": ["solicitacoes", "admin", "grupo"],
2540
+ "user_phrasings": ["quero usar solicitacoes", "me ajuda com solicitacoes", "lista solicitacoes pendentes para"],
2541
+ "priority": 100
2542
+ }
2543
+ },
2544
+ {
2545
+ "key": "adminModule:temporarias",
2546
+ "name": "temporarias",
2547
+ "id": "admin.temporarias",
2548
+ "aliases": ["temp"],
2549
+ "module": "adminModule",
2550
+ "module_label": "adminModule",
2551
+ "category": "admin",
2552
+ "category_label": "Moderação e Admin",
2553
+ "descricao": "Define tempo de mensagens temporarias (ephemeral) no grupo.",
2554
+ "requirements": {
2555
+ "group": true,
2556
+ "admin": true,
2557
+ "owner": false,
2558
+ "google_login": true,
2559
+ "nsfw": false,
2560
+ "media": false,
2561
+ "reply": false
2562
+ },
2563
+ "premium": false,
2564
+ "allowed_plans": ["comum", "premium"],
2565
+ "rate_limit": null,
2566
+ "local_de_uso": ["grupo"],
2567
+ "subcomandos": [],
2568
+ "metodos_de_uso": ["/temporarias <duracao_em_segundos>"],
2569
+ "mensagens_uso": {},
2570
+ "arguments": [
2571
+ {
2572
+ "name": "duracao_segundos",
2573
+ "type": "integer",
2574
+ "required": true,
2575
+ "description": "inteiro positivo",
2576
+ "default": null,
2577
+ "validation": "inteiro positivo"
2578
+ }
2579
+ ],
2580
+ "responses": {
2581
+ "success": "Comando executado com sucesso.",
2582
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2583
+ "permission_error": "Permissão insuficiente para executar este comando.",
2584
+ "sucesso": "Comando executado com sucesso.",
2585
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2586
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2587
+ },
2588
+ "technical": {
2589
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "duracao em segundos para mensagens temporarias"],
2590
+ "dependencies": ["API do WhatsApp (ações de grupo)", "stores/configuração interna"],
2591
+ "side_effects": ["altera configurações de grupo e permissões", "envia mensagens administrativas"],
2592
+ "behavior": {
2593
+ "type": "argument_driven",
2594
+ "argument_count": 1
2595
+ },
2596
+ "handler": {
2597
+ "file": "groupCommandHandlers.js",
2598
+ "method": "handleAdminCommand",
2599
+ "command_case": "temp"
2600
+ },
2601
+ "risk_level": "low",
2602
+ "stability": "stable",
2603
+ "version": "1.0.0"
2604
+ },
2605
+ "observability": {
2606
+ "event_name": "command.executed",
2607
+ "analytics_event": "whatsapp_command_temp",
2608
+ "tags": ["whatsapp", "command", "adminModule", "temp"]
2609
+ },
2610
+ "privacy": {
2611
+ "retention": "standard_app_logs",
2612
+ "legal_basis": "service_execution_and_legitimate_interest"
2613
+ },
2614
+ "discovery": {
2615
+ "keywords": ["temporarias", "admin", "grupo"],
2616
+ "user_phrasings": ["quero usar temporarias", "me ajuda com temporarias", "define tempo de mensagens"],
2617
+ "priority": 100
2618
+ }
2619
+ }
2620
+ ]
2621
+ },
2622
+ {
2623
+ "key": "figurinhas",
2624
+ "label": "Figurinhas",
2625
+ "icon": "🎨",
2626
+ "command_count": 6,
2627
+ "modules": ["stickerModule", "stickerPackModule"],
2628
+ "commands": [
2629
+ {
2630
+ "key": "stickerModule:figurinha",
2631
+ "name": "figurinha",
2632
+ "id": "sticker.figurinha",
2633
+ "aliases": ["s", "sticker"],
2634
+ "module": "stickerModule",
2635
+ "module_label": "stickerModule",
2636
+ "category": "figurinhas",
2637
+ "category_label": "Figurinhas",
2638
+ "descricao": "Converte imagem/video em figurinha.",
2639
+ "requirements": {
2640
+ "group": false,
2641
+ "admin": false,
2642
+ "owner": false,
2643
+ "google_login": true,
2644
+ "nsfw": false,
2645
+ "media": true,
2646
+ "reply": false
2647
+ },
2648
+ "premium": false,
2649
+ "allowed_plans": ["comum", "premium"],
2650
+ "rate_limit": null,
2651
+ "local_de_uso": ["privado", "grupo"],
2652
+ "subcomandos": [],
2653
+ "metodos_de_uso": ["/figurinha", "/s"],
2654
+ "mensagens_uso": {
2655
+ "default": ["📌 Use: /figurinha (ou /s) respondendo a uma imagem, vídeo ou figurinha."]
2656
+ },
2657
+ "arguments": [
2658
+ {
2659
+ "name": "texto_extra",
2660
+ "type": "string",
2661
+ "required": false,
2662
+ "description": "texto livre opcional",
2663
+ "default": null,
2664
+ "validation": "texto livre opcional"
2665
+ }
2666
+ ],
2667
+ "responses": {
2668
+ "success": "Comando executado com sucesso.",
2669
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2670
+ "permission_error": "Permissão insuficiente para executar este comando.",
2671
+ "sucesso": "Comando executado com sucesso.",
2672
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2673
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2674
+ },
2675
+ "technical": {
2676
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "metadados de midia (tipo, tamanho e origem da midia)", "arquivo de midia baixado temporariamente para conversao"],
2677
+ "dependencies": ["conversão de mídia local", "armazenamento temporário"],
2678
+ "side_effects": ["faz download/conversão temporária de mídia", "envia figurinha"],
2679
+ "behavior": {
2680
+ "type": "argument_driven",
2681
+ "allowed_actions": []
2682
+ },
2683
+ "handler": {
2684
+ "file": "stickerCommand.js",
2685
+ "method": "processSticker",
2686
+ "command_case": "figurinha"
2687
+ },
2688
+ "risk_level": "low",
2689
+ "stability": "stable",
2690
+ "version": "1.0.0"
2691
+ },
2692
+ "observability": {
2693
+ "event_name": "command.executed",
2694
+ "analytics_event": "whatsapp_command_sticker",
2695
+ "tags": ["whatsapp", "command", "stickerModule", "sticker"]
2696
+ },
2697
+ "privacy": {
2698
+ "retention": "standard_app_logs",
2699
+ "legal_basis": "service_execution_and_legitimate_interest"
2700
+ },
2701
+ "discovery": {
2702
+ "keywords": ["figurinha", "s", "figurinhas", "privado", "grupo"],
2703
+ "user_phrasings": ["quero usar figurinha", "me ajuda com figurinha", "converte imagem/video em figurinha."],
2704
+ "priority": 100
2705
+ }
2706
+ },
2707
+ {
2708
+ "key": "stickerModule:figurinhatexto",
2709
+ "name": "figurinhatexto",
2710
+ "id": "sticker.figurinhatexto",
2711
+ "aliases": ["st", "stickertext"],
2712
+ "module": "stickerModule",
2713
+ "module_label": "stickerModule",
2714
+ "category": "figurinhas",
2715
+ "category_label": "Figurinhas",
2716
+ "descricao": "Gera figurinha com texto (tema escuro).",
2717
+ "requirements": {
2718
+ "group": false,
2719
+ "admin": false,
2720
+ "owner": false,
2721
+ "google_login": true,
2722
+ "nsfw": false,
2723
+ "media": false,
2724
+ "reply": false
2725
+ },
2726
+ "premium": false,
2727
+ "allowed_plans": ["comum", "premium"],
2728
+ "rate_limit": null,
2729
+ "local_de_uso": ["privado", "grupo"],
2730
+ "subcomandos": [],
2731
+ "metodos_de_uso": ["/figurinhatexto seu texto", "/st seu texto"],
2732
+ "mensagens_uso": {
2733
+ "default": ["📌 Use: /figurinhatexto seu texto", "💡 Exemplo: /st bom dia seus lindos"]
2734
+ },
2735
+ "arguments": [
2736
+ {
2737
+ "name": "texto",
2738
+ "type": "string",
2739
+ "required": true,
2740
+ "description": "até 80 caracteres, máximo 4 linhas",
2741
+ "default": null,
2742
+ "validation": "até 80 caracteres, máximo 4 linhas"
2743
+ }
2744
+ ],
2745
+ "responses": {
2746
+ "success": "Comando executado com sucesso.",
2747
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2748
+ "permission_error": "Permissão insuficiente para executar este comando.",
2749
+ "sucesso": "Comando executado com sucesso.",
2750
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2751
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2752
+ },
2753
+ "technical": {
2754
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "texto informado para compor a figurinha", "opcoes de estilo/cor do texto"],
2755
+ "dependencies": ["conversão de mídia local", "armazenamento temporário"],
2756
+ "side_effects": ["gera mídia temporária de figurinha com texto", "envia figurinha"],
2757
+ "behavior": {
2758
+ "type": "argument_driven",
2759
+ "allowed_actions": []
2760
+ },
2761
+ "handler": {
2762
+ "file": "stickerTextCommand.js",
2763
+ "method": "processTextSticker",
2764
+ "command_case": "figurinhatexto"
2765
+ },
2766
+ "risk_level": "low",
2767
+ "stability": "stable",
2768
+ "version": "1.0.0"
2769
+ },
2770
+ "observability": {
2771
+ "event_name": "command.executed",
2772
+ "analytics_event": "whatsapp_command_stickertext",
2773
+ "tags": ["whatsapp", "command", "stickerModule", "stickertext"]
2774
+ },
2775
+ "privacy": {
2776
+ "retention": "standard_app_logs",
2777
+ "legal_basis": "service_execution_and_legitimate_interest"
2778
+ },
2779
+ "discovery": {
2780
+ "keywords": ["figurinhatexto", "st", "figurinhas", "privado", "grupo"],
2781
+ "user_phrasings": ["quero usar figurinhatexto", "me ajuda com figurinhatexto", "gera figurinha com texto"],
2782
+ "priority": 100
2783
+ }
2784
+ },
2785
+ {
2786
+ "key": "stickerModule:figurinhatextobranco",
2787
+ "name": "figurinhatextobranco",
2788
+ "id": "sticker.figurinhatextobranco",
2789
+ "aliases": ["stw", "stickertextwhite"],
2790
+ "module": "stickerModule",
2791
+ "module_label": "stickerModule",
2792
+ "category": "figurinhas",
2793
+ "category_label": "Figurinhas",
2794
+ "descricao": "Gera figurinha com texto (tema claro).",
2795
+ "requirements": {
2796
+ "group": false,
2797
+ "admin": false,
2798
+ "owner": false,
2799
+ "google_login": true,
2800
+ "nsfw": false,
2801
+ "media": false,
2802
+ "reply": false
2803
+ },
2804
+ "premium": false,
2805
+ "allowed_plans": ["comum", "premium"],
2806
+ "rate_limit": null,
2807
+ "local_de_uso": ["privado", "grupo"],
2808
+ "subcomandos": [],
2809
+ "metodos_de_uso": ["/figurinhatextobranco seu texto", "/stw seu texto"],
2810
+ "mensagens_uso": {
2811
+ "default": ["📌 Use: /figurinhatextobranco seu texto", "💡 Exemplo: /stw bom dia seus lindos"]
2812
+ },
2813
+ "arguments": [
2814
+ {
2815
+ "name": "texto",
2816
+ "type": "string",
2817
+ "required": true,
2818
+ "description": "até 80 caracteres, máximo 4 linhas",
2819
+ "default": null,
2820
+ "validation": "até 80 caracteres, máximo 4 linhas"
2821
+ }
2822
+ ],
2823
+ "responses": {
2824
+ "success": "Comando executado com sucesso.",
2825
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2826
+ "permission_error": "Permissão insuficiente para executar este comando.",
2827
+ "sucesso": "Comando executado com sucesso.",
2828
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2829
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2830
+ },
2831
+ "technical": {
2832
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "texto informado para compor a figurinha", "opcoes de estilo/cor do texto"],
2833
+ "dependencies": ["conversão de mídia local", "armazenamento temporário"],
2834
+ "side_effects": ["gera mídia temporária de figurinha com texto", "envia figurinha"],
2835
+ "behavior": {
2836
+ "type": "argument_driven",
2837
+ "allowed_actions": []
2838
+ },
2839
+ "handler": {
2840
+ "file": "stickerTextCommand.js",
2841
+ "method": "processTextSticker",
2842
+ "command_case": "figurinhatextobranco"
2843
+ },
2844
+ "risk_level": "low",
2845
+ "stability": "stable",
2846
+ "version": "1.0.0"
2847
+ },
2848
+ "observability": {
2849
+ "event_name": "command.executed",
2850
+ "analytics_event": "whatsapp_command_stickertextwhite",
2851
+ "tags": ["whatsapp", "command", "stickerModule", "stickertextwhite"]
2852
+ },
2853
+ "privacy": {
2854
+ "retention": "standard_app_logs",
2855
+ "legal_basis": "service_execution_and_legitimate_interest"
2856
+ },
2857
+ "discovery": {
2858
+ "keywords": ["figurinhatextobranco", "stw", "figurinhas", "privado", "grupo"],
2859
+ "user_phrasings": ["quero usar figurinhatextobranco", "me ajuda com figurinhatextobranco", "gera figurinha com texto"],
2860
+ "priority": 100
2861
+ }
2862
+ },
2863
+ {
2864
+ "key": "stickerModule:figurinhatextopisca",
2865
+ "name": "figurinhatextopisca",
2866
+ "id": "sticker.figurinhatextopisca",
2867
+ "aliases": ["stb", "stickertextblink"],
2868
+ "module": "stickerModule",
2869
+ "module_label": "stickerModule",
2870
+ "category": "figurinhas",
2871
+ "category_label": "Figurinhas",
2872
+ "descricao": "Gera figurinha animada de texto piscante.",
2873
+ "requirements": {
2874
+ "group": false,
2875
+ "admin": false,
2876
+ "owner": false,
2877
+ "google_login": true,
2878
+ "nsfw": false,
2879
+ "media": false,
2880
+ "reply": false
2881
+ },
2882
+ "premium": false,
2883
+ "allowed_plans": ["comum", "premium"],
2884
+ "rate_limit": null,
2885
+ "local_de_uso": ["privado", "grupo"],
2886
+ "subcomandos": [],
2887
+ "metodos_de_uso": ["/figurinhatextopisca seu texto", "/stb seu texto"],
2888
+ "mensagens_uso": {
2889
+ "default": ["📌 Use: /figurinhatextopisca seu texto", "💡 Exemplo: /stb bom dia seus lindos -verde"]
2890
+ },
2891
+ "arguments": [
2892
+ {
2893
+ "name": "texto",
2894
+ "type": "string",
2895
+ "required": true,
2896
+ "description": "até 80 caracteres, máximo 4 linhas",
2897
+ "default": null,
2898
+ "validation": "até 80 caracteres, máximo 4 linhas"
2899
+ }
2900
+ ],
2901
+ "responses": {
2902
+ "success": "Comando executado com sucesso.",
2903
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2904
+ "permission_error": "Permissão insuficiente para executar este comando.",
2905
+ "sucesso": "Comando executado com sucesso.",
2906
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2907
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2908
+ },
2909
+ "technical": {
2910
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "texto informado para compor a figurinha", "parametros de animacao piscante"],
2911
+ "dependencies": ["conversão de mídia local", "armazenamento temporário"],
2912
+ "side_effects": ["gera mídia temporária animada", "envia figurinha"],
2913
+ "behavior": {
2914
+ "type": "argument_driven",
2915
+ "allowed_actions": []
2916
+ },
2917
+ "handler": {
2918
+ "file": "stickerTextCommand.js",
2919
+ "method": "processBlinkingTextSticker",
2920
+ "command_case": "figurinhatextopisca"
2921
+ },
2922
+ "risk_level": "low",
2923
+ "stability": "stable",
2924
+ "version": "1.0.0"
2925
+ },
2926
+ "observability": {
2927
+ "event_name": "command.executed",
2928
+ "analytics_event": "whatsapp_command_stickertextblink",
2929
+ "tags": ["whatsapp", "command", "stickerModule", "stickertextblink"]
2930
+ },
2931
+ "privacy": {
2932
+ "retention": "standard_app_logs",
2933
+ "legal_basis": "service_execution_and_legitimate_interest"
2934
+ },
2935
+ "discovery": {
2936
+ "keywords": ["figurinhatextopisca", "stb", "figurinhas", "privado", "grupo"],
2937
+ "user_phrasings": ["quero usar figurinhatextopisca", "me ajuda com figurinhatextopisca", "gera figurinha animada de"],
2938
+ "priority": 100
2939
+ }
2940
+ },
2941
+ {
2942
+ "key": "stickerPackModule:pacote",
2943
+ "name": "pacote",
2944
+ "id": "stickerpack.pacote",
2945
+ "aliases": ["packs", "pacotes", "pack"],
2946
+ "module": "stickerPackModule",
2947
+ "module_label": "stickerPackModule",
2948
+ "category": "figurinhas",
2949
+ "category_label": "Figurinhas",
2950
+ "descricao": "Gerencia packs de figurinhas (criar, listar, adicionar, enviar).",
2951
+ "requirements": {
2952
+ "group": false,
2953
+ "admin": false,
2954
+ "owner": false,
2955
+ "google_login": true,
2956
+ "nsfw": false,
2957
+ "media": false,
2958
+ "reply": false
2959
+ },
2960
+ "premium": false,
2961
+ "allowed_plans": ["comum", "premium"],
2962
+ "rate_limit": {
2963
+ "max": 20,
2964
+ "window_ms": 60000,
2965
+ "scope": "usuario"
2966
+ },
2967
+ "local_de_uso": ["privado", "grupo"],
2968
+ "subcomandos": ["help", "create", "list", "info", "add", "setcover", "setdesc", "setpublisher", "send", "rename", "remove", "delete", "reorder"],
2969
+ "metodos_de_uso": ["/pacote help", "/pacote create meupack", "/pacote list", "/pacote add <pacote>", "/pacote send <pacote>"],
2970
+ "mensagens_uso": {
2971
+ "default": ["/pacote help", "/pacote create meupack", "/pacote list", "/pacote add <pacote>", "/pacote send <pacote>"]
2972
+ },
2973
+ "arguments": [
2974
+ {
2975
+ "name": "subcomando",
2976
+ "type": "string",
2977
+ "required": true,
2978
+ "description": "ação de gerenciamento de pack",
2979
+ "default": null,
2980
+ "validation": "ação de gerenciamento de pack"
2981
+ },
2982
+ {
2983
+ "name": "parametros",
2984
+ "type": "array",
2985
+ "required": false,
2986
+ "description": "dependente do subcomando",
2987
+ "default": [],
2988
+ "validation": "dependente do subcomando"
2989
+ }
2990
+ ],
2991
+ "responses": {
2992
+ "success": "Comando executado com sucesso.",
2993
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
2994
+ "permission_error": "Permissão insuficiente para executar este comando.",
2995
+ "sucesso": "Comando executado com sucesso.",
2996
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
2997
+ "erro_permissao": "Permissão insuficiente para executar este comando."
2998
+ },
2999
+ "technical": {
3000
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "subcomando e argumentos do pack", "figurinha da mensagem atual/citada (para add/setcover)", "estado de rate limit por usuario", "dados de packs do usuario no armazenamento interno"],
3001
+ "dependencies": ["banco de dados de packs", "armazenamento de assets de figurinha"],
3002
+ "side_effects": ["cria/atualiza packs no banco", "pode armazenar/remover assets de figurinha"],
3003
+ "behavior": {
3004
+ "type": "list_management",
3005
+ "allowed_actions": ["add", "remove", "list"],
3006
+ "action_argument": "acao"
3007
+ },
3008
+ "handler": {
3009
+ "file": "stickerPackCommandHandlers.js",
3010
+ "method": "handlePackCommand",
3011
+ "command_case": "pacote"
3012
+ },
3013
+ "risk_level": "low",
3014
+ "stability": "stable",
3015
+ "version": "1.0.0"
3016
+ },
3017
+ "observability": {
3018
+ "event_name": "command.executed",
3019
+ "analytics_event": "whatsapp_command_pack",
3020
+ "tags": ["whatsapp", "command", "stickerPackModule", "pack"]
3021
+ },
3022
+ "privacy": {
3023
+ "retention": "standard_app_logs",
3024
+ "legal_basis": "service_execution_and_legitimate_interest"
3025
+ },
3026
+ "discovery": {
3027
+ "keywords": ["pacote", "packs", "figurinhas", "privado", "grupo"],
3028
+ "user_phrasings": ["quero usar pacote", "me ajuda com pacote", "gerencia packs de figurinhas"],
3029
+ "priority": 100
3030
+ }
3031
+ },
3032
+ {
3033
+ "key": "stickerModule:paraimagem",
3034
+ "name": "paraimagem",
3035
+ "id": "sticker.paraimagem",
3036
+ "aliases": ["tovideo", "tovid", "toimg"],
3037
+ "module": "stickerModule",
3038
+ "module_label": "stickerModule",
3039
+ "category": "figurinhas",
3040
+ "category_label": "Figurinhas",
3041
+ "descricao": "Converte figurinha para imagem ou video quando aplicavel.",
3042
+ "requirements": {
3043
+ "group": false,
3044
+ "admin": false,
3045
+ "owner": false,
3046
+ "google_login": true,
3047
+ "nsfw": false,
3048
+ "media": true,
3049
+ "reply": false
3050
+ },
3051
+ "premium": false,
3052
+ "allowed_plans": ["comum", "premium"],
3053
+ "rate_limit": null,
3054
+ "local_de_uso": ["privado", "grupo"],
3055
+ "subcomandos": [],
3056
+ "metodos_de_uso": ["/paraimagem", "/tovideo", "/tovid"],
3057
+ "mensagens_uso": {
3058
+ "default": ["📌 Use: /paraimagem (ou /tovideo / /tovid) respondendo a uma figurinha."]
3059
+ },
3060
+ "arguments": [],
3061
+ "responses": {
3062
+ "success": "Comando executado com sucesso.",
3063
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3064
+ "permission_error": "Permissão insuficiente para executar este comando.",
3065
+ "sucesso": "Comando executado com sucesso.",
3066
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3067
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3068
+ },
3069
+ "technical": {
3070
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "metadados da figurinha (incluindo se e animada)", "arquivo de figurinha baixado temporariamente para conversao"],
3071
+ "dependencies": ["conversão de mídia local", "armazenamento temporário"],
3072
+ "side_effects": ["faz download/conversão temporária de figurinha", "envia mídia convertida"],
3073
+ "behavior": {
3074
+ "type": "simple_action",
3075
+ "allowed_actions": []
3076
+ },
3077
+ "handler": {
3078
+ "file": "stickerConvertCommand.js",
3079
+ "method": "handleStickerConvertCommand",
3080
+ "command_case": "paraimagem"
3081
+ },
3082
+ "risk_level": "low",
3083
+ "stability": "stable",
3084
+ "version": "1.0.0"
3085
+ },
3086
+ "observability": {
3087
+ "event_name": "command.executed",
3088
+ "analytics_event": "whatsapp_command_toimg",
3089
+ "tags": ["whatsapp", "command", "stickerModule", "toimg"]
3090
+ },
3091
+ "privacy": {
3092
+ "retention": "standard_app_logs",
3093
+ "legal_basis": "service_execution_and_legitimate_interest"
3094
+ },
3095
+ "discovery": {
3096
+ "keywords": ["paraimagem", "tovideo", "tovid", "figurinhas", "privado", "grupo"],
3097
+ "user_phrasings": ["quero usar paraimagem", "me ajuda com paraimagem", "converte figurinha para imagem"],
3098
+ "priority": 100
3099
+ }
3100
+ }
3101
+ ]
3102
+ },
3103
+ {
3104
+ "key": "midia",
3105
+ "label": "Mídia",
3106
+ "icon": "🎵",
3107
+ "command_count": 4,
3108
+ "modules": ["playModule", "quoteModule", "tiktokModule"],
3109
+ "commands": [
3110
+ {
3111
+ "key": "tiktokModule:baixartiktok",
3112
+ "name": "baixartiktok",
3113
+ "id": "tiktok.baixartiktok",
3114
+ "aliases": ["tt", "tiktok"],
3115
+ "module": "tiktokModule",
3116
+ "module_label": "tiktokModule",
3117
+ "category": "midia",
3118
+ "category_label": "Mídia",
3119
+ "descricao": "Baixa midia do TikTok sem marca d'agua.",
3120
+ "requirements": {
3121
+ "group": false,
3122
+ "admin": false,
3123
+ "owner": false,
3124
+ "google_login": true,
3125
+ "nsfw": false,
3126
+ "media": false,
3127
+ "reply": false
3128
+ },
3129
+ "premium": false,
3130
+ "allowed_plans": ["comum", "premium"],
3131
+ "rate_limit": {
3132
+ "max": 5,
3133
+ "scope": "por_execucao"
3134
+ },
3135
+ "local_de_uso": ["privado", "grupo"],
3136
+ "subcomandos": [],
3137
+ "metodos_de_uso": ["/baixartiktok <url>", "/tt <url1> <url2>"],
3138
+ "mensagens_uso": {
3139
+ "default": ["🎬 *Baixartiktok Downloader*", "Uso: */baixartiktok <link1> [link2 ...]*", "Exemplo: */baixartiktok https://www.baixartiktok.com/@usuario/video/123*"]
3140
+ },
3141
+ "arguments": [
3142
+ {
3143
+ "name": "urls",
3144
+ "type": "array",
3145
+ "required": true,
3146
+ "description": "1 a 5 URLs do TikTok",
3147
+ "default": [],
3148
+ "validation": "1 a 5 URLs do TikTok"
3149
+ }
3150
+ ],
3151
+ "responses": {
3152
+ "success": "Comando executado com sucesso.",
3153
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3154
+ "permission_error": "Permissão insuficiente para executar este comando.",
3155
+ "sucesso": "Comando executado com sucesso.",
3156
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3157
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3158
+ },
3159
+ "technical": {
3160
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "URLs do TikTok extraidas do texto", "metadados do post (autor, descricao, estatisticas)", "tamanho dos arquivos para enforce de limite"],
3161
+ "dependencies": ["serviço extractor de TikTok"],
3162
+ "side_effects": ["baixa mídia temporária", "envia vídeo/imagens no chat"],
3163
+ "behavior": {
3164
+ "type": "argument_driven",
3165
+ "allowed_actions": []
3166
+ },
3167
+ "handler": {
3168
+ "file": "tiktokCommand.js",
3169
+ "method": "handleTikTokCommand",
3170
+ "command_case": "baixartiktok"
3171
+ },
3172
+ "risk_level": "low",
3173
+ "stability": "stable",
3174
+ "version": "1.0.0"
3175
+ },
3176
+ "observability": {
3177
+ "event_name": "command.executed",
3178
+ "analytics_event": "whatsapp_command_tiktok",
3179
+ "tags": ["whatsapp", "command", "tiktokModule", "tiktok"]
3180
+ },
3181
+ "privacy": {
3182
+ "retention": "standard_app_logs",
3183
+ "legal_basis": "service_execution_and_legitimate_interest"
3184
+ },
3185
+ "discovery": {
3186
+ "keywords": ["baixartiktok", "tt", "midia", "privado", "grupo"],
3187
+ "user_phrasings": ["quero usar baixartiktok", "me ajuda com baixartiktok", "baixa midia do baixartiktok"],
3188
+ "priority": 100
3189
+ }
3190
+ },
3191
+ {
3192
+ "key": "quoteModule:citar",
3193
+ "name": "citar",
3194
+ "id": "quote.citar",
3195
+ "aliases": ["qc", "quote"],
3196
+ "module": "quoteModule",
3197
+ "module_label": "quoteModule",
3198
+ "category": "midia",
3199
+ "category_label": "Mídia",
3200
+ "descricao": "Transforma texto em figurinha estilo quote.",
3201
+ "requirements": {
3202
+ "group": false,
3203
+ "admin": false,
3204
+ "owner": false,
3205
+ "google_login": true,
3206
+ "nsfw": false,
3207
+ "media": false,
3208
+ "reply": false
3209
+ },
3210
+ "premium": false,
3211
+ "allowed_plans": ["comum", "premium"],
3212
+ "rate_limit": null,
3213
+ "local_de_uso": ["privado", "grupo"],
3214
+ "subcomandos": [],
3215
+ "metodos_de_uso": ["/citar seu texto", "/qc @usuario texto"],
3216
+ "mensagens_uso": {
3217
+ "default": ["🖼️ *Citar*", "Use assim:", "*/citar* sua mensagem", "Ou responda uma mensagem com:", "*/citar*"]
3218
+ },
3219
+ "arguments": [
3220
+ {
3221
+ "name": "texto",
3222
+ "type": "string",
3223
+ "required": false,
3224
+ "description": "texto livre ou conteúdo de mensagem citada",
3225
+ "default": null,
3226
+ "validation": "texto livre ou conteúdo de mensagem citada"
3227
+ }
3228
+ ],
3229
+ "responses": {
3230
+ "success": "Comando executado com sucesso.",
3231
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3232
+ "permission_error": "Permissão insuficiente para executar este comando.",
3233
+ "sucesso": "Comando executado com sucesso.",
3234
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3235
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3236
+ },
3237
+ "technical": {
3238
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "texto alvo da quote (digitado ou citado)", "mencoes para resolver autor/alvo da quote", "nome de exibicao e avatar para renderizacao"],
3239
+ "dependencies": ["canvas", "assets de emoji remotos"],
3240
+ "side_effects": ["renderiza imagem temporária", "envia figurinha quote"],
3241
+ "behavior": {
3242
+ "type": "argument_driven",
3243
+ "allowed_actions": []
3244
+ },
3245
+ "handler": {
3246
+ "file": "quoteCommand.js",
3247
+ "method": "handleQuoteCommand",
3248
+ "command_case": "citar"
3249
+ },
3250
+ "risk_level": "low",
3251
+ "stability": "stable",
3252
+ "version": "1.0.0"
3253
+ },
3254
+ "observability": {
3255
+ "event_name": "command.executed",
3256
+ "analytics_event": "whatsapp_command_quote",
3257
+ "tags": ["whatsapp", "command", "quoteModule", "quote"]
3258
+ },
3259
+ "privacy": {
3260
+ "retention": "standard_app_logs",
3261
+ "legal_basis": "service_execution_and_legitimate_interest"
3262
+ },
3263
+ "discovery": {
3264
+ "keywords": ["citar", "qc", "midia", "privado", "grupo"],
3265
+ "user_phrasings": ["quero usar citar", "me ajuda com citar", "transforma texto em figurinha"],
3266
+ "priority": 100
3267
+ }
3268
+ },
3269
+ {
3270
+ "key": "playModule:tocar",
3271
+ "name": "tocar",
3272
+ "id": "play.tocar",
3273
+ "aliases": ["musica", "play"],
3274
+ "module": "playModule",
3275
+ "module_label": "playModule",
3276
+ "category": "midia",
3277
+ "category_label": "Mídia",
3278
+ "descricao": "Baixa/gera audio a partir de link ou busca no YouTube.",
3279
+ "requirements": {
3280
+ "group": false,
3281
+ "admin": false,
3282
+ "owner": false,
3283
+ "google_login": true,
3284
+ "nsfw": false,
3285
+ "media": false,
3286
+ "reply": false
3287
+ },
3288
+ "premium": false,
3289
+ "allowed_plans": ["comum", "premium"],
3290
+ "rate_limit": null,
3291
+ "local_de_uso": ["privado", "grupo"],
3292
+ "subcomandos": [],
3293
+ "metodos_de_uso": ["/tocar <link>", "/tocar <termo de busca>"],
3294
+ "mensagens_uso": {
3295
+ "default": ["🎵 Uso: /tocar <link do YouTube ou termo de busca>"]
3296
+ },
3297
+ "arguments": [
3298
+ {
3299
+ "name": "consulta",
3300
+ "type": "string",
3301
+ "required": true,
3302
+ "description": "URL YouTube ou termo de busca",
3303
+ "default": null,
3304
+ "validation": "URL YouTube ou termo de busca"
3305
+ }
3306
+ ],
3307
+ "responses": {
3308
+ "success": "Comando executado com sucesso.",
3309
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3310
+ "permission_error": "Permissão insuficiente para executar este comando.",
3311
+ "sucesso": "Comando executado com sucesso.",
3312
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3313
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3314
+ },
3315
+ "technical": {
3316
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "link ou termo de busca enviado no comando", "metadados de fila/download retornados pelo servico de midia", "informacoes de tamanho do arquivo para validacao de limite"],
3317
+ "dependencies": ["serviço YTDLS/Downloader", "ffmpeg", "ffprobe"],
3318
+ "side_effects": ["baixa mídia temporária", "envia áudio no chat"],
3319
+ "behavior": {
3320
+ "type": "argument_driven",
3321
+ "allowed_actions": []
3322
+ },
3323
+ "handler": {
3324
+ "file": "playCommand.js",
3325
+ "method": "handlePlayCommand",
3326
+ "command_case": "tocar"
3327
+ },
3328
+ "risk_level": "low",
3329
+ "stability": "stable",
3330
+ "version": "1.0.0"
3331
+ },
3332
+ "observability": {
3333
+ "event_name": "command.executed",
3334
+ "analytics_event": "whatsapp_command_play",
3335
+ "tags": ["whatsapp", "command", "playModule", "play"]
3336
+ },
3337
+ "privacy": {
3338
+ "retention": "standard_app_logs",
3339
+ "legal_basis": "service_execution_and_legitimate_interest"
3340
+ },
3341
+ "discovery": {
3342
+ "keywords": ["tocar", "midia", "privado", "grupo"],
3343
+ "user_phrasings": ["quero usar tocar", "me ajuda com tocar", "baixa/gera audio a partir"],
3344
+ "priority": 100
3345
+ }
3346
+ },
3347
+ {
3348
+ "key": "playModule:tocarvideo",
3349
+ "name": "tocarvideo",
3350
+ "id": "play.tocarvideo",
3351
+ "aliases": ["playvid"],
3352
+ "module": "playModule",
3353
+ "module_label": "playModule",
3354
+ "category": "midia",
3355
+ "category_label": "Mídia",
3356
+ "descricao": "Baixa video a partir de link ou busca no YouTube.",
3357
+ "requirements": {
3358
+ "group": false,
3359
+ "admin": false,
3360
+ "owner": false,
3361
+ "google_login": true,
3362
+ "nsfw": false,
3363
+ "media": false,
3364
+ "reply": false
3365
+ },
3366
+ "premium": true,
3367
+ "allowed_plans": ["premium"],
3368
+ "rate_limit": null,
3369
+ "local_de_uso": ["privado", "grupo"],
3370
+ "subcomandos": [],
3371
+ "metodos_de_uso": ["/tocarvideo <link>", "/tocarvideo <termo de busca>"],
3372
+ "mensagens_uso": {
3373
+ "default": ["🎬 Uso: /tocarvideo <link do YouTube ou termo de busca>"]
3374
+ },
3375
+ "arguments": [
3376
+ {
3377
+ "name": "consulta",
3378
+ "type": "string",
3379
+ "required": true,
3380
+ "description": "URL YouTube ou termo de busca",
3381
+ "default": null,
3382
+ "validation": "URL YouTube ou termo de busca"
3383
+ }
3384
+ ],
3385
+ "responses": {
3386
+ "success": "Comando executado com sucesso.",
3387
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3388
+ "permission_error": "Permissão insuficiente para executar este comando.",
3389
+ "sucesso": "Comando executado com sucesso.",
3390
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3391
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3392
+ },
3393
+ "technical": {
3394
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "link ou termo de busca enviado no comando", "metadados de fila/download retornados pelo servico de midia", "informacoes de tamanho e formato de video para validacao"],
3395
+ "dependencies": ["serviço YTDLS/Downloader", "ffmpeg", "ffprobe"],
3396
+ "side_effects": ["baixa mídia temporária", "envia vídeo no chat"],
3397
+ "behavior": {
3398
+ "type": "argument_driven",
3399
+ "allowed_actions": []
3400
+ },
3401
+ "handler": {
3402
+ "file": "playCommand.js",
3403
+ "method": "handlePlayVidCommand",
3404
+ "command_case": "tocarvideo"
3405
+ },
3406
+ "risk_level": "low",
3407
+ "stability": "stable",
3408
+ "version": "1.0.0"
3409
+ },
3410
+ "observability": {
3411
+ "event_name": "command.executed",
3412
+ "analytics_event": "whatsapp_command_playvid",
3413
+ "tags": ["whatsapp", "command", "playModule", "playvid"]
3414
+ },
3415
+ "privacy": {
3416
+ "retention": "standard_app_logs",
3417
+ "legal_basis": "service_execution_and_legitimate_interest"
3418
+ },
3419
+ "discovery": {
3420
+ "keywords": ["tocarvideo", "midia", "privado", "grupo"],
3421
+ "user_phrasings": ["quero usar tocarvideo", "me ajuda com tocarvideo", "baixa video a partir"],
3422
+ "priority": 100
3423
+ }
3424
+ }
3425
+ ]
3426
+ },
3427
+ {
3428
+ "key": "ia",
3429
+ "label": "Inteligência Artificial",
3430
+ "icon": "🤖",
3431
+ "command_count": 3,
3432
+ "modules": ["aiModule"],
3433
+ "commands": [
3434
+ {
3435
+ "key": "aiModule:ia",
3436
+ "name": "ia",
3437
+ "id": "ai.ia",
3438
+ "aliases": ["cat"],
3439
+ "module": "aiModule",
3440
+ "module_label": "aiModule",
3441
+ "category": "ia",
3442
+ "category_label": "Inteligência Artificial",
3443
+ "descricao": "Perguntas para IA com suporte opcional a resposta em audio.",
3444
+ "requirements": {
3445
+ "group": false,
3446
+ "admin": false,
3447
+ "owner": false,
3448
+ "google_login": true,
3449
+ "nsfw": false,
3450
+ "media": false,
3451
+ "reply": false
3452
+ },
3453
+ "premium": false,
3454
+ "allowed_plans": ["comum", "premium"],
3455
+ "rate_limit": null,
3456
+ "local_de_uso": ["privado", "grupo"],
3457
+ "subcomandos": [],
3458
+ "metodos_de_uso": ["/ia sua pergunta", "/ia --audio sua pergunta"],
3459
+ "mensagens_uso": {
3460
+ "default": ["*/ia* [--audio] sua pergunta", "*/ia* (responda ou envie uma imagem com legenda)", "Opções:", "--audio | --texto", "--detail low | high | auto", "Exemplo:", "*/ia* Explique como funciona a fotossíntese.", "*/ia* --audio Resuma a imagem."]
3461
+ },
3462
+ "arguments": [
3463
+ {
3464
+ "name": "prompt",
3465
+ "type": "string",
3466
+ "required": false,
3467
+ "description": "texto livre; pode usar contexto de mídia",
3468
+ "default": null,
3469
+ "validation": "texto livre; pode usar contexto de mídia"
3470
+ },
3471
+ {
3472
+ "name": "flags",
3473
+ "type": "array",
3474
+ "required": false,
3475
+ "description": "aliases de áudio/texto suportados",
3476
+ "default": [],
3477
+ "validation": "aliases de áudio/texto suportados"
3478
+ }
3479
+ ],
3480
+ "responses": {
3481
+ "success": "Comando executado com sucesso.",
3482
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3483
+ "permission_error": "Permissão insuficiente para executar este comando.",
3484
+ "sucesso": "Comando executado com sucesso.",
3485
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3486
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3487
+ },
3488
+ "technical": {
3489
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "prompt textual enviado ao modelo de IA", "flags de resposta (ex.: audio/voz)", "midia anexada/citada para analise multimodal (quando houver)", "identidade do usuario para sessao e contexto de conversa"],
3490
+ "dependencies": ["OpenAI API"],
3491
+ "side_effects": ["envia resposta textual/áudio de IA"],
3492
+ "behavior": {
3493
+ "type": "argument_driven",
3494
+ "allowed_actions": []
3495
+ },
3496
+ "handler": {
3497
+ "file": "catCommand.js",
3498
+ "method": "handleCatCommand",
3499
+ "command_case": "ia"
3500
+ },
3501
+ "risk_level": "low",
3502
+ "stability": "stable",
3503
+ "version": "1.0.0"
3504
+ },
3505
+ "observability": {
3506
+ "event_name": "command.executed",
3507
+ "analytics_event": "whatsapp_command_cat",
3508
+ "tags": ["whatsapp", "command", "aiModule", "cat"]
3509
+ },
3510
+ "privacy": {
3511
+ "retention": "standard_app_logs",
3512
+ "legal_basis": "service_execution_and_legitimate_interest"
3513
+ },
3514
+ "discovery": {
3515
+ "keywords": ["ia", "privado", "grupo"],
3516
+ "user_phrasings": ["quero usar ia", "me ajuda com ia", "perguntas para ia com"],
3517
+ "priority": 100
3518
+ }
3519
+ },
3520
+ {
3521
+ "key": "aiModule:iaimagem",
3522
+ "name": "iaimagem",
3523
+ "id": "ai.iaimagem",
3524
+ "aliases": ["catimage", "catimg"],
3525
+ "module": "aiModule",
3526
+ "module_label": "aiModule",
3527
+ "category": "ia",
3528
+ "category_label": "Inteligência Artificial",
3529
+ "descricao": "Gera/edita imagem com IA por prompt.",
3530
+ "requirements": {
3531
+ "group": false,
3532
+ "admin": false,
3533
+ "owner": false,
3534
+ "google_login": true,
3535
+ "nsfw": false,
3536
+ "media": false,
3537
+ "reply": false
3538
+ },
3539
+ "premium": true,
3540
+ "allowed_plans": ["premium"],
3541
+ "rate_limit": null,
3542
+ "local_de_uso": ["privado", "grupo"],
3543
+ "subcomandos": [],
3544
+ "metodos_de_uso": ["/iaimagem seu prompt", "/iaimagem --size 1536x1024 seu prompt"],
3545
+ "mensagens_uso": {
3546
+ "default": ["*/iaimagem* seu prompt", "*/iaimagem* (responda uma imagem com legenda para editar)", "Opções:", "--size 1024x1024 | 1024x1536 | 1536x1024 | auto", "--quality low | medium | high | auto", "--format png | jpeg | webp", "--background transparent | opaque | auto", "--compression 0-100", "Exemplo:", "*/iaimagem* --size 1536x1024 Um gato astronauta em aquarela."]
3547
+ },
3548
+ "arguments": [
3549
+ {
3550
+ "name": "prompt",
3551
+ "type": "string",
3552
+ "required": false,
3553
+ "description": "texto livre para gerar/editar imagem",
3554
+ "default": null,
3555
+ "validation": "texto livre para gerar/editar imagem"
3556
+ },
3557
+ {
3558
+ "name": "size",
3559
+ "type": "string",
3560
+ "required": false,
3561
+ "description": "auto|1024x1024|1024x1536|1536x1024",
3562
+ "default": "auto",
3563
+ "validation": "auto|1024x1024|1024x1536|1536x1024"
3564
+ },
3565
+ {
3566
+ "name": "quality",
3567
+ "type": "string",
3568
+ "required": false,
3569
+ "description": "auto|low|medium|high",
3570
+ "default": "auto",
3571
+ "validation": "auto|low|medium|high"
3572
+ },
3573
+ {
3574
+ "name": "format",
3575
+ "type": "string",
3576
+ "required": false,
3577
+ "description": "png|jpeg|webp",
3578
+ "default": "png",
3579
+ "validation": "png|jpeg|webp"
3580
+ }
3581
+ ],
3582
+ "responses": {
3583
+ "success": "Comando executado com sucesso.",
3584
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3585
+ "permission_error": "Permissão insuficiente para executar este comando.",
3586
+ "sucesso": "Comando executado com sucesso.",
3587
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3588
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3589
+ },
3590
+ "technical": {
3591
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "prompt de geracao/edicao de imagem", "opcoes de geracao (size, quality, format, background)", "imagem enviada/citada para edicao (quando houver)"],
3592
+ "dependencies": ["OpenAI API"],
3593
+ "side_effects": ["envia imagem gerada/editada por IA"],
3594
+ "behavior": {
3595
+ "type": "argument_driven",
3596
+ "allowed_actions": []
3597
+ },
3598
+ "handler": {
3599
+ "file": "catCommand.js",
3600
+ "method": "handleCatImageCommand",
3601
+ "command_case": "iaimagem"
3602
+ },
3603
+ "risk_level": "low",
3604
+ "stability": "stable",
3605
+ "version": "1.0.0"
3606
+ },
3607
+ "observability": {
3608
+ "event_name": "command.executed",
3609
+ "analytics_event": "whatsapp_command_catimg",
3610
+ "tags": ["whatsapp", "command", "aiModule", "catimg"]
3611
+ },
3612
+ "privacy": {
3613
+ "retention": "standard_app_logs",
3614
+ "legal_basis": "service_execution_and_legitimate_interest"
3615
+ },
3616
+ "discovery": {
3617
+ "keywords": ["iaimagem", "catimage", "ia", "privado", "grupo"],
3618
+ "user_phrasings": ["quero usar iaimagem", "me ajuda com iaimagem", "gera/edita imagem com ia"],
3619
+ "priority": 100
3620
+ }
3621
+ },
3622
+ {
3623
+ "key": "aiModule:pergunteia",
3624
+ "name": "pergunteia",
3625
+ "id": "ai.pergunteia",
3626
+ "aliases": ["iaprompt", "promptia", "catprompt"],
3627
+ "module": "aiModule",
3628
+ "module_label": "aiModule",
3629
+ "category": "ia",
3630
+ "category_label": "Inteligência Artificial",
3631
+ "descricao": "Define ou reseta o prompt personalizado da IA para o usuario.",
3632
+ "requirements": {
3633
+ "group": false,
3634
+ "admin": false,
3635
+ "owner": false,
3636
+ "google_login": true,
3637
+ "nsfw": false,
3638
+ "media": false,
3639
+ "reply": false
3640
+ },
3641
+ "premium": false,
3642
+ "allowed_plans": ["comum", "premium"],
3643
+ "rate_limit": null,
3644
+ "local_de_uso": ["privado", "grupo"],
3645
+ "subcomandos": ["reset"],
3646
+ "metodos_de_uso": ["/pergunteia novo prompt", "/pergunteia reset"],
3647
+ "mensagens_uso": {
3648
+ "default": ["*/pergunteia* seu novo prompt", "Para voltar ao padrão:", "*/pergunteia reset*"]
3649
+ },
3650
+ "arguments": [
3651
+ {
3652
+ "name": "conteudo",
3653
+ "type": "string",
3654
+ "required": true,
3655
+ "description": "texto do prompt ou reset",
3656
+ "default": null,
3657
+ "validation": "texto do prompt ou reset"
3658
+ }
3659
+ ],
3660
+ "responses": {
3661
+ "success": "Comando executado com sucesso.",
3662
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3663
+ "permission_error": "Permissão insuficiente para executar este comando.",
3664
+ "sucesso": "Comando executado com sucesso.",
3665
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3666
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3667
+ },
3668
+ "technical": {
3669
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "prompt personalizado informado pelo usuario", "identidade do usuario para salvar/atualizar preferencia"],
3670
+ "dependencies": ["OpenAI API", "store interno de prompt de IA"],
3671
+ "side_effects": ["salva ou reseta prompt personalizado do usuário"],
3672
+ "behavior": {
3673
+ "type": "subcommand",
3674
+ "allowed_actions": ["reset"]
3675
+ },
3676
+ "handler": {
3677
+ "file": "catCommand.js",
3678
+ "method": "handleCatPromptCommand",
3679
+ "command_case": "pergunteia"
3680
+ },
3681
+ "risk_level": "low",
3682
+ "stability": "stable",
3683
+ "version": "1.0.0"
3684
+ },
3685
+ "observability": {
3686
+ "event_name": "command.executed",
3687
+ "analytics_event": "whatsapp_command_catprompt",
3688
+ "tags": ["whatsapp", "command", "aiModule", "catprompt"]
3689
+ },
3690
+ "privacy": {
3691
+ "retention": "standard_app_logs",
3692
+ "legal_basis": "service_execution_and_legitimate_interest"
3693
+ },
3694
+ "discovery": {
3695
+ "keywords": ["pergunteia", "iaprompt", "promptia", "ia", "privado", "grupo"],
3696
+ "user_phrasings": ["quero usar pergunteia", "me ajuda com pergunteia", "define ou reseta o"],
3697
+ "priority": 100
3698
+ }
3699
+ }
3700
+ ]
3701
+ },
3702
+ {
3703
+ "key": "jogos",
3704
+ "label": "Jogos e Diversão",
3705
+ "icon": "🎮",
3706
+ "command_count": 2,
3707
+ "modules": ["gameModule", "rpgPokemonModule"],
3708
+ "commands": [
3709
+ {
3710
+ "key": "gameModule:dado",
3711
+ "name": "dado",
3712
+ "id": "game.dado",
3713
+ "aliases": ["dice"],
3714
+ "module": "gameModule",
3715
+ "module_label": "gameModule",
3716
+ "category": "jogos",
3717
+ "category_label": "Jogos e Diversão",
3718
+ "descricao": "Rola um dado com numero de lados opcional.",
3719
+ "requirements": {
3720
+ "group": false,
3721
+ "admin": false,
3722
+ "owner": false,
3723
+ "google_login": true,
3724
+ "nsfw": false,
3725
+ "media": false,
3726
+ "reply": false
3727
+ },
3728
+ "premium": false,
3729
+ "allowed_plans": ["comum", "premium"],
3730
+ "rate_limit": null,
3731
+ "local_de_uso": ["privado", "grupo"],
3732
+ "subcomandos": [],
3733
+ "metodos_de_uso": ["/dado", "/dado 20", "/dice 100"],
3734
+ "mensagens_uso": {
3735
+ "default": ["Formato de uso:", "/dado", "/dado <lados (2-1000)>", "/dice <lados (2-1000)>"]
3736
+ },
3737
+ "arguments": [
3738
+ {
3739
+ "name": "lados",
3740
+ "type": "integer",
3741
+ "required": false,
3742
+ "description": "2 a 1000",
3743
+ "default": 6,
3744
+ "validation": "2 a 1000"
3745
+ }
3746
+ ],
3747
+ "responses": {
3748
+ "success": "Comando executado com sucesso.",
3749
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3750
+ "permission_error": "Permissão insuficiente para executar este comando.",
3751
+ "sucesso": "Comando executado com sucesso.",
3752
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3753
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3754
+ },
3755
+ "technical": {
3756
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "numero de lados informado no argumento (quando houver)"],
3757
+ "dependencies": [],
3758
+ "side_effects": ["gera número aleatório", "envia resultado no chat"],
3759
+ "behavior": {
3760
+ "type": "argument_driven",
3761
+ "allowed_actions": []
3762
+ },
3763
+ "handler": {
3764
+ "file": "diceCommand.js",
3765
+ "method": "handleDiceCommand",
3766
+ "command_case": "dado"
3767
+ },
3768
+ "risk_level": "low",
3769
+ "stability": "stable",
3770
+ "version": "1.0.0"
3771
+ },
3772
+ "observability": {
3773
+ "event_name": "command.executed",
3774
+ "analytics_event": "whatsapp_command_dado",
3775
+ "tags": ["whatsapp", "command", "gameModule", "dado"]
3776
+ },
3777
+ "privacy": {
3778
+ "retention": "standard_app_logs",
3779
+ "legal_basis": "service_execution_and_legitimate_interest"
3780
+ },
3781
+ "discovery": {
3782
+ "keywords": ["dado", "dice", "jogos", "privado", "grupo"],
3783
+ "user_phrasings": ["quero usar dado", "me ajuda com dado", "rola um dado com"],
3784
+ "priority": 100
3785
+ }
3786
+ },
3787
+ {
3788
+ "key": "rpgPokemonModule:pokemon",
3789
+ "name": "pokemon",
3790
+ "id": "rpgpokemon.pokemon",
3791
+ "aliases": ["rpg"],
3792
+ "module": "rpgPokemonModule",
3793
+ "module_label": "rpgPokemonModule",
3794
+ "category": "jogos",
3795
+ "category_label": "Jogos e Diversão",
3796
+ "descricao": "Comando principal do RPG Pokemon (exploracao, batalha, loja e social).",
3797
+ "requirements": {
3798
+ "group": false,
3799
+ "admin": false,
3800
+ "owner": false,
3801
+ "google_login": true,
3802
+ "nsfw": false,
3803
+ "media": false,
3804
+ "reply": false
3805
+ },
3806
+ "premium": false,
3807
+ "allowed_plans": ["comum", "premium"],
3808
+ "rate_limit": null,
3809
+ "local_de_uso": ["privado", "grupo"],
3810
+ "subcomandos": ["help", "ajuda", "start", "perfil", "explorar", "atacar", "capturar", "fugir", "time", "escolher", "loja", "comprar", "usar", "bolsa", "pokedex", "evolucao", "missoes", "viajar", "tm", "berry", "raid", "desafiar", "pvp", "ginasio", "trade", "coop", "evento", "social", "karma", "engajamento"],
3811
+ "metodos_de_uso": ["/pokemon help", "/pokemon start", "/pokemon explorar", "/pokemon atacar 1"],
3812
+ "mensagens_uso": {
3813
+ "default": ["/pokemon help", "/pokemon start", "/pokemon explorar", "/pokemon atacar 1"]
3814
+ },
3815
+ "arguments": [
3816
+ {
3817
+ "name": "acao",
3818
+ "type": "string",
3819
+ "required": true,
3820
+ "description": "subcomando permitido do RPG",
3821
+ "default": null,
3822
+ "validation": "subcomando permitido do RPG"
3823
+ },
3824
+ {
3825
+ "name": "parametros",
3826
+ "type": "array",
3827
+ "required": false,
3828
+ "description": "dependente da ação",
3829
+ "default": [],
3830
+ "validation": "dependente da ação"
3831
+ }
3832
+ ],
3833
+ "responses": {
3834
+ "success": "Comando executado com sucesso.",
3835
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3836
+ "permission_error": "Permissão insuficiente para executar este comando.",
3837
+ "sucesso": "Comando executado com sucesso.",
3838
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3839
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3840
+ },
3841
+ "technical": {
3842
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "acao/subcomando do RPG e argumentos complementares", "mencoes usadas em interacoes sociais/PvP", "estado do jogador e da sessao RPG no backend"],
3843
+ "dependencies": ["serviços internos de RPG"],
3844
+ "side_effects": ["altera estado de jogo no backend", "envia retorno de ação"],
3845
+ "behavior": {
3846
+ "type": "subcommand",
3847
+ "allowed_actions": ["help", "ajuda", "start", "perfil", "explorar", "atacar", "capturar", "fugir", "time", "escolher", "loja", "comprar", "usar", "bolsa", "pokedex", "evolucao", "missoes", "viajar", "tm", "berry", "raid", "desafiar", "pvp", "ginasio", "trade", "coop", "evento", "social", "karma", "engajamento"]
3848
+ },
3849
+ "handler": {
3850
+ "file": "rpgPokemonCommand.js",
3851
+ "method": "handleRpgPokemonCommand",
3852
+ "command_case": "pokemon"
3853
+ },
3854
+ "risk_level": "low",
3855
+ "stability": "stable",
3856
+ "version": "1.0.0"
3857
+ },
3858
+ "observability": {
3859
+ "event_name": "command.executed",
3860
+ "analytics_event": "whatsapp_command_rpg",
3861
+ "tags": ["whatsapp", "command", "rpgPokemonModule", "rpg"]
3862
+ },
3863
+ "privacy": {
3864
+ "retention": "standard_app_logs",
3865
+ "legal_basis": "service_execution_and_legitimate_interest"
3866
+ },
3867
+ "discovery": {
3868
+ "keywords": ["pokemon", "jogos", "privado", "grupo"],
3869
+ "user_phrasings": ["quero usar pokemon", "me ajuda com pokemon", "comando principal do pokemon"],
3870
+ "priority": 100
3871
+ }
3872
+ }
3873
+ ]
3874
+ },
3875
+ {
3876
+ "key": "estatisticas",
3877
+ "label": "Estatísticas",
3878
+ "icon": "📊",
3879
+ "command_count": 2,
3880
+ "modules": ["statsModule"],
3881
+ "commands": [
3882
+ {
3883
+ "key": "statsModule:classificacao",
3884
+ "name": "classificacao",
3885
+ "id": "stats.classificacao",
3886
+ "aliases": ["rank", "top5", "ranking"],
3887
+ "module": "statsModule",
3888
+ "module_label": "statsModule",
3889
+ "category": "estatisticas",
3890
+ "category_label": "Estatísticas",
3891
+ "descricao": "Mostra top 5 mais ativos do grupo.",
3892
+ "requirements": {
3893
+ "group": true,
3894
+ "admin": false,
3895
+ "owner": false,
3896
+ "google_login": true,
3897
+ "nsfw": false,
3898
+ "media": false,
3899
+ "reply": false
3900
+ },
3901
+ "premium": false,
3902
+ "allowed_plans": ["comum", "premium"],
3903
+ "rate_limit": null,
3904
+ "local_de_uso": ["grupo"],
3905
+ "subcomandos": [],
3906
+ "metodos_de_uso": ["/classificacao", "/rank", "/top5"],
3907
+ "mensagens_uso": {
3908
+ "default": ["/classificacao", "/rank", "/top5"]
3909
+ },
3910
+ "arguments": [],
3911
+ "responses": {
3912
+ "success": "Comando executado com sucesso.",
3913
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3914
+ "permission_error": "Permissão insuficiente para executar este comando.",
3915
+ "sucesso": "Comando executado com sucesso.",
3916
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3917
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3918
+ },
3919
+ "technical": {
3920
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "escopo do grupo (group id)", "estatisticas de mensagens agregadas no banco", "nomes de exibicao para composicao do ranking"],
3921
+ "dependencies": ["banco de dados de mensagens"],
3922
+ "side_effects": ["consulta agregações no banco", "envia ranking"],
3923
+ "behavior": {
3924
+ "type": "simple_action",
3925
+ "allowed_actions": []
3926
+ },
3927
+ "handler": {
3928
+ "file": "rankingCommand.js",
3929
+ "method": "handleRankingCommand",
3930
+ "command_case": "classificacao"
3931
+ },
3932
+ "risk_level": "low",
3933
+ "stability": "stable",
3934
+ "version": "1.0.0"
3935
+ },
3936
+ "observability": {
3937
+ "event_name": "command.executed",
3938
+ "analytics_event": "whatsapp_command_ranking",
3939
+ "tags": ["whatsapp", "command", "statsModule", "ranking"]
3940
+ },
3941
+ "privacy": {
3942
+ "retention": "standard_app_logs",
3943
+ "legal_basis": "service_execution_and_legitimate_interest"
3944
+ },
3945
+ "discovery": {
3946
+ "keywords": ["classificacao", "rank", "top5", "estatisticas", "grupo"],
3947
+ "user_phrasings": ["quero usar classificacao", "me ajuda com classificacao", "mostra top 5 mais"],
3948
+ "priority": 100
3949
+ }
3950
+ },
3951
+ {
3952
+ "key": "statsModule:classificacaoglobal",
3953
+ "name": "classificacaoglobal",
3954
+ "id": "stats.classificacaoglobal",
3955
+ "aliases": ["rankglobal", "globalrank", "globalranking", "rankingglobal"],
3956
+ "module": "statsModule",
3957
+ "module_label": "statsModule",
3958
+ "category": "estatisticas",
3959
+ "category_label": "Estatísticas",
3960
+ "descricao": "Mostra top 5 global de atividade.",
3961
+ "requirements": {
3962
+ "group": false,
3963
+ "admin": false,
3964
+ "owner": false,
3965
+ "google_login": true,
3966
+ "nsfw": false,
3967
+ "media": false,
3968
+ "reply": false
3969
+ },
3970
+ "premium": false,
3971
+ "allowed_plans": ["comum", "premium"],
3972
+ "rate_limit": null,
3973
+ "local_de_uso": ["privado", "grupo"],
3974
+ "subcomandos": [],
3975
+ "metodos_de_uso": ["/classificacaoglobal", "/globalrank"],
3976
+ "mensagens_uso": {
3977
+ "default": ["/classificacaoglobal", "/globalrank"]
3978
+ },
3979
+ "arguments": [],
3980
+ "responses": {
3981
+ "success": "Comando executado com sucesso.",
3982
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
3983
+ "permission_error": "Permissão insuficiente para executar este comando.",
3984
+ "sucesso": "Comando executado com sucesso.",
3985
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
3986
+ "erro_permissao": "Permissão insuficiente para executar este comando."
3987
+ },
3988
+ "technical": {
3989
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "estatisticas globais de mensagens agregadas no banco", "nomes de exibicao para composicao do ranking"],
3990
+ "dependencies": ["banco de dados de mensagens"],
3991
+ "side_effects": ["consulta agregações no banco", "envia ranking"],
3992
+ "behavior": {
3993
+ "type": "simple_action",
3994
+ "allowed_actions": []
3995
+ },
3996
+ "handler": {
3997
+ "file": "globalRankingCommand.js",
3998
+ "method": "handleGlobalRankingCommand",
3999
+ "command_case": "classificacaoglobal"
4000
+ },
4001
+ "risk_level": "low",
4002
+ "stability": "stable",
4003
+ "version": "1.0.0"
4004
+ },
4005
+ "observability": {
4006
+ "event_name": "command.executed",
4007
+ "analytics_event": "whatsapp_command_rankingglobal",
4008
+ "tags": ["whatsapp", "command", "statsModule", "rankingglobal"]
4009
+ },
4010
+ "privacy": {
4011
+ "retention": "standard_app_logs",
4012
+ "legal_basis": "service_execution_and_legitimate_interest"
4013
+ },
4014
+ "discovery": {
4015
+ "keywords": ["classificacaoglobal", "rankglobal", "globalrank", "globalranking", "estatisticas", "privado", "grupo"],
4016
+ "user_phrasings": ["quero usar classificacaoglobal", "me ajuda com classificacaoglobal", "mostra top 5 global"],
4017
+ "priority": 100
4018
+ }
4019
+ }
4020
+ ]
4021
+ },
4022
+ {
4023
+ "key": "anime",
4024
+ "label": "Anime e Imagens",
4025
+ "icon": "🖼️",
4026
+ "command_count": 3,
4027
+ "modules": ["waifuPicsModule"],
4028
+ "commands": [
4029
+ {
4030
+ "key": "waifuPicsModule:waifu",
4031
+ "name": "waifu",
4032
+ "id": "waifupics.waifu",
4033
+ "aliases": ["waifupics", "wp"],
4034
+ "module": "waifuPicsModule",
4035
+ "module_label": "waifuPicsModule",
4036
+ "category": "anime",
4037
+ "category_label": "Anime e Imagens",
4038
+ "descricao": "Receba uma imagem incrível de anime (SFW)! Escolha uma categoria como 'neko' ou 'waifu'. ✨",
4039
+ "requirements": {
4040
+ "group": false,
4041
+ "admin": false,
4042
+ "owner": false,
4043
+ "google_login": true,
4044
+ "nsfw": false,
4045
+ "media": false,
4046
+ "reply": false
4047
+ },
4048
+ "premium": false,
4049
+ "allowed_plans": ["comum", "premium"],
4050
+ "rate_limit": null,
4051
+ "local_de_uso": ["Privado", "Grupos"],
4052
+ "subcomandos": [],
4053
+ "metodos_de_uso": ["/waifu <categoria>", "/wp neko"],
4054
+ "mensagens_uso": {
4055
+ "default": ["/waifu <categoria>", "/wp neko"]
4056
+ },
4057
+ "arguments": [
4058
+ {
4059
+ "name": "categoria",
4060
+ "type": "string",
4061
+ "required": true,
4062
+ "description": "categoria SFW suportada",
4063
+ "default": null,
4064
+ "validation": "categoria SFW suportada"
4065
+ }
4066
+ ],
4067
+ "responses": {
4068
+ "success": "✅ Pedido recebido! Aqui vai sua imagem.\nDica: você pode pedir outra categoria no próximo comando (ex.: <prefix>waifu neko).",
4069
+ "usage_error": "❗ Não entendi o formato do comando.\nExemplos:\n• <prefix>waifu neko\n• <prefix>waifunsfw waifu\nPara ver todas as categorias: <prefix>waifuajuda",
4070
+ "permission_error": "🔒 Este comando não está liberado para você neste contexto.\nSe for NSFW em grupo, peça para um admin usar <prefix>nsfw on.",
4071
+ "sucesso": "✅ Imagem enviada com sucesso!\nExemplo de próximo pedido: <prefix>waifu hug",
4072
+ "erro_uso": "❗ Categoria inválida ou ausente.\nExemplos: <prefix>waifu neko | <prefix>wp waifu\nVeja a lista completa em <prefix>waifuajuda.",
4073
+ "erro_permissao": "🔒 Não consegui liberar este pedido para seu perfil.\nSe achar que é engano, verifique seu plano e tente novamente."
4074
+ },
4075
+ "technical": {
4076
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "ID do chat", "ID do remetente", "Comando e categoria escolhida"],
4077
+ "dependencies": ["Waifu.pics API"],
4078
+ "side_effects": ["consulta API externa", "envia imagem no chat"],
4079
+ "behavior": {
4080
+ "type": "argument_driven",
4081
+ "allowed_actions": []
4082
+ },
4083
+ "handler": {
4084
+ "file": "waifuPicsCommand.js",
4085
+ "method": "handleWaifuPicsCommand",
4086
+ "command_case": "waifu"
4087
+ },
4088
+ "risk_level": "low",
4089
+ "stability": "stable",
4090
+ "version": "1.0.0"
4091
+ },
4092
+ "observability": {
4093
+ "event_name": "command.executed",
4094
+ "analytics_event": "whatsapp_command_wp",
4095
+ "tags": ["whatsapp", "command", "waifuPicsModule", "wp"]
4096
+ },
4097
+ "privacy": {
4098
+ "retention": "standard_app_logs",
4099
+ "legal_basis": "service_execution_and_legitimate_interest"
4100
+ },
4101
+ "discovery": {
4102
+ "keywords": ["waifu", "waifupics", "anime", "privado", "grupo"],
4103
+ "user_phrasings": ["quero usar waifu", "me ajuda com waifu", "envia imagem sfw da"],
4104
+ "priority": 100
4105
+ }
4106
+ },
4107
+ {
4108
+ "key": "waifuPicsModule:waifuajuda",
4109
+ "name": "waifuajuda",
4110
+ "id": "waifupics.waifuajuda",
4111
+ "aliases": ["wppicshelp"],
4112
+ "module": "waifuPicsModule",
4113
+ "module_label": "waifuPicsModule",
4114
+ "category": "anime",
4115
+ "category_label": "Anime e Imagens",
4116
+ "descricao": "Veja todas as categorias de fotos anime que eu posso te enviar! 📖",
4117
+ "requirements": {
4118
+ "group": false,
4119
+ "admin": false,
4120
+ "owner": false,
4121
+ "google_login": true,
4122
+ "nsfw": false,
4123
+ "media": false,
4124
+ "reply": false
4125
+ },
4126
+ "premium": false,
4127
+ "allowed_plans": ["comum", "premium"],
4128
+ "rate_limit": null,
4129
+ "local_de_uso": ["Privado", "Grupos"],
4130
+ "subcomandos": [],
4131
+ "metodos_de_uso": ["/waifuajuda"],
4132
+ "mensagens_uso": {
4133
+ "default": ["/waifuajuda"]
4134
+ },
4135
+ "arguments": [],
4136
+ "responses": {
4137
+ "success": "✅ Pedido recebido! Aqui vai sua imagem.\nDica: você pode pedir outra categoria no próximo comando (ex.: <prefix>waifu neko).",
4138
+ "usage_error": "❗ Não entendi o formato do comando.\nExemplos:\n• <prefix>waifu neko\n• <prefix>waifunsfw waifu\nPara ver todas as categorias: <prefix>waifuajuda",
4139
+ "permission_error": "🔒 Este comando não está liberado para você neste contexto.\nSe for NSFW em grupo, peça para um admin usar <prefix>nsfw on.",
4140
+ "sucesso": "📚 Guia enviado com sucesso.\nAgora experimente: <prefix>waifu neko",
4141
+ "erro_uso": "ℹ️ Este comando não precisa de argumentos.\nUse apenas: <prefix>waifuajuda",
4142
+ "erro_permissao": "🔒 Não consegui mostrar o guia neste contexto.\nTente novamente no privado ou em um grupo permitido."
4143
+ },
4144
+ "technical": {
4145
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "ID do chat", "ID do remetente"],
4146
+ "dependencies": ["Waifu.pics API"],
4147
+ "side_effects": ["envia mensagem de ajuda"],
4148
+ "behavior": {
4149
+ "type": "simple_action",
4150
+ "allowed_actions": []
4151
+ },
4152
+ "handler": {
4153
+ "file": "waifuPicsCommand.js",
4154
+ "method": "getWaifuPicsUsageText",
4155
+ "command_case": "waifuajuda"
4156
+ },
4157
+ "risk_level": "low",
4158
+ "stability": "stable",
4159
+ "version": "1.0.0"
4160
+ },
4161
+ "observability": {
4162
+ "event_name": "command.executed",
4163
+ "analytics_event": "whatsapp_command_wppicshelp",
4164
+ "tags": ["whatsapp", "command", "waifuPicsModule", "wppicshelp"]
4165
+ },
4166
+ "privacy": {
4167
+ "retention": "standard_app_logs",
4168
+ "legal_basis": "service_execution_and_legitimate_interest"
4169
+ },
4170
+ "discovery": {
4171
+ "keywords": ["waifuajuda", "anime", "privado", "grupo"],
4172
+ "user_phrasings": ["quero usar waifuajuda", "me ajuda com waifuajuda", "mostra ajuda e categorias"],
4173
+ "priority": 100
4174
+ }
4175
+ },
4176
+ {
4177
+ "key": "waifuPicsModule:waifunsfw",
4178
+ "name": "waifunsfw",
4179
+ "id": "waifupics.waifunsfw",
4180
+ "aliases": ["waifupicsnsfw", "wpnsfw"],
4181
+ "module": "waifuPicsModule",
4182
+ "module_label": "waifuPicsModule",
4183
+ "category": "anime",
4184
+ "category_label": "Anime e Imagens",
4185
+ "descricao": "Mande aquela imagem picante (NSFW). Exige que o grupo autorize! 🔞",
4186
+ "requirements": {
4187
+ "group": false,
4188
+ "admin": false,
4189
+ "owner": false,
4190
+ "google_login": true,
4191
+ "nsfw": true,
4192
+ "media": false,
4193
+ "reply": false
4194
+ },
4195
+ "premium": true,
4196
+ "allowed_plans": ["premium"],
4197
+ "rate_limit": null,
4198
+ "local_de_uso": ["Privado", "Grupos"],
4199
+ "subcomandos": [],
4200
+ "metodos_de_uso": ["/waifunsfw <categoria>", "/wpnsfw waifu"],
4201
+ "mensagens_uso": {
4202
+ "default": ["/waifunsfw <categoria>", "/wpnsfw waifu"]
4203
+ },
4204
+ "arguments": [
4205
+ {
4206
+ "name": "categoria",
4207
+ "type": "string",
4208
+ "required": true,
4209
+ "description": "categoria NSFW suportada",
4210
+ "default": null,
4211
+ "validation": "categoria NSFW suportada"
4212
+ }
4213
+ ],
4214
+ "responses": {
4215
+ "success": "✅ Pedido recebido! Aqui vai sua imagem.\nDica: você pode pedir outra categoria no próximo comando (ex.: <prefix>waifu neko).",
4216
+ "usage_error": "❗ Não entendi o formato do comando.\nExemplos:\n• <prefix>waifu neko\n• <prefix>waifunsfw waifu\nPara ver todas as categorias: <prefix>waifuajuda",
4217
+ "permission_error": "🔒 Este comando não está liberado para você neste contexto.\nSe for NSFW em grupo, peça para um admin usar <prefix>nsfw on.",
4218
+ "sucesso": "🔞 Imagem NSFW enviada.\nExemplo de próximo pedido: <prefix>waifunsfw neko",
4219
+ "erro_uso": "❗ Categoria NSFW inválida ou ausente.\nExemplos: <prefix>waifunsfw waifu | <prefix>wpnsfw neko\nVeja opções em <prefix>waifuajuda.",
4220
+ "erro_permissao": "🔒 Este comando NSFW exige acesso Premium.\nEm grupos, também é preciso NSFW ativo com <prefix>nsfw on."
4221
+ },
4222
+ "technical": {
4223
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "ID do chat", "ID do remetente", "Comando e categoria", "Categoria"],
4224
+ "dependencies": ["Waifu.pics API", "configuração de NSFW por grupo"],
4225
+ "side_effects": ["consulta API externa", "envia imagem NSFW no chat"],
4226
+ "behavior": {
4227
+ "type": "argument_driven",
4228
+ "allowed_actions": []
4229
+ },
4230
+ "handler": {
4231
+ "file": "waifuPicsCommand.js",
4232
+ "method": "handleWaifuPicsCommand",
4233
+ "command_case": "waifunsfw"
4234
+ },
4235
+ "risk_level": "low",
4236
+ "stability": "stable",
4237
+ "version": "1.0.0"
4238
+ },
4239
+ "observability": {
4240
+ "event_name": "command.executed",
4241
+ "analytics_event": "whatsapp_command_wpnsfw",
4242
+ "tags": ["whatsapp", "command", "waifuPicsModule", "wpnsfw"]
4243
+ },
4244
+ "privacy": {
4245
+ "retention": "standard_app_logs",
4246
+ "legal_basis": "service_execution_and_legitimate_interest"
4247
+ },
4248
+ "discovery": {
4249
+ "keywords": ["waifunsfw", "waifupicsnsfw", "anime", "privado", "grupo"],
4250
+ "user_phrasings": ["quero usar waifunsfw", "me ajuda com waifunsfw", "envia imagem nsfw da"],
4251
+ "priority": 100
4252
+ }
4253
+ }
4254
+ ]
4255
+ },
4256
+ {
4257
+ "key": "usuario",
4258
+ "label": "Perfil de Usuário",
4259
+ "icon": "👤",
4260
+ "command_count": 1,
4261
+ "modules": ["userModule"],
4262
+ "commands": [
4263
+ {
4264
+ "key": "userModule:perfil",
4265
+ "name": "perfil",
4266
+ "id": "user.perfil",
4267
+ "aliases": ["usuario", "user"],
4268
+ "module": "userModule",
4269
+ "module_label": "userModule",
4270
+ "category": "usuario",
4271
+ "category_label": "Perfil de Usuário",
4272
+ "descricao": "Consulta perfil e estatisticas de um usuario.",
4273
+ "requirements": {
4274
+ "group": false,
4275
+ "admin": false,
4276
+ "owner": false,
4277
+ "google_login": true,
4278
+ "nsfw": false,
4279
+ "media": false,
4280
+ "reply": false
4281
+ },
4282
+ "premium": false,
4283
+ "allowed_plans": ["comum", "premium"],
4284
+ "rate_limit": null,
4285
+ "local_de_uso": ["privado", "grupo"],
4286
+ "subcomandos": ["perfil", "profile"],
4287
+ "metodos_de_uso": ["/perfil perfil", "/perfil perfil <id|telefone>", "/usuario perfil @contato"],
4288
+ "mensagens_uso": {
4289
+ "default": ["Formato de uso:", "/perfil perfil <id|telefone>", "Dica:", "• Você pode mencionar alguém.", "• Ou responder a mensagem do usuário desejado."]
4290
+ },
4291
+ "arguments": [
4292
+ {
4293
+ "name": "subcomando",
4294
+ "type": "string",
4295
+ "required": true,
4296
+ "description": "perfil|profile",
4297
+ "default": null,
4298
+ "validation": "perfil|profile"
4299
+ },
4300
+ {
4301
+ "name": "alvo",
4302
+ "type": "string",
4303
+ "required": false,
4304
+ "description": "id, telefone, menção ou reply",
4305
+ "default": null,
4306
+ "validation": "id, telefone, menção ou reply"
4307
+ }
4308
+ ],
4309
+ "responses": {
4310
+ "success": "Comando executado com sucesso.",
4311
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
4312
+ "permission_error": "Permissão insuficiente para executar este comando.",
4313
+ "sucesso": "Comando executado com sucesso.",
4314
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
4315
+ "erro_permissao": "Permissão insuficiente para executar este comando."
4316
+ },
4317
+ "technical": {
4318
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "alvo do perfil (mencao, resposta, id ou telefone)", "mapeamento de identidade jid/lid para usuario canonico", "dados de perfil/atividade/premium/bloqueio no banco e stores"],
4319
+ "dependencies": ["banco de dados de mensagens/perfil", "stores internas de premium/blocklist"],
4320
+ "side_effects": ["consulta perfil/estatísticas no banco", "envia painel de usuário"],
4321
+ "behavior": {
4322
+ "type": "subcommand",
4323
+ "allowed_actions": ["perfil", "profile"]
4324
+ },
4325
+ "handler": {
4326
+ "file": "userCommand.js",
4327
+ "method": "handleUserCommand",
4328
+ "command_case": "perfil"
4329
+ },
4330
+ "risk_level": "low",
4331
+ "stability": "stable",
4332
+ "version": "1.0.0"
4333
+ },
4334
+ "observability": {
4335
+ "event_name": "command.executed",
4336
+ "analytics_event": "whatsapp_command_user",
4337
+ "tags": ["whatsapp", "command", "userModule", "user"]
4338
+ },
4339
+ "privacy": {
4340
+ "retention": "standard_app_logs",
4341
+ "legal_basis": "service_execution_and_legitimate_interest"
4342
+ },
4343
+ "discovery": {
4344
+ "keywords": ["perfil", "usuario", "privado", "grupo"],
4345
+ "user_phrasings": ["quero usar perfil", "me ajuda com perfil", "consulta perfil e estatisticas"],
4346
+ "priority": 100
4347
+ }
4348
+ }
4349
+ ]
4350
+ },
4351
+ {
4352
+ "key": "menu",
4353
+ "label": "Menu e Navegação",
4354
+ "icon": "📚",
4355
+ "command_count": 1,
4356
+ "modules": ["menuModule"],
4357
+ "commands": [
4358
+ {
4359
+ "key": "menuModule:menu",
4360
+ "name": "menu",
4361
+ "id": "menu.menu",
4362
+ "aliases": [],
4363
+ "module": "menuModule",
4364
+ "module_label": "menuModule",
4365
+ "category": "menu",
4366
+ "category_label": "Menu e Navegação",
4367
+ "descricao": "Exibe o menu principal ou um menu por categoria.",
4368
+ "requirements": {
4369
+ "group": false,
4370
+ "admin": false,
4371
+ "owner": false,
4372
+ "google_login": true,
4373
+ "nsfw": false,
4374
+ "media": false,
4375
+ "reply": false
4376
+ },
4377
+ "premium": false,
4378
+ "allowed_plans": ["comum", "premium"],
4379
+ "rate_limit": null,
4380
+ "local_de_uso": ["privado", "grupo"],
4381
+ "subcomandos": ["figurinhas", "sticker", "stickers", "midia", "media", "quote", "quotes", "ia", "ai", "stats", "estatisticas", "anime"],
4382
+ "metodos_de_uso": ["/menu", "/menu anime", "/menu stats"],
4383
+ "mensagens_uso": {
4384
+ "default": ["/menu", "/menu anime", "/menu stats"]
4385
+ },
4386
+ "arguments": [
4387
+ {
4388
+ "name": "categoria",
4389
+ "type": "string",
4390
+ "required": false,
4391
+ "description": "categoria suportada do menu",
4392
+ "default": null,
4393
+ "validation": "categoria suportada do menu"
4394
+ }
4395
+ ],
4396
+ "responses": {
4397
+ "success": "Comando executado com sucesso.",
4398
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
4399
+ "permission_error": "Permissão insuficiente para executar este comando.",
4400
+ "sucesso": "Comando executado com sucesso.",
4401
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
4402
+ "erro_permissao": "Permissão insuficiente para executar este comando."
4403
+ },
4404
+ "technical": {
4405
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "categoria solicitada no menu (quando informada)"],
4406
+ "dependencies": ["URL de imagem do menu (quando configurada)"],
4407
+ "side_effects": ["envia menu no chat"],
4408
+ "behavior": {
4409
+ "type": "subcommand",
4410
+ "allowed_actions": ["figurinhas", "sticker", "stickers", "midia", "media", "quote", "quotes", "ia", "ai", "stats", "estatisticas", "anime"]
4411
+ },
4412
+ "handler": {
4413
+ "file": "menus.js",
4414
+ "method": "handleMenuCommand",
4415
+ "command_case": "menu"
4416
+ },
4417
+ "risk_level": "low",
4418
+ "stability": "stable",
4419
+ "version": "1.0.0"
4420
+ },
4421
+ "observability": {
4422
+ "event_name": "command.executed",
4423
+ "analytics_event": "whatsapp_command_menu",
4424
+ "tags": ["whatsapp", "command", "menuModule", "menu"]
4425
+ },
4426
+ "privacy": {
4427
+ "retention": "standard_app_logs",
4428
+ "legal_basis": "service_execution_and_legitimate_interest"
4429
+ },
4430
+ "discovery": {
4431
+ "keywords": ["menu", "privado", "grupo"],
4432
+ "user_phrasings": ["quero usar menu", "me ajuda com menu", "exibe o menu principal"],
4433
+ "priority": 100
4434
+ }
4435
+ }
4436
+ ]
4437
+ },
4438
+ {
4439
+ "key": "sistema",
4440
+ "label": "Sistema",
4441
+ "icon": "🧰",
4442
+ "command_count": 1,
4443
+ "modules": ["systemMetricsModule"],
4444
+ "commands": [
4445
+ {
4446
+ "key": "systemMetricsModule:statusbot",
4447
+ "name": "statusbot",
4448
+ "id": "systemmetrics.statusbot",
4449
+ "aliases": ["ping"],
4450
+ "module": "systemMetricsModule",
4451
+ "module_label": "systemMetricsModule",
4452
+ "category": "sistema",
4453
+ "category_label": "Sistema",
4454
+ "descricao": "Exibe latencia e estado de saude do servidor.",
4455
+ "requirements": {
4456
+ "group": false,
4457
+ "admin": false,
4458
+ "owner": false,
4459
+ "google_login": true,
4460
+ "nsfw": false,
4461
+ "media": false,
4462
+ "reply": false
4463
+ },
4464
+ "premium": false,
4465
+ "allowed_plans": ["comum", "premium"],
4466
+ "rate_limit": null,
4467
+ "local_de_uso": ["privado", "grupo"],
4468
+ "subcomandos": [],
4469
+ "metodos_de_uso": ["/statusbot"],
4470
+ "mensagens_uso": {
4471
+ "default": ["/statusbot"]
4472
+ },
4473
+ "arguments": [],
4474
+ "responses": {
4475
+ "success": "Comando executado com sucesso.",
4476
+ "usage_error": "Formato de uso inválido. Consulte metodos_de_uso.",
4477
+ "permission_error": "Permissão insuficiente para executar este comando.",
4478
+ "sucesso": "Comando executado com sucesso.",
4479
+ "erro_uso": "Formato de uso inválido. Consulte metodos_de_uso.",
4480
+ "erro_permissao": "Permissão insuficiente para executar este comando."
4481
+ },
4482
+ "technical": {
4483
+ "collected_data": ["chat_identifier", "sender_identifier", "command_content", "identificador do chat (remoteJid)", "identificador do remetente (senderJid)", "texto do comando e argumentos", "contexto da mensagem (citacao e mencoes, quando existir)", "metricas do sistema operacional (cpu, memoria, uptime)", "metricas avancadas do endpoint Prometheus (quando disponivel)"],
4484
+ "dependencies": ["coleta local de métricas", "endpoint Prometheus (opcional)"],
4485
+ "side_effects": ["consulta estado do servidor", "envia diagnóstico no chat"],
4486
+ "behavior": {
4487
+ "type": "simple_action",
4488
+ "allowed_actions": []
4489
+ },
4490
+ "handler": {
4491
+ "file": "pingCommand.js",
4492
+ "method": "handlePingCommand",
4493
+ "command_case": "statusbot"
4494
+ },
4495
+ "risk_level": "low",
4496
+ "stability": "stable",
4497
+ "version": "1.0.0"
4498
+ },
4499
+ "observability": {
4500
+ "event_name": "command.executed",
4501
+ "analytics_event": "whatsapp_command_ping",
4502
+ "tags": ["whatsapp", "command", "systemMetricsModule", "ping"]
4503
+ },
4504
+ "privacy": {
4505
+ "retention": "standard_app_logs",
4506
+ "legal_basis": "service_execution_and_legitimate_interest"
4507
+ },
4508
+ "discovery": {
4509
+ "keywords": ["statusbot", "sistema", "privado", "grupo"],
4510
+ "user_phrasings": ["quero usar statusbot", "me ajuda com statusbot", "exibe latencia e estado"],
4511
+ "priority": 100
4512
+ }
4513
+ }
4514
+ ]
4515
+ }
4516
+ ]
4517
+ }