{"_id":"easycordly.js","_rev":"27-21d46aed99fd7a29f612c3655179bff7","name":"easycordly.js","dist-tags":{"latest":"3.0.5"},"versions":{"1.0.0":{"name":"easycordly.js","version":"1.0.0","keywords":["discord","bot","discord.js","easydc"],"license":"MIT","_id":"easycordly.js@1.0.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"6d20d42273a5534b8131de87975d3ad6f0a87d5b","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-1.0.0.tgz","fileCount":15,"integrity":"sha512-fIhKO+GQwpAyys5zkGs6HDILGunP4Oj/Xe9pmH8fzruQgCAYiZp8FymbxoV+DfFxOlsJiVq4vUmmc/XpNmMAqA==","signatures":[{"sig":"MEYCIQCEXEL+n5jn6fiBknvCAW29BxGciPBqlY4fAk5BK3VIDgIhANtkQ993qppkm1OtVxuwwtxxGE/wUoKZxxo3l+Ns6ow/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91871},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm --dts --watch","build":"tsup src/index.ts --format esm --dts --clean"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, limpa e organizada","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.5","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_1.0.0_1780234573356_0.2325872734862804","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"easycordly.js","version":"1.1.0","keywords":["discord","bot","discord.js","axislib"],"license":"MIT","_id":"easycordly.js@1.1.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"e1820b4db7523017dba36c1f26243271b8137761","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-1.1.0.tgz","fileCount":4,"integrity":"sha512-z1eNv6eNfx8oP/58k3IkPaprtcmP6v18gM15bjMruCn7D2ywSZnBDq0XL1tbdK01Esq79crjCyyxTOlFeNM0Qg==","signatures":[{"sig":"MEYCIQDjJnnicVNZnrgWNdyF8P00fLbIr/yZbriMWoD3oLkr7QIhANbP/A9GOxEqtayT4rC+3pctSNzrvGelcIvh04gDw2pT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55038},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsup src/index.ts --format esm --dts --watch","build":"tsup src/index.ts --format esm --dts --clean"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil e poderosa — por Axis","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.18.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.4.5","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_1.1.0_1780255639283_0.6454594892178627","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"easycordly.js","version":"2.0.0","_id":"easycordly.js@2.0.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"9237a65d369f3800019feee049a86e6b4416fa49","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.0.0.tgz","fileCount":4,"integrity":"sha512-CuDdI1AVkrfA0qpG07XSoZujLlaLkyAJ0UaQhKgynJRHTnqdFnEgmS8ZzuuXYaCcCaOCK+wuNt/SKBQAojx54Q==","signatures":[{"sig":"MEQCIBGHPIrBHZW5sjHz1RZoeFH4HbAzIdtFDyEW5GcVNEprAiB3x7DhXKBG3zLRHueS0ROEY+XBUavCth1wY5CSKDZFyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90481},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format esm --dts --clean --target es2022"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa — feita por Axis.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.16.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.3","@types/node":"^22.7.4"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.0.0_1780345332586_0.051777801984169924","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"easycordly.js","version":"2.0.1","_id":"easycordly.js@2.0.1","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"048d8b037bc5e3df87169deef58574574e6cc50f","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.0.1.tgz","fileCount":4,"integrity":"sha512-1TtSKgYlxH+s6vifk79bKGxrrWECDVbkDPZg/ZauF6IO2ogu1/zG55vTom97Cur4Cue1pSqkb8B0ZXUrC3xPBQ==","signatures":[{"sig":"MEUCICkrH0mcd4JywyPsIvw4OwRmUdSEzjV4X6m1Qt9oRdPbAiEAl7pPoCykwVHbV77oFXaWr/uQ+ajEBKySkIVtQCy12zY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90493},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format esm --dts --clean --target es2022"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa — feita por Axis.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.16.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.3","@types/node":"^22.7.4"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.0.1_1780345487283_0.3472841092134551","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"easycordly.js","version":"2.2.0","_id":"easycordly.js@2.2.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"6db5e6da82b7c70217c6b1aa82c1bb827afa3c21","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.2.0.tgz","fileCount":4,"integrity":"sha512-KrmANmWuUTHDwxtLdbTRDypFUvp6cx9BaCQnkKghKvZY6C+AP3tn8X1TR3ML4iLrQjUhwgYY7MB0jsGhPdw3mw==","signatures":[{"sig":"MEUCIQC/y14HbDzzc8Izd4n7k+yzgsePQhqJDbLlab1n7oTKrAIgEeINFyilMFCF7ZDNIhlavq1J7evgpJ7+4AzSQB/JFkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123920},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format esm --dts --clean --target es2022"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.16.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.3","@types/node":"^22.7.4"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.2.0_1780532267779_0.2624975110313552","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"easycordly.js","version":"2.5.0","keywords":["discord","discord.js","bot","framework","easycordly"],"author":"","license":"MIT","_id":"easycordly.js@2.5.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"bf848c46f7ed9679baf624bacaeddecf8b0e3f93","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.5.0.tgz","fileCount":56,"integrity":"sha512-mn8cnvZspsFkKkyVnFU22NmTnbpIW8+kMR7QyEyLLxfkUHAAPT4653veUDprLKI1rXmwaMv74MbYr/3eE7OcaQ==","signatures":[{"sig":"MEYCIQDkimImccxVQJ6d9S4mzW8H9Rn7rPpxSmdGoarrdK+85QIhAIV7lCjXenV+wQFzVHtyedd1tVwGj0YH8s6axdyFSRrA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":180054},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.16.3"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.7"},"peerDependencies":{"discord.js":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.5.0_1780671044463_0.439310622930452","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"easycordly.js","version":"2.7.0","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.7.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"fde9c22e689965f77b8cbef1ccc98e574982115f","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.7.0.tgz","fileCount":3,"integrity":"sha512-yvheYPGN+mOY0JlP9z6YTjzGR9iD//vbQdjvypSg34Ly07zP3/Wqatd0Gv6+ogaoks/X5DuFx+x7NuKCwxzaPA==","signatures":[{"sig":"MEQCIH79jCcsldEyoN5t1Wo7W7FqlJUu0f63a7c5N8sV3AYUAiAONsKe2U1mARoF5A88k9wDlcXgTiHlM62Du3VsEALd6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13244},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"discord.js":"^14.x"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.7.0_1780872609396_0.9558138487700172","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"easycordly.js","version":"2.7.1","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.7.1","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"6ec31840c5d3af8fc2d3b9aeea830e65639be720","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.7.1.tgz","fileCount":370,"integrity":"sha512-XQ7hQaCVeDwVIAjGarFVy/PAs63EScRMvI1uVTc8zyoRcQQ8uRoKuF84nzy47HF6TNriqekxg/xQdmSMwyHgGg==","signatures":[{"sig":"MEUCIQDo+bHPORgbN3DHQqwqaPKoelfSWAZxhlXAfu1giml7LAIgEgF7s8q8b25y5zr+vNVFboYiL0zVVEuCGOJfPwlV2h8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":802244},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"discord.js":"^14.x"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.7.1_1780873331114_0.35479701116650286","host":"s3://npm-registry-packages-npm-production"}},"2.7.2":{"name":"easycordly.js","version":"2.7.2","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.7.2","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"a98e4d3f949a1c75f6c26948c0d860926c72b80f","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.7.2.tgz","fileCount":370,"integrity":"sha512-OiPBP1kh2CS1ecWjiTcoNsW3cbnVcWJHxggmNv6bAcQgqw02f3WFYZDDLMy+x+Hb0mXvYHC5M1tECN/jL62yGQ==","signatures":[{"sig":"MEUCIH016gIspR34AfZUJVnMLA03t3ce8T8dq2N3Pyoj4PHmAiEAqHrRb1IpVxnGS+bzvw70m+bltDo3dSO64lZwPVa8cEY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":804678},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"discord.js":"^14.x"},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.7.2_1781125972263_0.7749901908291164","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"easycordly.js","version":"2.8.0","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"444bd83107c93c3723ead17886d7b8d4abbbc5ad","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.0.tgz","fileCount":370,"integrity":"sha512-JAhI+KKyjIiWBAvUGrfVUIf+a2h2im0D8AUp308fD7PYstwvAdv02d/LUr4zwTuaB1bMJQLUcJ8iaSegD81I/Q==","signatures":[{"sig":"MEUCIQDNoWr4jIs9TwpDv5CMsHEJCtOiwc4buatYPC/M7YytygIgH66iKcbyxuWEmwSqAhJKMMJXf1tscJWSMOIo9txNWjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":819693},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.0_1782604497860_0.3633512389597995","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"easycordly.js","version":"2.8.1","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.1","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"994f70fc6507ba4873f950686afc84ca7410de25","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.1.tgz","fileCount":186,"integrity":"sha512-p1qvGkMPpqlUky4xlCyZxR4zt/oPzJU945+gyXsuz5u+7j3SX7Tc8qWNCTlhwkGlcV5wn15poZ6zKojNNYbGXQ==","signatures":[{"sig":"MEQCICGunoEEgeMVPuFLWHXdRfWOJnf6vFf+PaDiQXNOXYxoAiB2e5eS41kVjuR7mJTPqZMh8FF66uWFLT2kj0/rWOSMBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":433609},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.1_1782760911561_0.20188916030810478","host":"s3://npm-registry-packages-npm-production"}},"2.8.2":{"name":"easycordly.js","version":"2.8.2","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.2","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"057933e740179a92d8643d6d5be60efee64d3a72","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.2.tgz","fileCount":186,"integrity":"sha512-Sr5v9ZbVX92SrtUPJshsnS721yrILCJK0meViVB0Drf00UD42c5Z/oMnAqupBiyqkKUSEnEpxkcfP0S7O0MkhQ==","signatures":[{"sig":"MEUCIQDffAUcgdDoe0uA6+XP3K6TjElTEeUyqKPz9J1YyKQ1MwIgTTtg/1hXmAn8aFbgaMJzgPpDmIwy3S+4q+ieYR/yZNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436483},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.2_1782761546837_0.961753122584976","host":"s3://npm-registry-packages-npm-production"}},"2.8.3":{"name":"easycordly.js","version":"2.8.3","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.3","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"f897f87a9095b3c1d21cf62cdc667151a02f5eda","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.3.tgz","fileCount":186,"integrity":"sha512-YXGe6tE0FD5m6zJhtpuu16M5+obnjq6GtqTggE214VKWe3aOHPfqqJH3nHExDH4Yy1y4E9bLhy36Un1z48U44w==","signatures":[{"sig":"MEUCIEPIASvCAbvHQqBNZ1qHAu2DHPSUzg+PYlMBkmiqqwUFAiEAtYwOkX6SEAKHarrpL4uKAz0pz4AU7RVdx3KFk/pyQXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.3_1782761927708_0.7387676333717517","host":"s3://npm-registry-packages-npm-production"}},"2.8.4":{"name":"easycordly.js","version":"2.8.4","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.4","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"4f822a5ebc2f2ed49a790309720a57a2aafaaba2","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.4.tgz","fileCount":186,"integrity":"sha512-rQwTGku6JIWeFv6huhNRdACpx4XJBpNAljYLUdzZvns6j1Q2DSkN5sR56qmHFr+Q2VOw+RlqrEhlz5GzQ2rxYQ==","signatures":[{"sig":"MEYCIQDFUfHJOtTSS+Ba7CCkUTee1S8Tr/aTF5SK4/NKpDmZKAIhAMkxC290OeSSr+NzAjEC2ph+7Zy9zMeOmirnXDTBl6Jz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442072},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.4_1782762272598_0.7988812378997034","host":"s3://npm-registry-packages-npm-production"}},"2.8.5":{"name":"easycordly.js","version":"2.8.5","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.5","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"e2e3fcb83b95870ec7561634be65b42af4b927fa","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.5.tgz","fileCount":186,"integrity":"sha512-gi5QHHqjWs/tR4gb27h0DkXquVxlmisCKpUksfLQLooPWOWHXZEPKN5umDMPV0AAYgxetVlqkQsPW2VFkw6r8w==","signatures":[{"sig":"MEUCIDv3CROjw4+8Sf3CoyT6zttq5r4PEkJHZkySyc39ojifAiEAxPjVeMcfgdGXL4HOwCcHsCmHuBHYPw6Pa0EcBFiMGYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.5_1782763236212_0.8549992729739424","host":"s3://npm-registry-packages-npm-production"}},"2.8.6":{"name":"easycordly.js","version":"2.8.6","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.6","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"239e1786291c9e454e3ada71139f65979c431451","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.6.tgz","fileCount":186,"integrity":"sha512-L+0EgLJ//XDRgrLxDh0UT22z/PysXP/oRngEzXFqpyiNSRo5XAr0Xhbzhp22S/YK6kzzw5QaFJU+fDaH1DsJ0Q==","signatures":[{"sig":"MEYCIQDqkQCOOc4OWB45nqAaqhf8x/t1l/tRI8RX1qWnDS7V6wIhAIarT96r9fxVyNmEr+51g9OQV03hzJTVqyhsEXBybS3t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442020},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.6_1782763987582_0.46997151398988257","host":"s3://npm-registry-packages-npm-production"}},"2.8.7":{"name":"easycordly.js","version":"2.8.7","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.7","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"359dc330fae424505217b5d045449bee2ce21a2d","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.7.tgz","fileCount":186,"integrity":"sha512-mGqdLW1hNRu55wWuZgpkFwhou/llRKMLw6W3loGGwqrmgU8xUtwSEEgWx5rY56AflaKvQaEJBt4Qc1MUJ3nWKQ==","signatures":[{"sig":"MEUCIQCFi3r3fJ6KJZo51Dzd0prq+wbnACe71nw/w65itXQIcQIgVWSrF05ONcgw+xB9uK02rXvpASRSw/UHojkaEDeOS48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":442541},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.7_1782764677029_0.13967203535310113","host":"s3://npm-registry-packages-npm-production"}},"2.8.8":{"name":"easycordly.js","version":"2.8.8","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.8","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"e4859ed7e93596e6851f8c4385268c8c305072a6","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.8.tgz","fileCount":188,"integrity":"sha512-rOrUiWRmiNsdEfTiia1sdXfPrD0foaiJks9rAII0qjRUI6t4FLu/+PsYBMooygU0OmVvNileu7gp3m0QTaigBQ==","signatures":[{"sig":"MEQCIE/5cc58EKQKiL/rCzfcCdqUpSjY7fkMsCoKLB4bXF7RAiAZFoboDjVOf2F/94Me24tc3xn+2ZjQFQLzhUBxcOEomg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450870},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.8_1782767191090_0.8276434891146478","host":"s3://npm-registry-packages-npm-production"}},"2.8.9":{"name":"easycordly.js","version":"2.8.9","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.8.9","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"f50df068e431a5881bcac5478282f1d5f2161239","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.8.9.tgz","fileCount":188,"integrity":"sha512-Us6Ag3mbdyqaP9/MT6TKBgd56cpIw2GS9M5rtSzdTPNAyPfJt4X8nsxcggrRzt66xNlLH9YdulgqokJ6xVAzqA==","signatures":[{"sig":"MEYCIQCo4RffM+v6R3LMvB3pANC7F9ynGJh04qkKHXF8TgZErwIhAOYx9mAYCJh8EXWh46cSGf5QR7DvWSxioeB8X+Ze6e1T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451289},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.0.1"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.8.9_1782768311871_0.029228752054190288","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"easycordly.js","version":"2.9.0","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@2.9.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"799cdfc76ae4d8f7e2d85f14e13a0d6bf084c905","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-2.9.0.tgz","fileCount":188,"integrity":"sha512-CoW60Gh27HTZA22E85bnaawKxaRGyExqn6Y/kghsDNff+wF4X+zJla/hKidAMp6KkXjLB/RHA+OymI5KEldInA==","signatures":[{"sig":"MEQCIC6COtcFMZ4pEiy0wTCnfebO9H+e7aJ5omkFrjxqWJPYAiBVgOigpcHEeHmyGUSjwsMa01MCuw5A3FOXijQ5tsfZHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":452652},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"discord.js":"^14.x","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_2.9.0_1782857200615_0.4859617575829518","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"easycordly.js","version":"3.0.0","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@3.0.0","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"e556cae6dd943e0307941b1ee50e8d71b1bd1054","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-3.0.0.tgz","fileCount":190,"integrity":"sha512-KDtLy6TIVviIig2boJ3bmbeEG3GAE+7oIBAnUS0tnO596ZRCSsdaHApSMiN92xJNYSF3Dc99XSiuzcS6wni06A==","signatures":[{"sig":"MEYCIQCGvTGYG5KD32fQx5isLBg1a0gOcx/kF5RZgeEBmJqukQIhANhZEnFLg/4JyeoX6iryLVQnL/IcbTVrYebSArJXzQGb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459246},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.7.9","discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_3.0.0_1783993271453_0.6194970795732431","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"easycordly.js","version":"3.0.1","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@3.0.1","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"aa56f7f23382ba62a6adeca2d7caf8a3bc2d9793","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-3.0.1.tgz","fileCount":194,"integrity":"sha512-k1lz8FjBjGwmOjMLyyTT7ZUa1xWSDWr7JHtzmehF78PsqYKqnQbabU1Q50l5j+Hq5IrJ0oBk08NUHPTb1HGY5A==","signatures":[{"sig":"MEUCIEMGK4AHH1MAteRqUxO6cuD8YznaqpTutsFVir/pAeiQAiEAxdzqWzv5bOArgG6pQzTXrfGNFWBoAreDvnfqGVNnoOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":493517},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.7.9","discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_3.0.1_1784071222778_0.07070937480584183","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"easycordly.js","version":"3.0.2","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@3.0.2","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"7365cfd7e9c3dc5e667cbf684b172b4d5028a59a","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-3.0.2.tgz","fileCount":178,"integrity":"sha512-2XgytWh8UXC3ad7K/NJ6RXMPkQzszPhJf171adSDG+IDvDXaPcrnYCjgHQtmXKI3/mku/+4TA3w4irHZ+xeuAg==","signatures":[{"sig":"MEUCIB/xmGF3qQEwdvDAnOFMsdmdVZvVIgcK/RR7MOm5VmSoAiEA4/jPbEUGCFLPKiwOOyQBjstArLAOfnJCFOiH0oG3iJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":493283},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"tsc --watch","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.7.9","discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_3.0.2_1784244073366_0.44924750440245975","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"easycordly.js","version":"3.0.3","keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","_id":"easycordly.js@3.0.3","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"dist":{"shasum":"359c39f05516ae0818ea81e8e71271a9385a2c74","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-3.0.3.tgz","fileCount":178,"integrity":"sha512-NohukwTMyxeyHquZ+QWxiwlzEZllrf29Ax6PPkPkqwNSv94H//6H57ox6TfbIao33CIK9GhVRCORlfSgxjagBQ==","signatures":[{"sig":"MEUCIGwJb4QCXmy56xiyyfA+d4vcBMT6Vyls8chu9uMYDvDDAiEAvswafDirLUp3rHtuFo/XhL5fliK51Uv43ewG4jsAmps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":497550},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./advanced":{"types":"./dist/advanced.d.ts","import":"./dist/advanced.js"}},"scripts":{"dev":"node scripts/build.mjs","build":"node scripts/build.mjs","clean":"rimraf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"_npmVersion":"11.6.2","description":"A lib Discord mais fácil, tipada e poderosa.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"axios":"^1.7.9","discord.js":"^14.26.4","@discordjs/voice":"^0.19.2"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.1","typescript":"^5.6.3","@types/node":"^20.14.0"},"peerDependencies":{"mongoose":"^8.x","discord.js":"^14.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easycordly.js_3.0.3_1784414986939_0.4651681763778166","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"easycordly.js","version":"3.0.5","description":"A lib Discord mais fácil, tipada e poderosa.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./advanced":{"import":"./dist/advanced.js","types":"./dist/advanced.d.ts"}},"scripts":{"clean":"rimraf dist","build":"tsc && node scripts/copy-dts.mjs","dev":"tsc --watch","prepublishOnly":"npm run clean && npm run build"},"keywords":["discord","discord.js","bot","framework","easycordly"],"license":"MIT","engines":{"node":">=18.0.0"},"dependencies":{"discord.js":"^14.26.4","@discordjs/voice":"^0.19.2","axios":"^1.7.9"},"devDependencies":{"typescript":"^5.6.3","rimraf":"^6.0.1","@types/node":"^20.14.0"},"peerDependencies":{"discord.js":"^14.x","mongoose":"^8.x"},"peerDependenciesMeta":{"mongoose":{"optional":true}},"_id":"easycordly.js@3.0.5","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-F51iQ/0n34FsfpJEGdmHdFL+GEKAFLrJkZ/Qmi1H2WM8hu4dMviKcD0cbMcO7OsbBmTUUPRoDomvws6zoOlslw==","shasum":"1759edcd045bad75aae79fdc33b5f4fda890873e","tarball":"https://registry.npmjs.org/easycordly.js/-/easycordly.js-3.0.5.tgz","fileCount":178,"unpackedSize":504013,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCWgV3vGs1/SFCmG/jm8v2C5dywKE19R6Pr3juvduxJFQIgUGFwH22b1QWuQSIvpirIxpkXcntuj6jBwFXk15o321I="}]},"_npmUser":{"name":"deevfox123","email":"devfox.ofc@gmail.com"},"directories":{},"maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easycordly.js_3.0.5_1784656768326_0.6159294872243961"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-31T13:36:13.176Z","modified":"2026-07-21T17:59:28.688Z","1.0.0":"2026-05-31T13:36:13.513Z","1.1.0":"2026-05-31T19:27:19.416Z","1.2.0":"2026-06-01T20:10:35.160Z","2.0.0":"2026-06-01T20:22:12.729Z","2.0.1":"2026-06-01T20:24:47.449Z","2.2.0":"2026-06-04T00:17:47.931Z","2.5.0":"2026-06-05T14:50:44.593Z","2.7.0":"2026-06-07T22:50:09.520Z","2.7.1":"2026-06-07T23:02:11.320Z","2.7.2":"2026-06-10T21:12:52.483Z","2.8.0":"2026-06-27T23:54:58.022Z","2.8.1":"2026-06-29T19:21:51.700Z","2.8.2":"2026-06-29T19:32:26.961Z","2.8.3":"2026-06-29T19:38:47.857Z","2.8.4":"2026-06-29T19:44:32.739Z","2.8.5":"2026-06-29T20:00:36.357Z","2.8.6":"2026-06-29T20:13:07.748Z","2.8.7":"2026-06-29T20:24:37.200Z","2.8.8":"2026-06-29T21:06:31.248Z","2.8.9":"2026-06-29T21:25:12.127Z","2.9.0":"2026-06-30T22:06:40.797Z","3.0.0":"2026-07-14T01:41:11.620Z","3.0.1":"2026-07-14T23:20:22.994Z","3.0.2":"2026-07-16T23:21:13.524Z","3.0.3":"2026-07-18T22:49:47.138Z","3.0.5":"2026-07-21T17:59:28.469Z"},"license":"MIT","keywords":["discord","discord.js","bot","framework","easycordly"],"description":"A lib Discord mais fácil, tipada e poderosa.","maintainers":[{"name":"deevfox123","email":"devfox.ofc@gmail.com"}],"readme":"# easycordly.js (easycordly) v3.0.3\n\nA lib Discord mais fácil, tipada e poderosa.\n\n```bash\nnpm install easycordly.js\n```\n\n---\n\n## ✨ Novidades da v3.0.3\n\n| Recurso | O que faz |\n|---|---|\n| **Conectar o Mongo manualmente também funciona agora** | Antes, só conectava se você passasse `mongo: { uri }` na config do `Client`. Agora, se você preferir conectar você mesmo (`import mongoose from \"mongoose\"; await mongoose.connect(...)` em um arquivo separado, antes de subir o Client), a lib detecta a conexão já ativa e anexa os helpers de CRUD nela normalmente — sem tentar reconectar por cima. |\n| **`client.mongoose`** | Acesso direto ao módulo `mongoose` em si (o mesmo de `import mongoose from \"mongoose\"`), caso queira declarar Schemas/Models próprios usando o Mongoose puro, além do `client.mongo` com os helpers prontos. |\n\n## ✨ Novidades da v2.9.0\n\n| Recurso | O que faz |\n|---|---|\n| **Dashboard em tempo real (1s)** | O painel agora atualiza sozinho a cada **1 segundo** (antes era 10s). |\n| **Página de Erros na dashboard** | Todo erro do bot — mesmo que você não tenha tratado — aparece automaticamente numa aba dedicada: mensagem, stack trace igual ao terminal, arquivo/linha, trecho de código com a linha destacada, possível causa, sugestão de correção e botão de **copiar**. |\n| **Captura global de erros** | `uncaughtException`, `unhandledRejection`, erros de slash/prefix/component/evento e falhas de conexão do Mongo — tudo é impresso no console **e** salvo para a dashboard, mesmo o que antes ficava só como `String(e)`. |\n| **`client.captureError(err, label?)`** | Reporte manualmente um erro que você já tratou, mas ainda quer ver na dashboard. |\n| **MongoDB com CRUD fácil via `ctx.client.mongo`** | `mongo.get()`, `.getAll()`, `.set()`, `.update()`, `.replace()`, `.delete()`, `.deleteMany()`, `.count()`, `.exists()` — sem precisar definir Schema. Só configurar a URI no `Client` e já liga sozinho. |\n| **Status do MongoDB na dashboard** | A dashboard mostra se o Mongo foi configurado, se está conectado, o banco e o host. |\n\n## ✨ Novidades acumuladas (v2.8.x)\n\n| Recurso | O que faz |\n|---|---|\n| **Perfil do bot via axios** | `client.setBotName()`, `client.setBotDescription()`, `client.setBotAvatar()` — troque nome, descrição e avatar do bot com uma linha. |\n| **Status rotativo/agendado** | `client.rotateStatus({...})` — alterne o status a cada X segundos/minutos/horas/dias/meses/anos, **ou** agende por horário do dia com fuso horário de um país (`country: \"Brasil\"`). |\n| **Tipos de debug nomeados** | `debug: \"simple\" \\| \"clean\" \\| \"information\"` (equivalentes a `1`, `2`, `3`) — e o tipo ativo aparece na dashboard. |\n| **Temas de log/dashboard** | `theme: \"dark\" \\| \"emojis\" \\| \"noEmojis\"` — controla emojis nos logs de debug e no logger customizável. |\n| **Logger 100% customizável** | `createLogger({ prefix, timestamps, colors, theme, levels, onLog })` — formate cada nível, plugue um hook para arquivo/webhook/DB. |\n\n## ✨ Novidades acumuladas (v2.x)\n\n| Recurso | O que faz |\n|---|---|\n| **Comandos por arquivo sem boilerplate** | Crie e registre comandos automaticamente via `loadCommands` ou `client.command()`. |\n| **Retorno automático** | `return \"Olá\"` (string, embed ou payload) já responde a interação. |\n| **Argumentos tipados** | `args: { user: { type: \"user\" } }` — convertidos automaticamente para `User`, `Role`, `Channel`, `number`… tanto em slash quanto em prefix. |\n| **Sistema de perguntas** | `await ctx.ask(\"Qual seu nome?\")` aguarda a resposta. |\n| **Eventos humanos** | `memberJoin`, `buttonClick`, `messageNew`… — em vez dos nomes crus do discord.js. |\n| **Permissões simplificadas** | `permissions: [\"ban\", \"kick\"]` em vez de `PermissionFlagsBits.BanMembers`. |\n| **Auto-embed** | `ctx.success()`, `ctx.error()`, `ctx.warn()`, `ctx.info()` prontos. |\n| **Paginação** | `await ctx.paginate(pages)` — botões ⏮ ◀ ▶ ⏭ automáticos. |\n| **Cooldown visual** | `cooldown: 5` por comando ou `defaultCooldown` global — mensagem de tempo restante é enviada automaticamente. |\n| **Middlewares** | `client.use(async (ctx, next) => { ... })` — autenticação, logs etc. |\n| **Coletores ultra simples** | `await ctx.awaitMessage()` e `await ctx.awaitButton()`. |\n| **Comandos encadeados** | `name: \"admin.ban\"` cria `/admin ban` automaticamente. |\n| **Hot reload** | Atualize comandos sem reiniciar o bot. |\n| **Dashboard integrado** | Painel web embutido (`http://localhost:3000`), atualiza a cada 1s, com aba de Erros e status do Mongo. |\n| **Integração com MongoDB** | `mongo: { uri: \"...\" }` no `Client` — conecta automaticamente via mongoose (peer-dep opcional) e já libera CRUD fácil via `client.mongo`. |\n| **Dezenas de helpers prontos** | Voz, webhooks, automod, polls, stage instances, monetização/entitlements, sharding, convites, audit log, onboarding, i18n e muito mais — veja [📦 Outros recursos](#-outros-recursos). |\n\n---\n\n## 🚀 Quickstart\n\n```ts\nimport { Client } from \"easycordly.js\";\n\nconst client = new Client({\n  token:  process.env.TOKEN!,\n  prefix: \"!\",\n  owners: [\"SEU_ID\"],\n  defaultCooldown: 3,\n  dashboard: { port: 3000 },\n  hotReload: { slash: \"./dist/commands\" },\n});\n\n// Comando inline — retorno automático\nclient.command({\n  name: \"ping\",\n  description: \"Pong!\",\n  run: () => `🏓 Pong! ${client.ws.ping}ms`,   // string → reply\n});\n\nawait client.start();\n```\n\n---\n\n## 🧠 Comandos por arquivo (sem boilerplate)\n\n`src/commands/say.ts`\n```ts\nimport { defineCommand } from \"easycordly.js\";\n\nexport default defineCommand({\n  name: \"say\",\n  description: \"Repete o que você disser\",\n  args: {\n    text: { type: \"string\", description: \"Texto\", required: true },\n  },\n  cooldown: 5,\n  run: (ctx) => ctx.args.text,   // retorno automático\n});\n```\n\nCarregue toda a pasta:\n```ts\nawait client\n  .loadCommands(\"./dist/commands\")\n  .then(c => c.loadPrefixCommands(\"./dist/prefix\"))\n  .then(c => c.loadEvents(\"./dist/events\"))\n  .then(c => c.start());\n```\n\n---\n\n## 🔢 Argumentos tipados\n\n```ts\nclient.command({\n  name: \"ban\",\n  description: \"Bane um usuário\",\n  permissions: [\"ban\"],\n  args: {\n    membro: { type: \"member\", description: \"Quem banir\" },\n    motivo: { type: \"string\", description: \"Motivo\", required: false },\n    dias:   { type: \"integer\", min: 0, max: 7, required: false },\n  },\n  run: async (ctx) => {\n    await ctx.args.membro.ban({ reason: ctx.args.motivo ?? \"Sem motivo\" });\n    return ctx.success(`${ctx.args.membro} banido!`);\n  },\n});\n```\n\nTipos disponíveis: `string`, `number`, `integer`, `boolean`, `user`, `member`, `role`, `channel`, `mentionable`, `attachment`.\n\nFuncionam **igualzinho em prefix commands** (`!ban @user spam`) — a lib converte sozinha.\n\n---\n\n## ❓ Sistema de perguntas\n\n```ts\nclient.command({\n  name: \"registrar\",\n  description: \"Registro guiado\",\n  run: async (ctx) => {\n    const nome  = await ctx.ask(\"Qual seu nome?\");\n    const idade = await ctx.ask(\"Qual sua idade?\");\n    return ctx.success(`Olá ${nome}, você tem ${idade} anos!`);\n  },\n});\n```\n\nOu para coletar manualmente:\n```ts\nconst msg    = await ctx.awaitMessage(30_000);\nconst button = await ctx.awaitButton(\"confirm\", 60_000);\n```\n\n---\n\n## 🎯 Eventos humanos\n\n```ts\nimport { defineEvent } from \"easycordly.js\";\n\nexport default defineEvent({\n  event: \"memberJoin\",  // ou \"buttonClick\", \"messageNew\", \"guildJoin\"...\n  run: (client, member) => console.log(`+ ${member.user.tag}`),\n});\n```\n\nAliases disponíveis: `memberJoin`, `memberLeave`, `memberUpdate`, `messageNew`, `messageEdit`, `messageDelete`, `buttonClick`, `selectMenu`, `modalSubmit`, `slashRun`, `guildJoin`, `guildLeave`, `channelNew`, `channelDelete`, `roleNew`, `roleDelete`, `ready`.\n\n---\n\n## 🔐 Permissões simplificadas\n\n```ts\npermissions: [\"ban\", \"kick\", \"manage_messages\"]\n```\n\nAliases: `admin`, `ban`, `kick`, `mute`, `manage_guild`, `manage_channels`, `manage_roles`, `manage_messages`, `manage_nicknames`, `manage_webhooks`, `audit_log`, `embed_links`, `attach_files`, `mention_everyone`, `add_reactions`… (ver `PERMISSION_ALIASES`).\n\n---\n\n## 💬 Auto-embeds\n\n```ts\nctx.success(\"Tudo certo!\");\nctx.error(\"Algo deu errado.\");\nctx.warn(\"Atenção!\");\nctx.info(\"Dica útil.\");\n```\n\nCada um envia um embed colorido e com ícone — sem boilerplate.\n\n---\n\n## 📖 Paginação\n\n```ts\nimport { EmbedBuilder } from \"easycordly.js\";\n\nconst pages = users.map((u, i) =>\n  new EmbedBuilder().setTitle(`Página ${i+1}`).setDescription(u.tag)\n);\n\nawait ctx.paginate(pages);\n```\n\nBotões ⏮ ◀ `1/N` ▶ ⏭ aparecem automaticamente.\n\n---\n\n## ⏱ Cooldown visual\n\n```ts\nclient.command({\n  name: \"daily\",\n  description: \"Recompensa diária\",\n  cooldown: 86400,    // segundos\n  run: () => \"🎁 Você recebeu 100 moedas!\",\n});\n```\n\nSe o usuário tentar de novo: `⏳ Aguarde 23h 59m para usar esse comando novamente.`\n\nOu global: `defaultCooldown: 3` no `Client`.\n\n---\n\n## 🧩 Middlewares\n\n```ts\nclient.use(async (ctx, next) => {\n  console.log(`[CMD] ${ctx.user.tag} → ${ctx.command.name}`);\n  if (ctx.command.name === \"secreto\" && ctx.user.id !== \"OWNER\") return;\n  await next();\n});\n```\n\nEncadeie quantos quiser — eles rodam antes do handler do comando.\n\n---\n\n## 🧵 Comandos agrupados\n\n```ts\nclient.command({ name: \"admin.ban\",  description: \"Banir\",     args: { membro: { type: \"member\" } }, run: ... });\nclient.command({ name: \"admin.kick\", description: \"Expulsar\",  args: { membro: { type: \"member\" } }, run: ... });\nclient.command({ name: \"admin.mute\", description: \"Silenciar\", args: { membro: { type: \"member\" } }, run: ... });\n```\n\nResultado no Discord:\n- `/admin ban @user`\n- `/admin kick @user`\n- `/admin mute @user`\n\n---\n\n## ♻️ Hot reload\n\n```ts\nnew Client({\n  // ...\n  hotReload: {\n    slash:  \"./dist/commands\",\n    prefix: \"./dist/prefix\",\n  },\n});\n```\n\nEdite um comando → ele recarrega automaticamente sem reiniciar o bot.\n\nOu manualmente:\n```ts\nclient.enableHotReload({ slash: \"./dist/commands\" });\n```\n\n---\n\n## 📊 Dashboard integrado\n\n```ts\nnew Client({\n  // ...\n  dashboard: { port: 3000, token: \"senha-opcional\" },\n});\n```\n\nAcesse `http://localhost:3000` e veja:\n- Status do bot (ping, uptime, guilds, users)\n- Lista de slash commands com categoria e cooldown\n- Lista de prefix commands com aliases\n- **Tipo de debug e tema ativos** (`simple`/`clean`/`information` + `dark`/`emojis`/`noEmojis`)\n- **Status do MongoDB** (configurado, conectado, banco e host)\n- **Aba de Erros**: todo erro do bot aparece aqui — clique para expandir e ver a stack trace completa (igual ao terminal), o arquivo/linha, o trecho de código com a linha destacada, a possível causa, a sugestão de correção, e um botão para **copiar** o erro\n- **Atualização automática a cada 1 segundo**\n\nEndpoints API:\n- `GET    /api/stats`    — JSON com estatísticas (inclui contagem de erros e status do Mongo)\n- `GET    /api/commands` — JSON com todos os comandos\n- `GET    /api/errors`   — JSON com o histórico de erros capturados\n- `DELETE /api/errors`   — limpa o histórico de erros\n\n---\n\n## 🚨 Erros: captura automática (console + dashboard)\n\nQualquer erro que acontecer no bot — mesmo que você não tenha tratado, mesmo que **não apareça no console** hoje — passa a ser impresso no console (com stack trace completa, igual ao terminal) **e** fica salvo para a dashboard automaticamente. Isso cobre: slash commands, prefix commands, botões/selects/modals, eventos, conexão com o MongoDB, `uncaughtException` e `unhandledRejection`.\n\n```ts\n// Se você mesmo trata um erro mas ainda quer vê-lo na dashboard:\ntry {\n  await algumaRotina();\n} catch (e) {\n  client.captureError(e, \"Rotina de backup\"); // aparece no console + dashboard\n}\n\n// Acessar o histórico programaticamente:\nconsole.log(client.errors); // array com todos os erros capturados (mais recentes primeiro)\n```\n\nCada erro guardado inclui: mensagem, stack trace completa, arquivo e linha exatos, o trecho de código ao redor da linha (com a linha destacada), uma possível causa e uma sugestão de correção — tudo detectado automaticamente por heurísticas (erros comuns do JS, permissões do Discord, MongoDB, rede, token inválido, rate limit, etc).\n\n---\n\n## 🎨 Components V2, Botões, Selects, Embeds, Modals\n\nTudo da v1 continua funcionando — `v2.container`, `v2.text`, `v2.section`, `v2.gallery`, `v2Button`, `Embed`, `Modal`, `StringSelect`, `UserSelect`, `RoleSelect`, `ChannelSelect`, `MentionableSelect`, `Row`. Veja os exemplos no código.\n\n---\n\n## 🗄️ MongoDB: liga sozinho, CRUD fácil via `ctx.client.mongo`\n\nDuas formas de conectar — escolha a que preferir, as duas terminam no mesmo lugar:\n\n**A) Automática — coloca a URI no `Client` e ele conecta sozinho:**\n\n```ts\nnew Client({\n  // ...\n  mongo: { uri: \"mongodb+srv://usuario:senha@cluster.mongodb.net\", dbName: \"meubot\" },\n});\n```\n\n**B) Manual — você conecta o Mongoose você mesmo, em qualquer lugar do projeto:**\n\n```ts\n// db.js — roda antes do Client, ex: import \"./db.js\" no topo do seu index.js\nimport mongoose from \"mongoose\";\nawait mongoose.connect(\"mongodb+srv://usuario:senha@cluster.mongodb.net\", { dbName: \"meubot\" });\n```\n\n```ts\n// index.js\nimport \"./db.js\";                    // conecta primeiro\nimport { Client } from \"easycordly.js\";\n\nconst client = new Client({ token: \"...\" }); // sem \"mongo\" na config — a lib detecta a conexão ativa sozinha\n```\n\nNos dois casos, `client.mongo` acaba sendo a mesma coisa: a conexão Mongoose ativa, já com os helpers de CRUD anexados. Se a lib encontrar uma conexão já ativa (feita manualmente), ela nunca tenta conectar de novo por cima — só reaproveita.\n\nDepois, use `ctx.client.mongo` (ou `client.mongo`) em qualquer comando/evento para pegar, puxar, substituir ou excluir dados — sem precisar definir Schema:\n\n```ts\ndefineCommand({\n  name: \"coins\",\n  description: \"Veja/adicione moedas\",\n  async run(ctx) {\n    const mongo = ctx.client.mongo; // já conectado e pronto\n\n    // pegar\n    const user = await mongo.get(\"users\", { id: ctx.user.id });\n\n    // adicionar/substituir campos (cria o documento se `upsert: true` e ele não existir)\n    await mongo.update(\"users\", { id: ctx.user.id }, { coins: (user?.coins ?? 0) + 10 }, { upsert: true });\n\n    // pegar vários\n    const top10 = await mongo.getAll(\"users\", {}, 10);\n\n    // excluir\n    await mongo.delete(\"users\", { id: ctx.user.id });\n\n    return `Você tem **${(user?.coins ?? 0) + 10}** moedas!`;\n  },\n});\n```\n\nMétodos disponíveis: `get`, `getAll`, `set`, `update`, `replace`, `delete`, `deleteMany`, `count`, `exists`. A dashboard mostra se o Mongo foi configurado, se está conectado, o nome do banco e o host.\n\nSe preferir Mongoose \"puro\" com Schemas e Models em vez dos helpers acima, isso também funciona normalmente — `client.mongoose` te dá acesso ao módulo inteiro, ou você simplesmente importa `mongoose` direto nos seus arquivos de model (é o mesmo singleton, então enxerga a mesma conexão):\n\n```ts\n// models/User.js\nimport mongoose from \"mongoose\";\n\nconst userSchema = new mongoose.Schema({\n  id: { type: String, required: true, unique: true },\n  coins: { type: Number, default: 0 },\n});\n\nexport const User = mongoose.model(\"User\", userSchema);\n```\n\n### Isolando dados por bot (multi-tenant)\n\nSe você vende o mesmo bot para várias pessoas (tokens diferentes), cada instância tem um `client.user.id` diferente. Inclua esse ID em toda query pra nunca misturar os dados de dois clientes no mesmo banco:\n\n```ts\nconst botId = ctx.client.user.id;\n\nawait mongo.update(\"perms\", { botId, userId: user.id }, { level: \"admin\" }, { upsert: true });\nconst minhasPerms = await mongo.getAll(\"perms\", { botId });\n```\n\n---\n\n## 🪪 Perfil do bot (nome, descrição, avatar) — via axios\n\nFunções fáceis para editar o perfil do bot direto pela API do Discord (usando axios internamente):\n\n```ts\n// Método no client (usa o token já logado)\nawait client.setBotName(\"Meu Bot Incrível\");        // ⚠️ máx. 2 trocas/hora\nawait client.setBotDescription(\"O melhor bot do servidor!\");\nawait client.setBotAvatar(buffer, \"image/png\");      // Buffer ou Data URI\n\nconst perfil = await client.fetchBotProfile();\nconsole.log(perfil.username, perfil.description);\n```\n\nOu como funções standalone (não precisa do client logado, só do token):\n\n```ts\nimport { setBotName, setBotDescription, setBotAvatar, fetchBotProfile } from \"easycordly.js\";\n\nawait setBotName(process.env.TOKEN!, \"Meu Bot Incrível\");\nawait setBotDescription(process.env.TOKEN!, \"Descrição nova\");\n```\n\n---\n\n## 🔄 Status rotativo e agendado (com fuso horário por país)\n\n### Rotação por intervalo customizado\n\n```ts\nclient.rotateStatus({\n  activities: [\n    { name: \"com vocês! 🎮\" },\n    { name: \"música\", type: ActivityType.Listening },\n    { name: \"o servidor crescer 📈\" },\n  ],\n  every: { amount: 30, unit: \"seconds\" }, // seconds | minutes | hours | days | weeks | months | years\n});\n\n// Para parar:\nclient.stopStatusRotation();\n```\n\n### Agendamento por horário do dia (com país/timezone)\n\n```ts\nclient.rotateStatus({\n  country: \"Brasil\", // ou \"Inglaterra\", \"Japão\", \"Portugal\", \"Estados Unidos\"... (ou use `timezone: \"America/Sao_Paulo\"` diretamente)\n  schedule: [\n    { time: \"22:00\", activity: { name: \"Boa noite 🌙\", status: \"idle\" } },\n    { time: \"10:00\", activity: { name: \"Bom dia ☀️\",  status: \"online\" } },\n    { time: \"18:00\", activity: { name: \"Boa tarde! 🌆\" } },\n  ],\n});\n```\n\nTambém dá para configurar direto no `Client`, iniciando automaticamente quando o bot ficar online:\n\n```ts\nnew Client({\n  // ...\n  statusRotation: {\n    country: \"Japão\",\n    schedule: [{ time: \"09:00\", activity: { name: \"おはよう!\" } }],\n  },\n});\n```\n\n---\n\n## 🐞 Tipos de debug e temas\n\nO `debug` aceita número (`1`/`2`/`3`) **ou** nome amigável, e o `theme` controla os emojis usados nos logs (e é exibido na dashboard):\n\n```ts\nnew Client({\n  // ...\n  debug: \"information\", // \"simple\" (=1) | \"clean\" (=2) | \"information\" (=3)\n  theme: \"emojis\",       // \"dark\" (padrão) | \"emojis\" | \"noEmojis\"\n});\n```\n\n- `simple` → resumo mínimo (bot online + contagens)\n- `clean` → tabela formatada e organizada\n- `information` → listagem completa de cada comando/evento carregado\n- `theme: \"noEmojis\"` remove todos os emojis da saída — ideal para logs em arquivo/CI\n\nO tipo e o tema ativos aparecem automaticamente como cards na dashboard (`/api/stats` → `debug`).\n\n---\n\n## 📝 Logs totalmente personalizáveis\n\n```ts\nimport { createLogger } from \"easycordly.js\";\n\nconst logger = createLogger({\n  prefix:     \"[MeuBot]\",\n  timestamps: true,\n  colors:     true,\n  theme:      \"emojis\",       // \"dark\" | \"emojis\" | \"noEmojis\"\n  levels: {\n    error: { label: \"FALHA\", emoji: \"🔥\" },\n  },\n  onLog: (entry) => {\n    // grave em arquivo, mande pra um webhook, salve num banco, etc.\n    // entry = { level, message, meta, timestamp }\n  },\n});\n\nclient.setLogger(logger);\n```\n\n---\n\n## 📦 Outros recursos\n\nA lib também traz, prontos para uso: gerenciamento de **voz** (`joinVoice`, `playAudio`), **webhooks** (`Webhook`, `createChannelWebhook`), **AutoMod** (`createBlockWordRule`, `createAntiSpamRule`), **enquetes** (`createPoll`), **stage instances**, **monetização/entitlements**, **sharding** (`ShardManager`), **convites**, **audit log**, **bans**, **onboarding**, **eventos agendados**, **i18n**, **OAuth2**, **stickers**, **integrações/team** e muito mais — todos exportados diretamente de `easycordly.js`. Consulte os tipos no editor (autocomplete) para a lista completa.\n\n---\n\n## 📦 Estrutura\n\n```\nsrc/\n├── client/\n│   └── Client.ts           — Classe principal + middlewares + cooldown\n├── structures/\n│   ├── SlashCommand.ts     — Slash + args tipados + auto-build\n│   ├── PrefixCommand.ts    — Prefix + args tipados + conversores\n│   ├── Event.ts            — Eventos com nomes humanos\n│   └── Interaction.ts      — Handler de botão/select/modal\n├── managers/\n│   ├── Loader.ts           — Auto-load de arquivos\n│   ├── Registry.ts         — Registra slashes na API\n│   └── HotReload.ts        — fs.watch nos diretórios\n├── dashboard/\n│   └── Dashboard.ts        — Servidor HTTP nativo (sem deps)\n├── utils/\n│   ├── context.ts          — Ctx, SlashCtx, PrefixCtx (ask, paginate, ...)\n│   ├── permissions.ts      — Aliases de permissão\n│   ├── cooldowns.ts        — CooldownManager\n│   ├── eventMap.ts         — Nomes humanos de eventos\n│   ├── builders.ts         — v2/Embed/Modal/Selects/Buttons\n│   ├── time.ts             — Helpers de data/hora\n│   └── json.ts             — JsonDB simples\n└── types/index.ts          — Tipos e interfaces\n```\n\n---\n\n## Compatibilidade\n\nA v2 é **100% compatível** com bots feitos para a v1 — as APIs antigas (`v2`, `v2Button`, `Embed`, `mentionReply`, `loadCommands`…) continuam funcionando. As novidades são **adições opcionais**.\n\n---\n\n## Licença\n\nMIT\n","readmeFilename":"README.md"}