aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/http/http.ml8
-rw-r--r--lib/models/channel/message/message.ml5
-rw-r--r--lib/models/channel/message/message.mli3
-rw-r--r--lib/models/id/channel_id.ml6
-rw-r--r--lib/models/id/channel_id.mli1
5 files changed, 15 insertions, 8 deletions
diff --git a/lib/http/http.ml b/lib/http/http.ml
index 3bcf04e..ec6cb2c 100644
--- a/lib/http/http.ml
+++ b/lib/http/http.ml
@@ -21,12 +21,12 @@ module Base = struct
else
let boundary = "--" ^ multipart_boundary in
let add_file (acc, idx) (filename, file_contents) =
- Printf.sprintf "%s\nContent-Disposition: form-data; name=\"file%i\"; filename=\"%s\"\n\n%s\n%s"
- acc idx filename file_contents boundary, idx + 1
+ sprintf "%s\nContent-Disposition: form-data; name=\"file%i\"; filename=\"%s\"\n\n%s\n%s"
+ acc idx filename file_contents boundary, idx + 1
in
let file_data, _ = List.fold files ~init:("", 1) ~f:add_file in
- Printf.sprintf "%s\nContent-Disposition: form-data; name=\"payload_json\"\n\n%s\n%s%s--"
- boundary json boundary file_data
+ sprintf "%s\nContent-Disposition: form-data; name=\"payload_json\"\n\n%s\n%s%s--"
+ boundary json boundary file_data
end |> Cohttp_async.Body.of_string
let process_request_headers ?(multipart=false) () =
diff --git a/lib/models/channel/message/message.ml b/lib/models/channel/message/message.ml
index 38c9242..7f03638 100644
--- a/lib/models/channel/message/message.ml
+++ b/lib/models/channel/message/message.ml
@@ -50,8 +50,9 @@ let unpin msg =
let reply msg content =
Channel_id.say content msg.channel_id
-let reply_with ?embed ?content ?files ?tts msg =
- Channel_id.send_message ?embed ?content ?files ?tts msg.channel_id
+let reply_with ?embed ?content ?files ?tts ?(reply_mention=false) msg =
+ let reply = if reply_mention then Some msg.id else None in
+ Channel_id.send_message ?embed ?content ?files ?tts ?reply msg.channel_id
let set_content msg cont =
let `Message_id id = msg.id in
diff --git a/lib/models/channel/message/message.mli b/lib/models/channel/message/message.mli
index e0a789a..3046492 100644
--- a/lib/models/channel/message/message.mli
+++ b/lib/models/channel/message/message.mli
@@ -23,12 +23,13 @@ val unpin : t -> unit Deferred.Or_error.t
(** Sugar for [Channel_id.say msg.channel_id content]. *)
val reply : t -> string -> t Deferred.Or_error.t
-(** Sugar for [Channel_id.send_message ?embed ?content ?files ?tts msg.channel_id]. *)
+(** Sugar for [Channel_id.send_message ?embed ?content ?files ?tts ?reply_mention msg]. *)
val reply_with :
?embed:Embed.t ->
?content:string ->
?files:(string * string) list ->
?tts:bool ->
+ ?reply_mention:bool ->
t ->
Message_t.t Deferred.Or_error.t
diff --git a/lib/models/id/channel_id.ml b/lib/models/id/channel_id.ml
index 1aa3fbb..1ea7a46 100644
--- a/lib/models/id/channel_id.ml
+++ b/lib/models/id/channel_id.ml
@@ -4,7 +4,7 @@ include Channel_id_t
exception Invalid_message
exception No_message_found
-let send_message ?embed ?content ?files ?(tts=false) ch =
+let send_message ?embed ?content ?files ?(tts=false) ?reply ch =
let embed = match embed with
| Some e -> Embed.to_yojson e
| None -> `Null in
@@ -14,10 +14,14 @@ let send_message ?embed ?content ?files ?(tts=false) ch =
let () = match embed, content with
| `Null, `Null -> raise Invalid_message
| _ -> () in
+ let message_reference = match reply with
+ | Some m -> `Assoc [("message_id", Message_id.to_yojson m)]
+ | None -> `Null in
Http.create_message ?files (get_id ch) (`Assoc [
("embed", embed);
("content", content);
("tts", `Bool tts);
+ ("message_reference", message_reference);
])
let say content ch =
diff --git a/lib/models/id/channel_id.mli b/lib/models/id/channel_id.mli
index a05d282..2dfff8f 100644
--- a/lib/models/id/channel_id.mli
+++ b/lib/models/id/channel_id.mli
@@ -26,6 +26,7 @@ val send_message :
?content:string ->
?files:(string * string) list ->
?tts:bool ->
+ ?reply:Message_id.t ->
t ->
Message_t.t Deferred.Or_error.t