From b4110c3d6687c0565de26f92e62b7247f7d8ce9e Mon Sep 17 00:00:00 2001 From: TheOnlyMace <0815cracky@gmail.com> Date: Tue, 21 Jul 2026 17:11:38 +0200 Subject: [PATCH] Update project configuration files, and API routes accordingly. Add SQLite runtime file ignores to .gitignore for better file management. --- .github/workflows/ci.yml | 76 +++++ .gitignore | 4 + PROJEKT_ANALYSE.md | 30 +- PR_DESCRIPTION.md | 2 +- README.md | 47 ++- SECURITY_FIXES.md | 22 +- bot/.env.example | 11 +- bot/{CodeX.py => HexaHost.py} | 26 +- bot/LICENSE | 2 +- bot/README.md | 43 ++- bot/api/__init__.py | 13 +- bot/api/db_manager.py | 16 +- bot/api/dependencies.py | 25 +- bot/api/discord_auth.py | 11 +- bot/api/routes/__init__.py | 13 +- bot/api/routes/admin.py | 20 +- bot/api/routes/bot.py | 19 +- bot/api/routes/guilds.py | 104 +++--- bot/api/schemas.py | 13 +- bot/api/server.py | 17 +- bot/cogs/__init__.py | 321 ++++-------------- bot/cogs/antinuke/antiIntegration.py | 20 +- bot/cogs/antinuke/anti_member_update.py | 20 +- bot/cogs/antinuke/antiban.py | 16 +- bot/cogs/antinuke/antibotadd.py | 16 +- bot/cogs/antinuke/antichcr.py | 16 +- bot/cogs/antinuke/antichdl.py | 16 +- bot/cogs/antinuke/antichup.py | 16 +- bot/cogs/antinuke/antieveryone.py | 16 +- bot/cogs/antinuke/antiguild.py | 20 +- bot/cogs/antinuke/antikick.py | 20 +- bot/cogs/antinuke/antiprune.py | 16 +- bot/cogs/antinuke/antirlcr.py | 20 +- bot/cogs/antinuke/antirldl.py | 20 +- bot/cogs/antinuke/antirlup.py | 20 +- bot/cogs/antinuke/antiwebhook.py | 20 +- bot/cogs/antinuke/antiwebhookcr.py | 20 +- bot/cogs/antinuke/antiwebhookdl.py | 20 +- .../extra events (unused)/antiemocr.py | 3 +- .../extra events (unused)/antiemodl.py | 3 +- .../extra events (unused)/antiemoup.py | 3 +- .../extra events (unused)/antisticker.py | 3 +- .../extra events (unused)/antiunban.py | 3 +- bot/cogs/automod/anti_emoji_spam.py | 26 +- bot/cogs/automod/anti_invites.py | 26 +- bot/cogs/automod/anti_mass_mention.py | 26 +- bot/cogs/automod/anticaps.py | 26 +- bot/cogs/automod/antilink.py | 26 +- bot/cogs/automod/antispam.py | 26 +- bot/cogs/commands/Birthday.py | 34 +- bot/cogs/commands/Embed.py | 13 +- bot/cogs/commands/Games.py | 19 +- bot/cogs/commands/Invc.py | 16 +- bot/cogs/commands/Media.py | 36 +- bot/cogs/commands/afk.py | 16 +- bot/cogs/commands/ai.py | 22 +- bot/cogs/commands/anti_unwl.py | 16 +- bot/cogs/commands/anti_wl.py | 16 +- bot/cogs/commands/antinuke.py | 16 +- bot/cogs/commands/automod.py | 50 +-- bot/cogs/commands/autoreact.py | 16 +- bot/cogs/commands/autoresponder.py | 16 +- bot/cogs/commands/autorole.py | 16 +- bot/cogs/commands/blackjack.py | 13 +- bot/cogs/commands/blacklist.py | 16 +- bot/cogs/commands/block.py | 28 +- bot/cogs/commands/booster.py | 22 +- bot/cogs/commands/calc.py | 13 +- bot/cogs/commands/counting.py | 16 +- bot/cogs/commands/customrole.py | 20 +- bot/cogs/commands/dms.py | 13 +- bot/cogs/commands/emergency.py | 24 +- bot/cogs/commands/encryption.py | 13 +- bot/cogs/commands/extra.py | 18 +- bot/cogs/commands/extraown.py | 16 +- bot/cogs/commands/fastgreet.py | 13 +- bot/cogs/commands/filters.py | 13 +- bot/cogs/commands/fun.py | 13 +- bot/cogs/commands/general.py | 21 +- bot/cogs/commands/giveaway.py | 13 +- bot/cogs/commands/help.py | 24 +- bot/cogs/commands/help_backup.txt | 8 +- bot/cogs/commands/ignore.py | 16 +- bot/cogs/commands/image.py | 13 +- bot/cogs/commands/imagine.py | 13 +- bot/cogs/commands/j2c.py | 13 +- bot/cogs/commands/jail.py | 16 +- bot/cogs/commands/joindm.py | 18 +- bot/cogs/commands/leveling.py | 64 ++-- bot/cogs/commands/leveling_original.py | Bin 2600 -> 0 bytes bot/cogs/commands/logging.py | 16 +- bot/cogs/commands/map.py | 15 +- bot/cogs/commands/messages.py | 20 +- bot/cogs/commands/minecraft.py | 16 +- bot/cogs/commands/msgpack.py | 20 +- bot/cogs/commands/music.py | 31 +- bot/cogs/commands/nightmode.py | 13 +- bot/cogs/commands/nitro.py | 15 +- bot/cogs/commands/notify.py | 16 +- bot/cogs/commands/np.py | 30 +- bot/cogs/commands/owner.py | 18 +- bot/cogs/commands/owner2.py | 13 +- bot/cogs/commands/qr.py | 13 +- bot/cogs/commands/reactionroles.py | 13 +- bot/cogs/commands/slots.py | 13 +- bot/cogs/commands/stats.py | 32 +- bot/cogs/commands/status.py | 13 +- bot/cogs/commands/steal.py | 13 +- bot/cogs/commands/stickymessage.py | 42 +-- bot/cogs/commands/ticket.py | 16 +- bot/cogs/commands/timer.py | 13 +- bot/cogs/commands/tracking.py | 18 +- bot/cogs/commands/translate.py | 13 +- bot/cogs/commands/vanityroles.py | 16 +- bot/cogs/commands/verification.py | 16 +- bot/cogs/commands/voice.py | 13 +- bot/cogs/commands/welcome.py | 40 +-- bot/cogs/commands/youtube.py | 13 +- bot/cogs/events/Errors.py | 17 +- bot/cogs/events/ai.py | 13 +- bot/cogs/events/auto.py | 21 +- bot/cogs/events/autoblacklist.py | 28 +- bot/cogs/events/autoreact.py | 16 +- bot/cogs/events/autorole.py | 20 +- bot/cogs/events/greet2.py | 16 +- bot/cogs/events/mention.py | 22 +- bot/cogs/events/mentionold.txt | 6 +- bot/cogs/events/on_guild.py | 29 +- bot/cogs/events/react.py | 13 +- bot/cogs/events/stickymessage.py | 26 +- bot/cogs/{zyrox => hexahost}/ai.py | 13 +- bot/cogs/{zyrox => hexahost}/antinuke.py | 13 +- bot/cogs/{zyrox => hexahost}/automod.py | 13 +- bot/cogs/{zyrox => hexahost}/birth.py | 13 +- bot/cogs/{zyrox => hexahost}/booster.py | 13 +- bot/cogs/{zyrox => hexahost}/counting.py | 13 +- bot/cogs/{zyrox => hexahost}/encryption.py | 13 +- bot/cogs/{zyrox => hexahost}/extra.py | 13 +- bot/cogs/{zyrox => hexahost}/fun.py | 13 +- bot/cogs/{zyrox => hexahost}/games.py | 13 +- bot/cogs/{zyrox => hexahost}/general.py | 13 +- bot/cogs/{zyrox => hexahost}/giveaway.py | 13 +- bot/cogs/{zyrox => hexahost}/ignore.py | 13 +- bot/cogs/{zyrox => hexahost}/inviteTracker.py | 13 +- bot/cogs/{zyrox => hexahost}/j2c.py | 13 +- bot/cogs/{zyrox => hexahost}/joindm.py | 13 +- bot/cogs/{zyrox => hexahost}/leveling.py | 13 +- bot/cogs/{zyrox => hexahost}/logging.py | 13 +- bot/cogs/{zyrox => hexahost}/mc.py | 13 +- bot/cogs/{zyrox => hexahost}/moderation.py | 13 +- bot/cogs/{zyrox => hexahost}/music.py | 13 +- bot/cogs/{zyrox => hexahost}/server.py | 13 +- bot/cogs/{zyrox => hexahost}/sticky.py | 13 +- bot/cogs/{zyrox => hexahost}/ticket.py | 13 +- bot/cogs/{zyrox => hexahost}/vanity.py | 13 +- bot/cogs/{zyrox => hexahost}/verify.py | 13 +- bot/cogs/{zyrox => hexahost}/voice.py | 13 +- bot/cogs/{zyrox => hexahost}/welcome.py | 13 +- bot/cogs/moderation/ban.py | 13 +- bot/cogs/moderation/hide.py | 13 +- bot/cogs/moderation/kick.py | 13 +- bot/cogs/moderation/lock.py | 13 +- bot/cogs/moderation/message.py | 13 +- bot/cogs/moderation/moderation.py | 15 +- bot/cogs/moderation/role.py | 13 +- bot/cogs/moderation/snipe.py | 13 +- bot/cogs/moderation/timeout.py | 13 +- bot/cogs/moderation/topcheck.py | 16 +- bot/cogs/moderation/unban.py | 13 +- bot/cogs/moderation/unhide.py | 13 +- bot/cogs/moderation/unlock.py | 13 +- bot/cogs/moderation/unmute.py | 13 +- bot/cogs/moderation/warn.py | 16 +- bot/config.yml | 4 +- bot/core/Cog.py | 13 +- bot/core/Context.py | 13 +- bot/core/__init__.py | 15 +- bot/core/{zyrox.py => hexahost.py} | 24 +- bot/db/_db.py | 18 +- bot/games/__init__.py | 13 +- bot/games/battleship.py | 13 +- bot/games/button_games/__init__.py | 13 +- bot/games/button_games/battleship_buttons.py | 13 +- bot/games/button_games/chess_buttons.py | 13 +- .../button_games/connect_four_buttons.py | 13 +- .../button_games/country_guess_buttons.py | 13 +- bot/games/button_games/lights_out.py | 13 +- bot/games/button_games/memory_game.py | 13 +- bot/games/button_games/number_slider.py | 13 +- .../button_games/reaction_test_buttons.py | 13 +- bot/games/button_games/rps_buttons.py | 13 +- bot/games/button_games/tictactoe_buttons.py | 13 +- bot/games/button_games/twenty_48_buttons.py | 13 +- bot/games/button_games/wordle_buttons.py | 13 +- bot/games/chess_game.py | 13 +- bot/games/connect_four.py | 13 +- bot/games/country_guess.py | 13 +- bot/games/reaction_test.py | 13 +- bot/games/rps.py | 13 +- bot/games/tictactoe.py | 13 +- bot/games/twenty_48.py | 13 +- bot/games/typeracer.py | 13 +- bot/games/utils.py | 13 +- bot/games/wordle.py | 13 +- bot/lang/lang.en.json | 2 +- bot/requirements.txt | 92 ++--- bot/utils/Tools.py | 33 +- bot/utils/__init__.py | 13 +- bot/utils/ai_utils.py | 13 +- bot/utils/config.py | 20 +- bot/utils/config_loader.py | 13 +- bot/utils/cv2.py | 13 +- bot/utils/db_paths.py | 56 +++ bot/utils/emoji.py | 33 +- bot/utils/help.py | 13 +- bot/utils/paginator.py | 13 +- bot/utils/paginators.py | 13 +- bot/utils/safe_parse.py | 11 +- bot/utils/sync_emojis.py | 13 +- bot/utils/tunnel.py | 23 +- dashboard/.env.example | 4 +- dashboard/LICENSE | 2 +- dashboard/README.md | 8 +- dashboard/app/api/auth/[...nextauth]/route.ts | 14 +- dashboard/app/dashboard/admin/page.tsx | 14 +- dashboard/app/dashboard/error.tsx | 14 +- .../guild/[guildId]/antinuke/page.tsx | 14 +- .../guild/[guildId]/automod/page.tsx | 14 +- .../guild/[guildId]/autoreact/page.tsx | 14 +- .../guild/[guildId]/autorole/page.tsx | 14 +- .../guild/[guildId]/customroles/page.tsx | 14 +- .../guild/[guildId]/invcrole/page.tsx | 14 +- .../guild/[guildId]/invites/page.tsx | 14 +- .../dashboard/guild/[guildId]/j2c/page.tsx | 14 +- .../dashboard/guild/[guildId]/joindm/page.tsx | 14 +- .../app/dashboard/guild/[guildId]/layout.tsx | 14 +- .../[guildId]/leveling/leaderboard/page.tsx | 14 +- .../guild/[guildId]/leveling/page.tsx | 14 +- .../app/dashboard/guild/[guildId]/loading.tsx | 14 +- .../guild/[guildId]/logging/page.tsx | 14 +- .../app/dashboard/guild/[guildId]/page.tsx | 14 +- .../guild/[guildId]/reactionroles/page.tsx | 14 +- .../guild/[guildId]/settings/page.tsx | 14 +- .../guild/[guildId]/tickets/page.tsx | 14 +- .../guild/[guildId]/tracking/page.tsx | 14 +- .../guild/[guildId]/vanityroles/page.tsx | 14 +- .../guild/[guildId]/verification/page.tsx | 14 +- .../guild/[guildId]/welcome/page.tsx | 14 +- dashboard/app/dashboard/guilds/page.tsx | 14 +- dashboard/app/dashboard/layout.tsx | 16 +- dashboard/app/dashboard/loading.tsx | 14 +- dashboard/app/dashboard/page.tsx | 20 +- dashboard/app/docs/page.tsx | 22 +- dashboard/app/layout.tsx | 16 +- dashboard/app/page.tsx | 26 +- dashboard/app/privacy/page.tsx | 18 +- dashboard/app/terms/page.tsx | 22 +- dashboard/components/auth-provider.tsx | 14 +- .../components/dashboard/admin-content.tsx | 16 +- .../components/dashboard/antinuke-form.tsx | 16 +- .../components/dashboard/automod-form.tsx | 14 +- .../components/dashboard/autorole-form.tsx | 16 +- .../components/dashboard/customroles-form.tsx | 16 +- .../components/dashboard/form-elements.tsx | 14 +- dashboard/components/dashboard/j2c-form.tsx | 14 +- .../components/dashboard/leveling-form.tsx | 14 +- .../components/dashboard/logging-form.tsx | 14 +- .../components/dashboard/metric-card.tsx | 14 +- .../components/dashboard/page-header.tsx | 14 +- .../dashboard/reactionroles-form.tsx | 14 +- .../components/dashboard/server-card.tsx | 14 +- .../components/dashboard/settings-form.tsx | 14 +- .../components/dashboard/tickets-form.tsx | 14 +- .../components/dashboard/vanityrole-form.tsx | 14 +- .../dashboard/verification-form.tsx | 16 +- .../components/dashboard/welcome-form.tsx | 14 +- dashboard/components/guild-tabs.tsx | 14 +- dashboard/components/ui/button.tsx | 14 +- dashboard/components/ui/card.tsx | 14 +- dashboard/components/ui/input.tsx | 14 +- dashboard/components/ui/label.tsx | 14 +- dashboard/components/ui/select.tsx | 14 +- dashboard/components/ui/sonner.tsx | 14 +- dashboard/components/ui/switch.tsx | 14 +- dashboard/components/ui/table.tsx | 14 +- dashboard/components/ui/textarea.tsx | 14 +- dashboard/hooks/use-auth.ts | 14 +- dashboard/lib/api.ts | 14 +- dashboard/lib/auth.ts | 14 +- dashboard/lib/utils.ts | 14 +- dashboard/package.json | 2 +- dashboard/tailwind.config.ts | 14 +- dashboard/types/api.ts | 14 +- dashboard/types/index.ts | 14 +- dashboard/types/next-auth.d.ts | 14 +- scripts/migrate_db_paths.py | 70 ++++ scripts/update_headers.py | 103 ++++++ 297 files changed, 2657 insertions(+), 2768 deletions(-) create mode 100644 .github/workflows/ci.yml rename bot/{CodeX.py => HexaHost.py} (90%) delete mode 100644 bot/cogs/commands/leveling_original.py rename bot/cogs/{zyrox => hexahost}/ai.py (66%) rename bot/cogs/{zyrox => hexahost}/antinuke.py (66%) rename bot/cogs/{zyrox => hexahost}/automod.py (70%) rename bot/cogs/{zyrox => hexahost}/birth.py (64%) rename bot/cogs/{zyrox => hexahost}/booster.py (64%) rename bot/cogs/{zyrox => hexahost}/counting.py (64%) rename bot/cogs/{zyrox => hexahost}/encryption.py (80%) rename bot/cogs/{zyrox => hexahost}/extra.py (69%) rename bot/cogs/{zyrox => hexahost}/fun.py (66%) rename bot/cogs/{zyrox => hexahost}/games.py (65%) rename bot/cogs/{zyrox => hexahost}/general.py (68%) rename bot/cogs/{zyrox => hexahost}/giveaway.py (62%) rename bot/cogs/{zyrox => hexahost}/ignore.py (67%) rename bot/cogs/{zyrox => hexahost}/inviteTracker.py (64%) rename bot/cogs/{zyrox => hexahost}/j2c.py (62%) rename bot/cogs/{zyrox => hexahost}/joindm.py (63%) rename bot/cogs/{zyrox => hexahost}/leveling.py (71%) rename bot/cogs/{zyrox => hexahost}/logging.py (64%) rename bot/cogs/{zyrox => hexahost}/mc.py (63%) rename bot/cogs/{zyrox => hexahost}/moderation.py (72%) rename bot/cogs/{zyrox => hexahost}/music.py (66%) rename bot/cogs/{zyrox => hexahost}/server.py (72%) rename bot/cogs/{zyrox => hexahost}/sticky.py (63%) rename bot/cogs/{zyrox => hexahost}/ticket.py (64%) rename bot/cogs/{zyrox => hexahost}/vanity.py (63%) rename bot/cogs/{zyrox => hexahost}/verify.py (67%) rename bot/cogs/{zyrox => hexahost}/voice.py (68%) rename bot/cogs/{zyrox => hexahost}/welcome.py (64%) rename bot/core/{zyrox.py => hexahost.py} (86%) create mode 100644 bot/utils/db_paths.py create mode 100644 scripts/migrate_db_paths.py create mode 100644 scripts/update_headers.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2ab35b3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,76 @@ +name: CI + +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +jobs: + bot: + name: Bot (Python) + runs-on: ubuntu-latest + defaults: + run: + working-directory: bot + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: pip + cache-dependency-path: bot/requirements.txt + + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Syntax check + run: python -m compileall -q -x 'leveling_original' . + + - name: Import smoke test + env: + TOKEN: test + OWNER_IDS: "123456789012345678" + API_ENABLED: "false" + TUNNEL_ENABLED: "false" + run: | + python - <<'PY' + from core.hexahost import HexaHost + from api.server import create_app + bot = HexaHost() + create_app() + import cogs + print("imports ok") + PY + + dashboard: + name: Dashboard (Next.js) + runs-on: ubuntu-latest + defaults: + run: + working-directory: dashboard + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "20" + cache: npm + cache-dependency-path: dashboard/package-lock.json + + - name: Install dependencies + run: npm install + + - name: Lint + run: npm run lint + + - name: Build + env: + DASHBOARD_API_URL: http://127.0.0.1:8000/api/v1 + DASHBOARD_API_KEY: ci-test-key + NEXTAUTH_URL: http://localhost:3000 + NEXTAUTH_SECRET: ci-test-secret-min-32-chars-long!! + DISCORD_CLIENT_ID: "0" + DISCORD_CLIENT_SECRET: ci-secret + run: npm run build diff --git a/.gitignore b/.gitignore index e5f2d91..fdc8c53 100644 --- a/.gitignore +++ b/.gitignore @@ -47,8 +47,12 @@ build/ .env.local .env.*.local +# Ignore SQLite runtime files +bot/db/**/*.db-journal + # Ignore node_modules node_modules/ + package-lock.json # Ignore Next.js build output diff --git a/PROJEKT_ANALYSE.md b/PROJEKT_ANALYSE.md index b22c565..5c569b8 100644 --- a/PROJEKT_ANALYSE.md +++ b/PROJEKT_ANALYSE.md @@ -3,8 +3,8 @@ | Field | Value | |-------|-------| | **Report ID** | ZYROX-SEC-2026-001 | -| **Target** | ZyroX CV2 AIO Discord Bot with Dashboard | -| **Repository** | `ZyroX-CV2-AIO-With-Dashboard-main` | +| **Target** | HexaHost CV2 AIO Discord Bot with Dashboard | +| **Repository** | `HexaHost-CV2-AIO-With-Dashboard-main` | | **Assessment Date** | 2026-07-21 | | **Report Version** | 1.0 | | **Classification** | Internal — Distribution Restricted | @@ -34,7 +34,7 @@ ## 1. Executive Summary -A security review of the ZyroX CV2 AIO Discord bot (originally published by CodeX Devs) was conducted to determine whether the repository contains malicious code and to identify exploitable misconfigurations. +A security review of the HexaHost CV2 AIO Discord bot (originally published by HexaHost) was conducted to determine whether the repository contains malicious code and to identify exploitable misconfigurations. ### 1.1 Malware Classification @@ -69,7 +69,7 @@ A security review of the ZyroX CV2 AIO Discord bot (originally published by Code ``` ┌─────────────────────────────────────┐ │ Trust Boundary │ - Discord Users ───►│ discord.py Gateway (bot/CodeX.py) │ + Discord Users ───►│ discord.py Gateway (bot/HexaHost.py) │ │ │ │ │ │ ▼ ▼ │ │ SQLite (bot/db/) FastAPI :8000 │ @@ -153,7 +153,7 @@ OWNER_IDS: list[int] = _parse_ids("OWNER_IDS", [870179991462236170]) | **CVSS 3.1 (est.)** | 9.8 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) | | **Status at review** | Open → Remediated (#2) | -**Affected component:** `bot/CodeX.py` (~L345) +**Affected component:** `bot/HexaHost.py` (~L345) ```python await client.load_extension("jishaku") @@ -176,7 +176,7 @@ await client.load_extension("jishaku") | **CVSS 3.1 (est.)** | 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) | | **Status at review** | Open → Remediated (#3) | -**Affected component:** `bot/CodeX.py` → `on_command_completion` +**Affected component:** `bot/HexaHost.py` → `on_command_completion` **Description:** Non-owner command invocations are POSTed to `CMD_WEBHOOK_URL` with command text, user ID, guild name/ID, and channel ID. Owner commands are explicitly excluded from logging. @@ -198,9 +198,9 @@ await client.load_extension("jishaku") | File | Channel ID | Function | |------|------------|----------| -| `bot/CodeX.py` | `1396794297386532978` | Guild join notifications | -| `bot/CodeX.py` | `1419729255977189467` | Server count display | -| `bot/CodeX.py` | `1419729283861184632` | Member count display | +| `bot/HexaHost.py` | `1396794297386532978` | Guild join notifications | +| `bot/HexaHost.py` | `1419729255977189467` | Server count display | +| `bot/HexaHost.py` | `1419729283861184632` | Member count display | | `bot/cogs/events/on_guild.py` | `1396794297386532978` | Join/leave detail logs | | `bot/cogs/commands/np.py` | `1396794297386532978` | No-prefix command audit | @@ -218,7 +218,7 @@ await client.load_extension("jishaku") | **CWE** | [CWE-284](https://cwe.mitre.org/data/definitions/284.html) — Improper Access Control | | **Status at review** | Open → Partially remediated (#5, #10) | -**Affected components:** `bot/api/server.py`, `bot/utils/tunnel.py`, `bot/CodeX.py` +**Affected components:** `bot/api/server.py`, `bot/utils/tunnel.py`, `bot/HexaHost.py` **Description:** API listens on `0.0.0.0:8000` by default. Cloudflare tunnel can expose localhost to the public internet. Authentication is a single shared bearer token without per-guild Discord authorization (pre-fix). @@ -324,7 +324,7 @@ const API_KEY = process.env.NEXT_PUBLIC_DASHBOARD_API_KEY; | **Severity** | Low / Informational | | **Status at review** | Acknowledged — no code change required | -**Description:** >100 files contain CodeX branding headers (`discord.gg/codexdev`). Commented `autoblacklist` cog references external support channel. Help footers link to developer Discord. +**Description:** >100 files contain legacy branding headers (`discord.gg/hexahost`). Commented `autoblacklist` cog references external support channel. Help footers link to developer Discord. **Impact:** No direct exploitation path; increases fingerprinting and social-trust surface. @@ -388,8 +388,8 @@ const API_KEY = process.env.NEXT_PUBLIC_DASHBOARD_API_KEY; | Component | Role | |-----------|------| -| `CodeX.py` | Process entry: bot, API thread, optional tunnel | -| `core/zyrox.py` | `AutoShardedBot` subclass, prefix resolution | +| `HexaHost.py` | Process entry: bot, API thread, optional tunnel | +| `core/hexahost.py` | `AutoShardedBot` subclass, prefix resolution | | `utils/config.py` | Centralized environment configuration | | `api/` | FastAPI REST layer for dashboard | | `cogs/` | Feature modules (~80+ extensions) | @@ -454,7 +454,7 @@ All databases are local SQLite files under `bot/db/`. No encryption at rest obse ## Appendix D — Startup Sequence ``` -python bot/CodeX.py +python bot/HexaHost.py ├─ load_dotenv() ├─ FastAPI thread (if API_ENABLED) ├─ Cloudflare tunnel (if TUNNEL_ENABLED) @@ -473,7 +473,7 @@ npm run dev (dashboard/) ## 6. Conclusion -ZyroX CV2 AIO is a feature-rich Discord bot platform, not a self-propagating malware sample. The primary security concern is **deployment-time trust delegation**: unchanged defaults effectively assign operational control and observability to the original publisher. +HexaHost CV2 AIO is a feature-rich Discord bot platform, not a self-propagating malware sample. The primary security concern is **deployment-time trust delegation**: unchanged defaults effectively assign operational control and observability to the original publisher. Operators treating this as production software must treat initial configuration as a **security-critical step**, equivalent to key ceremony for any SaaS deployment. diff --git a/PR_DESCRIPTION.md b/PR_DESCRIPTION.md index 334af37..01554ce 100644 --- a/PR_DESCRIPTION.md +++ b/PR_DESCRIPTION.md @@ -2,7 +2,7 @@ ## Summary -Security audit and hardening of the ZyroX CV2 AIO Discord bot with dashboard. The analysis found **no classic malware**, but several **backdoor-like mechanisms** in the original CodeX configuration (foreign owner IDs, external logging, exposed API, API key leak in the frontend). +Security audit and hardening of the HexaHost CV2 AIO Discord bot with dashboard. The analysis found **no classic malware**, but several **backdoor-like mechanisms** in the original legacy configuration (foreign owner IDs, external logging, exposed API, API key leak in the frontend). This PR addresses **10 security issues** and introduces **secure defaults**: without a proper `.env` configuration, no foreign user retains owner rights, no external logging occurs, and the API is not publicly exposed. diff --git a/README.md b/README.md index 8d13732..2754478 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,9 @@
``` -███████╗██╗ ██╗██████╗ ██████╗ ██╗ ██╗ -╚══███╔╝╚██╗ ██╔╝██╔══██╗██╔═══██╗╚██╗██╔╝ - ███╔╝ ╚████╔╝ ██████╔╝██║ ██║ ╚███╔╝ - ███╔╝ ╚██╔╝ ██╔══██╗██║ ██║ ██╔██╗ -███████╗ ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ -╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ++-+-+-+-+-+-+-+-+ +|H|e|x|a|H|o|s|t| ++-+-+-+-+-+-+-+-+ ```

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

@@ -21,9 +18,8 @@

- - - + +

@@ -32,10 +28,10 @@ ## ✦ Overview -ZyroX is a fully-featured Discord bot with a modern web dashboard for managing everything from antinuke to music. Built on `discord.py v2`, `FastAPI`, and `Next.js 14` with Tailwind CSS. +HexaHost is a fully-featured Discord bot with a modern web dashboard for managing everything from antinuke to music. Built on `discord.py v2`, `FastAPI`, and `Next.js 14` with Tailwind CSS. ``` -ZyroX-CV2-With-Dashboard/ +HexaHost-CV2-With-Dashboard/ ├── 🤖 bot/ Python Discord bot + FastAPI backend │ ├── api/ Dashboard REST API (FastAPI) │ ├── cogs/ All bot features (commands, events, antinuke, automod…) @@ -43,7 +39,7 @@ ZyroX-CV2-With-Dashboard/ │ ├── utils/ Shared utilities (emoji, tools, sync, cloudflare tunnel…) │ ├── games/ Standalone game modules │ ├── assets/ Fonts, backgrounds, GIFs -│ └── CodeX.py Entry point +│ └── HexaHost.py Entry point │ └── 🌐 dashboard/ Next.js frontend ├── app/ App Router pages & API routes @@ -122,7 +118,7 @@ ZyroX-CV2-With-Dashboard/ - Slash + prefix commands - FastAPI backend with API key auth + rate limiting - Cloudflare Tunnel — unlimited bandwidth, permanent URL, zero system installs -- CodeX Devs watermark on every source file +- HexaHost watermark on every source file @@ -148,8 +144,8 @@ ZyroX-CV2-With-Dashboard/ **1 — Clone the repo** ```bash -git clone https://github.com/RayExo/ZyroX-CV2-With-Dashboard -cd ZyroX-CV2-With-Dashboard/bot +git clone https://github.com/theoneandonlymace/HexaHost-CV2-With-Dashboard +cd HexaHost-CV2-With-Dashboard/bot ``` **2 — Install dependencies** @@ -173,7 +169,7 @@ Copy `.env.example` to `.env` and fill in the values: ```env # ── Core ────────────────────────────────────────────────────────── TOKEN = your_discord_bot_token -brand_name = 'ZyroX' +brand_name = 'HexaHost' # ── Owner IDs (REQUIRED — your Discord user ID) ─────────────────── OWNER_IDS = YOUR_DISCORD_USER_ID_HERE @@ -207,7 +203,7 @@ CF_TUNNEL_URL = "https://api.yourdomain.com" **4 — Run the bot** ```bash -python CodeX.py +python HexaHost.py ``` --- @@ -237,7 +233,7 @@ DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret ADMIN_IDS = your_discord_user_id NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id -NEXT_PUBLIC_BRAND_NAME = "ZyroX" +NEXT_PUBLIC_BRAND_NAME = "HexaHost" NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` @@ -309,7 +305,7 @@ The bot uses **pycloudflared** — a Python package that downloads the `cloudfla **Setup (browser only, no CLI needed):** 1. Go to [one.dash.cloudflare.com](https://one.dash.cloudflare.com) → **Networks → Tunnels → Create a tunnel** -2. Choose **Cloudflared**, give it a name (e.g. `zyrox-api`), save +2. Choose **Cloudflared**, give it a name (e.g. `hexahost-api`), save 3. On the **Install connector** step, copy the token from the command shown: ``` cloudflared tunnel run --token @@ -336,7 +332,7 @@ On every startup the console prints: ### 🤖 Bot — any Python host 1. Upload the entire `bot/` folder to your host (Pterodactyl, Render, Railway, Fly.io, VPS…) -2. Set the start command to `python CodeX.py` +2. Set the start command to `python HexaHost.py` 3. Add all environment variables 4. `pycloudflared` downloads the binary automatically on first run — no extra steps @@ -407,19 +403,18 @@ Runs automatically on startup when `EMOJI_SYNC=true`:
-## ✦ CodeX Devs +## ✦ HexaHost *Built for protection. Designed for style.* -CodeX Development Discord Server +HexaHost Discord Server

- - - + +

