@@ -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 ()
0 commit comments