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/models | |
| 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/models')
| -rw-r--r-- | lib/models/member.ml | 56 |
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 |