🤖 PR generated for branch `fix/cyrillic-fonts-dev-certs-and-page-head`.
### Changes Summary
- **Fonts**: Add Cyrillic glyph subsets for Lato, EB Garamond, and Fira
Code.
- **Dev**: Support remote Root CA and encrypted dev CA key in
`.env.dev`.
- **UI & Kits**: Add size variant to `Breadcrumbs` component and enlarge
`PageHead` breadcrumbs with tuned collapse scroll threshold.
- **ESLint**: Add `no-hanging-particles` i18n & markdown typography rule
with auto-fixer.
- **Content & i18n**: Apply `ru-text` editorial and typography polish
(em dashes, number ranges, «ё» restoration, non-breaking spaces) across
`services/www` and `services/docs`.
3.2 KiB
3.2 KiB
title, weight
| title | weight |
|---|---|
| Модульная система | 2 |
Цель: разобрать терминологию и механику работы базовой единицы Quetza — модуля.
Терминология
Объявление модуля (Module Declaration)
Файл module.ts служит манифестом и точкой входа при поиске модулей.
export const name = 'my-module'; // ID
export const description = '...'; // Документация
Регистрация команд (Command Registration)
Выполняется при наступлении события ready:
- Quetza сканирует каталоги
commands/. - Формирует структуру
ApplicationCommandData. - Отправляет данные (PUT-запрос) в API Discord.
Внедрение контроллера (Controller Injection)
Экземпляр контроллера передаётся аргументом при вызове (injected), а не импортируется модулем напрямую:
// Фреймворк вызывает это:
execute(client, interaction, controller);
- Зачем: фреймворк берёт на себя управление жизненным циклом контроллера (один синглтон на модуль).
Управление состоянием
Эфемерность по умолчанию
В Quetza нет встроенной базы данных.
- Память: контроллеры сохраняют данные в стандартных JavaScript-коллекциях
MapилиSet. - Перезапуск: при остановке процесса всё состояние в памяти сбрасывается.
- Постоянное хранение: если данные нужно сохранять между запусками, подключите внешнюю СУБД (например, SQLite или Redis) внутри контроллера.
Область видимости как ключ
Ключи состояния должны соответствовать области его видимости:
Map<GuildID, ...>— уровень сервера (основной сценарий).Map<UserID, ...>— уровень пользователя (боты для личных сообщений, DM).
Модель обработки ошибок
Быстрый и понятный отказ (Fail Fast & Friendly).
- Валидация: проверяйте права и входные параметры сразу.
- Сообщения для пользователя: «У вас нет прав» вместо сухого кода вроде «Ошибка: 403».
- Изоляция: сбой внутри
/pingперехватывается локально и не роняет процесс бота.