diff --git a/.env.docker.example b/.env.docker.example index bef9e6d..2d5ccaf 100644 --- a/.env.docker.example +++ b/.env.docker.example @@ -3,7 +3,7 @@ # Discord Bot TOKEN=TOKEN_HERE -brand_name=HexaHost +brand_name=Axiom OWNER_IDS=YOUR_DISCORD_USER_ID_HERE DASHBOARD_ADMIN_IDS=YOUR_DISCORD_USER_ID_HERE @@ -30,8 +30,8 @@ DISCORD_CLIENT_SECRET= # Same Discord user IDs as owners/admins (comma-separated) ADMIN_IDS=YOUR_DISCORD_USER_ID_HERE NEXT_PUBLIC_ADMIN_IDS=YOUR_DISCORD_USER_ID_HERE -NEXT_PUBLIC_BRAND_NAME=HexaHost -NEXT_PUBLIC_BRAND_NAME_WORD=HH +NEXT_PUBLIC_BRAND_NAME=Axiom +NEXT_PUBLIC_BRAND_NAME_WORD=AX # Discord OAuth Redirect URL in the Discord Developer Portal: # https://bot.hexahost.de/api/auth/callback/discord diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ab35b3..632b7de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,9 +36,9 @@ jobs: TUNNEL_ENABLED: "false" run: | python - <<'PY' - from core.hexahost import HexaHost + from core.axiom import Axiom from api.server import create_app - bot = HexaHost() + bot = Axiom() create_app() import cogs print("imports ok") diff --git a/DOCKER.md b/DOCKER.md index 3af1378..981a960 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -1,4 +1,4 @@ -# HexaHost — Docker-Setup (Traefik) +# Axiom — Docker-Setup (Hersteller: HexaHost, Traefik) Dashboard: **https://bot.hexahost.de** Bot-API: nur intern (`http://bot:8000`) — nicht öffentlich. @@ -28,8 +28,8 @@ Falls dein Cert-Resolver anders heißt → später `TRAEFIK_CERT_RESOLVER` in `. ## 1. Projekt auf den Server holen ```bash -git clone HexaHost -cd HexaHost +git clone Axiom +cd Axiom ``` Oder Dateien per SCP/SFTP hochladen und in den Projektordner wechseln. @@ -125,8 +125,8 @@ docker compose logs -f dashboard Erwartung: -- `hexahost-bot` — online, Discord-Login, API auf Port 8000 -- `hexahost-dashboard` — läuft, Traefik routet `bot.hexahost.de` +- `axiom-bot` — online, Discord-Login, API auf Port 8000 +- `axiom-dashboard` — läuft, Traefik routet `bot.hexahost.de` --- @@ -164,7 +164,7 @@ Volumes **löschen** (Daten weg): `docker compose down -v` — nur bewusst nutze | Problem | Check | |---------|--------| -| 502 / Gateway Timeout | `docker compose ps` — läuft `hexahost-dashboard`? Traefik am richtigen Netzwerk? | +| 502 / Gateway Timeout | `docker compose ps` — läuft `axiom-dashboard`? Traefik am richtigen Netzwerk? | | Kein HTTPS-Zertifikat | DNS auf Server? Cert-Resolver-Name (`TRAEFIK_CERT_RESOLVER`)? Entrypoints `web`/`websecure`? | | Login schlägt fehl | Redirect-URL exakt wie oben? `NEXTAUTH_URL` = `https://bot.hexahost.de/`? | | Dashboard leer / API-Fehler | Gleiches `DASHBOARD_API_KEY`? Bot-Logs: `API_ENABLED` / Startfehler? | @@ -177,7 +177,7 @@ Netzwerk-Check: docker network inspect traefik-network ``` -Dort sollten u. a. Traefik, `hexahost-bot` und `hexahost-dashboard` erscheinen. +Dort sollten u. a. Traefik, `axiom-bot` und `axiom-dashboard` erscheinen. --- @@ -190,10 +190,10 @@ Internet Traefik (traefik-network) │ Host: bot.hexahost.de ▼ -hexahost-dashboard :3000 +axiom-dashboard :3000 │ DASHBOARD_API_URL=http://bot:8000/api/v1 ▼ -hexahost-bot :8000 (nur Docker-intern) +axiom-bot :8000 (nur Docker-intern) │ └── Discord Gateway (ausgehend) ``` diff --git a/PROJEKT_ANALYSE.md b/PROJEKT_ANALYSE.md index 5c569b8..7a2ff89 100644 --- a/PROJEKT_ANALYSE.md +++ b/PROJEKT_ANALYSE.md @@ -3,8 +3,8 @@ | Field | Value | |-------|-------| | **Report ID** | ZYROX-SEC-2026-001 | -| **Target** | HexaHost CV2 AIO Discord Bot with Dashboard | -| **Repository** | `HexaHost-CV2-AIO-With-Dashboard-main` | +| **Target** | Axiom CV2 AIO Discord Bot with Dashboard | +| **Repository** | `Axiom-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 HexaHost CV2 AIO Discord bot (originally published by HexaHost) was conducted to determine whether the repository contains malicious code and to identify exploitable misconfigurations. +A security review of the Axiom 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 HexaHost CV2 AIO Discord bot (originally published by H ``` ┌─────────────────────────────────────┐ │ Trust Boundary │ - Discord Users ───►│ discord.py Gateway (bot/HexaHost.py) │ + Discord Users ───►│ discord.py Gateway (bot/Axiom.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/HexaHost.py` (~L345) +**Affected component:** `bot/Axiom.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/HexaHost.py` → `on_command_completion` +**Affected component:** `bot/Axiom.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/HexaHost.py` | `1396794297386532978` | Guild join notifications | -| `bot/HexaHost.py` | `1419729255977189467` | Server count display | -| `bot/HexaHost.py` | `1419729283861184632` | Member count display | +| `bot/Axiom.py` | `1396794297386532978` | Guild join notifications | +| `bot/Axiom.py` | `1419729255977189467` | Server count display | +| `bot/Axiom.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/HexaHost.py` +**Affected components:** `bot/api/server.py`, `bot/utils/tunnel.py`, `bot/Axiom.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). @@ -388,8 +388,8 @@ const API_KEY = process.env.NEXT_PUBLIC_DASHBOARD_API_KEY; | Component | Role | |-----------|------| -| `HexaHost.py` | Process entry: bot, API thread, optional tunnel | -| `core/hexahost.py` | `AutoShardedBot` subclass, prefix resolution | +| `Axiom.py` | Process entry: bot, API thread, optional tunnel | +| `core/axiom.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/HexaHost.py +python bot/Axiom.py ├─ load_dotenv() ├─ FastAPI thread (if API_ENABLED) ├─ Cloudflare tunnel (if TUNNEL_ENABLED) @@ -473,7 +473,7 @@ npm run dev (dashboard/) ## 6. Conclusion -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. +Axiom 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 01554ce..f186a08 100644 --- a/PR_DESCRIPTION.md +++ b/PR_DESCRIPTION.md @@ -2,7 +2,7 @@ ## Summary -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). +Security audit and hardening of the Axiom 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 d75fe03..3340b6f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@
``` -+-+-+-+-+-+-+-+-+ -|H|e|x|a|H|o|s|t| -+-+-+-+-+-+-+-+-+ ++-+-+-+-+-+ +|A|x|i|o|m| ++-+-+-+-+-+ +by HexaHost ```

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

