calamity-0.1.20.1: src/Calamity/Client.hs
-- | 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
-- @