diff options
| author | Adelyn Breelove <[email protected]> | 2019-01-21 08:52:33 -0700 |
|---|---|---|
| committer | Adelyn Breelove <[email protected]> | 2019-01-21 08:52:33 -0700 |
| commit | c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e (patch) | |
| tree | 3fe6679ff4520899bab9ab9fb96145efd614a3a3 /lib/models/channel/message/message.ml | |
| parent | swap order of fields in example bot to reflect correct ordering (diff) | |
| download | disml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.tar.xz disml-c3d6e15bb89d4a93a2fa486db6c8e126baf4da2e.zip | |
folder restructure
Diffstat (limited to 'lib/models/channel/message/message.ml')
| -rw-r--r-- | lib/models/channel/message/message.ml | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/models/channel/message/message.ml b/lib/models/channel/message/message.ml new file mode 100644 index 0000000..f772c48 --- /dev/null +++ b/lib/models/channel/message/message.ml @@ -0,0 +1,70 @@ +open Core +open Async +include Message_t + +let add_reaction msg (emoji:Emoji.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 + >>| Result.map ~f:ignore + +let remove_reaction msg (emoji:Emoji.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 + >>| Result.map ~f:ignore + +let clear_reactions msg = + Http.delete_reactions msg.channel_id msg.id + >>| Result.map ~f:ignore + +let delete msg = + Http.delete_message msg.channel_id msg.id + >>| Result.map ~f:ignore + +let pin msg = + Http.pin_message msg.channel_id msg.id + >>| Result.map ~f:ignore + +let unpin msg = + Http.unpin_message msg.channel_id msg.id + >>| Result.map ~f:ignore + +let reply msg cont = + let rep = `Assoc [("content", `String cont)] in + Http.create_message msg.channel_id rep + >>| Result.map ~f:Message_t.of_yojson_exn + +let reply_with ?embed ?content ?file ?(tts=false) msg = + let embed = match embed with + | Some e -> Embed.to_yojson e + | None -> `Null in + let content = match content with + | Some c -> `String c + | None -> `Null in + let file = match file with + | Some f -> `String f + | None -> `Null in + let () = match embed, content with + | `Null, `Null -> raise Channel.Invalid_message + | _ -> () in + Http.create_message (msg.channel_id) (`Assoc [ + ("embed", embed); + ("content", content); + ("file", file); + ("tts", `Bool tts); + ]) >>| Result.map ~f:Message_t.of_yojson_exn + +let set_content msg cont = + to_yojson { msg with content = cont; } + |> Http.edit_message msg.channel_id msg.id + >>| Result.map ~f:Message_t.of_yojson_exn + +let set_embed msg embed = + to_yojson { msg with embeds = [embed]; } + |> Http.edit_message msg.channel_id msg.id + >>| Result.map ~f:Message_t.of_yojson_exn
\ No newline at end of file |