diff options
| author | Adelyn Breelove <[email protected]> | 2019-01-14 08:32:20 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-01-14 08:32:20 -0700 |
| commit | ad6415d4dd2e7a595f4aa8a5e231ac875f61903c (patch) | |
| tree | 1dec5d5f5f896eca8499071df50f3aa6370b1146 /lib | |
| parent | Merge branch 'switch-to-deriving_yojson' into 'master' (diff) | |
| download | disml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.tar.xz disml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.zip | |
Member methods are here
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/client.ml | 2 | ||||
| -rw-r--r-- | lib/http.ml | 2 | ||||
| -rw-r--r-- | lib/models/member.ml | 56 | ||||
| -rw-r--r-- | lib/s.ml | 18 |
4 files changed, 53 insertions, 25 deletions
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 @@ -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 |