Update configuration and README for improved setup and security; disable default API and emoji sync, and enhance Discord permission checks in API routes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
TheOnlyMace
2026-07-21 16:00:52 +02:00
commit fdfc8de44d
925 changed files with 75254 additions and 0 deletions

View File

@@ -0,0 +1,278 @@
import discord
from utils.emoji import ARROWRED, BOOST, CAST, GAMES, LEVEL_UP, LOADINGRED, LOCK, MESSAGE, MINECRAFT, MUSIC, NEW, PIN, SEED, STAR, SWORD, SYSTEM, THUNDER, TICKET, WIFI, ZAI, ZARROW, ZBAN, ZBOT, ZCIRCLE, ZCIRCLE_ALT1, ZCLOUD, ZCOUNTING, ZMODULE, ZPEOPLE, ZROCKET, ZSAFE, ZTADA, ZUNMUTE, ZWRENCH
from discord.ext import commands
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.Cog import Cog
from utils.Tools import getConfig
from itertools import chain
import json
from utils import help as vhelp
from utils import Paginator, DescriptionEmbedPaginator, FieldPagePaginator, TextPaginator
import asyncio
from utils.config import serverLink
from utils.Tools import *
color = 0xFF0000
client = zyrox()
class HelpCommand(commands.HelpCommand):
async def send_ignore_message(self, ctx, ignore_type: str):
if ignore_type == "channel":
await ctx.reply(f"This channel is ignored.", mention_author=False)
elif ignore_type == "command":
await ctx.reply(f"{ctx.author.mention} This Command, Channel, or You have been ignored here.", delete_after=6)
elif ignore_type == "user":
await ctx.reply(f"You are ignored.", mention_author=False)
async def on_help_command_error(self, ctx, error):
errors = [
commands.CommandOnCooldown, commands.CommandNotFound,
discord.HTTPException, commands.CommandInvokeError
]
if not type(error) in errors:
await self.context.reply(f"Unknown Error Occurred\n{error.original}",
mention_author=False)
else:
if type(error) == commands.CommandOnCooldown:
return
return await super().on_help_command_error(ctx, error)
async def command_not_found(self, string: str) -> None:
ctx = self.context
check_ignore = await ignore_check().predicate(ctx)
check_blacklist = await blacklist_check().predicate(ctx)
if not check_blacklist:
return
if not check_ignore:
await self.send_ignore_message(ctx, "command")
return
cmds = (str(cmd) for cmd in self.context.bot.walk_commands())
matches = get_close_matches(string, cmds)
embed = discord.Embed(
title="Zyrox Helper",
description=f">>> **Ops! Command not found with the name** `{string}`.",
color=0xFF0000
)
#if matches:
#match_list = "\n".join([f"{index}. `{match}`" for index, match in enumerate(matches, start=1)])
#embed.add_field(name="Did you mean:", value=match_list, inline=True)
await ctx.reply(embed=embed, mention_author=True)
async def send_bot_help(self, mapping):
ctx = self.context
check_ignore = await ignore_check().predicate(ctx)
check_blacklist = await blacklist_check().predicate(ctx)
if not check_blacklist:
return
if not check_ignore:
await self.send_ignore_message(ctx, "command")
return
# Show loading embed
loading_embed = discord.Embed(
description=f"{LOADINGRED} Loading help Menu...",
color=0xFF0000
)
loading_msg = await ctx.reply(embed=loading_embed)
# Wait 2 seconds
await asyncio.sleep(2)
# Delete loading message
with suppress(discord.NotFound):
await loading_msg.delete()
data = await getConfig(self.context.guild.id)
prefix = data["prefix"]
filtered = await self.filter_commands(self.context.bot.walk_commands(), sort=True)
embed = discord.Embed(
description=(
f"**{ARROWRED} __Start Zyrox X 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"),
color=0xFF0000)
embed.set_author(name=f"{ctx.author}",
icon_url=ctx.author.display_avatar.url)
embed.set_thumbnail(url=ctx.author.display_avatar.url)
embed.add_field(
name=f"{ZCLOUD} __**Main Features**__",
value=f">>> \n {ZSAFE} `»` Security\n"
f" {ZBOT} `»` Automoderation\n"
f" {ZWRENCH} `»` Utility\n"
f" {MUSIC} `»` Music\n"
f" {WIFI} `»` Autoreact & responder\n"
f" {SWORD} `»` Moderation\n"
f" {ZPEOPLE} `»` Autorole & Invc\n"
f" {ZROCKET} `»` Fun\n"
f" {GAMES} `»` Games\n"
f" {ZBAN} `»` Ignore Channels\n"
f" {WIFI} `»` Server\n"
f" {ZUNMUTE} `»` Voice\n"
f" {SEED} `»` Welcomer\n"
f" {ZTADA} `»` Giveaway\n"
f" {TICKET} `»` Ticket {NEW}\n"
f" {ZPEOPLE} `»` Invite Tracker {NEW}\n"
)
embed.add_field(
name=f" {ZMODULE} __**Extra Features**__",
value=f">>> \n {CAST} `»` Advance Logging\n"
f" {STAR} `»` Vanityroles\n"
f" {ZCOUNTING} `»` Counting {NEW}\n"
f" {SYSTEM} `»` J2C {NEW}\n"
f" {ZAI} `»` AI {NEW}\n"
f" {BOOST} `»` Boost {NEW}\n"
f" {LEVEL_UP} `»` Leveling {NEW}\n"
f" {PIN} `»` Sticky {NEW}\n"
f" {THUNDER} `»` Verification {NEW}\n"
f" {LOCK} `»` Encryption {NEW}\n"
f" {MINECRAFT} `»` Minecraft {NEW}\n"
f" {MESSAGE} `»` Joindm {NEW}\n"
f" {ZCIRCLE} `»` Birthday {NEW}\n"
f" {ZCIRCLE_ALT1} `»` Customrole\n"
)
embed.set_footer(
text=f"Requested By {self.context.author} | [Support](https://discord.gg/codexdev)",
)
view = vhelp.View(mapping=mapping, ctx=self.context, homeembed=embed, ui=2)
await ctx.reply(embed=embed, view=view)
async def send_command_help(self, command):
ctx = self.context
check_ignore = await ignore_check().predicate(ctx)
check_blacklist = await blacklist_check().predicate(ctx)
if not check_blacklist:
return
if not check_ignore:
await self.send_ignore_message(ctx, "command")
return
zyrox = f">>> {command.help}" if command.help else '>>> No Help Provided...'
embed = discord.Embed(
description=f"""{zyrox}""",
color=color)
alias = ' & '.join(command.aliases)
embed.add_field(name="**Alt cmd**",
value=f"```{alias}```" if command.aliases else "No Alt cmd",
inline=False)
embed.add_field(name="**Usage**",
value=f"```{self.context.prefix}{command.signature}```\n")
embed.set_author(name=f"{command.qualified_name.title()} Command")
embed.set_footer(text="<[] = optional | < > = required • Use Prefix Before Commands.")
await self.context.reply(embed=embed, mention_author=False)
def get_command_signature(self, command: commands.Command) -> str:
parent = command.full_parent_name
if len(command.aliases) > 0:
aliases = ' | '.join(command.aliases)
fmt = f'[{command.name} | {aliases}]'
if parent:
fmt = f'{parent}'
alias = f'[{command.name} | {aliases}]'
else:
alias = command.name if not parent else f'{parent} {command.name}'
return f'{alias} {command.signature}'
def common_command_formatting(self, embed_like, command):
embed_like.title = self.get_command_signature(command)
if command.description:
embed_like.description = f'{command.description}\n\n{command.help}'
else:
embed_like.description = command.help or 'No help found...'
async def send_group_help(self, group):
ctx = self.context
check_ignore = await ignore_check().predicate(ctx)
check_blacklist = await blacklist_check().predicate(ctx)
if not check_blacklist:
return
if not check_ignore:
await self.send_ignore_message(ctx, "command")
return
entries = [
(
f"`{self.context.prefix}{cmd.qualified_name}`\n",
f"{cmd.short_doc if cmd.short_doc else ''}\n\u200b"
)
for cmd in group.commands
]
count = len(group.commands)
embeds = FieldPagePaginator(
entries=entries,
title=f"{group.qualified_name.title()} [{count}]",
description="< > Duty | [ ] Optional\n",
per_page=4
).get_pages()
paginator = Paginator(ctx, embeds)
await paginator.paginate()
async def send_cog_help(self, cog):
ctx = self.context
check_ignore = await ignore_check().predicate(ctx)
check_blacklist = await blacklist_check().predicate(ctx)
if not check_blacklist:
return
if not check_ignore:
await self.send_ignore_message(ctx, "command")
return
entries = [(
f"> `{self.context.prefix}{cmd.qualified_name}`",
f"-# Description : {cmd.short_doc if cmd.short_doc else ''}"
f"\n\u200b",
) for cmd in cog.get_commands()]
paginator = Paginator(source=FieldPagePaginator(
entries=entries,
title=f"Zyrox's {cog.qualified_name.title()} ({len(cog.get_commands())})",
description="`<..> Required | [..] Optional`\n\n",
color=0xFF0000,
per_page=4),
ctx=self.context)
await paginator.paginate()
class Help(Cog, name="help"):
def __init__(self, client: zyrox):
self._original_help_command = client.help_command
attributes = {
'name': "help",
'aliases': ['h'],
'cooldown': commands.CooldownMapping.from_cooldown(1, 5, commands.BucketType.user),
'help': 'Shows help about bot, a command, or a category'
}
client.help_command = HelpCommand(command_attrs=attributes)
client.help_command.cog = self
async def cog_unload(self):
self.help_command = self._original_help_command