Files
ermnvldmr.com/services/docs/content/ru/quetza/getting-started.md
T
deytenit b3638f4d63 fix: cyrillic fonts, dev certs, page head, and ru-text typography (#67)
🤖 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`.
2026-10-25 15:21:09 +03:00

5.3 KiB

title, weight
title weight
Начало работы 1

Quetza — модульный фреймворк на TypeScript для Discord-ботов. Он позволяет собирать ботов из самодостаточных независимых модулей.

Что такое Quetza?

Quetza даёт архитектурный каркас, где разработка новой функциональности сводится к добавлению модулей, а не правке ядра. Это решает проблему жёсткой архитектуры за счёт инверсии зависимостей: ядро ничего не знает о модулях, а модули взаимодействуют с системой через типизированные контракты.

Основная философия

Проблема

Традиционные монолитные боты хрупки: каждая новая функция требует правок в ядре, запутывает зависимости и раздувает кодовую базу, которую со временем становится сложно тестировать и поддерживать.

Решение

Quetza работает с модулями как с плагинами:

  • Расширение без правки ядра: добавьте каталог с модулем, и функция подключена. Менять исходный код ядра не нужно.
  • Изоляция: модули выполняются независимо друг от друга.
  • Композиция: подключайте и отключайте возможности, добавляя или удаляя каталоги модулей.

Высокоуровневая архитектура

Quetza состоит из трёх уровней:

  1. Базовый уровень (Foundation Layer): клиент Discord.js, расширенный реестрами команд, событий и модулей. Выступает в роли сервис-локатора.
  2. Модульный уровень (Module Layer): изолированные наборы функций. Модуль объявляет собственные команды и события через стандартизированную структуру файлов.
  3. Сервисный уровень (Service Layer): контроллеры для управления состоянием бизнес-логики (например, аудиоплеером или контекстом диалога) на разных серверах (guilds).

Ключевые концепции

Ментальная модель

При работе с Quetza полезна следующая аналогия:

  • Модули — плагины: независимые каталоги, обнаруживаемые во время запуска.
  • Команды — эндпоинты: обработчики без состояния, работающие аналогично конечным точкам REST API.
  • События — наблюдатели (observers): реактивная логика, подписанная на события жизненного цикла Discord.
  • Контроллеры — сервисы: менеджеры состояния, связывающие команды без состояния с долговременной логикой бота.

Границы системы

Ограничения, которые важно учитывать при проектировании:

  • Нет встроенного постоянного хранилища (persistence): состояние в памяти сбрасывается при перезапуске. Для долговременного хранения нужна внешняя база данных.
  • Нет межмодульного взаимодействия: модули не вызывают друг друга напрямую, что гарантирует слабую связанность.
  • Нет динамической перезагрузки: модули загружаются один раз при старте процесса.

Архитектурные инварианты

Quetza ставит предсказуемость выше избыточной гибкости за счёт строгих соглашений:

  • Обнаружение по соглашениям: чтобы модуль загрузился, структура его каталога обязана содержать module.ts, commands/ и events/.
  • Однофазная инициализация: все модули загружаются до установки соединения с Discord.
  • Соблюдение контрактов: команды и события должны экспортировать типизированные интерфейсы, необходимые для регистрации.

См. также