[Core] Add bot.set_prefixes() (#3890)

* Add bot.set_prefixes; change set serverprefix and set prefix to new method

* Address requested changes

* Apply suggestions from code review

* One more

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
Neuro Assassin 2020-05-30 18:57:49 -04:00 committed by GitHub
parent f1ba57b78b
commit 7a86cc4bf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 4 deletions

View File

@ -454,6 +454,28 @@ class RedBase(
""" """
return await self.get_prefix(NotMessage(guild)) return await self.get_prefix(NotMessage(guild))
async def set_prefixes(self, prefixes: List[str], guild: Optional[discord.Guild] = None):
"""
Set global/server prefixes.
If ``guild`` is not provided (or None is passed), this will set the global prefixes.
Parameters
----------
prefixes : List[str]
The prefixes you want to set. Passing empty list will reset prefixes for the ``guild``
guild : Optional[discord.Guild]
The guild you want to set the prefixes for. Omit (or pass None) to set the global prefixes
Raises
------
TypeError
If ``prefixes`` is not a list of strings
ValueError
If empty list is passed to ``prefixes`` when setting global prefixes
"""
await self._prefix_cache.set_prefixes(guild=guild, prefixes=prefixes)
async def get_embed_color(self, location: discord.abc.Messageable) -> discord.Color: async def get_embed_color(self, location: discord.abc.Messageable) -> discord.Color:
""" """
Get the embed color for a location. This takes into account all related settings. Get the embed color for a location. This takes into account all related settings.

View File

@ -261,7 +261,7 @@ class CoreLogic:
The current (or new) list of prefixes. The current (or new) list of prefixes.
""" """
if prefixes: if prefixes:
await self.bot._prefix_cache.set_prefixes(guild=None, prefixes=prefixes) await self.bot.set_prefixes(guild=None, prefixes=prefixes)
return prefixes return prefixes
return await self.bot._prefix_cache.get_prefixes(guild=None) return await self.bot._prefix_cache.get_prefixes(guild=None)
@ -1284,7 +1284,7 @@ class Core(commands.Cog, CoreLogic):
if not prefixes: if not prefixes:
await ctx.send_help() await ctx.send_help()
return return
await self._prefixes(prefixes) await ctx.bot.set_prefixes(guild=None, prefixes=prefixes)
await ctx.send(_("Prefix set.")) await ctx.send(_("Prefix set."))
@_set.command(aliases=["serverprefixes"]) @_set.command(aliases=["serverprefixes"])
@ -1293,11 +1293,11 @@ class Core(commands.Cog, CoreLogic):
async def serverprefix(self, ctx: commands.Context, *prefixes: str): async def serverprefix(self, ctx: commands.Context, *prefixes: str):
"""Sets [botname]'s server prefix(es)""" """Sets [botname]'s server prefix(es)"""
if not prefixes: if not prefixes:
await ctx.bot._prefix_cache.set_prefixes(guild=ctx.guild, prefixes=[]) await ctx.bot.set_prefixes(guild=ctx.guild, prefixes=[])
await ctx.send(_("Guild prefixes have been reset.")) await ctx.send(_("Guild prefixes have been reset."))
return return
prefixes = sorted(prefixes, reverse=True) prefixes = sorted(prefixes, reverse=True)
await ctx.bot._prefix_cache.set_prefixes(guild=ctx.guild, prefixes=prefixes) await ctx.bot.set_prefixes(guild=ctx.guild, prefixes=prefixes)
await ctx.send(_("Prefix set.")) await ctx.send(_("Prefix set."))
@_set.command() @_set.command()