From d92fe94da312c0a69dbe9bd7c2e525c594f20e40 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sat, 17 Nov 2018 19:49:45 -0700 Subject: Rewrite from Lwt to Async --- lib/client/client.ml | 5 ----- 1 file changed, 5 deletions(-) (limited to 'lib/client/client.ml') diff --git a/lib/client/client.ml b/lib/client/client.ml index b1f6f25..e69de29 100644 --- a/lib/client/client.ml +++ b/lib/client/client.ml @@ -1,5 +0,0 @@ -let notify t data = - Yojson.Basic.pretty_print Format.std_formatter @@ `Assoc data; - print_newline (); - print_endline t; - () \ No newline at end of file -- cgit v1.2.3 From a7340eba42bcef93a4e6f9ece7c86043f9a01747 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sun, 18 Nov 2018 12:04:19 -0700 Subject: Event dispatch and client abstraction --- lib/client/client.ml | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) (limited to 'lib/client/client.ml') diff --git a/lib/client/client.ml b/lib/client/client.ml index e69de29..e07e348 100644 --- a/lib/client/client.ml +++ b/lib/client/client.ml @@ -0,0 +1,80 @@ +open Async + +type t = { + sharder: Sharder.t Ivar.t; + (* events: (Events.t, Core_kernel.write) Bvar.t list; *) + mutable handler: Sharder.handler; + token: string; +} + +let make ?handler token = + let handler = match handler with + | Some h -> h + | None -> begin + Sharder.{ + ready = None; + resumed = None; + channel_create = None; + channel_delete = None; + channel_update = None; + channel_pins_update = None; + guild_create = None; + guild_delete = None; + guild_update = None; + guild_ban_add = None; + guild_ban_remove = None; + guild_emojis_update = None; + guild_integrations_update = None; + guild_member_add = None; + guild_member_remove = None; + guild_member_update = None; + guild_members_chunk = None; + guild_role_create = None; + guild_role_delete = None; + guild_role_update = None; + message_create = None; + message_delete = None; + message_update = None; + message_delete_bulk = None; + message_reaction_add = None; + message_reaction_remove = None; + message_reaction_remove_all = None; + presence_update = None; + typing_start = None; + user_update = None; + voice_state_update = None; + voice_server_update = None; + webhooks_update = None; + } + end in + { + sharder = Ivar.create (); + handler; + token; + } + +let start ?count client = + Sharder.start ?count ~handler:client.handler client.token + >>| fun sharder -> + Ivar.fill_if_empty client.sharder sharder; + client + +let on ev client fn = + match ev with + | "MESSAGE_CREATE" -> client.handler <- { client.handler with message_create = Some(fn) } + | _ -> () + +let set_status client status = + Ivar.read client.sharder + >>= fun sharder -> + Sharder.set_status sharder status + +let set_status_with client f = + Ivar.read client.sharder + >>= fun sharder -> + Sharder.set_status_with sharder f + +let request_guild_members ~guild ?query ?limit client = + Ivar.read client.sharder + >>= fun sharder -> + Sharder.request_guild_members ~guild ?query ?limit sharder \ No newline at end of file -- cgit v1.2.3