From ad6415d4dd2e7a595f4aa8a5e231ac875f61903c Mon Sep 17 00:00:00 2001 From: Adelyn Breelove Date: Mon, 14 Jan 2019 08:32:20 -0700 Subject: Member methods are here --- lib/client.ml | 2 +- lib/http.ml | 2 +- lib/models/member.ml | 56 ++++++++++++++++++++++++++++++++++++++++------------ lib/s.ml | 18 ++++++++--------- 4 files changed, 53 insertions(+), 25 deletions(-) (limited to 'lib') diff --git a/lib/client.ml b/lib/client.ml index 6ee4a3a..45b6d54 100644 --- a/lib/client.ml +++ b/lib/client.ml @@ -1,4 +1,4 @@ -module Make(T : S.Token)(H : S.Handler_f) = struct +module Make(T : S.ClientOptions)(H : S.Handler_f) = struct open Async module Http = Http.Make(T) diff --git a/lib/http.ml b/lib/http.ml index 9ef9334..58bdd4e 100644 --- a/lib/http.ml +++ b/lib/http.ml @@ -1,4 +1,4 @@ -module Make(T : S.Token) = struct +module Make(T : S.ClientOptions) = struct open Core open Async open Cohttp diff --git a/lib/models/member.ml b/lib/models/member.ml index 190d865..40e82c2 100644 --- a/lib/models/member.ml +++ b/lib/models/member.ml @@ -1,15 +1,45 @@ module Make(Http : S.Http) = struct - type partial_member = Member_t.partial_member - type member = Member_t.member - type member_update = Member_t.member_update - type t = Member_t.t - (* val add_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.t - val remove_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.t - val ban : ?reason:string -> ?days:int -> Member_t.t -> Yojson.Safe.json Deferred.t - val ban : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.t - val kick : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.t - val mute : Member_t.t -> Yojson.Safe.json Deferred.t - val deafen : Member_t.t -> Yojson.Safe.json Deferred.t - val unmute : Member_t.t -> Yojson.Safe.json Deferred.t - val undeafen : Member_t.t -> Yojson.Safe.json Deferred.t *) + open Async + open Core + include Member_t + + let add_role ~(role:Role_t.t) member = + Http.add_member_role member.guild_id member.user.id role.id + >>| Result.map ~f:ignore + + let remove_role ~(role:Role_t.t) member = + Http.remove_member_role member.guild_id member.user.id role.id + >>| Result.map ~f:ignore + + let ban ?(reason="") ?(days=0) member = + Http.guild_ban_add member.guild_id member.user.id (`Assoc [ + ("delete-message-days", `Int days); + ("reason", `String reason); + ]) >>| Result.map ~f:ignore + + let kick ?reason member = + let payload = match reason with + | Some r -> `Assoc [("reason", `String r)] + | None -> `Null + in Http.remove_member member.guild_id member.user.id payload >>| Result.map ~f:ignore + + let mute member = + Http.edit_member member.guild_id member.user.id (`Assoc [ + ("mute", `Bool true); + ]) >>| Result.map ~f:ignore + + let deafen member = + Http.edit_member member.guild_id member.user.id (`Assoc [ + ("deaf", `Bool true); + ]) >>| Result.map ~f:ignore + + let unmute member = + Http.edit_member member.guild_id member.user.id (`Assoc [ + ("mute", `Bool false); + ]) >>| Result.map ~f:ignore + + let undeafen member = + Http.edit_member member.guild_id member.user.id (`Assoc [ + ("deaf", `Bool false); + ]) >>| Result.map ~f:ignore end \ No newline at end of file diff --git a/lib/s.ml b/lib/s.ml index 86446aa..c1c4583 100644 --- a/lib/s.ml +++ b/lib/s.ml @@ -1,6 +1,6 @@ open Async -module type Token = sig +module type ClientOptions = sig val token : string end @@ -46,15 +46,13 @@ end module type Member = sig type t = Member_t.t - (* val add_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.Or_error.t - val remove_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.Or_error.t - val ban : ?reason:string -> ?days:int -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val ban : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val kick : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val mute : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val deafen : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val unmute : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t - val undeafen : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t *) + val add_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t + val remove_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t + val ban : ?reason:string -> ?days:int -> Member_t.t -> unit Deferred.Or_error.t + val kick : ?reason:string -> Member_t.t -> unit Deferred.Or_error.t + val deafen : Member_t.t -> unit Deferred.Or_error.t + val unmute : Member_t.t -> unit Deferred.Or_error.t + val undeafen : Member_t.t -> unit Deferred.Or_error.t end module type Reaction = sig -- cgit v1.2.3