-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()}. -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}); _ -> {unknown_packet, Generic_packet} end. -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), gleam@list:each(Handlers, fun(Handler) -> Handler(Bot, Packet) end).