Add mention_spam automod trigger and change default values

This commit is contained in:
z03h
2022-08-16 13:58:59 -07:00
committed by GitHub
parent 1a11c9eeee
commit 1097e1d975
5 changed files with 90 additions and 30 deletions

View File

@ -188,15 +188,31 @@ def _guild_hash_transformer(path: str) -> Callable[[AuditLogEntry, Optional[str]
def _transform_automod_trigger_metadata(
entry: AuditLogEntry, data: AutoModerationTriggerMetadata
) -> Optional[AutoModTrigger]:
if isinstance(entry.target, AutoModRule):
# Trigger type cannot be changed, so type should be the same before and after updates.
# Avoids checking which keys are in data to guess trigger type
# or returning None if data is empty.
try:
return AutoModTrigger.from_data(type=entry.target.trigger.type.value, data=data)
except Exception:
pass
# If cannot get trigger type from the rule and data is empty, then cannot determine trigger type
if not data:
return None
# discord doesn't provide the type of the trigger
# have to infer from the data and present keys
# Try to infer trigger type from available keys in data
if 'presets' in data:
return AutoModTrigger(presets=AutoModPresets._from_value(data['presets']), allow_list=data.get('allow_list')) # type: ignore
return AutoModTrigger(
type=enums.AutoModRuleTriggerType.keyword_preset,
presets=AutoModPresets._from_value(data['presets']), # type: ignore
allow_list=data.get('allow_list'),
)
elif 'keyword_filter' in data:
return AutoModTrigger(keyword_filter=data['keyword_filter']) # type: ignore
return AutoModTrigger(type=enums.AutoModRuleTriggerType.keyword, keyword_filter=data['keyword_filter']) # type: ignore
elif 'mention_total_limit' in data:
return AutoModTrigger(type=enums.AutoModRuleTriggerType.mention_spam, mention_limit=data['mention_total_limit']) # type: ignore
def _transform_automod_actions(entry: AuditLogEntry, data: List[AutoModerationAction]) -> List[AutoModRuleAction]: