From a2f113a35f92e137a65a0b6c998cdaf005bd0a4a Mon Sep 17 00:00:00 2001 From: RayExo Date: Thu, 16 Jul 2026 11:14:48 +0530 Subject: [PATCH] CodeX - Dash and API Fixed --- .gitignore | 1 + README.md | 352 +++++++++--------- bot/.env.example | 14 +- bot/CodeX.py | 18 + bot/README.md | 271 +++++++++----- bot/api/__init__.py | 14 + bot/api/db_manager.py | 14 + bot/api/dependencies.py | 14 + bot/api/routes/__init__.py | 14 + bot/api/routes/admin.py | 14 + bot/api/routes/bot.py | 14 + bot/api/routes/guilds.py | 14 + bot/api/schemas.py | 14 + bot/api/server.py | 42 ++- bot/cogs/__init__.py | 14 + bot/cogs/antinuke/antiIntegration.py | 14 + bot/cogs/antinuke/anti_member_update.py | 14 + bot/cogs/antinuke/antiban.py | 14 + bot/cogs/antinuke/antibotadd.py | 14 + bot/cogs/antinuke/antichcr.py | 14 + bot/cogs/antinuke/antichdl.py | 14 + bot/cogs/antinuke/antichup.py | 14 + bot/cogs/antinuke/antieveryone.py | 14 + bot/cogs/antinuke/antiguild.py | 14 + bot/cogs/antinuke/antikick.py | 14 + bot/cogs/antinuke/antiprune.py | 14 + bot/cogs/antinuke/antirlcr.py | 14 + bot/cogs/antinuke/antirldl.py | 14 + bot/cogs/antinuke/antirlup.py | 14 + bot/cogs/antinuke/antiwebhook.py | 14 + bot/cogs/antinuke/antiwebhookcr.py | 14 + bot/cogs/antinuke/antiwebhookdl.py | 14 + bot/cogs/automod/anti_emoji_spam.py | 14 + bot/cogs/automod/anti_invites.py | 14 + bot/cogs/automod/anti_mass_mention.py | 14 + bot/cogs/automod/anticaps.py | 14 + bot/cogs/automod/antilink.py | 14 + bot/cogs/automod/antispam.py | 14 + bot/cogs/commands/Birthday.py | 14 + bot/cogs/commands/Embed.py | 14 + bot/cogs/commands/Games.py | 14 + bot/cogs/commands/Invc.py | 14 + bot/cogs/commands/Media.py | 14 + bot/cogs/commands/afk.py | 14 + bot/cogs/commands/ai.py | 14 + bot/cogs/commands/anti_unwl.py | 14 + bot/cogs/commands/anti_wl.py | 14 + bot/cogs/commands/antinuke.py | 14 + bot/cogs/commands/automod.py | 14 + bot/cogs/commands/autoreact.py | 14 + bot/cogs/commands/autoresponder.py | 14 + bot/cogs/commands/autorole.py | 14 + bot/cogs/commands/blackjack.py | 14 + bot/cogs/commands/blacklist.py | 14 + bot/cogs/commands/block.py | 14 + bot/cogs/commands/booster.py | 14 + bot/cogs/commands/calc.py | 14 + bot/cogs/commands/counting.py | 14 + bot/cogs/commands/customrole.py | 14 + bot/cogs/commands/dms.py | 14 + bot/cogs/commands/emergency.py | 14 + bot/cogs/commands/encryption.py | 14 + bot/cogs/commands/extra.py | 14 + bot/cogs/commands/extraown.py | 14 + bot/cogs/commands/fastgreet.py | 14 + bot/cogs/commands/filters.py | 14 + bot/cogs/commands/fun.py | 14 + bot/cogs/commands/general.py | 14 + bot/cogs/commands/giveaway.py | 14 + bot/cogs/commands/help.py | 14 + bot/cogs/commands/ignore.py | 14 + bot/cogs/commands/image.py | 14 + bot/cogs/commands/imagine.py | 14 + bot/cogs/commands/j2c.py | 14 + bot/cogs/commands/jail.py | 14 + bot/cogs/commands/joindm.py | 14 + bot/cogs/commands/leveling.py | 14 + bot/cogs/commands/leveling_original.py | Bin 1106 -> 2600 bytes bot/cogs/commands/logging.py | 14 + bot/cogs/commands/map.py | 14 + bot/cogs/commands/messages.py | 14 + bot/cogs/commands/minecraft.py | 14 + bot/cogs/commands/msgpack.py | 14 + bot/cogs/commands/music.py | 14 + bot/cogs/commands/nightmode.py | 14 + bot/cogs/commands/nitro.py | 14 + bot/cogs/commands/notify.py | 14 + bot/cogs/commands/np.py | 14 + bot/cogs/commands/owner.py | 14 + bot/cogs/commands/owner2.py | 14 + bot/cogs/commands/qr.py | 14 + bot/cogs/commands/reactionroles.py | 14 + bot/cogs/commands/slots.py | 14 + bot/cogs/commands/stats.py | 14 + bot/cogs/commands/status.py | 14 + bot/cogs/commands/steal.py | 14 + bot/cogs/commands/stickymessage.py | 14 + bot/cogs/commands/ticket.py | 14 + bot/cogs/commands/timer.py | 14 + bot/cogs/commands/tracking.py | 14 + bot/cogs/commands/translate.py | 14 + bot/cogs/commands/vanityroles.py | 14 + bot/cogs/commands/verification.py | 14 + bot/cogs/commands/voice.py | 14 + bot/cogs/commands/welcome.py | 14 + bot/cogs/commands/youtube.py | 14 + bot/cogs/events/Errors.py | 14 + bot/cogs/events/ai.py | 14 + bot/cogs/events/auto.py | 14 + bot/cogs/events/autoblacklist.py | 14 + bot/cogs/events/autoreact.py | 14 + bot/cogs/events/autorole.py | 14 + bot/cogs/events/greet2.py | 14 + bot/cogs/events/mention.py | 14 + bot/cogs/events/on_guild.py | 14 + bot/cogs/events/react.py | 14 + bot/cogs/events/stickymessage.py | 14 + bot/cogs/moderation/ban.py | 14 + bot/cogs/moderation/hide.py | 14 + bot/cogs/moderation/kick.py | 14 + bot/cogs/moderation/lock.py | 14 + bot/cogs/moderation/message.py | 14 + bot/cogs/moderation/moderation.py | 14 + bot/cogs/moderation/role.py | 14 + bot/cogs/moderation/snipe.py | 14 + bot/cogs/moderation/timeout.py | 14 + bot/cogs/moderation/topcheck.py | 14 + bot/cogs/moderation/unban.py | 14 + bot/cogs/moderation/unhide.py | 14 + bot/cogs/moderation/unlock.py | 14 + bot/cogs/moderation/unmute.py | 14 + bot/cogs/moderation/warn.py | 14 + bot/cogs/zyrox/ai.py | 14 + bot/cogs/zyrox/antinuke.py | 14 + bot/cogs/zyrox/automod.py | 14 + bot/cogs/zyrox/birth.py | 14 + bot/cogs/zyrox/booster.py | 14 + bot/cogs/zyrox/counting.py | 14 + bot/cogs/zyrox/encryption.py | 14 + bot/cogs/zyrox/extra.py | 14 + bot/cogs/zyrox/fun.py | 14 + bot/cogs/zyrox/games.py | 14 + bot/cogs/zyrox/general.py | 14 + bot/cogs/zyrox/giveaway.py | 14 + bot/cogs/zyrox/ignore.py | 14 + bot/cogs/zyrox/inviteTracker.py | 14 + bot/cogs/zyrox/j2c.py | 14 + bot/cogs/zyrox/joindm.py | 14 + bot/cogs/zyrox/leveling.py | 14 + bot/cogs/zyrox/logging.py | 14 + bot/cogs/zyrox/mc.py | 14 + bot/cogs/zyrox/moderation.py | 14 + bot/cogs/zyrox/music.py | 14 + bot/cogs/zyrox/server.py | 14 + bot/cogs/zyrox/sticky.py | 14 + bot/cogs/zyrox/ticket.py | 14 + bot/cogs/zyrox/vanity.py | 14 + bot/cogs/zyrox/verify.py | 14 + bot/cogs/zyrox/voice.py | 14 + bot/cogs/zyrox/welcome.py | 14 + bot/core/Cog.py | 14 + bot/core/Context.py | 14 + bot/core/__init__.py | 14 + bot/core/zyrox.py | 14 + bot/db/_db.py | 14 + bot/games/__init__.py | 14 + bot/games/battleship.py | 14 + bot/games/button_games/__init__.py | 14 + bot/games/button_games/battleship_buttons.py | 14 + bot/games/button_games/chess_buttons.py | 14 + .../button_games/connect_four_buttons.py | 14 + .../button_games/country_guess_buttons.py | 14 + bot/games/button_games/lights_out.py | 14 + bot/games/button_games/memory_game.py | 14 + bot/games/button_games/number_slider.py | 14 + .../button_games/reaction_test_buttons.py | 14 + bot/games/button_games/rps_buttons.py | 14 + bot/games/button_games/tictactoe_buttons.py | 14 + bot/games/button_games/twenty_48_buttons.py | 14 + bot/games/button_games/wordle_buttons.py | 14 + bot/games/chess_game.py | 14 + bot/games/connect_four.py | 14 + bot/games/country_guess.py | 14 + bot/games/reaction_test.py | 14 + bot/games/rps.py | 14 + bot/games/tictactoe.py | 14 + bot/games/twenty_48.py | 14 + bot/games/typeracer.py | 14 + bot/games/utils.py | 14 + bot/games/wordle.py | 14 + bot/requirements.txt | 3 +- bot/utils/Tools.py | 14 + bot/utils/__init__.py | 16 + bot/utils/ai_utils.py | 14 + bot/utils/config.py | 16 +- bot/utils/config_loader.py | 14 + bot/utils/cv2.py | 14 + bot/utils/emoji.py | 14 + bot/utils/help.py | 14 + bot/utils/paginator.py | 14 + bot/utils/paginators.py | 14 + bot/utils/sync_emojis.py | 14 + bot/utils/tunnel.py | 153 ++++++++ dashboard/.env.example | 6 +- dashboard/README.md | 175 +++++---- dashboard/app/api/auth/[...nextauth]/route.ts | 16 + dashboard/app/dashboard/admin/page.tsx | 16 + dashboard/app/dashboard/error.tsx | 16 + .../guild/[guildId]/antinuke/page.tsx | 16 + .../guild/[guildId]/automod/page.tsx | 16 + .../guild/[guildId]/autoreact/page.tsx | 16 + .../guild/[guildId]/autorole/page.tsx | 16 + .../guild/[guildId]/customroles/page.tsx | 16 + .../guild/[guildId]/invcrole/page.tsx | 16 + .../guild/[guildId]/invites/page.tsx | 16 + .../dashboard/guild/[guildId]/j2c/page.tsx | 16 + .../dashboard/guild/[guildId]/joindm/page.tsx | 16 + .../app/dashboard/guild/[guildId]/layout.tsx | 16 + .../[guildId]/leveling/leaderboard/page.tsx | 16 + .../guild/[guildId]/leveling/page.tsx | 16 + .../app/dashboard/guild/[guildId]/loading.tsx | 16 + .../guild/[guildId]/logging/page.tsx | 16 + .../app/dashboard/guild/[guildId]/page.tsx | 16 + .../guild/[guildId]/reactionroles/page.tsx | 16 + .../guild/[guildId]/settings/page.tsx | 16 + .../guild/[guildId]/tickets/page.tsx | 16 + .../guild/[guildId]/tracking/page.tsx | 16 + .../guild/[guildId]/vanityroles/page.tsx | 16 + .../guild/[guildId]/verification/page.tsx | 16 + .../guild/[guildId]/welcome/page.tsx | 16 + dashboard/app/dashboard/guilds/page.tsx | 16 + dashboard/app/dashboard/layout.tsx | 16 + dashboard/app/dashboard/loading.tsx | 16 + dashboard/app/dashboard/page.tsx | 16 + dashboard/app/docs/page.tsx | 16 + dashboard/app/layout.tsx | 16 + dashboard/app/page.tsx | 16 + dashboard/app/privacy/page.tsx | 16 + dashboard/app/terms/page.tsx | 16 + dashboard/components/auth-provider.tsx | 16 + .../components/dashboard/admin-content.tsx | 16 + .../components/dashboard/antinuke-form.tsx | 16 + .../components/dashboard/automod-form.tsx | 16 + .../components/dashboard/autorole-form.tsx | 16 + .../components/dashboard/customroles-form.tsx | 16 + .../components/dashboard/form-elements.tsx | 16 + dashboard/components/dashboard/j2c-form.tsx | 16 + .../components/dashboard/leveling-form.tsx | 16 + .../components/dashboard/logging-form.tsx | 16 + .../components/dashboard/metric-card.tsx | 16 + .../components/dashboard/page-header.tsx | 16 + .../dashboard/reactionroles-form.tsx | 16 + .../components/dashboard/server-card.tsx | 16 + .../components/dashboard/settings-form.tsx | 16 + .../components/dashboard/tickets-form.tsx | 16 + .../components/dashboard/vanityrole-form.tsx | 16 + .../dashboard/verification-form.tsx | 16 + .../components/dashboard/welcome-form.tsx | 16 + dashboard/components/guild-tabs.tsx | 16 + dashboard/components/ui/button.tsx | 16 + dashboard/components/ui/card.tsx | 16 + dashboard/components/ui/input.tsx | 16 + dashboard/components/ui/label.tsx | 16 + dashboard/components/ui/select.tsx | 16 + dashboard/components/ui/sonner.tsx | 16 + dashboard/components/ui/switch.tsx | 16 + dashboard/components/ui/table.tsx | 16 + dashboard/components/ui/textarea.tsx | 16 + dashboard/hooks/use-auth.ts | 16 + dashboard/lib/api.ts | 16 + dashboard/lib/auth.ts | 16 + dashboard/lib/utils.ts | 16 + dashboard/tailwind.config.ts | 16 + dashboard/types/api.ts | 16 + dashboard/types/index.ts | 16 + dashboard/types/next-auth.d.ts | 16 + 276 files changed, 4540 insertions(+), 351 deletions(-) create mode 100644 bot/utils/tunnel.py diff --git a/.gitignore b/.gitignore index bc254ac..e5f2d91 100644 --- a/.gitignore +++ b/.gitignore @@ -49,6 +49,7 @@ build/ # Ignore node_modules node_modules/ +package-lock.json # Ignore Next.js build output .next/ diff --git a/README.md b/README.md index e60cd06..50f8622 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,20 @@ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ``` -**A feature-rich Discord bot paired with a sleek Next.js dashboard** - -[![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org) -[![Next.js](https://img.shields.io/badge/Next.js-14+-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)](https://nextjs.org) -[![FastAPI](https://img.shields.io/badge/FastAPI-Backend-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com) -[![Discord](https://img.shields.io/badge/Discord.py-v2-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discordpy.readthedocs.io) -[![License](https://img.shields.io/badge/License-MIT-red?style=for-the-badge)](LICENSE) -[![Support](https://img.shields.io/badge/Support-discord.gg/codexdev-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) +

