mirror of
https://github.com/neoarz/Syntrel.git
synced 2025-12-25 11:40:12 +01:00
Merge pull request #2 from neoarz/sidestore-commands
This commit is contained in:
@@ -13,7 +13,7 @@ class Help(commands.Cog, name="help"):
|
||||
interaction: discord.Interaction,
|
||||
current: str,
|
||||
) -> list[app_commands.Choice[str]]:
|
||||
categories = ["general", "fun", "moderation", "template", "owner"]
|
||||
categories = ["general", "fun", "moderation", "template", "owner", "sidestore"]
|
||||
|
||||
suggestions = []
|
||||
for category in categories:
|
||||
@@ -56,6 +56,15 @@ class Help(commands.Cog, name="help"):
|
||||
"warnings": "moderation",
|
||||
"archive": "moderation",
|
||||
|
||||
"sidestore": "sidestore",
|
||||
"refresh": "sidestore",
|
||||
"code": "sidestore",
|
||||
"crash": "sidestore",
|
||||
"pairing": "sidestore",
|
||||
"server": "sidestore",
|
||||
"half": "sidestore",
|
||||
"sparse": "sidestore",
|
||||
|
||||
"sync": "owner",
|
||||
"cog_management": "owner",
|
||||
"shutdown": "owner",
|
||||
@@ -68,7 +77,8 @@ class Help(commands.Cog, name="help"):
|
||||
"fun": "Funny commands",
|
||||
"moderation": "Administration commands",
|
||||
"template": "Template commands",
|
||||
"owner": "Owner commands"
|
||||
"owner": "Owner commands",
|
||||
"sidestore": "SideStore troubleshooting commands"
|
||||
}
|
||||
|
||||
if category is None:
|
||||
|
||||
3
cogs/idevice/idevice.py
Normal file
3
cogs/idevice/idevice.py
Normal file
@@ -0,0 +1,3 @@
|
||||
async def setup(bot) -> None:
|
||||
pass
|
||||
|
||||
63
cogs/sidestore/code.py
Normal file
63
cogs/sidestore/code.py
Normal file
@@ -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')
|
||||
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/sidestore/code.py",
|
||||
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))
|
||||
47
cogs/sidestore/crash.py
Normal file
47
cogs/sidestore/crash.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Crash(commands.Cog, name="crash"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="crash", description="Help with SideStore crashing issues"
|
||||
)
|
||||
async def crash(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# Sidestore Crashing After Refresh\n\n---\n\n' +
|
||||
'1. Delete your current SideStore.\n' +
|
||||
'2. Reinstall with AltServer.\n' +
|
||||
'3. Select the pairing file and sign into SideStore.\n' +
|
||||
'4. Download the SideStore .ipa file, and save it to your Files app.\n' +
|
||||
'5. Import the "Sidestore.ipa" file into SideStore, just like how you import any other IPA.\n\n' +
|
||||
'This process ensures SideStore is refreshed without issues.'
|
||||
)
|
||||
)
|
||||
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')
|
||||
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/neos-helper-bot/blob/main/cogs/sidestore/crash.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)
|
||||
|
||||
|
||||
async def setup(bot) -> None:
|
||||
await bot.add_cog(Crash(bot))
|
||||
62
cogs/sidestore/half.py
Normal file
62
cogs/sidestore/half.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Half(commands.Cog, name="half"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="half", description="Help when apps get stuck installing"
|
||||
)
|
||||
async def half(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# Sidestore/IPAs Stuck Halfway Through Installing or Refreshing\n\n---\n' +
|
||||
'### Method 1: Basic Troubleshooting\n\n' +
|
||||
'- Restart SideStore\n' +
|
||||
'- Restart device\n' +
|
||||
'- Clear Cache\n' +
|
||||
'- Change Anisette Server\n' +
|
||||
'- Reset adi.pb\n' +
|
||||
'- Sign out from SideStore and sign back in\n' +
|
||||
'- Regenerate pairing file\n' +
|
||||
'- Reinstall SideStore\n\n' +
|
||||
'### Method 2: If Method 1 Doesn\'t Work\n\n' +
|
||||
'1. Delete Sidestore\n' +
|
||||
'2. Reinstall SideStore using the guide at https://docs.sidestore.io/\n' +
|
||||
'3. **Do not use the IPA provided by the website**, instead use this older version: [Sidestore 0.5.9 download](https://github.com/SideStore/SideStore/releases/download/0.5.9/SideStore.ipa)\n' +
|
||||
'4. Setup SideStore and StosVPN as usual\n' +
|
||||
'> -# Step 3 is the important one (make sure to do that)\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')
|
||||
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/neos-helper-bot/blob/main/cogs/sidestore/half.py",
|
||||
emoji="<:githubicon:1417717356846776340>"
|
||||
))
|
||||
view.add_item(discord.ui.Button(
|
||||
label="Documentation",
|
||||
style=discord.ButtonStyle.primary,
|
||||
url="https://docs.sidestore.io/docs/troubleshooting/common-issues#sidestore-hangs-halfway-through-installation",
|
||||
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(Half(bot))
|
||||
61
cogs/sidestore/pairing.py
Normal file
61
cogs/sidestore/pairing.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Pairing(commands.Cog, name="pairing"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="pairing", description="Help with pairing file issues"
|
||||
)
|
||||
async def pairing(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# Cannot Choose Pairing File\n\n---\n\n' +
|
||||
'1. **Check File Extension:**\n' +
|
||||
" Make sure your pairing file's extension ends with `.mobiledevicepairing` or `.plist`\n" +
|
||||
' - If it doesn\'t, double-check to see if you had zipped your pairing file before sending it to your phone. Failing to do so may lead to the file being corrupted during transport\n\n' +
|
||||
'2. **Move Pairing File:**\n' +
|
||||
' If you are unable to select the pairing file from within the app:\n' +
|
||||
' - Rename the file to `ALTPairingFile.mobiledevicepairing`\n' +
|
||||
' - Try moving the pairing file to the root directory of the SideStore folder in the Files app under "On My iPhone/iPad"\n\n' +
|
||||
'3. **Certificate Signing:**\n' +
|
||||
" When signing Sidestore with certain certificates, you won't be able to select the pairing file from within the app\n" +
|
||||
' - Try the fix mentioned above\n' +
|
||||
' - If you do not see the Sidestore folder in the Files app:\n' +
|
||||
' • Connect your phone to your computer\n' +
|
||||
' • Drag and drop the pairing file into the Sidestore app\'s files section\n' +
|
||||
' • Ensure the file is renamed to `ALTPairingFile.mobiledevicepairing`\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')
|
||||
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/sidestore/pairing.py",
|
||||
emoji="<:githubicon:1417717356846776340>"
|
||||
))
|
||||
view.add_item(discord.ui.Button(
|
||||
label="Documentation",
|
||||
style=discord.ButtonStyle.primary,
|
||||
url="https://docs.sidestore.io/docs/troubleshooting/#cannot-choose-pairing-file",
|
||||
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(Pairing(bot))
|
||||
53
cogs/sidestore/refresh.py
Normal file
53
cogs/sidestore/refresh.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Refresh(commands.Cog, name="refresh"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="refresh", description="Help with refreshing or installing apps"
|
||||
)
|
||||
async def refresh(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# Can\'t Refresh or Install Apps\n\n---\n\n' +
|
||||
'1. Make sure your device is connected to a stable Wi-Fi network and not using cellular data.\n' +
|
||||
'2. Verify VPN is connected in the StosVPN app.\n' +
|
||||
'3. Turn off, then turn back on StosVPN, and wait a few seconds in Sidestore before trying to refresh.\n' +
|
||||
'4. **Create a brand new pairing file.**\n' +
|
||||
' - If none of the above worked, it is very likely that the pairing file is corrupted. You can reference the documentation on how to create a new pairing file [here](https://docs.sidestore.io/docs/troubleshooting/#cant-refresh-or-install-apps).\n' +
|
||||
' - After creating a new pairing file, go to Sidestore settings and press "Reset pairing file," then choose the new pairing file you just created.\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')
|
||||
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/sidestore/refresh.py",
|
||||
emoji="<:githubicon:1417717356846776340>"
|
||||
))
|
||||
view.add_item(discord.ui.Button(
|
||||
label="Documentation",
|
||||
style=discord.ButtonStyle.primary,
|
||||
url="https://docs.sidestore.io/docs/troubleshooting/#cant-refresh-or-install-apps",
|
||||
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(Refresh(bot))
|
||||
55
cogs/sidestore/server.py
Normal file
55
cogs/sidestore/server.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Server(commands.Cog, name="server"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="server", description="Help with anisette server issues"
|
||||
)
|
||||
async def server(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# Sidestore Freezing or Displaying an Error Code During Sign-In\n\n---\n\n' +
|
||||
'1. **Change the Anisette Server:**\n' +
|
||||
' The most common solution is to switch to a different Anisette server. Do this:\n' +
|
||||
' - Open Sidestore settings\n' +
|
||||
' - Scroll down to the "Anisette Server" option\n' +
|
||||
' - Select a different server from the list\n' +
|
||||
' - You might need to try a few servers from the list and find which works best for you\n\n' +
|
||||
'2. **Host Your Own Anisette Server:**\n' +
|
||||
' If you prefer, you can set up your own Anisette server. Detailed instructions for hosting an Anisette server are available in the official documentation and can be found [here](https://docs.sidestore.io/docs/advanced/anisette).\n\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')
|
||||
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/sidestore/server.py",
|
||||
emoji="<:githubicon:1417717356846776340>"
|
||||
))
|
||||
view.add_item(discord.ui.Button(
|
||||
label="Documentation",
|
||||
style=discord.ButtonStyle.primary,
|
||||
url="https://docs.sidestore.io/docs/troubleshooting/#sidestore-freezing-or-displaying-an-error-code-during-sign-in",
|
||||
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(Server(bot))
|
||||
105
cogs/sidestore/sidestore.py
Normal file
105
cogs/sidestore/sidestore.py
Normal file
@@ -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))
|
||||
50
cogs/sidestore/sparse.py
Normal file
50
cogs/sidestore/sparse.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import discord
|
||||
from discord import app_commands
|
||||
from discord.ext import commands
|
||||
from discord.ext.commands import Context
|
||||
import time
|
||||
|
||||
|
||||
class Sparse(commands.Cog, name="sparse"):
|
||||
def __init__(self, bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.hybrid_command(
|
||||
name="sparse", description="Information about SparseRestore exploit"
|
||||
)
|
||||
async def sparse(self, context: Context) -> None:
|
||||
embed = discord.Embed(
|
||||
color=0x8e82f9,
|
||||
description=(
|
||||
'# SparseRestore "Bypass 3 App Limit" Exploit\n\n---\n\n' +
|
||||
'The SparseRestore exploit allows you to bypass the 3-app sideloading limit. It is compatible with iOS/iPadOS versions **15.2 to 18.1 beta 4**, (not including **17.7.1** and **17.7.2**).\n\n' +
|
||||
'iOS/iPadOS versions **17.0** (not including **16.7** and **16.7.10**) are recommended to use [Trollstore](https://ios.cfw.guide/installing-trollstore/)\n\n' +
|
||||
'If you\'re on a supported version and want to sideload more than three apps, follow the detailed instructions found in our documentation'
|
||||
)
|
||||
)
|
||||
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')
|
||||
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/sidestore/sparse.py",
|
||||
emoji="<:githubicon:1417717356846776340>"
|
||||
))
|
||||
view.add_item(discord.ui.Button(
|
||||
label="Documentation",
|
||||
style=discord.ButtonStyle.primary,
|
||||
url="https://docs.sidestore.io/docs/advanced/sparserestore",
|
||||
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(Sparse(bot))
|
||||
Reference in New Issue
Block a user