Технический дизайн бота.

Общее описание.
Бот не предполагает модульный дизайн. Это не отменяет тематическую разбивку/группировку функций на модули.
Конфиг в формате loose json, в котором возможны коментарии и некоторые вольности с одной стороны, а с другой -
некоторые параметры можно сразу же засунуть в массивы и хэши.

Ratelimits.
Ограничений на количество сообщений в секунду со стороны бота нет. То есть при некоторых настройках сервера, бот может
быть либо залимитирован, либо кикнут, либо забанен.

Нотификации.
Нотификации реализованы через модуль CHI. Это абстракция над базой данных. В качестве бд выбрана BerkeleyDB.
С одной стороны работает разгребальщик, который раз в секунду выгребает все непросроченные события из базы. А с другой -
в эту базу складывают события команды и прочие "продюсеры". Нотификации показываются с помощью desktop notification и с
помощью сообщений в канал notify.

Отложенные нотификации.
Приватные сообщения от бота. Набор пропущенных ивентов, не полученных в канальчике notify. Хранится в течение
retention_days. Показывается в момент джоина в канальчик notify.

И ещё про нотификации.
Нотификации, как правило, сопровождаются звуком, путь до mp3-шки с желаемым аудиоуведомлением можно задать в конфиге,
однако проигрываются нотификации в разных системах по-разному. В Windows например, вообщке не произрываются и desktop
notification не показываются вообще, потому что у меня такой системы нету. В MacOS звук воспроизводится через afplay, а
сами уведомления показываются средствами интерпретатора applescript - osascript. Под GNU/Linux звук воспроизводится
первым, что найдётся - mpg123, mpg321, madplay, mp3blaster, а уведомления показываются через notify-send.

Календарик.
Команда cal работает только на Linux и MacOS, предполагается, что на FreeBSD она работает также как и на MacOS, что
касается других ос - не имплементировано.
