Skip to content

Commit

Permalink
feat: guild scheduled events websocket
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel-Worrall committed Jan 14, 2022
1 parent 5f24dcf commit 41e75fa
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
45 changes: 45 additions & 0 deletions src/discordcr/client.cr
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,26 @@ module Discord
@cache.try &.remove_guild_role(payload.guild_id, payload.role_id)

call_event guild_role_delete, payload
when "GUILD_SCHEDULED_EVENT_CREATE"
payload = GuildScheduledEvent.from_json(data)

call_event guild_scheduled_event_create, payload
when "GUILD_SCHEDULED_EVENT_UPDATE"
payload = GuildScheduledEvent.from_json(data)

call_event guild_scheduled_event_update, payload
when "GUILD_SCHEDULED_EVENT_DELETE"
payload = GuildScheduledEvent.from_json(data)

call_event guild_scheduled_event_delete, payload
when "GUILD_SCHEDULED_EVENT_USER_ADD"
payload = Gateway::GuildScheduledEventUserPayload.from_json(data)

call_event guild_scheduled_event_user_add, payload
when "GUILD_SCHEDULED_EVENT_USER_REMOVE"
payload = Gateway::GuildScheduledEventUserPayload.from_json(data)

call_event guild_scheduled_event_user_remove, payload
when "INVITE_CREATE"
payload = Gateway::InviteCreatePayload.from_json(data)

Expand Down Expand Up @@ -895,6 +915,31 @@ module Discord
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-role-delete)
event guild_role_delete, Gateway::GuildRoleDeletePayload

# Called when a guild scheduled event is created.
#
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-scheduled-event-create)
event guild_scheduled_event_create, GuildScheduledEvent

# Called when a guild scheduled event is updated.
#
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-scheduled-event-update)
event guild_scheduled_event_update, GuildScheduledEvent

# Called when a guild scheduled event is deleted.
#
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-scheduled-event-delete)
event guild_scheduled_event_delete, GuildScheduledEvent

# Called when a user subscribes to a guild scheduled event
#
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-scheduled-event-user-add)
event guild_scheduled_event_user_add, Gateway::GuildScheduledEventUserPayload

# Called when a user unsubscribes from a guild scheduled event
#
# [API docs for this event](https://discord.com/developers/docs/topics/gateway#guild-scheduled-event-user-remove)
event guild_scheduled_event_user_remove, Gateway::GuildScheduledEventUserPayload

# Called when an invite is created on a guild.
#
# [API docs for this event](https://discordapp.com/developers/docs/topics/gateway#invite-create)
Expand Down
9 changes: 9 additions & 0 deletions src/discordcr/mappings/gateway.cr
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ module Discord
DirectMessages = 1 << 12
DirectMessageReactions = 1 << 13
DirectMessageTyping = 1 << 14
GuildScheduledEvents = 1 << 16

# Generates an Unprivileged intents constant, removing GuildMembers and GuildPresences.
{% begin %}
Expand Down Expand Up @@ -328,6 +329,14 @@ module Discord
property role_id : Snowflake
end

struct GuildScheduledEventUserPayload
include JSON::Serializable

property guild_scheduled_event_id : Snowflake
property user_id : Snowflake
property guild_id : Snowflake
end

struct InviteCreatePayload
include JSON::Serializable

Expand Down

0 comments on commit 41e75fa

Please sign in to comment.