ModerationRule.from constructor
ModerationRule.from({
- required Guild guild,
- required dynamic payload,
Implementation
factory ModerationRule.from ({ required Guild guild, required dynamic payload }) {
List<ModerationAction> actions = [];
if (payload['actions'] != null) {
for (dynamic item in payload['actions']) {
ModerationAction action = ModerationAction(
type: ModerationActionType.values.firstWhere((element) => element.value == item['type']),
metadata: item['metadata'].toString() != '{}'
? ModerationActionMetadata(
channel: guild.channels.cache.get(item['metadata']['channel_id']!),
duration: item['metadata']['duration_seconds']
)
: null
);
actions.add(action);
}
}
List<String> keywordFilter = [];
for (dynamic keyword in payload['trigger_metadata']['keyword_filter']) {
keywordFilter.add(keyword);
}
List<Role> roles = [];
for (Snowflake id in payload['exempt_roles']) {
Role? role = guild.roles.cache.get(id);
if (role != null) {
roles.add(role);
}
}
List<GuildChannel> channels = [];
for (Snowflake id in payload['exempt_channels']) {
GuildChannel? channel = guild.channels.cache.get(id);
if (channel != null) {
channels.add(channel);
}
}
return ModerationRule(
id: payload['id'],
guildId: payload['guild_id'],
guild: guild,
label: payload['name'],
eventType: ModerationEventType.values.firstWhere((element) => element.value == payload['event_type']),
actions: actions,
triggerType: ModerationTriggerType.values.firstWhere((element) => element.value == payload['trigger_type']),
triggerMetadata: ModerationTriggerMetadata(
presets: payload['trigger_metadata'] != null && payload['trigger_metadata']['presets'] != null
? (['presets'] as List<int>).map((preset) {
return ModerationPresetType.values.firstWhere((element) => element.value == preset);
}).toList()
: [],
keywordFilter: keywordFilter
),
enabled: payload['enabled'] ?? false,
exemptRoles: roles,
exemptChannels: channels,
);
}