aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar mbaruh <[email protected]>2021-09-20 23:11:01 +0300
committerGravatar mbaruh <[email protected]>2021-09-20 23:11:01 +0300
commitc27226504b5d384023074eb070e37464b6c8749a (patch)
tree566653202118910dabed6c1b52650ad443408876
parentEnd clean on unexpected errors (diff)
Indentation, type-hint, and documentation fixes
-rw-r--r--bot/exts/moderation/clean.py63
1 files changed, 32 insertions, 31 deletions
diff --git a/bot/exts/moderation/clean.py b/bot/exts/moderation/clean.py
index 3fb2c2870..d5bfdb485 100644
--- a/bot/exts/moderation/clean.py
+++ b/bot/exts/moderation/clean.py
@@ -5,7 +5,7 @@ from collections import defaultdict
from contextlib import suppress
from datetime import datetime
from itertools import islice
-from typing import Any, Callable, DefaultDict, Iterable, Literal, Optional, TYPE_CHECKING, Union
+from typing import Any, Callable, Iterable, Literal, Optional, TYPE_CHECKING, Union
from discord import Colour, Message, NotFound, TextChannel, User, errors
from discord.ext.commands import Cog, Context, Converter, Greedy, group, has_any_role
@@ -86,11 +86,11 @@ class Clean(Cog):
@staticmethod
def _validate_input(
traverse: int,
- channels: CleanChannels,
+ channels: Optional[CleanChannels],
bots_only: bool,
- users: list[User],
- first_limit: CleanLimit,
- second_limit: CleanLimit,
+ users: Optional[list[User]],
+ first_limit: Optional[CleanLimit],
+ second_limit: Optional[CleanLimit],
) -> None:
"""Raise errors if an argument value or a combination of values is invalid."""
# Is this an acceptable amount of messages to traverse?
@@ -124,7 +124,7 @@ class Clean(Cog):
@staticmethod
def _build_predicate(
bots_only: bool = False,
- users: list[User] = None,
+ users: Optional[list[User]] = None,
regex: Optional[re.Pattern] = None,
first_limit: Optional[datetime] = None,
second_limit: Optional[datetime] = None,
@@ -196,7 +196,7 @@ class Clean(Cog):
# Invocation message has already been deleted
log.info("Tried to delete invocation message, but it was already deleted.")
- def _get_messages_from_cache(self, traverse: int, to_delete: Predicate) -> tuple[DefaultDict, list[int]]:
+ def _get_messages_from_cache(self, traverse: int, to_delete: Predicate) -> tuple[defaultdict[Any, list], list[int]]:
"""Helper function for getting messages from the cache."""
message_mappings = defaultdict(list)
message_ids = []
@@ -348,9 +348,9 @@ class Clean(Cog):
self,
ctx: Context,
traverse: int,
- channels: CleanChannels,
+ channels: Optional[CleanChannels],
bots_only: bool = False,
- users: list[User] = None,
+ users: Optional[list[User]] = None,
regex: Optional[re.Pattern] = None,
first_limit: Optional[CleanLimit] = None,
second_limit: Optional[CleanLimit] = None,
@@ -423,24 +423,25 @@ class Clean(Cog):
@group(invoke_without_command=True, name="clean", aliases=["clear", "purge"])
async def clean_group(
- self,
- ctx: Context,
- users: Greedy[User] = None,
- traverse: Optional[int] = None,
- first_limit: Optional[CleanLimit] = None,
- second_limit: Optional[CleanLimit] = None,
- use_cache: Optional[bool] = None,
- bots_only: Optional[bool] = False,
- regex: Optional[Regex] = None,
- *,
- channels: CleanChannels = None # "Optional" with discord.py silently ignores incorrect input.
+ self,
+ ctx: Context,
+ users: Greedy[User] = None,
+ traverse: Optional[int] = None,
+ first_limit: Optional[CleanLimit] = None,
+ second_limit: Optional[CleanLimit] = None,
+ use_cache: Optional[bool] = None,
+ bots_only: Optional[bool] = False,
+ regex: Optional[Regex] = None,
+ *,
+ channels: CleanChannels = None # "Optional" with discord.py silently ignores incorrect input.
) -> None:
"""
Commands for cleaning messages in channels.
If arguments are provided, will act as a master command from which all subcommands can be derived.
• `users`: A series of user mentions, ID's, or names.
- • `traverse`: The number of messages to look at in each channel.
+ • `traverse`: The number of messages to look at in each channel. If using the cache, will look at the first
+ `traverse` messages in the cache.
• `first_limit` and `second_limit`: A message, a duration delta, or an ISO datetime.
If a message is provided, cleaning will happen in that channel, and channels cannot be provided.
If a limit is provided, multiple channels cannot be provided.
@@ -474,7 +475,7 @@ class Clean(Cog):
self,
ctx: Context,
user: User,
- traverse: Optional[int] = 10,
+ traverse: Optional[int] = DEFAULT_TRAVERSE,
use_cache: Optional[bool] = True,
*,
channels: CleanChannels = None
@@ -527,10 +528,10 @@ class Clean(Cog):
@clean_group.command(name="until")
async def clean_until(
- self,
- ctx: Context,
- until: CleanLimit,
- channel: TextChannel = None
+ self,
+ ctx: Context,
+ until: CleanLimit,
+ channel: TextChannel = None
) -> None:
"""
Delete all messages until a certain limit.
@@ -547,11 +548,11 @@ class Clean(Cog):
@clean_group.command(name="between", aliases=["after-until", "from-to"])
async def clean_between(
- self,
- ctx: Context,
- first_limit: CleanLimit,
- second_limit: CleanLimit,
- channel: TextChannel = None
+ self,
+ ctx: Context,
+ first_limit: CleanLimit,
+ second_limit: CleanLimit,
+ channel: TextChannel = None
) -> None:
"""
Delete all messages within range.