WIP: Moderation type registry #26
2 changed files with 46 additions and 9 deletions
|
@ -20,8 +20,7 @@ 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.bot import Red
|
from redbot.core.bot import Red
|
||||||
from redbot.core.commands.converter import parse_relativedelta, parse_timedelta
|
from redbot.core.commands.converter import parse_relativedelta, parse_timedelta
|
||||||
from redbot.core.utils.chat_formatting import (box, error, humanize_list,
|
from redbot.core.utils.chat_formatting import box, error, humanize_list, humanize_timedelta, warning
|
||||||
humanize_timedelta, warning)
|
|
||||||
|
|
||||||
from .importers.aurora import ImportAuroraView
|
from .importers.aurora import ImportAuroraView
|
||||||
from .importers.galacticbot import ImportGalacticBotView
|
from .importers.galacticbot import ImportGalacticBotView
|
||||||
|
@ -33,14 +32,10 @@ from .models.change import Change
|
||||||
from .models.moderation import Moderation
|
from .models.moderation import Moderation
|
||||||
from .utilities.config import config, register_config
|
from .utilities.config import config, register_config
|
||||||
from .utilities.database import connect, create_guild_table
|
from .utilities.database import connect, create_guild_table
|
||||||
from .utilities.factory import (addrole_embed, case_factory, changes_factory,
|
from .utilities.factory import addrole_embed, case_factory, changes_factory, evidenceformat_factory, guild_embed, immune_embed, message_factory, overrides_embed
|
||||||
evidenceformat_factory, guild_embed,
|
|
||||||
immune_embed, message_factory, overrides_embed)
|
|
||||||
from .utilities.json import dump
|
from .utilities.json import dump
|
||||||
from .utilities.logger import logger
|
from .utilities.logger import logger
|
||||||
from .utilities.utils import (check_moddable, check_permissions,
|
from .utilities.utils import check_moddable, check_permissions, get_footer_image, log, send_evidenceformat, timedelta_from_relativedelta
|
||||||
get_footer_image, log, send_evidenceformat,
|
|
||||||
timedelta_from_relativedelta)
|
|
||||||
|
|
||||||
|
|
||||||
class Aurora(commands.Cog):
|
class Aurora(commands.Cog):
|
||||||
|
@ -970,6 +965,48 @@ class Aurora(commands.Cog):
|
||||||
await log(interaction, moderation.id)
|
await log(interaction, moderation.id)
|
||||||
await send_evidenceformat(interaction, moderation.id)
|
await send_evidenceformat(interaction, moderation.id)
|
||||||
|
|
||||||
|
@app_commands.command(name="slowmode")
|
||||||
|
async def slowmode(
|
||||||
|
self,
|
||||||
|
interaction: discord.Interaction,
|
||||||
|
interval: int,
|
||||||
|
channel: discord.TextChannel | None = None,
|
||||||
|
reason: str | None = None,
|
||||||
|
):
|
||||||
|
"""Set the slowmode of a channel.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
-----------
|
||||||
|
interval: int
|
||||||
|
The slowmode interval in seconds
|
||||||
|
channel: discord.TextChannel
|
||||||
|
The channel to set the slowmode in
|
||||||
|
reason: str
|
||||||
|
Why are you setting the slowmode?"""
|
||||||
|
if channel is None:
|
||||||
|
channel = interaction.channel
|
||||||
|
|
||||||
|
if not await check_moddable(channel, interaction, ["manage_channels"]):
|
||||||
|
return
|
||||||
|
|
||||||
|
await channel.edit(slowmode_delay=interval)
|
||||||
|
await interaction.response.send_message(f"Slowmode in {channel.mention} has been set to {interval} seconds!\n**Reason** - `{reason}`")
|
||||||
|
|
||||||
|
moderation = Moderation.log(
|
||||||
|
interaction.client,
|
||||||
|
interaction.guild.id,
|
||||||
|
interaction.user.id,
|
||||||
|
"SLOWMODE",
|
||||||
|
"CHANNEL",
|
||||||
|
channel.id,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
reason,
|
||||||
|
)
|
||||||
|
await interaction.edit_original_response(content=f"Slowmode in {channel.mention} has been set to {interval} seconds! (Case `#{moderation.id:,}`)\n**Reason** - `{reason}`")
|
||||||
|
await log(interaction, moderation.id)
|
||||||
|
await send_evidenceformat(interaction, moderation.id)
|
||||||
|
|
||||||
@app_commands.command(name="history")
|
@app_commands.command(name="history")
|
||||||
async def history(
|
async def history(
|
||||||
self,
|
self,
|
||||||
|
|
|
@ -222,7 +222,7 @@ class Moderation(AuroraGuildModel):
|
||||||
moderation_type: str,
|
moderation_type: str,
|
||||||
target_type: str,
|
target_type: str,
|
||||||
target_id: int,
|
target_id: int,
|
||||||
role_id: int,
|
role_id: int | None = None,
|
||||||
duration: timedelta | None = None,
|
duration: timedelta | None = None,
|
||||||
reason: str | None = None,
|
reason: str | None = None,
|
||||||
database: sqlite3.Connection | None = None,
|
database: sqlite3.Connection | None = None,
|
||||||
|
|
Loading…
Reference in a new issue