Packages

A purely Gleam Discord library built from the ground up with stratus.

Current section

Files

Jump to
glyph src glyph@builders@message.erl
Raw

src/glyph@builders@message.erl

-module(glyph@builders@message).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, content/2, is_tts/1, embed/2, reply_to/2, stickers/2, suppress_notifications/1, mentions_everyone/1, mentions_users/1, mentions_roles/1]).
-spec new() -> glyph@models@discord:message_payload().
new() ->
{message_payload, none, none, none, none, none, none, none, none, none}.
-spec content(glyph@models@discord:message_payload(), binary()) -> glyph@models@discord:message_payload().
content(M, Content) ->
erlang:setelement(2, M, {some, Content}).
-spec is_tts(glyph@models@discord:message_payload()) -> glyph@models@discord:message_payload().
is_tts(M) ->
erlang:setelement(3, M, {some, true}).
-spec embed(
glyph@models@discord:message_payload(),
glyph@models@discord:embed()
) -> glyph@models@discord:message_payload().
embed(M, E) ->
Embeds = gleam@option:unwrap(erlang:element(4, M), []),
erlang:setelement(4, M, {some, gleam@list:append(Embeds, [E])}).
-spec reply_to(
glyph@models@discord:message_payload(),
glyph@models@discord:message()
) -> glyph@models@discord:message_payload().
reply_to(M, Msg) ->
Ref = {message_reference,
{some, erlang:element(2, Msg)},
{some, erlang:element(3, Msg)},
none,
{some, true}},
erlang:setelement(6, M, {some, Ref}).
-spec stickers(glyph@models@discord:message_payload(), list(binary())) -> glyph@models@discord:message_payload().
stickers(M, Sticker_ids) ->
erlang:setelement(7, M, {some, gleam@list:take(Sticker_ids, 3)}).
-spec suppress_notifications(glyph@models@discord:message_payload()) -> glyph@models@discord:message_payload().
suppress_notifications(M) ->
Suppress_notifs_flag = erlang:'bsl'(1, 12),
erlang:setelement(8, M, {some, Suppress_notifs_flag}).
-spec empty_allowed_mentions() -> glyph@models@discord:allowed_mentions().
empty_allowed_mentions() ->
{allowed_mentions, [], [], [], false}.
-spec mentions_everyone(glyph@models@discord:message_payload()) -> glyph@models@discord:message_payload().
mentions_everyone(M) ->
Allowed_mentions = gleam@option:unwrap(
erlang:element(5, M),
empty_allowed_mentions()
),
Updated_mentions = erlang:setelement(
2,
Allowed_mentions,
[everyone | erlang:element(2, Allowed_mentions)]
),
erlang:setelement(5, M, {some, Updated_mentions}).
-spec mentions_users(glyph@models@discord:message_payload()) -> glyph@models@discord:message_payload().
mentions_users(M) ->
Allowed_mentions = gleam@option:unwrap(
erlang:element(5, M),
empty_allowed_mentions()
),
Updated_mentions = erlang:setelement(
2,
Allowed_mentions,
[users | erlang:element(2, Allowed_mentions)]
),
erlang:setelement(5, M, {some, Updated_mentions}).
-spec mentions_roles(glyph@models@discord:message_payload()) -> glyph@models@discord:message_payload().
mentions_roles(M) ->
Allowed_mentions = gleam@option:unwrap(
erlang:element(5, M),
empty_allowed_mentions()
),
Updated_mentions = erlang:setelement(
2,
Allowed_mentions,
[roles | erlang:element(2, Allowed_mentions)]
),
erlang:setelement(5, M, {some, Updated_mentions}).