diff options
Diffstat (limited to 'bin/bot.ml')
| -rw-r--r-- | bin/bot.ml | 42 |
1 files changed, 26 insertions, 16 deletions
@@ -1,20 +1,30 @@ -open Lwt.Infix +open Async +open Core open Disml -let main sharder = - Lwt_engine.on_timer 60.0 true begin - fun _ev -> Sharder.set_status_with sharder @@ begin - fun shard -> - `String ("Current seq: " ^ string_of_int shard.seq) - end - >|= (fun _ -> print_endline "Status set!") - |> ignore; - end +let main () = + let token = match Sys.getenv "DISCORD_TOKEN" with + | Some s -> s + | None -> failwith "No token" + in + let client = Client.make token in + Client.on "MESSAGE_CREATE" client (fun msg -> + 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 _ -> print_endline "Message sent!"; + ); + 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))) + |> ignore) let _ = - Sharder.start @@ Sys.getenv "DISCORD_TOKEN" - >>= (fun sharder -> - main sharder - |> ignore; - sharder.promise) - |> Lwt_main.run
\ No newline at end of file + Scheduler.go_main ~main ()
\ No newline at end of file |