Current section

Files

Jump to
discord_gleam src discord_gleam@event_handler.erl
Raw

src/discord_gleam@event_handler.erl

-module(discord_gleam@event_handler).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([handle_event/3]).
-export_type([packet/0]).
-type packet() :: {message_packet,
discord_gleam@ws@packets@message:message_packet()} |
{ready_packet, discord_gleam@ws@packets@ready:ready_packet()} |
{unknown_packet, discord_gleam@ws@packets@generic:generic_packet()} |
{message_delete_packet,
discord_gleam@ws@packets@message_delete:message_delete_packet()} |
{interaction_create,
discord_gleam@ws@packets@interaction_create:interaction_create()}.
-file("src/discord_gleam/event_handler.gleam", 23).
-spec internal_handler(discord_gleam@types@bot:bot(), packet()) -> nil.
internal_handler(Bot, Packet) ->
case Packet of
{message_packet, Msg} ->
case erlang:element(2, erlang:element(5, Bot)) of
{some, Cache} ->
bravo@uset:insert(
Cache,
[{erlang:element(3, erlang:element(5, Msg)),
erlang:element(5, Msg)}]
),
nil;
none ->
nil
end,
nil;
_ ->
nil
end.
-file("src/discord_gleam/event_handler.gleam", 57).
-spec decode_packet(binary()) -> packet().
decode_packet(Msg) ->
Generic_packet = discord_gleam@ws@packets@generic:string_to_data(Msg),
case erlang:element(2, Generic_packet) of
<<"MESSAGE_CREATE"/utf8>> ->
_pipe = discord_gleam@ws@packets@message:string_to_data(Msg),
_pipe@1 = gleam@result:map(
_pipe,
fun(Field@0) -> {message_packet, Field@0} end
),
gleam@result:unwrap(_pipe@1, {unknown_packet, Generic_packet});
<<"READY"/utf8>> ->
_pipe@2 = discord_gleam@ws@packets@ready:string_to_data(Msg),
_pipe@3 = gleam@result:map(
_pipe@2,
fun(Field@0) -> {ready_packet, Field@0} end
),
gleam@result:unwrap(_pipe@3, {unknown_packet, Generic_packet});
<<"MESSAGE_DELETE"/utf8>> ->
_pipe@4 = discord_gleam@ws@packets@message_delete:string_to_data(
Msg
),
_pipe@5 = gleam@result:map(
_pipe@4,
fun(Field@0) -> {message_delete_packet, Field@0} end
),
gleam@result:unwrap(_pipe@5, {unknown_packet, Generic_packet});
<<"INTERACTION_CREATE"/utf8>> ->
_pipe@6 = discord_gleam@ws@packets@interaction_create:string_to_data(
Msg
),
_pipe@7 = gleam@result:map(
_pipe@6,
fun(Field@0) -> {interaction_create, Field@0} end
),
gleam@result:unwrap(_pipe@7, {unknown_packet, Generic_packet});
_ ->
{unknown_packet, Generic_packet}
end.
-file("src/discord_gleam/event_handler.gleam", 42).
-spec handle_event(
discord_gleam@types@bot:bot(),
binary(),
list(fun((discord_gleam@types@bot:bot(), packet()) -> nil))
) -> nil.
handle_event(Bot, Msg, Handlers) ->
Packet = decode_packet(Msg),
case Packet of
{unknown_packet, _} ->
nil;
_ ->
internal_handler(Bot, Packet)
end,
gleam@list:each(Handlers, fun(Handler) -> Handler(Bot, Packet) end).