Refactor project branding from HexaHost to Axiom across all configurations, documentation, and code files. Update environment variables, Docker setup, and README to reflect the new brand name. Ensure consistency in naming conventions and improve clarity in setup instructions.
Some checks failed
CI / Bot (Python) (push) Failing after 12s
CI / Dashboard (Next.js) (push) Failing after 9s

This commit is contained in:
TheOnlyMace
2026-07-21 19:45:07 +02:00
parent 03c8f2ec2c
commit daf3338382
84 changed files with 238 additions and 236 deletions

145
bot/core/axiom.py Normal file
View File

@@ -0,0 +1,145 @@
# ╔══════════════════════════════════════════════════════════════════╗
# ║ ║
# ║ +-+-+-+-+-+-+-+-+ ║
# ║ |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
from utils.db_paths import db_path
from discord.ext import commands, tasks
import discord
import aiohttp
import typing
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
import inspect
init(autoreset=True)
# Corrected the extensions list
extensions: List[str] = [
"cogs"
]
class Axiom(commands.AutoShardedBot):
def __init__(self, *arg, **kwargs):
intents = discord.Intents.all()
intents.presences = True
intents.members = True
super().__init__(command_prefix=self.get_prefix,
case_insensitive=True,
intents=intents,
# The status is already set to Do Not Disturb here
status=discord.Status.do_not_disturb,
strip_after_prefix=True,
owner_ids=OWNER_IDS,
allowed_mentions=discord.AllowedMentions(
everyone=False, replied_user=False, roles=False),
sync_commands_debug=True,
sync_commands=True,
shard_count=1)
self.status_index = 0
self.status_list = []
async def setup_hook(self):
await setup_db()
await self.load_extensions()
self.status_task.start()
async def load_extensions(self):
for extension in extensions:
try:
await self.load_extension(extension)
print(Fore.GREEN + Style.BRIGHT + f"Loaded extension: {extension}")
except Exception as e:
print(f"{Fore.RED}{Style.BRIGHT}Failed to load extension {extension}. {e}")
print(Fore.GREEN + Style.BRIGHT + "*" * 20)
@tasks.loop(seconds=30)
async def status_task(self):
await self.wait_until_ready()
if not self.guilds:
return
guild = self.guilds[0] # Use first available guild for prefix
try:
config = await getConfig(guild.id)
prefix = config.get("prefix", ">")
except:
prefix = ">"
user_count = sum(g.member_count or 0 for g in self.guilds)
guild_count = len(self.guilds)
self.status_list = [
(discord.ActivityType.playing, f"{prefix}help | Security in your Server"),
(discord.ActivityType.watching, f"{user_count} users"),
(discord.ActivityType.watching, f"{guild_count} servers"),
(discord.ActivityType.listening, "Killing Nukers"),
(discord.ActivityType.playing, f"Protector {BotName}"),
]
current = self.status_list[self.status_index % len(self.status_list)]
# This task only changes the activity, not the online status (dnd, idle, etc.)
await self.change_presence(activity=discord.Activity(type=current[0], name=current[1]))
self.status_index += 1
async def send_raw(self, channel_id: int, content: str, **kwargs) -> typing.Optional[discord.Message]:
await self.http.send_message(channel_id, content, **kwargs)
async def invoke_help_command(self, ctx: Context) -> None:
return await ctx.send_help(ctx.command)
async def fetch_message_by_channel(self, channel: discord.TextChannel, messageID: int) -> typing.Optional[discord.Message]:
async for msg in channel.history(limit=1, before=discord.Object(messageID + 1), after=discord.Object(messageID - 1)):
return msg
async def get_prefix(self, message: discord.Message):
if message.guild:
guild_id = message.guild.id
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)
prefix = data["prefix"]
if row:
return commands.when_mentioned_or(prefix, '')(self, message)
else:
return commands.when_mentioned_or(prefix)(self, message)
else:
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:
return commands.when_mentioned_or('?', '')(self, message)
else:
return commands.when_mentioned_or('')(self, message)
async def on_message_edit(self, before, after):
ctx: Context = await self.get_context(after, cls=Context)
if before.content != after.content:
if after.guild is None or after.author.bot:
return
if ctx.command is None:
return
if type(ctx.channel) == "public_thread":
return
await self.invoke(ctx)
def setup_bot():
intents = discord.Intents.all()
bot = Axiom(intents=intents)
return bot