diff options
| author | Adelyn Breedlove <[email protected]> | 2019-01-19 15:58:31 -0700 |
|---|---|---|
| committer | Adelyn Breedlove <[email protected]> | 2019-01-19 15:58:31 -0700 |
| commit | b678d7312518bb0ff74d7db364bcbbcded5c1609 (patch) | |
| tree | 39094fc179c33fc67269ffc3fea218384c558cfe /lib/models | |
| parent | update docs export (diff) | |
| download | disml-b678d7312518bb0ff74d7db364bcbbcded5c1609.tar.xz disml-b678d7312518bb0ff74d7db364bcbbcded5c1609.zip | |
more updates
Diffstat (limited to 'lib/models')
| -rw-r--r-- | lib/models/channel.ml | 2 | ||||
| -rw-r--r-- | lib/models/channel.mli | 24 | ||||
| -rw-r--r-- | lib/models/embed.ml | 18 | ||||
| -rw-r--r-- | lib/models/message.ml | 20 | ||||
| -rw-r--r-- | lib/models/message.mli | 7 |
5 files changed, 68 insertions, 3 deletions
diff --git a/lib/models/channel.ml b/lib/models/channel.ml index c3524ef..972f888 100644 --- a/lib/models/channel.ml +++ b/lib/models/channel.ml @@ -11,7 +11,7 @@ let say ~content ch = let send_message ?embed ?content ?file ?(tts=false) ch = let embed = match embed with - | Some e -> e + | Some e -> Embed.to_yojson e | None -> `Null in let content = match content with | Some c -> `String c diff --git a/lib/models/channel.mli b/lib/models/channel.mli index 6ca814e..001bb05 100644 --- a/lib/models/channel.mli +++ b/lib/models/channel.mli @@ -1,9 +1,31 @@ open Async include module type of Channel_t +exception Invalid_message +exception No_message_found + +(** Simple version of send_message that only takes [~content] *) val say : content:string -> t -> Message_t.t Deferred.Or_error.t + +(** Advanced message sending. + + Raises {!Channel.Invalid_message} if one of content or embed is not set. + + {3 Examples} + {[ + open Core + open Disml + + let check_command (msg : Message.t) = + if String.is_prefix ~prefix:"!hello" msg.content then + let embed = { Embed.default with title = Some "Hello World!" } in + Channel.send_message ~embed msg.channel >>> ignore + + Client.message_create := check_command + ]} +*) val send_message : - ?embed:Yojson.Safe.json -> + ?embed:Embed.t -> ?content:string -> ?file:string -> ?tts:bool -> diff --git a/lib/models/embed.ml b/lib/models/embed.ml index 4faaba7..7dbbeaa 100644 --- a/lib/models/embed.ml +++ b/lib/models/embed.ml @@ -51,4 +51,20 @@ type t = { provider: provider option [@default None]; author: author option [@default None]; fields: field list [@default []]; -} [@@deriving sexp, yojson { strict = false }]
\ No newline at end of file +} [@@deriving sexp, yojson { strict = false }] + +let default = { + title = None; + kind = None; + description = None; + url = None; + timestamp = None; + colour = None; + footer = None; + image = None; + thumbnail = None; + video = None; + provider = None; + author = None; + fields = []; +}
\ No newline at end of file diff --git a/lib/models/message.ml b/lib/models/message.ml index 5bc06b7..f772c48 100644 --- a/lib/models/message.ml +++ b/lib/models/message.ml @@ -39,6 +39,26 @@ let reply msg cont = 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 diff --git a/lib/models/message.mli b/lib/models/message.mli index 40c87d4..09e62a4 100644 --- a/lib/models/message.mli +++ b/lib/models/message.mli @@ -9,5 +9,12 @@ val delete : t -> unit Deferred.Or_error.t val pin : t -> unit Deferred.Or_error.t val unpin : t -> unit Deferred.Or_error.t val reply : t -> string -> t Deferred.Or_error.t +val reply_with : + ?embed:Embed.t -> + ?content:string -> + ?file:string -> + ?tts:bool -> + t -> + Message_t.t Deferred.Or_error.t val set_content : t -> string -> t Deferred.Or_error.t val set_embed : t -> Embed.t -> t Deferred.Or_error.t
\ No newline at end of file |