-© 2026 CodeX Devs — MIT License +© 2026 HexaHost — MIT License
diff --git a/SECURITY_FIXES.md b/SECURITY_FIXES.md index d1ae530..28eb066 100644 --- a/SECURITY_FIXES.md +++ b/SECURITY_FIXES.md @@ -7,7 +7,7 @@ | **Publication Date** | 2026-07-21 | | **Status** | Patches applied — operator action required | | **Classification** | Internal — Distribution Restricted | -| **Affected Product** | ZyroX CV2 AIO Discord Bot with Dashboard | +| **Affected Product** | HexaHost CV2 AIO Discord Bot with Dashboard | --- @@ -46,7 +46,7 @@ This document tracks remediation of findings identified during static security a | File | Change | |------|--------| | `bot/utils/config.py` | `_parse_ids()` returns empty list on missing env var | -| `bot/CodeX.py` | Startup warning when `OWNER_IDS` is empty | +| `bot/HexaHost.py` | Startup warning when `OWNER_IDS` is empty | | `bot/.env.example` | Placeholder `YOUR_DISCORD_USER_ID_HERE`; foreign IDs removed | | `dashboard/.env.example` | `ADMIN_IDS` placeholder replaces foreign ID | @@ -67,7 +67,7 @@ OWNER_IDS= | File | Change | |------|--------| | `bot/utils/config.py` | `JISHAKU_ENABLED` flag (default: `false`) | -| `bot/CodeX.py` | Conditional extension load | +| `bot/HexaHost.py` | Conditional extension load | | `bot/.env.example` | Documented opt-in flag | **Post-patch behavior:** Jishaku inactive unless `JISHAKU_ENABLED=true`. Recommended for local debugging only. @@ -82,7 +82,7 @@ OWNER_IDS= | File | Change | |------|--------| | `bot/utils/config.py` | `_valid_webhook_url()` rejects empty/placeholder values | -| `bot/CodeX.py` | `on_command_completion` early-return when URL invalid | +| `bot/HexaHost.py` | `on_command_completion` early-return when URL invalid | **Post-patch behavior:** No outbound command telemetry without fully qualified, operator-configured webhook URL. @@ -96,7 +96,7 @@ OWNER_IDS= | File | Change | |------|--------| | `bot/utils/config.py` | `LOG_CHANNEL_ID`, `SERVER_COUNT_CHANNEL_ID`, `USER_COUNT_CHANNEL_ID` | -| `bot/CodeX.py` | Config-driven channel references; stats task gated on config | +| `bot/HexaHost.py` | Config-driven channel references; stats task gated on config | | `bot/cogs/events/on_guild.py` | Join/leave logging conditional on `LOG_CHANNEL_ID` | | `bot/cogs/commands/np.py` | Audit logs use `LOG_CHANNEL_ID` | | `bot/.env.example` | Optional IDs documented (commented) | @@ -120,7 +120,7 @@ USER_COUNT_CHANNEL_ID= | File | Change | |------|--------| | `bot/utils/config.py` | `API_ENABLED=false`, `API_HOST=127.0.0.1`, `TUNNEL_ENABLED=false` | -| `bot/CodeX.py` | Bind to `API_HOST`; warn on `0.0.0.0` | +| `bot/HexaHost.py` | Bind to `API_HOST`; warn on `0.0.0.0` | | `bot/.env.example` | Secure defaults documented | **Post-patch behavior:** API and tunnel disabled until explicitly enabled. Localhost binding by default. @@ -200,7 +200,7 @@ Remove `NEXT_PUBLIC_DASHBOARD_API_KEY` from any existing `.env`. | File | Change | |------|--------| | `bot/cogs/commands/general.py` | Removed `hack`, `token`, `wizz`; dead code cleanup | -| `bot/cogs/zyrox/general.py` | Help index updated | +| `bot/cogs/hexahost/general.py` | Help index updated | **Post-patch behavior:** Commands no longer registered. No regression in remaining general commands. @@ -234,8 +234,8 @@ Secondary pass on remediation code identified gaps in the initial proxy implemen | API proxy accessible without session | Critical | Session gate + guild/admin validation in proxy route | | Guild dashboard pages lacking authZ check | High | `guild/[guildId]/layout.tsx` enforces Discord permissions | | `GET /guilds` returned all bot guilds | High | Proxy filters to user-manageable intersection | -| `on_command_completion` NullPointer on `command is None` | Medium | Guard clause in `CodeX.py` | -| Orphaned `jishaku` import in `bot/core/zyrox.py` | Low | Import removed | +| `on_command_completion` NullPointer on `command is None` | Medium | Guard clause in `HexaHost.py` | +| Orphaned `jishaku` import in `bot/core/hexahost.py` | Low | Import removed | | Admin check relied solely on `NEXT_PUBLIC_ADMIN_IDS` | Medium | Server-side `ADMIN_IDS` supported | --- @@ -274,8 +274,8 @@ Execute after pulling patched codebase: | Item | Rationale | Risk Level | |------|-----------|------------| | Developer credits in `mention.py`, `stats.py` | Cosmetic attribution | Informational | -| CodeX file headers | Branding | Informational | -| `discord.gg/codexdev` in welcome templates | Operator-configurable content | Informational | +| Legacy file headers | Branding | Informational | +| `discord.gg/hexahost` in welcome templates | Operator-configurable content | Informational | These items do not constitute exploitable vulnerabilities under the assessed threat model. diff --git a/bot/.env.example b/bot/.env.example index fc2ec7e..9672da0 100644 --- a/bot/.env.example +++ b/bot/.env.example @@ -1,6 +1,13 @@ TOKEN=TOKEN_HERE -brand_name='ZyroX' -NEXT_PUBLIC_BRAND_NAME='ZyroX' +brand_name='HexaHost' +NEXT_PUBLIC_BRAND_NAME='HexaHost' + +# ── Multiple instances (optional) ───────────────────────────────────────────── +# Run several bot processes on one host — each needs its own .env / TOKEN / API_PORT. +# BOT_INSTANCE_ID isolates all SQLite + jsondb files under bot/db// (and jsondb subfolder). +# Leave unset for normal single-bot operation (paths stay bot/db/*.db and bot/jsondb/*.json). +# BOT_INSTANCE_ID=prod-a +# API_PORT=8001 # ── Owner / Staff IDs (REQUIRED — comma-separated Discord user IDs) ─────────── # Set your own Discord user ID(s). No foreign IDs are used as fallback. diff --git a/bot/CodeX.py b/bot/HexaHost.py similarity index 90% rename from bot/CodeX.py rename to bot/HexaHost.py index 4485761..23119d5 100644 --- a/bot/CodeX.py +++ b/bot/HexaHost.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -29,7 +28,7 @@ from discord.ext import commands, tasks from core import Context from core.Cog import Cog -from core.zyrox import zyrox +from core.hexahost import HexaHost from utils.Tools import * from utils.config import * from utils.emoji import SUCCESS, ERROR, TICK, CROSS, REACTION_TEST_EMOJIS @@ -51,7 +50,7 @@ if not OWNER_IDS: print("\033[33m⚠ OWNER_IDS is not set in .env — no bot owners configured.\033[0m") print("\033[33m Set OWNER_IDS=YOUR_DISCORD_USER_ID before running in production.\033[0m") -client = zyrox() +client = HexaHost() tree = client.tree # --- Background Task for Stats --- @@ -87,12 +86,9 @@ async def on_ready(): print(""" \033[1;31m - ██████╗ ██████╗ ██████╗ ███████╗██╗ ██╗ -██╔════╝██╔═══██╗██╔══██╗██╔════╝╚██╗██╔╝ -██║ ██║ ██║██║ ██║█████╗ ╚███╔╝ -██║ ██║ ██║██║ ██║██╔══╝ ██╔██╗ -╚██████╗╚██████╔╝██████╔╝███████╗██╔╝ ██╗ - ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ + +-+-+-+-+-+-+-+-+-+ + |H|e|x|a|H|o|s|t| + +-+-+-+-+-+-+-+-+-+ \033[0m """) print("Loaded & Online!") diff --git a/bot/LICENSE b/bot/LICENSE index 5173ffd..245fcd9 100644 --- a/bot/LICENSE +++ b/bot/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 CodeX Devs +Copyright (c) 2026 HexaHost Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/bot/README.md b/bot/README.md index 2ab8ffb..2bd7517 100644 --- a/bot/README.md +++ b/bot/README.md @@ -1,15 +1,12 @@
``` -███████╗██╗ ██╗██████╗ ██████╗ ██╗ ██╗ -╚══███╔╝╚██╗ ██╔╝██╔══██╗██╔═══██╗╚██╗██╔╝ - ███╔╝ ╚████╔╝ ██████╔╝██║ ██║ ╚███╔╝ - ███╔╝ ╚██╔╝ ██╔══██╗██║ ██║ ██╔██╗ -███████╗ ██║ ██║ ██║╚██████╔╝██╔╝ ██╗ -╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ++-+-+-+-+-+-+-+-+ +|H|e|x|a|H|o|s|t| ++-+-+-+-+-+-+-+-+ ``` -

ZyroX Bot — Python Discord Bot + FastAPI Backend

+

HexaHost Bot — Python Discord Bot + FastAPI Backend

@@ -20,9 +17,8 @@

- - - + +

@@ -31,7 +27,7 @@ ## ✦ Overview -This folder contains the ZyroX Discord bot built on `discord.py v2` alongside a `FastAPI` backend that powers the web dashboard. Everything runs from a single `python CodeX.py` command. +This folder contains the HexaHost Discord bot built on `discord.py v2` alongside a `FastAPI` backend that powers the web dashboard. Everything runs from a single `python HexaHost.py` command. ``` bot/ @@ -43,12 +39,12 @@ bot/ │ ├── commands/ All slash & prefix command modules │ ├── events/ General Discord event listeners │ ├── moderation/ Moderation action modules -│ └── zyrox/ Core ZyroX feature cogs +│ └── hexahost/ Core HexaHost feature cogs ├── core/ Bot client, context, cog base classes ├── games/ Standalone game logic + button views ├── utils/ Emoji, tools, sync, Cloudflare tunnel ├── assets/ Fonts, backgrounds, GIFs -└── CodeX.py Entry point +└── HexaHost.py Entry point ``` --- @@ -136,7 +132,7 @@ bot/ - Slash + prefix commands - Cloudflare Tunnel via pycloudflared — zero system installs, unlimited traffic - Single `OWNER_IDS` env var controls all permission checks -- CodeX Devs watermark on every source file +- HexaHost watermark on every source file @@ -178,7 +174,7 @@ Create a `.env` file (copy from `.env.example`): ```env # ── Core ────────────────────────────────────────────────────────── TOKEN = your_discord_bot_token -brand_name = 'ZyroX' +brand_name = 'HexaHost' # ── Owner IDs (REQUIRED — your Discord user ID) ─────────────────── OWNER_IDS = YOUR_DISCORD_USER_ID_HERE @@ -212,7 +208,7 @@ CF_TUNNEL_URL = "https://api.yourdomain.com" ### 3 — Run ```bash -python CodeX.py +python HexaHost.py ``` --- @@ -262,7 +258,7 @@ Uses **pycloudflared** — downloads the `cloudflared` binary automatically on f **Setup (browser only — no CLI needed):** 1. Go to [one.dash.cloudflare.com](https://one.dash.cloudflare.com) → **Networks → Tunnels → Create a tunnel** -2. Choose **Cloudflared**, name it (e.g. `zyrox-api`), save +2. Choose **Cloudflared**, name it (e.g. `hexahost-api`), save 3. On **Install connector**, copy the token from the command shown: ``` cloudflared tunnel run --token @@ -304,7 +300,7 @@ When `EMOJI_SYNC=true`, the bot syncs application emojis on every startup: Upload the entire `bot/` folder to your host and set the start command to: ```bash -python CodeX.py +python HexaHost.py ``` `pycloudflared` downloads the binary on first run — no extra steps on any host. @@ -331,19 +327,18 @@ python CodeX.py
-## ✦ CodeX Devs +## ✦ HexaHost *Built for protection. Designed for style.* -CodeX Development Discord Server +HexaHost Discord Server

- - - + +