A feature-rich Discord bot paired with a sleek Next.js dashboard

+ +

+ + + + +

+

+ + + + +

@@ -28,18 +34,21 @@ ZyroX is a fully-featured Discord bot with a modern web dashboard for managing e ``` ZyroX-CV2-With-Dashboard/ -├── 🤖 bot/ Python Discord bot + FastAPI backend -│ ├── api/ Dashboard REST API (FastAPI) -│ ├── cogs/ All bot features (commands, events, antinuke, automod…) -│ ├── utils/ Shared utilities (emoji, tools, sync…) -│ ├── assets/ Fonts, backgrounds, GIFs -│ └── CodeX.py Entry point +├── 🤖 bot/ Python Discord bot + FastAPI backend +│ ├── api/ Dashboard REST API (FastAPI) +│ ├── cogs/ All bot features (commands, events, antinuke, automod…) +│ ├── core/ Bot client, context, cog base +│ ├── utils/ Shared utilities (emoji, tools, sync, ngrok tunnel…) +│ ├── games/ Standalone game modules +│ ├── assets/ Fonts, backgrounds, GIFs +│ └── CodeX.py Entry point │ -└── 🌐 dashboard/ Next.js frontend - ├── app/ App Router pages - ├── components/ Reusable UI components - ├── hooks/ Custom React hooks - └── lib/ API helpers & utilities +└── 🌐 dashboard/ Next.js frontend + ├── app/ App Router pages & API routes + ├── components/ Reusable UI components + ├── hooks/ Custom React hooks + ├── lib/ API helpers & utilities + └── types/ TypeScript type definitions ``` --- @@ -51,11 +60,11 @@ ZyroX-CV2-With-Dashboard/ **🛡️ Security** -- Antinuke (ban, kick, channel/role flood, webhook abuse…) -- Automod (spam, caps, links, invites, mass mentions, emoji spam) +- Antinuke — ban, kick, channel & role flood, webhook abuse, bot adds, prune +- Automod — spam, caps, links, invites, mass mentions, emoji spam - Anti-member update protection - Whitelist / unwhitelist system -- Emergency mode +- Emergency lockdown mode @@ -73,9 +82,9 @@ ZyroX-CV2-With-Dashboard/ **⚙️ Management** -- Moderation (ban, kick, mute, warn, lock…) -- Logging system -- Reaction roles, vanity roles +- Moderation — ban, kick, mute, warn, lock, jail, and more +- Full logging system +- Reaction roles, vanity roles, invite tracker - Tickets, giveaways, verification - Join-to-create voice channels @@ -85,9 +94,10 @@ ZyroX-CV2-With-Dashboard/ **🌐 Dashboard** - Discord OAuth2 login - Per-server settings management -- Bot stats & live data +- Live bot stats & metrics - Fully branded & customisable -- Deployed to Vercel in minutes +- HTTPS via ngrok static domain +- Deploys to Vercel in minutes @@ -95,21 +105,22 @@ ZyroX-CV2-With-Dashboard/ **🎉 Engagement** -- Leveling system with XP +- Leveling & XP system with leaderboard - Birthday tracker -- Counting games, blackjack, slots -- AFK system, autorole, autoresponder -- Sticky messages, booster perks +- 12+ mini-games (chess, battleship, wordle, 2048…) +- AFK system, autorole, autoresponder, sticky messages +- Counting, blackjack, slots, booster perks **🔧 Developer** -- Application emoji auto-sync +- Application emoji auto-sync on startup - Jishaku eval support - Slash + prefix commands -- FastAPI backend with API key auth -- Hot-patchable emoji.py on startup +- FastAPI backend with API key auth + rate limiting +- ngrok HTTPS tunnel (pyngrok — works on Pterodactyl) +- CodeX Devs watermark on every source file @@ -117,26 +128,25 @@ ZyroX-CV2-With-Dashboard/ --- -## ✦ Quick Start +## ✦ Prerequisites -### Prerequisites - -| Requirement | Version | +| Requirement | Version / Notes | |---|---| | Python | 3.10 or higher | | Node.js | 18 or higher | -| A Lavalink node | v4 | +| Lavalink node | v4 | | Discord bot token | — | -| Discord OAuth app | (for dashboard) | +| Discord OAuth app | for dashboard login | +| ngrok account (free) | for HTTPS tunnel | --- ## ✦ Bot Setup -**1 — Clone and enter the bot folder** +**1 — Clone the repo** ```bash -git clone https://github.com/your-org/ZyroX-CV2-With-Dashboard +git clone https://github.com/RayExo/ZyroX-CV2-With-Dashboard cd ZyroX-CV2-With-Dashboard/bot ``` @@ -156,34 +166,34 @@ pip install -r requirements.txt **3 — Configure the environment** -```bash -cp .env.example .env -``` - -Then edit `.env`: +Copy `.env.example` to `.env` and fill in the values: ```env -# ── Core ────────────────────────────────────── -TOKEN = your_discord_bot_token -brand_name = 'ZyroX' +# ── Core ────────────────────────────────────────────────────────── +TOKEN = your_discord_bot_token +brand_name = 'ZyroX' -# ── Lavalink ────────────────────────────────── -LAVALINK_HOST = "lava-v4.ajieblogs.eu.org" -LAVALINK_PASSWORD = "your_password" -LAVALINK_SECURE = "true" # true = https (no port needed) -LAVALINK_PORT = "" # only needed when LAVALINK_SECURE=false +# ── Lavalink ────────────────────────────────────────────────────── +LAVALINK_HOST = "lava-v4.ajieblogs.eu.org" +LAVALINK_PASSWORD = "your_password" +LAVALINK_SECURE = "true" # true = HTTPS (no port needed) +LAVALINK_PORT = "" # only needed when LAVALINK_SECURE=false -# ── Emoji Sync ──────────────────────────────── -EMOJI_SYNC = "true" # auto-uploads & patches emoji.py on startup - # restarts the bot automatically after patching +# ── Emoji Sync ──────────────────────────────────────────────────── +EMOJI_SYNC = "true" # auto-uploads & patches emoji.py on startup -# ── API / Dashboard Backend ─────────────────── -API_ENABLED = "true" # false = skip starting the FastAPI server -API_PORT = "8000" -DASHBOARD_API_KEY = "change_this_to_a_strong_secret" +# ── API / Dashboard Backend ─────────────────────────────────────── +API_ENABLED = "true" +API_PORT = "8000" +DASHBOARD_API_KEY = "change_this_to_a_strong_secret" -# ── Webhooks ────────────────────────────────── -WEBHOOK_URL = "https://discord.com/api/webhooks/..." +# ── HTTPS Tunnel (ngrok) ────────────────────────────────────────── +TUNNEL_ENABLED = "true" +NGROK_AUTHTOKEN = "your_ngrok_authtoken" +NGROK_DOMAIN = "xxxx-xxxx-xxxx.ngrok-free.app" + +# ── Webhooks ────────────────────────────────────────────────────── +WEBHOOK_URL = "https://discord.com/api/webhooks/..." ``` **4 — Run the bot** @@ -205,25 +215,21 @@ npm install **2 — Configure the environment** -```bash -cp .env.example .env.local -``` - -Edit `dashboard/.env.local`: +Copy `.env.example` to `.env.local` and fill in the values: ```env -NEXT_PUBLIC_API_URL = http://localhost:8000/api/v1 -NEXT_PUBLIC_DASHBOARD_API_KEY = your_shared_api_key # must match bot's DASHBOARD_API_KEY +NEXT_PUBLIC_API_URL = https://xxxx.ngrok-free.app/api/v1 +NEXT_PUBLIC_DASHBOARD_API_KEY = your_shared_api_key -NEXTAUTH_URL = http://localhost:3000 -NEXTAUTH_SECRET = a_long_random_string +NEXTAUTH_URL = http://localhost:3000 +NEXTAUTH_SECRET = a_long_random_string -DISCORD_CLIENT_ID = your_discord_oauth_client_id -DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret +DISCORD_CLIENT_ID = your_discord_oauth_client_id +DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret -NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id -NEXT_PUBLIC_BRAND_NAME = "ZyroX" -NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" +NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id +NEXT_PUBLIC_BRAND_NAME = "ZyroX" +NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` **3 — Run locally** @@ -252,12 +258,15 @@ Open [http://localhost:3000](http://localhost:3000) | `API_PORT` | `8000` | Port the backend listens on | | `DASHBOARD_API_KEY` | — | Shared secret between bot API and dashboard | | `WEBHOOK_URL` | — | Discord webhook for command logs | +| `TUNNEL_ENABLED` | `true` | Expose the API over HTTPS via ngrok | +| `NGROK_AUTHTOKEN` | — | ngrok auth token | +| `NGROK_DOMAIN` | — | Reserved static domain (e.g. `xxxx.ngrok-free.app`) | ### Dashboard — `dashboard/.env.local` | Variable | Description | |---|---| -| `NEXT_PUBLIC_API_URL` | Full URL to the bot's FastAPI backend | +| `NEXT_PUBLIC_API_URL` | Full URL to the bot's FastAPI backend (use ngrok URL in production) | | `NEXT_PUBLIC_DASHBOARD_API_KEY` | Must match `DASHBOARD_API_KEY` in the bot | | `NEXTAUTH_URL` | Your dashboard's public URL | | `NEXTAUTH_SECRET` | Random secret for NextAuth session signing | @@ -269,94 +278,80 @@ Open [http://localhost:3000](http://localhost:3000) --- +## ✦ HTTPS Tunnel (ngrok) + +The bot uses **pyngrok** to expose the API over HTTPS — no system installs needed, works on Pterodactyl and any Python host. + +With a free ngrok static domain the URL never changes between restarts. + +**One-time setup:** + +```bash +# 1. Sign up free at https://ngrok.com +# 2. Get your authtoken: https://dashboard.ngrok.com/get-started/your-authtoken +# 3. Reserve a static domain: https://dashboard.ngrok.com/domains +``` + +Add to `bot/.env`: +```env +TUNNEL_ENABLED = "true" +NGROK_AUTHTOKEN = "your_token" +NGROK_DOMAIN = "xxxx.ngrok-free.app" +``` + +On every startup the console prints: +``` +◈ Tunnel: API is live at https://xxxx.ngrok-free.app + ↳ set NEXT_PUBLIC_API_URL=https://xxxx.ngrok-free.app/api/v1 +``` + +--- + ## ✦ Deployment ### 🤖 Bot — any Python host -1. Upload the entire `bot/` folder to your host (Render, Railway, Fly.io, VPS…) +1. Upload the entire `bot/` folder to your host (Pterodactyl, Render, Railway, Fly.io, VPS…) 2. Set the start command to `python CodeX.py` -3. Add all environment variables from `.env.example` -4. Make sure port `API_PORT` (`8000` by default) is publicly reachable if you're using the dashboard +3. Add all environment variables +4. pyngrok downloads the ngrok binary automatically on first run — no extra steps -> Recommended free/cheap hosts: [NexioHost](https://nexiohost.in) · Render · Railway +> Recommended free/cheap hosts: Render · Railway · Fly.io · VPS +> +> ⭐ **[NexioHost](https://nexiohost.in)** — Premium bot hosting, built for Discord bots. Fast, reliable, and affordable. -### 🌐 Dashboard — Vercel (recommended) +### 🌐 Dashboard — Vercel -> **That's literally it — upload the folder, add the variables, done.** - -**Step 1 — Upload to Vercel** - -Go to [vercel.com](https://vercel.com) → **Add New Project** → drag and drop the `dashboard/` folder -*(or connect your GitHub repo and set the root directory to `dashboard/`)* - -Vercel auto-detects Next.js — no build settings to touch. - ---- - -**Step 2 — Add environment variables** - -In your Vercel project → **Settings → Environment Variables**, add these: - -| Variable | Value | -|---|---| -| `NEXT_PUBLIC_API_URL` | Your bot API URL, e.g. `https://your-bot.render.com/api/v1` | -| `NEXT_PUBLIC_DASHBOARD_API_KEY` | Same value as `DASHBOARD_API_KEY` in the bot `.env` | -| `NEXTAUTH_URL` | Your Vercel domain, e.g. `https://your-app.vercel.app` | -| `NEXTAUTH_SECRET` | Any long random string — [generate one here](https://generate-secret.vercel.app/32) | -| `DISCORD_CLIENT_ID` | From [Discord Developer Portal](https://discord.com/developers/applications) | -| `DISCORD_CLIENT_SECRET` | From Discord Developer Portal | -| `NEXT_PUBLIC_ADMIN_IDS` | Your Discord user ID | -| `NEXT_PUBLIC_BRAND_NAME` | `ZyroX` *(or your custom name)* | -| `NEXT_PUBLIC_BRAND_NAME_WORD` | `ZX` *(short version)* | - ---- - -**Step 3 — Add the redirect URI in Discord** - -Go to your app in the [Discord Developer Portal](https://discord.com/developers/applications) -→ **OAuth2 → Redirects** → add: - -``` -https://your-app.vercel.app/api/auth/callback/discord -``` - ---- - -**Step 4 — Deploy** - -Hit **Deploy**. Vercel builds and publishes automatically. Your dashboard is live. ✓ +1. Go to [vercel.com](https://vercel.com) → **Add New Project** → connect your GitHub repo +2. Set root directory to `dashboard/` +3. Add all environment variables under **Settings → Environment Variables** +4. Add the OAuth redirect URI in Discord Developer Portal: + ``` + https://your-app.vercel.app/api/auth/callback/discord + ``` +5. Hit **Deploy** — done ✓ --- ## ✦ Emoji Sync -ZyroX includes an automatic emoji sync system that runs on every startup (when `EMOJI_SYNC=true`): +Runs automatically on startup when `EMOJI_SYNC=true`: ``` -★ Starting Application Emoji Sync — 140 unique emojis found in emoji.py -◈ Found 140 templates | Application hosts 98 emojis +★ Starting Application Emoji Sync — 144 unique emojis found in emoji.py +◈ Found 144 templates | Application hosts 202 emojis ↑ Uploading: ztick (not in application emojis) ✔ Uploaded: ztick [saved as ID: 1234567890] ✔ emoji.py patched in-place to reflect current API state. ★ Restarting bot to load updated emoji IDs... ``` -- **New emoji** → downloaded from CDN, uploaded to your application, ID written to `emoji.py` -- **Stale ID** → `emoji.py` is patched automatically -- **No changes** → sync completes instantly, no restart -- **After any patch** → bot restarts itself so the fresh IDs are live immediately - -Set `EMOJI_SYNC=false` to disable entirely. - ---- - -## ✦ Security Notes - -- Never commit `.env` files or real tokens to a public repo — `.gitignore` already covers them -- Use a strong, unique `NEXTAUTH_SECRET` and `DASHBOARD_API_KEY` -- Rotate any secret that gets accidentally exposed -- Keep Discord OAuth credentials in environment variables only -- The bot API should always be behind an API key when publicly hosted +| Event | Action | +|---|---| +| New emoji found | Uploaded to application, ID written to `emoji.py` | +| Stale ID detected | `emoji.py` patched automatically | +| No changes | Sync completes instantly, no restart | +| After any patch | Bot restarts itself so fresh IDs are live | --- @@ -364,52 +359,39 @@ Set `EMOJI_SYNC=false` to disable entirely. | Problem | Fix | |---|---| -| Bot fails to start | Check `TOKEN` is set correctly and the bot has the right gateway intents | -| Music not working | Verify `LAVALINK_HOST`, `LAVALINK_SECURE`, and `LAVALINK_PORT` are correct | -| Dashboard shows auth error | Check Discord OAuth client ID/secret and redirect URI in Developer Portal | -| Dashboard can't load data | Confirm `API_ENABLED=true`, the bot is running, and `NEXT_PUBLIC_API_URL` is correct | +| Bot fails to start | Check `TOKEN` is set and bot has correct gateway intents | +| Music not working | Verify `LAVALINK_HOST`, `LAVALINK_SECURE`, and `LAVALINK_PORT` | +| Dashboard auth error | Check Discord OAuth client ID/secret and redirect URI | +| Dashboard can't load data | Confirm `API_ENABLED=true`, bot is running, `NEXT_PUBLIC_API_URL` is correct | | Emojis showing as plain text | Run with `EMOJI_SYNC=true` once to upload and patch IDs | -| Port conflict on API | Change `API_PORT` in `.env` and update `NEXT_PUBLIC_API_URL` in the dashboard | +| CORS errors from dashboard | Make sure your Vercel URL is in the CORS origins list or add it via `CORS_ORIGINS` env var | +| Tunnel not starting | Check `NGROK_AUTHTOKEN` is valid — get it from [dashboard.ngrok.com](https://dashboard.ngrok.com) | +| Tunnel URL changes on restart | Set `NGROK_DOMAIN` to your reserved static domain | --- -## ✦ Credits & Links +## ✦ Security + +- Never commit `.env` files — `.gitignore` already covers them +- Use a strong, unique `NEXTAUTH_SECRET` and `DASHBOARD_API_KEY` +- Rotate any secret that gets accidentally exposed +- The bot API is always behind an API key — never expose it without one + +---
-Developed with ❤️ by **CodeX Devs** +## ✦ CodeX Devs -[![Discord](https://img.shields.io/badge/Join_Support_Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) -[![Hosting](https://img.shields.io/badge/Bot_Hosting-NexioHost-FF6B6B?style=for-the-badge)](https://nexiohost.in) - -
- ---- - -## ✦ License - -``` -MIT License — Copyright (c) 2026 CodeX Devs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -``` - -
- ---- - -*ZyroX — Built for protection. Designed for style.* +*Built for protection. Designed for style.* + +

