diff --git a/aurora/abc.py b/aurora/abc.py index 42c9fdf..89857bb 100644 --- a/aurora/abc.py +++ b/aurora/abc.py @@ -1,4 +1,4 @@ -from abc import ABC +from abc import ABC, abstractmethod from redbot.core import commands from redbot.core.bot import Red @@ -12,9 +12,6 @@ class CompositeMetaClass(type(commands.Cog), type(ABC)): coexist with discord.py's metaclass """ - pass - - class Mixin(ABC): """ Base class for well behaved type hint detection with composite class. @@ -26,3 +23,27 @@ class Mixin(ABC): super().__init__() self.config: Config self.bot: Red + + ####################################################################### + # configuration/commands.py # + ####################################################################### + + @abstractmethod + async def aurora(self, ctx: commands.Context) -> None: + raise NotImplementedError() + + @abstractmethod + async def aurora_config(self, ctx: commands.Context) -> None: + raise NotImplementedError() + + @abstractmethod + async def aurora_import(self, ctx: commands.Context) -> None: + raise NotImplementedError() + + @abstractmethod + async def aurora_import_aurora(self, ctx: commands.Context) -> None: + raise NotImplementedError() + + @abstractmethod + async def aurora_import_galacticbot(self, ctx: commands.Context) -> None: + raise NotImplementedError() diff --git a/aurora/aurora.py b/aurora/aurora.py index 089b28f..1bd001c 100644 --- a/aurora/aurora.py +++ b/aurora/aurora.py @@ -16,14 +16,12 @@ import discord import humanize from discord.ext import tasks from pytimeparse2 import disable_dateutil, parse -from redbot.core import app_commands, checks, commands, data_manager +from redbot.core import app_commands, commands, data_manager from redbot.core.app_commands import Choice from redbot.core.utils.chat_formatting import box, error, warning from .abc import CompositeMetaClass from .configuration.commands import Configuration -from .importers.galacticbot import ImportGalacticBotView -from .importers.aurora import ImportAuroraView from .utilities.config import config, register_config from .utilities.database import connect, create_guild_table, fetch_case, mysql_log from .utilities.factory import case_factory, changes_factory, evidenceformat_factory, message_factory @@ -68,6 +66,7 @@ class Aurora(Configuration, commands.Cog, metaclass=CompositeMetaClass): logger.warning("Invalid requester passed to red_delete_data_for_user: %s", requester) def __init__(self, bot): + super().__init__() self.bot = bot register_config(config) disable_dateutil() diff --git a/aurora/configuration/commands.py b/aurora/configuration/commands.py index 17d0786..63f8dd1 100644 --- a/aurora/configuration/commands.py +++ b/aurora/configuration/commands.py @@ -26,7 +26,7 @@ class Configuration(Mixin): @aurora_import.command(name="aurora") @commands.admin() - async def auroraset_import_aurora(self, ctx: commands.Context): + async def aurora_import_aurora(self, ctx: commands.Context): """Import moderations from another bot using Aurora.""" if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8': message = await ctx.send(warning("Are you sure you want to import moderations from another bot?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*")) @@ -36,7 +36,7 @@ class Configuration(Mixin): @aurora_import.command(name="galacticbot") @commands.admin() - async def auroraset_import_galacticbot(self, ctx: commands.Context): + async def aurora_import_galacticbot(self, ctx: commands.Context): """Import moderations from GalacticBot.""" if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8': message = await ctx.send(warning("Are you sure you want to import GalacticBot moderations?\n**This will overwrite any moderations that already exist in this guild's moderation table.**\n*The import process will block the rest of your bot until it is complete.*")) diff --git a/aurora/configuration/embed.py b/aurora/configuration/embed.py index a4cd1c4..86ebb91 100644 --- a/aurora/configuration/embed.py +++ b/aurora/configuration/embed.py @@ -9,13 +9,13 @@ from ..utilities.config import config async def _core(ctx: commands.Context) -> Embed: """Generates the core embed for configuration menus to use.""" - embed = Embed( + e = Embed( title="Aurora Configuration Menu", description="Use the buttons below to configure Aurora.", color=await ctx.embed_color() ) - embed.set_thumbnail(url=ctx.bot.user.display_avatar.url) - return embed + e.set_thumbnail(url=ctx.bot.user.display_avatar.url) + return e async def _overrides(user: Union[Member, User]) -> str: """Generates a configuration menu field value for a user's overrides.""" @@ -102,10 +102,10 @@ async def _immune(guild: Guild) -> str: async def embed(ctx: commands.Context) -> Embed: """Generates the configuration embed for a guild.""" - embed = await _core(ctx) - embed.add_field(name="User Overrides", value=await _overrides(ctx.author), inline=False) + e = await _core(ctx) + e.add_field(name="User Overrides", value=await _overrides(ctx.author), inline=False) if ctx.guild is not None and (ctx.author.guild_permissions.administrator or ctx.author.guild_permissions.manage_guild): - embed.add_field(name="Guild Settings", value=await _guild(ctx.guild), inline=False) - embed.add_field(name="Blacklist Roles", value=await _blacklist(ctx.guild), inline=False) - embed.add_field(name="Immune Roles", value=await _immune(ctx.guild), inline=False) - return embed + e.add_field(name="Guild Settings", value=await _guild(ctx.guild), inline=False) + e.add_field(name="Blacklist Roles", value=await _blacklist(ctx.guild), inline=False) + e.add_field(name="Immune Roles", value=await _immune(ctx.guild), inline=False) + return e diff --git a/aurora/configuration/utils.py b/aurora/configuration/utils.py index 91376e1..ea3c5e0 100644 --- a/aurora/configuration/utils.py +++ b/aurora/configuration/utils.py @@ -6,8 +6,7 @@ def get_bool_emoji(value: bool) -> str: return "\N{WHITE HEAVY CHECK MARK}" if value is False: return "\N{NO ENTRY SIGN}" - if value is None: - return "\N{BLACK QUESTION MARK ORNAMENT}\N{VARIATION SELECTOR-16}" + return "\N{BLACK QUESTION MARK ORNAMENT}\N{VARIATION SELECTOR-16}" def get_pagesize_str(value: Union[int, None]) -> str: """Returns a string based on a pagesize value."""