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.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()

View file

@ -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()

View file

@ -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.*"))

View file

@ -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

View file

@ -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."""