+ + + + +

+ +© 2026 CodeX Devs — MIT License
diff --git a/bot/.env.example b/bot/.env.example index 52536cf..ad3c7f2 100644 --- a/bot/.env.example +++ b/bot/.env.example @@ -15,11 +15,11 @@ LAVALINK_PORT="13592" # EMOJI SYNC CONFIG # Set to true to enable automatic application emoji sync on startup -EMOJI_SYNC="true" +EMOJI_SYNC="false" # API SERVER CONFIG # Set to true to enable the dashboard API server -API_ENABLED="true" +API_ENABLED="false" # Port the API server listens on API_PORT="8000" @@ -28,4 +28,12 @@ WEBHOOK_URL="https://discord.com/api/webhooks/" DASHBOARD_API_KEY="ZYROX_SECURE_API_KEY_12345_CHANGE_THIS_ASAP_BY_CODEX_DEVS" -# CODEX DEVS \ No newline at end of file +# CODEX DEVS + +# HTTPS TUNNEL CONFIG +TUNNEL_ENABLED="true" +# Get your authtoken from https://dashboard.ngrok.com/get-started/your-authtoken +NGROK_AUTHTOKEN="xxx_xxxx" +# Reserve a free static domain at https://dashboard.ngrok.com/domains +# e.g. xxxx-xxxx-xxxx.ngrok-free.app — leave blank for a random URL each restart +NGROK_DOMAIN="" diff --git a/bot/CodeX.py b/bot/CodeX.py index be35dfb..b7faafd 100644 --- a/bot/CodeX.py +++ b/bot/CodeX.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import os import subprocess # os.system("") @@ -320,6 +334,10 @@ def keep_alive(): keep_alive() +# --- ngrok HTTPS Tunnel (for Dashboard API) --- +from utils.tunnel import start_tunnel +start_tunnel() + # --- Main Bot Execution --- async def main(): async with client: diff --git a/bot/README.md b/bot/README.md index fc52987..999a079 100644 --- a/bot/README.md +++ b/bot/README.md @@ -9,13 +9,19 @@ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ``` -**ZyroX Bot — Python Discord Bot + FastAPI Backend** - -[![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org) -[![FastAPI](https://img.shields.io/badge/FastAPI-Backend-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com) -[![Discord](https://img.shields.io/badge/Discord.py-v2-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discordpy.readthedocs.io) -[![License](https://img.shields.io/badge/License-MIT-red?style=for-the-badge)](LICENSE) -[![Support](https://img.shields.io/badge/Support-discord.gg/codexdev-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) +

ZyroX Bot — Python Discord Bot + FastAPI Backend

+ +

+ + + + +

+

+ + + +

