Files
Syntrel/cogs/idevice/error_codes.py
neoarz 51393ece85 refactor(idevice): commands into a single GroupCog
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.
2025-09-28 22:57:26 -04:00

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