chore: ruff formatting

This commit is contained in:
neoarz
2025-11-02 23:32:52 -05:00
parent 2ce2c69a87
commit 1eff6c9f53
91 changed files with 3824 additions and 2518 deletions

View File

@@ -22,9 +22,11 @@ class Idevice(commands.GroupCog, name="idevice"):
embed = discord.Embed(
title="idevice Commands",
description="Choose a command from the dropdown below to get help with specific issues:",
color=0xfa8c4a
color=0xFA8C4A,
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
view = ideviceView(self.bot)
await context.send(embed=embed, view=view)
@@ -33,9 +35,11 @@ class Idevice(commands.GroupCog, name="idevice"):
embed = discord.Embed(
title="idevice Commands",
description="Choose a command from the dropdown below to get help with specific issues:",
color=0xfa8c4a
color=0xFA8C4A,
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
view = ideviceView(self.bot)
await context.send(embed=embed, view=view)
@@ -72,32 +76,29 @@ class Idevice(commands.GroupCog, name="idevice"):
async def idevice_group_mountddi(self, context: Context):
await self._invoke_hybrid(context, "mountddi")
@app_commands.command(
name="help",
description="idevice troubleshooting help"
)
@app_commands.command(name="help", description="idevice troubleshooting help")
async def help(self, interaction: discord.Interaction):
embed = discord.Embed(
title="idevice Commands",
description="Choose a command from the dropdown below to get help with specific issues:",
color=0xfa8c4a
color=0xFA8C4A,
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
view = ideviceView(self.bot)
await interaction.response.send_message(embed=embed, view=view, ephemeral=True)
@commands.check(_require_group_prefix)
@commands.hybrid_command(
name="errorcodes",
description="Look up error codes and their meanings."
name="errorcodes", description="Look up error codes and their meanings."
)
async def errorcodes(self, context, *, error_code: str = None):
return await errorcodes_command()(self, context, error_code=error_code)
@commands.check(_require_group_prefix)
@commands.hybrid_command(
name="developermode",
description="How to turn on developer mode"
name="developermode", description="How to turn on developer mode"
)
async def developermode(self, context):
return await developermode_command()(self, context)
@@ -105,23 +106,21 @@ class Idevice(commands.GroupCog, name="idevice"):
@commands.check(_require_group_prefix)
@commands.hybrid_command(
name="noapps",
description="Help when apps aren't showing in installed apps view"
description="Help when apps aren't showing in installed apps view",
)
async def noapps(self, context):
return await noapps_command()(self, context)
@commands.check(_require_group_prefix)
@commands.hybrid_command(
name="mountddi",
description="How to manually mount DDI"
)
@commands.hybrid_command(name="mountddi", description="How to manually mount DDI")
async def mountddi(self, context):
return await mountddi_command()(self, context)
async def setup(bot) -> None:
cog = Idevice(bot)
await bot.add_cog(cog)
bot.logger.info("Loaded extension 'idevice.help'")
bot.logger.info("Loaded extension 'idevice.errorcodes'")
bot.logger.info("Loaded extension 'idevice.developermode'")

View File

@@ -11,31 +11,35 @@ def developermode_command():
)
async def developermode(self, context):
embed = discord.Embed(
color=0xfa8c4a,
color=0xFA8C4A,
description=(
'# How to Enable Developer Mode\n\n---\n\n' +
'1. Open the "Settings" app\n' +
'2. Navigate to "Privacy & Security"\n' +
'3. Scroll all the way down to find "Developer Mode"\n\n' +
'If you don\'t see the Developer Mode option, you need to install a developer app first.\n\n' +
'You can use [SideStore](https://sidestore.io/) for this purpose - follow their installation guide to get started.'
)
"# How to Enable Developer Mode\n\n---\n\n"
+ '1. Open the "Settings" app\n'
+ '2. Navigate to "Privacy & Security"\n'
+ '3. Scroll all the way down to find "Developer Mode"\n\n'
+ "If you don't see the Developer Mode option, you need to install a developer app first.\n\n"
+ "You can use [SideStore](https://sidestore.io/) for this purpose - follow their installation guide to get started."
),
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_footer(text=f'Last Edited by neoarz')
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_footer(text=f"Last Edited by neoarz")
embed.timestamp = discord.utils.utcnow()
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/developermode.py",
emoji="<:githubicon:1417717356846776340>"
))
view.add_item(
discord.ui.Button(
label="Edit Command",
style=discord.ButtonStyle.secondary,
url="https://github.com/neoarz/Syntrel/blob/main/cogs/idevice/developermode.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 developermode

View File

@@ -7,13 +7,15 @@ 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")
@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')
json_path = os.path.join(os.path.dirname(__file__), "files/errorcodes.json")
try:
with open(json_path, 'r', encoding='utf-8') as f:
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}")
@@ -23,9 +25,11 @@ def errorcodes_command():
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_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:
@@ -35,32 +39,36 @@ def errorcodes_command():
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)
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,
color=0xFA8C4A,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
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>"
))
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

