Skip to content

Commit c26af97

Browse files
authored
Feat: Renaming of snippets and aliases (#3383)
This adds two commands for renaming snippets and aliases for easier name editing.
1 parent 665e67e commit c26af97

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

cogs/modmail.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,61 @@ async def snippet_edit(self, ctx, name: str.lower, *, value):
480480
embed = create_not_found_embed(name, self.bot.snippets.keys(), "Snippet")
481481
await ctx.send(embed=embed)
482482

483+
@snippet.command(name="rename")
484+
@checks.has_permissions(PermissionLevel.SUPPORTER)
485+
async def snippet_rename(self, ctx, name: str.lower, *, value):
486+
"""
487+
Rename a snippet.
488+
489+
To rename a multi-word snippet name, use quotes: ```
490+
{prefix}snippet rename "two word" this is a new two word snippet.
491+
```
492+
"""
493+
if name in self.bot.snippets:
494+
if self.bot.get_command(value):
495+
embed = discord.Embed(
496+
title="Error",
497+
color=self.bot.error_color,
498+
description=f"A command with the same name already exists: `{value}`.",
499+
)
500+
return await ctx.send(embed=embed)
501+
elif value in self.bot.snippets:
502+
embed = discord.Embed(
503+
title="Error",
504+
color=self.bot.error_color,
505+
description=f"Snippet `{value}` already exists.",
506+
)
507+
return await ctx.send(embed=embed)
508+
509+
if value in self.bot.aliases:
510+
embed = discord.Embed(
511+
title="Error",
512+
color=self.bot.error_color,
513+
description=f"An alias that shares the same name exists: `{value}`.",
514+
)
515+
return await ctx.send(embed=embed)
516+
517+
if len(value) > 120:
518+
embed = discord.Embed(
519+
title="Error",
520+
color=self.bot.error_color,
521+
description="Snippet names cannot be longer than 120 characters.",
522+
)
523+
return await ctx.send(embed=embed)
524+
old_snippet_value = self.bot.snippets[name]
525+
self.bot.snippets.pop(name)
526+
self.bot.snippets[value] = old_snippet_value
527+
await self.bot.config.update()
528+
529+
embed = discord.Embed(
530+
title="Renamed snippet",
531+
color=self.bot.main_color,
532+
description=f'`{name}` has been renamed to "{value}".',
533+
)
534+
else:
535+
embed = create_not_found_embed(name, self.bot.snippets.keys(), "Snippet")
536+
await ctx.send(embed=embed)
537+
483538
@commands.command(usage="<category> [options]")
484539
@checks.has_permissions(PermissionLevel.MODERATOR)
485540
@checks.thread_only()

cogs/utility.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,58 @@ async def alias_edit(self, ctx, name: str.lower, *, value):
12751275
embed = await self.make_alias(name, value, "Edited")
12761276
return await ctx.send(embed=embed)
12771277

1278+
@alias.command(name="rename")
1279+
@checks.has_permissions(PermissionLevel.MODERATOR)
1280+
async def alias_rename(self, ctx, name: str.lower, *, value):
1281+
"""
1282+
Rename an alias.
1283+
"""
1284+
if name not in self.bot.aliases:
1285+
embed = utils.create_not_found_embed(name, self.bot.aliases.keys(), "Alias")
1286+
return await ctx.send(embed=embed)
1287+
1288+
embed = None
1289+
if self.bot.get_command(value):
1290+
embed = discord.Embed(
1291+
title="Error",
1292+
color=self.bot.error_color,
1293+
description=f"A command with the same name already exists: `{value}`.",
1294+
)
1295+
1296+
elif value in self.bot.aliases:
1297+
embed = discord.Embed(
1298+
title="Error",
1299+
color=self.bot.error_color,
1300+
description=f"Another alias with the same name already exists: `{value}`.",
1301+
)
1302+
1303+
elif value in self.bot.snippets:
1304+
embed = discord.Embed(
1305+
title="Error",
1306+
color=self.bot.error_color,
1307+
description=f"A snippet with the same name already exists: `{value}`.",
1308+
)
1309+
1310+
elif len(value) > 120:
1311+
embed = discord.Embed(
1312+
title="Error",
1313+
color=self.bot.error_color,
1314+
description="Alias names cannot be longer than 120 characters.",
1315+
)
1316+
1317+
if embed is None:
1318+
old_alias_value = self.bot.aliases[name]
1319+
self.bot.aliases.pop(name)
1320+
self.bot.aliases[value] = old_alias_value
1321+
await self.bot.config.update()
1322+
1323+
embed = discord.Embed(
1324+
title="Alias renamed",
1325+
color=self.bot.main_color,
1326+
description=f'`{name}` has been renamed to "{value}".',
1327+
)
1328+
return await ctx.send(embed=embed)
1329+
12781330
@commands.group(aliases=["perms"], invoke_without_command=True)
12791331
@checks.has_permissions(PermissionLevel.OWNER)
12801332
async def permissions(self, ctx):

0 commit comments

Comments
 (0)