Aurora Configuration Rewrite #15
5 changed files with 39 additions and 20 deletions
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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.*"))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -6,7 +6,6 @@ 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}"
|
||||
|
||||
def get_pagesize_str(value: Union[int, None]) -> str:
|
||||
|
|
Loading…
Reference in a new issue