-- | Module containing the core client stuff module Calamity.Client ( module Calamity.Client.Client, module Calamity.Client.Types, -- * Client stuff -- $clientDocs ) where import Calamity.Client.Client import Calamity.Client.Types {- $clientDocs This module provides the core components for running a discord client, along with abstractions for registering event handlers, firing custom events, and waiting on events. ==== Registered Metrics 1. Counter: @"events_recieved" [type, shard]@ Incremented for each event received, the @type@ parameter is the type of event (the name of the constructor in 'Calamity.Gateway.DispatchEvents.DispatchData'), and @shard@ is the ID of the shard that received the event. 2. Histogram: @"cache_update"@ Tracks how long it takes to update the cache after recieving an event. 3. Histogram: @"event_handle"@ Tracks how long it takes to process an event handler for an event. ==== Examples A simple client that prints every message recieved: @ 'Control.Monad.void' . 'Polysemy.runFinal' . 'Polysemy.embedToFinal' . 'Calamity.Cache.InMemory.runCacheInMemory' . 'Calamity.Metrics.Noop.runMetricsNoop' $ 'runBotIO' ('Calamity.Types.Token.BotToken' token) $ do 'react' \@\''MessageCreateEvt' $ \\msg -> 'Polysemy.embed' $ 'print' msg @ -}