Packages

A Gleam library for interacting with the Discord API

Current section

Files

Jump to
shimmer src shimmer@types@message.erl
Raw

src/shimmer@types@message.erl

-module(shimmer@types@message).
-compile(no_auto_import).
-export([from_map/1]).
-export_type([message/0]).
-type message() :: {message,
binary(),
binary(),
shimmer@types@user:user(),
gleam@option:option(binary()),
binary()}.
-spec from_map(gleam@map:map_(gleam@dynamic:dynamic(), gleam@dynamic:dynamic())) -> {ok,
message()} |
{error, shimmer@internal@error:shimmer_error()}.
from_map(Map) ->
case begin
_pipe = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe,
shimmer@internal@map_helpers:dyn_key(<<"id"/utf8>>),
fun shimmer@snowflake:from_dynamic/1
)
end of
{error, _try} -> {error, _try};
{ok, Id} ->
case begin
_pipe@1 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@1,
shimmer@internal@map_helpers:dyn_key(<<"channel_id"/utf8>>),
fun shimmer@snowflake:from_dynamic/1
)
end of
{error, _try@1} -> {error, _try@1};
{ok, Channel_id} ->
case begin
_pipe@2 = Map,
shimmer@internal@map_helpers:get_map_field_safe(
_pipe@2,
shimmer@internal@map_helpers:dyn_key(
<<"author"/utf8>>
)
)
end of
{error, _try@2} -> {error, _try@2};
{ok, Author_map} ->
case begin
_pipe@3 = Author_map,
shimmer@types@user:from_map(
_pipe@3,
fun shimmer@internal@map_helpers:dyn_key/1
)
end of
{error, _try@3} -> {error, _try@3};
{ok, Author} ->
case begin
_pipe@4 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@4,
shimmer@internal@map_helpers:dyn_key(
<<"content"/utf8>>
),
gleam@dynamic:optional(
fun gleam@dynamic:string/1
)
)
end of
{error, _try@4} -> {error, _try@4};
{ok, Content} ->
case begin
_pipe@5 = Map,
shimmer@internal@map_helpers:get_field_safe(
_pipe@5,
shimmer@internal@map_helpers:dyn_key(
<<"timestamp"/utf8>>
),
fun gleam@dynamic:string/1
)
end of
{error, _try@5} -> {error, _try@5};
{ok, Timestamp} ->
{ok,
{message,
Id,
Channel_id,
Author,
Content,
Timestamp}}
end
end
end
end
end
end.