@@ -23,68 +29,131 @@ ## ✦ Overview -This folder contains the ZyroX Discord bot built on `discord.py v2` with a `FastAPI` backend that powers the web dashboard. It handles all server moderation, music, leveling, and utility features. +This folder contains the ZyroX Discord bot built on `discord.py v2` alongside a `FastAPI` backend that powers the web dashboard. It handles all server moderation, music, leveling, mini-games, and utility features — all from a single `python CodeX.py` command. ``` bot/ -├── api/ FastAPI backend (routes, schemas, db manager) +├── api/ FastAPI backend (routes, schemas, db manager) +│ └── routes/ /bot /guilds /admin ├── cogs/ -│ ├── antinuke/ Antinuke protection events -│ ├── automod/ Automod enforcement events -│ ├── commands/ All slash & prefix commands -│ └── events/ General Discord event listeners -├── utils/ Shared utilities (emoji, tools, sync) -├── assets/ Fonts, backgrounds, GIFs -└── CodeX.py Entry point +│ ├── antinuke/ Antinuke protection event listeners +│ ├── automod/ Automod enforcement event listeners +│ ├── commands/ All slash & prefix command modules +│ ├── events/ General Discord event listeners +│ ├── moderation/ Moderation action modules +│ └── zyrox/ Core ZyroX feature cogs +├── core/ Bot client, context, cog base classes +├── games/ Standalone game logic + button views +├── utils/ Emoji, tools, sync, ngrok tunnel +├── assets/ Fonts, backgrounds, GIFs +└── CodeX.py Entry point ``` --- ## ✦ Features + + + + + + + + + + + + + + + + + +
+ **🛡️ Antinuke** -- Protection against mass ban, kick, channel/role flood, webhook abuse, bot adds, prune, and more +- Mass ban, kick, channel & role flood detection +- Webhook abuse, bot add, prune protection +- Anti-member update - Whitelist / unwhitelist system - Emergency lockdown mode + + **🤖 Automod** -- Anti-spam, anti-caps, anti-links, anti-invites -- Mass mention and emoji spam protection +- Anti-spam, anti-caps, anti-links +- Anti-invites, mass mention, emoji spam - Fully configurable per server +- Works alongside Discord's native automod + +
**🎵 Music** - Lavalink v4 powered playback - YouTube, SoundCloud, JioSaavn support -- Queue, loop, shuffle, autoplay, seek controls +- Queue, loop, shuffle, autoplay +- Seek, rewind, forward controls -**⚙️ Moderation & Management** -- Ban, kick, mute, warn, lock, and more -- Logging, reaction roles, vanity roles -- Tickets, giveaways, verification, join-to-create VC + + +**⚙️ Moderation** +- Ban, kick, mute, warn, lock, jail +- Snipe, message management +- Full logging system +- Reaction roles, vanity roles, invite tracker + +
**🎉 Engagement** -- Leveling & XP system -- Birthday tracker, AFK, autorole -- Counting, blackjack, slots, autoresponder, sticky messages +- Leveling & XP with leaderboard +- Birthday tracker +- Counting, AFK, autorole, autoresponder +- Sticky messages, booster perks, giveaways + + + +**🎮 Games** +- Chess, Battleship, Connect Four +- Wordle, Typeracer, 2048, Memory +- Reaction test, RPS, Tic-tac-toe +- Country guess, Number slider, Lights out + +
+ +**🌐 API Backend** +- FastAPI with API key auth +- SlowAPI rate limiting +- Structured JSON request logging +- CORS configured for your dashboard domain +- `CORS_ORIGINS` env var for extra domains + + **🔧 Developer** - Jishaku eval support - Application emoji auto-sync - Slash + prefix commands -- FastAPI backend with API key auth +- ngrok HTTPS tunnel (pyngrok — no system install) +- CodeX Devs watermark on every source file + +
+ +--- + +## ✦ Prerequisites + +| Requirement | Notes | +|---|---| +| Python 3.10+ | — | +| Lavalink v4 node | for music features | +| Discord bot token | from Developer Portal | +| ngrok free account | for HTTPS tunnel | --- ## ✦ Setup -### Prerequisites - -| Requirement | Version | -|---|---| -| Python | 3.10 or higher | -| A Lavalink node | v4 | -| Discord bot token | — | - ### 1 — Install dependencies ```bash @@ -101,33 +170,35 @@ pip install -r requirements.txt ### 2 — Configure environment -```bash -cp .env.example .env -``` - -Edit `.env`: +Create a `.env` file in this folder: ```env -# ── Core ────────────────────────────────────── -TOKEN = your_discord_bot_token -brand_name = 'ZyroX' +# ── Core ────────────────────────────────────────────────────────── +TOKEN = your_discord_bot_token +brand_name = 'ZyroX' -# ── Lavalink ────────────────────────────────── -LAVALINK_HOST = "lava-v4.ajieblogs.eu.org" -LAVALINK_PASSWORD = "your_password" -LAVALINK_SECURE = "true" # true = HTTPS (no port needed) -LAVALINK_PORT = "" # only needed when LAVALINK_SECURE=false +# ── Lavalink ────────────────────────────────────────────────────── +LAVALINK_HOST = "lava-v4.ajieblogs.eu.org" +LAVALINK_PASSWORD = "your_password" +LAVALINK_SECURE = "true" # true = HTTPS (no port needed) +LAVALINK_PORT = "" # only needed when LAVALINK_SECURE=false -# ── Emoji Sync ──────────────────────────────── -EMOJI_SYNC = "true" # auto-uploads & patches emoji.py on startup +# ── Emoji Sync ──────────────────────────────────────────────────── +EMOJI_SYNC = "true" -# ── API / Dashboard Backend ─────────────────── -API_ENABLED = "true" # false = skip starting the FastAPI server -API_PORT = "8000" -DASHBOARD_API_KEY = "change_this_to_a_strong_secret" +# ── API / Dashboard Backend ─────────────────────────────────────── +API_ENABLED = "true" +API_PORT = "8000" +DASHBOARD_API_KEY = "change_this_to_a_strong_secret" +CORS_ORIGINS = "" # extra allowed origins, comma-separated -# ── Webhooks ────────────────────────────────── -WEBHOOK_URL = "https://discord.com/api/webhooks/..." +# ── HTTPS Tunnel (ngrok) ────────────────────────────────────────── +TUNNEL_ENABLED = "true" +NGROK_AUTHTOKEN = "your_ngrok_authtoken" +NGROK_DOMAIN = "xxxx-xxxx-xxxx.ngrok-free.app" + +# ── Webhooks ────────────────────────────────────────────────────── +WEBHOOK_URL = "https://discord.com/api/webhooks/..." ``` ### 3 — Run @@ -146,48 +217,66 @@ python CodeX.py | `LAVALINK_HOST` | — | Lavalink server hostname (no protocol) | | `LAVALINK_PASSWORD` | — | Lavalink password | | `LAVALINK_SECURE` | `true` | `true` = HTTPS, `false` = HTTP | -| `LAVALINK_PORT` | _(empty)_ | Port — only needed when `LAVALINK_SECURE=false` | -| `EMOJI_SYNC` | `true` | Run application emoji sync on startup | +| `LAVALINK_PORT` | _(empty)_ | Port — only when `LAVALINK_SECURE=false` | +| `EMOJI_SYNC` | `true` | Auto-sync application emojis on startup | | `API_ENABLED` | `true` | Start the FastAPI dashboard backend | | `API_PORT` | `8000` | Port the backend listens on | | `DASHBOARD_API_KEY` | — | Shared secret between bot API and dashboard | +| `CORS_ORIGINS` | _(empty)_ | Extra CORS-allowed origins, comma-separated | | `WEBHOOK_URL` | — | Discord webhook for command logs | +| `TUNNEL_ENABLED` | `true` | Expose API over HTTPS via ngrok | +| `NGROK_AUTHTOKEN` | — | ngrok auth token | +| `NGROK_DOMAIN` | — | Reserved static domain (e.g. `xxxx.ngrok-free.app`) | + +--- + +## ✦ HTTPS Tunnel (ngrok) + +Uses **pyngrok** — downloads the ngrok binary automatically on first run. No system installs, works on Pterodactyl and any Python host. + +### One-time setup + +1. Sign up free at [ngrok.com](https://ngrok.com) +2. Copy your authtoken from [dashboard.ngrok.com/get-started/your-authtoken](https://dashboard.ngrok.com/get-started/your-authtoken) +3. Reserve a free static domain at [dashboard.ngrok.com/domains](https://dashboard.ngrok.com/domains) — looks like `xxxx.ngrok-free.app` +4. Add `NGROK_AUTHTOKEN` and `NGROK_DOMAIN` to `.env` + +On every startup the console prints: +``` +◈ Tunnel: API is live at https://xxxx.ngrok-free.app + ↳ set NEXT_PUBLIC_API_URL=https://xxxx.ngrok-free.app/api/v1 +``` + +Set `TUNNEL_ENABLED=false` to disable. --- ## ✦ Emoji Sync -When `EMOJI_SYNC=true`, the bot automatically syncs application emojis on every startup: +When `EMOJI_SYNC=true`, the bot syncs application emojis on every startup: -``` -★ Starting Application Emoji Sync — 140 unique emojis found in emoji.py -◈ Found 140 templates | Application hosts 98 emojis -↑ Uploading: ztick (not in application emojis) -✔ Uploaded: ztick [saved as ID: 1234567890] -✔ emoji.py patched in-place to reflect current API state. -★ Restarting bot to load updated emoji IDs... -``` - -- New emojis → uploaded to your application, ID written to `emoji.py` -- Stale IDs → `emoji.py` is patched automatically -- No changes → sync completes instantly, no restart -- After any patch → bot restarts itself so fresh IDs are live immediately - -Set `EMOJI_SYNC=false` to disable entirely. +| Event | Action | +|---|---| +| New emoji found | Uploaded to application, ID written to `emoji.py` | +| Stale ID detected | `emoji.py` patched automatically | +| No changes | Sync completes instantly, no restart | +| After any patch | Bot restarts so fresh IDs are live | --- ## ✦ Deployment -Upload the entire `bot/` folder to your host (Render, Railway, Fly.io, VPS) and set the start command to: +Upload the entire `bot/` folder to your host and set the start command to: ```bash python CodeX.py ``` -Add all environment variables from `.env.example`. Make sure port `API_PORT` (`8000` by default) is publicly reachable if you're using the dashboard. +pyngrok downloads the ngrok binary on first run — no extra steps needed on any host. -> Recommended free/cheap hosts: [NexioHost](https://nexiohost.in) · Render · Railway +> Recommended free hosts: Render · Railway · Fly.io · Pterodactyl +> +> ⭐ **[NexioHost](https://nexiohost.in)** — Premium bot hosting, built for Discord bots. Fast, reliable, and affordable. --- @@ -195,21 +284,29 @@ Add all environment variables from `.env.example`. Make sure port `API_PORT` (`8 | Problem | Fix | |---|---| -| Bot fails to start | Check `TOKEN` is set correctly and the bot has the right gateway intents | -| Music not working | Verify `LAVALINK_HOST`, `LAVALINK_SECURE`, and `LAVALINK_PORT` are correct | -| Dashboard can't load data | Confirm `API_ENABLED=true`, bot is running, and `NEXT_PUBLIC_API_URL` in the dashboard is correct | -| Emojis showing as plain text | Run with `EMOJI_SYNC=true` once to upload and patch IDs | -| Port conflict on API | Change `API_PORT` in `.env` and update `NEXT_PUBLIC_API_URL` in the dashboard | +| Bot fails to start | Check `TOKEN` and gateway intents in Developer Portal | +| Music not working | Verify `LAVALINK_HOST`, `LAVALINK_SECURE`, `LAVALINK_PORT` | +| Dashboard can't reach API | Check `API_ENABLED=true` and `NEXT_PUBLIC_API_URL` in dashboard | +| CORS errors | Add your Vercel URL to `CORS_ORIGINS` in `.env` | +| Emojis showing as plain text | Run once with `EMOJI_SYNC=true` to upload and patch IDs | +| Tunnel not starting | Check `NGROK_AUTHTOKEN` is valid | +| Tunnel URL changes each restart | Set `NGROK_DOMAIN` to your reserved static domain | ---
-Developed with ❤️ by **CodeX Devs** +## ✦ CodeX Devs -[![Discord](https://img.shields.io/badge/Join_Support_Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) -[![Hosting](https://img.shields.io/badge/Bot_Hosting-NexioHost-FF6B6B?style=for-the-badge)](https://nexiohost.in) +*Built for protection. Designed for style.* -*ZyroX — Built for protection. Designed for style.* +

+ + + + +

