diff options
-rw-r--r-- | bot/__main__.py | 2 | ||||
-rw-r--r-- | bot/cogs/antispam.py | 2 | ||||
-rw-r--r-- | bot/cogs/clean.py | 2 | ||||
-rw-r--r-- | bot/cogs/defcon.py | 2 | ||||
-rw-r--r-- | bot/cogs/filtering.py | 2 | ||||
-rw-r--r-- | bot/cogs/moderation/__init__.py | 21 | ||||
-rw-r--r-- | bot/cogs/moderation/infractions.py (renamed from bot/cogs/moderation.py) | 12 | ||||
-rw-r--r-- | bot/cogs/moderation/management.py (renamed from bot/cogs/infractions.py) | 19 | ||||
-rw-r--r-- | bot/cogs/moderation/modlog.py (renamed from bot/cogs/modlog.py) | 0 | ||||
-rw-r--r-- | bot/cogs/moderation/utils.py (renamed from bot/utils/moderation.py) | 0 | ||||
-rw-r--r-- | bot/cogs/superstarify/__init__.py | 15 | ||||
-rw-r--r-- | bot/cogs/token_remover.py | 2 | ||||
-rw-r--r-- | bot/cogs/verification.py | 2 | ||||
-rw-r--r-- | bot/cogs/watchchannels/bigbrother.py | 2 | ||||
-rw-r--r-- | bot/cogs/watchchannels/watchchannel.py | 2 |
15 files changed, 51 insertions, 34 deletions
diff --git a/bot/__main__.py b/bot/__main__.py index 019550a89..7d8cf6d6d 100644 --- a/bot/__main__.py +++ b/bot/__main__.py @@ -36,7 +36,6 @@ log.addHandler(APILoggingHandler(bot.api_client)) bot.load_extension("bot.cogs.error_handler") bot.load_extension("bot.cogs.filtering") bot.load_extension("bot.cogs.logging") -bot.load_extension("bot.cogs.modlog") bot.load_extension("bot.cogs.security") # Commands, etc @@ -57,7 +56,6 @@ bot.load_extension("bot.cogs.defcon") bot.load_extension("bot.cogs.eval") bot.load_extension("bot.cogs.free") bot.load_extension("bot.cogs.information") -bot.load_extension("bot.cogs.infractions") bot.load_extension("bot.cogs.jams") bot.load_extension("bot.cogs.moderation") bot.load_extension("bot.cogs.off_topic_names") diff --git a/bot/cogs/antispam.py b/bot/cogs/antispam.py index 8dfa0ad05..cd1940aaa 100644 --- a/bot/cogs/antispam.py +++ b/bot/cogs/antispam.py @@ -10,7 +10,7 @@ from discord import Colour, Member, Message, NotFound, Object, TextChannel from discord.ext.commands import Bot, Cog from bot import rules -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import ( AntiSpam as AntiSpamConfig, Channels, Colours, DEBUG_MODE, Event, Filter, diff --git a/bot/cogs/clean.py b/bot/cogs/clean.py index 1c0c9a7a8..dca411d01 100644 --- a/bot/cogs/clean.py +++ b/bot/cogs/clean.py @@ -6,7 +6,7 @@ from typing import Optional from discord import Colour, Embed, Message, User from discord.ext.commands import Bot, Cog, Context, group -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import ( Channels, CleanMessages, Colours, Event, Icons, MODERATION_ROLES, NEGATIVE_REPLIES diff --git a/bot/cogs/defcon.py b/bot/cogs/defcon.py index 048d8a683..ae0332688 100644 --- a/bot/cogs/defcon.py +++ b/bot/cogs/defcon.py @@ -4,7 +4,7 @@ from datetime import datetime, timedelta from discord import Colour, Embed, Member from discord.ext.commands import Bot, Cog, Context, group -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import Channels, Colours, Emojis, Event, Icons, Roles from bot.decorators import with_role diff --git a/bot/cogs/filtering.py b/bot/cogs/filtering.py index bd8c6ed67..265ae5160 100644 --- a/bot/cogs/filtering.py +++ b/bot/cogs/filtering.py @@ -7,7 +7,7 @@ from dateutil.relativedelta import relativedelta from discord import Colour, DMChannel, Member, Message, TextChannel from discord.ext.commands import Bot, Cog -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import ( Channels, Colours, DEBUG_MODE, Filter, Icons, URLs diff --git a/bot/cogs/moderation/__init__.py b/bot/cogs/moderation/__init__.py new file mode 100644 index 000000000..bf0a14c29 --- /dev/null +++ b/bot/cogs/moderation/__init__.py @@ -0,0 +1,21 @@ +import logging + +from discord.ext.commands import Bot + +from .infractions import Infractions +from .management import ModManagement +from .modlog import ModLog + +log = logging.getLogger(__name__) + + +def setup(bot: Bot) -> None: + """Load the moderation extension with the Infractions, ModManagement, and ModLog cogs.""" + bot.add_cog(Infractions(bot)) + log.info("Cog loaded: Infractions") + + bot.add_cog(ModLog(bot)) + log.info("Cog loaded: ModLog") + + bot.add_cog(ModManagement(bot)) + log.info("Cog loaded: ModManagement") diff --git a/bot/cogs/moderation.py b/bot/cogs/moderation/infractions.py index 15eee397d..d36f147f7 100644 --- a/bot/cogs/moderation.py +++ b/bot/cogs/moderation/infractions.py @@ -9,14 +9,14 @@ from discord import ( from discord.ext.commands import BadUnionArgument, Bot, Cog, Context, command from bot import constants -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog +from bot.cogs.moderation.utils import ( + Infraction, MemberObject, already_has_active_infraction, post_infraction, proxy_user +) from bot.constants import Colours, Event, Icons from bot.converters import Duration from bot.decorators import respect_role_hierarchy from bot.utils.checks import with_role_check -from bot.utils.moderation import ( - Infraction, MemberObject, already_has_active_infraction, post_infraction, proxy_user -) from bot.utils.scheduling import Scheduler from bot.utils.time import format_infraction, wait_until @@ -36,7 +36,7 @@ APPEALABLE_INFRACTIONS = ("ban", "mute") MemberConverter = Union[Member, User, proxy_user] -class Moderation(Scheduler, Cog): +class Infractions(Scheduler, Cog): """Server moderation tools.""" def __init__(self, bot: Bot): @@ -558,5 +558,5 @@ class Moderation(Scheduler, Cog): def setup(bot: Bot) -> None: """Moderation cog load.""" - bot.add_cog(Moderation(bot)) + bot.add_cog(Infractions(bot)) log.info("Cog loaded: Moderation") diff --git a/bot/cogs/infractions.py b/bot/cogs/moderation/management.py index 709a42b6c..6bacab8ca 100644 --- a/bot/cogs/infractions.py +++ b/bot/cogs/moderation/management.py @@ -8,13 +8,12 @@ from discord.ext import commands from discord.ext.commands import Context from bot import constants -from bot.cogs.moderation import Moderation -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import Infractions, ModLog +from bot.cogs.moderation.utils import Infraction, proxy_user from bot.converters import Duration, InfractionSearchQuery from bot.pagination import LinePaginator from bot.utils import time from bot.utils.checks import with_role_check -from bot.utils.moderation import Infraction, proxy_user log = logging.getLogger(__name__) @@ -30,7 +29,7 @@ def permanent_duration(expires_at: str) -> str: return expires_at -class Infractions(commands.Cog): +class ModManagement(commands.Cog): """Management of infractions.""" def __init__(self, bot: commands.Bot): @@ -42,9 +41,9 @@ class Infractions(commands.Cog): return self.bot.get_cog("ModLog") @property - def mod_cog(self) -> Moderation: - """Get currently loaded Moderation cog instance.""" - return self.bot.get_cog("Moderation") + def infractions_cog(self) -> Infractions: + """Get currently loaded Infractions cog instance.""" + return self.bot.get_cog("Infractions") # region: Edit infraction commands @@ -109,9 +108,9 @@ class Infractions(commands.Cog): # Re-schedule infraction if the expiration has been updated if 'expires_at' in request_data: - self.mod_cog.cancel_task(new_infraction['id']) + self.infractions_cog.cancel_task(new_infraction['id']) loop = asyncio.get_event_loop() - self.mod_cog.schedule_task(loop, new_infraction['id'], new_infraction) + self.infractions_cog.schedule_task(loop, new_infraction['id'], new_infraction) log_text += f""" Previous expiry: {old_infraction['expires_at'] or "Permanent"} @@ -260,5 +259,5 @@ class Infractions(commands.Cog): def setup(bot: commands.Bot) -> None: """Load the Infractions cog.""" - bot.add_cog(Infractions(bot)) + bot.add_cog(ModManagement(bot)) log.info("Cog loaded: Infractions") diff --git a/bot/cogs/modlog.py b/bot/cogs/moderation/modlog.py index 50cb55e33..50cb55e33 100644 --- a/bot/cogs/modlog.py +++ b/bot/cogs/moderation/modlog.py diff --git a/bot/utils/moderation.py b/bot/cogs/moderation/utils.py index 48ebe422c..48ebe422c 100644 --- a/bot/utils/moderation.py +++ b/bot/cogs/moderation/utils.py diff --git a/bot/cogs/superstarify/__init__.py b/bot/cogs/superstarify/__init__.py index 87021eded..576de2d31 100644 --- a/bot/cogs/superstarify/__init__.py +++ b/bot/cogs/superstarify/__init__.py @@ -5,13 +5,12 @@ from discord import Colour, Embed, Member from discord.errors import Forbidden from discord.ext.commands import Bot, Cog, Context, command -from bot.cogs.moderation import Moderation -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import Infractions, ModLog +from bot.cogs.moderation.utils import post_infraction from bot.cogs.superstarify.stars import get_nick from bot.constants import Icons, MODERATION_ROLES, POSITIVE_REPLIES from bot.converters import Duration from bot.decorators import with_role -from bot.utils.moderation import post_infraction from bot.utils.time import format_infraction log = logging.getLogger(__name__) @@ -25,9 +24,9 @@ class Superstarify(Cog): self.bot = bot @property - def moderation(self) -> Moderation: - """Get currently loaded Moderation cog instance.""" - return self.bot.get_cog("Moderation") + def infractions_cog(self) -> Infractions: + """Get currently loaded Infractions cog instance.""" + return self.bot.get_cog("Infractions") @property def modlog(self) -> ModLog: @@ -206,7 +205,7 @@ class Superstarify(Cog): thumbnail=member.avatar_url_as(static_format="png") ) - await self.moderation.notify_infraction( + await self.infractions_cog.notify_infraction( user=member, infr_type="Superstarify", expires_at=expiration, @@ -249,7 +248,7 @@ class Superstarify(Cog): embed.description = "User has been released from superstar-prison." embed.title = random.choice(POSITIVE_REPLIES) - await self.moderation.notify_pardon( + await self.infractions_cog.notify_pardon( user=member, title="You are no longer superstarified.", content="You may now change your nickname on the server." diff --git a/bot/cogs/token_remover.py b/bot/cogs/token_remover.py index 7dd0afbbd..4a655d049 100644 --- a/bot/cogs/token_remover.py +++ b/bot/cogs/token_remover.py @@ -9,7 +9,7 @@ from discord import Colour, Message from discord.ext.commands import Bot, Cog from discord.utils import snowflake_time -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import Channels, Colours, Event, Icons log = logging.getLogger(__name__) diff --git a/bot/cogs/verification.py b/bot/cogs/verification.py index f0a099f27..acd7a7865 100644 --- a/bot/cogs/verification.py +++ b/bot/cogs/verification.py @@ -3,7 +3,7 @@ import logging from discord import Message, NotFound, Object from discord.ext.commands import Bot, Cog, Context, command -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import Channels, Event, Roles from bot.decorators import InChannelCheckFailure, in_channel, without_role diff --git a/bot/cogs/watchchannels/bigbrother.py b/bot/cogs/watchchannels/bigbrother.py index e191c2dbc..c332d80b9 100644 --- a/bot/cogs/watchchannels/bigbrother.py +++ b/bot/cogs/watchchannels/bigbrother.py @@ -5,9 +5,9 @@ from typing import Union from discord import User from discord.ext.commands import Bot, Cog, Context, group +from bot.cogs.moderation.utils import post_infraction from bot.constants import Channels, Roles, Webhooks from bot.decorators import with_role -from bot.utils.moderation import post_infraction from .watchchannel import WatchChannel, proxy_user log = logging.getLogger(__name__) diff --git a/bot/cogs/watchchannels/watchchannel.py b/bot/cogs/watchchannels/watchchannel.py index ce8014d69..e67f4674b 100644 --- a/bot/cogs/watchchannels/watchchannel.py +++ b/bot/cogs/watchchannels/watchchannel.py @@ -13,7 +13,7 @@ from discord import Color, Embed, HTTPException, Message, Object, errors from discord.ext.commands import BadArgument, Bot, Cog, Context from bot.api import ResponseCodeError -from bot.cogs.modlog import ModLog +from bot.cogs.moderation import ModLog from bot.constants import BigBrother as BigBrotherConfig, Guild as GuildConfig, Icons from bot.pagination import LinePaginator from bot.utils import CogABCMeta, messages |