32 lines
3.1 KiB
Plaintext
32 lines
3.1 KiB
Plaintext
Технический дизайн бота.
|
|
|
|
Общее описание.
|
|
Бот не предполагает модульный дизайн. Это не отменяет тематическую разбивку/группировку функций на модули.
|
|
Конфиг в формате 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, что
|
|
касается других ос - не имплементировано.
|