aboutsummaryrefslogtreecommitdiff
path: root/lib/models/member.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/models/member.ml')
-rw-r--r--lib/models/member.ml51
1 files changed, 42 insertions, 9 deletions
diff --git a/lib/models/member.ml b/lib/models/member.ml
index 881586b..25f2f75 100644
--- a/lib/models/member.ml
+++ b/lib/models/member.ml
@@ -1,10 +1,43 @@
+open Async
+open Core
include Member_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 *)
+
+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