View File

@@ -9,8 +9,8 @@ import math
def load_error_codes():
try:
json_path = os.path.join(os.path.dirname(__file__), 'files/errorcodes.json')
with open(json_path, 'r', encoding='utf-8') as f:
json_path = os.path.join(os.path.dirname(__file__), "files/errorcodes.json")
with open(json_path, "r", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return []
@@ -24,115 +24,110 @@ class ErrorCodesBrowserView(discord.ui.View):
self.error_codes = load_error_codes()
self.items_per_page = items_per_page
self.current_page = 0
self.max_pages = math.ceil(len(self.error_codes) / items_per_page) if self.error_codes else 1
self.max_pages = (
math.ceil(len(self.error_codes) / items_per_page) if self.error_codes else 1
)
self.update_buttons()
def update_buttons(self):
self.clear_items()
first_button = discord.ui.Button(
emoji="<:leftmax:1420240325770870905>",
style=discord.ButtonStyle.primary,
disabled=(self.current_page == 0)
disabled=(self.current_page == 0),
)
first_button.callback = self.first_page
self.add_item(first_button)
prev_button = discord.ui.Button(
emoji="<:left:1420240344926126090>",
style=discord.ButtonStyle.primary,
disabled=(self.current_page == 0)
disabled=(self.current_page == 0),
)
prev_button.callback = self.prev_page
self.add_item(prev_button)
stop_button = discord.ui.Button(
emoji="<:middle:1420240356087173160>",
style=discord.ButtonStyle.secondary
emoji="<:middle:1420240356087173160>", style=discord.ButtonStyle.secondary
)
stop_button.callback = self.stop_interaction
self.add_item(stop_button)
next_button = discord.ui.Button(
emoji="<:right:1420240334100627456>",
style=discord.ButtonStyle.primary,
disabled=(self.current_page >= self.max_pages - 1)
disabled=(self.current_page >= self.max_pages - 1),
)
next_button.callback = self.next_page
self.add_item(next_button)
last_button = discord.ui.Button(
emoji="<:rightmax:1420240368846372886>",
style=discord.ButtonStyle.primary,
disabled=(self.current_page >= self.max_pages - 1)
disabled=(self.current_page >= self.max_pages - 1),
)
last_button.callback = self.last_page
self.add_item(last_button)
def create_embed(self):
if not self.error_codes:
embed = discord.Embed(
title="Error Codes",
description="No error codes found.",
color=0xfa8c4a
title="Error Codes", description="No error codes found.", color=0xFA8C4A
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_footer(text="Page 0 of 0")
return embed
embed = discord.Embed(
title="Error Codes",
color=0xfa8c4a
embed = discord.Embed(title="Error Codes", color=0xFA8C4A)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
start_idx = self.current_page * self.items_per_page
end_idx = min(start_idx + self.items_per_page, len(self.error_codes))
current_codes = self.error_codes[start_idx:end_idx]
for i, error in enumerate(current_codes):
field_value = f"**Code:** `{error.get('code', 'N/A')}`\n**Name:** `{error.get('name', 'Unknown')}`\n**Description:** {error.get('description', 'No description')}"
embed.add_field(
name="\u200b",
value=field_value,
inline=True
)
embed.add_field(name="\u200b", value=field_value, inline=True)
while len(current_codes) % 3 != 0:
embed.add_field(name="\u200b", value="\u200b", inline=True)
embed.set_footer(text=f"Page {self.current_page + 1} of {self.max_pages}")
return embed
async def first_page(self, interaction: discord.Interaction):
self.current_page = 0
self.update_buttons()
embed = self.create_embed()
await interaction.response.edit_message(embed=embed, view=self)
async def prev_page(self, interaction: discord.Interaction):
if self.current_page > 0:
self.current_page -= 1
self.update_buttons()
embed = self.create_embed()
await interaction.response.edit_message(embed=embed, view=self)
async def stop_interaction(self, interaction: discord.Interaction):
self.clear_items()
embed = self.create_embed()
embed.set_footer(text="Interaction stopped")
await interaction.response.edit_message(embed=embed, view=self)
self.stop()
async def next_page(self, interaction: discord.Interaction):
if self.current_page < self.max_pages - 1:
self.current_page += 1
self.update_buttons()
embed = self.create_embed()
await interaction.response.edit_message(embed=embed, view=self)
async def last_page(self, interaction: discord.Interaction):
self.current_page = self.max_pages - 1
self.update_buttons()
@@ -174,48 +169,60 @@ class ideviceSelect(discord.ui.Select):
try:
view = ErrorCodesBrowserView()
embed = view.create_embed()
success_embed = discord.Embed(
title="Command Executed",
description="Successfully executed `/errorcodes`. Please run /[errorcode_name] to get more information about an error code, and send it in chat",
color=0x00FF00
color=0x00FF00,
)
success_embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
success_embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
await interaction.response.edit_message(embed=success_embed, view=None)
await interaction.followup.send(embed=embed, view=view, ephemeral=True)
except discord.Forbidden:
guild_info = f"server {interaction.guild.name} (ID: {interaction.guild.id})" if interaction.guild else "DM or private channel"
self.bot.logger.warning(f"Bot missing permissions in {guild_info} - cannot execute errorcodes command")
guild_info = (
f"server {interaction.guild.name} (ID: {interaction.guild.id})"
if interaction.guild
else "DM or private channel"
)
self.bot.logger.warning(
f"Bot missing permissions in {guild_info} - cannot execute errorcodes command"
)
if interaction.guild is None:
embed = discord.Embed(
title="Error",
description="This command cannot be executed in DMs.",
color=0xFF0000
color=0xFF0000,
)
else:
embed = discord.Embed(
title="Permission Error",
description="The bot needs the `send messages` permission to execute this command.",
color=0xFF0000
color=0xFF0000,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
await interaction.response.edit_message(embed=embed, view=None)
except Exception as e:
self.bot.logger.error(f"Error executing errorcodes command: {e}")
embed = discord.Embed(
title="Error",
description="An error occurred while executing the command.",
color=0xFF0000
color=0xFF0000,
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
await interaction.response.edit_message(embed=embed, view=None)
return
command = self.bot.get_command(command_name)
if command:
try:
ctx = await self.bot.get_context(interaction.message)
@@ -224,44 +231,57 @@ class ideviceSelect(discord.ui.Select):
embed = discord.Embed(
title="Command Executed",
description=f"Successfully executed `/{command_name}`",
color=0x00FF00
color=0x00FF00,
)
embed.set_author(
name="idevice",
icon_url="https://yes.nighty.works/raw/snLMuO.png",
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
await interaction.response.edit_message(embed=embed, view=None)
except discord.Forbidden:
guild_info = f"server {interaction.guild.name} (ID: {interaction.guild.id})" if interaction.guild else "DM or private channel"
self.bot.logger.warning(f"Bot missing permissions in {guild_info} - cannot execute {command_name} command")
guild_info = (
f"server {interaction.guild.name} (ID: {interaction.guild.id})"
if interaction.guild
else "DM or private channel"
)
self.bot.logger.warning(
f"Bot missing permissions in {guild_info} - cannot execute {command_name} command"
)
if interaction.guild is None:
embed = discord.Embed(
title="Error",
description="This command cannot be executed in DMs.",
color=0xFF0000
color=0xFF0000,
)
else:
embed = discord.Embed(
title="Permission Error",
description="The bot needs the `send messages` permission to execute this command.",
color=0xFF0000
color=0xFF0000,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
await interaction.response.edit_message(embed=embed, view=None)
except Exception as e:
self.bot.logger.error(f"Error executing {command_name} command: {e}")
embed = discord.Embed(
title="Error",
description="An error occurred while executing the command.",
color=0xFF0000
color=0xFF0000,
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
await interaction.response.edit_message(embed=embed, view=None)
else:
embed = discord.Embed(
title="Error",
description="Command not found!",
color=0xFF0000
title="Error", description="Command not found!", color=0xFF0000
)
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
await interaction.response.edit_message(embed=embed, view=None)
@@ -282,10 +302,14 @@ def idevice_command():
description="This command can only be used in servers.",
color=0xE02B2B,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
if context.interaction:
await context.interaction.response.send_message(embed=embed, ephemeral=True)
await context.interaction.response.send_message(
embed=embed, ephemeral=True
)
else:
await context.send(embed=embed, ephemeral=True)
return
@@ -296,10 +320,14 @@ def idevice_command():
description="The bot needs send messages permissions in this channel.",
color=0xE02B2B,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
if context.interaction:
await context.interaction.response.send_message(embed=embed, ephemeral=True)
await context.interaction.response.send_message(
embed=embed, ephemeral=True
)
else:
await context.send(embed=embed, ephemeral=True)
return
@@ -307,15 +335,19 @@ def idevice_command():
embed = discord.Embed(
title="idevice Commands",
description="Choose a command from the dropdown below to get help with specific issues:",
color=0xfa8c4a
color=0xFA8C4A,
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
view = ideviceView(self.bot)
if context.interaction:
await context.interaction.response.send_message(embed=embed, view=view, ephemeral=True)
await context.interaction.response.send_message(
embed=embed, view=view, ephemeral=True
)
else:
await context.send(embed=embed, view=view)
return idevice
return idevice

View File

@@ -5,50 +5,52 @@ import os
def mountddi_command():
@commands.hybrid_command(
name="mountddi",
description="How to manually mount DDI"
)
@commands.hybrid_command(name="mountddi", description="How to manually mount DDI")
async def mountddi(self, context):
await context.defer()
embed = discord.Embed(
color=0xfa8c4a,
color=0xFA8C4A,
description=(
'# How to Manually Mount DDI\n\n---\n\n'
'1. **Download the DDI.zip file attached above:**\n'
' - Save it to your device and extract the contents\n\n'
'2. **Replace the DDI folder in StikDebug:**\n'
' - Navigate to the StikDebug default directory on your iPhone/iPad\n'
' - Delete the existing DDI folder completely\n'
' - Replace it with the DDI folder from the downloaded zip\n'
' - Make sure it\'s in the StikDebug default directory\n\n'
'3. **Restart and retry:**\n'
' - Completely restart StikDebug\n'
' - See if you get the same error again\n\n'
)
"# How to Manually Mount DDI\n\n---\n\n"
"1. **Download the DDI.zip file attached above:**\n"
" - Save it to your device and extract the contents\n\n"
"2. **Replace the DDI folder in StikDebug:**\n"
" - Navigate to the StikDebug default directory on your iPhone/iPad\n"
" - Delete the existing DDI folder completely\n"
" - Replace it with the DDI folder from the downloaded zip\n"
" - Make sure it's in the StikDebug default directory\n\n"
"3. **Restart and retry:**\n"
" - Completely restart StikDebug\n"
" - See if you get the same error again\n\n"
),
)
embed.set_author(
name="idevice",
icon_url="https://yes.nighty.works/raw/snLMuO.png"
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_footer(text="Last Edited by neoarz")
embed.timestamp = discord.utils.utcnow()
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/mountddi.py",
emoji="<:githubicon:1417717356846776340>"
))
view.add_item(
discord.ui.Button(
label="Edit Command",
style=discord.ButtonStyle.secondary,
url="https://github.com/neoarz/Syntrel/blob/main/cogs/idevice/mountddi.py",
emoji="<:githubicon:1417717356846776340>",
)
)
ddi_file_path = os.path.join(os.path.dirname(__file__), 'files/DDI.zip')
file = discord.File(ddi_file_path, filename='DDI.zip') if os.path.exists(ddi_file_path) else None
ddi_file_path = os.path.join(os.path.dirname(__file__), "files/DDI.zip")
file = (
discord.File(ddi_file_path, filename="DDI.zip")
if os.path.exists(ddi_file_path)
else None
)
if file:
await context.send(embed=embed, view=view, file=file)
else:
await context.send(embed=embed, view=view)
return mountddi

View File

@@ -7,36 +7,41 @@ import time
def noapps_command():
@commands.hybrid_command(
name="noapps", description="Help when apps aren't showing in installed apps view"
name="noapps",
description="Help when apps aren't showing in installed apps view",
)
async def noapps(self, context):
embed = discord.Embed(
color=0xfa8c4a,
color=0xFA8C4A,
description=(
'# Apps Not Showing in Installed Apps View\n\n---\n\n' +
'If apps aren\'t appearing in the StikDebug installed apps view, this is likely because they were signed with a distribution certificate instead of a development certificate.\n\n' +
'Distribution certificates lack the `get-task-allow` entitlement needed for JIT.\n\n' +
'To fix this issue:\n' +
'- Use a development certificate when signing apps, or\n' +
'- Try SideStore, the best free sideloading method available\n\n' +
'More details can be found at [SideStore\'s official website](https://sidestore.io/)'
)
"# Apps Not Showing in Installed Apps View\n\n---\n\n"
+ "If apps aren't appearing in the StikDebug installed apps view, this is likely because they were signed with a distribution certificate instead of a development certificate.\n\n"
+ "Distribution certificates lack the `get-task-allow` entitlement needed for JIT.\n\n"
+ "To fix this issue:\n"
+ "- Use a development certificate when signing apps, or\n"
+ "- Try SideStore, the best free sideloading method available\n\n"
+ "More details can be found at [SideStore's official website](https://sidestore.io/)"
),
)
embed.set_author(name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png")
embed.set_footer(text=f'Last Edited by neoarz')
embed.set_author(
name="idevice", icon_url="https://yes.nighty.works/raw/snLMuO.png"
)
embed.set_footer(text=f"Last Edited by neoarz")
embed.timestamp = discord.utils.utcnow()
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/noapps.py",
emoji="<:githubicon:1417717356846776340>"
))
view.add_item(
discord.ui.Button(
label="Edit Command",
style=discord.ButtonStyle.secondary,
url="https://github.com/neoarz/Syntrel/blob/main/cogs/idevice/noapps.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 noapps