+ +© 2026 CodeX Devs — MIT License
diff --git a/bot/api/__init__.py b/bot/api/__init__.py index e69de29..cc6f96c 100644 --- a/bot/api/__init__.py +++ b/bot/api/__init__.py @@ -0,0 +1,14 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + diff --git a/bot/api/db_manager.py b/bot/api/db_manager.py index 3a4d18e..2733a43 100644 --- a/bot/api/db_manager.py +++ b/bot/api/db_manager.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import aiosqlite import asyncio from typing import Dict diff --git a/bot/api/dependencies.py b/bot/api/dependencies.py index e5b2128..4239c59 100644 --- a/bot/api/dependencies.py +++ b/bot/api/dependencies.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import os from typing import Optional, TYPE_CHECKING from fastapi import HTTPException, Depends, Security diff --git a/bot/api/routes/__init__.py b/bot/api/routes/__init__.py index e69de29..cc6f96c 100644 --- a/bot/api/routes/__init__.py +++ b/bot/api/routes/__init__.py @@ -0,0 +1,14 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + diff --git a/bot/api/routes/admin.py b/bot/api/routes/admin.py index 4a2224b..b6d58d8 100644 --- a/bot/api/routes/admin.py +++ b/bot/api/routes/admin.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from fastapi import APIRouter, Depends, HTTPException from api.dependencies import get_bot from api.schemas import AdminStats, AdminNodeStatus, AdminConfig, AdminConfigUpdate diff --git a/bot/api/routes/bot.py b/bot/api/routes/bot.py index e1d1dc6..6b0e7d8 100644 --- a/bot/api/routes/bot.py +++ b/bot/api/routes/bot.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from fastapi import APIRouter, Depends from api.dependencies import get_bot from api.schemas import BotInfo, BotStatus diff --git a/bot/api/routes/guilds.py b/bot/api/routes/guilds.py index 55493c5..735a86f 100644 --- a/bot/api/routes/guilds.py +++ b/bot/api/routes/guilds.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from fastapi import APIRouter, Depends, HTTPException, Request from api.dependencies import get_bot, limiter from api.db_manager import db_manager diff --git a/bot/api/schemas.py b/bot/api/schemas.py index 7da63d9..d128ef6 100644 --- a/bot/api/schemas.py +++ b/bot/api/schemas.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from pydantic import BaseModel, HttpUrl from typing import Dict, List, Optional diff --git a/bot/api/server.py b/bot/api/server.py index 807eea3..8208799 100644 --- a/bot/api/server.py +++ b/bot/api/server.py @@ -1,6 +1,21 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from fastapi import FastAPI, Depends, Request from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager +import os import time import json import logging @@ -66,19 +81,36 @@ def create_app() -> FastAPI: app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) app.add_middleware(SlowAPIMiddleware) + # Build allowed origins from env + hardcoded fallbacks + _extra_origins = [ + o.strip() + for o in os.getenv("CORS_ORIGINS", "").split(",") + if o.strip() + ] + _allowed_origins = list(dict.fromkeys([ + "http://localhost:3000", + "https://localhost:3000", + "https://your-vercel-url-here.vercel.app", + *_extra_origins, + ])) + # Enable CORS for Next.js dashboard app.add_middleware( CORSMiddleware, - allow_origins=[ - "http://localhost:3000", - "https://localhost:3000", - # Add production domain here later - ], + allow_origins=_allowed_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) + # Middleware: add ngrok-skip-browser-warning header to every response + # (prevents ngrok's interstitial warning page from breaking CORS preflight) + @app.middleware("http") + async def add_ngrok_header(request: Request, call_next): + response = await call_next(request) + response.headers["ngrok-skip-browser-warning"] = "true" + return response + # Register Routers app.include_router(bot.router, prefix="/api/v1/bot", tags=["Bot"]) app.include_router(guilds.router, prefix="/api/v1/guilds", tags=["Guilds"]) diff --git a/bot/cogs/__init__.py b/bot/cogs/__init__.py index 1fe896b..c58e30f 100644 --- a/bot/cogs/__init__.py +++ b/bot/cogs/__init__.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from __future__ import annotations from core import zyrox from colorama import Fore, Style, init diff --git a/bot/cogs/antinuke/antiIntegration.py b/bot/cogs/antinuke/antiIntegration.py index b42971e..09fbc64 100644 --- a/bot/cogs/antinuke/antiIntegration.py +++ b/bot/cogs/antinuke/antiIntegration.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/anti_member_update.py b/bot/cogs/antinuke/anti_member_update.py index e710b2f..0d97c7c 100644 --- a/bot/cogs/antinuke/anti_member_update.py +++ b/bot/cogs/antinuke/anti_member_update.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiban.py b/bot/cogs/antinuke/antiban.py index da72b6c..6898197 100644 --- a/bot/cogs/antinuke/antiban.py +++ b/bot/cogs/antinuke/antiban.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antibotadd.py b/bot/cogs/antinuke/antibotadd.py index 21f0658..338e9a7 100644 --- a/bot/cogs/antinuke/antibotadd.py +++ b/bot/cogs/antinuke/antibotadd.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antichcr.py b/bot/cogs/antinuke/antichcr.py index 4353373..9ea0b30 100644 --- a/bot/cogs/antinuke/antichcr.py +++ b/bot/cogs/antinuke/antichcr.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antichdl.py b/bot/cogs/antinuke/antichdl.py index acbdca8..9a28796 100644 --- a/bot/cogs/antinuke/antichdl.py +++ b/bot/cogs/antinuke/antichdl.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antichup.py b/bot/cogs/antinuke/antichup.py index 944b54d..2497838 100644 --- a/bot/cogs/antinuke/antichup.py +++ b/bot/cogs/antinuke/antichup.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antieveryone.py b/bot/cogs/antinuke/antieveryone.py index 1deaf71..d50dd9c 100644 --- a/bot/cogs/antinuke/antieveryone.py +++ b/bot/cogs/antinuke/antieveryone.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiguild.py b/bot/cogs/antinuke/antiguild.py index a806c35..c408286 100644 --- a/bot/cogs/antinuke/antiguild.py +++ b/bot/cogs/antinuke/antiguild.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antikick.py b/bot/cogs/antinuke/antikick.py index 4405d36..8722b2d 100644 --- a/bot/cogs/antinuke/antikick.py +++ b/bot/cogs/antinuke/antikick.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiprune.py b/bot/cogs/antinuke/antiprune.py index ff15eac..f0105a3 100644 --- a/bot/cogs/antinuke/antiprune.py +++ b/bot/cogs/antinuke/antiprune.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antirlcr.py b/bot/cogs/antinuke/antirlcr.py index d0cf6b4..eab7311 100644 --- a/bot/cogs/antinuke/antirlcr.py +++ b/bot/cogs/antinuke/antirlcr.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antirldl.py b/bot/cogs/antinuke/antirldl.py index 56a7120..a005c5f 100644 --- a/bot/cogs/antinuke/antirldl.py +++ b/bot/cogs/antinuke/antirldl.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antirlup.py b/bot/cogs/antinuke/antirlup.py index b9dfc46..5a77804 100644 --- a/bot/cogs/antinuke/antirlup.py +++ b/bot/cogs/antinuke/antirlup.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiwebhook.py b/bot/cogs/antinuke/antiwebhook.py index e3c86f3..24c653b 100644 --- a/bot/cogs/antinuke/antiwebhook.py +++ b/bot/cogs/antinuke/antiwebhook.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiwebhookcr.py b/bot/cogs/antinuke/antiwebhookcr.py index bfbfb2c..bc43032 100644 --- a/bot/cogs/antinuke/antiwebhookcr.py +++ b/bot/cogs/antinuke/antiwebhookcr.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/antinuke/antiwebhookdl.py b/bot/cogs/antinuke/antiwebhookdl.py index 6e8b737..efd4d90 100644 --- a/bot/cogs/antinuke/antiwebhookdl.py +++ b/bot/cogs/antinuke/antiwebhookdl.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/automod/anti_emoji_spam.py b/bot/cogs/automod/anti_emoji_spam.py index eca3d0d..574f7b3 100644 --- a/bot/cogs/automod/anti_emoji_spam.py +++ b/bot/cogs/automod/anti_emoji_spam.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/automod/anti_invites.py b/bot/cogs/automod/anti_invites.py index 95e2795..7898bba 100644 --- a/bot/cogs/automod/anti_invites.py +++ b/bot/cogs/automod/anti_invites.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/automod/anti_mass_mention.py b/bot/cogs/automod/anti_mass_mention.py index f87fb41..54864ec 100644 --- a/bot/cogs/automod/anti_mass_mention.py +++ b/bot/cogs/automod/anti_mass_mention.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/automod/anticaps.py b/bot/cogs/automod/anticaps.py index 5a31ea1..231ed96 100644 --- a/bot/cogs/automod/anticaps.py +++ b/bot/cogs/automod/anticaps.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/automod/antilink.py b/bot/cogs/automod/antilink.py index c656f4d..de607ab 100644 --- a/bot/cogs/automod/antilink.py +++ b/bot/cogs/automod/antilink.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/automod/antispam.py b/bot/cogs/automod/antispam.py index 1e3688b..812f02b 100644 --- a/bot/cogs/automod/antispam.py +++ b/bot/cogs/automod/antispam.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import TICK from discord.ext import commands diff --git a/bot/cogs/commands/Birthday.py b/bot/cogs/commands/Birthday.py index 2493173..70c925e 100644 --- a/bot/cogs/commands/Birthday.py +++ b/bot/cogs/commands/Birthday.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands, tasks import json diff --git a/bot/cogs/commands/Embed.py b/bot/cogs/commands/Embed.py index 46b11b4..4d8e982 100644 --- a/bot/cogs/commands/Embed.py +++ b/bot/cogs/commands/Embed.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import os import discord from utils.emoji import CROSS, TICK diff --git a/bot/cogs/commands/Games.py b/bot/cogs/commands/Games.py index 70ee812..12043d3 100644 --- a/bot/cogs/commands/Games.py +++ b/bot/cogs/commands/Games.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import os diff --git a/bot/cogs/commands/Invc.py b/bot/cogs/commands/Invc.py index 7843d1b..6edda7c 100644 --- a/bot/cogs/commands/Invc.py +++ b/bot/cogs/commands/Invc.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import aiosqlite diff --git a/bot/cogs/commands/Media.py b/bot/cogs/commands/Media.py index 5daffff..694c579 100644 --- a/bot/cogs/commands/Media.py +++ b/bot/cogs/commands/Media.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord import aiosqlite from discord.ext import commands diff --git a/bot/cogs/commands/afk.py b/bot/cogs/commands/afk.py index d8b0392..e697ec9 100644 --- a/bot/cogs/commands/afk.py +++ b/bot/cogs/commands/afk.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from discord.ui import LayoutView, TextDisplay, Separator, Container, Button, ActionRow diff --git a/bot/cogs/commands/ai.py b/bot/cogs/commands/ai.py index 9832e2e..20a6459 100644 --- a/bot/cogs/commands/ai.py +++ b/bot/cogs/commands/ai.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import os import discord import aiosqlite diff --git a/bot/cogs/commands/anti_unwl.py b/bot/cogs/commands/anti_unwl.py index 124413a..78b9629 100644 --- a/bot/cogs/commands/anti_unwl.py +++ b/bot/cogs/commands/anti_unwl.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, MANAGER, REDDOT, TICK from discord.ext import commands diff --git a/bot/cogs/commands/anti_wl.py b/bot/cogs/commands/anti_wl.py index ee74d2a..8d4be7b 100644 --- a/bot/cogs/commands/anti_wl.py +++ b/bot/cogs/commands/anti_wl.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import ARROWRED, CROSS, DISABLE, ENABLE, MANAGER, TICK from discord.ext import commands diff --git a/bot/cogs/commands/antinuke.py b/bot/cogs/commands/antinuke.py index be1e372..52f0cbc 100644 --- a/bot/cogs/commands/antinuke.py +++ b/bot/cogs/commands/antinuke.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, EMOTE, TICK, ZSAFE, ZSETTINGS from discord.ext import commands diff --git a/bot/cogs/commands/automod.py b/bot/cogs/commands/automod.py index 1533667..035c5e9 100644 --- a/bot/cogs/commands/automod.py +++ b/bot/cogs/commands/automod.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, DISABLE, ENABLE, TICK, TICK_ALT from discord.ext import commands diff --git a/bot/cogs/commands/autoreact.py b/bot/cogs/commands/autoreact.py index 49291cb..ff32e9e 100644 --- a/bot/cogs/commands/autoreact.py +++ b/bot/cogs/commands/autoreact.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, ICONS_WARNING, TICK from discord.ext import commands diff --git a/bot/cogs/commands/autoresponder.py b/bot/cogs/commands/autoresponder.py index de1b9d7..4c64b72 100644 --- a/bot/cogs/commands/autoresponder.py +++ b/bot/cogs/commands/autoresponder.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK from discord.ext import commands diff --git a/bot/cogs/commands/autorole.py b/bot/cogs/commands/autorole.py index 36d5307..9a30023 100644 --- a/bot/cogs/commands/autorole.py +++ b/bot/cogs/commands/autorole.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from __future__ import annotations import discord from utils.emoji import CROSS, ICONS_WARNING, TICK diff --git a/bot/cogs/commands/blackjack.py b/bot/cogs/commands/blackjack.py index f30a6bf..293232f 100644 --- a/bot/cogs/commands/blackjack.py +++ b/bot/cogs/commands/blackjack.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import os diff --git a/bot/cogs/commands/blacklist.py b/bot/cogs/commands/blacklist.py index 5503ac2..9cc328f 100644 --- a/bot/cogs/commands/blacklist.py +++ b/bot/cogs/commands/blacklist.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK from discord.ext import commands diff --git a/bot/cogs/commands/block.py b/bot/cogs/commands/block.py index 9637ac7..e77a886 100644 --- a/bot/cogs/commands/block.py +++ b/bot/cogs/commands/block.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK from discord.ext import commands diff --git a/bot/cogs/commands/booster.py b/bot/cogs/commands/booster.py index a2ee493..3da9cf0 100644 --- a/bot/cogs/commands/booster.py +++ b/bot/cogs/commands/booster.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from __future__ import annotations import discord from utils.emoji import CROSS, NITRO_BOOST, TICK, TIMER diff --git a/bot/cogs/commands/calc.py b/bot/cogs/commands/calc.py index 5709cee..9f2f87a 100644 --- a/bot/cogs/commands/calc.py +++ b/bot/cogs/commands/calc.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from discord.ext import commands from discord.ui import View, Button, button import discord diff --git a/bot/cogs/commands/counting.py b/bot/cogs/commands/counting.py index 5e57cc8..32693d2 100644 --- a/bot/cogs/commands/counting.py +++ b/bot/cogs/commands/counting.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import ARROWRED, CROSS, NEXT_ALT1, REDRULESBOOK, RED_BUTTON, RED_PIN, STAR, TICK, ZBACK, ZPAUSE, ZPLAY, ZWARNING from discord.ext import commands diff --git a/bot/cogs/commands/customrole.py b/bot/cogs/commands/customrole.py index 3a6a0df..472703c 100644 --- a/bot/cogs/commands/customrole.py +++ b/bot/cogs/commands/customrole.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK, ZWARNING from discord import app_commands diff --git a/bot/cogs/commands/dms.py b/bot/cogs/commands/dms.py index ee995dd..ad0f7fd 100644 --- a/bot/cogs/commands/dms.py +++ b/bot/cogs/commands/dms.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ui import LayoutView, TextDisplay, Separator, Container, Button, ActionRow from discord.ext import commands diff --git a/bot/cogs/commands/emergency.py b/bot/cogs/commands/emergency.py index e109425..eb6961c 100644 --- a/bot/cogs/commands/emergency.py +++ b/bot/cogs/commands/emergency.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, CROSS_ALT, ML_CROSS, TICK, TICK_ALT, ZWARNING from discord.ui import LayoutView, TextDisplay, Separator, Container, Button, ActionRow diff --git a/bot/cogs/commands/encryption.py b/bot/cogs/commands/encryption.py index 53031a5..d9ff6e9 100644 --- a/bot/cogs/commands/encryption.py +++ b/bot/cogs/commands/encryption.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import base64 import binascii import codecs diff --git a/bot/cogs/commands/extra.py b/bot/cogs/commands/extra.py index bfc92b4..1d8cbf6 100644 --- a/bot/cogs/commands/extra.py +++ b/bot/cogs/commands/extra.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import os import discord from utils.emoji import BOOST, CODEBASE, CROSS, KING, TICK, UPTIME, ZWARNING diff --git a/bot/cogs/commands/extraown.py b/bot/cogs/commands/extraown.py index ea7bb5a..3fe2018 100644 --- a/bot/cogs/commands/extraown.py +++ b/bot/cogs/commands/extraown.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK, ZWARNING from discord.ext import commands diff --git a/bot/cogs/commands/fastgreet.py b/bot/cogs/commands/fastgreet.py index bb2669c..3f02871 100644 --- a/bot/cogs/commands/fastgreet.py +++ b/bot/cogs/commands/fastgreet.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands import sqlite3 diff --git a/bot/cogs/commands/filters.py b/bot/cogs/commands/filters.py index 4b10658..98a0f25 100644 --- a/bot/cogs/commands/filters.py +++ b/bot/cogs/commands/filters.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from typing import Union diff --git a/bot/cogs/commands/fun.py b/bot/cogs/commands/fun.py index 5d99bf2..50e7db7 100644 --- a/bot/cogs/commands/fun.py +++ b/bot/cogs/commands/fun.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from discord.ui import LayoutView, TextDisplay, Separator, MediaGallery diff --git a/bot/cogs/commands/general.py b/bot/cogs/commands/general.py index cff5d50..e8d82c2 100644 --- a/bot/cogs/commands/general.py +++ b/bot/cogs/commands/general.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import asyncio import discord from utils.emoji import CROSS, TICK, ZWARNING, ZYROXCONNECTION, ZYROXLINKS diff --git a/bot/cogs/commands/giveaway.py b/bot/cogs/commands/giveaway.py index 5e6c925..73ef504 100644 --- a/bot/cogs/commands/giveaway.py +++ b/bot/cogs/commands/giveaway.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from discord.ext import commands, tasks import datetime, pytz, time as t from discord.ui import Button, Select, View diff --git a/bot/cogs/commands/help.py b/bot/cogs/commands/help.py index f0a242b..a71b0eb 100644 --- a/bot/cogs/commands/help.py +++ b/bot/cogs/commands/help.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import ARROWRED, BOOST, CAST, GAMES, LEVEL_UP, LOADINGRED, LOCK, MESSAGE, MINECRAFT, MUSIC, NEW, PIN, SEED, STAR, SWORD, SYSTEM, THUNDER, TICKET, WIFI, ZAI, ZARROW, ZBAN, ZBOT, ZCIRCLE, ZCIRCLE_ALT1, ZCLOUD, ZCOUNTING, ZMODULE, ZPEOPLE, ZROCKET, ZSAFE, ZTADA, ZUNMUTE, ZWRENCH from discord.ext import commands diff --git a/bot/cogs/commands/ignore.py b/bot/cogs/commands/ignore.py index 1a93a8a..e21d7bd 100644 --- a/bot/cogs/commands/ignore.py +++ b/bot/cogs/commands/ignore.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + from __future__ import annotations import discord from utils.emoji import CROSS, TICK, ZWARNING diff --git a/bot/cogs/commands/image.py b/bot/cogs/commands/image.py index 6a5bf46..64fc066 100644 --- a/bot/cogs/commands/image.py +++ b/bot/cogs/commands/image.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from discord.ui import LayoutView, MediaGallery, TextDisplay diff --git a/bot/cogs/commands/imagine.py b/bot/cogs/commands/imagine.py index ea3bd0e..3e6c976 100644 --- a/bot/cogs/commands/imagine.py +++ b/bot/cogs/commands/imagine.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from discord import app_commands diff --git a/bot/cogs/commands/j2c.py b/bot/cogs/commands/j2c.py index 45b76c8..6a4c3f9 100644 --- a/bot/cogs/commands/j2c.py +++ b/bot/cogs/commands/j2c.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands from discord import ui, SelectOption diff --git a/bot/cogs/commands/jail.py b/bot/cogs/commands/jail.py index 151a896..013d996 100644 --- a/bot/cogs/commands/jail.py +++ b/bot/cogs/commands/jail.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from discord.ext import commands, tasks import sqlite3 diff --git a/bot/cogs/commands/joindm.py b/bot/cogs/commands/joindm.py index 8b115be..9961e3f 100644 --- a/bot/cogs/commands/joindm.py +++ b/bot/cogs/commands/joindm.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import BLOBPART from discord.ext import commands diff --git a/bot/cogs/commands/leveling.py b/bot/cogs/commands/leveling.py index ad97aab..7c662af 100644 --- a/bot/cogs/commands/leveling.py +++ b/bot/cogs/commands/leveling.py @@ -1,3 +1,17 @@ +# ╔══════════════════════════════════════════════════════════════════╗ +# ║ ║ +# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ +# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ +# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ ║ +# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/codexdev ║ +# ║ youtube ── https://youtube.com/@CodeXDevs ║ +# ║ github ── https://github.com/RayExo ║ +# ║ ║ +# ╚══════════════════════════════════════════════════════════════════╝ + import discord from utils.emoji import CROSS, TICK, ZWARNING from discord import app_commands diff --git a/bot/cogs/commands/leveling_original.py b/bot/cogs/commands/leveling_original.py index e068e77f5a25bb440ca91cf664be11926c447f30..f08d3594cd981c95763c06a5a04fdc5d10532a0a 100644 GIT binary patch literal 2600 zcmds%-D(p-6vxkXAn!2Piz?d0RxDC)ENKgZil&Hyk&^CiH?c`JZZ>J_h2+8uFDu3-}8D&P+abyQvnuk!ELi&zw2)|CpK0f*GBjj7~pYiT1fzSisM*`R5-X zGpy0s@#yU1=xk`)G$u2RKcr&HTwb3jnRLltSeB|8&J{mb5CpDGrOb%ah&F~>6{G~E ziy5MkaVn=VfqKaQ@`5OJ&7qu&N#^sK0Xj95FLSdp`MeqhNpIQQipwYGWBvSQR&KAX zno8scFU>|U=$X;*#H_bkrrHb}NzYV+UJwrgKg%>9En9QhUIxo=_Pi*DZFDlE8PiCT zZf~tz9uJhlu>M&BG`U<=P;VaM$D!^F5*#@ndNc$7FikdsNiq1-Xv+^bg3o*^2oz z#lAhRJ^&|%b&G!A&Qg{py^fSJGfHxY%reg%c`Li}PVQ2(BKxqa+Iwic4NKZ%3FJd= zb@~L%iQhJ{4_}Kh14>=mL_V=<@EC1d935YUb%(1>mHN{7K9!4eYZn=5;@VJcz^H?^ z&oi`4b>=IJu3m>L!mGiHs_>boE8&rAu~LRuwR`X+y#4WBt=l;*t3{nHTf7E{vF*7X zy-7B`5=NGAFyEh%Yp_IU>`B>1ZR=LGYDOI^ma6tRJ%P=X?dlEaIV~aUFNo|wJx2Nv< zU%oB3E`Q$lHLw$u=;;gP20C8JYq`a{3Xh&;RlCV)@pyOXx$h_MY|EZ`JzdX;^b4M; e-Go8E;~2ksMx8VFHR>)`7@M7oS@nd)y?+DOU}SLs delta 85 zcmZ1>a*0Fi|Gxr;N`?}K42FD$JO%{@D None: + """ + Blocking loop: opens an ngrok tunnel and keeps it alive. + Restarts automatically if the connection drops. + """ + try: + from pyngrok import ngrok, conf, exception as ngrok_exc + except ImportError: + print( + f"{_RED}◈ Tunnel: pyngrok is not installed.\n" + f" Run: pip install pyngrok{_RESET}" + ) + return + + # Set the authtoken (pyngrok persists it for future runs) + if NGROK_AUTHTOKEN: + conf.get_default().auth_token = NGROK_AUTHTOKEN + + while True: + tunnel = None + try: + options = {"addr": port, "proto": "http"} + if domain: + options["hostname"] = domain # use reserved static domain + + # NOTE: request_header_add is NOT supported via the pyngrok API. + # Instead the FastAPI middleware injects the ngrok-skip-browser-warning + # header on every response, which achieves the same result. + + tunnel = ngrok.connect(**options) + public_url = tunnel.public_url.replace("http://", "https://") + + print(f"{_GREEN}◈ Tunnel: API is live at {public_url}{_RESET}") + print(f"{_CYAN} ↳ set NEXT_PUBLIC_API_URL={public_url}/api/v1 in your dashboard .env{_RESET}") + + # Block until the tunnel process exits + ngrok.get_ngrok_process().proc.wait() + + except ngrok_exc.PyngrokNgrokHTTPError as e: + # Catches auth errors (401) and other ngrok HTTP-level errors + msg = str(e).lower() + if "401" in msg or "auth" in msg or "token" in msg: + print( + f"{_RED}◈ Tunnel: invalid NGROK_AUTHTOKEN.\n" + f" Get your token from https://dashboard.ngrok.com/get-started/your-authtoken{_RESET}" + ) + return # no point retrying with a bad token + print(f"{_RED}◈ Tunnel: ngrok HTTP error — {e}{_RESET}") + + except ngrok_exc.PyngrokNgrokError as e: + print(f"{_RED}◈ Tunnel: ngrok error — {e}{_RESET}") + + except Exception as e: + print(f"{_RED}◈ Tunnel: unexpected error — {e}{_RESET}") + + finally: + # Clean up before retrying + try: + if tunnel: + ngrok.disconnect(tunnel.public_url) + except Exception: + pass + try: + ngrok.kill() + except Exception: + pass + + print(f"{_YELLOW}◈ Tunnel: connection lost, restarting in 5 s…{_RESET}") + time.sleep(5) + + +def start_tunnel() -> None: + """ + Start the ngrok HTTPS tunnel in a background daemon thread. + Called from CodeX.py after keep_alive(). + """ + if not TUNNEL_ENABLED: + print(f"{_YELLOW}◈ Tunnel: disabled via TUNNEL_ENABLED=false{_RESET}") + return + + if not NGROK_AUTHTOKEN: + print( + f"{_YELLOW}◈ Tunnel: NGROK_AUTHTOKEN is not set — tunnel skipped.\n" + f" Get your token from https://dashboard.ngrok.com/get-started/your-authtoken{_RESET}" + ) + return + + if not NGROK_DOMAIN: + print( + f"{_YELLOW}◈ Tunnel: NGROK_DOMAIN is not set — a random URL will be used (changes each restart).\n" + f" Reserve a free static domain at https://dashboard.ngrok.com/domains{_RESET}" + ) + + print(f"{_CYAN}◈ Tunnel: starting ngrok tunnel on port {API_PORT}…{_RESET}") + t = threading.Thread(target=_run_ngrok, args=(API_PORT, NGROK_DOMAIN), daemon=True) + t.start() diff --git a/dashboard/.env.example b/dashboard/.env.example index 8771185..e6a2743 100644 --- a/dashboard/.env.example +++ b/dashboard/.env.example @@ -1,11 +1,11 @@ # API URL for the dashboard backend -NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1 +NEXT_PUBLIC_API_URL=https://xxxx-xxxx-xxxx.ngrok-free.app/api/v1 # API Key for authentication (if used) NEXT_PUBLIC_DASHBOARD_API_KEY=ZYROX_SECURE_API_KEY_12345_CHANGE_THIS_ASAP_BY_CODEX_DEVS # NextAuth Configuration -NEXTAUTH_URL=http://localhost:3000 +NEXTAUTH_URL=https://your-vercel-url-here-codex-devs.vercel.app/ NEXTAUTH_SECRET=zyrox_nextauth_default_secret_string_2026_change_me_BY_CODEX_DEVS # Discord OAuth configuration @@ -16,5 +16,5 @@ DISCORD_CLIENT_SECRET= NEXT_PUBLIC_ADMIN_IDS=870179991462236170 # Customizable Brand / Bot name shown across the dashboard -NEXT_PUBLIC_BRAND_NAME="Zyrox X" +NEXT_PUBLIC_BRAND_NAME="ZyroX" NEXT_PUBLIC_BRAND_NAME_WORD="ZX" \ No newline at end of file diff --git a/dashboard/README.md b/dashboard/README.md index c70d718..738d617 100644 --- a/dashboard/README.md +++ b/dashboard/README.md @@ -9,13 +9,19 @@ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ``` -**ZyroX Dashboard — Next.js Web Interface** - -[![Next.js](https://img.shields.io/badge/Next.js-14+-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)](https://nextjs.org) -[![TypeScript](https://img.shields.io/badge/TypeScript-5+-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://typescriptlang.org) -[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-3-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white)](https://tailwindcss.com) -[![License](https://img.shields.io/badge/License-MIT-red?style=for-the-badge)](LICENSE) -[![Support](https://img.shields.io/badge/Support-discord.gg/codexdev-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) +

