added all events

This commit is contained in:
Yuzu 2024-12-05 00:13:43 -05:00
parent 2ed2e7217a
commit a5069e1989
3 changed files with 250 additions and 38 deletions

View File

@ -257,7 +257,7 @@ pub const Bucket = struct {
pub fn GatewayDispatchEvent(comptime T: type) type {
return struct {
// TODO: implement // application_command_permissions_update: null = null,
application_command_permissions_update: ?*const fn (save: T, application_command_permissions: Types.ApplicationCommandPermissions) anyerror!void = undefined,
// TODO: implement // auto_moderation_rule_create: null = null,
// TODO: implement // auto_moderation_rule_update: null = null,
// TODO: implement // auto_moderation_rule_delete: null = null,
@ -266,13 +266,14 @@ pub fn GatewayDispatchEvent(comptime T: type) type {
channel_update: ?*const fn (save: T, chan: Types.Channel) anyerror!void = undefined,
/// this isn't send when the channel is not relevant to you
channel_delete: ?*const fn (save: T, chan: Types.Channel) anyerror!void = undefined,
// TODO: implement // channel_pins_update: null = null,
// TODO: implement // thread_create: null = null,
// TODO: implement // thread_update: null = null,
// TODO: implement // thread_delete: null = null,
// TODO: implement // thread_list_sync: null = null,
// TODO: implement // thread_member_update: null = null,
// TODO: implement // thread_members_update: null = null,
channel_pins_update: ?*const fn (save: T, chan_pins_update: Types.ChannelPinsUpdate) anyerror!void = undefined,
thread_create: ?*const fn (save: T, thread: Types.Channel) anyerror!void = undefined,
thread_update: ?*const fn (save: T, thread: Types.Channel) anyerror!void = undefined,
/// has `id`, `guild_id`, `parent_id`, and `type` fields.
thread_delete: ?*const fn (save: T, thread: Types.Partial(Types.Channel)) anyerror!void = undefined,
thread_list_sync: ?*const fn (save: T, data: Types.ThreadListSync) anyerror!void = undefined,
thread_member_update: ?*const fn (save: T, guild_id: Types.ThreadMemberUpdate) anyerror!void = undefined,
thread_members_update: ?*const fn (save: T, thread_data: Types.ThreadMembersUpdate) anyerror!void = undefined,
// TODO: implement // guild_audit_log_entry_create: null = null,
guild_create: ?*const fn (save: T, guild: Types.Guild) anyerror!void = undefined,
guild_create_unavailable: ?*const fn (save: T, guild: Types.UnavailableGuild) anyerror!void = undefined,
@ -282,25 +283,25 @@ pub fn GatewayDispatchEvent(comptime T: type) type {
guild_delete: ?*const fn (save: T, guild: Types.UnavailableGuild) anyerror!void = undefined,
guild_ban_add: ?*const fn (save: T, gba: Types.GuildBanAddRemove) anyerror!void = undefined,
guild_ban_remove: ?*const fn (save: T, gbr: Types.GuildBanAddRemove) anyerror!void = undefined,
// TODO: implement // guild_emojis_update: null = null,
// TODO: implement // guild_stickers_update: null = null,
// TODO: implement // guild_integrations_update: null = null,
guild_emojis_update: ?*const fn (save: T, fields: Types.GuildEmojisUpdate) anyerror!void = undefined,
guild_stickers_update: ?*const fn (save: T, fields: Types.GuildStickersUpdate) anyerror!void = undefined,
guild_integrations_update: ?*const fn (save: T, fields: Types.GuildIntegrationsUpdate) anyerror!void = undefined,
guild_member_add: ?*const fn (save: T, guild_id: Types.GuildMemberAdd) anyerror!void = undefined,
guild_member_update: ?*const fn (save: T, fields: Types.GuildMemberUpdate) anyerror!void = undefined,
guild_member_remove: ?*const fn (save: T, user: Types.GuildMemberRemove) anyerror!void = undefined,
// TODO: implement // guild_members_chunk: null = null,
guild_members_chunk: ?*const fn (save: T, data: Types.GuildMembersChunk) anyerror!void = undefined,
guild_role_create: ?*const fn (save: T, role: Types.GuildRoleCreate) anyerror!void = undefined,
guild_role_delete: ?*const fn (save: T, role: Types.GuildRoleDelete) anyerror!void = undefined,
guild_role_update: ?*const fn (save: T, role: Types.GuildRoleUpdate) anyerror!void = undefined,
// TODO: implement // guild_scheduled_event_create: null = null,
// TODO: implement // guild_scheduled_event_update: null = null,
// TODO: implement // guild_scheduled_event_delete: null = null,
// TODO: implement // guild_scheduled_event_user_add: null = null,
// TODO: implement // guild_scheduled_event_user_remove: null = null,
// TODO: implement // integration_create: null = null,
// TODO: implement // integration_update: null = null,
// TODO: implement // integration_delete: null = null,
// TODO: implement // interaction_create: null = null,
guild_scheduled_event_create: ?*const fn (save: T, s_event: Types.ScheduledEvent) anyerror!void = undefined,
guild_scheduled_event_update: ?*const fn (save: T, s_event: Types.ScheduledEvent) anyerror!void = undefined,
guild_scheduled_event_delete: ?*const fn (save: T, s_event: Types.ScheduledEvent) anyerror!void = undefined,
guild_scheduled_event_user_add: ?*const fn (save: T, data: Types.ScheduledEventUserAdd) anyerror!void = undefined,
guild_scheduled_event_user_remove: ?*const fn (save: T, data: Types.ScheduledEventUserRemove) anyerror!void = undefined,
integration_create: ?*const fn (save: T, guild_id: Types.IntegrationCreateUpdate) anyerror!void = undefined,
integration_update: ?*const fn (save: T, guild_id: Types.IntegrationCreateUpdate) anyerror!void = undefined,
integration_delete: ?*const fn (save: T, guild_id: Types.IntegrationDelete) anyerror!void = undefined,
interaction_create: ?*const fn (save: T, interaction: Types.MessageInteraction) anyerror!void = undefined,
invite_create: ?*const fn (save: T, data: Types.InviteCreate) anyerror!void = undefined,
invite_delete: ?*const fn (save: T, data: Types.InviteDelete) anyerror!void = undefined,
message_create: ?*const fn (save: T, message: Types.Message) anyerror!void = undefined,
@ -308,25 +309,26 @@ pub fn GatewayDispatchEvent(comptime T: type) type {
message_delete: ?*const fn (save: T, log: Types.MessageDelete) anyerror!void = undefined,
message_delete_bulk: ?*const fn (save: T, log: Types.MessageDeleteBulk) anyerror!void = undefined,
message_reaction_add: ?*const fn (save: T, log: Types.MessageReactionAdd) anyerror!void = undefined,
// TODO: implement // message_reaction_remove: null = null,
// TODO: implement // message_reaction_remove_all: null = null,
// TODO: implement // message_reaction_remove_emoji: null = null,
// TODO: implement // presence_update: null = null,
// TODO: implement // stage_instance_create: null = null,
// TODO: implement // stage_instance_update: null = null,
// TODO: implement // stage_instance_delete: null = null,
message_reaction_remove_all: ?*const fn (save: T, data: Types.MessageReactionRemoveAll) anyerror!void = undefined,
message_reaction_remove: ?*const fn (save: T, data: Types.MessageReactionRemove) anyerror!void = undefined,
message_reaction_remove_emoji: ?*const fn (save: T, data: Types.MessageReactionRemoveEmoji) anyerror!void = undefined,
presence_update: ?*const fn (save: T, presence: Types.PresenceUpdate) anyerror!void = undefined,
stage_instance_create: ?*const fn (save: T, stage_instance: Types.StageInstance) anyerror!void = undefined,
stage_instance_update: ?*const fn (save: T, stage_instance: Types.StageInstance) anyerror!void = undefined,
stage_instance_delete: ?*const fn (save: T, stage_instance: Types.StageInstance) anyerror!void = undefined,
typing_start: ?*const fn (save: T, data: Types.TypingStart) anyerror!void = undefined,
/// remember this is only sent when you change your profile yourself/your bot does
user_update: ?*const fn (save: T, user: Types.User) anyerror!void = undefined,
// TODO: implement // voice_channel_effect_send: null = null,
// TODO: implement // voice_state_update: null = null,
// TODO: implement // voice_server_update: null = null,
// TODO: implement // webhooks_update: null = null,
// TODO: implement // entitlement_create: null = null,
// TODO: implement // entitlement_update: null = null,
// TODO: implement // entitlement_delete: null = null,
// TODO: implement // message_poll_vote_add: null = null,
// TODO: implement // message_poll_vote_remove: null = null,
webhooks_update: ?*const fn (save: T, fields: Types.WebhookUpdate) anyerror!void = undefined,
entitlement_create: ?*const fn (save: T, entitlement: Types.Entitlement) anyerror!void = undefined,
entitlement_update: ?*const fn (save: T, entitlement: Types.Entitlement) anyerror!void = undefined,
/// discord claims this is infrequent, therefore not throughoutly tested - Yuzu
entitlement_delete: ?*const fn (save: T, entitlement: Types.Entitlement) anyerror!void = undefined,
message_poll_vote_add: ?*const fn (save: T, poll: Types.PollVoteAdd) anyerror!void = undefined,
message_poll_vote_remove: ?*const fn (save: T, poll: Types.PollVoteRemove) anyerror!void = undefined,
ready: ?*const fn (save: T, data: Types.Ready) anyerror!void = undefined,
// TODO: implement // resumed: null = null,

View File

@ -386,6 +386,12 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.ready) |event| try event(self, ready.value.d.?);
}
if (mem.eql(u8, name, "APPLICATION_COMMAND_PERMISSIONS_UPDATE")) {
const acp = try zjson.parse(GatewayPayload(Types.ApplicationCommandPermissions), self.allocator, payload);
if (self.handler.application_command_permissions_update) |event| try event(self, acp.value.d.?);
}
if (mem.eql(u8, name, "CHANNEL_CREATE")) {
const chan = try zjson.parse(GatewayPayload(Types.Channel), self.allocator, payload);
@ -404,6 +410,54 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.channel_delete) |event| try event(self, chan.value.d.?);
}
if (mem.eql(u8, name, "CHANNEL_PINS_UPDATE")) {
const chan_pins_update = try zjson.parse(GatewayPayload(Types.ChannelPinsUpdate), self.allocator, payload);
if (self.handler.channel_pins_update) |event| try event(self, chan_pins_update.value.d.?);
}
if (mem.eql(u8, name, "ENTITLEMENT_CREATE")) {
const entitlement = try zjson.parse(GatewayPayload(Types.Entitlement), self.allocator, payload);
if (self.handler.entitlement_create) |event| try event(self, entitlement.value.d.?);
}
if (mem.eql(u8, name, "ENTITLEMENT_UPDATE")) {
const entitlement = try zjson.parse(GatewayPayload(Types.Entitlement), self.allocator, payload);
if (self.handler.entitlement_update) |event| try event(self, entitlement.value.d.?);
}
if (mem.eql(u8, name, "ENTITLEMENT_DELETE")) {
const entitlement = try zjson.parse(GatewayPayload(Types.Entitlement), self.allocator, payload);
if (self.handler.entitlement_delete) |event| try event(self, entitlement.value.d.?);
}
if (mem.eql(u8, name, "INTEGRATION_CREATE")) {
const guild_id = try zjson.parse(GatewayPayload(Types.IntegrationCreateUpdate), self.allocator, payload);
if (self.handler.integration_create) |event| try event(self, guild_id.value.d.?);
}
if (mem.eql(u8, name, "INTEGRATION_UPDATE")) {
const guild_id = try zjson.parse(GatewayPayload(Types.IntegrationCreateUpdate), self.allocator, payload);
if (self.handler.integration_update) |event| try event(self, guild_id.value.d.?);
}
if (mem.eql(u8, name, "INTEGRATION_DELETE")) {
const data = try zjson.parse(GatewayPayload(Types.IntegrationDelete), self.allocator, payload);
if (self.handler.integration_delete) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "INTERACTION_CREATE")) {
const interaction = try zjson.parse(GatewayPayload(Types.MessageInteraction), self.allocator, payload);
if (self.handler.interaction_create) |event| try event(self, interaction.value.d.?);
}
if (mem.eql(u8, name, "INVITE_CREATE")) {
const data = try zjson.parse(GatewayPayload(Types.InviteCreate), self.allocator, payload);
@ -441,9 +495,27 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
}
if (mem.eql(u8, name, "MESSAGE_REACTION_ADD")) {
const data = try zjson.parse(GatewayPayload(Types.MessageReactionAdd), self.allocator, payload);
const reaction = try zjson.parse(GatewayPayload(Types.MessageReactionAdd), self.allocator, payload);
if (self.handler.message_reaction_add) |event| try event(self, data.value.d.?);
if (self.handler.message_reaction_add) |event| try event(self, reaction.value.d.?);
}
if (mem.eql(u8, name, "MESSAGE_REACTION_REMOVE")) {
const reaction = try zjson.parse(GatewayPayload(Types.MessageReactionRemove), self.allocator, payload);
if (self.handler.message_reaction_remove) |event| try event(self, reaction.value.d.?);
}
if (mem.eql(u8, name, "MESSAGE_REACTION_REMOVE_ALL")) {
const data = try zjson.parse(GatewayPayload(Types.MessageReactionRemoveAll), self.allocator, payload);
if (self.handler.message_reaction_remove_all) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "MESSAGE_REACTION_REMOVE_EMOJI")) {
const emoji = try zjson.parse(GatewayPayload(Types.MessageReactionRemoveEmoji), self.allocator, payload);
if (self.handler.message_reaction_remove_emoji) |event| try event(self, emoji.value.d.?);
}
if (mem.eql(u8, name, "GUILD_CREATE")) {
@ -474,6 +546,36 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.guild_delete) |event| try event(self, guild.value.d.?);
}
if (mem.eql(u8, name, "GUILD_SCHEDULED_EVENT_CREATE")) {
const s_event = try zjson.parse(GatewayPayload(Types.ScheduledEvent), self.allocator, payload);
if (self.handler.guild_scheduled_event_create) |event| try event(self, s_event.value.d.?);
}
if (mem.eql(u8, name, "GUILD_SCHEDULED_EVENT_UPDATE")) {
const s_event = try zjson.parse(GatewayPayload(Types.ScheduledEvent), self.allocator, payload);
if (self.handler.guild_scheduled_event_update) |event| try event(self, s_event.value.d.?);
}
if (mem.eql(u8, name, "GUILD_SCHEDULED_EVENT_DELETE")) {
const s_event = try zjson.parse(GatewayPayload(Types.ScheduledEvent), self.allocator, payload);
if (self.handler.guild_scheduled_event_delete) |event| try event(self, s_event.value.d.?);
}
if (mem.eql(u8, name, "GUILD_SCHEDULED_EVENT_USER_ADD")) {
const data = try zjson.parse(GatewayPayload(Types.ScheduledEventUserAdd), self.allocator, payload);
if (self.handler.guild_scheduled_event_user_add) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "GUILD_SCHEDULED_EVENT_USER_REMOVE")) {
const data = try zjson.parse(GatewayPayload(Types.ScheduledEventUserRemove), self.allocator, payload);
if (self.handler.guild_scheduled_event_user_remove) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "GUILD_MEMBER_ADD")) {
const guild_id = try zjson.parse(GatewayPayload(Types.GuildMemberAdd), self.allocator, payload);
@ -492,6 +594,12 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.guild_member_remove) |event| try event(self, user.value.d.?);
}
if (mem.eql(u8, name, "GUILD_MEMBERS_CHUNK")) {
const data = try zjson.parse(GatewayPayload(Types.GuildMembersChunk), self.allocator, payload);
if (self.handler.guild_members_chunk) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "GUILD_ROLE_CREATE")) {
const role = try zjson.parse(GatewayPayload(Types.GuildRoleCreate), self.allocator, payload);
@ -528,6 +636,57 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.guild_ban_remove) |event| try event(self, gbr.value.d.?);
}
if (mem.eql(u8, name, "GUILD_EMOJIS_UPDATE")) {
const emojis = try zjson.parse(GatewayPayload(Types.GuildEmojisUpdate), self.allocator, payload);
if (self.handler.guild_emojis_update) |event| try event(self, emojis.value.d.?);
}
if (mem.eql(u8, name, "GUILD_STICKERS_UPDATE")) {
const stickers = try zjson.parse(GatewayPayload(Types.GuildStickersUpdate), self.allocator, payload);
if (self.handler.guild_stickers_update) |event| try event(self, stickers.value.d.?);
}
if (mem.eql(u8, name, "GUILD_INTEGRATIONS_UPDATE")) {
const guild_id = try zjson.parse(GatewayPayload(Types.GuildIntegrationsUpdate), self.allocator, payload);
if (self.handler.guild_integrations_update) |event| try event(self, guild_id.value.d.?);
}
if (mem.eql(u8, name, "THREAD_CREATE")) {
const thread = try zjson.parse(GatewayPayload(Types.Channel), self.allocator, payload);
if (self.handler.thread_create) |event| try event(self, thread.value.d.?);
}
if (mem.eql(u8, name, "THREAD_UPDATE")) {
const thread = try zjson.parse(GatewayPayload(Types.Channel), self.allocator, payload);
if (self.handler.thread_update) |event| try event(self, thread.value.d.?);
}
if (mem.eql(u8, name, "THREAD_DELETE")) {
const thread_data = try zjson.parse(GatewayPayload(Types.Partial(Types.Channel)), self.allocator, payload);
if (self.handler.thread_delete) |event| try event(self, thread_data.value.d.?);
}
if (mem.eql(u8, name, "THREAD_LIST_SYNC")) {
const data = try zjson.parse(GatewayPayload(Types.ThreadListSync), self.allocator, payload);
if (self.handler.thread_list_sync) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "THREAD_MEMBER_UPDATE")) {
const guild_id = try zjson.parse(GatewayPayload(Types.ThreadMemberUpdate), self.allocator, payload);
if (self.handler.thread_member_update) |event| try event(self, guild_id.value.d.?);
}
if (mem.eql(u8, name, "THREAD_MEMBERS_UPDATE")) {
const data = try zjson.parse(GatewayPayload(Types.ThreadMembersUpdate), self.allocator, payload);
if (self.handler.thread_members_update) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "TYPING_START")) {
const data = try zjson.parse(GatewayPayload(Types.TypingStart), self.allocator, payload);
@ -540,6 +699,48 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void {
if (self.handler.user_update) |event| try event(self, user.value.d.?);
}
if (mem.eql(u8, name, "PRESENCE_UPDATE")) {
const pu = try zjson.parse(GatewayPayload(Types.PresenceUpdate), self.allocator, payload);
if (self.handler.presence_update) |event| try event(self, pu.value.d.?);
}
if (mem.eql(u8, name, "MESSSAGE_POLL_VOTE_ADD")) {
const data = try zjson.parse(GatewayPayload(Types.PollVoteAdd), self.allocator, payload);
if (self.handler.message_poll_vote_add) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "MESSSAGE_POLL_VOTE_REMOVE")) {
const data = try zjson.parse(GatewayPayload(Types.PollVoteRemove), self.allocator, payload);
if (self.handler.message_poll_vote_remove) |event| try event(self, data.value.d.?);
}
if (mem.eql(u8, name, "WEBHOOKS_UPDATE")) {
const fields = try zjson.parse(GatewayPayload(Types.WebhookUpdate), self.allocator, payload);
if (self.handler.webhooks_update) |event| try event(self, fields.value.d.?);
}
if (mem.eql(u8, name, "STAGE_INSTANCE_CREATE")) {
const stage = try zjson.parse(GatewayPayload(Types.StageInstance), self.allocator, payload);
if (self.handler.stage_instance_create) |event| try event(self, stage.value.d.?);
}
if (mem.eql(u8, name, "STAGE_INSTANCE_UPDATE")) {
const stage = try zjson.parse(GatewayPayload(Types.StageInstance), self.allocator, payload);
if (self.handler.stage_instance_update) |event| try event(self, stage.value.d.?);
}
if (mem.eql(u8, name, "STAGE_INSTANCE_DELETE")) {
const stage = try zjson.parse(GatewayPayload(Types.StageInstance), self.allocator, payload);
if (self.handler.stage_instance_delete) |event| try event(self, stage.value.d.?);
}
if (self.handler.any) |anyEvent|
try anyEvent(self, payload);
}

View File

@ -380,7 +380,11 @@ pub const GuildMemberUpdate = struct {
};
/// https://discord.com/developers/docs/topics/gateway#message-reaction-remove-all
pub const MessageReactionRemoveAll = null;
pub const MessageReactionRemoveAll = struct {
channel_id: Snowflake,
message_id: Snowflake,
guild_id: ?Snowflake,
};
/// https://discord.com/developers/docs/topics/gateway#guild-role-update
pub const GuildRoleUpdate = struct {
@ -400,7 +404,12 @@ pub const ScheduledEventUserAdd = struct {
};
/// https://discord.com/developers/docs/topics/gateway#message-reaction-remove-emoji
pub const MessageReactionRemoveEmoji = null;
pub const MessageReactionRemoveEmoji = struct {
channel_id: Snowflake,
message_id: Snowflake,
guild_id: ?Snowflake,
emoji: Emoji,
};
/// https://discord.com/developers/docs/topics/gateway#guild-member-remove
pub const GuildMemberRemove = struct {