-- | 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 -- @