diff options
Diffstat (limited to 'lib/models/member.ml')
| -rw-r--r-- | lib/models/member.ml | 51 |
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 |