discord_gleam/ws/event_loop
Event loop for handling the discord gateway websocket
Dispatches events to registered event handlers
Types
The message type for the event loop actor
pub type EventLoopMessage {
Start
Restart(host: String, session_id: String, reconnect: Bool)
Stop
}
Constructors
-
Start -
Restart(host: String, session_id: String, reconnect: Bool) -
Stop
pub type WebsocketMessage(user_message) {
BotMessage(bot.BotMessage)
User(user_message)
}
Constructors
-
BotMessage(bot.BotMessage) -
User(user_message)
pub type WebsocketState(user_state, user_message) {
State(
has_received_hello: Bool,
event_loop_subject: process.Subject(EventLoopMessage),
user_state: user_state,
bot: bot.Bot,
mode: event_handler.Mode(user_state, user_message),
heartbeat: option.Option(repeatedly.Repeater(Nil)),
)
}
Constructors
-
State( has_received_hello: Bool, event_loop_subject: process.Subject(EventLoopMessage), user_state: user_state, bot: bot.Bot, mode: event_handler.Mode(user_state, user_message), heartbeat: option.Option(repeatedly.Repeater(Nil)), )
Values
pub fn start_event_loop(
mode mode: event_handler.Mode(user_state, user_message),
host host: String,
reconnect reconnect: Bool,
session_id session_id: String,
state_ets state_ets: booklet.Booklet(gateway_state.GatewayState),
) -> Result(
actor.Started(process.Subject(EventLoopMessage)),
actor.StartError,
)
Start the event loop, with a set of event handlers.