Implement AutoMod

This commit is contained in:
Alex Nørgaard
2022-06-27 05:47:52 +01:00
committed by GitHub
parent 7ad00750c6
commit 5426d19dc7
12 changed files with 1279 additions and 2 deletions

View File

@@ -71,6 +71,7 @@ if TYPE_CHECKING:
from .types import (
appinfo,
audit_log,
automod,
channel,
command,
emoji,
@@ -2039,6 +2040,63 @@ class HTTPClient:
)
return self.request(r, json=payload)
def get_auto_moderation_rules(self, guild_id: Snowflake) -> Response[List[automod.AutoModerationRule]]:
return self.request(Route('GET', '/guilds/{guild_id}/auto-moderation/rules', guild_id=guild_id))
def get_auto_moderation_rule(self, guild_id: Snowflake, rule_id: Snowflake) -> Response[automod.AutoModerationRule]:
return self.request(
Route('GET', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id)
)
def create_auto_moderation_rule(
self, guild_id: Snowflake, *, reason: Optional[str], **payload: Any
) -> Response[automod.AutoModerationRule]:
valid_keys = (
'name',
'event_type',
'trigger_type',
'trigger_metadata',
'actions',
'enabled',
'exempt_roles',
'exempt_channels',
)
payload = {k: v for k, v in payload.items() if k in valid_keys and v is not None}
return self.request(
Route('POST', '/guilds/{guild_id}/auto-moderation/rules', guild_id=guild_id), json=payload, reason=reason
)
def edit_auto_moderation_rule(
self, guild_id: Snowflake, rule_id: Snowflake, *, reason: Optional[str], **payload: Any
) -> Response[automod.AutoModerationRule]:
valid_keys = (
'name',
'event_type',
'trigger_metadata',
'actions',
'enabled',
'exempt_roles',
'exempt_channels',
)
payload = {k: v for k, v in payload.items() if k in valid_keys and v is not None}
return self.request(
Route('PATCH', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id),
json=payload,
reason=reason,
)
def delete_auto_moderation_rule(
self, guild_id: Snowflake, rule_id: Snowflake, *, reason: Optional[str]
) -> Response[None]:
return self.request(
Route('DELETE', '/guilds/{guild_id}/auto-moderation/rules/{rule_id}', guild_id=guild_id, rule_id=rule_id),
reason=reason,
)
# Misc
def application_info(self) -> Response[appinfo.AppInfo]: