mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-09-06 09:56:09 +00:00
Implement AutoMod
This commit is contained in:
@ -73,6 +73,7 @@ from .scheduled_event import ScheduledEvent
|
||||
from .stage_instance import StageInstance
|
||||
from .threads import Thread, ThreadMember
|
||||
from .sticker import GuildSticker
|
||||
from .automod import AutoModRule, AutoModAction
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .abc import PrivateChannel
|
||||
@ -84,6 +85,7 @@ if TYPE_CHECKING:
|
||||
from .gateway import DiscordWebSocket
|
||||
from .app_commands import CommandTree
|
||||
|
||||
from .types.automod import AutoModerationRule, AutoModerationActionExecution
|
||||
from .types.snowflake import Snowflake
|
||||
from .types.activity import Activity as ActivityPayload
|
||||
from .types.channel import DMChannel as DMChannelPayload
|
||||
@ -1079,6 +1081,46 @@ class ConnectionState:
|
||||
guild.stickers = tuple(map(lambda d: self.store_sticker(guild, d), data['stickers']))
|
||||
self.dispatch('guild_stickers_update', guild, before_stickers, guild.stickers)
|
||||
|
||||
def parse_auto_moderation_rule_create(self, data: AutoModerationRule) -> None:
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
_log.debug('AUTO_MODERATION_RULE_CREATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
rule = AutoModRule(data=data, guild=guild, state=self)
|
||||
|
||||
self.dispatch('automod_rule_create', rule)
|
||||
|
||||
def parse_auto_moderation_rule_update(self, data: AutoModerationRule) -> None:
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
_log.debug('AUTO_MODERATION_RULE_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
rule = AutoModRule(data=data, guild=guild, state=self)
|
||||
|
||||
self.dispatch('automod_rule_update', rule)
|
||||
|
||||
def parse_auto_moderation_rule_delete(self, data: AutoModerationRule) -> None:
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
_log.debug('AUTO_MODERATION_RULE_DELETE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
rule = AutoModRule(data=data, guild=guild, state=self)
|
||||
|
||||
self.dispatch('automod_rule_delete', rule)
|
||||
|
||||
def parse_auto_moderation_action_execution(self, data: AutoModerationActionExecution) -> None:
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
_log.debug('AUTO_MODERATION_ACTION_EXECUTION referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
execution = AutoModAction(data=data, state=self)
|
||||
|
||||
self.dispatch('automod_action', execution)
|
||||
|
||||
def _get_create_guild(self, data: gw.GuildCreateEvent) -> Guild:
|
||||
if data.get('unavailable') is False:
|
||||
# GUILD_CREATE with unavailable in the response
|
||||
|
Reference in New Issue
Block a user