From d342c4cf9fe907d2107cd815f9988f8ad147218b Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sat, 24 Nov 2018 09:51:03 -0700 Subject: Major structural changes --- bin/bot.ml | 60 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 22 deletions(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index 08a182e..54cf060 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -2,33 +2,49 @@ open Async open Core open Disml -let hook_events client = - Client.on "MESSAGE_CREATE" client (fun msg -> - let msg_time = Time.(to_span_since_epoch @@ now ()) in - let content = Yojson.Basic.Util.(member "content" msg |> to_string) in - let channel = Yojson.Basic.Util.(member "channel_id" msg |> to_string) in - if String.is_prefix ~prefix:"!?ping" content then - Http.create_message channel @@ `Assoc [ - ("content", `String "Pong!"); - ("tts", `Bool false); - ] - >>> fun resp -> - let message_id = Yojson.Basic.Util.(member "id" resp |> to_string) in - let rtt = Time.(to_span_since_epoch @@ sub (now ()) msg_time) in - Http.edit_message channel message_id @@ `Assoc [ - ("content", `String ("Pong! `" ^ (Float.to_string @@ Time.Span.to_ms rtt) ^ " ms`")); - ] - >>> fun _ -> print_endline "Message Edited!" - ); - Client.on "GUILD_CREATE" client (fun guild -> print_endline Yojson.Basic.Util.(member "name" guild |> to_string)) +let rec ev_loop read = + Pipe.read read >>= fun frame -> + match frame with + | `Eof -> return () + | `Ok (t, data) -> begin + match t with + | "MESSAGE_CREATE" -> begin + let msg = Model.to_message data in + let msg_time = Time.(to_span_since_epoch @@ now ()) in + let content = msg.content in + let channel = msg.channel in + if String.is_prefix ~prefix:"!?ping" content then begin + Http.create_message channel @@ `Assoc [ + ("content", `String "Pong!"); + ("tts", `Bool false); + ] + >>> fun resp -> + let message_id = Yojson.Basic.Util.(member "id" resp |> to_string) in + let rtt = Time.(to_span_since_epoch @@ sub (now ()) msg_time) in + Http.edit_message channel message_id @@ `Assoc [ + ("content", `String ("Pong! `" ^ (Float.to_string @@ Time.Span.to_ms rtt) ^ " ms`")); + ] + >>> fun _ -> print_endline "Message Edited!" + end; + return () + end + | "GUILD_CREATE" -> begin + let guild = Model.to_guild data in + print_endline guild.name; + return () + end + | _ -> return () + end + >>= fun _ -> ev_loop read let main () = let token = match Sys.getenv "DISCORD_TOKEN" with | Some s -> s | None -> failwith "No token" in - let client = Client.make token in - hook_events client; + let (r,w) = Pipe.create () in + let client = Client.make ~handler:w token in + ev_loop r >>> ignore; Client.start client >>> fun client -> Clock.every @@ -38,4 +54,4 @@ let main () = |> ignore) let _ = - Scheduler.go_main ~main () \ No newline at end of file + Scheduler.go_main ~main () -- cgit v1.2.3 From ad8a13b186683cb1e6c5ef405df503f58b751ffa Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sun, 25 Nov 2018 18:51:44 -0700 Subject: convert to client from client_ez --- bin/bot.ml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index 54cf060..636f768 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -2,7 +2,7 @@ open Async open Core open Disml -let rec ev_loop read = +(* let rec ev_loop read = Pipe.read read >>= fun frame -> match frame with | `Eof -> return () @@ -35,22 +35,22 @@ let rec ev_loop read = end | _ -> return () end - >>= fun _ -> ev_loop read + >>= fun _ -> ev_loop read *) let main () = let token = match Sys.getenv "DISCORD_TOKEN" with | Some s -> s | None -> failwith "No token" in - let (r,w) = Pipe.create () in - let client = Client.make ~handler:w token in - ev_loop r >>> ignore; + let (_r,w) = Pipe.create () in + let client = Client.create ~handler:w token in + (* ev_loop r >>> ignore; *) Client.start client >>> fun client -> Clock.every (Time.Span.create ~sec:60 ()) (fun () -> - Client.set_status_with client (fun shard -> `String ("Current seq: " ^ (Int.to_string shard.seq))) + Client.set_status_with ~f:(fun shard -> `String ("Current seq: " ^ (Int.to_string shard.seq))) client |> ignore) let _ = -- cgit v1.2.3 From 77f522a5f3fd74749e7a2cd4c849e520f2b6ba89 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Thu, 29 Nov 2018 06:16:23 -0700 Subject: Some sharding work, reconnect is mostly working --- bin/bot.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index 636f768..329c22d 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -50,8 +50,9 @@ let main () = Clock.every (Time.Span.create ~sec:60 ()) (fun () -> + print_endline "Setting status"; Client.set_status_with ~f:(fun shard -> `String ("Current seq: " ^ (Int.to_string shard.seq))) client - |> ignore) + >>> ignore) let _ = Scheduler.go_main ~main () -- cgit v1.2.3 From 473072f66e6c7e228b4f26730cbc7304941fb12b Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 29 Nov 2018 12:55:10 -0700 Subject: functors! --- bin/bot.ml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index 329c22d..92825fc 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -1,6 +1,11 @@ open Async open Core -open Disml + +module Client = Disml.Client.Make(struct + let token = match Sys.getenv "DISCORD_TOKEN" with + | Some t -> t + | None -> failwith "No token in env" +end) (* let rec ev_loop read = Pipe.read read >>= fun frame -> @@ -38,12 +43,8 @@ open Disml >>= fun _ -> ev_loop read *) let main () = - let token = match Sys.getenv "DISCORD_TOKEN" with - | Some s -> s - | None -> failwith "No token" - in let (_r,w) = Pipe.create () in - let client = Client.create ~handler:w token in + let client = Client.init ~handler:w () in (* ev_loop r >>> ignore; *) Client.start client >>> fun client -> -- cgit v1.2.3 From eaccd45894e5b519bca82662d0b950b5f1d9c598 Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Thu, 29 Nov 2018 18:10:45 -0700 Subject: Fix all the errors from coding without merlin --- bin/bot.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index 92825fc..c0a131d 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -52,7 +52,7 @@ let main () = (Time.Span.create ~sec:60 ()) (fun () -> print_endline "Setting status"; - Client.set_status_with ~f:(fun shard -> `String ("Current seq: " ^ (Int.to_string shard.seq))) client + Client.set_status ~status:(`String "Hello!") client >>> ignore) let _ = -- cgit v1.2.3 From c046760eb599e42226c683aecbe33753dfc4d500 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Wed, 12 Dec 2018 15:23:14 -0700 Subject: Complete event dispatch --- bin/bot.ml | 41 ++--------------------------------------- 1 file changed, 2 insertions(+), 39 deletions(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index c0a131d..d1a7ca3 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -5,47 +5,10 @@ module Client = Disml.Client.Make(struct let token = match Sys.getenv "DISCORD_TOKEN" with | Some t -> t | None -> failwith "No token in env" -end) - -(* let rec ev_loop read = - Pipe.read read >>= fun frame -> - match frame with - | `Eof -> return () - | `Ok (t, data) -> begin - match t with - | "MESSAGE_CREATE" -> begin - let msg = Model.to_message data in - let msg_time = Time.(to_span_since_epoch @@ now ()) in - let content = msg.content in - let channel = msg.channel in - if String.is_prefix ~prefix:"!?ping" content then begin - Http.create_message channel @@ `Assoc [ - ("content", `String "Pong!"); - ("tts", `Bool false); - ] - >>> fun resp -> - let message_id = Yojson.Basic.Util.(member "id" resp |> to_string) in - let rtt = Time.(to_span_since_epoch @@ sub (now ()) msg_time) in - Http.edit_message channel message_id @@ `Assoc [ - ("content", `String ("Pong! `" ^ (Float.to_string @@ Time.Span.to_ms rtt) ^ " ms`")); - ] - >>> fun _ -> print_endline "Message Edited!" - end; - return () - end - | "GUILD_CREATE" -> begin - let guild = Model.to_guild data in - print_endline guild.name; - return () - end - | _ -> return () - end - >>= fun _ -> ev_loop read *) +end)(Handler) let main () = - let (_r,w) = Pipe.create () in - let client = Client.init ~handler:w () in - (* ev_loop r >>> ignore; *) + let client = Client.init () in Client.start client >>> fun client -> Clock.every -- cgit v1.2.3 From 73d115ce6260e97f5f7ee47f743d842ffd292662 Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Thu, 13 Dec 2018 14:11:54 -0700 Subject: Working on deriving types from json --- bin/bot.ml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'bin/bot.ml') diff --git a/bin/bot.ml b/bin/bot.ml index d1a7ca3..7d7f714 100644 --- a/bin/bot.ml +++ b/bin/bot.ml @@ -8,8 +8,7 @@ module Client = Disml.Client.Make(struct end)(Handler) let main () = - let client = Client.init () in - Client.start client + Client.start () >>> fun client -> Clock.every (Time.Span.create ~sec:60 ()) -- cgit v1.2.3