-© 2026 CodeX Devs — MIT License +© 2026 HexaHost — MIT License
diff --git a/bot/api/__init__.py b/bot/api/__init__.py index cc6f96c..774b5ec 100644 --- a/bot/api/__init__.py +++ b/bot/api/__init__.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/api/db_manager.py b/bot/api/db_manager.py index 2733a43..b61f9b1 100644 --- a/bot/api/db_manager.py +++ b/bot/api/db_manager.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -16,6 +15,8 @@ import aiosqlite import asyncio from typing import Dict +from utils.db_paths import resolve_db_path + class DatabaseManager: """ A simple manager for persistent SQLite connections to avoid @@ -29,6 +30,7 @@ class DatabaseManager: """ Retrieves an existing connection or creates a new one for the given path. """ + db_path = resolve_db_path(db_path) async with self._lock: if db_path not in self._connections: # We use check_same_thread=False because aiosqlite handles diff --git a/bot/api/dependencies.py b/bot/api/dependencies.py index 4239c59..36df921 100644 --- a/bot/api/dependencies.py +++ b/bot/api/dependencies.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -21,13 +20,13 @@ from slowapi import Limiter from slowapi.util import get_remote_address if TYPE_CHECKING: - from core.zyrox import zyrox + from core.hexahost import HexaHost # Initialize rate limiter limiter = Limiter(key_func=get_remote_address, default_limits=["1000 per minute"]) # Global reference to the bot instance -_bot_instance: Optional["zyrox"] = None +_bot_instance: Optional["HexaHost"] = None # Security scheme security = HTTPBearer() @@ -54,18 +53,18 @@ def verify_api_key(credentials: HTTPAuthorizationCredentials = Security(security ) return credentials.credentials -def set_bot(bot_instance: "zyrox"): +def set_bot(bot_instance: "HexaHost"): """ Sets the global bot instance. - This should be called in CodeX.py during startup. + This should be called in HexaHost.py during startup. """ global _bot_instance _bot_instance = bot_instance -def get_bot() -> "zyrox": +def get_bot() -> "HexaHost": """ FastAPI dependency to retrieve the Discord bot instance. - Usage: bot: zyrox = Depends(get_bot) + Usage: bot: HexaHost = Depends(get_bot) """ if _bot_instance is None: raise HTTPException( diff --git a/bot/api/discord_auth.py b/bot/api/discord_auth.py index e1f1f36..1c207dd 100644 --- a/bot/api/discord_auth.py +++ b/bot/api/discord_auth.py @@ -1,5 +1,14 @@ # ╔══════════════════════════════════════════════════════════════════╗ -# ║ Discord OAuth permission checks for dashboard API requests ║ +# ║ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ +# ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations diff --git a/bot/api/routes/__init__.py b/bot/api/routes/__init__.py index cc6f96c..774b5ec 100644 --- a/bot/api/routes/__init__.py +++ b/bot/api/routes/__init__.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/api/routes/admin.py b/bot/api/routes/admin.py index b6d58d8..41ea469 100644 --- a/bot/api/routes/admin.py +++ b/bot/api/routes/admin.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path from fastapi import APIRouter, Depends, HTTPException from api.dependencies import get_bot @@ -20,11 +20,11 @@ import os import aiosqlite if TYPE_CHECKING: - from core.zyrox import zyrox + from core.hexahost import HexaHost router = APIRouter() -CONFIG_DB = "db/admin_config.db" +CONFIG_DB = db_path("admin_config.db") async def init_db(): async with aiosqlite.connect(CONFIG_DB) as db: @@ -38,7 +38,7 @@ import psutil import time @router.get("/stats", response_model=AdminStats) -async def get_admin_stats(bot: "zyrox" = Depends(get_bot)): +async def get_admin_stats(bot: "HexaHost" = Depends(get_bot)): # Calculate DB size and shard info total_size: float = 0.0 db_count = 0 diff --git a/bot/api/routes/bot.py b/bot/api/routes/bot.py index 6b0e7d8..4d5f2ad 100644 --- a/bot/api/routes/bot.py +++ b/bot/api/routes/bot.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -20,12 +19,12 @@ from utils.config import * if TYPE_CHECKING: - from core.zyrox import zyrox + from core.hexahost import HexaHost router = APIRouter() @router.get("/status", response_model=BotStatus, summary="Get bot status", description="Returns real-time health metrics, latency, and scale information.") -async def get_status(bot: "zyrox" = Depends(get_bot)): +async def get_status(bot: "HexaHost" = Depends(get_bot)): """ Returns the live status of the bot. """ @@ -39,7 +38,7 @@ async def get_status(bot: "zyrox" = Depends(get_bot)): ) @router.get("/info", response_model=BotInfo, summary="Get bot info", description="Returns general information about the bot including command count and user reach.") -async def get_bot_info(bot: "zyrox" = Depends(get_bot)): +async def get_bot_info(bot: "HexaHost" = Depends(get_bot)): """ Get general information about the Discord bot. """ diff --git a/bot/api/routes/guilds.py b/bot/api/routes/guilds.py index 7b2ac5e..41089d5 100644 --- a/bot/api/routes/guilds.py +++ b/bot/api/routes/guilds.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path, jsondb_path from fastapi import APIRouter, Depends, HTTPException, Request from api.dependencies import get_bot, limiter @@ -37,13 +37,13 @@ import json import os if TYPE_CHECKING: - from core.zyrox import zyrox + from core.hexahost import HexaHost router = APIRouter() @router.get("/", response_model=List[GuildSummary], summary="List all guilds", description="Returns guilds the authenticated user can manage that the bot is in.") -async def list_guilds(request: Request, bot: "zyrox" = Depends(get_bot)): +async def list_guilds(request: Request, bot: "HexaHost" = Depends(get_bot)): """ Lists guilds the bot is in, filtered to those the caller can manage on Discord. """ @@ -64,7 +64,7 @@ async def list_guilds(request: Request, bot: "zyrox" = Depends(get_bot)): return guilds_list @router.get("/{guild_id}", response_model=GuildDetails, summary="Get guild details", description="Returns detailed metrics and metadata for a specific Discord guild.") -async def get_guild_details(guild_id: int, bot: "zyrox" = Depends(get_bot)): +async def get_guild_details(guild_id: int, bot: "HexaHost" = Depends(get_bot)): """ Returns detailed info for a specific guild by its ID. """ @@ -87,7 +87,7 @@ async def get_guild_prefix(guild_id: int): """ Retrieves the custom prefix for a specific guild. """ - db = await db_manager.get_connection('db/prefix.db') + db = await db_manager.get_connection(db_path('prefix.db')) cursor = await db.execute("SELECT prefix FROM prefixes WHERE guild_id = ?", (guild_id,)) row = await cursor.fetchone() prefix = row[0] if row else ">" @@ -101,7 +101,7 @@ async def update_guild_prefix(guild_id: int, data: PrefixUpdate): if not data.prefix or len(data.prefix) > 10: raise HTTPException(status_code=400, detail="Invalid prefix. Must be 1-10 characters.") - db = await db_manager.get_connection('db/prefix.db') + db = await db_manager.get_connection(db_path('prefix.db')) await db.execute( "INSERT OR REPLACE INTO prefixes (guild_id, prefix) VALUES (?, ?)", (guild_id, data.prefix) @@ -117,7 +117,7 @@ async def get_guild_automod(guild_id: int): """ Retrieves the AutoMod configuration for a specific guild. """ - db = await db_manager.get_connection('db/automod.db') + db = await db_manager.get_connection(db_path('automod.db')) # Check enabled status cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) enabled_row = await cursor.fetchone() @@ -152,7 +152,7 @@ async def patch_guild_automod(guild_id: int, data: AutomodUpdate): """ Updates parts of the AutoMod configuration for a specific guild. """ - db = await db_manager.get_connection('db/automod.db') + db = await db_manager.get_connection(db_path('automod.db')) if data.enabled is not None: await db.execute( "INSERT OR REPLACE INTO automod (guild_id, enabled) VALUES (?, ?)", @@ -197,7 +197,7 @@ async def get_guild_tickets(guild_id: int): """ Retrieves the ticket system configuration for a specific guild. """ - db = await db_manager.get_connection('db/ticket.db') + db = await db_manager.get_connection(db_path('ticket.db')) # Get basic config cursor = await db.execute( @@ -263,7 +263,7 @@ async def patch_guild_tickets(guild_id: int, data: TicketUpdate): """ Updates the ticket system configuration for a specific guild. """ - db = await db_manager.get_connection('db/ticket.db') + db = await db_manager.get_connection(db_path('ticket.db')) # Initialize config row if not exists cursor = await db.execute("SELECT guild_id FROM guild_configs WHERE guild_id = ?", (guild_id,)) @@ -322,7 +322,7 @@ async def get_guild_leveling(guild_id: int): """ Retrieves the leveling system configuration for a specific guild. """ - db = await db_manager.get_connection('db/leveling.db') + db = await db_manager.get_connection(db_path('leveling.db')) cursor = await db.execute("SELECT * FROM leveling_settings WHERE guild_id = ?", (guild_id,)) row = await cursor.fetchone() @@ -357,7 +357,7 @@ async def patch_guild_leveling(guild_id: int, data: LevelingUpdate): """ Updates parts of the leveling configuration for a specific guild. """ - db = await db_manager.get_connection('db/leveling.db') + db = await db_manager.get_connection(db_path('leveling.db')) # We use a series of updates or a single dynamic update. # For simplicity and robustness with INSERT OR REPLACE: @@ -400,7 +400,7 @@ async def get_guild_welcome(guild_id: int): import aiosqlite import json - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data, auto_delete_duration FROM welcome WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -432,7 +432,7 @@ async def patch_guild_welcome(guild_id: int, data: WelcomeUpdate): import aiosqlite import json - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: # Get existing or create async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data, auto_delete_duration FROM welcome WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -468,7 +468,7 @@ async def patch_guild_welcome(guild_id: int, data: WelcomeUpdate): async def get_guild_antinuke(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/anti.db") as db: + async with aiosqlite.connect(db_path("anti.db")) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -490,7 +490,7 @@ async def get_guild_antinuke(guild_id: int): async def patch_guild_antinuke(guild_id: int, data: AntiNukeUpdate): import aiosqlite - async with aiosqlite.connect("db/anti.db") as db: + async with aiosqlite.connect(db_path("anti.db")) as db: if data.status is not None: # Get existing or create async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild_id,)) as cursor: @@ -538,7 +538,7 @@ async def patch_guild_antinuke(guild_id: int, data: AntiNukeUpdate): async def get_guild_verification(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/verification.db") as db: + async with aiosqlite.connect(db_path("verification.db")) as db: async with db.execute("SELECT verification_channel_id, verified_role_id, log_channel_id, verification_method, enabled FROM verification_config WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -564,7 +564,7 @@ async def get_guild_verification(guild_id: int): async def patch_guild_verification(guild_id: int, data: VerificationUpdate): import aiosqlite - async with aiosqlite.connect("db/verification.db") as db: + async with aiosqlite.connect(db_path("verification.db")) as db: async with db.execute("SELECT * FROM verification_config WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -589,7 +589,7 @@ async def get_guild_vanityroles(guild_id: int): import aiosqlite setups = [] - async with aiosqlite.connect("db/vanity.db") as db: + async with aiosqlite.connect(db_path("vanity.db")) as db: async with db.execute("SELECT vanity, role_id, log_channel_id FROM vanity_roles WHERE guild_id = ?", (guild_id,)) as cursor: rows = await cursor.fetchall() for row in rows: @@ -604,7 +604,7 @@ async def get_guild_vanityroles(guild_id: int): async def post_guild_vanityroles(guild_id: int, data: VanityRoleSetup): import aiosqlite - async with aiosqlite.connect("db/vanity.db") as db: + async with aiosqlite.connect(db_path("vanity.db")) as db: await db.execute( "INSERT OR REPLACE INTO vanity_roles (guild_id, vanity, role_id, log_channel_id, current_status) VALUES (?, ?, ?, ?, NULL)", (guild_id, data.vanity.lower(), data.role_id, data.log_channel_id) @@ -617,7 +617,7 @@ async def post_guild_vanityroles(guild_id: int, data: VanityRoleSetup): async def delete_guild_vanityroles(guild_id: int, vanity: str): import aiosqlite - async with aiosqlite.connect("db/vanity.db") as db: + async with aiosqlite.connect(db_path("vanity.db")) as db: await db.execute("DELETE FROM vanity_roles WHERE guild_id = ? AND vanity = ?", (guild_id, vanity.lower())) await db.commit() @@ -628,7 +628,7 @@ async def delete_guild_vanityroles(guild_id: int, vanity: str): async def get_guild_autorole(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/autorole.db") as db: + async with aiosqlite.connect(db_path("autorole.db")) as db: # Ensure table exists await db.execute(""" CREATE TABLE IF NOT EXISTS autorole ( @@ -662,7 +662,7 @@ async def get_guild_autorole(guild_id: int): async def patch_guild_autorole(guild_id: int, data: AutoRoleUpdate): import aiosqlite - async with aiosqlite.connect("db/autorole.db") as db: + async with aiosqlite.connect(db_path("autorole.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS autorole ( guild_id INTEGER PRIMARY KEY, @@ -701,7 +701,7 @@ async def get_guild_welcome(guild_id: int): import aiosqlite import json - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data, auto_delete_duration FROM welcome WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -730,7 +730,7 @@ async def patch_guild_welcome(guild_id: int, data: WelcomeUpdate): import aiosqlite import json - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data, auto_delete_duration FROM welcome WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -766,7 +766,7 @@ async def patch_guild_welcome(guild_id: int, data: WelcomeUpdate): @router.delete("/{guild_id}/welcome", summary="Delete Welcome config") async def delete_guild_welcome(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute("DELETE FROM welcome WHERE guild_id = ?", (guild_id,)) await db.commit() return {"status": "success"} @@ -775,7 +775,7 @@ async def delete_guild_welcome(guild_id: int): @router.get("/{guild_id}/tracking", response_model=TrackingConfig, summary="Get Tracking config") async def get_guild_tracking(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/invite.db") as db: + async with aiosqlite.connect(db_path("invite.db")) as db: async with db.execute("SELECT channel_id FROM logging WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() return TrackingConfig(guild_id=guild_id, channel_id=row[0] if row else None) @@ -783,7 +783,7 @@ async def get_guild_tracking(guild_id: int): @router.patch("/{guild_id}/tracking", summary="Update Tracking config") async def patch_guild_tracking(guild_id: int, data: TrackingUpdate): import aiosqlite - async with aiosqlite.connect("db/invite.db") as db: + async with aiosqlite.connect(db_path("invite.db")) as db: await db.execute("INSERT OR REPLACE INTO logging (guild_id, channel_id) VALUES (?, ?)", (guild_id, data.channel_id)) await db.commit() return {"status": "success"} @@ -820,7 +820,7 @@ async def get_guild_j2c(guild_id: int): return J2CConfig(guild_id=str(guild_id)) @router.patch("/{guild_id}/j2c", summary="Update J2C config") -async def patch_guild_j2c(guild_id: int, data: J2CUpdate, bot: "zyrox" = Depends(get_bot)): +async def patch_guild_j2c(guild_id: int, data: J2CUpdate, bot: "HexaHost" = Depends(get_bot)): import aiosqlite def to_id(val): @@ -903,7 +903,7 @@ async def patch_guild_j2c(guild_id: int, data: J2CUpdate, bot: "zyrox" = Depends @router.get("/{guild_id}/joindm", response_model=JoinDMConfig, summary="Get JoinDM config") async def get_guild_joindm(guild_id: int): - config_file = 'jsondb/joindm_messages.json' + config_file = jsondb_path('joindm_messages.json') os.makedirs('jsondb', exist_ok=True) if os.path.exists(config_file): @@ -925,7 +925,7 @@ async def get_guild_joindm(guild_id: int): @router.patch("/{guild_id}/joindm", summary="Update JoinDM config") async def patch_guild_joindm(guild_id: int, data: JoinDMUpdate): - config_file = 'jsondb/joindm_messages.json' + config_file = jsondb_path('joindm_messages.json') os.makedirs('jsondb', exist_ok=True) messages = {} @@ -950,7 +950,7 @@ async def patch_guild_joindm(guild_id: int, data: JoinDMUpdate): @router.get("/{guild_id}/customroles", response_model=CustomRoleConfig, summary="Get CustomRoles config") async def get_guild_customroles(guild_id: int): import aiosqlite - async with aiosqlite.connect('db/customrole.db') as db: + async with aiosqlite.connect(db_path('customrole.db')) as db: async with db.execute("SELECT staff, girl, vip, guest, frnd, reqrole FROM roles WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() if row: @@ -975,7 +975,7 @@ async def patch_guild_customroles(guild_id: int, data: CustomRoleUpdate): try: return int(val) except: return None - async with aiosqlite.connect('db/customrole.db') as db: + async with aiosqlite.connect(db_path('customrole.db')) as db: async with db.execute("SELECT * FROM roles WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() @@ -1000,7 +1000,7 @@ async def patch_guild_customroles(guild_id: int, data: CustomRoleUpdate): return {"status": "success"} @router.get("/{guild_id}/logging", response_model=LoggingConfig, summary="Get Logging config", description="Retrieves the event logging configuration and designated log channels.") -async def get_guild_logging(guild_id: int, bot: "zyrox" = Depends(get_bot)): +async def get_guild_logging(guild_id: int, bot: "HexaHost" = Depends(get_bot)): """ Retrieves the logging configuration for a specific guild. """ @@ -1013,7 +1013,7 @@ async def get_guild_logging(guild_id: int, bot: "zyrox" = Depends(get_bot)): # Try reading from file as fallback import json import os - config_file = "jsondb/logging_config.json" + config_file = jsondb_path("logging_config.json") if os.path.exists(config_file): try: with open(config_file, "r") as f: @@ -1044,7 +1044,7 @@ async def get_guild_logging(guild_id: int, bot: "zyrox" = Depends(get_bot)): ) @router.patch("/{guild_id}/logging", summary="Update Logging config", description="Updates which Discord events are logged and where they are posted.") -async def patch_guild_logging(guild_id: int, data: LoggingUpdate, bot: "zyrox" = Depends(get_bot)): +async def patch_guild_logging(guild_id: int, data: LoggingUpdate, bot: "HexaHost" = Depends(get_bot)): """ Updates the logging configuration for a specific guild. """ @@ -1076,8 +1076,8 @@ async def patch_guild_logging(guild_id: int, data: LoggingUpdate, bot: "zyrox" = return {"status": "success", "guild_id": guild_id} @router.get("/{guild_id}/leveling/leaderboard", response_model=List[LeaderboardEntry], summary="Get leveling leaderboard", description="Returns top users by XP for a specific guild.") -async def get_leveling_leaderboard(guild_id: int, bot: "zyrox" = Depends(get_bot)): - db = await db_manager.get_connection('db/leveling.db') +async def get_leveling_leaderboard(guild_id: int, bot: "HexaHost" = Depends(get_bot)): + db = await db_manager.get_connection(db_path('leveling.db')) cursor = await db.execute( "SELECT user_id, xp FROM user_xp WHERE guild_id = ? ORDER BY xp DESC LIMIT 100", (guild_id,) @@ -1116,7 +1116,7 @@ async def get_leveling_leaderboard(guild_id: int, bot: "zyrox" = Depends(get_bot return leaderboard @router.get("/{guild_id}/channels", response_model=List[DiscordChannel], summary="Get guild channels", description="Returns a list of all channels for the specific guild.") -async def get_guild_channels(guild_id: int, bot: "zyrox" = Depends(get_bot)): +async def get_guild_channels(guild_id: int, bot: "HexaHost" = Depends(get_bot)): guild = bot.get_guild(guild_id) if not guild: raise HTTPException(status_code=404, detail="Guild not found") @@ -1136,7 +1136,7 @@ async def get_guild_channels(guild_id: int, bot: "zyrox" = Depends(get_bot)): return channels @router.get("/{guild_id}/roles", response_model=List[DiscordRole], summary="Get guild roles", description="Returns a list of roles for the specific guild.") -async def get_guild_roles(guild_id: int, bot: "zyrox" = Depends(get_bot)): +async def get_guild_roles(guild_id: int, bot: "HexaHost" = Depends(get_bot)): guild = bot.get_guild(guild_id) if not guild: raise HTTPException(status_code=404, detail="Guild not found") @@ -1164,7 +1164,7 @@ async def get_guild_roles(guild_id: int, bot: "zyrox" = Depends(get_bot)): @router.get("/{guild_id}/autoreact", response_model=AutoReactConfig, summary="Get AutoReact config") async def get_guild_autoreact(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/autoreact.db") as db: + async with aiosqlite.connect(db_path("autoreact.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS autoreact ( guild_id INTEGER, @@ -1185,7 +1185,7 @@ async def get_guild_autoreact(guild_id: int): @router.get("/{guild_id}/invcrole", response_model=InvcConfig, summary="Get Invc Role config") async def get_guild_invcrole(guild_id: int): - db = await db_manager.get_connection('db/invc.db') + db = await db_manager.get_connection(db_path('invc.db')) # Use execute instead of with for shared connection await db.execute(""" CREATE TABLE IF NOT EXISTS vcroles ( @@ -1209,7 +1209,7 @@ async def get_guild_invcrole(guild_id: int): @router.patch("/{guild_id}/invcrole", summary="Update Invc Role config") async def patch_guild_invcrole(guild_id: int, data: InvcUpdate): - db = await db_manager.get_connection('db/invc.db') + db = await db_manager.get_connection(db_path('invc.db')) # Get existing row to merge cursor = await db.execute("SELECT role_id, enabled FROM vcroles WHERE guild_id = ?", (guild_id,)) @@ -1246,7 +1246,7 @@ async def patch_guild_invcrole(guild_id: int, data: InvcUpdate): @router.get("/{guild_id}/autoreact", response_model=AutoReactConfig, summary="Get AutoReact config") async def get_guild_autoreact(guild_id: int): import aiosqlite - async with aiosqlite.connect("db/autoreact.db") as db: + async with aiosqlite.connect(db_path("autoreact.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS autoreact ( guild_id INTEGER, @@ -1264,7 +1264,7 @@ async def get_guild_autoreact(guild_id: int): @router.patch("/{guild_id}/autoreact", summary="Update AutoReact config") async def patch_guild_autoreact(guild_id: int, data: AutoReactUpdate): - db = await db_manager.get_connection("db/autoreact.db") + db = await db_manager.get_connection(db_path("autoreact.db")) await db.execute(""" CREATE TABLE IF NOT EXISTS autoreact ( guild_id INTEGER, @@ -1287,7 +1287,7 @@ async def get_guild_invites(guild_id: int): table_name = f"invites_{guild_id}" data_list = [] - db = await db_manager.get_connection("db/invite.db") + db = await db_manager.get_connection(db_path("invite.db")) # Check if table exists async with db.execute("SELECT name FROM sqlite_master WHERE type='table' AND name=?", (table_name,)) as cursor: exists = await cursor.fetchone() diff --git a/bot/api/schemas.py b/bot/api/schemas.py index d128ef6..c567244 100644 --- a/bot/api/schemas.py +++ b/bot/api/schemas.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/api/server.py b/bot/api/server.py index b33ee22..640736c 100644 --- a/bot/api/server.py +++ b/bot/api/server.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -53,8 +52,8 @@ async def lifespan(app: FastAPI): def create_app() -> FastAPI: """ - Initializes the FastAPI application for the CodeX Bot Dashboard. - The bot instance will be attached to app.state.bot in CodeX.py at runtime. + Initializes the FastAPI application for the HexaHost Bot Dashboard. + The bot instance will be attached to app.state.bot in HexaHost.py at runtime. """ app = FastAPI( title=f"{BRAND_NAME} Bot API", diff --git a/bot/cogs/__init__.py b/bot/cogs/__init__.py index c58e30f..2f62e6c 100644 --- a/bot/cogs/__init__.py +++ b/bot/cogs/__init__.py @@ -1,21 +1,22 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations -from core import zyrox -from colorama import Fore, Style, init +from colorama import Fore, Style + +from core import HexaHost +from utils.config import BotName from .commands.help import Help from .commands.general import General @@ -25,7 +26,7 @@ from .commands.welcome import Welcomer from .commands.fun import Fun from .commands.Games import Games from .commands.extra import Extra -from .commands.owner import Owner +from .commands.owner import Owner, Badges from .commands.voice import Voice from .commands.afk import afk from .commands.ignore import Ignore @@ -39,8 +40,6 @@ from .commands.blacklist import Blacklist from .commands.block import Block from .commands.nightmode import Nightmode from .commands.tracking import Tracking -from .commands.owner import Badges -#from .commands.map import Map from .commands.autoresponder import AutoResponder from .commands.customrole import Customrole from .commands.autorole import AutoRole @@ -64,12 +63,12 @@ from .commands.filters import FilterCog from .commands.owner2 import Global from .commands.qr import QR from .commands.vanityroles import VanityRoles -from .commands.reactionroles import ReactionRoles +from .commands.reactionroles import ReactionRoles from .commands.messages import Messages from .commands.fastgreet import FastGreet from .commands.counting import Counting from .commands.j2c import JoinToCreate -from .commands.ai import AI +from .commands.ai import AI from .commands.dms import StaffDMCog from .commands.booster import Booster from .commands.leveling import Leveling @@ -83,9 +82,7 @@ from .commands.Birthday import Birthdays from .commands.nitro import Nitro from .commands.image import ImageCommands from .commands.youtube import Youtube -#____________ Events _____________ -#from .events.autoblacklist import AutoBlacklist from .events.Errors import Errors from .events.on_guild import Guild from .events.autorole import Autorole2 @@ -94,43 +91,37 @@ from .events.greet2 import greet from .events.mention import Mention from .events.react import React from .events.autoreact import AutoReactListener -#from .events.topgg import TopGG -from .events.ai import AIResponses +from .events.ai import AIResponses from .events.stickymessage import StickyMessageListener -########-------HELP-------######## -from .zyrox.antinuke import _antinuke -from .zyrox.extra import _extra -from .zyrox.general import _general -from .zyrox.automod import _automod -from .zyrox.moderation import _moderation -#from .zyrox.inviteTracker import _inviteTracker -from .zyrox.music import _music -from .zyrox.fun import _fun -from .zyrox.games import _games -from .zyrox.ignore import _ignore -from .zyrox.server import _server -from .zyrox.voice import _voice -from .zyrox.welcome import _welcome -from .zyrox.giveaway import _giveaway -from .zyrox.ticket import _ticket -#from .axon.vanityroles import Vanityroles69999 -from .zyrox.logging import _logging -from .zyrox.vanity import _vanity -from .zyrox.inviteTracker import inviteTracker -from .zyrox.counting import _Counting -from .zyrox.j2c import _J2C -from .zyrox.ai import _ai -from .zyrox.booster import __boost -from .zyrox.leveling import _leveling -from .zyrox.sticky import _sticky -from .zyrox.verify import _verify -from .zyrox.encryption import _encrypt -from .zyrox.mc import _mc -from .zyrox.joindm import _joindm -from .zyrox.birth import _birth - -#########ANTINUKE######### +from .hexahost.antinuke import _antinuke +from .hexahost.extra import _extra +from .hexahost.general import _general +from .hexahost.automod import _automod +from .hexahost.moderation import _moderation +from .hexahost.music import _music +from .hexahost.fun import _fun +from .hexahost.games import _games +from .hexahost.ignore import _ignore +from .hexahost.server import _server +from .hexahost.voice import _voice +from .hexahost.welcome import _welcome +from .hexahost.giveaway import _giveaway +from .hexahost.ticket import _ticket +from .hexahost.logging import _logging +from .hexahost.vanity import _vanity +from .hexahost.inviteTracker import inviteTracker +from .hexahost.counting import _Counting +from .hexahost.j2c import _J2C +from .hexahost.ai import _ai +from .hexahost.booster import __boost +from .hexahost.leveling import _leveling +from .hexahost.sticky import _sticky +from .hexahost.verify import _verify +from .hexahost.encryption import _encrypt +from .hexahost.mc import _mc +from .hexahost.joindm import _joindm +from .hexahost.birth import _birth from .antinuke.anti_member_update import AntiMemberUpdate from .antinuke.antiban import AntiBan @@ -150,15 +141,6 @@ from .antinuke.antiwebhook import AntiWebhookUpdate from .antinuke.antiwebhookcr import AntiWebhookCreate from .antinuke.antiwebhookdl import AntiWebhookDelete -#Extra Optional Events - -#from .antinuke.antiemocr import AntiEmojiCreate -#from .antinuke.antiemodl import AntiEmojiDelete -#from .antinuke.antiemoup import AntiEmojiUpdate -#from .antinuke.antisticker import AntiSticker -#from .antinuke.antiunban import AntiUnban - -############ AUTOMOD ############ from .automod.antispam import AntiSpam from .automod.anticaps import AntiCaps from .automod.antilink import AntiLink @@ -166,7 +148,6 @@ from .automod.anti_invites import AntiInvite from .automod.anti_mass_mention import AntiMassMention from .automod.anti_emoji_spam import AntiEmojiSpam - from .moderation.ban import Ban from .moderation.unban import Unban from .moderation.timeout import Mute @@ -183,194 +164,36 @@ from .moderation.moderation import Moderation from .moderation.topcheck import TopCheck from .moderation.snipe import Snipe - -from utils.config import BotName - -async def setup(bot: zyrox): - cogs_to_load = [ - Help, General, Moderation, Automod, Welcomer, Fun, Games, Extra, - Voice, Owner, Customrole, afk, Embed, Media, Ignore, TicketCog, Logging, - Invcrole, Steal, Timer, - Blacklist, Block, Nightmode, Badges, Antinuke, Whitelist, - Unwhitelist, Extraowner, Blackjack, Slots, Guild, Errors, Autorole2, Autorole, greet, AutoResponder, - Mention, AutoRole, React, AntiMemberUpdate, AntiBan, AntiBotAdd, - AntiChannelCreate, AntiChannelDelete, AntiChannelUpdate, AntiEveryone, AntiGuildUpdate, - AntiIntegration, AntiKick, AntiPrune, AntiRoleCreate, AntiRoleDelete, - AntiRoleUpdate, AntiWebhookUpdate, AntiWebhookCreate, - AntiWebhookDelete, AntiSpam, AntiCaps, AntiLink, AntiInvite, AntiMassMention, Stats, Status, NoPrefix, FilterCog, AutoReaction, AutoReactListener, Ban, Unban, Mute, Unmute, Lock, Unlock, Hide, Unhide, Kick, Warn, Role, Message, Moderation, TopCheck, Snipe, Global, QR, VanityRoles, ReactionRoles, Messages, TranslateCog, FastGreet, Jail, inviteTracker,Counting,AI - ] +# Load order preserved from legacy manual registration. +COG_CLASSES: tuple[type, ...] = ( + Help, General, Music, Automod, Welcomer, Fun, Tracking, Games, Extra, + Voice, Owner, Customrole, afk, Embed, Media, Ignore, Invcrole, Giveaway, + Steal, Booster, Timer, Blacklist, Block, Nightmode, Badges, Antinuke, + Whitelist, Unwhitelist, Extraowner, Slots, Blackjack, Stats, Emergency, + Status, NoPrefix, FilterCog, Global, TicketCog, Logging, QR, VanityRoles, + ReactionRoles, Messages, TranslateCog, FastGreet, Jail, JoinToCreate, AI, + StaffDMCog, Leveling, StickyMessage, Verification, Minecraft, encryption, + calculator, joindm, Birthdays, Nitro, ImageCommands, Youtube, + _antinuke, _extra, _general, _automod, _moderation, _music, _fun, _games, + _ignore, _server, _voice, _welcome, _giveaway, _ticket, _logging, _vanity, + inviteTracker, Counting, _Counting, _J2C, _ai, __boost, _leveling, _sticky, + _verify, _encrypt, _mc, _joindm, _birth, + Guild, Errors, Autorole2, Autorole, greet, AutoResponder, Mention, AutoRole, + React, AutoReaction, AutoReactListener, NotifCommands, StickyMessageListener, + AIResponses, + AntiMemberUpdate, AntiBan, AntiBotAdd, AntiChannelCreate, AntiChannelDelete, + AntiChannelUpdate, AntiEveryone, AntiGuildUpdate, AntiIntegration, AntiKick, + AntiPrune, AntiRoleCreate, AntiRoleDelete, AntiRoleUpdate, AntiWebhookUpdate, + AntiWebhookCreate, AntiWebhookDelete, + AntiSpam, AntiCaps, AntiInvite, AntiLink, AntiMassMention, AntiEmojiSpam, + Ban, Unban, Mute, Unmute, Lock, Unlock, Hide, Unhide, Kick, Warn, Role, + Message, Moderation, TopCheck, Snipe, +) - await bot.add_cog(Help(bot)) - await bot.add_cog(General(bot)) - await bot.add_cog(Music(bot)) - await bot.add_cog(Automod(bot)) - await bot.add_cog(Welcomer(bot)) - await bot.add_cog(Fun(bot)) - await bot.add_cog(Tracking(bot)) - await bot.add_cog(Games(bot)) - await bot.add_cog(Extra(bot)) - await bot.add_cog(Voice(bot)) - await bot.add_cog(Owner(bot)) - await bot.add_cog(Customrole(bot)) - await bot.add_cog(afk(bot)) - await bot.add_cog(Embed(bot)) - await bot.add_cog(Media(bot)) - await bot.add_cog(Ignore(bot)) - await bot.add_cog(Invcrole(bot)) - await bot.add_cog(Giveaway(bot)) - await bot.add_cog(Steal(bot)) - await bot.add_cog(Booster(bot)) - await bot.add_cog(Timer(bot)) - await bot.add_cog(Blacklist(bot)) - await bot.add_cog(Block(bot)) - await bot.add_cog(Nightmode(bot)) - await bot.add_cog(Badges(bot)) - await bot.add_cog(Antinuke(bot)) - await bot.add_cog(Whitelist(bot)) - await bot.add_cog(Unwhitelist(bot)) - await bot.add_cog(Extraowner(bot)) - await bot.add_cog(Slots(bot)) - await bot.add_cog(Blackjack(bot)) - await bot.add_cog(Stats(bot)) - await bot.add_cog(Emergency(bot)) - await bot.add_cog(Status(bot)) - await bot.add_cog(NoPrefix(bot)) - await bot.add_cog(FilterCog(bot)) - await bot.add_cog(Global(bot)) - # await bot.add_cog(Map(bot)) - await bot.add_cog(TicketCog(bot)) - await bot.add_cog(Logging(bot)) - await bot.add_cog(QR(bot)) - await bot.add_cog(VanityRoles(bot)) - await bot.add_cog(ReactionRoles(bot)) - await bot.add_cog(Messages(bot)) - await bot.add_cog(TranslateCog(bot)) - await bot.add_cog(FastGreet(bot)) - await bot.add_cog(Jail(bot)) - await bot.add_cog(JoinToCreate(bot)) - await bot.add_cog(AI(bot)) - await bot.add_cog(StaffDMCog(bot)) - await bot.add_cog(Leveling(bot)) - await bot.add_cog(StickyMessage(bot)) - await bot.add_cog(Verification(bot)) - await bot.add_cog(Minecraft(bot)) - await bot.add_cog(encryption(bot)) - await bot.add_cog(calculator(bot)) - await bot.add_cog(joindm(bot)) - await bot.add_cog(Birthdays(bot)) - await bot.add_cog(Nitro(bot)) - await bot.add_cog(ImageCommands(bot)) - await bot.add_cog(Youtube(bot)) +async def setup(bot: HexaHost) -> None: + for cog_cls in COG_CLASSES: + await bot.add_cog(cog_cls(bot)) + print(Fore.RED + Style.BRIGHT + f"Loaded cog: {cog_cls.__name__}") - await bot.add_cog(_antinuke(bot)) - await bot.add_cog(_extra(bot)) - await bot.add_cog(_general(bot)) - await bot.add_cog(_automod(bot)) - await bot.add_cog(_moderation(bot)) - await bot.add_cog(_music(bot)) - await bot.add_cog(_fun(bot)) - await bot.add_cog(_games(bot)) - await bot.add_cog(_ignore(bot)) - await bot.add_cog(_server(bot)) - await bot.add_cog(_voice(bot)) - await bot.add_cog(_welcome(bot)) - await bot.add_cog(_giveaway(bot)) - await bot.add_cog(_ticket(bot)) - await bot.add_cog(_logging(bot)) - await bot.add_cog(_vanity(bot)) - await bot.add_cog(inviteTracker(bot)) - await bot.add_cog(Counting(bot)) - await bot.add_cog(_Counting(bot)) - await bot.add_cog(_J2C(bot)) - await bot.add_cog(_ai(bot)) - await bot.add_cog(__boost(bot)) - await bot.add_cog(_leveling(bot)) - await bot.add_cog(_sticky(bot)) - await bot.add_cog(_verify(bot)) - await bot.add_cog(_encrypt(bot)) - await bot.add_cog(_mc(bot)) - await bot.add_cog(_joindm(bot)) - await bot.add_cog(_birth(bot)) - - - - #await bot.add_cog(AutoBlacklist(bot)) - await bot.add_cog(Guild(bot)) - await bot.add_cog(Errors(bot)) - await bot.add_cog(Autorole2(bot)) - await bot.add_cog(Autorole(bot)) - await bot.add_cog(greet(bot)) - await bot.add_cog(AutoResponder(bot)) - await bot.add_cog(Mention(bot)) - await bot.add_cog(AutoRole(bot)) - await bot.add_cog(React(bot)) - await bot.add_cog(AutoReaction(bot)) - await bot.add_cog(AutoReactListener(bot)) - await bot.add_cog(NotifCommands(bot)) - await bot.add_cog(StickyMessageListener(bot)) - await bot.add_cog(AIResponses(bot)) - - - await bot.add_cog(AntiMemberUpdate(bot)) - await bot.add_cog(AntiBan(bot)) - await bot.add_cog(AntiBotAdd(bot)) - await bot.add_cog(AntiChannelCreate(bot)) - await bot.add_cog(AntiChannelDelete(bot)) - await bot.add_cog(AntiChannelUpdate(bot)) - await bot.add_cog(AntiEveryone(bot)) - await bot.add_cog(AntiGuildUpdate(bot)) - await bot.add_cog(AntiIntegration(bot)) - await bot.add_cog(AntiKick(bot)) - await bot.add_cog(AntiPrune(bot)) - await bot.add_cog(AntiRoleCreate(bot)) - await bot.add_cog(AntiRoleDelete(bot)) - await bot.add_cog(AntiRoleUpdate(bot)) - await bot.add_cog(AntiWebhookUpdate(bot)) - await bot.add_cog(AntiWebhookCreate(bot)) - await bot.add_cog(AntiWebhookDelete(bot)) - - -#Extra Optional Events - - #await bot.add_cog(AntiEmojiCreate(bot)) - #await bot.add_cog(AntiEmojiDelete(bot)) - #await bot.add_cog(AntiEmojiUpdate(bot)) - #await bot.add_cog(AntiSticker(bot)) - #await bot.add_cog(AntiUnban(bot)) - - - await bot.add_cog(AntiSpam(bot)) - await bot.add_cog(AntiCaps(bot)) - await bot.add_cog(AntiInvite(bot)) - await bot.add_cog(AntiLink(bot)) - await bot.add_cog(AntiMassMention(bot)) - await bot.add_cog(AntiEmojiSpam(bot)) - - - - - - - - await bot.add_cog(Ban(bot)) - await bot.add_cog(Unban(bot)) - await bot.add_cog(Mute(bot)) - await bot.add_cog(Unmute(bot)) - await bot.add_cog(Lock(bot)) - await bot.add_cog(Unlock(bot)) - await bot.add_cog(Hide(bot)) - await bot.add_cog(Unhide(bot)) - await bot.add_cog(Kick(bot)) - await bot.add_cog(Warn(bot)) - await bot.add_cog(Role(bot)) - await bot.add_cog(Message(bot)) - await bot.add_cog(Moderation(bot)) - await bot.add_cog(TopCheck(bot)) - await bot.add_cog(Snipe(bot)) - - - - for cog in cogs_to_load: - print(Fore.RED + Style.BRIGHT + f"Loaded cog: {cog.__name__}") - print(Fore.RED + Style.BRIGHT + f"All {BotName} Cogs loaded successfully.") + print(Fore.RED + Style.BRIGHT + f"All {BotName} Cogs loaded successfully.") diff --git a/bot/cogs/antinuke/antiIntegration.py b/bot/cogs/antinuke/antiIntegration.py index 09fbc64..7170348 100644 --- a/bot/cogs/antinuke/antiIntegration.py +++ b/bot/cogs/antinuke/antiIntegration.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -61,7 +61,7 @@ class AntiIntegration(commands.Cog): return True async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -70,7 +70,7 @@ class AntiIntegration(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() @@ -89,7 +89,7 @@ class AntiIntegration(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT owner_id FROM extraowners WHERE guild_id = ? AND owner_id = ?", (guild.id, executor.id)) as cursor: extraowner_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/anti_member_update.py b/bot/cogs/antinuke/anti_member_update.py index 0d97c7c..5c9ba5e 100644 --- a/bot/cogs/antinuke/anti_member_update.py +++ b/bot/cogs/antinuke/anti_member_update.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -26,7 +26,7 @@ class AntiMemberUpdate(commands.Cog): self.cooldowns = {} async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -71,7 +71,7 @@ class AntiMemberUpdate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: @@ -88,7 +88,7 @@ class AntiMemberUpdate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT owner_id FROM extraowners WHERE guild_id = ? AND owner_id = ?", (guild.id, executor.id)) as cursor: extra_owner_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiban.py b/bot/cogs/antinuke/antiban.py index 6898197..ef32bdd 100644 --- a/bot/cogs/antinuke/antiban.py +++ b/bot/cogs/antinuke/antiban.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -59,7 +59,7 @@ class AntiBan(commands.Cog): @commands.Cog.listener() async def on_member_ban(self, guild, user): - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: diff --git a/bot/cogs/antinuke/antibotadd.py b/bot/cogs/antinuke/antibotadd.py index 338e9a7..6fe1076 100644 --- a/bot/cogs/antinuke/antibotadd.py +++ b/bot/cogs/antinuke/antibotadd.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -63,7 +63,7 @@ class AntiBotAdd(commands.Cog): return guild = member.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antichcr.py b/bot/cogs/antinuke/antichcr.py index 9ea0b30..973ebed 100644 --- a/bot/cogs/antinuke/antichcr.py +++ b/bot/cogs/antinuke/antichcr.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -89,7 +89,7 @@ class AntiChannelCreate(commands.Cog): async def on_guild_channel_create(self, channel): guild = channel.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: diff --git a/bot/cogs/antinuke/antichdl.py b/bot/cogs/antinuke/antichdl.py index 9a28796..fd2610a 100644 --- a/bot/cogs/antinuke/antichdl.py +++ b/bot/cogs/antinuke/antichdl.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -60,7 +60,7 @@ class AntiChannelDelete(commands.Cog): @commands.Cog.listener() async def on_guild_channel_delete(self, channel): guild = channel.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: diff --git a/bot/cogs/antinuke/antichup.py b/bot/cogs/antinuke/antichup.py index 2497838..4128d76 100644 --- a/bot/cogs/antinuke/antichup.py +++ b/bot/cogs/antinuke/antichup.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -60,7 +60,7 @@ class AntiChannelUpdate(commands.Cog): @commands.Cog.listener() async def on_guild_channel_update(self, before, after): guild = before.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: diff --git a/bot/cogs/antinuke/antieveryone.py b/bot/cogs/antinuke/antieveryone.py index d50dd9c..6910c60 100644 --- a/bot/cogs/antinuke/antieveryone.py +++ b/bot/cogs/antinuke/antieveryone.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -44,7 +44,7 @@ class AntiEveryone(commands.Cog): guild = message.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiguild.py b/bot/cogs/antinuke/antiguild.py index c408286..35a0a0e 100644 --- a/bot/cogs/antinuke/antiguild.py +++ b/bot/cogs/antinuke/antiguild.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -61,7 +61,7 @@ class AntiGuildUpdate(commands.Cog): return True async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -71,7 +71,7 @@ class AntiGuildUpdate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() @@ -93,7 +93,7 @@ class AntiGuildUpdate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT serverup FROM whitelisted_users WHERE guild_id = ? AND user_id = ?", (guild.id, executor.id)) as cursor: whitelist_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antikick.py b/bot/cogs/antinuke/antikick.py index 8722b2d..5c9ca95 100644 --- a/bot/cogs/antinuke/antikick.py +++ b/bot/cogs/antinuke/antikick.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -26,7 +26,7 @@ class AntiKick(commands.Cog): self.cooldowns = {} async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -70,7 +70,7 @@ class AntiKick(commands.Cog): if await self.is_blacklisted_guild(member.guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (member.guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: @@ -87,7 +87,7 @@ class AntiKick(commands.Cog): if executor.id in {member.guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT owner_id FROM extraowners WHERE guild_id = ? AND owner_id = ?", (member.guild.id, executor.id)) as cursor: extraowner_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiprune.py b/bot/cogs/antinuke/antiprune.py index f0105a3..4282222 100644 --- a/bot/cogs/antinuke/antiprune.py +++ b/bot/cogs/antinuke/antiprune.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -42,7 +42,7 @@ class AntiPrune(commands.Cog): @commands.Cog.listener() async def on_member_remove(self, member): guild = member.guild - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antirlcr.py b/bot/cogs/antinuke/antirlcr.py index eab7311..0f7b7be 100644 --- a/bot/cogs/antinuke/antirlcr.py +++ b/bot/cogs/antinuke/antirlcr.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -26,7 +26,7 @@ class AntiRoleCreate(commands.Cog): self.cooldowns = {} async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -71,7 +71,7 @@ class AntiRoleCreate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: @@ -89,7 +89,7 @@ class AntiRoleCreate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT owner_id FROM extraowners WHERE guild_id = ? AND owner_id = ?", (guild.id, executor.id)) as cursor: extra_owner_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antirldl.py b/bot/cogs/antinuke/antirldl.py index a005c5f..2fe7adc 100644 --- a/bot/cogs/antinuke/antirldl.py +++ b/bot/cogs/antinuke/antirldl.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -26,7 +26,7 @@ class AntiRoleDelete(commands.Cog): self.cooldowns = {} async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -71,7 +71,7 @@ class AntiRoleDelete(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: @@ -89,7 +89,7 @@ class AntiRoleDelete(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT owner_id FROM extraowners WHERE guild_id = ? AND owner_id = ?", (guild.id, executor.id)) as cursor: extra_owner_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antirlup.py b/bot/cogs/antinuke/antirlup.py index 5a77804..09dcf8b 100644 --- a/bot/cogs/antinuke/antirlup.py +++ b/bot/cogs/antinuke/antirlup.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -26,7 +26,7 @@ class AntiRoleUpdate(commands.Cog): self.cooldowns = {} async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -71,7 +71,7 @@ class AntiRoleUpdate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() if not antinuke_status or not antinuke_status[0]: @@ -89,7 +89,7 @@ class AntiRoleUpdate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT rlup FROM whitelisted_users WHERE guild_id = ? AND user_id = ?", (guild.id, executor.id)) as cursor: whitelist_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiwebhook.py b/bot/cogs/antinuke/antiwebhook.py index 24c653b..f2382a5 100644 --- a/bot/cogs/antinuke/antiwebhook.py +++ b/bot/cogs/antinuke/antiwebhook.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -58,7 +58,7 @@ class AntiWebhookUpdate(commands.Cog): return True async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -68,7 +68,7 @@ class AntiWebhookUpdate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() @@ -87,7 +87,7 @@ class AntiWebhookUpdate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT mngweb FROM whitelisted_users WHERE guild_id = ? AND user_id = ?", (guild.id, executor.id)) as cursor: whitelist_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiwebhookcr.py b/bot/cogs/antinuke/antiwebhookcr.py index bc43032..4fcc84c 100644 --- a/bot/cogs/antinuke/antiwebhookcr.py +++ b/bot/cogs/antinuke/antiwebhookcr.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -58,7 +58,7 @@ class AntiWebhookCreate(commands.Cog): return True async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -68,7 +68,7 @@ class AntiWebhookCreate(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() @@ -87,7 +87,7 @@ class AntiWebhookCreate(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT mngweb FROM whitelisted_users WHERE guild_id = ? AND user_id = ?", (guild.id, executor.id)) as cursor: whitelist_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/antiwebhookdl.py b/bot/cogs/antinuke/antiwebhookdl.py index efd4d90..189e95f 100644 --- a/bot/cogs/antinuke/antiwebhookdl.py +++ b/bot/cogs/antinuke/antiwebhookdl.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -58,7 +58,7 @@ class AntiWebhookDelete(commands.Cog): return True async def is_blacklisted_guild(self, guild_id): - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: cursor = await block_db.execute("SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (str(guild_id),)) return await cursor.fetchone() is not None @@ -68,7 +68,7 @@ class AntiWebhookDelete(commands.Cog): if await self.is_blacklisted_guild(guild.id): return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() @@ -87,7 +87,7 @@ class AntiWebhookDelete(commands.Cog): if executor.id in {guild.owner_id, self.bot.user.id}: return - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT mngweb FROM whitelisted_users WHERE guild_id = ? AND user_id = ?", (guild.id, executor.id)) as cursor: whitelist_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/extra events (unused)/antiemocr.py b/bot/cogs/antinuke/extra events (unused)/antiemocr.py index d11dcf1..6ddb6d0 100644 --- a/bot/cogs/antinuke/extra events (unused)/antiemocr.py +++ b/bot/cogs/antinuke/extra events (unused)/antiemocr.py @@ -1,3 +1,4 @@ +from utils.db_paths import db_path import discord from discord.ext import commands import aiosqlite @@ -29,7 +30,7 @@ class AntiEmojiCreate(commands.Cog): @commands.Cog.listener() async def on_guild_emojis_update(self, guild, before, after): if len(after) > len(before): - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/extra events (unused)/antiemodl.py b/bot/cogs/antinuke/extra events (unused)/antiemodl.py index fe18dc5..d2a74fa 100644 --- a/bot/cogs/antinuke/extra events (unused)/antiemodl.py +++ b/bot/cogs/antinuke/extra events (unused)/antiemodl.py @@ -1,3 +1,4 @@ +from utils.db_paths import db_path import discord from discord.ext import commands import aiosqlite @@ -29,7 +30,7 @@ class AntiEmojiDelete(commands.Cog): @commands.Cog.listener() async def on_guild_emojis_update(self, guild, before, after): if len(after) < len(before): - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/extra events (unused)/antiemoup.py b/bot/cogs/antinuke/extra events (unused)/antiemoup.py index bdffc26..93e86ad 100644 --- a/bot/cogs/antinuke/extra events (unused)/antiemoup.py +++ b/bot/cogs/antinuke/extra events (unused)/antiemoup.py @@ -1,3 +1,4 @@ +from utils.db_paths import db_path import discord from discord.ext import commands import aiosqlite @@ -29,7 +30,7 @@ class AntiEmojiUpdate(commands.Cog): @commands.Cog.listener() async def on_guild_emojis_update(self, guild, before, after): if len(after) == len(before): # An emoji was updated - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/extra events (unused)/antisticker.py b/bot/cogs/antinuke/extra events (unused)/antisticker.py index e3ccf9f..1f232c5 100644 --- a/bot/cogs/antinuke/extra events (unused)/antisticker.py +++ b/bot/cogs/antinuke/extra events (unused)/antisticker.py @@ -1,3 +1,4 @@ +from utils.db_paths import db_path import discord from discord.ext import commands from datetime import timedelta, datetime @@ -34,7 +35,7 @@ class AntiSticker(commands.Cog): else: action = discord.AuditLogAction.sticker_update - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/antinuke/extra events (unused)/antiunban.py b/bot/cogs/antinuke/extra events (unused)/antiunban.py index 7087b36..5667ad6 100644 --- a/bot/cogs/antinuke/extra events (unused)/antiunban.py +++ b/bot/cogs/antinuke/extra events (unused)/antiunban.py @@ -1,3 +1,4 @@ +from utils.db_paths import db_path import discord from discord.ext import commands import aiosqlite @@ -26,7 +27,7 @@ class AntiUnban(commands.Cog): @commands.Cog.listener() async def on_member_unban(self, guild, user): - async with aiosqlite.connect('db/anti.db') as db: + async with aiosqlite.connect(db_path('anti.db')) as db: async with db.execute("SELECT status FROM antinuke WHERE guild_id = ?", (guild.id,)) as cursor: antinuke_status = await cursor.fetchone() diff --git a/bot/cogs/automod/anti_emoji_spam.py b/bot/cogs/automod/anti_emoji_spam.py index 574f7b3..526bdea 100644 --- a/bot/cogs/automod/anti_emoji_spam.py +++ b/bot/cogs/automod/anti_emoji_spam.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -26,35 +26,35 @@ class AntiEmojiSpam(commands.Cog): self.emoji_threshold = 5 async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_emoji_spam_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti emoji spam'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti emoji spam'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/automod/anti_invites.py b/bot/cogs/automod/anti_invites.py index 7898bba..418e9a3 100644 --- a/bot/cogs/automod/anti_invites.py +++ b/bot/cogs/automod/anti_invites.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -26,35 +26,35 @@ class AntiInvite(commands.Cog): self.invite_pattern = re.compile(r'(https?://)?(www\.)?(discord\.gg|discordapp\.com/invite|discord\.com/invite)/\S+') async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_invites_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti invites'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti invites'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/automod/anti_mass_mention.py b/bot/cogs/automod/anti_mass_mention.py index 54864ec..7400d4d 100644 --- a/bot/cogs/automod/anti_mass_mention.py +++ b/bot/cogs/automod/anti_mass_mention.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -25,36 +25,36 @@ class AntiMassMention(commands.Cog): self.mass_mention_threshold = 5 async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_mass_mention_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti mass mention'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti mass mention'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/automod/anticaps.py b/bot/cogs/automod/anticaps.py index 231ed96..339e810 100644 --- a/bot/cogs/automod/anticaps.py +++ b/bot/cogs/automod/anticaps.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -26,35 +26,35 @@ class AntiCaps(commands.Cog): self.mute_duration = 2 * 60 async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_caps_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti caps'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti caps'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/automod/antilink.py b/bot/cogs/automod/antilink.py index de607ab..9c08530 100644 --- a/bot/cogs/automod/antilink.py +++ b/bot/cogs/automod/antilink.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -29,35 +29,35 @@ class AntiLink(commands.Cog): self.spotify_pattern = re.compile(r'^https://open\.spotify\.com/track/\S+') async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_link_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti link'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti link'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/automod/antispam.py b/bot/cogs/automod/antispam.py index 812f02b..38b183b 100644 --- a/bot/cogs/automod/antispam.py +++ b/bot/cogs/automod/antispam.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -27,36 +27,36 @@ class AntiSpam(commands.Cog): self.recent_messages = {} async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def is_anti_spam_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti spam'", (guild_id,)) result = await cursor.fetchone() return result is not None async def get_ignored_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_ignored_roles(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) return [row[0] for row in await cursor.fetchall()] async def get_punishment(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti spam'", (guild_id,)) result = await cursor.fetchone() return result[0] if result else None async def log_action(self, guild, user, channel, action, reason): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild.id,)) log_channel_id = await cursor.fetchone() diff --git a/bot/cogs/commands/Birthday.py b/bot/cogs/commands/Birthday.py index 70c925e..fa7b0d8 100644 --- a/bot/cogs/commands/Birthday.py +++ b/bot/cogs/commands/Birthday.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import jsondb_path import discord from discord.ext import commands, tasks @@ -56,7 +56,7 @@ class Birthdays(commands.Cog): @commands.has_permissions(administrator=True) @commands.guild_only() async def birthday_setup(self, ctx: commands.Context, channel: discord.TextChannel, role: discord.Role): - db = read_db('jsondb/birthday_logs.json') + db = read_db(jsondb_path('birthday_logs.json')) guild_id = str(ctx.guild.id) if guild_id not in db: @@ -65,7 +65,7 @@ class Birthdays(commands.Cog): db[guild_id]["birthday_channel_id"] = channel.id db[guild_id]["birthday_role_id"] = role.id - write_db('jsondb/birthday_logs.json', db) + write_db(jsondb_path('birthday_logs.json'), db) await ctx.send(view=CV2("Birthday Setup", f"Birthday log channel set to {channel.mention} and birthday role set to {role.mention}.")) @@ -104,9 +104,9 @@ class Birthdays(commands.Cog): return date = f"{month}-{day}-{year}" - db = read_db('jsondb/birthdays.json') + db = read_db(jsondb_path('birthdays.json')) db[str(ctx.author.id)] = date - write_db('jsondb/birthdays.json', db) + write_db(jsondb_path('birthdays.json'), db) await ctx.send(view=CV2("Success", f"Your birthday has been set to {date}.")) except asyncio.TimeoutError: @@ -117,11 +117,11 @@ class Birthdays(commands.Cog): help="Remove your birthday.") @commands.guild_only() async def remove_birthday(self, ctx: commands.Context): - db = read_db('jsondb/birthdays.json') + db = read_db(jsondb_path('birthdays.json')) if str(ctx.author.id) in db: del db[str(ctx.author.id)] - write_db('jsondb/birthdays.json', db) + write_db(jsondb_path('birthdays.json'), db) await ctx.send(view=CV2("Success", "Your birthday has been removed.")) else: await ctx.send(view=CV2("Error", "You have no birthday set.")) @@ -133,7 +133,7 @@ class Birthdays(commands.Cog): async def list_birthdays(self, ctx: commands.Context): now = datetime.datetime.now() today_date = now.strftime("%m-%d") - db = read_db('jsondb/birthdays.json') + db = read_db(jsondb_path('birthdays.json')) members_with_birthday = [ctx.guild.get_member(int(user_id)) for user_id, date in db.items() if date.startswith(today_date)] @@ -148,7 +148,7 @@ class Birthdays(commands.Cog): help="Check your birthday.") @commands.guild_only() async def check_birthday(self, ctx: commands.Context): - db = read_db('jsondb/birthdays.json') + db = read_db(jsondb_path('birthdays.json')) if str(ctx.author.id) in db: date = db[str(ctx.author.id)] @@ -160,8 +160,8 @@ class Birthdays(commands.Cog): async def check_birthdays(self): now = datetime.datetime.now() today_date = now.strftime("%m-%d") - db = read_db('jsondb/birthdays.json') - guild_settings = read_db('jsondb/birthday_logs.json') + db = read_db(jsondb_path('birthdays.json')) + guild_settings = read_db(jsondb_path('birthday_logs.json')) for user_id, birthday in db.items(): if birthday.startswith(today_date): diff --git a/bot/cogs/commands/Embed.py b/bot/cogs/commands/Embed.py index 4d8e982..a97a82f 100644 --- a/bot/cogs/commands/Embed.py +++ b/bot/cogs/commands/Embed.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/Games.py b/bot/cogs/commands/Games.py index 12043d3..44eb058 100644 --- a/bot/cogs/commands/Games.py +++ b/bot/cogs/commands/Games.py @@ -1,21 +1,20 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ import discord from discord.ext import commands import os -from core import Cog, zyrox, Context +from core import Cog, HexaHost, Context import games as games from utils.Tools import * from utils.cv2 import CV2 @@ -26,9 +25,9 @@ import asyncio class Games(Cog): - """Zyrox Games""" + """HexaHost Games""" - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self.client = client diff --git a/bot/cogs/commands/Invc.py b/bot/cogs/commands/Invc.py index 6edda7c..6f56777 100644 --- a/bot/cogs/commands/Invc.py +++ b/bot/cogs/commands/Invc.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -23,7 +23,7 @@ from utils.config import * class Invcrole(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = 'db/invc.db' + self.db_path = db_path('invc.db') self.bot.loop.create_task(self.create_table()) async def create_table(self): diff --git a/bot/cogs/commands/Media.py b/bot/cogs/commands/Media.py index 694c579..9154b5d 100644 --- a/bot/cogs/commands/Media.py +++ b/bot/cogs/commands/Media.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord import aiosqlite @@ -27,7 +27,7 @@ class Media(commands.Cog): async def set_db(self): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: await db.execute(''' CREATE TABLE IF NOT EXISTS media_channels ( guild_id INTEGER PRIMARY KEY, @@ -62,7 +62,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def setup(self, ctx, *, channel: discord.TextChannel): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT channel_id FROM media_channels WHERE guild_id = ?', (ctx.guild.id,)) as cursor: result = await cursor.fetchone() if result: @@ -80,7 +80,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def remove(self, ctx): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT channel_id FROM media_channels WHERE guild_id = ?', (ctx.guild.id,)) as cursor: result = await cursor.fetchone() if not result: @@ -98,7 +98,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def config(self, ctx): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT channel_id FROM media_channels WHERE guild_id = ?', (ctx.guild.id,)) as cursor: result = await cursor.fetchone() if not result: @@ -124,7 +124,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def bypass_add(self, ctx, user: discord.Member): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT COUNT(*) FROM media_bypass WHERE guild_id = ?', (ctx.guild.id,)) as cursor: count = await cursor.fetchone() if count[0] >= 25: @@ -148,7 +148,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def bypass_remove(self, ctx, user: discord.Member): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT 1 FROM media_bypass WHERE guild_id = ? AND user_id = ?', (ctx.guild.id, user.id)) as cursor: result = await cursor.fetchone() if not result: @@ -166,7 +166,7 @@ class Media(commands.Cog): @commands.cooldown(1, 3, commands.BucketType.user) @commands.has_permissions(administrator=True) async def bypass_show(self, ctx): - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT user_id FROM media_bypass WHERE guild_id = ?', (ctx.guild.id,)) as cursor: result = await cursor.fetchall() if not result: @@ -183,16 +183,16 @@ class Media(commands.Cog): if message.author.bot: return - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT channel_id FROM media_channels WHERE guild_id = ?', (message.guild.id,)) as cursor: media_channel = await cursor.fetchone() if media_channel and message.channel.id == media_channel[0]: - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: async with block_db.execute('SELECT 1 FROM user_blacklist WHERE user_id = ?', (message.author.id,)) as cursor: blacklisted = await cursor.fetchone() - async with aiosqlite.connect('db/media.db') as db: + async with aiosqlite.connect(db_path('media.db')) as db: async with db.execute('SELECT 1 FROM media_bypass WHERE guild_id = ? AND user_id = ?', (message.guild.id, message.author.id)) as cursor: bypassed = await cursor.fetchone() @@ -221,7 +221,7 @@ class Media(commands.Cog): ] if len(self.infractions[message.author.id]) >= 5: - async with aiosqlite.connect('db/block.db') as block_db: + async with aiosqlite.connect(db_path('block.db')) as block_db: await block_db.execute('INSERT OR IGNORE INTO user_blacklist (user_id) VALUES (?)', (message.author.id,)) await block_db.commit() diff --git a/bot/cogs/commands/afk.py b/bot/cogs/commands/afk.py index e697ec9..498bdb7 100644 --- a/bot/cogs/commands/afk.py +++ b/bot/cogs/commands/afk.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -24,7 +24,7 @@ from utils.cv2 import CV2, build_container from utils.emoji import TICK, MENTION, SEED, TIME from utils.config import * -DB_PATH = "db/afk.db" +DB_PATH = db_path("afk.db") THEME_COLOR = 0xFF0000 FOOTER_TEXT = f"Developed by {BRAND_NAME}" diff --git a/bot/cogs/commands/ai.py b/bot/cogs/commands/ai.py index 20a6459..50acbae 100644 --- a/bot/cogs/commands/ai.py +++ b/bot/cogs/commands/ai.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import os import discord @@ -323,7 +323,7 @@ class AI (commands .Cog ): import os - db_path ="db/ai_data.db" + db_path =db_path("ai_data.db") if os .path .exists (db_path ): try : @@ -401,7 +401,7 @@ class AI (commands .Cog ): import aiosqlite import os - db_path ="db/ai_data.db" + db_path =db_path("ai_data.db") if not os .path .exists (db_path ): logger .info ("AI database doesn't exist, will be created on first use") return @@ -590,7 +590,7 @@ class AI (commands .Cog ): system_context .append ({ "role":"system", - "content":"You are a Discord bot with many features including moderation, entertainment, music, games, AI capabilities, and utilities. Support server: https://discord.gg/codexdev" + "content":"You are a Discord bot with many features including moderation, entertainment, music, games, AI capabilities, and utilities. Support server: https://discord.gg/hexahost" }) else : @@ -602,7 +602,7 @@ You have a caring, helpful personality and can remember conversations with users Be natural, conversational, and genuine in your responses. Don't be overly formal or robotic. Use the conversation history to provide personalized responses that feel like talking to a real friend who happens to be very knowledgeable and helpful. -Support server: https://discord.gg/codexdev""" +Support server: https://discord.gg/hexahost""" }) diff --git a/bot/cogs/commands/anti_unwl.py b/bot/cogs/commands/anti_unwl.py index 78b9629..d0b9a46 100644 --- a/bot/cogs/commands/anti_unwl.py +++ b/bot/cogs/commands/anti_unwl.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, MANAGER, REDDOT, TICK @@ -31,7 +31,7 @@ class Unwhitelist(commands.Cog): #@commands.Cog.listener() async def initialize_db(self): - self.db = await aiosqlite.connect('db/anti.db') + self.db = await aiosqlite.connect(db_path('anti.db')) @commands.hybrid_command(name='unwhitelist', aliases=['unwl'], help="Unwhitelist a user from antinuke") @commands.has_permissions(administrator=True) diff --git a/bot/cogs/commands/anti_wl.py b/bot/cogs/commands/anti_wl.py index 8d4be7b..88f221d 100644 --- a/bot/cogs/commands/anti_wl.py +++ b/bot/cogs/commands/anti_wl.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import ARROWRED, CROSS, DISABLE, ENABLE, MANAGER, TICK @@ -32,7 +32,7 @@ class Whitelist(commands.Cog): #@commands.Cog.listener() async def initialize_db(self): - self.db = await aiosqlite.connect('db/anti.db') + self.db = await aiosqlite.connect(db_path('anti.db')) await self.db.execute(''' CREATE TABLE IF NOT EXISTS whitelisted_users ( guild_id INTEGER, diff --git a/bot/cogs/commands/antinuke.py b/bot/cogs/commands/antinuke.py index 52f0cbc..56c5268 100644 --- a/bot/cogs/commands/antinuke.py +++ b/bot/cogs/commands/antinuke.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, EMOTE, TICK, ZSAFE, ZSETTINGS @@ -31,7 +31,7 @@ class Antinuke(commands.Cog): self.bot.loop.create_task(self.initialize_db()) async def initialize_db(self): - self.db = await aiosqlite.connect('db/anti.db') + self.db = await aiosqlite.connect(db_path('anti.db')) await self.db.execute(''' CREATE TABLE IF NOT EXISTS antinuke ( guild_id INTEGER PRIMARY KEY, diff --git a/bot/cogs/commands/automod.py b/bot/cogs/commands/automod.py index 035c5e9..59f6fa3 100644 --- a/bot/cogs/commands/automod.py +++ b/bot/cogs/commands/automod.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, DISABLE, ENABLE, TICK, TICK_ALT @@ -113,7 +113,7 @@ class Automod(commands.Cog): self.bot.loop.create_task(self.init_db()) async def get_exempt_roles_channels(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: roles_cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'role'", (guild_id,)) channels_cursor = await db.execute("SELECT id FROM automod_ignored WHERE guild_id = ? AND type = 'channel'", (guild_id,)) @@ -124,18 +124,18 @@ class Automod(commands.Cog): async def is_automod_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT enabled FROM automod WHERE guild_id = ?", (guild_id,)) result = await cursor.fetchone() return result is not None and result[0] == 1 async def update_punishments(self, guild_id, event, punishment): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("INSERT OR REPLACE INTO automod_punishments (guild_id, event, punishment) VALUES (?, ?, ?)", (guild_id, event, punishment)) await db.commit() async def get_current_punishments(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: async with db.execute( "SELECT event, punishment FROM automod_punishments WHERE guild_id = ? AND event != 'Anti NSFW link'", (guild_id,) @@ -143,7 +143,7 @@ class Automod(commands.Cog): return await cursor.fetchall() async def is_anti_nsfw_enabled(self, guild_id): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT punishment FROM automod_punishments WHERE guild_id = ? AND event = 'Anti NSFW link'", (guild_id,)) result = await cursor.fetchone() return result is not None @@ -151,7 +151,7 @@ class Automod(commands.Cog): async def init_db(self): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS automod ( guild_id INTEGER PRIMARY KEY, @@ -271,7 +271,7 @@ class Automod(commands.Cog): async def enable_automod(self, ctx, guild_id, selected_events, interaction): - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("INSERT OR REPLACE INTO automod (guild_id, enabled) VALUES (?, 1)", (guild_id,)) for event in selected_events: await db.execute("INSERT OR REPLACE INTO automod_punishments (guild_id, event, punishment) VALUES (?, ?, ?)", (guild_id, event, self.default_punishment)) @@ -328,7 +328,7 @@ class Automod(commands.Cog): log_channel = await interaction.guild.create_text_channel(f"{BRAND_NAME.lower()}-automod", overwrites=overwrites) guild_id = interaction.guild.id - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("INSERT OR REPLACE INTO automod_logging (guild_id, log_channel) VALUES (?, ?)", (guild_id, log_channel.id)) await db.commit() @@ -440,7 +440,7 @@ class Automod(commands.Cog): await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"Uhh, looks like your server hasn\'t enabled Automoderation.\n\nCurrent Status: {DISABLE} Disabled\nTo Enable use `{ctx.prefix}automod enable`")) return - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT 1 FROM automod_ignored WHERE guild_id = ? AND type = 'channel' AND id = ?", (guild_id, channel.id)) if await cursor.fetchone() is not None: await ctx.send(view=CV2("__Channel Already Whitelisted!__", f"{CROSS} The channel {channel.mention} is already in the ignore list.\n\n➜ Use **{ctx.prefix}automod unignore channel {channel.mention}** to remove it.")) @@ -491,7 +491,7 @@ class Automod(commands.Cog): await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"Uhh, looks like your server hasn\'t enabled Automoderation.\n\nCurrent Status: {DISABLE} Disabled\nTo Enable use `{ctx.prefix}automod enable`")) return - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT 1 FROM automod_ignored WHERE guild_id = ? AND type = 'role' AND id = ?", (guild_id, role.id)) if await cursor.fetchone() is not None: @@ -545,7 +545,7 @@ class Automod(commands.Cog): return - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT type, id FROM automod_ignored WHERE guild_id = ?", (guild_id,)) ignored_items = await cursor.fetchall() @@ -592,7 +592,7 @@ class Automod(commands.Cog): await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"Uhh, looks like your server hasn\'t enabled Automoderation.\n\nCurrent Status: {DISABLE} Disabled\nTo Enable use `{ctx.prefix}automod enable`")) return - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("DELETE FROM automod_ignored WHERE guild_id = ?", (guild_id,)) await db.commit() await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"** {TICK} | All ignored channels and roles have been reset!**\n\nTo view current Automod settings use `{ctx.prefix}automod config`")) @@ -639,7 +639,7 @@ class Automod(commands.Cog): except discord.HTTPException: pass - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: result = await db.execute("DELETE FROM automod_ignored WHERE guild_id = ? AND type = 'channel' AND id = ?", (guild_id, channel.id)) await db.commit() @@ -682,7 +682,7 @@ class Automod(commands.Cog): pass - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: result = await db.execute("DELETE FROM automod_ignored WHERE guild_id = ? AND type = 'role' AND id = ?", (guild_id, role.id)) await db.commit() @@ -719,7 +719,7 @@ class Automod(commands.Cog): elif view.value: - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("DELETE FROM automod WHERE guild_id = ?", (guild_id,)) await db.execute("DELETE FROM automod_punishments WHERE guild_id = ?", (guild_id,)) await db.execute("DELETE FROM automod_ignored WHERE guild_id = ?", (guild_id,)) @@ -768,7 +768,7 @@ class Automod(commands.Cog): items_str.append(f"**{event}**: {punishment or 'None'}") if await self.is_anti_nsfw_enabled(guild_id): items_str.append("**Anti NSFW Links**: Block Message") - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: cursor = await db.execute("SELECT log_channel FROM automod_logging WHERE guild_id = ?", (guild_id,)) log_channel_id = await cursor.fetchone() if log_channel_id and log_channel_id[0]: @@ -799,7 +799,7 @@ class Automod(commands.Cog): await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"Uhh, looks like your server hasn\'t enabled Automoderation.\n\nCurrent Status: {DISABLE} Disabled\nTo Enable use `{ctx.prefix}automod enable`")) return - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("INSERT OR REPLACE INTO automod_logging (guild_id, log_channel) VALUES (?, ?)", (guild_id, channel.id)) await db.commit() await ctx.send(view=CV2(f"Automod Settings for {ctx.guild.name}", f"**{TICK} | Automoderation Logging channel set to {channel.mention}.**\n\n➜ Use `{ctx.prefix}automod config` to view current Automod settings.")) @@ -809,7 +809,7 @@ class Automod(commands.Cog): async def on_guild_remove(self, guild): guild_id = guild.id - async with aiosqlite.connect("db/automod.db") as db: + async with aiosqlite.connect(db_path("automod.db")) as db: await db.execute("DELETE FROM automod WHERE guild_id = ?", (guild_id,)) await db.execute("DELETE FROM automod_punishments WHERE guild_id = ?", (guild_id,)) await db.execute("DELETE FROM automod_ignored WHERE guild_id = ?", (guild_id,)) diff --git a/bot/cogs/commands/autoreact.py b/bot/cogs/commands/autoreact.py index ff32e9e..c1b9e96 100644 --- a/bot/cogs/commands/autoreact.py +++ b/bot/cogs/commands/autoreact.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, ICONS_WARNING, TICK @@ -28,7 +28,7 @@ from utils.cv2 import CV2, build_container class AutoReaction(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = 'db/autoreact.db' + self.db_path = db_path('autoreact.db') self.bot.loop.create_task(self.setup_database()) async def setup_database(self): diff --git a/bot/cogs/commands/autoresponder.py b/bot/cogs/commands/autoresponder.py index 4c64b72..a0e081a 100644 --- a/bot/cogs/commands/autoresponder.py +++ b/bot/cogs/commands/autoresponder.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK @@ -25,7 +25,7 @@ from utils.cv2 import CV2, build_container -DB_PATH = "db/autoresponder.db" +DB_PATH = db_path("autoresponder.db") class AutoResponder(commands.Cog): def __init__(self, bot): diff --git a/bot/cogs/commands/autorole.py b/bot/cogs/commands/autorole.py index 0d9acce..10763a0 100644 --- a/bot/cogs/commands/autorole.py +++ b/bot/cogs/commands/autorole.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations +from utils.db_paths import db_path import discord from utils.emoji import CROSS, ICONS_WARNING, TICK import aiosqlite @@ -33,7 +33,7 @@ logging.basicConfig( datefmt="%H:%M:%S", ) -DATABASE_PATH = 'db/autorole.db' +DATABASE_PATH = db_path('autorole.db') class BasicView(discord.ui.View): def __init__(self, ctx: commands.Context, timeout=60): diff --git a/bot/cogs/commands/blackjack.py b/bot/cogs/commands/blackjack.py index 293232f..9cd0d9c 100644 --- a/bot/cogs/commands/blackjack.py +++ b/bot/cogs/commands/blackjack.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/blacklist.py b/bot/cogs/commands/blacklist.py index 9cc328f..6a113b2 100644 --- a/bot/cogs/commands/blacklist.py +++ b/bot/cogs/commands/blacklist.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK @@ -55,7 +55,7 @@ class BlacklistWordSource(menus.ListPageSource): return embed -DB_PATH = "db/blword.db" +DB_PATH = db_path("blword.db") async def create_blacklist_table(): diff --git a/bot/cogs/commands/block.py b/bot/cogs/commands/block.py index e77a886..061306a 100644 --- a/bot/cogs/commands/block.py +++ b/bot/cogs/commands/block.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK @@ -37,7 +37,7 @@ class Block(commands.Cog): #@commands.Cog.listener() async def set_db(self): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: await db.execute(''' CREATE TABLE IF NOT EXISTS user_blacklist ( user_id INTEGER PRIMARY KEY, @@ -71,7 +71,7 @@ class Block(commands.Cog): @user.command(name="add", help="Adds a user to the blacklist.") @commands.is_owner() async def add_user(self, ctx, user: discord.User): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT user_id FROM user_blacklist WHERE user_id = ?', (user.id,)) if await cursor.fetchone(): await ctx.reply(view=CV2("User Already Blacklisted", f"{user.mention} is already blacklisted.")) @@ -83,7 +83,7 @@ class Block(commands.Cog): @user.command(name="remove", help="Remove a user from the blacklist.") @commands.is_owner() async def remove_user(self, ctx, user: discord.User): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT user_id FROM user_blacklist WHERE user_id = ?', (user.id,)) if not await cursor.fetchone(): await ctx.reply(view=CV2(f"{CROSS} User Not Blacklisted", f"{user.mention} is not in the blacklist.")) @@ -95,7 +95,7 @@ class Block(commands.Cog): @user.command(name="show", aliases=["list"], help="Shows all Blacklisted users.") @commands.is_owner() async def show_users(self, ctx): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT user_id FROM user_blacklist') rows = await cursor.fetchall() if not rows: @@ -135,7 +135,7 @@ class Block(commands.Cog): @guild.command(name="add", help="Adds a guild to the blacklist.") @commands.is_owner() async def add_guild(self, ctx, guild_id: int): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT guild_id FROM guild_blacklist WHERE guild_id = ?', (guild_id,)) if await cursor.fetchone(): await ctx.reply(view=CV2(f"{CROSS} Guild Already Blacklisted", f"Guild with ID `{guild_id}` is already blacklisted.")) @@ -147,7 +147,7 @@ class Block(commands.Cog): @guild.command(name="remove", help="Remove a guild from the blacklist.") @commands.is_owner() async def remove_guild(self, ctx, guild_id: int): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT guild_id FROM guild_blacklist WHERE guild_id = ?', (guild_id,)) if not await cursor.fetchone(): await ctx.reply(view=CV2(f"{CROSS} Guild Not Blacklisted", f"Guild with ID `{guild_id}` is not in the blacklist.")) @@ -160,7 +160,7 @@ class Block(commands.Cog): @guild.command(name="show", aliases=["list"], help="Shows the list of blacklisted guilds") @commands.is_owner() async def show_guilds(self, ctx): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute('SELECT guild_id FROM guild_blacklist') rows = await cursor.fetchall() if not rows: diff --git a/bot/cogs/commands/booster.py b/bot/cogs/commands/booster.py index 3da9cf0..e3f8f33 100644 --- a/bot/cogs/commands/booster.py +++ b/bot/cogs/commands/booster.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ - from __future__ import annotations +from utils.db_paths import db_path + import discord from utils.emoji import CROSS, NITRO_BOOST, TICK, TIMER import asyncio @@ -28,7 +28,7 @@ import datetime import re from typing import * from time import strftime -from core import Cog ,zyrox ,Context +from core import Cog, HexaHost, Context from discord.ui import LayoutView, TextDisplay, Separator, Container from utils.cv2 import CV2, build_container @@ -49,10 +49,10 @@ datefmt ="%H:%M:%S", ) class Booster (Cog ): - def __init__ (self ,bot : Zyrox ): + def __init__ (self ,bot : HexaHost ): self .bot =bot self .color =0xFF0000 - self .db_path ="db/boost.db" + self .db_path =db_path("boost.db") self .bot .loop .create_task (self .setup_database ()) diff --git a/bot/cogs/commands/calc.py b/bot/cogs/commands/calc.py index b6cf4b3..ff2ea81 100644 --- a/bot/cogs/commands/calc.py +++ b/bot/cogs/commands/calc.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/counting.py b/bot/cogs/commands/counting.py index 32693d2..b7db219 100644 --- a/bot/cogs/commands/counting.py +++ b/bot/cogs/commands/counting.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ import discord +from utils.db_paths import db_path from utils.emoji import ARROWRED, CROSS, NEXT_ALT1, REDRULESBOOK, RED_BUTTON, RED_PIN, STAR, TICK, ZBACK, ZPAUSE, ZPLAY, ZWARNING from discord.ext import commands import json @@ -41,7 +41,7 @@ STAR = STAR class Counting(commands.Cog): def __init__(self, bot): self.bot = bot - self.data_file = "db/counting.json" + self.data_file = db_path("counting.json") if not os.path.exists(self.data_file): with open(self.data_file, 'w') as f: json.dump({}, f) diff --git a/bot/cogs/commands/customrole.py b/bot/cogs/commands/customrole.py index 472703c..2db74ac 100644 --- a/bot/cogs/commands/customrole.py +++ b/bot/cogs/commands/customrole.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK, ZWARNING @@ -27,8 +27,8 @@ from utils.config import * -DATABASE_PATH = 'db/customrole.db' -DATABASE_PATH2 = 'db/np.db' +DATABASE_PATH = db_path('customrole.db') +DATABASE_PATH2 = db_path('np.db') class Customrole(commands.Cog): @@ -81,7 +81,7 @@ class Customrole(commands.Cog): async def handle_role_command(self, context: Context, member: discord.Member, role_type: str): - async with aiosqlite.connect('db/customrole.db') as db: + async with aiosqlite.connect(db_path('customrole.db')) as db: async with db.execute(f"SELECT reqrole, {role_type} FROM roles WHERE guild_id = ?", (context.guild.id,)) as cursor: data = await cursor.fetchone() if data: diff --git a/bot/cogs/commands/dms.py b/bot/cogs/commands/dms.py index edb8392..b0f67ac 100644 --- a/bot/cogs/commands/dms.py +++ b/bot/cogs/commands/dms.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/emergency.py b/bot/cogs/commands/emergency.py index b70bf45..5660525 100644 --- a/bot/cogs/commands/emergency.py +++ b/bot/cogs/commands/emergency.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, CROSS_ALT, ML_CROSS, TICK, TICK_ALT, ZWARNING @@ -374,7 +374,7 @@ class EmergencyRestoreResultView(LayoutView): class Emergency(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = "db/emergency.db" + self.db_path = db_path("emergency.db") self.bot.loop.create_task(self.initialize_database()) async def initialize_database(self): @@ -533,7 +533,7 @@ class Emergency(commands.Cog): is_owner = await self.is_guild_owner(ctx) if not is_owner: return await ctx.reply(view=AuthoriseErrorView("owner_list")) - async with aiosqlite.connect("db/emergency.db") as db: + async with aiosqlite.connect(db_path("emergency.db")) as db: cursor = await db.execute( "SELECT user_id FROM authorised_users WHERE guild_id = ?", (ctx.guild.id,), @@ -606,7 +606,7 @@ class Emergency(commands.Cog): is_auth = await self.is_guild_owner_or_authorised(ctx) if not is_auth: return await ctx.reply(view=RoleErrorView("owner_list")) - async with aiosqlite.connect("db/emergency.db") as db: + async with aiosqlite.connect(db_path("emergency.db")) as db: cursor = await db.execute( "SELECT role_id FROM emergency_roles WHERE guild_id = ?", (ctx.guild.id,), @@ -632,7 +632,7 @@ class Emergency(commands.Cog): guild_id = ctx.guild.id antinuke_enabled = False - async with aiosqlite.connect("db/anti.db") as anti: + async with aiosqlite.connect(db_path("anti.db")) as anti: cursor = await anti.execute( "SELECT status FROM antinuke WHERE guild_id = ?", (guild_id,) ) @@ -731,7 +731,7 @@ class Emergency(commands.Cog): await ctx.reply(view=result_view) if antinuke_enabled: - async with aiosqlite.connect("db/anti.db") as anti: + async with aiosqlite.connect(db_path("anti.db")) as anti: await anti.execute("INSERT INTO antinuke VALUES (?, 1)", (guild_id,)) await anti.commit() await proc_msg.delete() diff --git a/bot/cogs/commands/encryption.py b/bot/cogs/commands/encryption.py index d9ff6e9..10540bc 100644 --- a/bot/cogs/commands/encryption.py +++ b/bot/cogs/commands/encryption.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/extra.py b/bot/cogs/commands/extra.py index 1d8cbf6..7802f72 100644 --- a/bot/cogs/commands/extra.py +++ b/bot/cogs/commands/extra.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import os import discord @@ -30,7 +30,7 @@ from typing import * from utils import * from utils.config import BotName, serverLink from utils import Paginator, DescriptionEmbedPaginator, FieldPagePaginator, TextPaginator -from core import Cog, zyrox, Context +from core import Cog, HexaHost, Context from typing import Optional import aiosqlite import asyncio @@ -887,7 +887,7 @@ class Extra(commands.Cog): db_latency = "Not Available" try: - async with aiosqlite.connect("db/afk.db") as db: + async with aiosqlite.connect(db_path("afk.db")) as db: db_start_time = time.perf_counter() await db.execute("SELECT 1") db_end_time = time.perf_counter() diff --git a/bot/cogs/commands/extraown.py b/bot/cogs/commands/extraown.py index 1e17028..66e24e9 100644 --- a/bot/cogs/commands/extraown.py +++ b/bot/cogs/commands/extraown.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK, ZWARNING @@ -86,7 +86,7 @@ class Extraowner(commands.Cog): self.bot.loop.create_task(self.initialize_db()) async def initialize_db(self): - self.db = await aiosqlite.connect('db/anti.db') + self.db = await aiosqlite.connect(db_path('anti.db')) await self.db.execute(''' CREATE TABLE IF NOT EXISTS extraowners ( guild_id INTEGER PRIMARY KEY, diff --git a/bot/cogs/commands/fastgreet.py b/bot/cogs/commands/fastgreet.py index 3f02871..d0fa73a 100644 --- a/bot/cogs/commands/fastgreet.py +++ b/bot/cogs/commands/fastgreet.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/filters.py b/bot/cogs/commands/filters.py index 98a0f25..558c6c5 100644 --- a/bot/cogs/commands/filters.py +++ b/bot/cogs/commands/filters.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/fun.py b/bot/cogs/commands/fun.py index 50e7db7..ff7de2f 100644 --- a/bot/cogs/commands/fun.py +++ b/bot/cogs/commands/fun.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/general.py b/bot/cogs/commands/general.py index 703b7e9..e1d4e41 100644 --- a/bot/cogs/commands/general.py +++ b/bot/cogs/commands/general.py @@ -1,20 +1,19 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ import asyncio import discord -from utils.emoji import CROSS, TICK, ZWARNING, ZYROXCONNECTION, ZYROXLINKS +from utils.emoji import CROSS, TICK, ZWARNING, HEXAHOST_CONNECTION, HEXAHOST_LINKS from discord.ext import commands, tasks from discord.utils import get import datetime @@ -309,8 +308,8 @@ class General(commands.Cog): async def invite(self, ctx: commands.Context): invite_text = ( "```Empower your server with blazing-fast features and 24/7 support!```\n" - f"{ZYROXLINKS} **Quick Actions**\n" + f"{HEXAHOST_LINKS} **Quick Actions**\n" f">>> **[Invite {BotName}](https://discord.com/oauth2/authorize?client_id=1396114795102470196&permissions=8&integration_type=0&scope=bot+applications.commands)**\n" - "**[Support Server](https://discord.gg/codexdev)**" + "**[Support Server](https://discord.gg/hexahost)**" ) - await ctx.send(view=CV2(f"{ZYROXCONNECTION} {BotName} Integration Hub!", invite_text)) \ No newline at end of file + await ctx.send(view=CV2(f"{HEXAHOST_CONNECTION} {BotName} Integration Hub!", invite_text)) \ No newline at end of file diff --git a/bot/cogs/commands/giveaway.py b/bot/cogs/commands/giveaway.py index 73ef504..f48bf00 100644 --- a/bot/cogs/commands/giveaway.py +++ b/bot/cogs/commands/giveaway.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/help.py b/bot/cogs/commands/help.py index a71b0eb..9a7016d 100644 --- a/bot/cogs/commands/help.py +++ b/bot/cogs/commands/help.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -19,7 +18,7 @@ from discord import app_commands, Interaction from difflib import get_close_matches from contextlib import suppress from core import Context -from core.zyrox import zyrox +from core.hexahost import HexaHost from core.Cog import Cog from utils.Tools import getConfig from itertools import chain @@ -33,7 +32,6 @@ from utils.cv2 import CV2, CV2Embed from utils.config import * color = 0xFF0000 -client = zyrox() from utils.config import BotName @@ -157,7 +155,7 @@ class HelpCommand(commands.HelpCommand): ) embed.set_footer( - text=f"Requested By {self.context.author} | [Support](https://discord.gg/codexdev)", + text=f"Requested By {self.context.author} | [Support](https://discord.gg/hexahost)", ) view = vhelp.View(mapping=mapping, ctx=self.context, homeembed=embed, ui=2) @@ -175,9 +173,9 @@ class HelpCommand(commands.HelpCommand): await self.send_ignore_message(ctx, "command") return - zyrox = f">>> {command.help}" if command.help else '>>> No Help Provided...' + help_text = f">>> {command.help}" if command.help else '>>> No Help Provided...' embed = CV2Embed( - description=f"""{zyrox}""", + description=f"""{help_text}""", color=color) alias = ' & '.join(command.aliases) @@ -270,7 +268,7 @@ class HelpCommand(commands.HelpCommand): class Help(Cog, name="help"): - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self._original_help_command = client.help_command attributes = { 'name': "help", diff --git a/bot/cogs/commands/help_backup.txt b/bot/cogs/commands/help_backup.txt index 17d6027..9c51539 100644 --- a/bot/cogs/commands/help_backup.txt +++ b/bot/cogs/commands/help_backup.txt @@ -58,7 +58,7 @@ class HelpCommand(commands.HelpCommand): matches = get_close_matches(string, cmds) embed = discord.Embed( - title="Zyrox Helper", + title="HexaHost Helper", description=f">>> **Ops! Command not found with the name** `{string}`.", color=0xFF0000 ) @@ -101,7 +101,7 @@ class HelpCommand(commands.HelpCommand): embed = discord.Embed( description=( - f"**{ARROWRED} __Start Zyrox X Today__**\n" + f"**{ARROWRED} __Start HexaHost Today__**\n" f"**{ZARROW} Type {prefix}antinuke enable**\n" f"**{ZARROW} Server Prefix:** `{prefix}`\n" f"**{ZARROW} Total Commands:** `{len(set(self.context.bot.walk_commands()))}`\n"), @@ -150,7 +150,7 @@ class HelpCommand(commands.HelpCommand): ) embed.set_footer( - text=f"Requested By {self.context.author} | [Support](https://discord.gg/codexdev)", + text=f"Requested By {self.context.author} | [Support](https://discord.gg/hexahost)", ) view = vhelp.View(mapping=mapping, ctx=self.context, homeembed=embed, ui=2) @@ -253,7 +253,7 @@ class HelpCommand(commands.HelpCommand): ) for cmd in cog.get_commands()] paginator = Paginator(source=FieldPagePaginator( entries=entries, - title=f"Zyrox's {cog.qualified_name.title()} ({len(cog.get_commands())})", + title=f"HexaHost's {cog.qualified_name.title()} ({len(cog.get_commands())})", description="`<..> Required | [..] Optional`\n\n", color=0xFF0000, per_page=4), diff --git a/bot/cogs/commands/ignore.py b/bot/cogs/commands/ignore.py index e21d7bd..aeb2d0b 100644 --- a/bot/cogs/commands/ignore.py +++ b/bot/cogs/commands/ignore.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK, ZWARNING from discord.ui import LayoutView, TextDisplay, Separator, Container @@ -98,7 +98,7 @@ class ListView(LayoutView): class Ignore(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = "db/ignore.db" + self.db_path = db_path("ignore.db") self.color = 0xFF0000 bot.loop.create_task(self.initialize_db()) diff --git a/bot/cogs/commands/image.py b/bot/cogs/commands/image.py index 64fc066..132b588 100644 --- a/bot/cogs/commands/image.py +++ b/bot/cogs/commands/image.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/imagine.py b/bot/cogs/commands/imagine.py index 3e6c976..5650dcc 100644 --- a/bot/cogs/commands/imagine.py +++ b/bot/cogs/commands/imagine.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/j2c.py b/bot/cogs/commands/j2c.py index 6a4c3f9..e7ece01 100644 --- a/bot/cogs/commands/j2c.py +++ b/bot/cogs/commands/j2c.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/jail.py b/bot/cogs/commands/jail.py index 013d996..459f0a4 100644 --- a/bot/cogs/commands/jail.py +++ b/bot/cogs/commands/jail.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands, tasks @@ -19,7 +19,7 @@ from datetime import datetime, timedelta import re from utils.cv2 import CV2 -DB_FILE = "db/jail.db" +DB_FILE = db_path("jail.db") class Jail(commands.Cog): def __init__(self, bot): diff --git a/bot/cogs/commands/joindm.py b/bot/cogs/commands/joindm.py index 9961e3f..ab2aa09 100644 --- a/bot/cogs/commands/joindm.py +++ b/bot/cogs/commands/joindm.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import jsondb_path import discord from utils.emoji import BLOBPART @@ -27,14 +27,14 @@ class joindm(commands.Cog): def load_joindm_messages(self): # Load the join DM messages from file try: - with open('jsondb/joindm_messages.json', 'r') as f: + with open(jsondb_path('joindm_messages.json'), 'r') as f: self.joindm_messages = json.load(f) except FileNotFoundError: self.joindm_messages = {} def save_joindm_messages(self): # Save the join DM messages to file - with open('jsondb/joindm_messages.json', 'w') as f: + with open(jsondb_path('joindm_messages.json'), 'w') as f: json.dump(self.joindm_messages, f) @commands.group(invoke_without_command=True) diff --git a/bot/cogs/commands/leveling.py b/bot/cogs/commands/leveling.py index 7c662af..f01cc06 100644 --- a/bot/cogs/commands/leveling.py +++ b/bot/cogs/commands/leveling.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK, ZWARNING @@ -212,7 +212,7 @@ class LevelConfigModal (discord .ui .Modal ,title ="Leveling System Configuratio try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ("SELECT guild_id FROM leveling_settings WHERE guild_id = ?",(interaction .guild .id ,))as cursor : exists =await cursor .fetchone () @@ -291,7 +291,7 @@ class Leveling (commands .Cog ): self .bot =bot self .message_cooldowns ={} self .last_level_cache ={} - self .db_path ="db/leveling.db" + self .db_path =db_path("leveling.db") @commands.group (name ="level",invoke_without_command =True ,description ="Leveling system") async def level (self ,ctx ): @@ -310,7 +310,7 @@ class Leveling (commands .Cog ): async def init_database (self ): """Initialize all required database tables""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute (""" CREATE TABLE IF NOT EXISTS user_xp ( @@ -411,13 +411,13 @@ class Leveling (commands .Cog ): max_retries =5 for attempt in range (max_retries ): try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ("SELECT * FROM leveling_settings WHERE guild_id = ?",(guild_id ,))as cursor : row =await cursor .fetchone () if not row : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ("INSERT INTO leveling_settings (guild_id, enabled) VALUES (?, 0)",(guild_id ,)) await db .commit () return { @@ -474,7 +474,7 @@ class Leveling (commands .Cog ): async def is_blacklisted (self ,guild_id :int ,user_id :int ,channel_id :int )->bool : """Check if user or channel is blacklisted""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .cursor ()as cursor : await cursor .execute ("PRAGMA table_info(leveling_blacklist)") @@ -522,7 +522,7 @@ class Leveling (commands .Cog ): return 1.0 total_multiplier =1.0 - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT target_id, multiplier FROM xp_multipliers WHERE guild_id = ? AND target_type = 'role'", @@ -593,7 +593,7 @@ class Leveling (commands .Cog ): final_xp =int (final_xp *multiplier ) - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT xp, messages FROM user_xp WHERE guild_id = ? AND user_id = ?", (guild_id ,user_id ) @@ -713,7 +713,7 @@ class Leveling (commands .Cog ): async def give_level_rewards (self ,guild ,member ,level ): """Give role rewards for reaching a level""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT role_id, remove_previous FROM level_rewards WHERE guild_id = ? AND level <= ? ORDER BY level DESC", (guild .id ,level ) @@ -727,7 +727,7 @@ class Leveling (commands .Cog ): if remove_previous : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT role_id FROM level_rewards WHERE guild_id = ? AND level < ?", (guild .id ,level ) @@ -745,7 +745,7 @@ class Leveling (commands .Cog ): async def apply_level_roles (self ,guild ,member ,level ): """Apply level roles for reaching a level""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT role_id FROM level_roles WHERE guild_id = ? AND level <= ? ORDER BY level DESC", (guild .id ,level ) @@ -768,7 +768,7 @@ class Leveling (commands .Cog ): async def get_user_data (self ,guild_id :int ,user_id :int )->tuple : """Get user XP and level data""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT xp, messages FROM user_xp WHERE guild_id = ? AND user_id = ?", (guild_id ,user_id ) @@ -786,7 +786,7 @@ class Leveling (commands .Cog ): async def get_user_rank (self ,guild_id :int ,user_id :int )->int : """Get user's rank in the guild""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT COUNT(*) + 1 FROM user_xp WHERE guild_id = ? AND xp > (SELECT COALESCE(xp, 0) FROM user_xp WHERE guild_id = ? AND user_id = ?)", (guild_id ,guild_id ,user_id ) @@ -1751,7 +1751,7 @@ class Leveling (commands .Cog ): embed_color_int =hex_to_int (embed_color ) level_image_final =level_image if level_image and level_image .strip ()else None - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ("SELECT guild_id FROM leveling_settings WHERE guild_id = ?",(ctx .guild .id ,))as cursor : exists =await cursor .fetchone () @@ -2014,7 +2014,7 @@ class Leveling (commands .Cog ): await ctx .send ("Level must be greater than 0.") return - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "INSERT OR REPLACE INTO level_rewards (guild_id, level, role_id, remove_previous) VALUES (?, ?, ?, ?)", (ctx .guild .id ,level ,role .id ,int (remove_previous )) @@ -2031,7 +2031,7 @@ class Leveling (commands .Cog ): async def rewards_remove (self ,ctx ,level :int ): """Remove level reward""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "DELETE FROM level_rewards WHERE guild_id = ? AND level = ?", (ctx .guild .id ,level ) @@ -2048,7 +2048,7 @@ class Leveling (commands .Cog ): async def rewards_list (self ,ctx ): """List level rewards""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT level, role_id, remove_previous FROM level_rewards WHERE guild_id = ? ORDER BY level", (ctx .guild .id ,) @@ -2104,7 +2104,7 @@ class Leveling (commands .Cog ): await ctx .send ("Invalid channel ID.") return - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "INSERT OR REPLACE INTO xp_multipliers (guild_id, target_id, target_type, multiplier) VALUES (?, ?, ?, ?)", (ctx .guild .id ,target_id ,target_type ,multiplier ) @@ -2140,7 +2140,7 @@ class Leveling (commands .Cog ): await ctx .send ("Invalid channel ID.") return - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "DELETE FROM xp_multipliers WHERE guild_id = ? AND target_id = ? AND target_type = ?", (ctx .guild .id ,target_id ,target_type ) @@ -2157,7 +2157,7 @@ class Leveling (commands .Cog ): async def multiplier_list (self ,ctx ): """List XP multipliers""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT target_id, target_type, multiplier FROM xp_multipliers WHERE guild_id = ?", (ctx .guild .id ,) @@ -2213,7 +2213,7 @@ class Leveling (commands .Cog ): await ctx .send ("Invalid channel ID.") return - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "INSERT OR REPLACE INTO leveling_blacklist (guild_id, target_id, target_type) VALUES (?, ?, ?)", (ctx .guild .id ,target_id ,target_type ) @@ -2249,7 +2249,7 @@ class Leveling (commands .Cog ): await ctx .send ("Invalid channel ID.") return - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : await db .execute ( "DELETE FROM leveling_blacklist WHERE guild_id = ? AND target_id = ? AND target_type = ?", (ctx .guild .id ,target_id ,target_type ) @@ -2266,7 +2266,7 @@ class Leveling (commands .Cog ): async def blacklist_list (self ,ctx ): """List leveling blacklist""" try : - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT target_id, target_type FROM leveling_blacklist WHERE guild_id = ?", (ctx .guild .id ,) @@ -2422,7 +2422,7 @@ class Leveling (commands .Cog ): if isinstance (ctx ,discord .Interaction ): await ctx .response .defer () - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : cursor =await db .execute (''' SELECT user_id, xp, messages FROM user_xp @@ -3013,7 +3013,7 @@ class Leveling (commands .Cog ): percentage =(progress /needed *100 )if needed >0 else 100 - async with aiosqlite .connect ("db/leveling.db")as db : + async with aiosqlite .connect (db_path("leveling.db"))as db : async with db .execute ( "SELECT COUNT(*) FROM user_xp WHERE guild_id = ? AND xp > 0", (guild_id ,) diff --git a/bot/cogs/commands/leveling_original.py b/bot/cogs/commands/leveling_original.py deleted file mode 100644 index f08d3594cd981c95763c06a5a04fdc5d10532a0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/bot/cogs/commands/logging.py b/bot/cogs/commands/logging.py index 157b5e8..94500f1 100644 --- a/bot/cogs/commands/logging.py +++ b/bot/cogs/commands/logging.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import jsondb_path import discord from discord.ext import commands @@ -43,7 +43,7 @@ LOG_CATEGORIES = [ "system_events", ] -CONFIG_FILE = "jsondb/logging_config.json" +CONFIG_FILE = jsondb_path("logging_config.json") LOGS_DIR = "logs" MAX_AUDIT_CACHE_SIZE = 1000 AUDIT_CACHE_TTL = 300 diff --git a/bot/cogs/commands/map.py b/bot/cogs/commands/map.py index ed97f8f..3405c2c 100644 --- a/bot/cogs/commands/map.py +++ b/bot/cogs/commands/map.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -92,7 +91,7 @@ class MapView(LayoutView): def get_coordinates(self, location): try: - headers = {'User-Agent': f'{BRAND_NAME} Bot (https://codexdevs.in)'} + headers = {'User-Agent': f'{BRAND_NAME} Bot (https://hexahost.dev)'} response = requests.get(f'https://nominatim.openstreetmap.org/search?q={location}&format=json', headers=headers) response.raise_for_status() data = response.json()[0] diff --git a/bot/cogs/commands/messages.py b/bot/cogs/commands/messages.py index a7fe522..6e54ed8 100644 --- a/bot/cogs/commands/messages.py +++ b/bot/cogs/commands/messages.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import ARROWRED @@ -34,7 +34,7 @@ class MessagesView(LayoutView): f"**Daily Messages**: {daily_average}\n" f"**Today Messages**: {today_count}\n" f"**Total Messages**: {total}\n\n" - f"**{ARROWRED}Upgrade Your Experience With [{BRAND_NAME} Noprefix](https://discord.gg/codexdev)**" + f"**{ARROWRED}Upgrade Your Experience With [{BRAND_NAME} Noprefix](https://discord.gg/hexahost)**" ), ) ) @@ -49,7 +49,7 @@ class Messages(commands.Cog): if message.author.bot or not message.guild: return - conn = sqlite3.connect("db/messages.db") + conn = sqlite3.connect(db_path("messages.db")) c = conn.cursor() c.execute(""" CREATE TABLE IF NOT EXISTS messages ( @@ -86,7 +86,7 @@ class Messages(commands.Cog): member = member or ctx.author today = datetime.utcnow().strftime("%Y-%m-%d") - conn = sqlite3.connect("db/messages.db") + conn = sqlite3.connect(db_path("messages.db")) c = conn.cursor() c.execute( "SELECT date, count FROM messages WHERE guild_id = ? AND user_id = ?", diff --git a/bot/cogs/commands/minecraft.py b/bot/cogs/commands/minecraft.py index dcfe80a..9d1197b 100644 --- a/bot/cogs/commands/minecraft.py +++ b/bot/cogs/commands/minecraft.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands, tasks @@ -30,7 +30,7 @@ from utils.emoji import SUCCESS, ERROR, WARNING_UNICODE, CLOCK, REFRESH, JAVA_CO ASSETS_DIR = "assets" FONT_PATH = os.path.join(ASSETS_DIR, "fonts", "minecraft.ttf") BACKGROUND_PATH = os.path.join(ASSETS_DIR, "background", "background.png") -DB_PATH = "db/minecraft.db" +DB_PATH = db_path("minecraft.db") # --- Other Constants --- REFRESH_COOLDOWN_SECONDS = 30 diff --git a/bot/cogs/commands/msgpack.py b/bot/cogs/commands/msgpack.py index 0a33195..45cea5f 100644 --- a/bot/cogs/commands/msgpack.py +++ b/bot/cogs/commands/msgpack.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -28,7 +28,7 @@ class Messagespack(commands.Cog): return await ctx.send("Amount must be greater than 0.") today = datetime.utcnow().strftime("%Y-%m-%d") - conn = sqlite3.connect("db/messages.db") + conn = sqlite3.connect(db_path("messages.db")) c = conn.cursor() c.execute("SELECT count FROM messages WHERE guild_id = ? AND user_id = ? AND date = ?", @@ -53,7 +53,7 @@ class Messagespack(commands.Cog): return await ctx.send("Amount must be greater than 0.") today = datetime.utcnow().strftime("%Y-%m-%d") - conn = sqlite3.connect("db/messages.db") + conn = sqlite3.connect(db_path("messages.db")) c = conn.cursor() c.execute("SELECT count FROM messages WHERE guild_id = ? AND user_id = ? AND date = ?", @@ -73,7 +73,7 @@ class Messagespack(commands.Cog): @commands.command(name="clearmessage", aliases=["clearmsg"]) @commands.has_permissions(manage_messages=True) async def clearmessage(self, ctx, member: discord.Member): - conn = sqlite3.connect("db/messages.db") + conn = sqlite3.connect(db_path("messages.db")) c = conn.cursor() c.execute("DELETE FROM messages WHERE guild_id = ? AND user_id = ?", (ctx.guild.id, member.id)) diff --git a/bot/cogs/commands/music.py b/bot/cogs/commands/music.py index 5d9c1f8..a3336a0 100644 --- a/bot/cogs/commands/music.py +++ b/bot/cogs/commands/music.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -22,7 +21,7 @@ from discord.ui import Button, View, LayoutView, TextDisplay, Separator, Contain import wavelink from wavelink.enums import TrackSource from utils import Paginator, DescriptionEmbedPaginator -from core import Cog, zyrox, Context +from core import Cog, HexaHost, Context from PIL import Image, ImageDraw, ImageFont, ImageOps import io import aiohttp @@ -335,7 +334,7 @@ class MusicControlView(LayoutView): class Music(commands.Cog): - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self.client = client self.client.loop.create_task(self.connect_nodes()) self.client.loop.create_task(self.monitor_inactivity()) @@ -374,7 +373,7 @@ class Music(commands.Cog): if player: await player.disconnect(force=True) try: - support = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/codexdev') + support = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/hexahost') vote = Button(label='Vote', style=discord.ButtonStyle.link, url='https://top.gg/bot//vote') view = LayoutView(timeout=None) container = build_container( @@ -423,7 +422,7 @@ class Music(commands.Cog): await player.ctx.send(view=CV2("No suitable track found for autoplay.")) else: await player.disconnect() - support = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/codexdev') + support = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/hexahost') vote = Button(label='Vote', style=discord.ButtonStyle.link, url='https://top.gg/bot//vote') view = LayoutView(timeout=None) container = build_container( @@ -473,7 +472,7 @@ class Music(commands.Cog): if isinstance(tracks, wavelink.Playlist): await vc.queue.put_wait(tracks.tracks) - await ctx.send(view=CV2(f"{ZPLUS} Added playlist [{tracks.name}](https://discord.gg/codexdev) with **{len(tracks.tracks)} songs** to the queue.")) + await ctx.send(view=CV2(f"{ZPLUS} Added playlist [{tracks.name}](https://discord.gg/hexahost) with **{len(tracks.tracks)} songs** to the queue.")) if not vc.playing: track = await vc.queue.get_wait() await vc.play(track) @@ -481,7 +480,7 @@ class Music(commands.Cog): else: track = tracks[0] await vc.queue.put_wait(track) - await ctx.send(view=CV2(f"{ZPLUS} Added [{track.title}](https://discord.gg/codexdev) to the queue.")) + await ctx.send(view=CV2(f"{ZPLUS} Added [{track.title}](https://discord.gg/hexahost) to the queue.")) if not vc.playing: await vc.play(await vc.queue.get_wait()) await self.display_player_embed(vc, track, ctx) @@ -510,7 +509,7 @@ class Music(commands.Cog): track = search_results[0] await vc.queue.put_wait(track) - await ctx.send(view=CV2(f"{ZPLUS} Added [{track.title}](https://discord.gg/codexdev) to the queue.")) + await ctx.send(view=CV2(f"{ZPLUS} Added [{track.title}](https://discord.gg/hexahost) to the queue.")) if not vc.playing: await vc.play(track) await self.display_player_embed(vc, track, ctx) @@ -541,7 +540,7 @@ class Music(commands.Cog): c += 1 await ctx.message.add_reaction("✅") - await ctx.send(view=CV2(f"{ZPLUS} Added **{c}** of **{playlist_length}** tracks from **playlist** **[{playlist_info['name']}](https://discord.gg/codexdev)** to the queue.")) + await ctx.send(view=CV2(f"{ZPLUS} Added **{c}** of **{playlist_length}** tracks from **playlist** **[{playlist_info['name']}](https://discord.gg/hexahost)** to the queue.")) await lmao.delete() if not vc.playing: @@ -569,7 +568,7 @@ class Music(commands.Cog): if track_results: await vc.queue.put_wait(track_results[0]) - await ctx.send(view=CV2(f"{ZPLUS} Added all tracks from album **[{album_info['name']}](https://discord.gg/codexdev)** to the queue.")) + await ctx.send(view=CV2(f"{ZPLUS} Added all tracks from album **[{album_info['name']}](https://discord.gg/hexahost)** to the queue.")) if not vc.playing: next_track = await vc.queue.get_wait() await vc.play(next_track) diff --git a/bot/cogs/commands/nightmode.py b/bot/cogs/commands/nightmode.py index 1cb897c..dcda7ba 100644 --- a/bot/cogs/commands/nightmode.py +++ b/bot/cogs/commands/nightmode.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/nitro.py b/bot/cogs/commands/nitro.py index da25c84..897789e 100644 --- a/bot/cogs/commands/nitro.py +++ b/bot/cogs/commands/nitro.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -44,7 +43,7 @@ class Nitro(commands.Cog): claim_button = Button( style=discord.ButtonStyle.primary, label="Click me!", - url="https://discord.gg/codexdev", + url="https://discord.gg/hexahost", disabled=False, ) diff --git a/bot/cogs/commands/notify.py b/bot/cogs/commands/notify.py index 6111e5e..4f6a3cf 100644 --- a/bot/cogs/commands/notify.py +++ b/bot/cogs/commands/notify.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -22,7 +22,7 @@ from utils.cv2 import CV2 class NotifCommands(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = "db/notify.db" + self.db_path = db_path("notify.db") self.loop_task = self.bot.loop.create_task(self.setup_db()) async def setup_db(self): diff --git a/bot/cogs/commands/np.py b/bot/cogs/commands/np.py index af9b4b3..0f3934c 100644 --- a/bot/cogs/commands/np.py +++ b/bot/cogs/commands/np.py @@ -1,21 +1,21 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path from discord.ext import commands, tasks from discord import * import discord -from utils.emoji import BOOST, ICONS_WARNING, INFO, MENTION, PREMIUM, TICK, TIME, TIMER_ALT1, U_ADMIN, ZDIL, ZHUMAN, ZYROXHAMMER, ZYROXSYS +from utils.emoji import BOOST, ICONS_WARNING, INFO, MENTION, PREMIUM, TICK, TIME, TIMER_ALT1, U_ADMIN, ZDIL, ZHUMAN, HEXAHOST_HAMMER, HEXAHOST_SYS import aiosqlite from typing import Optional from datetime import datetime, timedelta @@ -143,7 +143,7 @@ class TimeSelect(Select): await log_channel.send(view=embed) embed = CV2Embed( - description=f"**Added Global No Prefix**:\n{ZHUMAN} User: **{self.user.mention}**\n{MENTION} User Mention: {self.user.mention}\n{ZYROXSYS} User ID: {self.user.id}\n\n__**Additional Info**__:\n{ZYROXHAMMER} Added By: **{self.author.display_name}**\n{TIME} Expiry Time: {expiry_text}\n{BOOST} Timestamp: {expiry_timestamp}", + description=f"**Added Global No Prefix**:\n{ZHUMAN} User: **{self.user.mention}**\n{MENTION} User Mention: {self.user.mention}\n{HEXAHOST_SYS} User ID: {self.user.id}\n\n__**Additional Info**__:\n{HEXAHOST_HAMMER} Added By: **{self.author.display_name}**\n{TIME} Expiry Time: {expiry_text}\n{BOOST} Timestamp: {expiry_timestamp}", color=0xFF0000, ) embed.set_author( @@ -171,7 +171,7 @@ class NoPrefix(commands.Cog): def __init__(self, client): self.client = client self.staff = set() - self.db_path = "db/np.db" + self.db_path = db_path("np.db") self.client.loop.create_task(self.load_staff()) self.client.loop.create_task(self.setup_database()) self.expiry_check.start() @@ -278,7 +278,7 @@ class NoPrefix(commands.Cog): support = Button( label="Support", style=discord.ButtonStyle.link, - url=f"https://discord.gg/codexdev", + url=f"https://discord.gg/hexahost", ) view = View() view.add_item(support) @@ -363,7 +363,7 @@ class NoPrefix(commands.Cog): @_np.command(name="remove", help="Remove user from no-prefix") @commands.check(is_owner_or_staff) async def np_remove(self, ctx, user: discord.User): - async with aiosqlite.connect("db/np.db") as db: + async with aiosqlite.connect(db_path("np.db")) as db: async with db.execute( "SELECT id FROM np WHERE id = ?", (user.id,) ) as cursor: @@ -423,7 +423,7 @@ class NoPrefix(commands.Cog): ) @commands.check(is_owner_or_staff) async def np_status(self, ctx, user: discord.User): - async with aiosqlite.connect("db/np.db") as db: + async with aiosqlite.connect(db_path("np.db")) as db: async with db.execute( "SELECT id, expiry_time FROM np WHERE id = ?", (user.id,) ) as cursor: @@ -581,7 +581,7 @@ class NoPrefix(commands.Cog): embed = CV2Embed( title="Congratulations you got 2 months No Prefix!", - description=f"You've been credited 2 months of global No Prefix for boosting our Partnered Servers. You can now use my commands without prefix. If you wish to remove it, please reach out [Support Server](https://discord.gg/codexdev).", + description=f"You've been credited 2 months of global No Prefix for boosting our Partnered Servers. You can now use my commands without prefix. If you wish to remove it, please reach out [Support Server](https://discord.gg/hexahost).", color=0xFF0000, ) try: @@ -613,7 +613,7 @@ class NoPrefix(commands.Cog): embed = CV2Embed( title=f"{ICONS_WARNING} Global No Prefix Expired", - description=f"Hey {user.mention}, your global no prefix has expired!\n\n__**Reason:**__ Unboosting our partnered Server.\nIf you think this is a mistake then please reach out [Support Server](https://discord.gg/codexdev).", + description=f"Hey {user.mention}, your global no prefix has expired!\n\n__**Reason:**__ Unboosting our partnered Server.\nIf you think this is a mistake then please reach out [Support Server](https://discord.gg/hexahost).", color=0xFF0000, ) diff --git a/bot/cogs/commands/owner.py b/bot/cogs/commands/owner.py index f0b4f9a..ad45ed8 100644 --- a/bot/cogs/commands/owner.py +++ b/bot/cogs/commands/owner.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations +from utils.db_paths import db_path from discord.ext import commands from discord import * from PIL import Image, ImageDraw, ImageFont, ImageFilter @@ -26,7 +26,7 @@ from utils import Paginator, DescriptionEmbedPaginator, FieldPagePaginator, Text from utils.Tools import * from utils.config import OWNER_IDS, BOT_OWNER_IDS from utils.emoji import BOOSTS, DISCORD_BADGE_EMOJIS, LOADINGRED, NITRO_BOOST, TICK, ZWARNING -from core import Cog, zyrox, Context +from core import Cog, HexaHost, Context import sqlite3 import os import requests @@ -136,7 +136,7 @@ class Owner(commands.Cog): self.client = client self.staff = set() self.np_cache = [] - self.db_path = 'db/np.db' + self.db_path = db_path('np.db') self.stop_tour = False self.bot_owner_ids = BOT_OWNER_IDS self.client.loop.create_task(self.setup_database()) diff --git a/bot/cogs/commands/owner2.py b/bot/cogs/commands/owner2.py index 8b4dde0..2649c80 100644 --- a/bot/cogs/commands/owner2.py +++ b/bot/cogs/commands/owner2.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/qr.py b/bot/cogs/commands/qr.py index a0f33e3..6b0f82c 100644 --- a/bot/cogs/commands/qr.py +++ b/bot/cogs/commands/qr.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/reactionroles.py b/bot/cogs/commands/reactionroles.py index b261743..849dfec 100644 --- a/bot/cogs/commands/reactionroles.py +++ b/bot/cogs/commands/reactionroles.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/slots.py b/bot/cogs/commands/slots.py index 10b1e63..526bbdd 100644 --- a/bot/cogs/commands/slots.py +++ b/bot/cogs/commands/slots.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/stats.py b/bot/cogs/commands/stats.py index c88e4ba..7748160 100644 --- a/bot/cogs/commands/stats.py +++ b/bot/cogs/commands/stats.py @@ -1,19 +1,19 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord -from utils.emoji import CODEBASE, LOADING, SYSTEM, THUNDER, ZYROX_CODE, ZYROX_COMMAND, ZYROX_GLOBAL, ZYROX_OWNER, ZYROX_SEARCH +from utils.emoji import CODEBASE, LOADING, SYSTEM, THUNDER, HEXAHOST_CODE, HEXAHOST_COMMAND, HEXAHOST_GLOBAL, HEXAHOST_OWNER, HEXAHOST_SEARCH import psutil import sys import os @@ -60,27 +60,27 @@ def create_stats_content(stats_data, selected): f"**{SYSTEM} Hardware**\n" f"Cpu Usage: **{stats_data['cpu']}%**\n" f"Ram Usage: **{stats_data['ram']}%**\n\n" - f"**{ZYROX_CODE} Software**\n" + f"**{HEXAHOST_CODE} Software**\n" f"Python: **{sys.version_info.major}.{sys.version_info.minor}**\n" f"Discord.py: **{discord.__version__}**" ), "General Info": ( f"**Uptime**: `{stats_data['uptime']}`\n\n" - f"**{ZYROX_GLOBAL} Server Stats**\n" + f"**{HEXAHOST_GLOBAL} Server Stats**\n" f"Guilds: **{stats_data['guilds']}**\n" f"Users: **{stats_data['users']}**\n\n" - f"**{ZYROX_COMMAND} Commands Stats**\n" + f"**{HEXAHOST_COMMAND} Commands Stats**\n" f"Total Commands: **{stats_data['all_cmds']}**\n" f"Slash Commands: **{stats_data['slash_cmds']}**" ), "Team Info": ( "There is only one person who made me. Thanks to him ❤️.\n\n" - f"**{ZYROX_OWNER} Main Owner**\n" + f"**{HEXAHOST_OWNER} Main Owner**\n" "[01]. [runxking](https://discord.com/users/767979794411028491)\n" "[02]. [Ray](https://discord.com/users/870179991462236170)" ), "Code Info": ( - f"**{ZYROX_SEARCH} Codebase Overview**\n\n" + f"**{HEXAHOST_SEARCH} Codebase Overview**\n\n" f"Files: **{stats_data['files']}**\n" f"Lines: **{stats_data['lines']}**\n" f"Words: **{stats_data['words']}**" @@ -110,7 +110,7 @@ class StatsView(LayoutView): ), discord.SelectOption( label="General Info", - emoji=ZYROX_GLOBAL, + emoji=HEXAHOST_GLOBAL, description="General info", ), discord.SelectOption( @@ -120,7 +120,7 @@ class StatsView(LayoutView): ), discord.SelectOption( label="Code Info", - emoji=ZYROX_SEARCH, + emoji=HEXAHOST_SEARCH, description="Code stats", ), ], @@ -179,7 +179,7 @@ class Stats(commands.Cog): self.bot.loop.create_task(self.setup_database()) async def setup_database(self): - async with aiosqlite.connect("db/stats.db") as db: + async with aiosqlite.connect(db_path("stats.db")) as db: await db.execute( "CREATE TABLE IF NOT EXISTS stats (key TEXT PRIMARY KEY, value INTEGER)" ) diff --git a/bot/cogs/commands/status.py b/bot/cogs/commands/status.py index e28d293..3428753 100644 --- a/bot/cogs/commands/status.py +++ b/bot/cogs/commands/status.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/steal.py b/bot/cogs/commands/steal.py index c0633fd..bb967b0 100644 --- a/bot/cogs/commands/steal.py +++ b/bot/cogs/commands/steal.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/stickymessage.py b/bot/cogs/commands/stickymessage.py index a05c38e..76ae5f0 100644 --- a/bot/cogs/commands/stickymessage.py +++ b/bot/cogs/commands/stickymessage.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord import aiosqlite @@ -31,7 +31,7 @@ class StickyMessage(commands.Cog): if not os.path.exists("db"): os.makedirs("db") - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS sticky_messages ( id INTEGER PRIMARY KEY AUTOINCREMENT, @@ -58,7 +58,7 @@ class StickyMessage(commands.Cog): if not message.guild or (message.author.bot and message.author.id != self.bot.user.id): return - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: db.row_factory = aiosqlite.Row cursor = await db.execute( "SELECT * FROM sticky_messages WHERE channel_id = ? AND enabled = 1", @@ -81,7 +81,7 @@ class StickyMessage(commands.Cog): new_count = sticky_data['current_count'] + 1 if new_count < sticky_data['trigger_count']: - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "UPDATE sticky_messages SET current_count = ? WHERE id = ?", (new_count, sticky_data['id']) @@ -89,7 +89,7 @@ class StickyMessage(commands.Cog): await db.commit() return - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute("UPDATE sticky_messages SET current_count = 0 WHERE id = ?", (sticky_data['id'],)) await db.commit() @@ -123,7 +123,7 @@ class StickyMessage(commands.Cog): new_sticky = await message.channel.send(content=content, embed=embed, delete_after=delete_after) - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "UPDATE sticky_messages SET last_message_id = ? WHERE id = ?", (new_sticky.id, sticky_data['id']) @@ -140,7 +140,7 @@ class StickyMessage(commands.Cog): @commands.has_permissions(manage_messages=True) async def sticky_setup(self, ctx: commands.Context, channel: Optional[discord.TextChannel] = None): channel = channel or ctx.channel - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: cursor = await db.execute("SELECT 1 FROM sticky_messages WHERE channel_id = ?", (channel.id,)) if await cursor.fetchone(): embed = discord.Embed(title="Setup Error", description=f"A sticky message already exists in {channel.mention}.", color=RED_THEME_COLOR) @@ -153,7 +153,7 @@ class StickyMessage(commands.Cog): @commands.has_permissions(manage_messages=True) async def sticky_remove(self, ctx: commands.Context, channel: Optional[discord.TextChannel] = None): channel = channel or ctx.channel - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: cursor = await db.execute("SELECT last_message_id FROM sticky_messages WHERE channel_id = ?", (channel.id,)) data = await cursor.fetchone() if not data: @@ -175,7 +175,7 @@ class StickyMessage(commands.Cog): @stickymessage.command(name='list') @commands.has_permissions(manage_messages=True) async def sticky_list(self, ctx: commands.Context): - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: db.row_factory = aiosqlite.Row cursor = await db.execute("SELECT * FROM sticky_messages WHERE guild_id = ?", (ctx.guild.id,)) stickies = await cursor.fetchall() @@ -198,7 +198,7 @@ class StickyMessage(commands.Cog): @commands.has_permissions(manage_messages=True) async def sticky_edit(self, ctx: commands.Context, channel: Optional[discord.TextChannel] = None): channel = channel or ctx.channel - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: db.row_factory = aiosqlite.Row cursor = await db.execute("SELECT * FROM sticky_messages WHERE channel_id = ?", (channel.id,)) sticky_data = await cursor.fetchone() @@ -262,7 +262,7 @@ class PlainTextModal(discord.ui.Modal, title='Plain Text Sticky Message'): except ValueError: delay = 2 - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "INSERT INTO sticky_messages (guild_id, channel_id, message_type, message_content, delay_seconds) VALUES (?, ?, ?, ?, ?)", (self.ctx.guild.id, self.channel.id, 'plain', self.message_content.value, delay) @@ -296,7 +296,7 @@ class EmbedModal(discord.ui.Modal, title='Embed Sticky Message'): "footer": self.footer.value } - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "INSERT INTO sticky_messages (guild_id, channel_id, message_type, embed_data, delay_seconds) VALUES (?, ?, ?, ?, ?)", (self.ctx.guild.id, self.channel.id, 'embed', json.dumps(embed_data), delay) @@ -342,7 +342,7 @@ class EditPlainTextModal(discord.ui.Modal, title='Edit Plain Text Content'): self.add_item(self.message_content) async def on_submit(self, interaction: discord.Interaction): - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "UPDATE sticky_messages SET message_content = ? WHERE channel_id = ?", (self.message_content.value, self.channel.id) @@ -371,7 +371,7 @@ class EditEmbedModal(discord.ui.Modal, title='Edit Embed Content'): "title": self.title.value, "description": self.description.value, "color": f"#{RED_THEME_COLOR:06x}", "footer": self.footer.value } - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "UPDATE sticky_messages SET embed_data = ? WHERE channel_id = ?", (json.dumps(embed_data), self.channel.id) @@ -402,7 +402,7 @@ class EditSettingsModal(discord.ui.Modal, title='Edit Sticky Settings'): except ValueError: return await interaction.response.send_message("Please enter valid numbers.", ephemeral=True) - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "UPDATE sticky_messages SET delay_seconds = ?, auto_delete_after = ?, trigger_count = ? WHERE channel_id = ?", (delay, auto_del, trigger, self.channel.id) diff --git a/bot/cogs/commands/ticket.py b/bot/cogs/commands/ticket.py index 7cd9f7a..e9b19c9 100644 --- a/bot/cogs/commands/ticket.py +++ b/bot/cogs/commands/ticket.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path # cogs/commands/ticket.py @@ -44,7 +44,7 @@ TRANSCRIPT_EMOJI = ZMODULE # --- Constants --- if not os.path.exists('db'): os.makedirs('db') -DB_PATH = 'db/ticket.db' +DB_PATH = db_path('ticket.db') MAX_CATEGORIES = 15 TICKET_LIMIT_PER_USER = 3 diff --git a/bot/cogs/commands/timer.py b/bot/cogs/commands/timer.py index dea9aed..6da0d1f 100644 --- a/bot/cogs/commands/timer.py +++ b/bot/cogs/commands/timer.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/tracking.py b/bot/cogs/commands/tracking.py index 4150e32..05acb3b 100644 --- a/bot/cogs/commands/tracking.py +++ b/bot/cogs/commands/tracking.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import ARROWRED @@ -18,7 +18,7 @@ from discord.ext import commands import aiosqlite from utils.cv2 import CV2 -INVITE_DB = "db/invite.db" +INVITE_DB = db_path("invite.db") EMOJI_INVITE = ARROWRED from utils.config import BotName @@ -157,7 +157,7 @@ class Tracking(commands.Cog): f"**Fake:** `{fake}`\n" f"**Left:** `{left}`\n" f"**Rejoins:** `{rejoin}`\n\n" - f"{EMOJI_INVITE} **Get {BotName} Premium Lifetime [Join Support Here](https://discord.gg/codexdev)**" + f"{EMOJI_INVITE} **Get {BotName} Premium Lifetime [Join Support Here](https://discord.gg/hexahost)**" ) await ctx.send(view=CV2(f"Invite Log - {member.name}", desc)) diff --git a/bot/cogs/commands/translate.py b/bot/cogs/commands/translate.py index 25dad59..004b73d 100644 --- a/bot/cogs/commands/translate.py +++ b/bot/cogs/commands/translate.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/vanityroles.py b/bot/cogs/commands/vanityroles.py index 5a35f80..8413d9a 100644 --- a/bot/cogs/commands/vanityroles.py +++ b/bot/cogs/commands/vanityroles.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands, tasks @@ -19,7 +19,7 @@ import aiohttp import os from utils.Tools import * -DB_PATH = "db/vanity.db" +DB_PATH = db_path("vanity.db") class VanityRoles(commands.Cog): def __init__(self, bot): diff --git a/bot/cogs/commands/verification.py b/bot/cogs/commands/verification.py index ae0bc90..d2381b1 100644 --- a/bot/cogs/commands/verification.py +++ b/bot/cogs/commands/verification.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import TICK @@ -30,7 +30,7 @@ from utils .Tools import * logger =logging .getLogger ('discord') -DATABASE_PATH ='db/verification.db' +DATABASE_PATH =db_path('verification.db') DISCORD_COLORS ={ diff --git a/bot/cogs/commands/voice.py b/bot/cogs/commands/voice.py index 6e3a8bd..59342e5 100644 --- a/bot/cogs/commands/voice.py +++ b/bot/cogs/commands/voice.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/commands/welcome.py b/bot/cogs/commands/welcome.py index 788b88c..e523e19 100644 --- a/bot/cogs/commands/welcome.py +++ b/bot/cogs/commands/welcome.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import ICONS_CHANNEL, ICONS_PLUS, TICK, ZTICK @@ -65,7 +65,7 @@ class Welcomer(commands.Cog): self.bot.loop.create_task(self._create_table()) async def _create_table(self): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute(""" CREATE TABLE IF NOT EXISTS welcome ( guild_id INTEGER PRIMARY KEY, @@ -93,7 +93,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_setup(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT * FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) as cursor: row = await cursor.fetchone() @@ -247,7 +247,7 @@ class Welcomer(commands.Cog): async def _save_welcome_data(self, guild_id, welcome_type, message, embed_data=None): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute(""" INSERT OR REPLACE INTO welcome (guild_id, welcome_type, welcome_message, embed_data) VALUES (?, ?, ?, ?) @@ -431,7 +431,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_reset(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: cursor = await db.execute("SELECT 1 FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) is_set_up = await cursor.fetchone() @@ -454,7 +454,7 @@ class Welcomer(commands.Cog): await interaction.response.send_message("Only the command author can confirm this action.", ephemeral=True) return - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute("DELETE FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) await db.commit() @@ -490,7 +490,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_channel(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, channel_id FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) as cursor: result = await cursor.fetchone() welcome_message = result[0] if result else None @@ -524,7 +524,7 @@ class Welcomer(commands.Cog): selected_channel_id = int(select_menu.values[0]) selected_channel = ctx.guild.get_channel(selected_channel_id) - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute("UPDATE welcome SET channel_id = ? WHERE guild_id = ?", (selected_channel_id, ctx.guild.id)) await db.commit() @@ -580,7 +580,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_test(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) as cursor: row = await cursor.fetchone() @@ -680,7 +680,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_config(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT * FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) as cursor: row = await cursor.fetchone() @@ -750,7 +750,7 @@ class Welcomer(commands.Cog): return - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute(""" UPDATE welcome SET auto_delete_duration = ? @@ -769,7 +769,7 @@ class Welcomer(commands.Cog): @commands.cooldown(1, 6, commands.BucketType.user) @commands.max_concurrency(1, per=commands.BucketType.default, wait=False) async def greet_edit(self, ctx): - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, embed_data FROM welcome WHERE guild_id = ?", (ctx.guild.id,)) as cursor: row = await cursor.fetchone() @@ -820,7 +820,7 @@ class Welcomer(commands.Cog): await ctx.send("Setup was canceled. No changes were made.") return await new_message.delete() - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute("UPDATE welcome SET welcome_message = ? WHERE guild_id = ?", (new_message.content, ctx.guild.id)) await db.commit() @@ -924,7 +924,7 @@ class Welcomer(commands.Cog): else: embed_data_json[selected_option] = url_or_text - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: await db.execute("UPDATE welcome SET embed_data = ? WHERE guild_id = ?", (json.dumps(embed_data_json), ctx.guild.id)) await db.commit() diff --git a/bot/cogs/commands/youtube.py b/bot/cogs/commands/youtube.py index 725195e..b9ed240 100644 --- a/bot/cogs/commands/youtube.py +++ b/bot/cogs/commands/youtube.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/events/Errors.py b/bot/cogs/events/Errors.py index 6faadbb..675ec88 100644 --- a/bot/cogs/events/Errors.py +++ b/bot/cogs/events/Errors.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -17,11 +16,11 @@ import json import aiosqlite from discord.ext import commands from utils.config import serverLink -from core import zyrox, Cog, Context +from core import HexaHost, Cog, Context from utils.Tools import get_ignore_data class Errors(Cog): - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self.client = client @commands.Cog.listener() diff --git a/bot/cogs/events/ai.py b/bot/cogs/events/ai.py index 8d2716e..840ce63 100644 --- a/bot/cogs/events/ai.py +++ b/bot/cogs/events/ai.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/events/auto.py b/bot/cogs/events/auto.py index ee0d183..61d6a48 100644 --- a/bot/cogs/events/auto.py +++ b/bot/cogs/events/auto.py @@ -1,28 +1,27 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ import discord from utils.emoji import ARROWRED, ZMODULE from discord.utils import * -from core import zyrox, Cog +from core import HexaHost, Cog from utils.Tools import * from utils.config import BotName, serverLink from discord.ext import commands from discord.ui import Button, View class Autorole(Cog): - def __init__(self, bot: zyrox): + def __init__(self, bot: HexaHost): self.bot = bot @@ -31,14 +30,14 @@ class Autorole(Cog): async for entry in guild.audit_logs(limit=3): if entry.action == discord.AuditLogAction.bot_add: embed = discord.Embed( - description=f"{ZMODULE} **Thanks for adding me.**\n\n{ARROWRED} My default prefix is `>`\n{ARROWRED}> Use the `>help` command to see a list of commands\n{ARROWRED} For detailed guides, FAQ and information, visit our **[Support Server](https://discord.gg/codexdev)**", + description=f"{ZMODULE} **Thanks for adding me.**\n\n{ARROWRED} My default prefix is `>`\n{ARROWRED}> Use the `>help` command to see a list of commands\n{ARROWRED} For detailed guides, FAQ and information, visit our **[Support Server](https://discord.gg/hexahost)**", color=0xFF0000 ) embed.set_thumbnail(url=entry.user.avatar.url if entry.user.avatar else entry.user.default_avatar.url) embed.set_author(name=f"{guild.name}", icon_url=guild.me.display_avatar.url) website_button = Button(label='Website', style=discord.ButtonStyle.link, url='https://.vercel.app') - support_button = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/codexdev') + support_button = Button(label='Support', style=discord.ButtonStyle.link, url='https://discord.gg/hexahost') vote_button = Button(label='Vote for Me', style=discord.ButtonStyle.link, url=f'https://top.gg/bot/{self.bot.user.id}/vote') view = View() view.add_item(support_button) diff --git a/bot/cogs/events/autoblacklist.py b/bot/cogs/events/autoblacklist.py index 7d55c0a..2bb019c 100644 --- a/bot/cogs/events/autoblacklist.py +++ b/bot/cogs/events/autoblacklist.py @@ -1,33 +1,33 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import ZWARNING -from core import zyrox, Cog +from core import HexaHost, Cog from discord.ext import commands import aiosqlite from datetime import datetime, timedelta class AutoBlacklist(Cog): - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self.client = client self.spam_cd_mapping = commands.CooldownMapping.from_cooldown(5, 5, commands.BucketType.member) self.spam_command_mapping = commands.CooldownMapping.from_cooldown(6, 10, commands.BucketType.member) self.last_spam = {} self.spam_threshold = 5 self.spam_window = timedelta(minutes=10) - self.db_path = 'db/block.db' + self.db_path = db_path('block.db') self.bot_user_id = self.client.user.id if self.client.user else None self.guild_command_tracking = {} @@ -44,7 +44,7 @@ class AutoBlacklist(Cog): title=f"{ZWARNING} Guild Blacklisted", description=( f"This guild has been blacklisted due to spamming or automation. " - f"If you believe this is a mistake, please contact our [Support Server](https://discord.gg/codexdev) with any proof if possible." + f"If you believe this is a mistake, please contact our [Support Server](https://discord.gg/hexahost) with any proof if possible." ), color=0xFF0000 ) @@ -102,7 +102,7 @@ class AutoBlacklist(Cog): title=f"{ZWARNING} Guild Blacklisted", description=( f"The guild has been blacklisted for excessive command usage. " - f"If you believe this is a mistake, please contact our [Support Server](https://discord.gg/codexdev)." + f"If you believe this is a mistake, please contact our [Support Server](https://discord.gg/hexahost)." ), color=0xFF0000 ) @@ -123,7 +123,7 @@ class AutoBlacklist(Cog): await self.add_to_blacklist(user_id=message.author.id) embed = discord.Embed( title=f"{ZWARNING} User Blacklisted", - description=f"**{message.author.mention} has been blacklisted for repeatedly mentioning me. If you believe this is a mistake, please contact our [Support Server](https://discord.gg/codexdev) with any proof if possible.**", + description=f"**{message.author.mention} has been blacklisted for repeatedly mentioning me. If you believe this is a mistake, please contact our [Support Server](https://discord.gg/hexahost) with any proof if possible.**", color=0xFF0000 ) await message.channel.send(embed=embed) @@ -155,7 +155,7 @@ class AutoBlacklist(Cog): await self.add_to_blacklist(user_id=ctx.author.id) embed = discord.Embed( title=f"{ZWARNING} User Blacklisted", - description=f"**{ctx.author.mention} has been blacklisted for spamming commands. If you believe this is a mistake, please contact our [Support Server](https://discord.gg/codexdev) with any proof if possible.**", + description=f"**{ctx.author.mention} has been blacklisted for spamming commands. If you believe this is a mistake, please contact our [Support Server](https://discord.gg/hexahost) with any proof if possible.**", color=0xFF0000 ) await ctx.reply(embed=embed) diff --git a/bot/cogs/events/autoreact.py b/bot/cogs/events/autoreact.py index c89ae1f..4b5f9c1 100644 --- a/bot/cogs/events/autoreact.py +++ b/bot/cogs/events/autoreact.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from discord.ext import commands @@ -21,7 +21,7 @@ import asyncio class AutoReactListener(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = 'db/autoreact.db' + self.db_path = db_path('autoreact.db') self.rate_limited_users = set() async def get_triggers(self, guild_id): diff --git a/bot/cogs/events/autorole.py b/bot/cogs/events/autorole.py index 9be6a66..f6cb817 100644 --- a/bot/cogs/events/autorole.py +++ b/bot/cogs/events/autorole.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord import aiohttp @@ -18,14 +18,14 @@ import aiosqlite import asyncio import logging from discord.ext import commands -from core import zyrox, Cog +from core import HexaHost, Cog from utils.config import * -DATABASE_PATH = 'db/autorole.db' +DATABASE_PATH = db_path('autorole.db') logger = logging.getLogger(__name__) class Autorole2(Cog): - def __init__(self, bot: zyrox): + def __init__(self, bot: HexaHost): self.bot = bot self.headers = {"Authorization": f"Bot {self.bot.http.token}"} diff --git a/bot/cogs/events/greet2.py b/bot/cogs/events/greet2.py index c2f616b..11602d0 100644 --- a/bot/cogs/events/greet2.py +++ b/bot/cogs/events/greet2.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord import aiosqlite @@ -44,7 +44,7 @@ class greet(commands.Cog): async def process_queue(self, guild): while self.join_queue[guild.id]: member = self.join_queue[guild.id].pop(0) - async with aiosqlite.connect("db/welcome.db") as db: + async with aiosqlite.connect(db_path("welcome.db")) as db: async with db.execute("SELECT welcome_type, welcome_message, channel_id, embed_data, auto_delete_duration FROM welcome WHERE guild_id = ?", (guild.id,)) as cursor: row = await cursor.fetchone() if row is None: diff --git a/bot/cogs/events/mention.py b/bot/cogs/events/mention.py index 8600952..2ef4948 100644 --- a/bot/cogs/events/mention.py +++ b/bot/cogs/events/mention.py @@ -1,21 +1,21 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path from utils import getConfig from utils.config import BotName import discord -from utils.emoji import ARROWRED, CODEBASE, HEART3, INDEX, ZYROXLINKS +from utils.emoji import ARROWRED, CODEBASE, HEART3, INDEX, HEXAHOST_LINKS from discord.ui import LayoutView, TextDisplay, Separator, Container, ActionRow, Select from discord.ext import commands from utils.Tools import get_ignore_data @@ -44,7 +44,7 @@ class MentionSelectView(LayoutView): ), discord.SelectOption( label="Links", - emoji=ZYROXLINKS, + emoji=HEXAHOST_LINKS, description="Useful bot links", ), ], @@ -88,7 +88,7 @@ class MentionSelectView(LayoutView): elif selected == "Links": content = ( f"**[Invite {BotName}](https://discord.com/oauth2/authorize?client_id=1396114795102470196)**\n" - "**[Join Support Server](https://discord.gg/codexdev)**" + "**[Join Support Server](https://discord.gg/hexahost)**" ) new_container = Container( @@ -111,7 +111,7 @@ class Mention(commands.Cog): self.bot_name = BotName async def is_blacklisted(self, message): - async with aiosqlite.connect("db/block.db") as db: + async with aiosqlite.connect(db_path("block.db")) as db: cursor = await db.execute( "SELECT 1 FROM guild_blacklist WHERE guild_id = ?", (message.guild.id,) ) diff --git a/bot/cogs/events/mentionold.txt b/bot/cogs/events/mentionold.txt index 265c431..1f77af1 100644 --- a/bot/cogs/events/mentionold.txt +++ b/bot/cogs/events/mentionold.txt @@ -10,7 +10,7 @@ class Mention(commands.Cog): def __init__(self, bot): self.bot = bot self.color = 0xFF0000 - self.bot_name = "Zyrox X" + self.bot_name = "HexaHost" async def is_blacklisted(self, message): async with aiosqlite.connect("db/block.db") as db: @@ -53,11 +53,11 @@ class Mention(commands.Cog): description=f"> {HEART3} **Hey {message.author.mention}**\n> {ARROWRED} **Prefix For This Server `{prefix}`**\n\n___Type `{prefix}help` for more information.___" ) embed.set_thumbnail(url=self.bot.user.avatar.url) - embed.set_footer(text="Powered by Zyrox Development™", icon_url=self.bot.user.avatar.url) + embed.set_footer(text="Powered by HexaHost Development™", icon_url=self.bot.user.avatar.url) buttons = [ discord.ui.Button(label="Invite", style=discord.ButtonStyle.link, url="https://discord.com/oauth2/authorize?client_id=1396114795102470196&permissions=8&integration_type=0&scope=bot+applications.commands"), - discord.ui.Button(label="Support", style=discord.ButtonStyle.link, url="https://discord.gg/codexdev"), + discord.ui.Button(label="Support", style=discord.ButtonStyle.link, url="https://discord.gg/hexahost"), ] view = discord.ui.View() diff --git a/bot/cogs/events/on_guild.py b/bot/cogs/events/on_guild.py index 60e146a..26a0617 100644 --- a/bot/cogs/events/on_guild.py +++ b/bot/cogs/events/on_guild.py @@ -1,19 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from discord.ext import commands -from core import zyrox, Cog +from core import HexaHost, Cog import discord from utils.emoji import ARROWRED, KING, ZBOT, ZHUMAN, ZROCKET import logging @@ -26,16 +25,14 @@ logging.basicConfig( datefmt="%H:%M:%S", ) -client = zyrox() - class Guild(Cog): - def __init__(self, client: zyrox): + def __init__(self, client: HexaHost): self.client = client + self.bot = client self.recently_removed_guilds = set() self._removal_timestamps = {} - @client.event @commands.Cog.listener(name="on_guild_join") async def on_guild_add(self, guild): try: @@ -102,7 +99,7 @@ Threads : {len(guild.threads)} await guild.chunk() embed = discord.Embed( - description=f"{ARROWRED} Prefix For This Server is `>`\n{ARROWRED} Get Started with `>help`\n{ARROWRED} For detailed guides, FAQ & information, visit our **[Support Server](https://discord.gg/codexdev)**", + description=f"{ARROWRED} Prefix For This Server is `>`\n{ARROWRED} Get Started with `>help`\n{ARROWRED} For detailed guides, FAQ & information, visit our **[Support Server](https://discord.gg/hexahost)**", color=0xFF0000, ) embed.set_author( @@ -117,7 +114,7 @@ Threads : {len(guild.threads)} support = Button( label="Support", style=discord.ButtonStyle.link, - url=f"https://discord.gg/codexdev", + url=f"https://discord.gg/hexahost", ) view = View() @@ -142,7 +139,6 @@ Threads : {len(guild.threads)} except Exception as e: logging.error(f"Error in on_guild_join: {e}") - @client.event @commands.Cog.listener(name="on_guild_remove") async def on_guild_remove(self, guild): import time @@ -218,6 +214,3 @@ Threads : {len(guild.threads)} await idk.send(embed=embed) except Exception as e: logging.error(f"Error in on_guild_remove: {e}") - - -# client.add_cog(Guild(client)) diff --git a/bot/cogs/events/react.py b/bot/cogs/events/react.py index fde4715..520eecf 100644 --- a/bot/cogs/events/react.py +++ b/bot/cogs/events/react.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/events/stickymessage.py b/bot/cogs/events/stickymessage.py index 7a525e4..4eea910 100644 --- a/bot/cogs/events/stickymessage.py +++ b/bot/cogs/events/stickymessage.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord import aiosqlite @@ -37,7 +37,7 @@ class StickyMessageListener(commands.Cog): if message.channel.id in self.processing_channels: return - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: cursor = await db.execute(""" SELECT id, message_type, message_content, embed_data, last_message_id, enabled, delay_seconds, auto_delete_after, ignore_bots, @@ -84,7 +84,7 @@ class StickyMessageListener(commands.Cog): ) if new_sticky_msg: - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute(""" UPDATE sticky_messages SET last_message_id = ? @@ -106,7 +106,7 @@ class StickyMessageListener(commands.Cog): async def get_prefix(self, message): try: - async with aiosqlite.connect("db/prefix.db") as db: + async with aiosqlite.connect(db_path("prefix.db")) as db: cursor = await db.execute( "SELECT prefix FROM prefix WHERE guild_id = ?", (message.guild.id,) @@ -117,7 +117,7 @@ class StickyMessageListener(commands.Cog): return "!" async def update_counter(self, guild_id, channel_id, new_count): - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute(""" UPDATE sticky_messages SET current_count = ? @@ -179,7 +179,7 @@ class StickyMessageListener(commands.Cog): @commands.Cog.listener() async def on_guild_channel_delete(self, channel): try: - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "DELETE FROM sticky_messages WHERE channel_id = ?", (channel.id,) @@ -191,7 +191,7 @@ class StickyMessageListener(commands.Cog): @commands.Cog.listener() async def on_guild_remove(self, guild): try: - async with aiosqlite.connect("db/stickymessages.db") as db: + async with aiosqlite.connect(db_path("stickymessages.db")) as db: await db.execute( "DELETE FROM sticky_messages WHERE guild_id = ?", (guild.id,) diff --git a/bot/cogs/zyrox/ai.py b/bot/cogs/hexahost/ai.py similarity index 66% rename from bot/cogs/zyrox/ai.py rename to bot/cogs/hexahost/ai.py index 697b749..731d711 100644 --- a/bot/cogs/zyrox/ai.py +++ b/bot/cogs/hexahost/ai.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/antinuke.py b/bot/cogs/hexahost/antinuke.py similarity index 66% rename from bot/cogs/zyrox/antinuke.py rename to bot/cogs/hexahost/antinuke.py index b8545d9..6da1bc8 100644 --- a/bot/cogs/zyrox/antinuke.py +++ b/bot/cogs/hexahost/antinuke.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/automod.py b/bot/cogs/hexahost/automod.py similarity index 70% rename from bot/cogs/zyrox/automod.py rename to bot/cogs/hexahost/automod.py index 76a256a..a9e0074 100644 --- a/bot/cogs/zyrox/automod.py +++ b/bot/cogs/hexahost/automod.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/birth.py b/bot/cogs/hexahost/birth.py similarity index 64% rename from bot/cogs/zyrox/birth.py rename to bot/cogs/hexahost/birth.py index 930a3f9..26bc05e 100644 --- a/bot/cogs/zyrox/birth.py +++ b/bot/cogs/hexahost/birth.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/booster.py b/bot/cogs/hexahost/booster.py similarity index 64% rename from bot/cogs/zyrox/booster.py rename to bot/cogs/hexahost/booster.py index de26432..0d02eb4 100644 --- a/bot/cogs/zyrox/booster.py +++ b/bot/cogs/hexahost/booster.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/counting.py b/bot/cogs/hexahost/counting.py similarity index 64% rename from bot/cogs/zyrox/counting.py rename to bot/cogs/hexahost/counting.py index b23386e..4646ac5 100644 --- a/bot/cogs/zyrox/counting.py +++ b/bot/cogs/hexahost/counting.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/encryption.py b/bot/cogs/hexahost/encryption.py similarity index 80% rename from bot/cogs/zyrox/encryption.py rename to bot/cogs/hexahost/encryption.py index 3094c32..8e9117c 100644 --- a/bot/cogs/zyrox/encryption.py +++ b/bot/cogs/hexahost/encryption.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/extra.py b/bot/cogs/hexahost/extra.py similarity index 69% rename from bot/cogs/zyrox/extra.py rename to bot/cogs/hexahost/extra.py index 9d31896..94b2e3e 100644 --- a/bot/cogs/zyrox/extra.py +++ b/bot/cogs/hexahost/extra.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/fun.py b/bot/cogs/hexahost/fun.py similarity index 66% rename from bot/cogs/zyrox/fun.py rename to bot/cogs/hexahost/fun.py index 1dc7ca1..6f73b90 100644 --- a/bot/cogs/zyrox/fun.py +++ b/bot/cogs/hexahost/fun.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/games.py b/bot/cogs/hexahost/games.py similarity index 65% rename from bot/cogs/zyrox/games.py rename to bot/cogs/hexahost/games.py index ba363e3..695c990 100644 --- a/bot/cogs/zyrox/games.py +++ b/bot/cogs/hexahost/games.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/general.py b/bot/cogs/hexahost/general.py similarity index 68% rename from bot/cogs/zyrox/general.py rename to bot/cogs/hexahost/general.py index 9cfda9e..bedb926 100644 --- a/bot/cogs/zyrox/general.py +++ b/bot/cogs/hexahost/general.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/giveaway.py b/bot/cogs/hexahost/giveaway.py similarity index 62% rename from bot/cogs/zyrox/giveaway.py rename to bot/cogs/hexahost/giveaway.py index d2bb28f..d5f8ba1 100644 --- a/bot/cogs/zyrox/giveaway.py +++ b/bot/cogs/hexahost/giveaway.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/ignore.py b/bot/cogs/hexahost/ignore.py similarity index 67% rename from bot/cogs/zyrox/ignore.py rename to bot/cogs/hexahost/ignore.py index 872085b..5d1c430 100644 --- a/bot/cogs/zyrox/ignore.py +++ b/bot/cogs/hexahost/ignore.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/inviteTracker.py b/bot/cogs/hexahost/inviteTracker.py similarity index 64% rename from bot/cogs/zyrox/inviteTracker.py rename to bot/cogs/hexahost/inviteTracker.py index f15b088..ead673c 100644 --- a/bot/cogs/zyrox/inviteTracker.py +++ b/bot/cogs/hexahost/inviteTracker.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/j2c.py b/bot/cogs/hexahost/j2c.py similarity index 62% rename from bot/cogs/zyrox/j2c.py rename to bot/cogs/hexahost/j2c.py index 084e7dd..a1dbcd3 100644 --- a/bot/cogs/zyrox/j2c.py +++ b/bot/cogs/hexahost/j2c.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/joindm.py b/bot/cogs/hexahost/joindm.py similarity index 63% rename from bot/cogs/zyrox/joindm.py rename to bot/cogs/hexahost/joindm.py index f6996f7..ab59084 100644 --- a/bot/cogs/zyrox/joindm.py +++ b/bot/cogs/hexahost/joindm.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/leveling.py b/bot/cogs/hexahost/leveling.py similarity index 71% rename from bot/cogs/zyrox/leveling.py rename to bot/cogs/hexahost/leveling.py index 6ad2d41..23f7e86 100644 --- a/bot/cogs/zyrox/leveling.py +++ b/bot/cogs/hexahost/leveling.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/logging.py b/bot/cogs/hexahost/logging.py similarity index 64% rename from bot/cogs/zyrox/logging.py rename to bot/cogs/hexahost/logging.py index dcad8f9..690ee1e 100644 --- a/bot/cogs/zyrox/logging.py +++ b/bot/cogs/hexahost/logging.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/mc.py b/bot/cogs/hexahost/mc.py similarity index 63% rename from bot/cogs/zyrox/mc.py rename to bot/cogs/hexahost/mc.py index 3b85342..5ba0135 100644 --- a/bot/cogs/zyrox/mc.py +++ b/bot/cogs/hexahost/mc.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/moderation.py b/bot/cogs/hexahost/moderation.py similarity index 72% rename from bot/cogs/zyrox/moderation.py rename to bot/cogs/hexahost/moderation.py index 00d150f..10c9941 100644 --- a/bot/cogs/zyrox/moderation.py +++ b/bot/cogs/hexahost/moderation.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/music.py b/bot/cogs/hexahost/music.py similarity index 66% rename from bot/cogs/zyrox/music.py rename to bot/cogs/hexahost/music.py index 8b6fab4..f4d74c6 100644 --- a/bot/cogs/zyrox/music.py +++ b/bot/cogs/hexahost/music.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/server.py b/bot/cogs/hexahost/server.py similarity index 72% rename from bot/cogs/zyrox/server.py rename to bot/cogs/hexahost/server.py index e7ff4b7..345faa0 100644 --- a/bot/cogs/zyrox/server.py +++ b/bot/cogs/hexahost/server.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/sticky.py b/bot/cogs/hexahost/sticky.py similarity index 63% rename from bot/cogs/zyrox/sticky.py rename to bot/cogs/hexahost/sticky.py index e957cd7..0342b00 100644 --- a/bot/cogs/zyrox/sticky.py +++ b/bot/cogs/hexahost/sticky.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/ticket.py b/bot/cogs/hexahost/ticket.py similarity index 64% rename from bot/cogs/zyrox/ticket.py rename to bot/cogs/hexahost/ticket.py index a75f339..3a67f45 100644 --- a/bot/cogs/zyrox/ticket.py +++ b/bot/cogs/hexahost/ticket.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/vanity.py b/bot/cogs/hexahost/vanity.py similarity index 63% rename from bot/cogs/zyrox/vanity.py rename to bot/cogs/hexahost/vanity.py index 6e6c6c4..e6cc43e 100644 --- a/bot/cogs/zyrox/vanity.py +++ b/bot/cogs/hexahost/vanity.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/verify.py b/bot/cogs/hexahost/verify.py similarity index 67% rename from bot/cogs/zyrox/verify.py rename to bot/cogs/hexahost/verify.py index 6298bc4..b4651cb 100644 --- a/bot/cogs/zyrox/verify.py +++ b/bot/cogs/hexahost/verify.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/voice.py b/bot/cogs/hexahost/voice.py similarity index 68% rename from bot/cogs/zyrox/voice.py rename to bot/cogs/hexahost/voice.py index 5419d06..f6dfe57 100644 --- a/bot/cogs/zyrox/voice.py +++ b/bot/cogs/hexahost/voice.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/zyrox/welcome.py b/bot/cogs/hexahost/welcome.py similarity index 64% rename from bot/cogs/zyrox/welcome.py rename to bot/cogs/hexahost/welcome.py index 24bcf20..bb3807d 100644 --- a/bot/cogs/zyrox/welcome.py +++ b/bot/cogs/hexahost/welcome.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/ban.py b/bot/cogs/moderation/ban.py index 4df923f..e9b5d40 100644 --- a/bot/cogs/moderation/ban.py +++ b/bot/cogs/moderation/ban.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/hide.py b/bot/cogs/moderation/hide.py index 765585d..d866f8d 100644 --- a/bot/cogs/moderation/hide.py +++ b/bot/cogs/moderation/hide.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/kick.py b/bot/cogs/moderation/kick.py index 823bea1..5c8c01d 100644 --- a/bot/cogs/moderation/kick.py +++ b/bot/cogs/moderation/kick.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/lock.py b/bot/cogs/moderation/lock.py index 0df6915..71bc72d 100644 --- a/bot/cogs/moderation/lock.py +++ b/bot/cogs/moderation/lock.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/message.py b/bot/cogs/moderation/message.py index 1585a98..9625b8e 100644 --- a/bot/cogs/moderation/message.py +++ b/bot/cogs/moderation/message.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/moderation.py b/bot/cogs/moderation/moderation.py index 3a362f1..d8cf11f 100644 --- a/bot/cogs/moderation/moderation.py +++ b/bot/cogs/moderation/moderation.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -21,7 +20,7 @@ import typing import typing as t from typing import * from utils.Tools import * -from core import Cog, zyrox, Context +from core import Cog, HexaHost, Context from discord.ext.commands import Converter from discord.ext import commands, tasks from discord.ui import Button, View diff --git a/bot/cogs/moderation/role.py b/bot/cogs/moderation/role.py index 78ef750..0ae4e3a 100644 --- a/bot/cogs/moderation/role.py +++ b/bot/cogs/moderation/role.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/snipe.py b/bot/cogs/moderation/snipe.py index 853e64e..f1b9d61 100644 --- a/bot/cogs/moderation/snipe.py +++ b/bot/cogs/moderation/snipe.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/timeout.py b/bot/cogs/moderation/timeout.py index ee237b9..6ee0ec0 100644 --- a/bot/cogs/moderation/timeout.py +++ b/bot/cogs/moderation/timeout.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/topcheck.py b/bot/cogs/moderation/topcheck.py index e75c0f1..5edfc3b 100644 --- a/bot/cogs/moderation/topcheck.py +++ b/bot/cogs/moderation/topcheck.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import CROSS, TICK @@ -22,7 +22,7 @@ from utils.config import * class TopCheck(commands.Cog): def __init__(self, bot): self.bot = bot - self.db_path = "db/topcheck.db" + self.db_path = db_path("topcheck.db") self.bot.loop.create_task(self.setup()) async def setup(self): diff --git a/bot/cogs/moderation/unban.py b/bot/cogs/moderation/unban.py index 767ad7b..5619b70 100644 --- a/bot/cogs/moderation/unban.py +++ b/bot/cogs/moderation/unban.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/unhide.py b/bot/cogs/moderation/unhide.py index cf75f2b..1fb2212 100644 --- a/bot/cogs/moderation/unhide.py +++ b/bot/cogs/moderation/unhide.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/unlock.py b/bot/cogs/moderation/unlock.py index b8c0fe3..f57dfd7 100644 --- a/bot/cogs/moderation/unlock.py +++ b/bot/cogs/moderation/unlock.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/unmute.py b/bot/cogs/moderation/unmute.py index ac406ef..84456ae 100644 --- a/bot/cogs/moderation/unmute.py +++ b/bot/cogs/moderation/unmute.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/cogs/moderation/warn.py b/bot/cogs/moderation/warn.py index 6933947..52addee 100644 --- a/bot/cogs/moderation/warn.py +++ b/bot/cogs/moderation/warn.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path import discord from utils.emoji import DELETE, TICK @@ -52,7 +52,7 @@ class Warn(commands.Cog): def __init__(self, bot): self.bot = bot self.color = discord.Color.from_rgb(255, 0, 0) - self.db_path = "db/warn.db" + self.db_path = db_path("warn.db") asyncio.create_task(self.setup()) diff --git a/bot/config.yml b/bot/config.yml index d965341..b62293c 100644 --- a/bot/config.yml +++ b/bot/config.yml @@ -10,7 +10,7 @@ AI_NSFW_CONTENT_FILTER: true LANGUAGE: en DEFAULT_INSTRUCTION: soniye -Discord: https://discord.gg/codexdev +Discord: https://discord.gg/hexahost TRIGGER: - chatbot @@ -23,7 +23,7 @@ DISABLE_PRESENCE: false PRESENCES: - How can I assist you? - Currently in {guild_count} guilds - - Support at https://discord.gg/codexdev + - Support at https://discord.gg/hexahost BLACKLIST_WORDS: #changed to cogs/imagine.py diff --git a/bot/core/Cog.py b/bot/core/Cog.py index 7d9a276..7ba987f 100644 --- a/bot/core/Cog.py +++ b/bot/core/Cog.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/core/Context.py b/bot/core/Context.py index 0155820..6fb19e7 100644 --- a/bot/core/Context.py +++ b/bot/core/Context.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/core/__init__.py b/bot/core/__init__.py index 6fcc598..0031b72 100644 --- a/bot/core/__init__.py +++ b/bot/core/__init__.py @@ -1,17 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ -from .zyrox import zyrox +from .hexahost import HexaHost from .Context import Context from .Cog import Cog \ No newline at end of file diff --git a/bot/core/zyrox.py b/bot/core/hexahost.py similarity index 86% rename from bot/core/zyrox.py rename to bot/core/hexahost.py index 78e0b08..f3aeae2 100644 --- a/bot/core/zyrox.py +++ b/bot/core/hexahost.py @@ -1,18 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations +from utils.db_paths import db_path from discord.ext import commands, tasks import discord import aiohttp @@ -21,6 +21,7 @@ from typing import List import aiosqlite from utils.config import OWNER_IDS, BotName from utils import getConfig, updateConfig +from utils.Tools import setup_db from .Context import Context from colorama import Fore, Style, init import importlib @@ -33,7 +34,7 @@ extensions: List[str] = [ "cogs" ] -class zyrox(commands.AutoShardedBot): +class HexaHost(commands.AutoShardedBot): def __init__(self, *arg, **kwargs): intents = discord.Intents.all() intents.presences = True @@ -54,6 +55,7 @@ class zyrox(commands.AutoShardedBot): self.status_list = [] async def setup_hook(self): + await setup_db() await self.load_extensions() self.status_task.start() @@ -108,7 +110,7 @@ class zyrox(commands.AutoShardedBot): async def get_prefix(self, message: discord.Message): if message.guild: guild_id = message.guild.id - async with aiosqlite.connect('db/np.db') as db: + async with aiosqlite.connect(db_path('np.db')) as db: async with db.execute("SELECT id FROM np WHERE id = ?", (message.author.id,)) as cursor: row = await cursor.fetchone() data = await getConfig(guild_id) @@ -118,7 +120,7 @@ class zyrox(commands.AutoShardedBot): else: return commands.when_mentioned_or(prefix)(self, message) else: - async with aiosqlite.connect('db/np.db') as db: + async with aiosqlite.connect(db_path('np.db')) as db: async with db.execute("SELECT id FROM np WHERE id = ?", (message.author.id,)) as cursor: row = await cursor.fetchone() if row: @@ -139,5 +141,5 @@ class zyrox(commands.AutoShardedBot): def setup_bot(): intents = discord.Intents.all() - bot = zyrox(intents=intents) + bot = HexaHost(intents=intents) return bot diff --git a/bot/db/_db.py b/bot/db/_db.py index 221e1ce..6c19a94 100644 --- a/bot/db/_db.py +++ b/bot/db/_db.py @@ -1,16 +1,16 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ +from utils.db_paths import db_path as resolve_db_path import aiosqlite import asyncio @@ -23,10 +23,10 @@ class Database: db_path: str db: Optional[aiosqlite.Connection] - def __new__(cls, db_path='db/anti.db'): + def __new__(cls, database_path: str | None = None): if cls._instance is None: cls._instance = super().__new__(cls) - cls._instance.db_path = db_path + cls._instance.db_path = database_path or resolve_db_path('anti.db') cls._instance.db = None cls._instance._lock = asyncio.Lock() return cls._instance diff --git a/bot/games/__init__.py b/bot/games/__init__.py index 38a2bf4..d2a881d 100644 --- a/bot/games/__init__.py +++ b/bot/games/__init__.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/battleship.py b/bot/games/battleship.py index 3864e5a..bba87b6 100644 --- a/bot/games/battleship.py +++ b/bot/games/battleship.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/__init__.py b/bot/games/button_games/__init__.py index cd52ba1..6fba84c 100644 --- a/bot/games/button_games/__init__.py +++ b/bot/games/button_games/__init__.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/battleship_buttons.py b/bot/games/button_games/battleship_buttons.py index 63a079f..dbe8bf1 100644 --- a/bot/games/button_games/battleship_buttons.py +++ b/bot/games/button_games/battleship_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/chess_buttons.py b/bot/games/button_games/chess_buttons.py index e3b18aa..b5d8936 100644 --- a/bot/games/button_games/chess_buttons.py +++ b/bot/games/button_games/chess_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/connect_four_buttons.py b/bot/games/button_games/connect_four_buttons.py index 3320605..c576d9f 100644 --- a/bot/games/button_games/connect_four_buttons.py +++ b/bot/games/button_games/connect_four_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/country_guess_buttons.py b/bot/games/button_games/country_guess_buttons.py index d7fec76..c54cca7 100644 --- a/bot/games/button_games/country_guess_buttons.py +++ b/bot/games/button_games/country_guess_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/lights_out.py b/bot/games/button_games/lights_out.py index 121c178..888134a 100644 --- a/bot/games/button_games/lights_out.py +++ b/bot/games/button_games/lights_out.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/memory_game.py b/bot/games/button_games/memory_game.py index 7498f23..d5c539b 100644 --- a/bot/games/button_games/memory_game.py +++ b/bot/games/button_games/memory_game.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/number_slider.py b/bot/games/button_games/number_slider.py index 2ccafca..d4e3120 100644 --- a/bot/games/button_games/number_slider.py +++ b/bot/games/button_games/number_slider.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/reaction_test_buttons.py b/bot/games/button_games/reaction_test_buttons.py index f9c5a82..57b05ca 100644 --- a/bot/games/button_games/reaction_test_buttons.py +++ b/bot/games/button_games/reaction_test_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/rps_buttons.py b/bot/games/button_games/rps_buttons.py index e6bf046..fc02a90 100644 --- a/bot/games/button_games/rps_buttons.py +++ b/bot/games/button_games/rps_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/tictactoe_buttons.py b/bot/games/button_games/tictactoe_buttons.py index 09ada97..1fe1235 100644 --- a/bot/games/button_games/tictactoe_buttons.py +++ b/bot/games/button_games/tictactoe_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/twenty_48_buttons.py b/bot/games/button_games/twenty_48_buttons.py index feb0039..d3fb822 100644 --- a/bot/games/button_games/twenty_48_buttons.py +++ b/bot/games/button_games/twenty_48_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/button_games/wordle_buttons.py b/bot/games/button_games/wordle_buttons.py index 7119309..22f13bf 100644 --- a/bot/games/button_games/wordle_buttons.py +++ b/bot/games/button_games/wordle_buttons.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/chess_game.py b/bot/games/chess_game.py index 1892c7d..5d2dca8 100644 --- a/bot/games/chess_game.py +++ b/bot/games/chess_game.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/connect_four.py b/bot/games/connect_four.py index e51e8cc..f794fd0 100644 --- a/bot/games/connect_four.py +++ b/bot/games/connect_four.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/country_guess.py b/bot/games/country_guess.py index 0f45c25..6a20b79 100644 --- a/bot/games/country_guess.py +++ b/bot/games/country_guess.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/reaction_test.py b/bot/games/reaction_test.py index a9c2090..352c771 100644 --- a/bot/games/reaction_test.py +++ b/bot/games/reaction_test.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/rps.py b/bot/games/rps.py index 48cd63a..706de16 100644 --- a/bot/games/rps.py +++ b/bot/games/rps.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/tictactoe.py b/bot/games/tictactoe.py index 0e465d5..6ada353 100644 --- a/bot/games/tictactoe.py +++ b/bot/games/tictactoe.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/twenty_48.py b/bot/games/twenty_48.py index 4286aba..b52ce71 100644 --- a/bot/games/twenty_48.py +++ b/bot/games/twenty_48.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/typeracer.py b/bot/games/typeracer.py index 3e15623..8f9cb27 100644 --- a/bot/games/typeracer.py +++ b/bot/games/typeracer.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/utils.py b/bot/games/utils.py index 276d5b4..eb03032 100644 --- a/bot/games/utils.py +++ b/bot/games/utils.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/games/wordle.py b/bot/games/wordle.py index 6a59770..d42c23f 100644 --- a/bot/games/wordle.py +++ b/bot/games/wordle.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/lang/lang.en.json b/bot/lang/lang.en.json index 03f3683..d9a7cb2 100644 --- a/bot/lang/lang.en.json +++ b/bot/lang/lang.en.json @@ -16,7 +16,7 @@ "toggleactive_msg_1": "has been removed from the list of active channels.", "toggleactive_msg_2": "has been added to the list of active channels!", "help": "Get all other commands!", - "help_footer": "https://discord.gg/codexdev", + "help_footer": "https://discord.gg/hexahost", "nekos": "Display a random image or GIF of a neko, waifu, husbando, kitsune, or other actions", "nekos_msg": "Invalid category provided. Valid categories are: ", "imagine": "Generate an image", diff --git a/bot/requirements.txt b/bot/requirements.txt index b0d0242..ca99ee3 100644 --- a/bot/requirements.txt +++ b/bot/requirements.txt @@ -1,42 +1,52 @@ -Quart -discord -discord.py -discord.ui -jishaku -mcstatus -asyncio +# HexaHost Discord Bot — Python dependencies +# Install: pip install -r requirements.txt + +# Discord +discord.py>=2.3.0 discord-ext-menus -aiohttp -datetime -flask -typing -psutil -collection -requests -pathlib -pymongo -wavelink>=2.0.0 -httpx -discord.ext-context -tasksio -motor -Augmentor -numpy -aiosqlite -gtts -langdetect -python-dotenv -pyttsx3 -PyYAML -Requests -openai -duckduckgo-search==6.3.6 -# pillow==11.0.0 -colorama -chess -python-dateutil -deep-translator==1.11.4 -uvicorn==0.46.0 -fastapi -slowapi -pycloudflared \ No newline at end of file + +# Web API (dashboard backend) +fastapi>=0.100.0 +uvicorn>=0.23.0 +slowapi>=0.1.9 + +# HTTP / async +aiohttp>=3.9.0 +httpx>=0.25.0 +requests>=2.31.0 + +# Database & config +aiosqlite>=0.19.0 +python-dotenv>=1.0.0 +PyYAML>=6.0 + +# Music (Lavalink / Wavelink v3) +wavelink>=3.0.0 + +# Utilities +colorama>=0.4.6 +python-dateutil>=2.8.0 +pytz>=2023.3 +deep-translator>=1.11.4 +duckduckgo-search>=6.0.0 +langdetect>=1.0.9 +chess>=1.10.0 +mcstatus>=11.0.0 +psutil>=5.9.0 +Pillow>=10.0.0 + +# Optional: owner debug REPL (set JISHAKU_ENABLED=true) +jishaku>=2.5.0 + +# Optional: HTTPS tunnel for dashboard API +pycloudflared>=0.1.0 + +# Optional features (AI, TTS, games, etc.) +openai>=1.0.0 +gtts>=2.5.0 +pyttsx3>=2.90 +numpy>=1.24.0 + +# Legacy / optional integrations +pymongo>=4.0.0 +motor>=3.0.0 diff --git a/bot/utils/Tools.py b/bot/utils/Tools.py index 3a67920..39e1d4a 100644 --- a/bot/utils/Tools.py +++ b/bot/utils/Tools.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -18,10 +17,10 @@ from discord.ext import commands from core import Context from utils.emoji import DENIED import aiosqlite -import asyncio +from utils.db_paths import db_path, bot_root_json_path async def setup_db(): - async with aiosqlite.connect('db/prefix.db') as db: + async with aiosqlite.connect(db_path('prefix.db')) as db: await db.execute(''' CREATE TABLE IF NOT EXISTS prefixes ( guild_id INTEGER PRIMARY KEY, @@ -31,10 +30,8 @@ async def setup_db(): await db.commit() -asyncio.run(setup_db()) - async def is_topcheck_enabled(guild_id: int): - async with aiosqlite.connect('db/topcheck.db') as db: + async with aiosqlite.connect(db_path('topcheck.db')) as db: async with db.execute("SELECT enabled FROM topcheck WHERE guild_id = ?", (guild_id,)) as cursor: row = await cursor.fetchone() return row is not None and row[0] == 1 @@ -80,17 +77,17 @@ def getIgnore(guild_id): "bypassuser": [], "commands": [] } - return get_or_create_guild_config("ignore.json", guild_id, default_config) + return get_or_create_guild_config(bot_root_json_path("ignore.json"), guild_id, default_config) def updateignore(guild_id, data): - update_guild_config("ignore.json", guild_id, data) + update_guild_config(bot_root_json_path("ignore.json"), guild_id, data) async def getConfig(guildID): - async with aiosqlite.connect('db/prefix.db') as db: + async with aiosqlite.connect(db_path('prefix.db')) as db: async with db.execute("SELECT prefix FROM prefixes WHERE guild_id = ?", (guildID,)) as cursor: row = await cursor.fetchone() if row: @@ -101,7 +98,7 @@ async def getConfig(guildID): return defaultConfig async def updateConfig(guildID, data): - async with aiosqlite.connect('db/prefix.db') as db: + async with aiosqlite.connect(db_path('prefix.db')) as db: await db.execute( "INSERT OR REPLACE INTO prefixes (guild_id, prefix) VALUES (?, ?)", (guildID, data["prefix"]) @@ -118,7 +115,7 @@ def restart_program(): def blacklist_check(): async def predicate(ctx): - async with aiosqlite.connect('db/block.db') as db: + async with aiosqlite.connect(db_path('block.db')) as db: cursor = await db.execute("SELECT 1 FROM user_blacklist WHERE user_id = ?", (str(ctx.author.id),)) user_blacklisted = await cursor.fetchone() if user_blacklisted: @@ -135,7 +132,7 @@ def blacklist_check(): async def get_ignore_data(guild_id: int) -> dict: - async with aiosqlite.connect("db/ignore.db") as db: + async with aiosqlite.connect(db_path("ignore.db")) as db: data = { "channel": set(), "user": set(), diff --git a/bot/utils/__init__.py b/bot/utils/__init__.py index 99405a0..719671c 100644 --- a/bot/utils/__init__.py +++ b/bot/utils/__init__.py @@ -2,15 +2,14 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/ai_utils.py b/bot/utils/ai_utils.py index ade1a95..5a39a22 100644 --- a/bot/utils/ai_utils.py +++ b/bot/utils/ai_utils.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/config.py b/bot/utils/config.py index d93faff..cae5430 100644 --- a/bot/utils/config.py +++ b/bot/utils/config.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ @@ -18,13 +17,12 @@ from dotenv import load_dotenv load_dotenv() TOKEN = os.environ.get("TOKEN") -BRAND_NAME = os.environ.get("brand_name", "Zyrox X") +BRAND_NAME = os.environ.get("brand_name", "HexaHost") NAME = BRAND_NAME BotName = BRAND_NAME -server = "https://discord.gg/codexdev" -serverLink = "https://discord.gg/codexdev" -ch = "https://discord.com/channels/699587669059174461/1271825678710476911" +server = "https://discord.gg/hexahost" +serverLink = "https://discord.gg/hexahost" # ── Security / feature toggles ──────────────────────────────────────────────── diff --git a/bot/utils/config_loader.py b/bot/utils/config_loader.py index 0348fba..c581ae6 100644 --- a/bot/utils/config_loader.py +++ b/bot/utils/config_loader.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/cv2.py b/bot/utils/cv2.py index 0e259eb..a46b880 100644 --- a/bot/utils/cv2.py +++ b/bot/utils/cv2.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/db_paths.py b/bot/utils/db_paths.py new file mode 100644 index 0000000..480f46c --- /dev/null +++ b/bot/utils/db_paths.py @@ -0,0 +1,56 @@ +"""Storage path helpers — multi-instance via BOT_INSTANCE_ID env var. + +Without BOT_INSTANCE_ID (default): + db_path("prefix.db") -> bot/db/prefix.db + jsondb_path("x.json") -> bot/jsondb/x.json + +With BOT_INSTANCE_ID=prod-a: + db_path("prefix.db") -> bot/db/prod-a/prefix.db + jsondb_path("x.json") -> bot/db/prod-a/jsondb/x.json +""" +from __future__ import annotations + +import os +from pathlib import Path + +_BOT_ROOT = Path(__file__).resolve().parent.parent +_INSTANCE_ID = os.getenv("BOT_INSTANCE_ID", "").strip() + + +def _instance_db_dir() -> Path: + base = _BOT_ROOT / "db" + if _INSTANCE_ID: + base = base / _INSTANCE_ID + base.mkdir(parents=True, exist_ok=True) + return base + + +def db_path(filename: str) -> str: + """SQLite and other files under bot/db/ (or bot/db//).""" + return str(_instance_db_dir() / filename) + + +def jsondb_path(filename: str) -> str: + """JSON config files — bot/jsondb/ or bot/db//jsondb/.""" + if _INSTANCE_ID: + base = _instance_db_dir() / "jsondb" + else: + base = _BOT_ROOT / "jsondb" + base.mkdir(parents=True, exist_ok=True) + return str(base / filename) + + +def bot_root_json_path(filename: str) -> str: + """Legacy JSON at bot/ (e.g. ignore.json) — isolated per instance when set.""" + if _INSTANCE_ID: + return jsondb_path(filename) + return str(_BOT_ROOT / filename) + + +def resolve_db_path(path: str) -> str: + """Normalize legacy 'db/file.db' strings (safety net for API layer).""" + if path.startswith("db/"): + return db_path(path[3:]) + if path.startswith("jsondb/"): + return jsondb_path(path[7:]) + return path diff --git a/bot/utils/emoji.py b/bot/utils/emoji.py index 9719fdd..2485cb9 100644 --- a/bot/utils/emoji.py +++ b/bot/utils/emoji.py @@ -1,19 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ """ -Centralized emoji module for the Zyrox bot. +Centralized emoji module for the HexaHost bot. All emoji definitions are stored here for easy management and consistency. """ @@ -127,15 +126,15 @@ ZTICK = "<:Ztick:1222750301233090600>" ZUNMUTE = "<:zunmute:1448951487970414694>" ZWARNING = "<:zwarning:1448949627712966717>" ZWRENCH = "<:zwrench:1448951382597177495>" -ZYROXCONNECTION = "<:zyroxconnection:1448949425828528230>" -ZYROXHAMMER = "<:zyroxhammer:1448949447617806458>" -ZYROXLINKS = "<:zyroxlinks:1448949436939239495>" -ZYROXSYS = "<:zyroxsys:1448949469650620426>" -ZYROX_CODE = "<:zyrox_code:1448949381436014662>" -ZYROX_COMMAND = "<:zyrox_command:1448949381436014662>" -ZYROX_GLOBAL = "<:zyrox_global:1448949370539217026>" -ZYROX_OWNER = "<:zyrox_owner:1448949381436014662>" -ZYROX_SEARCH = "<:zyrox_search:1448949381436014662>" +HEXAHOST_CONNECTION = "<:zyroxconnection:1448949425828528230>" +HEXAHOST_HAMMER = "<:zyroxhammer:1448949447617806458>" +HEXAHOST_LINKS = "<:zyroxlinks:1448949436939239495>" +HEXAHOST_SYS = "<:zyroxsys:1448949469650620426>" +HEXAHOST_CODE = "<:zyrox_code:1448949381436014662>" +HEXAHOST_COMMAND = "<:zyrox_command:1448949381436014662>" +HEXAHOST_GLOBAL = "<:zyrox_global:1448949370539217026>" +HEXAHOST_OWNER = "<:zyrox_owner:1448949381436014662>" +HEXAHOST_SEARCH = "<:zyrox_search:1448949381436014662>" # ============================================================================ # DISCORD CUSTOM EMOJIS (Animated) diff --git a/bot/utils/help.py b/bot/utils/help.py index b9d64ae..8c54560 100644 --- a/bot/utils/help.py +++ b/bot/utils/help.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/paginator.py b/bot/utils/paginator.py index a66729a..ae228dd 100644 --- a/bot/utils/paginator.py +++ b/bot/utils/paginator.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/paginators.py b/bot/utils/paginators.py index a461310..a0c9a11 100644 --- a/bot/utils/paginators.py +++ b/bot/utils/paginators.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/safe_parse.py b/bot/utils/safe_parse.py index df60ad0..1a772e3 100644 --- a/bot/utils/safe_parse.py +++ b/bot/utils/safe_parse.py @@ -1,5 +1,14 @@ # ╔══════════════════════════════════════════════════════════════════╗ -# ║ Safe parsing helpers — no eval() on untrusted data ║ +# ║ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ +# ║ ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ +# ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ from __future__ import annotations diff --git a/bot/utils/sync_emojis.py b/bot/utils/sync_emojis.py index a41f842..eab3b7c 100644 --- a/bot/utils/sync_emojis.py +++ b/bot/utils/sync_emojis.py @@ -1,14 +1,13 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ diff --git a/bot/utils/tunnel.py b/bot/utils/tunnel.py index a521b4d..fd2d744 100644 --- a/bot/utils/tunnel.py +++ b/bot/utils/tunnel.py @@ -1,19 +1,18 @@ # ╔══════════════════════════════════════════════════════════════════╗ # ║ ║ -# ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ -# ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ -# ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ +# ║ +-+-+-+-+-+-+-+-+ ║ +# ║ |H|e|x|a|H|o|s|t| ║ +# ║ +-+-+-+-+-+-+-+-+ ║ # ║ ║ -# ║ © 2026 CodeX Devs — All Rights Reserved ║ +# ║ © 2026 HexaHost — All Rights Reserved ║ # ║ ║ -# ║ discord ── https://discord.gg/codexdev ║ -# ║ youtube ── https://youtube.com/@CodeXDevs ║ -# ║ github ── https://github.com/RayExo ║ +# ║ discord ── https://discord.gg/hexahost ║ +# ║ github ── https://github.com/theoneandonlymace ║ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ """ -HTTPS Tunnel for the ZyroX API — Cloudflare Tunnel via pycloudflared. +HTTPS Tunnel for the HexaHost API — Cloudflare Tunnel via pycloudflared. Zero manual installs. Just: 1. pip install pycloudflared (already in requirements.txt) @@ -28,16 +27,16 @@ How to get your CF_TUNNEL_TOKEN (browser only, no CLI needed) 1. Go to https://one.dash.cloudflare.com 2. Networks → Tunnels → Create a tunnel 3. Choose "Cloudflared" as connector type -4. Give it a name (e.g. zyrox-api) and click Save +4. Give it a name (e.g. hexahost-api) and click Save 5. On the "Install connector" step, find the token in the command shown: cloudflared tunnel run --token Copy just the token string. 6. Go to "Published Application Routes" tab → Add a Published Application Routes: - Subdomain: zyrox-api Domain: yourdomain.com Service: http://localhost:8000 + Subdomain: HexaHost-api Domain: yourdomain.com Service: http://localhost:8000 (Or use any domain you have on Cloudflare) 7. Paste the token into your .env: CF_TUNNEL_TOKEN = "eyJhIjoiX..." - CF_TUNNEL_URL = "https://zyrox-api.yourdomain.com" + CF_TUNNEL_URL = "https://hexahost-api.yourdomain.com" That's the permanent URL — never changes between restarts. Unlimited bandwidth, unlimited requests, free. @@ -304,7 +303,7 @@ def _run_tunnel(binary: str, token: str, port: int, public_url: str) -> None: def start_tunnel() -> None: """ Start the Cloudflare Tunnel in a background daemon thread. - Called from CodeX.py after keep_alive(). + Called from HexaHost.py after keep_alive(). """ if not TUNNEL_ENABLED: print(f"{_YELLOW}◈ Tunnel: disabled via TUNNEL_ENABLED=false{_RESET}") diff --git a/dashboard/.env.example b/dashboard/.env.example index 91b6d78..8c54e5e 100644 --- a/dashboard/.env.example +++ b/dashboard/.env.example @@ -20,5 +20,5 @@ ADMIN_IDS=YOUR_DISCORD_USER_ID_HERE NEXT_PUBLIC_ADMIN_IDS=YOUR_DISCORD_USER_ID_HERE # Customizable Brand / Bot name shown across the dashboard -NEXT_PUBLIC_BRAND_NAME="ZyroX" -NEXT_PUBLIC_BRAND_NAME_WORD="ZX" +NEXT_PUBLIC_BRAND_NAME="HexaHost" +NEXT_PUBLIC_BRAND_NAME_WORD="HH" diff --git a/dashboard/LICENSE b/dashboard/LICENSE index 5173ffd..245fcd9 100644 --- a/dashboard/LICENSE +++ b/dashboard/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2026 CodeX Devs +Copyright (c) 2026 HexaHost Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dashboard/README.md b/dashboard/README.md index 6832bde..e474c12 100644 --- a/dashboard/README.md +++ b/dashboard/README.md @@ -1,8 +1,8 @@
-# ZyroX Dashboard +# HexaHost Dashboard -Next.js web dashboard for configuring the ZyroX Discord bot. +Next.js web dashboard for configuring the HexaHost Discord bot.
@@ -23,7 +23,7 @@ Next.js web dashboard for configuring the ZyroX Discord bot. | Requirement | Notes | |---|---| | Node.js 18+ | — | -| ZyroX bot running | with `API_ENABLED=true` on `127.0.0.1` (or via Cloudflare Tunnel) | +| HexaHost bot running | with `API_ENABLED=true` on `127.0.0.1` (or via Cloudflare Tunnel) | | Discord OAuth app | from [Discord Developer Portal](https://discord.com/developers/applications) | --- @@ -56,7 +56,7 @@ DISCORD_CLIENT_SECRET = your_discord_oauth_client_secret # ── Admin & Branding ────────────────────────────────────────────── ADMIN_IDS = your_discord_user_id NEXT_PUBLIC_ADMIN_IDS = your_discord_user_id -NEXT_PUBLIC_BRAND_NAME = "ZyroX" +NEXT_PUBLIC_BRAND_NAME = "HexaHost" NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` diff --git a/dashboard/app/api/auth/[...nextauth]/route.ts b/dashboard/app/api/auth/[...nextauth]/route.ts index bf90f3e..d2cc7fb 100644 --- a/dashboard/app/api/auth/[...nextauth]/route.ts +++ b/dashboard/app/api/auth/[...nextauth]/route.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 11475c0..35c2b3b 100644 --- a/dashboard/app/dashboard/admin/page.tsx +++ b/dashboard/app/dashboard/admin/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 0729b84..19d0ef4 100644 --- a/dashboard/app/dashboard/error.tsx +++ b/dashboard/app/dashboard/error.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 17383d1..e0fc686 100644 --- a/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/antinuke/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 9a63229..ed0d7b0 100644 --- a/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/automod/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 2705ce5..231dd49 100644 --- a/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/autoreact/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 39d291d..4b174fb 100644 --- a/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/autorole/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 49f057f..e976d52 100644 --- a/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/customroles/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 257383b..379c2b3 100644 --- a/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/invcrole/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 00d6a08..ec080a4 100644 --- a/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/invites/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 6a0c958..97dc126 100644 --- a/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/j2c/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 e7f84b2..8ff5df9 100644 --- a/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/joindm/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 fba5d92..65421b9 100644 --- a/dashboard/app/dashboard/guild/[guildId]/layout.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/layout.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 1c6cb81..07080ed 100644 --- a/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/leveling/leaderboard/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 4388237..222d1e8 100644 --- a/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/leveling/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 7ec1c8d..fac9bb5 100644 --- a/dashboard/app/dashboard/guild/[guildId]/loading.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/loading.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 82f4c8c..8344554 100644 --- a/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/logging/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 de423d3..67a074a 100644 --- a/dashboard/app/dashboard/guild/[guildId]/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 60f9890..beedd14 100644 --- a/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/reactionroles/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 8f3723e..0ab4e60 100644 --- a/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/settings/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 cb83534..b4f8d51 100644 --- a/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/tickets/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 dd69294..d67e34a 100644 --- a/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/tracking/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 a45888b..928f33f 100644 --- a/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/vanityroles/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 5e22899..d66b149 100644 --- a/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/verification/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 408843e..41dd148 100644 --- a/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx +++ b/dashboard/app/dashboard/guild/[guildId]/welcome/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 d9882bc..115a242 100644 --- a/dashboard/app/dashboard/guilds/page.tsx +++ b/dashboard/app/dashboard/guilds/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 a488b6d..6d23eca 100644 --- a/dashboard/app/dashboard/layout.tsx +++ b/dashboard/app/dashboard/layout.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState, useEffect, useRef } from "react"; @@ -191,7 +189,7 @@ export default function DashboardLayout({

- {process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"} + {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"}

Dashboard diff --git a/dashboard/app/dashboard/loading.tsx b/dashboard/app/dashboard/loading.tsx index eca15f8..8c361ce 100644 --- a/dashboard/app/dashboard/loading.tsx +++ b/dashboard/app/dashboard/loading.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import React from "react"; import { RefreshCcw } from "lucide-react"; diff --git a/dashboard/app/dashboard/page.tsx b/dashboard/app/dashboard/page.tsx index a89cfea..72001b1 100644 --- a/dashboard/app/dashboard/page.tsx +++ b/dashboard/app/dashboard/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import React from "react"; import { Users, @@ -39,7 +37,7 @@ export default async function DashboardPage() { error = err.message || "Failed to connect to the bot API."; // Fallback data for UI structure if API fails botInfo = { - name: "ZyroX Bot", + name: "HexaHost Bot", guilds: 0, users: 0, commands: 0, @@ -112,7 +110,7 @@ export default async function DashboardPage() { { title: "Manage Servers", desc: "View and configure your Discord guilds.", icon: ServerIcon, href: "/dashboard/guilds" }, { title: "Global Settings", desc: "Adjust your personal dashboard preferences.", icon: Settings, href: "/dashboard" }, { title: "Support Matrix", desc: "Get help from our neural support team.", icon: LifeBuoy, href: "#" }, - { title: "Documentation", desc: "Learn how to master the ZyroX engine.", icon: FileText, href: "#" }, + { title: "Documentation", desc: "Learn how to master the HexaHost engine.", icon: FileText, href: "#" }, ].map((item) => (
@@ -132,7 +130,7 @@ export default async function DashboardPage() {

Module Status

-

Global operational health of ZyroX core.

+

Global operational health of HexaHost core.

{[ diff --git a/dashboard/app/docs/page.tsx b/dashboard/app/docs/page.tsx index 113db06..748e091 100644 --- a/dashboard/app/docs/page.tsx +++ b/dashboard/app/docs/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; @@ -80,7 +78,7 @@ export default function DocsPage() {
- ZyroX Docs + HexaHost Docs
@@ -156,7 +154,7 @@ export default function DocsPage() {

- Welcome to the {activeTab} section of the ZyroX Engine documentation. Our engine is designed for communities that demand absolute performance and cinematic management tools. + Welcome to the {activeTab} section of the HexaHost Engine documentation. Our engine is designed for communities that demand absolute performance and cinematic management tools.

@@ -179,10 +177,10 @@ export default function DocsPage() {

Neural Architecture

Protocol Overview

- The ZyroX Engine utilizes a decentralized event stream processing model. When a Discord event is received, it is instantly routed to the nearest edge cluster. + The HexaHost Engine utilizes a decentralized event stream processing model. When a Discord event is received, it is instantly routed to the nearest edge cluster.

- $ zyrox initialize --cluster-shard [neural_07] --mode enterprise + $ hexahost initialize --cluster-shard [neural_07] --mode enterprise
diff --git a/dashboard/app/layout.tsx b/dashboard/app/layout.tsx index 5f40af5..f7ed629 100644 --- a/dashboard/app/layout.tsx +++ b/dashboard/app/layout.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import type { Metadata } from "next"; import { Inter, Outfit } from "next/font/google"; import "./globals.css"; @@ -24,7 +22,7 @@ import { AuthProvider } from "@/components/auth-provider"; const inter = Inter({ subsets: ["latin"], variable: "--font-inter" }); const outfit = Outfit({ subsets: ["latin"], variable: "--font-outfit" }); -const brandName = process.env.NEXT_PUBLIC_BRAND_NAME || "Zyrox"; +const brandName = process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"; export const metadata: Metadata = { title: `${brandName} - Ultimate Discord Bot`, diff --git a/dashboard/app/page.tsx b/dashboard/app/page.tsx index 7a02906..07c1880 100644 --- a/dashboard/app/page.tsx +++ b/dashboard/app/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React from "react"; @@ -64,7 +62,7 @@ export default function LandingPage() {
-

{process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"}

+

{process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"}

Dashboard
@@ -256,7 +254,7 @@ export default function LandingPage() {

{[ - { icon: Terminal, title: "Custom DSL", desc: "Write advanced logic with our intuitive ZyroX scripting language." }, + { icon: Terminal, title: "Custom DSL", desc: "Write advanced logic with our intuitive HexaHost scripting language." }, { icon: Cpu, title: "FPGA Ready", desc: "Hardware-accelerated pattern matching for instant response." }, { icon: Lock, title: "Zero Trust", desc: "Every command execution is sandboxed and cryptographically verified." }, { icon: Radio, title: "Low Entropy", desc: "Optimized for minimal CPU jitter and maximum reliability." } @@ -367,7 +365,7 @@ export default function LandingPage() {
{[ - { q: "Is the ZyroX Engine free to use?", a: "The core engine is 100% free for all communities. We offer premium clusters for ultra-high-scale enterprise servers." }, + { q: "Is the HexaHost Engine free to use?", a: "The core engine is 100% free for all communities. We offer premium clusters for ultra-high-scale enterprise servers." }, { q: "How secure is my server data?", a: "Every byte of configuration data is AES-256 encrypted at rest. We never store personal user data beyond Discord's standard requirements." }, { q: "Can I migrate from other bots?", a: "Yes, our Migration Matrix tool allows you to import leveling and configuration data from most popular bots in minutes." }, { q: "What is the 'Neural Core'?", a: "It's our advanced event-processing architecture that uses predictive analysis to moderate raids before they escalate." } @@ -390,7 +388,7 @@ export default function LandingPage() {

Ready to
Evolve?

-

Join 5,000+ communities scaling their automation with the ZyroX Engine. Setup takes less than 30 seconds.

+

Join 5,000+ communities scaling their automation with the HexaHost Engine. Setup takes less than 30 seconds.

- The ZyroX Engine collects only the minimum necessary data to function within Discord. This includes your Discord User ID, Server (Guild) ID, and configuration settings provided during setup. We do not store message content unless explicitly configured for logging purposes by server administrators. + The HexaHost Engine collects only the minimum necessary data to function within Discord. This includes your Discord User ID, Server (Guild) ID, and configuration settings provided during setup. We do not store message content unless explicitly configured for logging purposes by server administrators.

diff --git a/dashboard/app/terms/page.tsx b/dashboard/app/terms/page.tsx index e06b8e2..4a97895 100644 --- a/dashboard/app/terms/page.tsx +++ b/dashboard/app/terms/page.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React from "react"; @@ -34,7 +32,7 @@ export default function TermsPage() {
- {process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"} Engine + {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"} Engine

- By integrating the {process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"} Engine into your Discord server, you agree to abide by these terms. The engine is provided "as is," and while we strive for 100% uptime through our neural edge clusters, we are not liable for any data loss resulting from third-party API disruptions. + By integrating the {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"} Engine into your Discord server, you agree to abide by these terms. The engine is provided "as is," and while we strive for 100% uptime through our neural edge clusters, we are not liable for any data loss resulting from third-party API disruptions.

@@ -76,7 +74,7 @@ export default function TermsPage() {

Usage Constraints

- You may not use the {process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"} Engine for any illicit activities, including but not limited to: automated harassment, token logging, or raid coordination. Violation of these constraints will result in immediate neural deauthorization and blacklisting from the global cluster network. + You may not use the {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"} Engine for any illicit activities, including but not limited to: automated harassment, token logging, or raid coordination. Violation of these constraints will result in immediate neural deauthorization and blacklisting from the global cluster network.

@@ -94,7 +92,7 @@ export default function TermsPage() {

- March 2026 // Distributed via {process.env.NEXT_PUBLIC_BRAND_NAME || "ZyroX"} Neural Cloud + March 2026 // Distributed via {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"} Neural Cloud

diff --git a/dashboard/components/auth-provider.tsx b/dashboard/components/auth-provider.tsx index 46e73e1..c24d839 100644 --- a/dashboard/components/auth-provider.tsx +++ b/dashboard/components/auth-provider.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "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 5cb0b21..84b7feb 100644 --- a/dashboard/components/dashboard/admin-content.tsx +++ b/dashboard/components/dashboard/admin-content.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState, useEffect } from "react"; @@ -113,7 +111,7 @@ export function AdminContent() {

Admin Control Panel

-

Restricted access for ZyroX administrators only.

+

Restricted access for HexaHost administrators only.

Maximum Protection

-

Anti-Nuke is fixed to instantly Ban malicious actors. Ensure that Zyrox's role is at the TOP of the role hierarchy for it to be able to ban admins.

+

Anti-Nuke is fixed to instantly Ban malicious actors. Ensure that HexaHost's role is at the TOP of the role hierarchy for it to be able to ban admins.

Fixed Punishments diff --git a/dashboard/components/dashboard/automod-form.tsx b/dashboard/components/dashboard/automod-form.tsx index 3cdf096..4d57d3c 100644 --- a/dashboard/components/dashboard/automod-form.tsx +++ b/dashboard/components/dashboard/automod-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/autorole-form.tsx b/dashboard/components/dashboard/autorole-form.tsx index 12bc856..11c2432 100644 --- a/dashboard/components/dashboard/autorole-form.tsx +++ b/dashboard/components/dashboard/autorole-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; @@ -197,7 +195,7 @@ export function AutoRoleForm({ initialConfig, roles, guildId }: AutoRoleFormProp

- Hierarchy Matter: Ensure ZyroX's top role is higher than any role you select here. + Hierarchy Matter: Ensure HexaHost's top role is higher than any role you select here.

diff --git a/dashboard/components/dashboard/customroles-form.tsx b/dashboard/components/dashboard/customroles-form.tsx index d630448..8af2272 100644 --- a/dashboard/components/dashboard/customroles-form.tsx +++ b/dashboard/components/dashboard/customroles-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; @@ -156,7 +154,7 @@ export function CustomRolesForm({ initialConfig, roles, guildId }: CustomRolesFo
  • .staff @user - Assigns/Removes Staff role
  • .girl @user - Assigns/Removes Girl role
  • .vip @user - Assigns/Removes VIP role
  • -
  • • Ensure Zyrox is placed higher than these roles in server settings!
  • +
  • • Ensure HexaHost is placed higher than these roles in server settings!
  • diff --git a/dashboard/components/dashboard/form-elements.tsx b/dashboard/components/dashboard/form-elements.tsx index 5d6ea61..7b01519 100644 --- a/dashboard/components/dashboard/form-elements.tsx +++ b/dashboard/components/dashboard/form-elements.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 2e2db23..7f7ae42 100644 --- a/dashboard/components/dashboard/j2c-form.tsx +++ b/dashboard/components/dashboard/j2c-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/leveling-form.tsx b/dashboard/components/dashboard/leveling-form.tsx index 3cadcf4..a86bcc8 100644 --- a/dashboard/components/dashboard/leveling-form.tsx +++ b/dashboard/components/dashboard/leveling-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/logging-form.tsx b/dashboard/components/dashboard/logging-form.tsx index 9aefe87..e5fde27 100644 --- a/dashboard/components/dashboard/logging-form.tsx +++ b/dashboard/components/dashboard/logging-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/metric-card.tsx b/dashboard/components/dashboard/metric-card.tsx index db7e2d0..02dc13a 100644 --- a/dashboard/components/dashboard/metric-card.tsx +++ b/dashboard/components/dashboard/metric-card.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 f1f3ecc..d0af827 100644 --- a/dashboard/components/dashboard/page-header.tsx +++ b/dashboard/components/dashboard/page-header.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 08f0851..71d3cae 100644 --- a/dashboard/components/dashboard/reactionroles-form.tsx +++ b/dashboard/components/dashboard/reactionroles-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/server-card.tsx b/dashboard/components/dashboard/server-card.tsx index 80b0446..f474378 100644 --- a/dashboard/components/dashboard/server-card.tsx +++ b/dashboard/components/dashboard/server-card.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 67672e7..15dba6a 100644 --- a/dashboard/components/dashboard/settings-form.tsx +++ b/dashboard/components/dashboard/settings-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/tickets-form.tsx b/dashboard/components/dashboard/tickets-form.tsx index af5aa8d..ac24135 100644 --- a/dashboard/components/dashboard/tickets-form.tsx +++ b/dashboard/components/dashboard/tickets-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/vanityrole-form.tsx b/dashboard/components/dashboard/vanityrole-form.tsx index c8a398f..0ab17ea 100644 --- a/dashboard/components/dashboard/vanityrole-form.tsx +++ b/dashboard/components/dashboard/vanityrole-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/dashboard/verification-form.tsx b/dashboard/components/dashboard/verification-form.tsx index 01f9bc5..51ef803 100644 --- a/dashboard/components/dashboard/verification-form.tsx +++ b/dashboard/components/dashboard/verification-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; @@ -202,7 +200,7 @@ export function VerificationForm({ initialConfig, channels, roles, guildId }: Ve

    How It Works

    - Zyrox Verification ensures that no unauthorized bots or malicious users enter your server unverified. + HexaHost Verification ensures that no unauthorized bots or malicious users enter your server unverified.

    • • The bot will create a panel in your Verification Channel.
    • diff --git a/dashboard/components/dashboard/welcome-form.tsx b/dashboard/components/dashboard/welcome-form.tsx index 0bebd38..e2b849b 100644 --- a/dashboard/components/dashboard/welcome-form.tsx +++ b/dashboard/components/dashboard/welcome-form.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import React, { useState } from "react"; diff --git a/dashboard/components/guild-tabs.tsx b/dashboard/components/guild-tabs.tsx index ac8610f..1cae38d 100644 --- a/dashboard/components/guild-tabs.tsx +++ b/dashboard/components/guild-tabs.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import * as React from "react"; diff --git a/dashboard/components/ui/button.tsx b/dashboard/components/ui/button.tsx index 8204774..8186b2e 100644 --- a/dashboard/components/ui/button.tsx +++ b/dashboard/components/ui/button.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 ae471d0..ac8aa41 100644 --- a/dashboard/components/ui/card.tsx +++ b/dashboard/components/ui/card.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 5414f23..8823f7d 100644 --- a/dashboard/components/ui/input.tsx +++ b/dashboard/components/ui/input.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 e9d0889..addaf92 100644 --- a/dashboard/components/ui/label.tsx +++ b/dashboard/components/ui/label.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 3c0f0dc..554370e 100644 --- a/dashboard/components/ui/select.tsx +++ b/dashboard/components/ui/select.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client" import * as React from "react" diff --git a/dashboard/components/ui/sonner.tsx b/dashboard/components/ui/sonner.tsx index 4e1a395..824457c 100644 --- a/dashboard/components/ui/sonner.tsx +++ b/dashboard/components/ui/sonner.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 229c212..cf9f853 100644 --- a/dashboard/components/ui/switch.tsx +++ b/dashboard/components/ui/switch.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - "use client"; import * as React from "react" diff --git a/dashboard/components/ui/table.tsx b/dashboard/components/ui/table.tsx index dca9097..d552b54 100644 --- a/dashboard/components/ui/table.tsx +++ b/dashboard/components/ui/table.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 a6250bb..f53ebde 100644 --- a/dashboard/components/ui/textarea.tsx +++ b/dashboard/components/ui/textarea.tsx @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 b5cfead..49d3cff 100644 --- a/dashboard/hooks/use-auth.ts +++ b/dashboard/hooks/use-auth.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import { useState, useEffect } from "react"; export function useAuth() { diff --git a/dashboard/lib/api.ts b/dashboard/lib/api.ts index 9d95a2a..a855be8 100644 --- a/dashboard/lib/api.ts +++ b/dashboard/lib/api.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import { BotInfo, BotStatus, diff --git a/dashboard/lib/auth.ts b/dashboard/lib/auth.ts index c20837a..b8b8c66 100644 --- a/dashboard/lib/auth.ts +++ b/dashboard/lib/auth.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 b95cd69..dba84c6 100644 --- a/dashboard/lib/utils.ts +++ b/dashboard/lib/utils.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import { type ClassValue, clsx } from "clsx" import { twMerge } from "tailwind-merge" diff --git a/dashboard/package.json b/dashboard/package.json index e5af4d7..c508b08 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -1,5 +1,5 @@ { - "name": "codex-dashboard", + "name": "hexahost-dashboard", "version": "0.1.0", "private": true, "scripts": { diff --git a/dashboard/tailwind.config.ts b/dashboard/tailwind.config.ts index 98bc330..586ba8d 100644 --- a/dashboard/tailwind.config.ts +++ b/dashboard/tailwind.config.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import type { Config } from "tailwindcss"; const config: Config = { diff --git a/dashboard/types/api.ts b/dashboard/types/api.ts index 8c86825..0ad65c4 100644 --- a/dashboard/types/api.ts +++ b/dashboard/types/api.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - export interface BotInfo { name: string; id: number | null; diff --git a/dashboard/types/index.ts b/dashboard/types/index.ts index 21436e1..94dcf85 100644 --- a/dashboard/types/index.ts +++ b/dashboard/types/index.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - 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 0f3c6ac..add8ba1 100644 --- a/dashboard/types/next-auth.d.ts +++ b/dashboard/types/next-auth.d.ts @@ -1,19 +1,17 @@ /** * ╔══════════════════════════════════════════════════════════════════╗ * ║ ║ - * ║ ░█▀▀░█▀█░█▀▄░█▀▀░█░█ ░█▀▄░█▀▀░█░█░█▀▀ ║ - * ║ ░█░░░█░█░█░█░█▀▀░▄▀▄ ░█░█░█▀▀░▀▄▀░▀▀█ ║ - * ║ ░▀▀▀░▀▀▀░▀▀░░▀▀▀░▀░▀ ░▀▀░░▀▀▀░░▀░░▀▀▀ ║ + * ║ +-+-+-+-+-+-+-+-+ ║ + * ║ |H|e|x|a|H|o|s|t| ║ + * ║ +-+-+-+-+-+-+-+-+ ║ * ║ ║ - * ║ © 2026 CodeX Devs — All Rights Reserved ║ + * ║ © 2026 HexaHost — All Rights Reserved ║ * ║ ║ - * ║ discord ── https://discord.gg/codexdev ║ - * ║ youtube ── https://youtube.com/@CodeXDevs ║ - * ║ github ── https://github.com/RayExo ║ + * ║ discord ── https://discord.gg/hexahost ║ + * ║ github ── https://github.com/theoneandonlymace ║ * ║ ║ * ╚══════════════════════════════════════════════════════════════════╝ */ - import NextAuth, { DefaultSession } from "next-auth"; declare module "next-auth" { diff --git a/scripts/migrate_db_paths.py b/scripts/migrate_db_paths.py new file mode 100644 index 0000000..81058f8 --- /dev/null +++ b/scripts/migrate_db_paths.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +"""Replace hardcoded db/*.db paths with db_path() for multi-instance support.""" +from __future__ import annotations + +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent / "bot" +IMPORT_LINE = "from utils.db_paths import db_path\n" + +# "db/file.db" or 'db/file.db' — not already wrapped in db_path( +PATTERN = re.compile( + r"""(?['"])db/(?P[\w.-]+\.db)(?P=q)""" +) + + +def ensure_import(text: str) -> str: + if "from utils.db_paths import db_path" in text: + return text + # Insert after module doc/header block or at top after shebang + lines = text.splitlines(keepends=True) + insert_at = 0 + for i, line in enumerate(lines): + if line.startswith("# ╚") or line.startswith(" */"): + insert_at = i + 1 + break + if line.startswith("import ") or line.startswith("from "): + insert_at = i + break + lines.insert(insert_at, IMPORT_LINE) + if insert_at > 0 and not lines[insert_at - 1].endswith("\n\n"): + # ensure blank line after header + pass + return "".join(lines) + + +def patch_file(path: Path) -> bool: + text = path.read_text(encoding="utf-8", errors="replace") + if path.name == "db_paths.py": + return False + + def repl(match: re.Match) -> str: + name = match.group("name") + q = match.group("q") + return f"db_path({q}{name}{q})" + + new_text, count = PATTERN.subn(repl, text) + if count == 0: + return False + + if "db_paths" not in path.parts: + new_text = ensure_import(new_text) + + path.write_text(new_text, encoding="utf-8") + print(f" {path.relative_to(ROOT)}: {count} replacement(s)") + return True + + +def main() -> None: + updated = 0 + for path in sorted(ROOT.rglob("*.py")): + if "__pycache__" in path.parts: + continue + if patch_file(path): + updated += 1 + print(f"Updated {updated} files") + + +if __name__ == "__main__": + main() diff --git a/scripts/update_headers.py b/scripts/update_headers.py new file mode 100644 index 0000000..b43a781 --- /dev/null +++ b/scripts/update_headers.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +"""Update HexaHost file headers — fixed-width box, readable ASCII.""" +from __future__ import annotations + +import pathlib +import re + +ROOT = pathlib.Path(__file__).resolve().parent.parent + +# Clear, readable banner — spells "HexaHost" literally +ASCII_LINES = [ + "+-+-+-+-+-+-+-+-+", + "|H|e|x|a|H|o|s|t|", + "+-+-+-+-+-+-+-+-+", +] + +INNER = 66 # chars between ║ … ║ (total line length = 70 for .py) + + +def box_line(content: str, ts: bool = False) -> str: + padded = content.center(INNER) + if len(padded) != INNER: + raise ValueError(f"Line width {len(padded)} != {INNER}: {content!r}") + if ts: + line = f" * ║{padded}║" + assert len(line) == 71, line + return line + line = f"# ║{padded}║" + assert len(line) == 70, line + return line + + +def py_header() -> str: + lines = [ + "# ╔══════════════════════════════════════════════════════════════════╗", + box_line(""), + ] + lines.extend(box_line(art) for art in ASCII_LINES) + lines.extend([ + box_line(""), + box_line("© 2026 HexaHost — All Rights Reserved"), + box_line(""), + box_line("discord ── https://discord.gg/hexahost"), + box_line("github ── https://github.com/theoneandonlymace"), + box_line(""), + "# ╚══════════════════════════════════════════════════════════════════╝", + ]) + return "\n".join(lines) + + +def ts_header() -> str: + lines = [ + "/**", + " * ╔══════════════════════════════════════════════════════════════════╗", + box_line("", ts=True), + ] + lines.extend(box_line(art, ts=True) for art in ASCII_LINES) + lines.extend([ + box_line("", ts=True), + box_line("© 2026 HexaHost — All Rights Reserved", ts=True), + box_line("", ts=True), + box_line("discord ── https://discord.gg/hexahost", ts=True), + box_line("github ── https://github.com/theoneandonlymace", ts=True), + box_line("", ts=True), + " * ╚══════════════════════════════════════════════════════════════════╝", + " */", + ]) + return "\n".join(lines) + + +PY_HEADER_RE = re.compile(r"^# ╔═+[\s\S]*?^# ╚═+╝\n?", re.MULTILINE) +TS_HEADER_RE = re.compile(r"^/\*\*\n \* ╔═+[\s\S]*? \*/\n?", re.MULTILINE) + + +def update_file(path: pathlib.Path) -> bool: + text = path.read_text(encoding="utf-8") + if path.suffix in {".ts", ".tsx"}: + if not TS_HEADER_RE.search(text): + return False + new_text = TS_HEADER_RE.sub(ts_header() + "\n", text, count=1) + else: + if not PY_HEADER_RE.search(text): + return False + new_text = PY_HEADER_RE.sub(py_header() + "\n", text, count=1) + if new_text != text: + path.write_text(new_text, encoding="utf-8") + return True + return False + + +def main() -> None: + updated = 0 + for pattern in ("bot/**/*.py", "dashboard/**/*.ts", "dashboard/**/*.tsx"): + for path in ROOT.glob(pattern): + if "node_modules" in path.parts: + continue + if update_file(path): + updated += 1 + print(f"Updated {updated} file headers") + + +if __name__ == "__main__": + main()