aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/member.ml56
1 files changed, 43 insertions, 13 deletions
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