2.9 KiB
2.9 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 не предоставляет встроенной базы данных.
- Память: Контроллеры хранят состояние в JS объектах
MapилиSet. - Перезапуск: Все состояние теряется при завершении процесса.
- Постоянство: Должно быть реализовано вручную (например, SQLite, Redis) внутри Контроллера.
Область видимости как ключ
Состояние должно быть ключировано по его границам.
Map<GuildID, ...>- Специфично для сервера (Наиболее частое).Map<UserID, ...>- Специфично для пользователя (Боты для личных сообщений - DM).
Модель обработки ошибок
Быстрый и дружелюбный отказ (Fail Fast & Friendly).
- Валидация: Проверяйте права/вводы немедленно.
- Для пользователя: "У вас нет прав" (а не "Ошибка: 403").
- Изоляция: Сбой в
/pingперехватывается сам по себе и не "убивает" бота.
См. также: