🤖 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`.
2.1 KiB
title, weight
| title | weight |
|---|---|
| Diagnostics Guide | 1 |
Goal: Identify and fix common pitfalls in Quetza development.
1. Module Discovery Failures
Symptom: The bot starts, but my module is ignored. Cause: Violation of filesystem conventions.
{{% details title="Checklist: Directory Structure" closed="false" %}}
- Does
src/modules/<name>/exist? - Does
module.tsexportname? - Are commands in
commands/(notcmds/)? - Did you run
pnpm build? (Quetza runs fromdist/). {{% /details %}}
2. Command Registration Issues
Symptom: /command does not appear in Discord.
Global vs. Test Guild Registration
- Global: Commands pushed to the application globally can take up to 1 hour to propagate and are subject to stricter rate limits.
- Test Guild: Quetza automatically pushes commands to a specific guild in development mode for instant updates.
- Requirement: Ensure
NODE_ENV=developmentandDEV_GUILD_IDis correctly set in your.env.
- Requirement: Ensure
Rate Limits
Frequent updates to global commands may trigger Discord's rate limits. Use a test guild for iterative development.
3. Interaction Failures
Symptom: "The application did not respond". Cause: Command took > 3 seconds without deferral.
Solution:
// BAD
await longRunningTask();
await interaction.reply('Done'); // Too late!
// GOOD
await interaction.deferReply();
await longRunningTask();
await interaction.editReply('Done');
4. State Management Leaks
Symptom: Bot memory usage grows; cross-server weirdness. Cause: Storing state globally instead of per-guild.
Diagnostic: Check your Controller.
- ❌
private player: AudioPlayer;(Shared by everyone!) - ✅
private players = new Map<string, AudioPlayer>();(Scoped by ID).
5. Event Handling
Symptom: Events fire multiple times or not at all.
- Multiple: Events are additive. Did you register the same handler in two modules?
- None: Did you export
nameandexecutecorrectly?
Tip
Debug Mode: Enable verbose logging to see exactly which modules and commands are loaded at startup.