feat(aurora): merged all of the changes made in the configuration rewrite into the codebase of the cog itself
This commit is contained in:
parent
3b8506cba8
commit
46a290aad3
13 changed files with 297 additions and 372 deletions
110
aurora/aurora.py
110
aurora/aurora.py
|
@ -21,16 +21,20 @@ from redbot.core.app_commands import Choice
|
|||
from redbot.core.bot import Red
|
||||
from redbot.core.utils.chat_formatting import box, error, warning
|
||||
|
||||
from .abc import CompositeMetaClass
|
||||
from .configuration.commands import Configuration
|
||||
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
|
||||
from .utilities.logger import logger
|
||||
from .utilities.utils import convert_timedelta_to_str, check_moddable, check_permissions, fetch_channel_dict, fetch_user_dict, generate_dict, log, send_evidenceformat
|
||||
from aurora.importers.aurora import ImportAuroraView
|
||||
from aurora.importers.galacticbot import ImportGalacticBotView
|
||||
from aurora.menus.addrole import Addrole
|
||||
from aurora.menus.guild import Guild
|
||||
from aurora.menus.immune import Immune
|
||||
from aurora.menus.overrides import Overrides
|
||||
from aurora.utilities.config import config, register_config
|
||||
from aurora.utilities.database import connect, create_guild_table, fetch_case, mysql_log
|
||||
from aurora.utilities.factory import case_factory, changes_factory, evidenceformat_factory, message_factory, overrides, immune, guild, addrole
|
||||
from aurora.utilities.logger import logger
|
||||
from aurora.utilities.utils import convert_timedelta_to_str, check_moddable, check_permissions, fetch_channel_dict, fetch_user_dict, generate_dict, log, send_evidenceformat
|
||||
|
||||
|
||||
class Aurora(Configuration, commands.Cog, metaclass=CompositeMetaClass): # pylint: disable=too-many-ancestors
|
||||
class Aurora(commands.Cog):
|
||||
"""Aurora is a fully-featured moderation system.
|
||||
It is heavily inspired by GalacticBot, and is designed to be a more user-friendly alternative to Red's core Mod cogs.
|
||||
This cog stores all of its data in an SQLite database."""
|
||||
|
@ -1019,12 +1023,96 @@ class Aurora(Configuration, commands.Cog, metaclass=CompositeMetaClass): # pylin
|
|||
completion_time = (time.time() - current_time) * 1000
|
||||
logger.debug("Completed expiry loop in %sms with %s users unbanned", f"{completion_time:.6f}", global_num)
|
||||
|
||||
@commands.command(aliases=["tdc"])
|
||||
async def timedeltaconvert(self, ctx: commands.Context, *, duration: str):
|
||||
########################################################################################################################
|
||||
### Configuration Commands #
|
||||
########################################################################################################################
|
||||
|
||||
@commands.group(autohelp=True, aliases=["moderation", "mod"])
|
||||
async def aurora(self, ctx: commands.Context):
|
||||
"""Settings and miscellaneous commands for Aurora."""
|
||||
|
||||
@aurora.group(autohelp=True, name="settings", aliases=["config", "options", "set"])
|
||||
async def aurora_settings(self, ctx: commands.Context):
|
||||
"""Configure Aurora's settings."""
|
||||
|
||||
@aurora_settings.command(name="overrides", aliases=["override", "user"])
|
||||
async def aurora_settings_overrides(self, ctx: commands.Context):
|
||||
"""Manage Aurora's user overriddable settings."""
|
||||
await ctx.send(embed=await overrides(ctx), view=Overrides(ctx))
|
||||
|
||||
@aurora_settings.command(name="guild", aliases=["server"])
|
||||
@commands.admin_or_permissions(manage_guild=True)
|
||||
@commands.guild_only()
|
||||
async def aurora_settings_guild(self, ctx: commands.Context):
|
||||
"""Manage Aurora's guild settings."""
|
||||
await ctx.send(embed=await guild(ctx), view=Guild(ctx))
|
||||
|
||||
@aurora_settings.command(name="addrole", aliases=["removerole"])
|
||||
@commands.admin_or_permissions(manage_guild=True)
|
||||
@commands.guild_only()
|
||||
async def aurora_settings_addrole(self, ctx: commands.Context):
|
||||
"""Manage the addrole whitelist.
|
||||
|
||||
Roles added to this list are also applied to `/removerole`."""
|
||||
await ctx.send(embed=await addrole(ctx), view=Addrole(ctx))
|
||||
|
||||
@aurora_settings.command(name="immunity")
|
||||
@commands.admin_or_permissions(manage_guild=True)
|
||||
@commands.guild_only()
|
||||
async def aurora_settings_immunity(self, ctx: commands.Context):
|
||||
"""Manage the immunity whitelist."""
|
||||
await ctx.send(embed=await immune(ctx), view=Immune(ctx))
|
||||
|
||||
@aurora.group(autohelp=True, name="import")
|
||||
@commands.admin()
|
||||
@commands.guild_only()
|
||||
async def aurora_import(self, ctx: commands.Context):
|
||||
"""Import moderation history from other bots."""
|
||||
|
||||
@aurora_import.command(name="aurora")
|
||||
@commands.admin()
|
||||
async def aurora_import_aurora(self, ctx: commands.Context):
|
||||
"""Import moderation history 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.*"
|
||||
)
|
||||
)
|
||||
await message.edit(view=ImportAuroraView(60, ctx, message))
|
||||
else:
|
||||
await ctx.send(error("Please provide a valid Aurora export file."))
|
||||
|
||||
@aurora_import.command(name="galacticbot")
|
||||
@commands.admin()
|
||||
async def aurora_import_galacticbot(self, ctx: commands.Context):
|
||||
"""Import moderation history 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.*"
|
||||
)
|
||||
)
|
||||
await message.edit(view=ImportGalacticBotView(60, ctx, message))
|
||||
else:
|
||||
await ctx.send(
|
||||
error("Please provide a valid GalacticBot moderation export file.")
|
||||
)
|
||||
|
||||
@aurora.command(aliases=["tdc", 'td', 'timedeltaconvert'])
|
||||
async def timedelta(self, ctx: commands.Context, *, duration: str):
|
||||
"""This command converts a duration to a [`timedelta`](https://docs.python.org/3/library/datetime.html#datetime.timedelta) Python object.
|
||||
|
||||
**Example usage**
|
||||
`[p]timedeltaconvert 1 day 15hr 82 minutes 52s`
|
||||
`[p]timedelta 1 day 15hr 82 minutes 52s`
|
||||
**Output**
|
||||
`1 day, 16:22:52`"""
|
||||
try:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue