aboutsummaryrefslogtreecommitdiff
path: root/lib
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
parentMerge branch 'switch-to-deriving_yojson' into 'master' (diff)
downloaddisml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.tar.xz
disml-ad6415d4dd2e7a595f4aa8a5e231ac875f61903c.zip
Member methods are here
Diffstat (limited to 'lib')
-rw-r--r--lib/client.ml2
-rw-r--r--lib/http.ml2
-rw-r--r--lib/models/member.ml56
-rw-r--r--lib/s.ml18
4 files changed, 53 insertions, 25 deletions
diff --git a/lib/client.ml b/lib/client.ml
index 6ee4a3a..45b6d54 100644
--- a/lib/client.ml
+++ b/lib/client.ml
@@ -1,4 +1,4 @@
-module Make(T : S.Token)(H : S.Handler_f) = struct
+module Make(T : S.ClientOptions)(H : S.Handler_f) = struct
open Async
module Http = Http.Make(T)
diff --git a/lib/http.ml b/lib/http.ml
index 9ef9334..58bdd4e 100644
--- a/lib/http.ml
+++ b/lib/http.ml
@@ -1,4 +1,4 @@
-module Make(T : S.Token) = struct
+module Make(T : S.ClientOptions) = struct
open Core
open Async
open Cohttp
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
diff --git a/lib/s.ml b/lib/s.ml
index 86446aa..c1c4583 100644
--- a/lib/s.ml
+++ b/lib/s.ml
@@ -1,6 +1,6 @@
open Async
-module type Token = sig
+module type ClientOptions = sig
val token : string
end
@@ -46,15 +46,13 @@ end
module type Member = sig
type t = Member_t.t
- (* val add_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val remove_role : Member_t.t -> Role_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val ban : ?reason:string -> ?days:int -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val ban : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val kick : ?reason:string -> Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val mute : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val deafen : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val unmute : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t
- val undeafen : Member_t.t -> Yojson.Safe.json Deferred.Or_error.t *)
+ val add_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t
+ val remove_role : role:Role_t.t -> Member_t.t -> unit Deferred.Or_error.t
+ val ban : ?reason:string -> ?days:int -> Member_t.t -> unit Deferred.Or_error.t
+ val kick : ?reason:string -> Member_t.t -> unit Deferred.Or_error.t
+ val deafen : Member_t.t -> unit Deferred.Or_error.t
+ val unmute : Member_t.t -> unit Deferred.Or_error.t
+ val undeafen : Member_t.t -> unit Deferred.Or_error.t
end
module type Reaction = sig