mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 19:50:12 +01:00
Merged idevice-related commands into a unified GroupCog in cogs/idevice/__init__.py, replacing individual Cog classes with command factory functions. Updated bot.py and help.py to support the new structure and improved command categorization. This refactor simplifies extension loading and command management for idevice troubleshooting features.
67 lines
2.5 KiB
Python
67 lines
2.5 KiB
Python
import json
|
|
import os
|
|
import discord
|
|
from discord import app_commands
|
|
from discord.ext import commands
|
|
from discord.ext.commands import Context
|
|
|
|
|
|
def errorcodes_command():
|
|
@commands.hybrid_command(name="errorcodes", description="Look up an idevice error code by name or number")
|
|
@app_commands.describe(name="Start typing to search all error names and codes")
|
|
async def errorcodes(self, context, name: str):
|
|
def load_errors():
|
|
json_path = os.path.join(os.path.dirname(__file__), 'files/errorcodes.json')
|
|
try:
|
|
with open(json_path, 'r', encoding='utf-8') as f:
|
|
return json.load(f)
|
|
except FileNotFoundError:
|
|
self.bot.logger.error(f"Error codes JSON file not found: {json_path}")
|
|
return []
|
|
except json.JSONDecodeError as e:
|
|
self.bot.logger.error(f"Error parsing error codes JSON: {e}")
|
|
return []
|
|
|
|
errors = load_errors()
|
|
key_to_data = {error['name']: (error['description'], error['code']) for error in errors}
|
|
code_to_key = {error['code']: error['name'] for error in errors}
|
|
|
|
key = name
|
|
if key not in key_to_data:
|
|
try:
|
|
num = int(name)
|
|
key = code_to_key.get(num)
|
|
except ValueError:
|
|
key = None
|
|
if key is None or key not in key_to_data:
|
|
if context.interaction:
|
|
await context.interaction.response.send_message("Error not found.", ephemeral=True)
|
|
else:
|
|
await context.send("Error not found.")
|
|
return
|
|
|
|
title, code = key_to_data[key]
|
|
|
|
embed = discord.Embed(
|
|
description=f"## Error Code: {code}\n\n**Name**: `{key}`\n**Description**: {title}",
|
|
color=0xfa8c4a,
|
|
)
|
|
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
|
|
|
|
view = discord.ui.View()
|
|
view.add_item(discord.ui.Button(
|
|
label="Edit Command",
|
|
style=discord.ButtonStyle.secondary,
|
|
url="https://github.com/neoarz/Syntrel/blob/main/cogs/idevice/error_codes.py",
|
|
emoji="<:githubicon:1417717356846776340>"
|
|
))
|
|
|
|
if context.interaction:
|
|
await context.interaction.response.send_message(embed=embed, view=view)
|
|
else:
|
|
await context.send(embed=embed, view=view)
|
|
|
|
return errorcodes
|
|
|
|
|