@@ -26,10 +27,10 @@ ## ✦ Overview -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. +Axiom is a fully-featured Discord bot by HexaHost 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-CV2-With-Dashboard/ +Axiom-CV2-With-Dashboard/ ├── 🤖 bot/ Python Discord bot + FastAPI backend │ ├── api/ Dashboard REST API (FastAPI) │ ├── cogs/ All bot features (commands, events, antinuke, automod…) @@ -37,7 +38,7 @@ HexaHost-CV2-With-Dashboard/ │ ├── utils/ Shared utilities (emoji, tools, sync, cloudflare tunnel…) │ ├── games/ Standalone game modules │ ├── assets/ Fonts, backgrounds, GIFs -│ └── HexaHost.py Entry point +│ └── Axiom.py Entry point │ └── 🌐 dashboard/ Next.js frontend ├── app/ App Router pages & API routes @@ -116,7 +117,7 @@ HexaHost-CV2-With-Dashboard/ - Slash + prefix commands - FastAPI backend with API key auth + rate limiting - Cloudflare Tunnel — unlimited bandwidth, permanent URL, zero system installs -- HexaHost watermark on every source file +- HexaHost manufacturer watermark on every source file @@ -142,8 +143,8 @@ HexaHost-CV2-With-Dashboard/ **1 — Clone the repo** ```bash -git clone https://github.com/theoneandonlymace/HexaHost-CV2-With-Dashboard -cd HexaHost-CV2-With-Dashboard/bot +git clone https://github.com/theoneandonlymace/Axiom-CV2-With-Dashboard +cd Axiom-CV2-With-Dashboard/bot ``` **2 — Install dependencies** @@ -167,7 +168,7 @@ Copy `.env.example` to `.env` and fill in the values: ```env # ── Core ────────────────────────────────────────────────────────── TOKEN = your_discord_bot_token -brand_name = 'HexaHost' +brand_name = 'Axiom' # ── Owner IDs (REQUIRED — your Discord user ID) ─────────────────── OWNER_IDS = YOUR_DISCORD_USER_ID_HERE @@ -201,7 +202,7 @@ CF_TUNNEL_URL = "https://api.yourdomain.com" **4 — Run the bot** ```bash -python HexaHost.py +python Axiom.py ``` --- @@ -231,7 +232,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 = "HexaHost" +NEXT_PUBLIC_BRAND_NAME = "Axiom" NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` @@ -303,7 +304,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. `hexahost-api`), save +2. Choose **Cloudflared**, give it a name (e.g. `axiom-api`), save 3. On the **Install connector** step, copy the token from the command shown: ``` cloudflared tunnel run --token @@ -330,7 +331,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 HexaHost.py` +2. Set the start command to `python Axiom.py` 3. Add all environment variables 4. `pycloudflared` downloads the binary automatically on first run — no extra steps diff --git a/SECURITY_FIXES.md b/SECURITY_FIXES.md index 28eb066..a637e55 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** | HexaHost CV2 AIO Discord Bot with Dashboard | +| **Affected Product** | Axiom 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/HexaHost.py` | Startup warning when `OWNER_IDS` is empty | +| `bot/Axiom.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/HexaHost.py` | Conditional extension load | +| `bot/Axiom.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/HexaHost.py` | `on_command_completion` early-return when URL invalid | +| `bot/Axiom.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/HexaHost.py` | Config-driven channel references; stats task gated on config | +| `bot/Axiom.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/HexaHost.py` | Bind to `API_HOST`; warn on `0.0.0.0` | +| `bot/Axiom.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/hexahost/general.py` | Help index updated | +| `bot/cogs/axiom/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 `HexaHost.py` | -| Orphaned `jishaku` import in `bot/core/hexahost.py` | Low | Import removed | +| `on_command_completion` NullPointer on `command is None` | Medium | Guard clause in `Axiom.py` | +| Orphaned `jishaku` import in `bot/core/axiom.py` | Low | Import removed | | Admin check relied solely on `NEXT_PUBLIC_ADMIN_IDS` | Medium | Server-side `ADMIN_IDS` supported | --- diff --git a/bot/.env.example b/bot/.env.example index 9672da0..e4eb3ae 100644 --- a/bot/.env.example +++ b/bot/.env.example @@ -1,6 +1,6 @@ TOKEN=TOKEN_HERE -brand_name='HexaHost' -NEXT_PUBLIC_BRAND_NAME='HexaHost' +brand_name='Axiom' +NEXT_PUBLIC_BRAND_NAME='Axiom' # ── Multiple instances (optional) ───────────────────────────────────────────── # Run several bot processes on one host — each needs its own .env / TOKEN / API_PORT. diff --git a/bot/HexaHost.py b/bot/Axiom.py similarity index 99% rename from bot/HexaHost.py rename to bot/Axiom.py index 23119d5..81ea579 100644 --- a/bot/HexaHost.py +++ b/bot/Axiom.py @@ -28,7 +28,7 @@ from discord.ext import commands, tasks from core import Context from core.Cog import Cog -from core.hexahost import HexaHost +from core.axiom import Axiom from utils.Tools import * from utils.config import * from utils.emoji import SUCCESS, ERROR, TICK, CROSS, REACTION_TEST_EMOJIS @@ -50,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 = HexaHost() +client = Axiom() tree = client.tree # --- Background Task for Stats --- diff --git a/bot/Dockerfile b/bot/Dockerfile index 8683ac2..43172ca 100644 --- a/bot/Dockerfile +++ b/bot/Dockerfile @@ -1,4 +1,4 @@ -# HexaHost Discord Bot + FastAPI dashboard backend +# Axiom Discord Bot + FastAPI dashboard backend (by HexaHost) FROM python:3.12-slim-bookworm ENV PYTHONDONTWRITEBYTECODE=1 \ @@ -26,4 +26,4 @@ RUN mkdir -p /app/db /app/jsondb /app/logs EXPOSE 8000 -CMD ["python", "HexaHost.py"] +CMD ["python", "Axiom.py"] diff --git a/bot/README.md b/bot/README.md index 2bd7517..136ca18 100644 --- a/bot/README.md +++ b/bot/README.md @@ -1,12 +1,13 @@
``` -+-+-+-+-+-+-+-+-+ -|H|e|x|a|H|o|s|t| -+-+-+-+-+-+-+-+-+ ++-+-+-+-+-+ +|A|x|i|o|m| ++-+-+-+-+-+ +by HexaHost ``` -

HexaHost Bot — Python Discord Bot + FastAPI Backend

+

Axiom Bot — Python Discord Bot + FastAPI Backend