ZyroX Dashboard — Next.js Web Interface

+ +

+ + + + +

+

+ + + +

@@ -23,45 +29,59 @@ ## ✦ Overview -This folder contains the ZyroX web dashboard built with `Next.js 14` (App Router), `TypeScript`, and `Tailwind CSS`. It connects to the bot's FastAPI backend to let server admins manage all bot settings through a modern UI. +This folder contains the ZyroX web dashboard built with `Next.js 14` (App Router), `TypeScript`, and `Tailwind CSS`. It connects to the bot's FastAPI backend via HTTPS (ngrok tunnel) and lets server admins manage all bot settings through a sleek, branded UI. ``` dashboard/ -├── app/ App Router pages & API routes -│ ├── api/ Next.js API routes (auth callbacks, etc.) -│ ├── dashboard/ Per-server settings pages -│ ├── docs/ Documentation page -│ ├── privacy/ Privacy policy page -│ └── terms/ Terms of service page +├── app/ App Router pages & API routes +│ ├── api/auth/ NextAuth OAuth callback +│ ├── dashboard/ Main dashboard area +│ │ ├── admin/ Admin-only panel +│ │ ├── guilds/ Server selection +│ │ └── guild/[guildId]/ Per-server settings pages +│ │ ├── antinuke/ +│ │ ├── automod/ +│ │ ├── leveling/ +│ │ ├── logging/ +│ │ ├── tickets/ +│ │ ├── welcome/ +│ │ └── …more +│ ├── docs/ Documentation page +│ ├── privacy/ Privacy policy +│ └── terms/ Terms of service ├── components/ -│ ├── dashboard/ Dashboard-specific UI components -│ └── ui/ Reusable base components -├── hooks/ Custom React hooks -├── lib/ API helpers, auth config, utilities -└── types/ TypeScript type definitions +│ ├── dashboard/ Feature-specific form components +│ └── ui/ Base UI components (button, card, input…) +├── hooks/ Custom React hooks +├── lib/ API client, auth config, utilities +└── types/ TypeScript type definitions ``` --- ## ✦ Features -- **Discord OAuth2 login** — secure sign-in with your Discord account -- **Per-server management** — configure antinuke, automod, leveling, and more per guild -- **Live bot stats** — view real-time data from the bot -- **Fully branded** — customisable name, logo, and colours via environment variables +- **Discord OAuth2 login** — secure sign-in, session managed by NextAuth +- **Per-server management** — antinuke, automod, leveling, logging, tickets, welcome, and more +- **Live bot stats** — real-time metrics pulled from the FastAPI backend +- **Admin panel** — owner-only configuration and announcements +- **Fully branded** — name, logo, and colours via environment variables +- **HTTPS ready** — works with the bot's ngrok static domain out of the box - **Vercel-ready** — deploys in minutes with zero config changes --- -## ✦ Setup +## ✦ Prerequisites -### Prerequisites - -| Requirement | Version | +| Requirement | Notes | |---|---| -| Node.js | 18 or higher | -| ZyroX bot running | with `API_ENABLED=true` | -| Discord OAuth app | — | +| Node.js 18+ | — | +| ZyroX bot running | with `API_ENABLED=true` and `TUNNEL_ENABLED=true` | +| Discord OAuth app | from [Discord Developer Portal](https://discord.com/developers/applications) | + +--- + +## ✦ Setup ### 1 — Install dependencies @@ -71,25 +91,26 @@ npm install ### 2 — Configure environment -```bash -cp .env.example .env.local -``` - -Edit `.env.local`: +Create a `.env.local` file in this folder: ```env -NEXT_PUBLIC_API_URL = http://localhost:8000/api/v1 +# ── Bot API ─────────────────────────────────────────────────────── +# Use the ngrok static domain from the bot's tunnel +NEXT_PUBLIC_API_URL = https://xxxx-xxxx-xxxx.ngrok-free.app/api/v1 NEXT_PUBLIC_DASHBOARD_API_KEY = your_shared_api_key # must match bot's DASHBOARD_API_KEY -NEXTAUTH_URL = http://localhost:3000 -NEXTAUTH_SECRET = a_long_random_string +# ── NextAuth ────────────────────────────────────────────────────── +NEXTAUTH_URL = http://localhost:3000 +NEXTAUTH_SECRET = a_long_random_string # generate: openssl rand -base64 32 -DISCORD_CLIENT_ID = your_discord_oauth_client_id -DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret +# ── Discord OAuth ───────────────────────────────────────────────── +DISCORD_CLIENT_ID = your_discord_oauth_client_id +DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret -NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id -NEXT_PUBLIC_BRAND_NAME = "ZyroX" -NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" +# ── Branding ────────────────────────────────────────────────────── +NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id +NEXT_PUBLIC_BRAND_NAME = "ZyroX" +NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` ### 3 — Run locally @@ -106,45 +127,42 @@ Open [http://localhost:3000](http://localhost:3000) | Variable | Description | |---|---| -| `NEXT_PUBLIC_API_URL` | Full URL to the bot's FastAPI backend | -| `NEXT_PUBLIC_DASHBOARD_API_KEY` | Must match `DASHBOARD_API_KEY` in the bot `.env` | -| `NEXTAUTH_URL` | Your dashboard's public URL | +| `NEXT_PUBLIC_API_URL` | Full URL to the bot's FastAPI backend — use the ngrok static domain | +| `NEXT_PUBLIC_DASHBOARD_API_KEY` | Must exactly match `DASHBOARD_API_KEY` in the bot `.env` | +| `NEXTAUTH_URL` | Your dashboard's public URL (Vercel domain in production) | | `NEXTAUTH_SECRET` | Random secret for NextAuth session signing | | `DISCORD_CLIENT_ID` | Discord OAuth2 client ID | | `DISCORD_CLIENT_SECRET` | Discord OAuth2 client secret | -| `NEXT_PUBLIC_ADMIN_IDS` | Comma-separated Discord user IDs with admin access | +| `NEXT_PUBLIC_ADMIN_IDS` | Comma-separated Discord user IDs with admin panel access | | `NEXT_PUBLIC_BRAND_NAME` | Bot name shown in the dashboard UI | -| `NEXT_PUBLIC_BRAND_NAME_WORD` | Short abbreviation shown in the dashboard | +| `NEXT_PUBLIC_BRAND_NAME_WORD` | Short abbreviation shown in the dashboard (e.g. `ZX`) | --- ## ✦ Deployment (Vercel) -Vercel is the recommended host — the project is pre-configured for it. +Vercel is the recommended host — the project is pre-configured for zero-config deployment. -**Step 1 — Upload to Vercel** +**Step 1 — Connect your repo** -Go to [vercel.com](https://vercel.com) → **Add New Project** → connect your GitHub repo and set the root directory to `dashboard/`. +Go to [vercel.com](https://vercel.com) → **Add New Project** → connect your GitHub repo → set root directory to `dashboard/` Vercel auto-detects Next.js — no build settings needed. **Step 2 — Add environment variables** -In your Vercel project → **Settings → Environment Variables**, add all keys from `.env.example`. +In **Settings → Environment Variables**, add all keys from the table above. -| Variable | Example Value | +| Variable | Production Value | |---|---| -| `NEXT_PUBLIC_API_URL` | `https://your-bot.render.com/api/v1` | -| `NEXT_PUBLIC_DASHBOARD_API_KEY` | same value as bot's `DASHBOARD_API_KEY` | +| `NEXT_PUBLIC_API_URL` | `https://xxxx.ngrok-free.app/api/v1` | | `NEXTAUTH_URL` | `https://your-app.vercel.app` | -| `NEXTAUTH_SECRET` | [generate one here](https://generate-secret.vercel.app/32) | +| `NEXTAUTH_SECRET` | [generate one](https://generate-secret.vercel.app/32) | | `DISCORD_CLIENT_ID` | from [Discord Developer Portal](https://discord.com/developers/applications) | -| `DISCORD_CLIENT_SECRET` | from Discord Developer Portal | -| `NEXT_PUBLIC_ADMIN_IDS` | your Discord user ID | -**Step 3 — Add redirect URI in Discord** +**Step 3 — Add the redirect URI in Discord** -Go to your app in the [Discord Developer Portal](https://discord.com/developers/applications) → **OAuth2 → Redirects** → add: +In your Discord app → **OAuth2 → Redirects** → add: ``` https://your-app.vercel.app/api/auth/callback/discord @@ -156,24 +174,49 @@ Hit **Deploy**. Vercel builds and publishes automatically. ✓ --- +## ✦ Connecting to the Bot API + +The dashboard talks to the bot's FastAPI backend. The URL comes from `NEXT_PUBLIC_API_URL`. + +- **Local dev** — set to `http://localhost:8000/api/v1` (bot running locally) +- **Production** — set to the bot's ngrok static domain: `https://xxxx.ngrok-free.app/api/v1` + +The bot prints the current tunnel URL every time it starts: +``` +◈ Tunnel: API is live at https://xxxx.ngrok-free.app + ↳ set NEXT_PUBLIC_API_URL=https://xxxx.ngrok-free.app/api/v1 +``` + +If you set `NGROK_DOMAIN` in the bot's `.env`, this URL will never change between restarts. + +--- + ## ✦ Troubleshooting | Problem | Fix | |---|---| | Auth error on login | Check Discord OAuth client ID/secret and redirect URI in Developer Portal | -| Dashboard can't load data | Confirm the bot is running with `API_ENABLED=true` and `NEXT_PUBLIC_API_URL` is correct | +| Dashboard can't load data | Confirm bot is running with `API_ENABLED=true` and `NEXT_PUBLIC_API_URL` is correct | +| CORS error in browser | Make sure your Vercel URL is allowed — add it to `CORS_ORIGINS` in the bot's `.env` | | `NEXTAUTH_SECRET` error | Make sure `NEXTAUTH_SECRET` is set and non-empty | -| API key mismatch | `NEXT_PUBLIC_DASHBOARD_API_KEY` must exactly match `DASHBOARD_API_KEY` in the bot | +| API key rejected (401) | `NEXT_PUBLIC_DASHBOARD_API_KEY` must exactly match `DASHBOARD_API_KEY` in the bot | +| ngrok warning page appears | The bot's FastAPI middleware already injects the skip-warning header automatically | ---
-Developed with ❤️ by **CodeX Devs** +## ✦ CodeX Devs -[![Discord](https://img.shields.io/badge/Join_Support_Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/codexdev) -[![Hosting](https://img.shields.io/badge/Bot_Hosting-NexioHost-FF6B6B?style=for-the-badge)](https://nexiohost.in) +*Built for protection. Designed for style.* -*ZyroX — Built for protection. Designed for style.* +

