diff options
| author | Adelyn Breelove <[email protected]> | 2019-02-13 12:21:19 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-02-13 12:21:19 -0700 |
| commit | f241545b6e9a46fc0482ab66db4d9bbdf44cae4f (patch) | |
| tree | 6f68fc345b566154aa1d7393472ea1b6ad0f38d6 /lib/gateway/sharder.ml | |
| parent | Update test bot (diff) | |
| download | disml-f241545b6e9a46fc0482ab66db4d9bbdf44cae4f.tar.xz disml-f241545b6e9a46fc0482ab66db4d9bbdf44cae4f.zip | |
Change api of the set_status methods
Diffstat (limited to 'lib/gateway/sharder.ml')
| -rw-r--r-- | lib/gateway/sharder.ml | 54 |
1 files changed, 19 insertions, 35 deletions
diff --git a/lib/gateway/sharder.ml b/lib/gateway/sharder.ml index 9fcb10d..4317f80 100644 --- a/lib/gateway/sharder.ml +++ b/lib/gateway/sharder.ml @@ -107,40 +107,29 @@ module Shard = struct ; session = session
}
- let set_status ~(status:Yojson.Safe.t) shard =
- let payload = match status with
- | `Assoc ["name", `String name; "type", `Int t]
- | `Assoc ["type", `Int t; "name", `String name] ->
- `Assoc [
- "status", `String "online";
- "afk", `Bool false;
- "since", `Null;
- "game", `Assoc [
- "name", `String name;
- "type", `Int t;
- ]
- ]
- | `String name ->
- `Assoc [
- "status", `String "online";
- "afk", `Bool false;
- "since", `Null;
- "game", `Assoc [
- "name", `String name;
- "type", `Int 0
- ]
+ let set_status ?(status="online") ?(kind=1) ?name ?since shard =
+ let since = Option.(since >>| (fun v -> `Int v) |> value ~default:`Null) in
+ let game = match name with
+ | Some name -> `Assoc [ "name", `String name; "type", `Int kind ]
+ | None -> `Null
+ in
+ let payload = `Assoc
+ [ "status", `String status
+ ; "afk", `Bool false
+ ; "since", since
+ ; "game", game
]
- | _ -> raise Invalid_Payload
in
Ivar.read shard.ready >>= fun _ ->
push_frame ~payload ~ev:STATUS_UPDATE shard
let request_guild_members ?(query="") ?(limit=0) ~guild shard =
- let payload = `Assoc [
- "guild_id", `String (Int.to_string guild);
- "query", `String query;
- "limit", `Int limit;
- ] in
+ let payload = `Assoc
+ [ "guild_id", `String (Int.to_string guild)
+ ; "query", `String query
+ ; "limit", `Int limit
+ ]
+ in
Ivar.read shard.ready >>= fun _ ->
push_frame ~payload ~ev:REQUEST_GUILD_MEMBERS shard
@@ -372,14 +361,9 @@ let start ?count ?compress ?large_threshold () = >>| fun shards ->
{ shards }
-let set_status ~status sharder =
- Deferred.all @@ List.map ~f:(fun t ->
- Shard.set_status ~status t.state
- ) sharder.shards
-
-let set_status_with ~f sharder =
+let set_status ?status ?kind ?name ?since sharder =
Deferred.all @@ List.map ~f:(fun t ->
- Shard.set_status ~status:(f t.state) t.state
+ Shard.set_status ?status ?kind ?name ?since t.state
) sharder.shards
let request_guild_members ?query ?limit ~guild sharder =
|