From 756678c95be6272934002486f2cdec4fa269b5c3 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Sun, 10 Nov 2024 21:12:29 -0300 Subject: [PATCH] minor changes --- src/internal.zig | 3 +-- src/shard.zig | 34 +++++++++++----------------------- src/test.zig | 5 ++++- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/internal.zig b/src/internal.zig index 379c723..c113473 100644 --- a/src/internal.zig +++ b/src/internal.zig @@ -239,8 +239,7 @@ pub fn GatewayDispatchEvent(comptime T: type) type { message_update: ?*const fn (save: T, message: Discord.Message) anyerror!void = undefined, message_delete: ?*const fn (save: T, log: Discord.MessageDelete) anyerror!void = undefined, message_delete_bulk: ?*const fn (save: T, log: Discord.MessageDeleteBulk) anyerror!void = undefined, - // TODO: implement // message_delete_bulk: null = null, - // TODO: implement // message_reaction_add: null = null, + // TODO: message_reaction_add: ?*const fn (save: T, log: Discord.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, diff --git a/src/shard.zig b/src/shard.zig index 8c7ab99..4a6695c 100644 --- a/src/shard.zig +++ b/src/shard.zig @@ -404,12 +404,11 @@ pub fn send(self: *Self, _: bool, data: anytype) SendError!void { } pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void { + var attempt = try self.parseJson(payload); + defer attempt.deinit(); + + const obj = attempt.getT(.object, "d").?; if (std.ascii.eqlIgnoreCase(name, "ready")) { - var attempt = try self.parseJson(payload); - defer attempt.deinit(); - - const obj = attempt.getT(.object, "d").?; - self.resume_gateway_url = obj.getT(.string, "resume_gateway_url"); self.logif("new gateway url: {s}", .{self.gatewayUrl()}); @@ -466,13 +465,10 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void { }; } if (self.handler.ready) |event| try event(self, ready); + return; } if (std.ascii.eqlIgnoreCase(name, "message_delete")) { - var attempt = try self.parseJson(payload); - defer attempt.deinit(); - - const obj = attempt.getT(.object, "d").?; const data = Discord.MessageDelete{ .id = try Shared.Snowflake.fromRaw(obj.getT(.string, "id").?), .channel_id = try Shared.Snowflake.fromRaw(obj.getT(.string, "channel_id").?), @@ -480,13 +476,10 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void { }; if (self.handler.message_delete) |event| try event(self, data); + return; } if (std.ascii.eqlIgnoreCase(name, "message_delete_bulk")) { - var attempt = try self.parseJson(payload); - defer attempt.deinit(); - - const obj = attempt.getT(.object, "d").?; var ids = std.ArrayList([]const u8).init(self.allocator); defer ids.deinit(); @@ -501,33 +494,28 @@ pub fn handleEvent(self: *Self, name: []const u8, payload: []const u8) !void { }; if (self.handler.message_delete_bulk) |event| try event(self, data); + return; } if (std.ascii.eqlIgnoreCase(name, "message_update")) { - var attempt = try self.parseJson(payload); - defer attempt.deinit(); - const obj = attempt.getT(.object, "d").?; - const message = try Parser.parseMessage(self.allocator, obj); //defer if (message.referenced_message) |mptr| self.allocator.destroy(mptr); if (self.handler.message_update) |event| try event(self, message); + return; } if (std.ascii.eqlIgnoreCase(name, "message_create")) { - var attempt = try self.parseJson(payload); - defer attempt.deinit(); - const obj = attempt.getT(.object, "d").?; - self.logif("it worked {s}", .{name}); const message = try Parser.parseMessage(self.allocator, obj); //defer if (message.referenced_message) |mptr| self.allocator.destroy(mptr); self.logif("it worked {s} {?s}", .{ name, message.content }); if (self.handler.message_create) |event| try event(self, message); - } else { - if (self.handler.any) |anyEvent| try anyEvent(self, payload); + return; } + + if (self.handler.any) |anyEvent| try anyEvent(self, payload); } /// highly experimental, do not use diff --git a/src/test.zig b/src/test.zig index a171748..4076668 100644 --- a/src/test.zig +++ b/src/test.zig @@ -35,7 +35,10 @@ pub fn main() !void { try handler.start(.{ .token = std.posix.getenv("TOKEN") orelse unreachable, .intents = Intents.fromRaw(37379), - .run = .{ .message_create = &message_create, .ready = &ready }, + .run = .{ + .message_create = &message_create, + .ready = &ready, + }, .log = .yes, .options = .{}, });