@@ -27,7 +28,7 @@ ## ✦ Overview -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. +This folder contains the Axiom Discord bot built on `discord.py v2` alongside a `FastAPI` backend that powers the web dashboard. Everything runs from a single `python Axiom.py` command. ``` bot/ @@ -39,12 +40,12 @@ bot/ │ ├── commands/ All slash & prefix command modules │ ├── events/ General Discord event listeners │ ├── moderation/ Moderation action modules -│ └── hexahost/ Core HexaHost feature cogs +│ └── axiom/ Help / feature index cogs ├── core/ Bot client, context, cog base classes ├── games/ Standalone game logic + button views ├── utils/ Emoji, tools, sync, Cloudflare tunnel ├── assets/ Fonts, backgrounds, GIFs -└── HexaHost.py Entry point +└── Axiom.py Entry point ``` --- @@ -132,7 +133,7 @@ bot/ - Slash + prefix commands - Cloudflare Tunnel via pycloudflared — zero system installs, unlimited traffic - Single `OWNER_IDS` env var controls all permission checks -- HexaHost watermark on every source file +- HexaHost manufacturer watermark on every source file @@ -174,7 +175,7 @@ Create a `.env` file (copy from `.env.example`): ```env # ── Core ────────────────────────────────────────────────────────── TOKEN = your_discord_bot_token -brand_name = 'HexaHost' +brand_name = 'Axiom' # ── Owner IDs (REQUIRED — your Discord user ID) ─────────────────── OWNER_IDS = YOUR_DISCORD_USER_ID_HERE @@ -208,7 +209,7 @@ CF_TUNNEL_URL = "https://api.yourdomain.com" ### 3 — Run ```bash -python HexaHost.py +python Axiom.py ``` --- @@ -258,7 +259,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. `hexahost-api`), save +2. Choose **Cloudflared**, name it (e.g. `axiom-api`), save 3. On **Install connector**, copy the token from the command shown: ``` cloudflared tunnel run --token @@ -300,7 +301,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 HexaHost.py +python Axiom.py ``` `pycloudflared` downloads the binary on first run — no extra steps on any host. diff --git a/bot/api/dependencies.py b/bot/api/dependencies.py index 36df921..8cb5398 100644 --- a/bot/api/dependencies.py +++ b/bot/api/dependencies.py @@ -20,13 +20,13 @@ from slowapi import Limiter from slowapi.util import get_remote_address if TYPE_CHECKING: - from core.hexahost import HexaHost + from core.axiom import Axiom # Initialize rate limiter limiter = Limiter(key_func=get_remote_address, default_limits=["1000 per minute"]) # Global reference to the bot instance -_bot_instance: Optional["HexaHost"] = None +_bot_instance: Optional["Axiom"] = None # Security scheme security = HTTPBearer() @@ -53,18 +53,18 @@ def verify_api_key(credentials: HTTPAuthorizationCredentials = Security(security ) return credentials.credentials -def set_bot(bot_instance: "HexaHost"): +def set_bot(bot_instance: "Axiom"): """ Sets the global bot instance. - This should be called in HexaHost.py during startup. + This should be called in Axiom.py during startup. """ global _bot_instance _bot_instance = bot_instance -def get_bot() -> "HexaHost": +def get_bot() -> "Axiom": """ FastAPI dependency to retrieve the Discord bot instance. - Usage: bot: HexaHost = Depends(get_bot) + Usage: bot: Axiom = Depends(get_bot) """ if _bot_instance is None: raise HTTPException( diff --git a/bot/api/routes/admin.py b/bot/api/routes/admin.py index 41ea469..2c72f81 100644 --- a/bot/api/routes/admin.py +++ b/bot/api/routes/admin.py @@ -20,7 +20,7 @@ import os import aiosqlite if TYPE_CHECKING: - from core.hexahost import HexaHost + from core.axiom import Axiom router = APIRouter() @@ -38,7 +38,7 @@ import psutil import time @router.get("/stats", response_model=AdminStats) -async def get_admin_stats(bot: "HexaHost" = Depends(get_bot)): +async def get_admin_stats(bot: "Axiom" = 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 4d5f2ad..6a1dfb6 100644 --- a/bot/api/routes/bot.py +++ b/bot/api/routes/bot.py @@ -19,12 +19,12 @@ from utils.config import * if TYPE_CHECKING: - from core.hexahost import HexaHost + from core.axiom import Axiom 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: "HexaHost" = Depends(get_bot)): +async def get_status(bot: "Axiom" = Depends(get_bot)): """ Returns the live status of the bot. """ @@ -38,7 +38,7 @@ async def get_status(bot: "HexaHost" = 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: "HexaHost" = Depends(get_bot)): +async def get_bot_info(bot: "Axiom" = 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 41089d5..c3e8fb4 100644 --- a/bot/api/routes/guilds.py +++ b/bot/api/routes/guilds.py @@ -37,13 +37,13 @@ import json import os if TYPE_CHECKING: - from core.hexahost import HexaHost + from core.axiom import Axiom 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: "HexaHost" = Depends(get_bot)): +async def list_guilds(request: Request, bot: "Axiom" = 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: "HexaHost" = 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: "HexaHost" = Depends(get_bot)): +async def get_guild_details(guild_id: int, bot: "Axiom" = Depends(get_bot)): """ Returns detailed info for a specific guild by its ID. """ @@ -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: "HexaHost" = Depends(get_bot)): +async def patch_guild_j2c(guild_id: int, data: J2CUpdate, bot: "Axiom" = Depends(get_bot)): import aiosqlite def to_id(val): @@ -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: "HexaHost" = Depends(get_bot)): +async def get_guild_logging(guild_id: int, bot: "Axiom" = Depends(get_bot)): """ Retrieves the logging configuration for a specific guild. """ @@ -1044,7 +1044,7 @@ async def get_guild_logging(guild_id: int, bot: "HexaHost" = 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: "HexaHost" = Depends(get_bot)): +async def patch_guild_logging(guild_id: int, data: LoggingUpdate, bot: "Axiom" = Depends(get_bot)): """ Updates the logging configuration for a specific guild. """ @@ -1076,7 +1076,7 @@ async def patch_guild_logging(guild_id: int, data: LoggingUpdate, bot: "HexaHost 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: "HexaHost" = Depends(get_bot)): +async def get_leveling_leaderboard(guild_id: int, bot: "Axiom" = 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", @@ -1116,7 +1116,7 @@ async def get_leveling_leaderboard(guild_id: int, bot: "HexaHost" = Depends(get_ 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: "HexaHost" = Depends(get_bot)): +async def get_guild_channels(guild_id: int, bot: "Axiom" = 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: "HexaHost" = 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: "HexaHost" = Depends(get_bot)): +async def get_guild_roles(guild_id: int, bot: "Axiom" = Depends(get_bot)): guild = bot.get_guild(guild_id) if not guild: raise HTTPException(status_code=404, detail="Guild not found") diff --git a/bot/api/server.py b/bot/api/server.py index 640736c..b4ba7a6 100644 --- a/bot/api/server.py +++ b/bot/api/server.py @@ -52,8 +52,8 @@ async def lifespan(app: FastAPI): def create_app() -> FastAPI: """ - Initializes the FastAPI application for the HexaHost Bot Dashboard. - The bot instance will be attached to app.state.bot in HexaHost.py at runtime. + Initializes the FastAPI application for the Axiom Bot Dashboard. + The bot instance will be attached to app.state.bot in Axiom.py at runtime. """ app = FastAPI( title=f"{BRAND_NAME} Bot API", diff --git a/bot/cogs/__init__.py b/bot/cogs/__init__.py index 2f62e6c..2a84f44 100644 --- a/bot/cogs/__init__.py +++ b/bot/cogs/__init__.py @@ -15,7 +15,7 @@ from __future__ import annotations from colorama import Fore, Style -from core import HexaHost +from core import Axiom from utils.config import BotName from .commands.help import Help @@ -94,34 +94,34 @@ from .events.autoreact import AutoReactListener from .events.ai import AIResponses from .events.stickymessage import StickyMessageListener -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 .axiom.antinuke import _antinuke +from .axiom.extra import _extra +from .axiom.general import _general +from .axiom.automod import _automod +from .axiom.moderation import _moderation +from .axiom.music import _music +from .axiom.fun import _fun +from .axiom.games import _games +from .axiom.ignore import _ignore +from .axiom.server import _server +from .axiom.voice import _voice +from .axiom.welcome import _welcome +from .axiom.giveaway import _giveaway +from .axiom.ticket import _ticket +from .axiom.logging import _logging +from .axiom.vanity import _vanity +from .axiom.inviteTracker import inviteTracker +from .axiom.counting import _Counting +from .axiom.j2c import _J2C +from .axiom.ai import _ai +from .axiom.booster import __boost +from .axiom.leveling import _leveling +from .axiom.sticky import _sticky +from .axiom.verify import _verify +from .axiom.encryption import _encrypt +from .axiom.mc import _mc +from .axiom.joindm import _joindm +from .axiom.birth import _birth from .antinuke.anti_member_update import AntiMemberUpdate from .antinuke.antiban import AntiBan @@ -191,7 +191,7 @@ COG_CLASSES: tuple[type, ...] = ( ) -async def setup(bot: HexaHost) -> None: +async def setup(bot: Axiom) -> 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__}") diff --git a/bot/cogs/hexahost/ai.py b/bot/cogs/axiom/ai.py similarity index 100% rename from bot/cogs/hexahost/ai.py rename to bot/cogs/axiom/ai.py diff --git a/bot/cogs/hexahost/antinuke.py b/bot/cogs/axiom/antinuke.py similarity index 100% rename from bot/cogs/hexahost/antinuke.py rename to bot/cogs/axiom/antinuke.py diff --git a/bot/cogs/hexahost/automod.py b/bot/cogs/axiom/automod.py similarity index 100% rename from bot/cogs/hexahost/automod.py rename to bot/cogs/axiom/automod.py diff --git a/bot/cogs/hexahost/birth.py b/bot/cogs/axiom/birth.py similarity index 100% rename from bot/cogs/hexahost/birth.py rename to bot/cogs/axiom/birth.py diff --git a/bot/cogs/hexahost/booster.py b/bot/cogs/axiom/booster.py similarity index 100% rename from bot/cogs/hexahost/booster.py rename to bot/cogs/axiom/booster.py diff --git a/bot/cogs/hexahost/counting.py b/bot/cogs/axiom/counting.py similarity index 100% rename from bot/cogs/hexahost/counting.py rename to bot/cogs/axiom/counting.py diff --git a/bot/cogs/hexahost/encryption.py b/bot/cogs/axiom/encryption.py similarity index 100% rename from bot/cogs/hexahost/encryption.py rename to bot/cogs/axiom/encryption.py diff --git a/bot/cogs/hexahost/extra.py b/bot/cogs/axiom/extra.py similarity index 100% rename from bot/cogs/hexahost/extra.py rename to bot/cogs/axiom/extra.py diff --git a/bot/cogs/hexahost/fun.py b/bot/cogs/axiom/fun.py similarity index 100% rename from bot/cogs/hexahost/fun.py rename to bot/cogs/axiom/fun.py diff --git a/bot/cogs/hexahost/games.py b/bot/cogs/axiom/games.py similarity index 100% rename from bot/cogs/hexahost/games.py rename to bot/cogs/axiom/games.py diff --git a/bot/cogs/hexahost/general.py b/bot/cogs/axiom/general.py similarity index 100% rename from bot/cogs/hexahost/general.py rename to bot/cogs/axiom/general.py diff --git a/bot/cogs/hexahost/giveaway.py b/bot/cogs/axiom/giveaway.py similarity index 100% rename from bot/cogs/hexahost/giveaway.py rename to bot/cogs/axiom/giveaway.py diff --git a/bot/cogs/hexahost/ignore.py b/bot/cogs/axiom/ignore.py similarity index 100% rename from bot/cogs/hexahost/ignore.py rename to bot/cogs/axiom/ignore.py diff --git a/bot/cogs/hexahost/inviteTracker.py b/bot/cogs/axiom/inviteTracker.py similarity index 100% rename from bot/cogs/hexahost/inviteTracker.py rename to bot/cogs/axiom/inviteTracker.py diff --git a/bot/cogs/hexahost/j2c.py b/bot/cogs/axiom/j2c.py similarity index 100% rename from bot/cogs/hexahost/j2c.py rename to bot/cogs/axiom/j2c.py diff --git a/bot/cogs/hexahost/joindm.py b/bot/cogs/axiom/joindm.py similarity index 100% rename from bot/cogs/hexahost/joindm.py rename to bot/cogs/axiom/joindm.py diff --git a/bot/cogs/hexahost/leveling.py b/bot/cogs/axiom/leveling.py similarity index 100% rename from bot/cogs/hexahost/leveling.py rename to bot/cogs/axiom/leveling.py diff --git a/bot/cogs/hexahost/logging.py b/bot/cogs/axiom/logging.py similarity index 100% rename from bot/cogs/hexahost/logging.py rename to bot/cogs/axiom/logging.py diff --git a/bot/cogs/hexahost/mc.py b/bot/cogs/axiom/mc.py similarity index 100% rename from bot/cogs/hexahost/mc.py rename to bot/cogs/axiom/mc.py diff --git a/bot/cogs/hexahost/moderation.py b/bot/cogs/axiom/moderation.py similarity index 100% rename from bot/cogs/hexahost/moderation.py rename to bot/cogs/axiom/moderation.py diff --git a/bot/cogs/hexahost/music.py b/bot/cogs/axiom/music.py similarity index 100% rename from bot/cogs/hexahost/music.py rename to bot/cogs/axiom/music.py diff --git a/bot/cogs/hexahost/server.py b/bot/cogs/axiom/server.py similarity index 100% rename from bot/cogs/hexahost/server.py rename to bot/cogs/axiom/server.py diff --git a/bot/cogs/hexahost/sticky.py b/bot/cogs/axiom/sticky.py similarity index 100% rename from bot/cogs/hexahost/sticky.py rename to bot/cogs/axiom/sticky.py diff --git a/bot/cogs/hexahost/ticket.py b/bot/cogs/axiom/ticket.py similarity index 100% rename from bot/cogs/hexahost/ticket.py rename to bot/cogs/axiom/ticket.py diff --git a/bot/cogs/hexahost/vanity.py b/bot/cogs/axiom/vanity.py similarity index 100% rename from bot/cogs/hexahost/vanity.py rename to bot/cogs/axiom/vanity.py diff --git a/bot/cogs/hexahost/verify.py b/bot/cogs/axiom/verify.py similarity index 100% rename from bot/cogs/hexahost/verify.py rename to bot/cogs/axiom/verify.py diff --git a/bot/cogs/hexahost/voice.py b/bot/cogs/axiom/voice.py similarity index 100% rename from bot/cogs/hexahost/voice.py rename to bot/cogs/axiom/voice.py diff --git a/bot/cogs/hexahost/welcome.py b/bot/cogs/axiom/welcome.py similarity index 100% rename from bot/cogs/hexahost/welcome.py rename to bot/cogs/axiom/welcome.py diff --git a/bot/cogs/commands/Games.py b/bot/cogs/commands/Games.py index 44eb058..b365a19 100644 --- a/bot/cogs/commands/Games.py +++ b/bot/cogs/commands/Games.py @@ -14,7 +14,7 @@ import discord from discord.ext import commands import os -from core import Cog, HexaHost, Context +from core import Cog, Axiom, Context import games as games from utils.Tools import * from utils.cv2 import CV2 @@ -25,9 +25,9 @@ import asyncio class Games(Cog): - """HexaHost Games""" + """Axiom Games""" - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): self.client = client diff --git a/bot/cogs/commands/booster.py b/bot/cogs/commands/booster.py index e3f8f33..19f7970 100644 --- a/bot/cogs/commands/booster.py +++ b/bot/cogs/commands/booster.py @@ -28,7 +28,7 @@ import datetime import re from typing import * from time import strftime -from core import Cog, HexaHost, Context +from core import Cog, Axiom, Context from discord.ui import LayoutView, TextDisplay, Separator, Container from utils.cv2 import CV2, build_container @@ -49,7 +49,7 @@ datefmt ="%H:%M:%S", ) class Booster (Cog ): - def __init__ (self ,bot : HexaHost ): + def __init__ (self ,bot : Axiom ): self .bot =bot self .color =0xFF0000 self .db_path =db_path("boost.db") diff --git a/bot/cogs/commands/extra.py b/bot/cogs/commands/extra.py index 7802f72..f2f904d 100644 --- a/bot/cogs/commands/extra.py +++ b/bot/cogs/commands/extra.py @@ -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, HexaHost, Context +from core import Cog, Axiom, Context from typing import Optional import aiosqlite import asyncio diff --git a/bot/cogs/commands/general.py b/bot/cogs/commands/general.py index e1d4e41..d74b6a5 100644 --- a/bot/cogs/commands/general.py +++ b/bot/cogs/commands/general.py @@ -13,7 +13,7 @@ import asyncio import discord -from utils.emoji import CROSS, TICK, ZWARNING, HEXAHOST_CONNECTION, HEXAHOST_LINKS +from utils.emoji import CROSS, TICK, ZWARNING, AXIOM_CONNECTION, AXIOM_LINKS from discord.ext import commands, tasks from discord.utils import get import datetime @@ -308,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"{HEXAHOST_LINKS} **Quick Actions**\n" + f"{AXIOM_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/hexahost)**" ) - await ctx.send(view=CV2(f"{HEXAHOST_CONNECTION} {BotName} Integration Hub!", invite_text)) \ No newline at end of file + await ctx.send(view=CV2(f"{AXIOM_CONNECTION} {BotName} Integration Hub!", invite_text)) \ No newline at end of file diff --git a/bot/cogs/commands/help.py b/bot/cogs/commands/help.py index 9a7016d..ade0c3b 100644 --- a/bot/cogs/commands/help.py +++ b/bot/cogs/commands/help.py @@ -18,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.hexahost import HexaHost +from core.axiom import Axiom from core.Cog import Cog from utils.Tools import getConfig from itertools import chain @@ -268,7 +268,7 @@ class HelpCommand(commands.HelpCommand): class Help(Cog, name="help"): - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): self._original_help_command = client.help_command attributes = { 'name': "help", diff --git a/bot/cogs/commands/music.py b/bot/cogs/commands/music.py index a3336a0..d0d710e 100644 --- a/bot/cogs/commands/music.py +++ b/bot/cogs/commands/music.py @@ -21,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, HexaHost, Context +from core import Cog, Axiom, Context from PIL import Image, ImageDraw, ImageFont, ImageOps import io import aiohttp @@ -334,7 +334,7 @@ class MusicControlView(LayoutView): class Music(commands.Cog): - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): self.client = client self.client.loop.create_task(self.connect_nodes()) self.client.loop.create_task(self.monitor_inactivity()) diff --git a/bot/cogs/commands/np.py b/bot/cogs/commands/np.py index 0f3934c..2ffc81e 100644 --- a/bot/cogs/commands/np.py +++ b/bot/cogs/commands/np.py @@ -15,7 +15,7 @@ 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, HEXAHOST_HAMMER, HEXAHOST_SYS +from utils.emoji import BOOST, ICONS_WARNING, INFO, MENTION, PREMIUM, TICK, TIME, TIMER_ALT1, U_ADMIN, ZDIL, ZHUMAN, AXIOM_HAMMER, AXIOM_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{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}", + description=f"**Added Global No Prefix**:\n{ZHUMAN} User: **{self.user.mention}**\n{MENTION} User Mention: {self.user.mention}\n{AXIOM_SYS} User ID: {self.user.id}\n\n__**Additional Info**__:\n{AXIOM_HAMMER} Added By: **{self.author.display_name}**\n{TIME} Expiry Time: {expiry_text}\n{BOOST} Timestamp: {expiry_timestamp}", color=0xFF0000, ) embed.set_author( diff --git a/bot/cogs/commands/owner.py b/bot/cogs/commands/owner.py index ad45ed8..58dfb0f 100644 --- a/bot/cogs/commands/owner.py +++ b/bot/cogs/commands/owner.py @@ -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, HexaHost, Context +from core import Cog, Axiom, Context import sqlite3 import os import requests diff --git a/bot/cogs/commands/stats.py b/bot/cogs/commands/stats.py index 7748160..86ee535 100644 --- a/bot/cogs/commands/stats.py +++ b/bot/cogs/commands/stats.py @@ -13,7 +13,7 @@ from utils.db_paths import db_path import discord -from utils.emoji import CODEBASE, LOADING, SYSTEM, THUNDER, HEXAHOST_CODE, HEXAHOST_COMMAND, HEXAHOST_GLOBAL, HEXAHOST_OWNER, HEXAHOST_SEARCH +from utils.emoji import CODEBASE, LOADING, SYSTEM, THUNDER, AXIOM_CODE, AXIOM_COMMAND, AXIOM_GLOBAL, AXIOM_OWNER, AXIOM_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"**{HEXAHOST_CODE} Software**\n" + f"**{AXIOM_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"**{HEXAHOST_GLOBAL} Server Stats**\n" + f"**{AXIOM_GLOBAL} Server Stats**\n" f"Guilds: **{stats_data['guilds']}**\n" f"Users: **{stats_data['users']}**\n\n" - f"**{HEXAHOST_COMMAND} Commands Stats**\n" + f"**{AXIOM_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"**{HEXAHOST_OWNER} Main Owner**\n" + f"**{AXIOM_OWNER} Main Owner**\n" "[01]. [runxking](https://discord.com/users/767979794411028491)\n" "[02]. [Ray](https://discord.com/users/870179991462236170)" ), "Code Info": ( - f"**{HEXAHOST_SEARCH} Codebase Overview**\n\n" + f"**{AXIOM_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=HEXAHOST_GLOBAL, + emoji=AXIOM_GLOBAL, description="General info", ), discord.SelectOption( @@ -120,7 +120,7 @@ class StatsView(LayoutView): ), discord.SelectOption( label="Code Info", - emoji=HEXAHOST_SEARCH, + emoji=AXIOM_SEARCH, description="Code stats", ), ], diff --git a/bot/cogs/events/Errors.py b/bot/cogs/events/Errors.py index 675ec88..a5ec9dc 100644 --- a/bot/cogs/events/Errors.py +++ b/bot/cogs/events/Errors.py @@ -16,11 +16,11 @@ import json import aiosqlite from discord.ext import commands from utils.config import serverLink -from core import HexaHost, Cog, Context +from core import Axiom, Cog, Context from utils.Tools import get_ignore_data class Errors(Cog): - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): self.client = client @commands.Cog.listener() diff --git a/bot/cogs/events/auto.py b/bot/cogs/events/auto.py index 61d6a48..e358231 100644 --- a/bot/cogs/events/auto.py +++ b/bot/cogs/events/auto.py @@ -14,14 +14,14 @@ import discord from utils.emoji import ARROWRED, ZMODULE from discord.utils import * -from core import HexaHost, Cog +from core import Axiom, 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: HexaHost): + def __init__(self, bot: Axiom): self.bot = bot diff --git a/bot/cogs/events/autoblacklist.py b/bot/cogs/events/autoblacklist.py index 2bb019c..0afd0cb 100644 --- a/bot/cogs/events/autoblacklist.py +++ b/bot/cogs/events/autoblacklist.py @@ -14,13 +14,13 @@ from utils.db_paths import db_path import discord from utils.emoji import ZWARNING -from core import HexaHost, Cog +from core import Axiom, Cog from discord.ext import commands import aiosqlite from datetime import datetime, timedelta class AutoBlacklist(Cog): - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): 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) diff --git a/bot/cogs/events/autorole.py b/bot/cogs/events/autorole.py index f6cb817..00c7080 100644 --- a/bot/cogs/events/autorole.py +++ b/bot/cogs/events/autorole.py @@ -18,14 +18,14 @@ import aiosqlite import asyncio import logging from discord.ext import commands -from core import HexaHost, Cog +from core import Axiom, Cog from utils.config import * DATABASE_PATH = db_path('autorole.db') logger = logging.getLogger(__name__) class Autorole2(Cog): - def __init__(self, bot: HexaHost): + def __init__(self, bot: Axiom): self.bot = bot self.headers = {"Authorization": f"Bot {self.bot.http.token}"} diff --git a/bot/cogs/events/mention.py b/bot/cogs/events/mention.py index 2ef4948..3ec0858 100644 --- a/bot/cogs/events/mention.py +++ b/bot/cogs/events/mention.py @@ -15,7 +15,7 @@ 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, HEXAHOST_LINKS +from utils.emoji import ARROWRED, CODEBASE, HEART3, INDEX, AXIOM_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=HEXAHOST_LINKS, + emoji=AXIOM_LINKS, description="Useful bot links", ), ], diff --git a/bot/cogs/events/on_guild.py b/bot/cogs/events/on_guild.py index 26a0617..4f70734 100644 --- a/bot/cogs/events/on_guild.py +++ b/bot/cogs/events/on_guild.py @@ -12,7 +12,7 @@ # ╚══════════════════════════════════════════════════════════════════╝ from discord.ext import commands -from core import HexaHost, Cog +from core import Axiom, Cog import discord from utils.emoji import ARROWRED, KING, ZBOT, ZHUMAN, ZROCKET import logging @@ -27,7 +27,7 @@ logging.basicConfig( class Guild(Cog): - def __init__(self, client: HexaHost): + def __init__(self, client: Axiom): self.client = client self.bot = client self.recently_removed_guilds = set() diff --git a/bot/cogs/moderation/moderation.py b/bot/cogs/moderation/moderation.py index d8cf11f..5b6bbd1 100644 --- a/bot/cogs/moderation/moderation.py +++ b/bot/cogs/moderation/moderation.py @@ -20,7 +20,7 @@ import typing import typing as t from typing import * from utils.Tools import * -from core import Cog, HexaHost, Context +from core import Cog, Axiom, Context from discord.ext.commands import Converter from discord.ext import commands, tasks from discord.ui import Button, View diff --git a/bot/core/__init__.py b/bot/core/__init__.py index 0031b72..210b2d5 100644 --- a/bot/core/__init__.py +++ b/bot/core/__init__.py @@ -11,6 +11,6 @@ # ║ ║ # ╚══════════════════════════════════════════════════════════════════╝ -from .hexahost import HexaHost +from .axiom import Axiom from .Context import Context from .Cog import Cog \ No newline at end of file diff --git a/bot/core/hexahost.py b/bot/core/axiom.py similarity index 98% rename from bot/core/hexahost.py rename to bot/core/axiom.py index f3aeae2..c69c7e0 100644 --- a/bot/core/hexahost.py +++ b/bot/core/axiom.py @@ -34,7 +34,7 @@ extensions: List[str] = [ "cogs" ] -class HexaHost(commands.AutoShardedBot): +class Axiom(commands.AutoShardedBot): def __init__(self, *arg, **kwargs): intents = discord.Intents.all() intents.presences = True @@ -141,5 +141,5 @@ class HexaHost(commands.AutoShardedBot): def setup_bot(): intents = discord.Intents.all() - bot = HexaHost(intents=intents) + bot = Axiom(intents=intents) return bot diff --git a/bot/utils/config.py b/bot/utils/config.py index cae5430..41c82cd 100644 --- a/bot/utils/config.py +++ b/bot/utils/config.py @@ -17,7 +17,7 @@ from dotenv import load_dotenv load_dotenv() TOKEN = os.environ.get("TOKEN") -BRAND_NAME = os.environ.get("brand_name", "HexaHost") +BRAND_NAME = os.environ.get("brand_name", "Axiom") NAME = BRAND_NAME BotName = BRAND_NAME diff --git a/bot/utils/emoji.py b/bot/utils/emoji.py index 2485cb9..8d391f1 100644 --- a/bot/utils/emoji.py +++ b/bot/utils/emoji.py @@ -12,7 +12,7 @@ # ╚══════════════════════════════════════════════════════════════════╝ """ -Centralized emoji module for the HexaHost bot. +Centralized emoji module for the Axiom bot. All emoji definitions are stored here for easy management and consistency. """ @@ -126,15 +126,15 @@ ZTICK = "<:Ztick:1222750301233090600>" ZUNMUTE = "<:zunmute:1448951487970414694>" ZWARNING = "<:zwarning:1448949627712966717>" ZWRENCH = "<:zwrench:1448951382597177495>" -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>" +AXIOM_CONNECTION = "<:zyroxconnection:1448949425828528230>" +AXIOM_HAMMER = "<:zyroxhammer:1448949447617806458>" +AXIOM_LINKS = "<:zyroxlinks:1448949436939239495>" +AXIOM_SYS = "<:zyroxsys:1448949469650620426>" +AXIOM_CODE = "<:zyrox_code:1448949381436014662>" +AXIOM_COMMAND = "<:zyrox_command:1448949381436014662>" +AXIOM_GLOBAL = "<:zyrox_global:1448949370539217026>" +AXIOM_OWNER = "<:zyrox_owner:1448949381436014662>" +AXIOM_SEARCH = "<:zyrox_search:1448949381436014662>" # ============================================================================ # DISCORD CUSTOM EMOJIS (Animated) diff --git a/bot/utils/tunnel.py b/bot/utils/tunnel.py index fd2d744..398876b 100644 --- a/bot/utils/tunnel.py +++ b/bot/utils/tunnel.py @@ -12,7 +12,7 @@ # ╚══════════════════════════════════════════════════════════════════╝ """ -HTTPS Tunnel for the HexaHost API — Cloudflare Tunnel via pycloudflared. +HTTPS Tunnel for the Axiom API — Cloudflare Tunnel via pycloudflared. Zero manual installs. Just: 1. pip install pycloudflared (already in requirements.txt) @@ -27,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. hexahost-api) and click Save +4. Give it a name (e.g. axiom-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: HexaHost-api Domain: yourdomain.com Service: http://localhost:8000 + Subdomain: Axiom-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://hexahost-api.yourdomain.com" + CF_TUNNEL_URL = "https://axiom-api.yourdomain.com" That's the permanent URL — never changes between restarts. Unlimited bandwidth, unlimited requests, free. @@ -303,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 HexaHost.py after keep_alive(). + Called from Axiom.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 8c54e5e..2f60106 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="HexaHost" -NEXT_PUBLIC_BRAND_NAME_WORD="HH" +NEXT_PUBLIC_BRAND_NAME="Axiom" +NEXT_PUBLIC_BRAND_NAME_WORD="AX" diff --git a/dashboard/Dockerfile b/dashboard/Dockerfile index 63609b9..1f5fa78 100644 --- a/dashboard/Dockerfile +++ b/dashboard/Dockerfile @@ -1,4 +1,4 @@ -# HexaHost Dashboard (Next.js) +# Axiom Dashboard (Next.js) FROM node:20-alpine AS deps WORKDIR /app COPY package.json package-lock.json* ./ @@ -10,8 +10,8 @@ COPY --from=deps /app/node_modules ./node_modules COPY . . # Build-time public env (overridden at runtime where possible) -ARG NEXT_PUBLIC_BRAND_NAME=HexaHost -ARG NEXT_PUBLIC_BRAND_NAME_WORD=HH +ARG NEXT_PUBLIC_BRAND_NAME=Axiom +ARG NEXT_PUBLIC_BRAND_NAME_WORD=AX ARG NEXT_PUBLIC_ADMIN_IDS= ARG NEXT_PUBLIC_API_URL= diff --git a/dashboard/README.md b/dashboard/README.md index e474c12..c26bc68 100644 --- a/dashboard/README.md +++ b/dashboard/README.md @@ -1,8 +1,8 @@
-# HexaHost Dashboard +# Axiom Dashboard -Next.js web dashboard for configuring the HexaHost Discord bot. +Next.js web dashboard for configuring the Axiom Discord bot.
@@ -23,7 +23,7 @@ Next.js web dashboard for configuring the HexaHost Discord bot. | Requirement | Notes | |---|---| | Node.js 18+ | — | -| HexaHost bot running | with `API_ENABLED=true` on `127.0.0.1` (or via Cloudflare Tunnel) | +| Axiom 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 = "HexaHost" +NEXT_PUBLIC_BRAND_NAME = "Axiom" NEXT_PUBLIC_BRAND_NAME_WORD = "ZX" ``` diff --git a/dashboard/app/dashboard/layout.tsx b/dashboard/app/dashboard/layout.tsx index 6d23eca..99b434b 100644 --- a/dashboard/app/dashboard/layout.tsx +++ b/dashboard/app/dashboard/layout.tsx @@ -86,7 +86,7 @@ export default function DashboardLayout({
- {process.env.NEXT_PUBLIC_BRAND_NAME_WORD || "ZX"} + {process.env.NEXT_PUBLIC_BRAND_NAME_WORD || "AX"}

Authenticating... @@ -189,7 +189,7 @@ export default function DashboardLayout({

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

Dashboard diff --git a/dashboard/app/dashboard/page.tsx b/dashboard/app/dashboard/page.tsx index 72001b1..e2e2b75 100644 --- a/dashboard/app/dashboard/page.tsx +++ b/dashboard/app/dashboard/page.tsx @@ -37,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: "HexaHost Bot", + name: "Axiom Bot", guilds: 0, users: 0, commands: 0, @@ -110,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 HexaHost engine.", icon: FileText, href: "#" }, + { title: "Documentation", desc: "Learn how to master the Axiom engine.", icon: FileText, href: "#" }, ].map((item) => (
@@ -130,7 +130,7 @@ export default async function DashboardPage() {

Module Status

-

Global operational health of HexaHost core.

+

Global operational health of Axiom core.

{[ diff --git a/dashboard/app/docs/page.tsx b/dashboard/app/docs/page.tsx index 748e091..c8c218b 100644 --- a/dashboard/app/docs/page.tsx +++ b/dashboard/app/docs/page.tsx @@ -78,7 +78,7 @@ export default function DocsPage() {
- HexaHost Docs + Axiom Docs
@@ -154,7 +154,7 @@ export default function DocsPage() {

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

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

Neural Architecture

Protocol Overview

- 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. + The Axiom Engine utilizes a decentralized event stream processing model. When a Discord event is received, it is instantly routed to the nearest edge cluster.

$ hexahost initialize --cluster-shard [neural_07] --mode enterprise diff --git a/dashboard/app/layout.tsx b/dashboard/app/layout.tsx index f7ed629..b8c4cfc 100644 --- a/dashboard/app/layout.tsx +++ b/dashboard/app/layout.tsx @@ -22,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 || "HexaHost"; +const brandName = process.env.NEXT_PUBLIC_BRAND_NAME || "Axiom"; export const metadata: Metadata = { title: `${brandName} - Ultimate Discord Bot`, diff --git a/dashboard/app/page.tsx b/dashboard/app/page.tsx index 07c1880..d96144b 100644 --- a/dashboard/app/page.tsx +++ b/dashboard/app/page.tsx @@ -62,7 +62,7 @@ export default function LandingPage() {
-

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

+

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

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

{[ - { icon: Terminal, title: "Custom DSL", desc: "Write advanced logic with our intuitive HexaHost scripting language." }, + { icon: Terminal, title: "Custom DSL", desc: "Write advanced logic with our intuitive Axiom 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." } @@ -365,7 +365,7 @@ export default function LandingPage() {
{[ - { 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: "Is the Axiom 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." } @@ -388,7 +388,7 @@ export default function LandingPage() {

Ready to
Evolve?

-

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

+

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

- 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. + The Axiom 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 4a97895..f6c72ec 100644 --- a/dashboard/app/terms/page.tsx +++ b/dashboard/app/terms/page.tsx @@ -32,7 +32,7 @@ export default function TermsPage() {
- {process.env.NEXT_PUBLIC_BRAND_NAME || "HexaHost"} Engine + {process.env.NEXT_PUBLIC_BRAND_NAME || "Axiom"} Engine

- 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. + By integrating the {process.env.NEXT_PUBLIC_BRAND_NAME || "Axiom"} 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.

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

Usage Constraints

- 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. + You may not use the {process.env.NEXT_PUBLIC_BRAND_NAME || "Axiom"} 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.

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

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

diff --git a/dashboard/components/dashboard/admin-content.tsx b/dashboard/components/dashboard/admin-content.tsx index 84b7feb..9236953 100644 --- a/dashboard/components/dashboard/admin-content.tsx +++ b/dashboard/components/dashboard/admin-content.tsx @@ -111,7 +111,7 @@ export function AdminContent() {

Admin Control Panel

-

Restricted access for HexaHost administrators only.

+

Restricted access for Axiom administrators only.

Maximum Protection

-

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.

+

Anti-Nuke is fixed to instantly Ban malicious actors. Ensure that Axiom'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/autorole-form.tsx b/dashboard/components/dashboard/autorole-form.tsx index 11c2432..cbde4d5 100644 --- a/dashboard/components/dashboard/autorole-form.tsx +++ b/dashboard/components/dashboard/autorole-form.tsx @@ -195,7 +195,7 @@ export function AutoRoleForm({ initialConfig, roles, guildId }: AutoRoleFormProp

- Hierarchy Matter: Ensure HexaHost's top role is higher than any role you select here. + Hierarchy Matter: Ensure Axiom'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 8af2272..ce50693 100644 --- a/dashboard/components/dashboard/customroles-form.tsx +++ b/dashboard/components/dashboard/customroles-form.tsx @@ -154,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 HexaHost is placed higher than these roles in server settings!
  • +
  • • Ensure Axiom is placed higher than these roles in server settings!
  • diff --git a/dashboard/components/dashboard/verification-form.tsx b/dashboard/components/dashboard/verification-form.tsx index 51ef803..dc05994 100644 --- a/dashboard/components/dashboard/verification-form.tsx +++ b/dashboard/components/dashboard/verification-form.tsx @@ -200,7 +200,7 @@ export function VerificationForm({ initialConfig, channels, roles, guildId }: Ve

    How It Works

    - HexaHost Verification ensures that no unauthorized bots or malicious users enter your server unverified. + Axiom 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/package.json b/dashboard/package.json index c508b08..9864f61 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -1,5 +1,5 @@ { - "name": "hexahost-dashboard", + "name": "axiom-dashboard", "version": "0.1.0", "private": true, "scripts": { diff --git a/docker-compose.yml b/docker-compose.yml index df2c78f..e6f9c71 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -# HexaHost — Bot + Dashboard behind Traefik +# Axiom — Bot + Dashboard (HexaHost) behind Traefik # # Prerequisites: # - External Docker network: traefik-network @@ -8,14 +8,14 @@ # Start: # docker compose up -d --build -name: hexahost +name: axiom services: bot: build: context: ./bot dockerfile: Dockerfile - container_name: hexahost-bot + container_name: axiom-bot restart: unless-stopped env_file: - .env @@ -31,7 +31,7 @@ services: - bot-logs:/app/logs networks: - traefik-network - - hexahost-internal + - axiom-internal healthcheck: test: [ @@ -50,10 +50,10 @@ services: context: ./dashboard dockerfile: Dockerfile args: - NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-HexaHost} - NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-HH} + NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-Axiom} + NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-AX} NEXT_PUBLIC_ADMIN_IDS: ${NEXT_PUBLIC_ADMIN_IDS:-} - container_name: hexahost-dashboard + container_name: axiom-dashboard restart: unless-stopped depends_on: bot: @@ -64,33 +64,33 @@ services: # Server-side proxy → Bot API (Docker-intern, nicht öffentlich) DASHBOARD_API_URL: http://bot:8000/api/v1 NEXTAUTH_URL: https://bot.hexahost.de/ - NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-HexaHost} - NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-HH} + NEXT_PUBLIC_BRAND_NAME: ${NEXT_PUBLIC_BRAND_NAME:-Axiom} + NEXT_PUBLIC_BRAND_NAME_WORD: ${NEXT_PUBLIC_BRAND_NAME_WORD:-AX} PORT: "3000" HOSTNAME: "0.0.0.0" networks: - traefik-network - - hexahost-internal + - axiom-internal labels: - traefik.enable=true - traefik.docker.network=traefik-network # HTTP → HTTPS redirect (optional, falls Entrypoint "web" existiert) - - traefik.http.routers.hexahost-dashboard-http.rule=Host(`bot.hexahost.de`) - - traefik.http.routers.hexahost-dashboard-http.entrypoints=web - - traefik.http.routers.hexahost-dashboard-http.middlewares=hexahost-https-redirect - - traefik.http.middlewares.hexahost-https-redirect.redirectscheme.scheme=https - - traefik.http.middlewares.hexahost-https-redirect.redirectscheme.permanent=true + - traefik.http.routers.axiom-dashboard-http.rule=Host(`bot.hexahost.de`) + - traefik.http.routers.axiom-dashboard-http.entrypoints=web + - traefik.http.routers.axiom-dashboard-http.middlewares=axiom-https-redirect + - traefik.http.middlewares.axiom-https-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.axiom-https-redirect.redirectscheme.permanent=true # HTTPS - - traefik.http.routers.hexahost-dashboard.rule=Host(`bot.hexahost.de`) - - traefik.http.routers.hexahost-dashboard.entrypoints=websecure - - traefik.http.routers.hexahost-dashboard.tls=true - - traefik.http.routers.hexahost-dashboard.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-letsencrypt} - - traefik.http.services.hexahost-dashboard.loadbalancer.server.port=3000 + - traefik.http.routers.axiom-dashboard.rule=Host(`bot.hexahost.de`) + - traefik.http.routers.axiom-dashboard.entrypoints=websecure + - traefik.http.routers.axiom-dashboard.tls=true + - traefik.http.routers.axiom-dashboard.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-letsencrypt} + - traefik.http.services.axiom-dashboard.loadbalancer.server.port=3000 networks: traefik-network: external: true - hexahost-internal: + axiom-internal: driver: bridge volumes: diff --git a/scripts/update_headers.py b/scripts/update_headers.py index b43a781..270b6eb 100644 --- a/scripts/update_headers.py +++ b/scripts/update_headers.py @@ -7,7 +7,7 @@ import re ROOT = pathlib.Path(__file__).resolve().parent.parent -# Clear, readable banner — spells "HexaHost" literally +# Clear, readable banner — spells "Axiom" literally ASCII_LINES = [ "+-+-+-+-+-+-+-+-+", "|H|e|x|a|H|o|s|t|",