api-surface #1
3 changed files with 331 additions and 0 deletions
feat(model): interaction/component/audit/automod/event enum + flags tables
commit
11a8e15b45
|
|
@ -122,3 +122,277 @@ end
|
|||
defmodule Dexcord.ReactionType do
|
||||
use Dexcord.Enum, normal: 0, burst: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.InteractionType do
|
||||
use Dexcord.Enum,
|
||||
ping: 1,
|
||||
application_command: 2,
|
||||
message_component: 3,
|
||||
application_command_autocomplete: 4,
|
||||
modal_submit: 5
|
||||
end
|
||||
|
||||
defmodule Dexcord.InteractionContextType do
|
||||
use Dexcord.Enum, guild: 0, bot_dm: 1, private_channel: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.ApplicationCommandType do
|
||||
use Dexcord.Enum, chat_input: 1, user: 2, message: 3, primary_entry_point: 4
|
||||
end
|
||||
|
||||
defmodule Dexcord.ApplicationCommandOptionType do
|
||||
use Dexcord.Enum,
|
||||
sub_command: 1,
|
||||
sub_command_group: 2,
|
||||
string: 3,
|
||||
integer: 4,
|
||||
boolean: 5,
|
||||
user: 6,
|
||||
channel: 7,
|
||||
role: 8,
|
||||
mentionable: 9,
|
||||
number: 10,
|
||||
attachment: 11
|
||||
end
|
||||
|
||||
defmodule Dexcord.EntryPointHandlerType do
|
||||
use Dexcord.Enum, app_handler: 1, discord_launch_activity: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.ApplicationCommandPermissionType do
|
||||
use Dexcord.Enum, role: 1, user: 2, channel: 3
|
||||
end
|
||||
|
||||
# Component types 15, 16, 20 are unassigned in the current docs — real gaps.
|
||||
defmodule Dexcord.ComponentType do
|
||||
use Dexcord.Enum,
|
||||
action_row: 1,
|
||||
button: 2,
|
||||
string_select: 3,
|
||||
text_input: 4,
|
||||
user_select: 5,
|
||||
role_select: 6,
|
||||
mentionable_select: 7,
|
||||
channel_select: 8,
|
||||
section: 9,
|
||||
text_display: 10,
|
||||
thumbnail: 11,
|
||||
media_gallery: 12,
|
||||
file: 13,
|
||||
separator: 14,
|
||||
container: 17,
|
||||
label: 18,
|
||||
file_upload: 19,
|
||||
radio_group: 21,
|
||||
checkbox_group: 22,
|
||||
checkbox: 23
|
||||
end
|
||||
|
||||
defmodule Dexcord.ButtonStyle do
|
||||
use Dexcord.Enum, primary: 1, secondary: 2, success: 3, danger: 4, link: 5, premium: 6
|
||||
end
|
||||
|
||||
defmodule Dexcord.TextInputStyle do
|
||||
use Dexcord.Enum, short: 1, paragraph: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.WebhookType do
|
||||
use Dexcord.Enum, incoming: 1, channel_follower: 2, application: 3
|
||||
end
|
||||
|
||||
defmodule Dexcord.InviteType do
|
||||
use Dexcord.Enum, guild: 0, group_dm: 1, friend: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.InviteTargetType do
|
||||
use Dexcord.Enum, stream: 1, embedded_application: 2
|
||||
end
|
||||
|
||||
# The complete AuditLogEvent table. The sparse ranges are REAL — Discord
|
||||
# reserves whole numeric bands per object family, leaving large gaps.
|
||||
defmodule Dexcord.AuditLogEvent do
|
||||
use Dexcord.Enum,
|
||||
guild_update: 1,
|
||||
channel_create: 10,
|
||||
channel_update: 11,
|
||||
channel_delete: 12,
|
||||
channel_overwrite_create: 13,
|
||||
channel_overwrite_update: 14,
|
||||
channel_overwrite_delete: 15,
|
||||
member_kick: 20,
|
||||
member_prune: 21,
|
||||
member_ban_add: 22,
|
||||
member_ban_remove: 23,
|
||||
member_update: 24,
|
||||
member_role_update: 25,
|
||||
member_move: 26,
|
||||
member_disconnect: 27,
|
||||
bot_add: 28,
|
||||
role_create: 30,
|
||||
role_update: 31,
|
||||
role_delete: 32,
|
||||
invite_create: 40,
|
||||
invite_update: 41,
|
||||
invite_delete: 42,
|
||||
webhook_create: 50,
|
||||
webhook_update: 51,
|
||||
webhook_delete: 52,
|
||||
emoji_create: 60,
|
||||
emoji_update: 61,
|
||||
emoji_delete: 62,
|
||||
message_delete: 72,
|
||||
message_bulk_delete: 73,
|
||||
message_pin: 74,
|
||||
message_unpin: 75,
|
||||
integration_create: 80,
|
||||
integration_update: 81,
|
||||
integration_delete: 82,
|
||||
stage_instance_create: 83,
|
||||
stage_instance_update: 84,
|
||||
stage_instance_delete: 85,
|
||||
sticker_create: 90,
|
||||
sticker_update: 91,
|
||||
sticker_delete: 92,
|
||||
guild_scheduled_event_create: 100,
|
||||
guild_scheduled_event_update: 101,
|
||||
guild_scheduled_event_delete: 102,
|
||||
thread_create: 110,
|
||||
thread_update: 111,
|
||||
thread_delete: 112,
|
||||
application_command_permission_update: 121,
|
||||
soundboard_sound_create: 130,
|
||||
soundboard_sound_update: 131,
|
||||
soundboard_sound_delete: 132,
|
||||
auto_moderation_rule_create: 140,
|
||||
auto_moderation_rule_update: 141,
|
||||
auto_moderation_rule_delete: 142,
|
||||
auto_moderation_block_message: 143,
|
||||
auto_moderation_flag_to_channel: 144,
|
||||
auto_moderation_user_communication_disabled: 145,
|
||||
auto_moderation_quarantine_user: 146,
|
||||
creator_monetization_request_created: 150,
|
||||
creator_monetization_terms_accepted: 151,
|
||||
onboarding_prompt_create: 163,
|
||||
onboarding_prompt_update: 164,
|
||||
onboarding_prompt_delete: 165,
|
||||
onboarding_create: 166,
|
||||
onboarding_update: 167,
|
||||
home_settings_create: 190,
|
||||
home_settings_update: 191,
|
||||
voice_channel_status_create: 192,
|
||||
voice_channel_status_delete: 193
|
||||
end
|
||||
|
||||
# Trigger type 2 was removed — real gap.
|
||||
defmodule Dexcord.AutoModerationTriggerType do
|
||||
use Dexcord.Enum, keyword: 1, spam: 3, keyword_preset: 4, mention_spam: 5, member_profile: 6
|
||||
end
|
||||
|
||||
defmodule Dexcord.KeywordPresetType do
|
||||
use Dexcord.Enum, profanity: 1, sexual_content: 2, slurs: 3
|
||||
end
|
||||
|
||||
defmodule Dexcord.AutoModerationEventType do
|
||||
use Dexcord.Enum, message_send: 1, member_update: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.AutoModerationActionType do
|
||||
use Dexcord.Enum,
|
||||
block_message: 1,
|
||||
send_alert_message: 2,
|
||||
timeout: 3,
|
||||
block_member_interaction: 4
|
||||
end
|
||||
|
||||
defmodule Dexcord.GuildScheduledEventPrivacyLevel do
|
||||
use Dexcord.Enum, guild_only: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.GuildScheduledEventEntityType do
|
||||
use Dexcord.Enum, stage_instance: 1, voice: 2, external: 3
|
||||
end
|
||||
|
||||
defmodule Dexcord.GuildScheduledEventStatus do
|
||||
use Dexcord.Enum, scheduled: 1, active: 2, completed: 3, canceled: 4
|
||||
end
|
||||
|
||||
defmodule Dexcord.RecurrenceRuleFrequency do
|
||||
use Dexcord.Enum, yearly: 0, monthly: 1, weekly: 2, daily: 3
|
||||
end
|
||||
|
||||
defmodule Dexcord.RecurrenceRuleWeekday do
|
||||
use Dexcord.Enum,
|
||||
monday: 0,
|
||||
tuesday: 1,
|
||||
wednesday: 2,
|
||||
thursday: 3,
|
||||
friday: 4,
|
||||
saturday: 5,
|
||||
sunday: 6
|
||||
end
|
||||
|
||||
defmodule Dexcord.RecurrenceRuleMonth do
|
||||
use Dexcord.Enum,
|
||||
january: 1,
|
||||
february: 2,
|
||||
march: 3,
|
||||
april: 4,
|
||||
may: 5,
|
||||
june: 6,
|
||||
july: 7,
|
||||
august: 8,
|
||||
september: 9,
|
||||
october: 10,
|
||||
november: 11,
|
||||
december: 12
|
||||
end
|
||||
|
||||
defmodule Dexcord.PollLayoutType do
|
||||
use Dexcord.Enum, default: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.ApplicationIntegrationType do
|
||||
use Dexcord.Enum, guild_install: 0, user_install: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.EventWebhooksStatus do
|
||||
use Dexcord.Enum, disabled: 1, enabled: 2, disabled_by_discord: 3
|
||||
end
|
||||
|
||||
defmodule Dexcord.TeamMembershipState do
|
||||
use Dexcord.Enum, invited: 1, accepted: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.OnboardingMode do
|
||||
use Dexcord.Enum, onboarding_default: 0, onboarding_advanced: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.OnboardingPromptType do
|
||||
use Dexcord.Enum, multiple_choice: 0, dropdown: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.IntegrationExpireBehavior do
|
||||
use Dexcord.Enum, remove_role: 0, kick: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.ConnectionVisibility do
|
||||
use Dexcord.Enum, none: 0, everyone: 1
|
||||
end
|
||||
|
||||
defmodule Dexcord.ActivityType do
|
||||
use Dexcord.Enum,
|
||||
playing: 0,
|
||||
streaming: 1,
|
||||
listening: 2,
|
||||
watching: 3,
|
||||
custom: 4,
|
||||
competing: 5
|
||||
end
|
||||
|
||||
defmodule Dexcord.StatusDisplayType do
|
||||
use Dexcord.Enum, name: 0, state: 1, details: 2
|
||||
end
|
||||
|
||||
defmodule Dexcord.VoiceAnimationType do
|
||||
use Dexcord.Enum, premium: 0, basic: 1
|
||||
end
|
||||
|
|
|
|||
|
|
@ -131,3 +131,34 @@ end
|
|||
defmodule Dexcord.RoleFlags do
|
||||
use Dexcord.Flags, in_prompt: 0
|
||||
end
|
||||
|
||||
defmodule Dexcord.ApplicationFlags do
|
||||
use Dexcord.Flags,
|
||||
application_auto_moderation_rule_create_badge: 6,
|
||||
gateway_presence: 12,
|
||||
gateway_presence_limited: 13,
|
||||
gateway_guild_members: 14,
|
||||
gateway_guild_members_limited: 15,
|
||||
verification_pending_guild_limit: 16,
|
||||
embedded: 17,
|
||||
gateway_message_content: 18,
|
||||
gateway_message_content_limited: 19,
|
||||
application_command_badge: 23
|
||||
end
|
||||
|
||||
defmodule Dexcord.InviteFlags do
|
||||
use Dexcord.Flags, is_guest_invite: 0
|
||||
end
|
||||
|
||||
defmodule Dexcord.ActivityFlags do
|
||||
use Dexcord.Flags,
|
||||
instance: 0,
|
||||
join: 1,
|
||||
spectate: 2,
|
||||
join_request: 3,
|
||||
sync: 4,
|
||||
play: 5,
|
||||
party_privacy_friends: 6,
|
||||
party_privacy_voice_channel: 7,
|
||||
embedded: 8
|
||||
end
|
||||
|
|
|
|||
|
|
@ -36,4 +36,30 @@ defmodule Dexcord.ModelEnumsTest do
|
|||
assert Dexcord.UserFlags.to_list(0b1_0000_0000_0000_0001) == [:staff, :verified_bot]
|
||||
end
|
||||
end
|
||||
|
||||
describe "AuditLogEvent" do
|
||||
test "decodes the highest live value" do
|
||||
assert Dexcord.AuditLogEvent.decode(193) == :voice_channel_status_delete
|
||||
end
|
||||
|
||||
test "sparse gap 2 is unknown" do
|
||||
assert Dexcord.AuditLogEvent.decode(2) == {:unknown, 2}
|
||||
end
|
||||
end
|
||||
|
||||
describe "ComponentType" do
|
||||
test "decodes a live value" do
|
||||
assert Dexcord.ComponentType.decode(23) == :checkbox
|
||||
end
|
||||
|
||||
test "unassigned type 15 is unknown" do
|
||||
assert Dexcord.ComponentType.decode(15) == {:unknown, 15}
|
||||
end
|
||||
end
|
||||
|
||||
describe "AutoModerationTriggerType" do
|
||||
test "removed trigger type 2 is unknown" do
|
||||
assert Dexcord.AutoModerationTriggerType.decode(2) == {:unknown, 2}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue