From ccd6f6ce381dc65f71129828fa14e9ee9369f7b7 Mon Sep 17 00:00:00 2001 From: neoarz Date: Wed, 17 Sep 2025 06:42:45 -0400 Subject: [PATCH] feat: add new sidestore commands --- cogs/sidestore/code.py | 63 ++++++++++++++++++++++ cogs/sidestore/sidestore.py | 105 ++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 cogs/sidestore/code.py create mode 100644 cogs/sidestore/sidestore.py diff --git a/cogs/sidestore/code.py b/cogs/sidestore/code.py new file mode 100644 index 0000000..a4c41b5 --- /dev/null +++ b/cogs/sidestore/code.py @@ -0,0 +1,63 @@ +import discord +from discord import app_commands +from discord.ext import commands +from discord.ext.commands import Context +import time + + +class Code(commands.Cog, name="code"): + def __init__(self, bot) -> None: + self.bot = bot + + @commands.hybrid_command( + name="code", description="No code received when signing in with Apple ID" + ) + async def code(self, context: Context) -> None: + embed = discord.Embed( + color=0x8e82f9, + description=( + '## Verification Code Not Received When Signing In with Apple ID\n\n---\n\n' + + + '1. **For iOS versions below 18.1:**\n' + + ' - Open the "Settings" app\n' + + ' - Tap on your name at the top of the screen\n' + + ' - Navigate to "Sign-In and Security"\n' + + ' - Select "Two-Factor Authentication"\n' + + ' - Choose "Get Verification Code"\n\n' + + '2. **For iOS versions 18.1 and above:**\n' + + ' - Visit [iCloud](https://www.icloud.com) on a web browser\n' + + ' - Click "Sign In"\n' + + ' - When prompted, you will see two options: "Sign In" and "Use Different Apple Account"\n' + + ' - Select the bottom option, "Use Different Apple Account"\n' + + ' - Enter your Apple ID and password\n' + + ' - Apple will send you a verification code\n' + + ' - Use this code in Sidestore to complete the sign-in process\n' + ) + ) + embed.set_author(name="SideStore", icon_url="https://github.com/SideStore/assets/blob/main/icons/classic/Default.png?raw=true") + embed.set_footer(text=f'Last Edited by neoarz | Last updated at {int(time.time())}') + 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", + emoji="<:githubicon:1417717356846776340>" + )) + view.add_item(discord.ui.Button( + label="Documentation", + style=discord.ButtonStyle.primary, + url="https://docs.sidestore.io/docs/troubleshooting/#sign-in-issues", + emoji="<:sidestorepride:1417717648795631787>" + )) + + + if context.interaction: + await context.interaction.response.send_message(embed=embed, view=view) + else: + await context.send(embed=embed, view=view) + + +async def setup(bot) -> None: + await bot.add_cog(Code(bot)) diff --git a/cogs/sidestore/sidestore.py b/cogs/sidestore/sidestore.py new file mode 100644 index 0000000..b09f44d --- /dev/null +++ b/cogs/sidestore/sidestore.py @@ -0,0 +1,105 @@ +import discord +from discord import app_commands +from discord.ext import commands +from discord.ext.commands import Context +import time + + +class SidestoreSelect(discord.ui.Select): + def __init__(self, bot): + self.bot = bot + options = [ + discord.SelectOption( + label="Refresh Issues", + value="refresh", + description="Help with refreshing or installing apps", + ), + discord.SelectOption( + label="Verification Code", + value="code", + description="No code received when signing in with Apple ID", + ), + discord.SelectOption( + label="App Crashes", + value="crash", + description="Help with SideStore crashing issues", + ), + discord.SelectOption( + label="Pairing File", + value="pairing", + description="Help with pairing file issues", + ), + discord.SelectOption( + label="Anisette Server", + value="server", + description="Help with anisette server issues", + ), + discord.SelectOption( + label="Apps Stuck Halfway", + value="half", + description="Help when apps get stuck installing", + ), + discord.SelectOption( + label="SparseRestore", + value="sparse", + description="Information about SparseRestore exploit", + ) + ] + super().__init__(placeholder="Choose a SideStore command...", options=options) + + async def callback(self, interaction: discord.Interaction): + command_name = self.values[0] + command = self.bot.get_command(command_name) + + if command: + ctx = await self.bot.get_context(interaction.message) + if ctx: + await ctx.invoke(command) + embed = discord.Embed( + title="Command Executed", + description=f"Successfully executed `/{command_name}`", + color=0x00FF00 + ) + embed.set_author(name="SideStore", icon_url="https://github.com/SideStore/assets/blob/main/icons/classic/Default.png?raw=true") + await interaction.response.edit_message(embed=embed, view=None) + else: + embed = discord.Embed( + title="Error", + description="Command not found!", + color=0xFF0000 + ) + embed.set_author(name="SideStore", icon_url="https://github.com/SideStore/assets/blob/main/icons/classic/Default.png?raw=true") + await interaction.response.edit_message(embed=embed, view=None) + + +class SidestoreView(discord.ui.View): + def __init__(self, bot): + super().__init__() + self.add_item(SidestoreSelect(bot)) + + +class Sidestore(commands.Cog, name="sidestore"): + def __init__(self, bot) -> None: + self.bot = bot + + @commands.hybrid_command( + name="sidestore", description="SideStore troubleshooting and help" + ) + async def sidestore(self, context: Context) -> None: + embed = discord.Embed( + title="SideStore Commands", + description="Choose a command from the dropdown below to get help with specific issues:", + color=0x8e82f9 + ) + embed.set_author(name="SideStore", icon_url="https://github.com/SideStore/assets/blob/main/icons/classic/Default.png?raw=true") + + view = SidestoreView(self.bot) + + if context.interaction: + await context.interaction.response.send_message(embed=embed, view=view, ephemeral=True) + else: + await context.send(embed=embed, view=view) + + +async def setup(bot) -> None: + await bot.add_cog(Sidestore(bot))