+ + + + +

+ +© 2026 CodeX Devs — MIT License
diff --git a/dashboard/app/api/auth/[...nextauth]/route.ts b/dashboard/app/api/auth/[...nextauth]/route.ts index 7b38c1b..bf90f3e 100644 --- a/dashboard/app/api/auth/[...nextauth]/route.ts +++ b/dashboard/app/api/auth/[...nextauth]/route.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import NextAuth from "next-auth"; import { authOptions } from "@/lib/auth"; diff --git a/dashboard/app/dashboard/admin/page.tsx b/dashboard/app/dashboard/admin/page.tsx index 7fc1fae..11475c0 100644 --- a/dashboard/app/dashboard/admin/page.tsx +++ b/dashboard/app/dashboard/admin/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { getServerSession } from "next-auth/next"; import { authOptions } from "@/lib/auth"; diff --git a/dashboard/app/dashboard/error.tsx b/dashboard/app/dashboard/error.tsx index a1e3223..0729b84 100644 --- a/dashboard/app/dashboard/error.tsx +++ b/dashboard/app/dashboard/error.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx b/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx index efbda07..17383d1 100644 --- a/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { ShieldAlert } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx b/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx index 09416de..9a63229 100644 --- a/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { ShieldCheck } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx b/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx index 1369dc1..2705ce5 100644 --- a/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx b/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx index 1181e7b..39d291d 100644 --- a/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { UserPlus } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx b/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx index 2563903..49f057f 100644 --- a/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Ghost } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx b/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx index b52d485..257383b 100644 --- a/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx b/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx index a8b3489..00d6a08 100644 --- a/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx b/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx index 9d9b9f2..6a0c958 100644 --- a/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Mic } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx b/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx index 18fe5bc..e7f84b2 100644 --- a/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/layout.tsx b/dashboard/app/dashboard/guild/[guildId]/layout.tsx index fdd5ae6..37a91e9 100644 --- a/dashboard/app/dashboard/guild/[guildId]/layout.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/layout.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import Image from "next/image"; import Link from "next/link"; diff --git a/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx b/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx index fa5a3e3..1c6cb81 100644 --- a/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx b/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx index ce08ded..4388237 100644 --- a/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { BarChart4 } from "lucide-react"; import { api } from "@/lib/api"; diff --git a/dashboard/app/dashboard/guild/[guildId]/loading.tsx b/dashboard/app/dashboard/guild/[guildId]/loading.tsx index 62eb7db..7ec1c8d 100644 --- a/dashboard/app/dashboard/guild/[guildId]/loading.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/loading.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; export default function GuildLoading() { diff --git a/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx b/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx index c65eb84..82f4c8c 100644 --- a/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { BellRing, diff --git a/dashboard/app/dashboard/guild/[guildId]/page.tsx b/dashboard/app/dashboard/guild/[guildId]/page.tsx index 8855128..de423d3 100644 --- a/dashboard/app/dashboard/guild/[guildId]/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Plus, diff --git a/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx b/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx index 161c204..60f9890 100644 --- a/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx b/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx index 95a7b65..8f3723e 100644 --- a/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Settings2 } from "lucide-react"; import { api } from "@/lib/api"; diff --git a/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx b/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx index f5d2fd9..cb83534 100644 --- a/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Ticket, ExternalLink } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx b/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx index 22cc433..dd69294 100644 --- a/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx b/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx index 5991911..a45888b 100644 --- a/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx b/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx index 72fd135..5e22899 100644 --- a/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx b/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx index 590ddcc..408843e 100644 --- a/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { SmilePlus } from "lucide-react"; import dynamic from "next/dynamic"; diff --git a/dashboard/app/dashboard/guilds/page.tsx b/dashboard/app/dashboard/guilds/page.tsx index 593316c..d9882bc 100644 --- a/dashboard/app/dashboard/guilds/page.tsx +++ b/dashboard/app/dashboard/guilds/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import Image from "next/image"; import Link from "next/link"; diff --git a/dashboard/app/dashboard/layout.tsx b/dashboard/app/dashboard/layout.tsx index e78dac5..a488b6d 100644 --- a/dashboard/app/dashboard/layout.tsx +++ b/dashboard/app/dashboard/layout.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect, useRef } from "react"; diff --git a/dashboard/app/dashboard/loading.tsx b/dashboard/app/dashboard/loading.tsx index 9405815..eca15f8 100644 --- a/dashboard/app/dashboard/loading.tsx +++ b/dashboard/app/dashboard/loading.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { RefreshCcw } from "lucide-react"; diff --git a/dashboard/app/dashboard/page.tsx b/dashboard/app/dashboard/page.tsx index 85c0856..a89cfea 100644 --- a/dashboard/app/dashboard/page.tsx +++ b/dashboard/app/dashboard/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Users, diff --git a/dashboard/app/docs/page.tsx b/dashboard/app/docs/page.tsx index 450c594..113db06 100644 --- a/dashboard/app/docs/page.tsx +++ b/dashboard/app/docs/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/app/layout.tsx b/dashboard/app/layout.tsx index 70267cb..5f40af5 100644 --- a/dashboard/app/layout.tsx +++ b/dashboard/app/layout.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import type { Metadata } from "next"; import { Inter, Outfit } from "next/font/google"; import "./globals.css"; diff --git a/dashboard/app/page.tsx b/dashboard/app/page.tsx index 47dcd2f..7a02906 100644 --- a/dashboard/app/page.tsx +++ b/dashboard/app/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React from "react"; diff --git a/dashboard/app/privacy/page.tsx b/dashboard/app/privacy/page.tsx index 059e32c..446694c 100644 --- a/dashboard/app/privacy/page.tsx +++ b/dashboard/app/privacy/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React from "react"; diff --git a/dashboard/app/terms/page.tsx b/dashboard/app/terms/page.tsx index b37ef87..e06b8e2 100644 --- a/dashboard/app/terms/page.tsx +++ b/dashboard/app/terms/page.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React from "react"; diff --git a/dashboard/components/auth-provider.tsx b/dashboard/components/auth-provider.tsx index bb80a62..46e73e1 100644 --- a/dashboard/components/auth-provider.tsx +++ b/dashboard/components/auth-provider.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import { SessionProvider } from "next-auth/react"; diff --git a/dashboard/components/dashboard/admin-content.tsx b/dashboard/components/dashboard/admin-content.tsx index d791284..5cb0b21 100644 --- a/dashboard/components/dashboard/admin-content.tsx +++ b/dashboard/components/dashboard/admin-content.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState, useEffect } from "react"; diff --git a/dashboard/components/dashboard/antinuke-form.tsx b/dashboard/components/dashboard/antinuke-form.tsx index 5f5eabe..286debd 100644 --- a/dashboard/components/dashboard/antinuke-form.tsx +++ b/dashboard/components/dashboard/antinuke-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/automod-form.tsx b/dashboard/components/dashboard/automod-form.tsx index ff73e9f..3cdf096 100644 --- a/dashboard/components/dashboard/automod-form.tsx +++ b/dashboard/components/dashboard/automod-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/autorole-form.tsx b/dashboard/components/dashboard/autorole-form.tsx index 95cd6be..12bc856 100644 --- a/dashboard/components/dashboard/autorole-form.tsx +++ b/dashboard/components/dashboard/autorole-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/customroles-form.tsx b/dashboard/components/dashboard/customroles-form.tsx index dca4fca..d630448 100644 --- a/dashboard/components/dashboard/customroles-form.tsx +++ b/dashboard/components/dashboard/customroles-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/form-elements.tsx b/dashboard/components/dashboard/form-elements.tsx index 7f32c89..5d6ea61 100644 --- a/dashboard/components/dashboard/form-elements.tsx +++ b/dashboard/components/dashboard/form-elements.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { Switch } from "@/components/ui/switch"; import { Select, SelectOption } from "@/components/ui/select"; diff --git a/dashboard/components/dashboard/j2c-form.tsx b/dashboard/components/dashboard/j2c-form.tsx index 37cf1ce..2e2db23 100644 --- a/dashboard/components/dashboard/j2c-form.tsx +++ b/dashboard/components/dashboard/j2c-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/leveling-form.tsx b/dashboard/components/dashboard/leveling-form.tsx index b1b08a5..3cadcf4 100644 --- a/dashboard/components/dashboard/leveling-form.tsx +++ b/dashboard/components/dashboard/leveling-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/logging-form.tsx b/dashboard/components/dashboard/logging-form.tsx index 2e82336..9aefe87 100644 --- a/dashboard/components/dashboard/logging-form.tsx +++ b/dashboard/components/dashboard/logging-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/metric-card.tsx b/dashboard/components/dashboard/metric-card.tsx index db3be6e..db7e2d0 100644 --- a/dashboard/components/dashboard/metric-card.tsx +++ b/dashboard/components/dashboard/metric-card.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { LucideIcon } from "lucide-react"; import { cn } from "@/lib/utils"; diff --git a/dashboard/components/dashboard/page-header.tsx b/dashboard/components/dashboard/page-header.tsx index 19788d3..f1f3ecc 100644 --- a/dashboard/components/dashboard/page-header.tsx +++ b/dashboard/components/dashboard/page-header.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import { cn } from "@/lib/utils"; diff --git a/dashboard/components/dashboard/reactionroles-form.tsx b/dashboard/components/dashboard/reactionroles-form.tsx index 363cca7..08f0851 100644 --- a/dashboard/components/dashboard/reactionroles-form.tsx +++ b/dashboard/components/dashboard/reactionroles-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/server-card.tsx b/dashboard/components/dashboard/server-card.tsx index 6870e45..80b0446 100644 --- a/dashboard/components/dashboard/server-card.tsx +++ b/dashboard/components/dashboard/server-card.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import React from "react"; import Image from "next/image"; import Link from "next/link"; diff --git a/dashboard/components/dashboard/settings-form.tsx b/dashboard/components/dashboard/settings-form.tsx index dfe91d1..67672e7 100644 --- a/dashboard/components/dashboard/settings-form.tsx +++ b/dashboard/components/dashboard/settings-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/tickets-form.tsx b/dashboard/components/dashboard/tickets-form.tsx index f7359e2..af5aa8d 100644 --- a/dashboard/components/dashboard/tickets-form.tsx +++ b/dashboard/components/dashboard/tickets-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/vanityrole-form.tsx b/dashboard/components/dashboard/vanityrole-form.tsx index e1abc42..c8a398f 100644 --- a/dashboard/components/dashboard/vanityrole-form.tsx +++ b/dashboard/components/dashboard/vanityrole-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/verification-form.tsx b/dashboard/components/dashboard/verification-form.tsx index 389340f..01f9bc5 100644 --- a/dashboard/components/dashboard/verification-form.tsx +++ b/dashboard/components/dashboard/verification-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/welcome-form.tsx b/dashboard/components/dashboard/welcome-form.tsx index 64fa276..0bebd38 100644 --- a/dashboard/components/dashboard/welcome-form.tsx +++ b/dashboard/components/dashboard/welcome-form.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/guild-tabs.tsx b/dashboard/components/guild-tabs.tsx index a5e2cfd..ac8610f 100644 --- a/dashboard/components/guild-tabs.tsx +++ b/dashboard/components/guild-tabs.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import * as React from "react"; diff --git a/dashboard/components/ui/button.tsx b/dashboard/components/ui/button.tsx index da5923c..8204774 100644 --- a/dashboard/components/ui/button.tsx +++ b/dashboard/components/ui/button.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { Slot } from "@radix-ui/react-slot" import { cva, type VariantProps } from "class-variance-authority" diff --git a/dashboard/components/ui/card.tsx b/dashboard/components/ui/card.tsx index 0fe80de..ae471d0 100644 --- a/dashboard/components/ui/card.tsx +++ b/dashboard/components/ui/card.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/dashboard/components/ui/input.tsx b/dashboard/components/ui/input.tsx index 384f902..5414f23 100644 --- a/dashboard/components/ui/input.tsx +++ b/dashboard/components/ui/input.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/dashboard/components/ui/label.tsx b/dashboard/components/ui/label.tsx index 9a6c3f3..e9d0889 100644 --- a/dashboard/components/ui/label.tsx +++ b/dashboard/components/ui/label.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/dashboard/components/ui/select.tsx b/dashboard/components/ui/select.tsx index 54f85e4..3c0f0dc 100644 --- a/dashboard/components/ui/select.tsx +++ b/dashboard/components/ui/select.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client" import * as React from "react" diff --git a/dashboard/components/ui/sonner.tsx b/dashboard/components/ui/sonner.tsx index d9ed5f9..4e1a395 100644 --- a/dashboard/components/ui/sonner.tsx +++ b/dashboard/components/ui/sonner.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import { Toaster as Sonner } from "sonner"; type ToasterProps = React.ComponentProps; diff --git a/dashboard/components/ui/switch.tsx b/dashboard/components/ui/switch.tsx index e4fb579..229c212 100644 --- a/dashboard/components/ui/switch.tsx +++ b/dashboard/components/ui/switch.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + "use client"; import * as React from "react" diff --git a/dashboard/components/ui/table.tsx b/dashboard/components/ui/table.tsx index 1f9bbcc..dca9097 100644 --- a/dashboard/components/ui/table.tsx +++ b/dashboard/components/ui/table.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/dashboard/components/ui/textarea.tsx b/dashboard/components/ui/textarea.tsx index a7b330f..a6250bb 100644 --- a/dashboard/components/ui/textarea.tsx +++ b/dashboard/components/ui/textarea.tsx @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/dashboard/hooks/use-auth.ts b/dashboard/hooks/use-auth.ts index 0b21300..b5cfead 100644 --- a/dashboard/hooks/use-auth.ts +++ b/dashboard/hooks/use-auth.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import { useState, useEffect } from "react"; export function useAuth() { diff --git a/dashboard/lib/api.ts b/dashboard/lib/api.ts index 701cab1..f277d81 100644 --- a/dashboard/lib/api.ts +++ b/dashboard/lib/api.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import { BotInfo, BotStatus, diff --git a/dashboard/lib/auth.ts b/dashboard/lib/auth.ts index 7618f44..c20837a 100644 --- a/dashboard/lib/auth.ts +++ b/dashboard/lib/auth.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import DiscordProvider from "next-auth/providers/discord"; import { AuthOptions } from "next-auth"; diff --git a/dashboard/lib/utils.ts b/dashboard/lib/utils.ts index 4afc15c..ea49c7d 100644 --- a/dashboard/lib/utils.ts +++ b/dashboard/lib/utils.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import { type ClassValue, clsx } from "clsx" import { twMerge } from "tailwind-merge" diff --git a/dashboard/tailwind.config.ts b/dashboard/tailwind.config.ts index 71d75c6..98bc330 100644 --- a/dashboard/tailwind.config.ts +++ b/dashboard/tailwind.config.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import type { Config } from "tailwindcss"; const config: Config = { diff --git a/dashboard/types/api.ts b/dashboard/types/api.ts index ec60e40..8c86825 100644 --- a/dashboard/types/api.ts +++ b/dashboard/types/api.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + export interface BotInfo { name: string; id: number | null; diff --git a/dashboard/types/index.ts b/dashboard/types/index.ts index 4e8041d..21436e1 100644 --- a/dashboard/types/index.ts +++ b/dashboard/types/index.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + export interface BotInfo { name: string; id: number | null; diff --git a/dashboard/types/next-auth.d.ts b/dashboard/types/next-auth.d.ts index 0727f83..0f3c6ac 100644 --- a/dashboard/types/next-auth.d.ts +++ b/dashboard/types/next-auth.d.ts @@ -1,3 +1,19 @@ +/** + * ╔══════════════════════════════════════════════════════════════════╗ + * ║ ║ + * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ + * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ + * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ ║ + * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ ║ + * ║ discord ── https://discord.gg/codexdev ║ + * ║ youtube ── https://youtube.com/@CodeXDevs ║ + * ║ github ── https://github.com/RayExo ║ + * ║ ║ + * ╚══════════════════════════════════════════════════════════════════╝ + */ + import NextAuth, { DefaultSession } from "next-auth"; declare module "next-auth" {