Module: DiscordRDA::EventFactory
- Defined in:
- lib/discord_rda/event/base.rb
Overview
Factory for creating events from Gateway payloads
Constant Summary collapse
- EVENT_CLASSES =
Event type to class mapping
{ 'READY' => 'ReadyEvent', 'RESUMED' => 'ResumedEvent', 'CHANNEL_CREATE' => 'ChannelCreateEvent', 'CHANNEL_UPDATE' => 'ChannelUpdateEvent', 'CHANNEL_DELETE' => 'ChannelDeleteEvent', 'CHANNEL_PINS_UPDATE' => 'ChannelPinsUpdateEvent', 'GUILD_CREATE' => 'GuildCreateEvent', 'GUILD_UPDATE' => 'GuildUpdateEvent', 'GUILD_DELETE' => 'GuildDeleteEvent', 'GUILD_BAN_ADD' => 'GuildBanAddEvent', 'GUILD_BAN_REMOVE' => 'GuildBanRemoveEvent', 'GUILD_EMOJIS_UPDATE' => 'GuildEmojisUpdateEvent', 'GUILD_INTEGRATIONS_UPDATE' => 'GuildIntegrationsUpdateEvent', 'GUILD_MEMBER_ADD' => 'GuildMemberAddEvent', 'GUILD_MEMBER_REMOVE' => 'GuildMemberRemoveEvent', 'GUILD_MEMBER_UPDATE' => 'GuildMemberUpdateEvent', 'GUILD_MEMBERS_CHUNK' => 'GuildMembersChunkEvent', 'GUILD_ROLE_CREATE' => 'GuildRoleCreateEvent', 'GUILD_ROLE_UPDATE' => 'GuildRoleUpdateEvent', 'GUILD_ROLE_DELETE' => 'GuildRoleDeleteEvent', 'MESSAGE_CREATE' => 'MessageCreateEvent', 'MESSAGE_UPDATE' => 'MessageUpdateEvent', 'MESSAGE_DELETE' => 'MessageDeleteEvent', 'MESSAGE_DELETE_BULK' => 'MessageDeleteBulkEvent', 'MESSAGE_REACTION_ADD' => 'MessageReactionAddEvent', 'MESSAGE_REACTION_REMOVE' => 'MessageReactionRemoveEvent', 'MESSAGE_REACTION_REMOVE_ALL' => 'MessageReactionRemoveAllEvent', 'MESSAGE_REACTION_REMOVE_EMOJI' => 'MessageReactionRemoveEmojiEvent', 'PRESENCE_UPDATE' => 'PresenceUpdateEvent', 'TYPING_START' => 'TypingStartEvent', 'USER_UPDATE' => 'UserUpdateEvent', 'VOICE_STATE_UPDATE' => 'VoiceStateUpdateEvent', 'VOICE_SERVER_UPDATE' => 'VoiceServerUpdateEvent', 'WEBHOOKS_UPDATE' => 'WebhooksUpdateEvent', 'INTERACTION_CREATE' => 'InteractionCreateEvent', 'STAGE_INSTANCE_CREATE' => 'StageInstanceCreateEvent', 'STAGE_INSTANCE_UPDATE' => 'StageInstanceUpdateEvent', 'STAGE_INSTANCE_DELETE' => 'StageInstanceDeleteEvent', 'THREAD_CREATE' => 'ThreadCreateEvent', 'THREAD_UPDATE' => 'ThreadUpdateEvent', 'THREAD_DELETE' => 'ThreadDeleteEvent', 'THREAD_LIST_SYNC' => 'ThreadListSyncEvent', 'THREAD_MEMBER_UPDATE' => 'ThreadMemberUpdateEvent', 'THREAD_MEMBERS_UPDATE' => 'ThreadMembersUpdateEvent', 'GUILD_SCHEDULED_EVENT_CREATE' => 'GuildScheduledEventCreateEvent', 'GUILD_SCHEDULED_EVENT_UPDATE' => 'GuildScheduledEventUpdateEvent', 'GUILD_SCHEDULED_EVENT_DELETE' => 'GuildScheduledEventDeleteEvent', 'GUILD_SCHEDULED_EVENT_USER_ADD' => 'GuildScheduledEventUserAddEvent', 'GUILD_SCHEDULED_EVENT_USER_REMOVE' => 'GuildScheduledEventUserRemoveEvent', 'AUTO_MODERATION_RULE_CREATE' => 'AutoModerationRuleCreateEvent', 'AUTO_MODERATION_RULE_UPDATE' => 'AutoModerationRuleUpdateEvent', 'AUTO_MODERATION_RULE_DELETE' => 'AutoModerationRuleDeleteEvent', 'AUTO_MODERATION_ACTION_EXECUTION' => 'AutoModerationActionExecutionEvent', 'GUILD_AUDIT_LOG_ENTRY_CREATE' => 'GuildAuditLogEntryCreateEvent', 'ENTITLEMENT_CREATE' => 'EntitlementCreateEvent', 'ENTITLEMENT_UPDATE' => 'EntitlementUpdateEvent', 'ENTITLEMENT_DELETE' => 'EntitlementDeleteEvent' }.freeze
Class Method Summary collapse
-
.create(event_type, data, shard_id = 0) ⇒ Event
Create an event from Gateway data.
-
.register(event_type, klass) ⇒ void
Register a custom event class.
Class Method Details
.create(event_type, data, shard_id = 0) ⇒ Event
Create an event from Gateway data
163 164 165 166 167 168 169 170 171 |
# File 'lib/discord_rda/event/base.rb', line 163 def create(event_type, data, shard_id = 0) class_name = EVENT_CLASSES[event_type] if class_name && Event.const_defined?(class_name) Event.const_get(class_name).new(data, shard_id: shard_id) else Event.new(event_type, data, shard_id: shard_id) end end |
.register(event_type, klass) ⇒ void
This method returns an undefined value.
Register a custom event class
177 178 179 |
# File 'lib/discord_rda/event/base.rb', line 177 def register(event_type, klass) EVENT_CLASSES[event_type] = klass.name end |