aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2019-01-14 08:32:20 -0700
committerAdelyn Breelove <[email protected]>2019-01-14 08:32:20 -0700
commitad6415d4dd2e7a595f4aa8a5e231ac875f61903c (patch)
tree1dec5d5f5f896eca8499071df50f3aa6370b1146 /lib/models
parentMerge branch 'switch-to-deriving_yojson' into 'master' (diff)
downloaddisml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.tar.xz
disml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.zip
Member methods are here
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