Backup #16

Merged
cswimr merged 41 commits from backup into main 2024-01-31 15:58:08 -05:00
2 changed files with 4 additions and 11 deletions
Showing only changes of commit c07c7317f4 - Show all commits

View file

@ -22,4 +22,4 @@ Exports a JSON list of all of your added repositories, and their installed cogs.
- Usage: `[p]backup import [json]` - Usage: `[p]backup import [json]`
Imports, reinstalls, and reloads cogs from a valid export. Requires either the json export to be provided in the command's message content or to be attached to the command's message. Ignores itself and PyLav cogs. Imports, reinstalls, and reloads cogs from a valid export. Requires the JSON export to be attached to the invoking message as an attachment. Ignores itself and PyLav cogs.

View file

@ -59,12 +59,12 @@ class Backup(commands.Cog):
@backup.command(name='import') @backup.command(name='import')
@commands.is_owner() @commands.is_owner()
async def backup_import(self, ctx: commands.Context, *, export: str = None): async def backup_import(self, ctx: commands.Context):
"""Import your installed repositories and cogs from an export.""" """Import your installed repositories and cogs from an export file."""
if export is None and not len(ctx.message.attachments) == 0: if export is None and not len(ctx.message.attachments) == 0:
export = await ctx.message.attachments[0].read() export = await ctx.message.attachments[0].read()
try: try:
export = json.loads(self.extract_json_from_codeblock(export)) export = json.loads(export)
except json.JSONDecodeError: except json.JSONDecodeError:
await ctx.send(error("Please provide a valid JSON export.")) await ctx.send(error("Please provide a valid JSON export."))
return return
@ -73,10 +73,3 @@ class Backup(commands.Cog):
if downloader is None: if downloader is None:
await ctx.send(error(f"You do not have the `Downloader` cog loaded. Please run `{ctx.prefix}load downloader` and try again.")) await ctx.send(error(f"You do not have the `Downloader` cog loaded. Please run `{ctx.prefix}load downloader` and try again."))
return return
def extract_json_from_codeblock(self, text):
match = re.match(r"```(?:\w+)?\n(.*?)\n```", text, re.DOTALL)
if match:
return match.group(1).strip()
else:
return text