Initial version
This commit is contained in:
31
DESIGN
Normal file
31
DESIGN
Normal file
@@ -0,0 +1,31 @@
|
||||
Технический дизайн бота.
|
||||
|
||||
Общее описание.
|
||||
Бот не предполагает модульный дизайн. Это не отменяет тематическую разбивку/группировку функций на модули.
|
||||
Конфиг в формате 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, что
|
||||
касается других ос - не имплементировано.
|
||||
Reference in New Issue
Block a user