Aurora Configuration Rewrite #15

Merged
cswimr merged 73 commits from aurora-config-rewrite into main 2024-01-16 12:19:08 -05:00
5 changed files with 39 additions and 20 deletions
Showing only changes of commit 166f5bc1ea - Show all commits

View file

@ -1,4 +1,4 @@
from abc import ABC from abc import ABC, abstractmethod
from redbot.core import commands from redbot.core import commands
from redbot.core.bot import Red from redbot.core.bot import Red
@ -12,9 +12,6 @@ class CompositeMetaClass(type(commands.Cog), type(ABC)):
coexist with discord.py's metaclass coexist with discord.py's metaclass
""" """
pass
class Mixin(ABC): class Mixin(ABC):
""" """
Base class for well behaved type hint detection with composite class. Base class for well behaved type hint detection with composite class.
@ -26,3 +23,27 @@ class Mixin(ABC):
super().__init__() super().__init__()
self.config: Config self.config: Config
self.bot: Red 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()

View file

@ -16,14 +16,12 @@ import discord
import humanize import humanize
from discord.ext import tasks from discord.ext import tasks
from pytimeparse2 import disable_dateutil, parse 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.app_commands import Choice
from redbot.core.utils.chat_formatting import box, error, warning from redbot.core.utils.chat_formatting import box, error, warning
from .abc import CompositeMetaClass from .abc import CompositeMetaClass
from .configuration.commands import Configuration from .configuration.commands import Configuration
from .importers.galacticbot import ImportGalacticBotView
from .importers.aurora import ImportAuroraView
from .utilities.config import config, register_config from .utilities.config import config, register_config
from .utilities.database import connect, create_guild_table, fetch_case, mysql_log from .utilities.database import connect, create_guild_table, fetch_case, mysql_log
from .utilities.factory import case_factory, changes_factory, evidenceformat_factory, message_factory 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) logger.warning("Invalid requester passed to red_delete_data_for_user: %s", requester)
def __init__(self, bot): def __init__(self, bot):
super().__init__()
self.bot = bot self.bot = bot
register_config(config) register_config(config)
disable_dateutil() disable_dateutil()

View file

@ -26,7 +26,7 @@ class Configuration(Mixin):
@aurora_import.command(name="aurora") @aurora_import.command(name="aurora")
@commands.admin() @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.""" """Import moderations from another bot using Aurora."""
if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8': 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.*")) 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") @aurora_import.command(name="galacticbot")
@commands.admin() @commands.admin()
async def auroraset_import_galacticbot(self, ctx: commands.Context): async def aurora_import_galacticbot(self, ctx: commands.Context):
"""Import moderations from GalacticBot.""" """Import moderations from GalacticBot."""
if ctx.message.attachments and ctx.message.attachments[0].content_type == 'application/json; charset=utf-8': 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.*")) 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.*"))

View file

@ -9,13 +9,13 @@ from ..utilities.config import config
async def _core(ctx: commands.Context) -> Embed: async def _core(ctx: commands.Context) -> Embed:
"""Generates the core embed for configuration menus to use.""" """Generates the core embed for configuration menus to use."""
embed = Embed( e = Embed(
title="Aurora Configuration Menu", title="Aurora Configuration Menu",
description="Use the buttons below to configure Aurora.", description="Use the buttons below to configure Aurora.",
color=await ctx.embed_color() color=await ctx.embed_color()
) )
embed.set_thumbnail(url=ctx.bot.user.display_avatar.url) e.set_thumbnail(url=ctx.bot.user.display_avatar.url)
return embed return e
async def _overrides(user: Union[Member, User]) -> str: async def _overrides(user: Union[Member, User]) -> str:
"""Generates a configuration menu field value for a user's overrides.""" """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: async def embed(ctx: commands.Context) -> Embed:
"""Generates the configuration embed for a guild.""" """Generates the configuration embed for a guild."""
embed = await _core(ctx) e = await _core(ctx)
embed.add_field(name="User Overrides", value=await _overrides(ctx.author), inline=False) 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): 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) e.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) e.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) e.add_field(name="Immune Roles", value=await _immune(ctx.guild), inline=False)
return embed return e

View file

@ -6,7 +6,6 @@ def get_bool_emoji(value: bool) -> str:
return "\N{WHITE HEAVY CHECK MARK}" return "\N{WHITE HEAVY CHECK MARK}"
if value is False: if value is False:
return "\N{NO ENTRY SIGN}" 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: def get_pagesize_str(value: Union[int, None]) -> str: