Files
discordeno/transformers/auditlogEntry.ts
Skillz4Killz a0a1554756 refactor: typings using ReturnType (#2105)
* fix: check new types idea

* fix: type errors

* fix: new style

* fix: more cleanup

* fix: more cleanup

* fix: cleanup audit logs

* fix: cleanup stickers

* fix: cleanup integrations

* fix: more cleanup

* fix: organize into 1 place

* fix: few errors

* fix: some broken import fixes

* fix: quite a lot of fixes across the board

* fix: more fixes for broken imports

* fix: more fixes for broken imports

* fix: handler imports

* fix: all remaining import errors

* fix: more errors needing fixes

* fix: clearing up transformers

* fix: few moer types

* fix: more cleanup of extra types

* fix: fmt

* fix: cleanup discordeno file

* Nuke Base Types (#2102)

* fix: cleanup snake stuff

* convert camelCase to snake_case (#2103)

* fix: add camelize

* fix: finalize remaining errors

* fix: imports in test

Co-authored-by: LTS20050703 <87189679+lts20050703@users.noreply.github.com>
2022-03-14 22:11:22 -04:00

134 lines
4.4 KiB
TypeScript

import { Bot } from "../bot.ts";
import { DiscordAuditLogEntry } from "../types/discord.ts";
export function transformAuditlogEntry(
bot: Bot,
payload: DiscordAuditLogEntry,
) {
return {
id: bot.transformers.snowflake(payload.id),
// @ts-ignore TODO FIX THIS
changes: payload.changes?.map((change) => {
switch (change.key) {
case "$add":
case "$remove":
return {
key: change.key,
new: change.new_value?.map((val) => ({
id: val.id ? bot.transformers.snowflake(val.id) : undefined,
name: val.name,
})),
old: change.old_value?.map((val) => ({
id: val?.id ? bot.transformers.snowflake(val.id) : undefined,
name: val?.name,
})),
};
case "discovery_splash_hash":
case "banner_hash":
case "rules_channel_id":
case "public_updates_channel_id":
case "icon_hash":
case "splash_hash":
case "owner_id":
case "widget_channel_id":
case "system_channel_id":
case "application_id":
case "permissions":
case "allow":
case "deny":
case "channel_id":
case "inviter_id":
case "avatar_hash":
case "id":
return {
key: change.key,
old: change.old_value ? bot.transformers.snowflake(change.old_value) : undefined,
new: change.new_value ? bot.transformers.snowflake(change.new_value) : undefined,
};
case "name":
case "description":
case "preferred_locale":
case "region":
case "afk_channel_id":
case "vanity_url_code":
case "topic":
case "code":
case "nick":
case "location":
return {
key: change.key,
old: change.old_value,
new: change.new_value,
};
case "afk_timeout":
case "mfa_level":
case "verification_level":
case "explicit_content_filter":
case "default_messagae_notifications":
case "prune_delete_days":
case "position":
case "bitrate":
case "rate_limit_per_user":
case "color":
case "max_uses":
case "uses":
case "max_age":
case "expire_behavior":
case "expire_grace_period":
case "user_limit":
case "privacy_level":
case "entity_type":
case "status":
return {
key: change.key,
old: change.old_value ? Number(change.old_value) : undefined,
new: change.new_value ? Number(change.new_value) : undefined,
};
case "widget_enabled":
case "nsfw":
case "hoist":
case "mentionable":
case "temporary":
case "deaf":
case "mute":
case "enable_emoticons":
return {
key: change.key,
old: change.old_value ?? false,
new: change.new_value ?? false,
};
case "permission_overwrites":
return {
key: change.key,
old: change.old_value,
new: change.new_value,
};
default:
return {
key: change.key,
old: change.old_value,
new: change.new_value,
};
}
}),
userId: payload.user_id ? bot.transformers.snowflake(payload.user_id) : undefined,
targetId: payload.target_id ? bot.transformers.snowflake(payload.target_id) : undefined,
actionType: payload.action_type,
options: payload.options
? {
deleteMemberDays: payload.options.delete_member_days ? Number(payload.options.delete_member_days) : 0,
membersRemoved: payload.options.members_removed ? Number(payload.options.members_removed) : 0,
channelId: payload.options.channel_id ? bot.transformers.snowflake(payload.options.channel_id) : undefined,
messageId: payload.options.message_id ? bot.transformers.snowflake(payload.options.message_id) : undefined,
count: payload.options.count ? Number(payload.options.count) : 0,
id: payload.options.id ? bot.transformers.snowflake(payload.options.id) : undefined,
type: Number(payload.options.type),
roleName: payload.options.role_name,
}
: undefined,
reason: payload.reason,
};
}
export interface AuditLogEntry extends ReturnType<typeof transformAuditlogEntry> {}