aboutsummaryrefslogtreecommitdiff
path: root/lib/models
diff options
context:
space:
mode:
authorAdelyn Breelove <[email protected]>2018-12-14 15:09:23 -0700
committerAdelyn Breelove <[email protected]>2018-12-14 15:09:23 -0700
commit043d6adcaf557981f764ec1eb8c6400cc10f3eb8 (patch)
tree5b558c08dfb362fd50a6bdeed81e4776c4218779 /lib/models
parentWorking and pretty message replying! (diff)
downloaddisml-043d6adcaf557981f764ec1eb8c6400cc10f3eb8.tar.xz
disml-043d6adcaf557981f764ec1eb8c6400cc10f3eb8.zip
Improve endpoint module and add Message abstraction
Diffstat (limited to 'lib/models')
-rw-r--r--lib/models/message.ml46
-rw-r--r--lib/models/message.mli1
2 files changed, 42 insertions, 5 deletions
diff --git a/lib/models/message.ml b/lib/models/message.ml
index 7849afe..29148ee 100644
--- a/lib/models/message.ml
+++ b/lib/models/message.ml
@@ -1,7 +1,43 @@
module Make(Http : S.Http) = struct
- let reply (message:Message_t.t) str =
- let msg = `Assoc [
- ("content", `String str)
- ] in
- Http.create_message (string_of_int (message.channel_id)) (msg)
+ open Message_t
+
+ let add_reaction msg (emoji:Emoji_t.t) =
+ let e = match emoji.id with
+ | Some i -> Printf.sprintf "%s:%d" emoji.name i
+ | None -> emoji.name
+ in
+ Http.create_reaction msg.channel_id msg.id e
+
+ let remove_reaction msg (emoji:Emoji_t.t) (user:User_t.t) =
+ let e = match emoji.id with
+ | Some i -> Printf.sprintf "%s:%d" emoji.name i
+ | None -> emoji.name
+ in
+ Http.delete_reaction msg.channel_id msg.id e user.id
+
+ let clear_reactions msg =
+ Http.delete_reactions msg.channel_id msg.id
+
+ let delete msg =
+ Http.delete_message msg.channel_id msg.id
+
+ let pin msg =
+ Http.pin_message msg.channel_id msg.id
+
+ let unpin msg =
+ Http.unpin_message msg.channel_id msg.id
+
+ let reply msg cont =
+ let rep = `Assoc [("content", `String cont)] in
+ Http.create_message msg.channel_id rep
+
+ let set_content msg cont =
+ Message_j.string_of_t { msg with content = cont; }
+ |> Yojson.Safe.from_string
+ |> Http.edit_message msg.channel_id msg.id
+
+ let set_embed msg embed =
+ Message_j.string_of_t { msg with embeds = [embed]; }
+ |> Yojson.Safe.from_string
+ |> Http.edit_message msg.channel_id msg.id
end \ No newline at end of file
diff --git a/lib/models/message.mli b/lib/models/message.mli
new file mode 100644
index 0000000..6f6242f
--- /dev/null
+++ b/lib/models/message.mli
@@ -0,0 +1 @@
+module Make(Http : S.Http) : S.Message \ No newline at end of file