Files
Syntrel/cogs/idevice/error_codes.py

85 lines
2.9 KiB
Python
Raw Normal View History

import json
import os
2025-09-23 08:43:18 -04:00
import discord
from discord import app_commands
from discord.ext import commands
def errorcodes_command():
2025-11-02 23:32:52 -05:00
@commands.hybrid_command(
name="errorcodes", description="Look up an idevice error code by name or number"
)
2025-09-23 08:43:18 -04:00
@app_commands.describe(name="Start typing to search all error names and codes")
async def errorcodes(self, context, name: str | None = None):
if name is None:
if context.interaction:
await context.interaction.response.send_message(
"Please provide an error code.", ephemeral=True
)
else:
await context.send("Please provide an error code.")
return
def load_errors():
2025-11-02 23:32:52 -05:00
json_path = os.path.join(os.path.dirname(__file__), "files/errorcodes.json")
try:
2025-11-02 23:32:52 -05:00
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()
2025-11-02 23:32:52 -05:00
key_to_data = {
error["name"]: (error["description"], error["code"]) for error in errors
}
code_to_key = {error["code"]: error["name"] for error in errors}
2025-09-23 08:43:18 -04:00
key = name
if key not in key_to_data:
2025-09-23 08:43:18 -04:00
try:
num = int(name)
key = code_to_key.get(num)
if key is None and num > 0:
key = code_to_key.get(-num)
2025-09-23 08:43:18 -04:00
except ValueError:
key = None
if key is None or key not in key_to_data:
2025-09-24 00:00:48 -04:00
if context.interaction:
2025-11-02 23:32:52 -05:00
await context.interaction.response.send_message(
"Error not found.", ephemeral=True
)
2025-09-24 00:00:48 -04:00
else:
await context.send("Error not found.")
2025-09-23 08:43:18 -04:00
return
2025-11-02 23:32:52 -05:00
title, code = key_to_data[key]
2025-11-02 23:32:52 -05:00
2025-09-23 08:43:18 -04:00
embed = discord.Embed(
2025-09-23 21:34:49 -04:00
description=f"## Error Code: {code}\n\n**Name**: `{key}`\n**Description**: {title}",
2025-11-02 23:32:52 -05:00
color=0xFA8C4A,
2025-09-23 08:43:18 -04:00
)
2025-11-02 23:32:52 -05:00
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
2025-09-23 21:34:49 -04:00
view = discord.ui.View()
2025-11-02 23:32:52 -05:00
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>",
)
)
2025-09-24 00:00:48 -04:00
if context.interaction:
await context.interaction.response.send_message(embed=embed, view=view)
else:
await context.send(embed=embed, view=view)
2025-09-23 08:43:18 -04:00
2025-11-02 23:32:52 -05:00
return errorcodes