create-bunspace 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +181 -0
- package/dist/bin.js +5755 -0
- package/dist/templates/monorepo/CLAUDE.md +164 -0
- package/dist/templates/monorepo/LICENSE +21 -0
- package/dist/templates/monorepo/MUST-FOLLOW-GUIDELINES.md +269 -0
- package/dist/templates/monorepo/README.md +74 -0
- package/dist/templates/monorepo/SYNC_VERIFICATION.md +1 -0
- package/dist/templates/monorepo/apps/example/package.json +19 -0
- package/dist/templates/monorepo/apps/example/src/index.ts +23 -0
- package/dist/templates/monorepo/apps/example/src/types/index.ts +7 -0
- package/dist/templates/monorepo/apps/example/src/utils/index.ts +7 -0
- package/dist/templates/monorepo/core/packages/main/package.json +41 -0
- package/dist/templates/monorepo/core/packages/main/rolldown.config.ts +24 -0
- package/dist/templates/monorepo/core/packages/main/src/index.ts +80 -0
- package/dist/templates/monorepo/core/packages/main/src/types/constants.ts +15 -0
- package/dist/templates/monorepo/core/packages/main/src/types/index.ts +8 -0
- package/dist/templates/monorepo/core/packages/main/src/types/main.types.ts +25 -0
- package/dist/templates/monorepo/core/packages/main/src/utils/index.ts +5 -0
- package/dist/templates/monorepo/core/packages/utils/package.json +43 -0
- package/dist/templates/monorepo/core/packages/utils/rolldown.config.ts +34 -0
- package/dist/templates/monorepo/core/packages/utils/src/index.ts +2 -0
- package/dist/templates/monorepo/core/packages/utils/src/logger.ts +68 -0
- package/dist/templates/monorepo/core/packages/utils/src/result.ts +146 -0
- package/dist/templates/monorepo/core/packages/utils/src/types/constants.ts +15 -0
- package/dist/templates/monorepo/core/packages/utils/src/types/index.ts +8 -0
- package/dist/templates/monorepo/core/packages/utils/src/types/utils.types.ts +32 -0
- package/dist/templates/monorepo/core/packages/utils/src/utils/index.ts +5 -0
- package/dist/templates/monorepo/oxlint.json +14 -0
- package/dist/templates/monorepo/package.json +39 -0
- package/dist/templates/monorepo/tsconfig.json +35 -0
- package/dist/templates/telegram-bot/.oxlintrc.json +33 -0
- package/dist/templates/telegram-bot/.prettierignore +5 -0
- package/dist/templates/telegram-bot/.prettierrc +26 -0
- package/dist/templates/telegram-bot/CLAUDE.deploy.md +356 -0
- package/dist/templates/telegram-bot/CLAUDE.dev.md +266 -0
- package/dist/templates/telegram-bot/CLAUDE.md +280 -0
- package/dist/templates/telegram-bot/Dockerfile +46 -0
- package/dist/templates/telegram-bot/README.md +245 -0
- package/dist/templates/telegram-bot/apps/.gitkeep +0 -0
- package/dist/templates/telegram-bot/bun.lock +208 -0
- package/dist/templates/telegram-bot/core/.env.example +71 -0
- package/dist/templates/telegram-bot/core/README.md +1067 -0
- package/dist/templates/telegram-bot/core/package.json +15 -0
- package/dist/templates/telegram-bot/core/src/config/env.ts +131 -0
- package/dist/templates/telegram-bot/core/src/config/index.ts +97 -0
- package/dist/templates/telegram-bot/core/src/config/logging.ts +110 -0
- package/dist/templates/telegram-bot/core/src/handlers/control.ts +85 -0
- package/dist/templates/telegram-bot/core/src/handlers/health.ts +83 -0
- package/dist/templates/telegram-bot/core/src/handlers/logs.ts +126 -0
- package/dist/templates/telegram-bot/core/src/index.ts +161 -0
- package/dist/templates/telegram-bot/core/src/middleware/auth.ts +41 -0
- package/dist/templates/telegram-bot/core/src/middleware/error-handler.ts +41 -0
- package/dist/templates/telegram-bot/core/src/middleware/logging.ts +1 -0
- package/dist/templates/telegram-bot/core/src/middleware/topics.ts +55 -0
- package/dist/templates/telegram-bot/core/src/types/bot.ts +92 -0
- package/dist/templates/telegram-bot/core/src/types/constants.ts +50 -0
- package/dist/templates/telegram-bot/core/src/types/result.ts +1 -0
- package/dist/templates/telegram-bot/core/src/utils/bot-manager.test.ts +111 -0
- package/dist/templates/telegram-bot/core/src/utils/bot-manager.ts +201 -0
- package/dist/templates/telegram-bot/core/src/utils/commands.ts +63 -0
- package/dist/templates/telegram-bot/core/src/utils/formatters.ts +82 -0
- package/dist/templates/telegram-bot/core/src/utils/instance-manager.ts +189 -0
- package/dist/templates/telegram-bot/core/src/utils/memory.ts +33 -0
- package/dist/templates/telegram-bot/core/src/utils/result.ts +26 -0
- package/dist/templates/telegram-bot/core/src/utils/telegram.ts +31 -0
- package/dist/templates/telegram-bot/core/src/utils/type-guards.ts +71 -0
- package/dist/templates/telegram-bot/core/tsconfig.json +9 -0
- package/dist/templates/telegram-bot/docker-compose.yml +37 -0
- package/dist/templates/telegram-bot/docs/cli-commands.md +377 -0
- package/dist/templates/telegram-bot/docs/development.md +363 -0
- package/dist/templates/telegram-bot/docs/environment.md +460 -0
- package/dist/templates/telegram-bot/docs/examples/middleware-auth.md +335 -0
- package/dist/templates/telegram-bot/docs/examples/simple-command.md +207 -0
- package/dist/templates/telegram-bot/docs/examples/webhook-setup.md +362 -0
- package/dist/templates/telegram-bot/docs/getting-started.md +223 -0
- package/dist/templates/telegram-bot/docs/troubleshooting.md +489 -0
- package/dist/templates/telegram-bot/package.json +49 -0
- package/dist/templates/telegram-bot/packages/utils/package.json +12 -0
- package/dist/templates/telegram-bot/packages/utils/src/index.ts +2 -0
- package/dist/templates/telegram-bot/packages/utils/src/logger.ts +72 -0
- package/dist/templates/telegram-bot/packages/utils/src/result.ts +80 -0
- package/dist/templates/telegram-bot/tools/README.md +47 -0
- package/dist/templates/telegram-bot/tools/commands/doctor.ts +460 -0
- package/dist/templates/telegram-bot/tools/commands/index.ts +35 -0
- package/dist/templates/telegram-bot/tools/commands/ngrok.ts +207 -0
- package/dist/templates/telegram-bot/tools/commands/setup.ts +368 -0
- package/dist/templates/telegram-bot/tools/commands/status.ts +140 -0
- package/dist/templates/telegram-bot/tools/index.ts +16 -0
- package/dist/templates/telegram-bot/tools/package.json +12 -0
- package/dist/templates/telegram-bot/tools/utils/index.ts +13 -0
- package/dist/templates/telegram-bot/tsconfig.json +22 -0
- package/dist/templates/telegram-bot/vitest.config.ts +29 -0
- package/package.json +35 -0
- package/templates/monorepo/CLAUDE.md +164 -0
- package/templates/monorepo/LICENSE +21 -0
- package/templates/monorepo/MUST-FOLLOW-GUIDELINES.md +269 -0
- package/templates/monorepo/README.md +74 -0
- package/templates/monorepo/apps/example/package.json +19 -0
- package/templates/monorepo/apps/example/src/index.ts +23 -0
- package/templates/monorepo/apps/example/src/types/index.ts +7 -0
- package/templates/monorepo/apps/example/src/utils/index.ts +7 -0
- package/templates/monorepo/core/packages/main/package.json +41 -0
- package/templates/monorepo/core/packages/main/rolldown.config.ts +24 -0
- package/templates/monorepo/core/packages/main/src/index.ts +80 -0
- package/templates/monorepo/core/packages/main/src/types/constants.ts +15 -0
- package/templates/monorepo/core/packages/main/src/types/index.ts +8 -0
- package/templates/monorepo/core/packages/main/src/types/main.types.ts +25 -0
- package/templates/monorepo/core/packages/main/src/utils/index.ts +5 -0
- package/templates/monorepo/core/packages/utils/package.json +43 -0
- package/templates/monorepo/core/packages/utils/rolldown.config.ts +34 -0
- package/templates/monorepo/core/packages/utils/src/index.ts +2 -0
- package/templates/monorepo/core/packages/utils/src/logger.ts +68 -0
- package/templates/monorepo/core/packages/utils/src/result.ts +146 -0
- package/templates/monorepo/core/packages/utils/src/types/constants.ts +15 -0
- package/templates/monorepo/core/packages/utils/src/types/index.ts +8 -0
- package/templates/monorepo/core/packages/utils/src/types/utils.types.ts +32 -0
- package/templates/monorepo/core/packages/utils/src/utils/index.ts +5 -0
- package/templates/monorepo/oxlint.json +14 -0
- package/templates/monorepo/package.json +39 -0
- package/templates/monorepo/tsconfig.json +35 -0
- package/templates/telegram-bot/.oxlintrc.json +33 -0
- package/templates/telegram-bot/.prettierignore +5 -0
- package/templates/telegram-bot/.prettierrc +26 -0
- package/templates/telegram-bot/CLAUDE.deploy.md +356 -0
- package/templates/telegram-bot/CLAUDE.dev.md +266 -0
- package/templates/telegram-bot/CLAUDE.md +280 -0
- package/templates/telegram-bot/Dockerfile +46 -0
- package/templates/telegram-bot/README.md +245 -0
- package/templates/telegram-bot/apps/.gitkeep +0 -0
- package/templates/telegram-bot/bun.lock +208 -0
- package/templates/telegram-bot/core/.env.example +71 -0
- package/templates/telegram-bot/core/README.md +1067 -0
- package/templates/telegram-bot/core/package.json +15 -0
- package/templates/telegram-bot/core/src/config/env.ts +131 -0
- package/templates/telegram-bot/core/src/config/index.ts +97 -0
- package/templates/telegram-bot/core/src/config/logging.ts +110 -0
- package/templates/telegram-bot/core/src/handlers/control.ts +85 -0
- package/templates/telegram-bot/core/src/handlers/health.ts +83 -0
- package/templates/telegram-bot/core/src/handlers/logs.ts +126 -0
- package/templates/telegram-bot/core/src/index.ts +161 -0
- package/templates/telegram-bot/core/src/middleware/auth.ts +41 -0
- package/templates/telegram-bot/core/src/middleware/error-handler.ts +41 -0
- package/templates/telegram-bot/core/src/middleware/logging.ts +1 -0
- package/templates/telegram-bot/core/src/middleware/topics.ts +55 -0
- package/templates/telegram-bot/core/src/types/bot.ts +92 -0
- package/templates/telegram-bot/core/src/types/constants.ts +50 -0
- package/templates/telegram-bot/core/src/types/result.ts +1 -0
- package/templates/telegram-bot/core/src/utils/bot-manager.test.ts +111 -0
- package/templates/telegram-bot/core/src/utils/bot-manager.ts +201 -0
- package/templates/telegram-bot/core/src/utils/commands.ts +63 -0
- package/templates/telegram-bot/core/src/utils/formatters.ts +82 -0
- package/templates/telegram-bot/core/src/utils/instance-manager.ts +189 -0
- package/templates/telegram-bot/core/src/utils/memory.ts +33 -0
- package/templates/telegram-bot/core/src/utils/result.ts +26 -0
- package/templates/telegram-bot/core/src/utils/telegram.ts +31 -0
- package/templates/telegram-bot/core/src/utils/type-guards.ts +71 -0
- package/templates/telegram-bot/core/tsconfig.json +9 -0
- package/templates/telegram-bot/docker-compose.yml +37 -0
- package/templates/telegram-bot/docs/cli-commands.md +377 -0
- package/templates/telegram-bot/docs/development.md +363 -0
- package/templates/telegram-bot/docs/environment.md +460 -0
- package/templates/telegram-bot/docs/examples/middleware-auth.md +335 -0
- package/templates/telegram-bot/docs/examples/simple-command.md +207 -0
- package/templates/telegram-bot/docs/examples/webhook-setup.md +362 -0
- package/templates/telegram-bot/docs/getting-started.md +223 -0
- package/templates/telegram-bot/docs/troubleshooting.md +489 -0
- package/templates/telegram-bot/package.json +49 -0
- package/templates/telegram-bot/packages/utils/package.json +12 -0
- package/templates/telegram-bot/packages/utils/src/index.ts +2 -0
- package/templates/telegram-bot/packages/utils/src/logger.ts +72 -0
- package/templates/telegram-bot/packages/utils/src/result.ts +80 -0
- package/templates/telegram-bot/tools/README.md +47 -0
- package/templates/telegram-bot/tools/commands/doctor.ts +460 -0
- package/templates/telegram-bot/tools/commands/index.ts +35 -0
- package/templates/telegram-bot/tools/commands/ngrok.ts +207 -0
- package/templates/telegram-bot/tools/commands/setup.ts +368 -0
- package/templates/telegram-bot/tools/commands/status.ts +140 -0
- package/templates/telegram-bot/tools/index.ts +16 -0
- package/templates/telegram-bot/tools/package.json +12 -0
- package/templates/telegram-bot/tools/utils/index.ts +13 -0
- package/templates/telegram-bot/tsconfig.json +22 -0
- package/templates/telegram-bot/vitest.config.ts +29 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# mks-telegram-bot
|
|
2
|
+
|
|
3
|
+
> Template monorepo para bots de Telegram con Bun, Telegraf y TypeScript
|
|
4
|
+
|
|
5
|
+
[](https://github.com/MKS2508/mks-telegram-bot/generate)
|
|
6
|
+
|
|
7
|
+
Template listo para producción con soporte multi-entorno, multi-instancia, y las mejores prácticas de desarrollo.
|
|
8
|
+
|
|
9
|
+
## Quick Start (5 min)
|
|
10
|
+
|
|
11
|
+
### 1. Crear el Bot
|
|
12
|
+
|
|
13
|
+
Habla con [@BotFather](https://t.me/BotFather) en Telegram:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/newbot
|
|
17
|
+
→ Nombre: MyBot
|
|
18
|
+
→ Username: my_awesome_bot
|
|
19
|
+
→ Copia el token (ej: 123456:ABC-DEF1234...)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 2. Instalar y Configurar
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Usar el template
|
|
26
|
+
# Click en "Use this template" arriba → Create a new repository
|
|
27
|
+
# O con CLI: gh repo create my-bot --template MKS2508/mks-telegram-bot
|
|
28
|
+
|
|
29
|
+
# Clonar tu nuevo repo
|
|
30
|
+
git clone https://github.com/TU_USUARIO/my-bot.git
|
|
31
|
+
cd my-bot
|
|
32
|
+
|
|
33
|
+
# Instalar dependencias
|
|
34
|
+
bun install
|
|
35
|
+
|
|
36
|
+
# Setup interactivo (crea .env.local)
|
|
37
|
+
bun run setup
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
El comando `setup` te preguntará:
|
|
41
|
+
- Bot token (pega el token de @BotFather)
|
|
42
|
+
- Modo (polling para desarrollo)
|
|
43
|
+
- Chat IDs opcionales
|
|
44
|
+
|
|
45
|
+
### 3. Arrancar en Desarrollo
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
bun run dev
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 4. Probar
|
|
52
|
+
|
|
53
|
+
Envía `/start` o `/health` a tu bot en Telegram.
|
|
54
|
+
|
|
55
|
+
## Comandos CLI
|
|
56
|
+
|
|
57
|
+
| Comando | Descripción |
|
|
58
|
+
| ------- | ----------- |
|
|
59
|
+
| `bun run setup` | Configuración interactiva de entorno |
|
|
60
|
+
| `bun run setup:staging` | Setup para entorno staging |
|
|
61
|
+
| `bun run setup:production` | Setup para producción |
|
|
62
|
+
| `bun run doctor` | Diagnóstico de configuración |
|
|
63
|
+
| `bun run cli status` | Ver instancias corriendo |
|
|
64
|
+
| `bun run ngrok` | ngrok con webhook auto-config |
|
|
65
|
+
|
|
66
|
+
## Scripts de Desarrollo
|
|
67
|
+
|
|
68
|
+
| Script | Descripción |
|
|
69
|
+
| ------ | ----------- |
|
|
70
|
+
| `bun run dev` | Hot reload (development) |
|
|
71
|
+
| `bun run start` | Production start |
|
|
72
|
+
| `bun run build` | Typecheck + lint |
|
|
73
|
+
| `bun run test` | Ejecutar tests |
|
|
74
|
+
| `bun run typecheck` | Type-check con tsgo |
|
|
75
|
+
| `bun run lint` | Lint con oxlint |
|
|
76
|
+
|
|
77
|
+
## Documentación
|
|
78
|
+
|
|
79
|
+
| Documento | Descripción |
|
|
80
|
+
| --------- | ----------- |
|
|
81
|
+
| [Getting Started](./docs/getting-started.md) | Guía de inicio paso a paso |
|
|
82
|
+
| [Environment](./docs/environment.md) | Variables de entorno |
|
|
83
|
+
| [CLI Commands](./docs/cli-commands.md) | Comandos CLI disponibles |
|
|
84
|
+
| [Development](./docs/development.md) | Flujo de desarrollo |
|
|
85
|
+
| [Troubleshooting](./docs/troubleshooting.md) | Problemas comunes |
|
|
86
|
+
|
|
87
|
+
**Documentación adicional:**
|
|
88
|
+
- [CLAUDE.md](./CLAUDE.md) - Entry point principal
|
|
89
|
+
- [CLAUDE.dev.md](./CLAUDE.dev.md) - Guía de desarrollo
|
|
90
|
+
- [CLAUDE.deploy.md](./CLAUDE.deploy.md) - Deployment y entornos
|
|
91
|
+
|
|
92
|
+
## Estructura del Monorepo
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
mks-telegram-bot/
|
|
96
|
+
├── core/ # Bot principal (@mks2508/telegram-bot-core)
|
|
97
|
+
│ ├── src/
|
|
98
|
+
│ │ ├── index.ts # Entry point
|
|
99
|
+
│ │ ├── config/ # Configuration & env validation
|
|
100
|
+
│ │ ├── handlers/ # Command handlers
|
|
101
|
+
│ │ ├── middleware/ # Telegraf middleware
|
|
102
|
+
│ │ ├── types/ # TypeScript types & Result pattern
|
|
103
|
+
│ │ └── utils/ # Utilities (bot-manager, instance-manager)
|
|
104
|
+
│ └── .env.example # Template de variables de entorno
|
|
105
|
+
├── packages/utils/ # Utilidades compartidas (@mks2508/telegram-bot-utils)
|
|
106
|
+
│ └── src/
|
|
107
|
+
│ ├── logger.ts # Better Logger setup
|
|
108
|
+
│ └── result.ts # Result type pattern
|
|
109
|
+
├── tools/ # CLI tools
|
|
110
|
+
│ └── commands/
|
|
111
|
+
│ ├── setup.ts # Interactive setup
|
|
112
|
+
│ ├── doctor.ts # Diagnostics
|
|
113
|
+
│ ├── status.ts # Instance status
|
|
114
|
+
│ └── ngrok.ts # ngrok integration
|
|
115
|
+
├── docs/ # Documentación
|
|
116
|
+
│ ├── getting-started.md
|
|
117
|
+
│ ├── environment.md
|
|
118
|
+
│ ├── cli-commands.md
|
|
119
|
+
│ ├── development.md
|
|
120
|
+
│ ├── troubleshooting.md
|
|
121
|
+
│ └── examples/ # Ejemplos de código
|
|
122
|
+
└── apps/ # Apps de ejemplo (futuro)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Stack Tecnológico
|
|
126
|
+
|
|
127
|
+
| Herramienta | Versión | Uso |
|
|
128
|
+
| ----------- | ------ | --- |
|
|
129
|
+
| **Bun** | 1.3+ | Runtime & package manager |
|
|
130
|
+
| **TypeScript** | 5.9+ | Lenguaje |
|
|
131
|
+
| **Telegraf** | 4.16+ | Telegram Bot API |
|
|
132
|
+
| **Zod** | 3.24+ | Schema validation |
|
|
133
|
+
| **Better Logger** | 4.0.0 | Logging |
|
|
134
|
+
| **@mks2508/no-throw** | 0.1.0 | Result type pattern |
|
|
135
|
+
| **tsgo** | native-preview | Type checking |
|
|
136
|
+
| **oxlint** | latest | Linting |
|
|
137
|
+
| **prettier** | 3.4+ | Formatting |
|
|
138
|
+
|
|
139
|
+
## Features
|
|
140
|
+
|
|
141
|
+
### Core
|
|
142
|
+
- ✅ Result type pattern para error handling sin excepciones
|
|
143
|
+
- ✅ TypeScript strict mode con tipado completo
|
|
144
|
+
- ✅ Soporte polling y webhook modes
|
|
145
|
+
- ✅ Configuración centralizada con Zod validation
|
|
146
|
+
- ✅ Singleton pattern para BotManager y Config
|
|
147
|
+
|
|
148
|
+
### Multi-Entorno
|
|
149
|
+
- ✅ Soporte para local, staging, production
|
|
150
|
+
- ✅ Archivos `.env.{environment}` separados
|
|
151
|
+
- ✅ Selección vía `TG_ENV`
|
|
152
|
+
- ✅ Setup CLI interactivo
|
|
153
|
+
|
|
154
|
+
### Multi-Instancia
|
|
155
|
+
- ✅ Lock management con archivos PID
|
|
156
|
+
- ✅ Detección de conflictos
|
|
157
|
+
- ✅ Status CLI para ver instancias
|
|
158
|
+
- ✅ Doctor CLI para diagnóstico
|
|
159
|
+
|
|
160
|
+
### Logging System
|
|
161
|
+
Tres destinos de logging usando Better Logger 4.0.0:
|
|
162
|
+
|
|
163
|
+
1. **Console** - Colored output con preset cyberpunk
|
|
164
|
+
2. **File** - Logs persistentes con rotación automática
|
|
165
|
+
3. **Telegram** - Streaming a chat con buffering
|
|
166
|
+
|
|
167
|
+
### Bot Commands
|
|
168
|
+
|
|
169
|
+
**Public Commands**:
|
|
170
|
+
- `/start` - Welcome message
|
|
171
|
+
- `/health` - Health check
|
|
172
|
+
- `/uptime` - Uptime info
|
|
173
|
+
- `/stats` - Statistics
|
|
174
|
+
- `/logs` - Log streaming status
|
|
175
|
+
|
|
176
|
+
**Control Commands** (requieren autorización):
|
|
177
|
+
- `/stop` - Graceful shutdown
|
|
178
|
+
- `/restart` - Restart con stats reset
|
|
179
|
+
- `/mode` - Switch polling/webhook
|
|
180
|
+
- `/webhook` - Webhook configuration
|
|
181
|
+
|
|
182
|
+
## Development Workflow
|
|
183
|
+
|
|
184
|
+
### Setup Inicial
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Instalar dependencias
|
|
188
|
+
bun install
|
|
189
|
+
|
|
190
|
+
# Setup interactivo
|
|
191
|
+
bun run setup
|
|
192
|
+
|
|
193
|
+
# Verificar configuración
|
|
194
|
+
bun run doctor
|
|
195
|
+
|
|
196
|
+
# Arrancar en desarrollo
|
|
197
|
+
bun run dev
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Antes de Commitear
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Verificar tipo y lint
|
|
204
|
+
bun run build
|
|
205
|
+
|
|
206
|
+
# Ejecutar tests
|
|
207
|
+
bun test
|
|
208
|
+
|
|
209
|
+
# O usar precommit
|
|
210
|
+
bun run precommit
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Code Style
|
|
214
|
+
|
|
215
|
+
- TypeScript strict mode
|
|
216
|
+
- Semi: false, singleQuote: true
|
|
217
|
+
- Result type pattern para error handling
|
|
218
|
+
- Better Logger para logging (no console.*)
|
|
219
|
+
|
|
220
|
+
## Examples
|
|
221
|
+
|
|
222
|
+
Ver [`docs/examples/`](./docs/examples/) para ejemplos completos:
|
|
223
|
+
|
|
224
|
+
- [Simple Command](./docs/examples/simple-command.md) - Crear comandos
|
|
225
|
+
- [Auth Middleware](./docs/examples/middleware-auth.md) - Middleware de autenticación
|
|
226
|
+
- [Webhook Setup](./docs/examples/webhook-setup.md) - Configurar webhook
|
|
227
|
+
|
|
228
|
+
## Deployment
|
|
229
|
+
|
|
230
|
+
El template incluye configuración para:
|
|
231
|
+
|
|
232
|
+
- **Docker** - Dockerfile multi-stage incluido
|
|
233
|
+
- **VPS** - Guía para deployment en VPS
|
|
234
|
+
- **ngrok** - Integración para testing local
|
|
235
|
+
- **Multi-entorno** - local, staging, production
|
|
236
|
+
|
|
237
|
+
Ver [CLAUDE.deploy.md](./CLAUDE.deploy.md) para guía completa de deployment.
|
|
238
|
+
|
|
239
|
+
## License
|
|
240
|
+
|
|
241
|
+
MIT
|
|
242
|
+
|
|
243
|
+
## Autor
|
|
244
|
+
|
|
245
|
+
[@mks2508](https://github.com/mks2508)
|
|
File without changes
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"workspaces": {
|
|
4
|
+
"": {
|
|
5
|
+
"name": "mks-telegram-bot",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@inquirer/prompts": "^8.1.0",
|
|
8
|
+
"chalk": "^5.6.2",
|
|
9
|
+
"commander": "^14.0.2",
|
|
10
|
+
"dotenv": "^17.2.3",
|
|
11
|
+
"glob": "^13.0.0",
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/bun": "latest",
|
|
15
|
+
"@typescript/native-preview": "latest",
|
|
16
|
+
"oxlint": "latest",
|
|
17
|
+
"prettier": "^3.4.2",
|
|
18
|
+
"typescript": "^5",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
"core": {
|
|
22
|
+
"name": "@mks2508/telegram-bot-core",
|
|
23
|
+
"version": "0.1.0",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@mks2508/telegram-bot-utils": "workspace:*",
|
|
26
|
+
"telegraf": "^4.16.3",
|
|
27
|
+
"zod": "^3.24.0",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
"packages/utils": {
|
|
31
|
+
"name": "@mks2508/telegram-bot-utils",
|
|
32
|
+
"version": "0.1.0",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@mks2508/better-logger": "^4.0.0",
|
|
35
|
+
"@mks2508/no-throw": "^0.1.0",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
"packages": {
|
|
40
|
+
"@inquirer/ansi": ["@inquirer/ansi@2.0.2", "", {}, "sha512-SYLX05PwJVnW+WVegZt1T4Ip1qba1ik+pNJPDiqvk6zS5Y/i8PhRzLpGEtVd7sW0G8cMtkD8t4AZYhQwm8vnww=="],
|
|
41
|
+
|
|
42
|
+
"@inquirer/checkbox": ["@inquirer/checkbox@5.0.3", "", { "dependencies": { "@inquirer/ansi": "^2.0.2", "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-xtQP2eXMFlOcAhZ4ReKP2KZvDIBb1AnCfZ81wWXG3DXLVH0f0g4obE0XDPH+ukAEMRcZT0kdX2AS1jrWGXbpxw=="],
|
|
43
|
+
|
|
44
|
+
"@inquirer/confirm": ["@inquirer/confirm@6.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-lyEvibDFL+NA5R4xl8FUmNhmu81B+LDL9L/MpKkZlQDJZXzG8InxiqYxiAlQYa9cqLLhYqKLQwZqXmSTqCLjyw=="],
|
|
45
|
+
|
|
46
|
+
"@inquirer/core": ["@inquirer/core@11.1.0", "", { "dependencies": { "@inquirer/ansi": "^2.0.2", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2", "cli-width": "^4.1.0", "mute-stream": "^3.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^9.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+jD/34T1pK8M5QmZD/ENhOfXdl9Zr+BrQAUc5h2anWgi7gggRq15ZbiBeLoObj0TLbdgW7TAIQRU2boMc9uOKQ=="],
|
|
47
|
+
|
|
48
|
+
"@inquirer/editor": ["@inquirer/editor@5.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/external-editor": "^2.0.2", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-wYyQo96TsAqIciP/r5D3cFeV8h4WqKQ/YOvTg5yOfP2sqEbVVpbxPpfV3LM5D0EP4zUI3EZVHyIUIllnoIa8OQ=="],
|
|
49
|
+
|
|
50
|
+
"@inquirer/expand": ["@inquirer/expand@5.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-2oINvuL27ujjxd95f6K2K909uZOU2x1WiAl7Wb1X/xOtL8CgQ1kSxzykIr7u4xTkXkXOAkCuF45T588/YKee7w=="],
|
|
51
|
+
|
|
52
|
+
"@inquirer/external-editor": ["@inquirer/external-editor@2.0.2", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-X/fMXK7vXomRWEex1j8mnj7s1mpnTeP4CO/h2gysJhHLT2WjBnLv4ZQEGpm/kcYI8QfLZ2fgW+9kTKD+jeopLg=="],
|
|
53
|
+
|
|
54
|
+
"@inquirer/figures": ["@inquirer/figures@2.0.2", "", {}, "sha512-qXm6EVvQx/FmnSrCWCIGtMHwqeLgxABP8XgcaAoywsL0NFga9gD5kfG0gXiv80GjK9Hsoz4pgGwF/+CjygyV9A=="],
|
|
55
|
+
|
|
56
|
+
"@inquirer/input": ["@inquirer/input@5.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-4R0TdWl53dtp79Vs6Df2OHAtA2FVNqya1hND1f5wjHWxZJxwDMSNB1X5ADZJSsQKYAJ5JHCTO+GpJZ42mK0Otw=="],
|
|
57
|
+
|
|
58
|
+
"@inquirer/number": ["@inquirer/number@4.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-TjQLe93GGo5snRlu83JxE38ZPqj5ZVggL+QqqAF2oBA5JOJoxx25GG3EGH/XN/Os5WOmKfO8iLVdCXQxXRZIMQ=="],
|
|
59
|
+
|
|
60
|
+
"@inquirer/password": ["@inquirer/password@5.0.3", "", { "dependencies": { "@inquirer/ansi": "^2.0.2", "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-rCozGbUMAHedTeYWEN8sgZH4lRCdgG/WinFkit6ZPsp8JaNg2T0g3QslPBS5XbpORyKP/I+xyBO81kFEvhBmjA=="],
|
|
61
|
+
|
|
62
|
+
"@inquirer/prompts": ["@inquirer/prompts@8.1.0", "", { "dependencies": { "@inquirer/checkbox": "^5.0.3", "@inquirer/confirm": "^6.0.3", "@inquirer/editor": "^5.0.3", "@inquirer/expand": "^5.0.3", "@inquirer/input": "^5.0.3", "@inquirer/number": "^4.0.3", "@inquirer/password": "^5.0.3", "@inquirer/rawlist": "^5.1.0", "@inquirer/search": "^4.0.3", "@inquirer/select": "^5.0.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-LsZMdKcmRNF5LyTRuZE5nWeOjganzmN3zwbtNfcs6GPh3I2TsTtF1UYZlbxVfhxd+EuUqLGs/Lm3Xt4v6Az1wA=="],
|
|
63
|
+
|
|
64
|
+
"@inquirer/rawlist": ["@inquirer/rawlist@5.1.0", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-yUCuVh0jW026Gr2tZlG3kHignxcrLKDR3KBp+eUgNz+BAdSeZk0e18yt2gyBr+giYhj/WSIHCmPDOgp1mT2niQ=="],
|
|
65
|
+
|
|
66
|
+
"@inquirer/search": ["@inquirer/search@4.0.3", "", { "dependencies": { "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-lzqVw0YwuKYetk5VwJ81Ba+dyVlhseHPx9YnRKQgwXdFS0kEavCz2gngnNhnMIxg8+j1N/rUl1t5s1npwa7bqg=="],
|
|
67
|
+
|
|
68
|
+
"@inquirer/select": ["@inquirer/select@5.0.3", "", { "dependencies": { "@inquirer/ansi": "^2.0.2", "@inquirer/core": "^11.1.0", "@inquirer/figures": "^2.0.2", "@inquirer/type": "^4.0.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-M+ynbwS0ecQFDYMFrQrybA0qL8DV0snpc4kKevCCNaTpfghsRowRY7SlQBeIYNzHqXtiiz4RG9vTOeb/udew7w=="],
|
|
69
|
+
|
|
70
|
+
"@inquirer/type": ["@inquirer/type@4.0.2", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-cae7mzluplsjSdgFA6ACLygb5jC8alO0UUnFPyu0E7tNRPrL+q/f8VcSXp+cjZQ7l5CMpDpi2G1+IQvkOiL1Lw=="],
|
|
71
|
+
|
|
72
|
+
"@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="],
|
|
73
|
+
|
|
74
|
+
"@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="],
|
|
75
|
+
|
|
76
|
+
"@mks2508/better-logger": ["@mks2508/better-logger@4.0.0", "", { "dependencies": { "chalk": "^5.6.2" } }, "sha512-39PYkAKg7kC0ncPjcN5zAwTsLIS+iXoL4294gl3Cm4OAI6sAT7YJ+RccD42Ve5ybRC/TGgJnD0AUH5M26w0pWA=="],
|
|
77
|
+
|
|
78
|
+
"@mks2508/no-throw": ["@mks2508/no-throw@0.1.0", "", {}, "sha512-/CI8FqiO3oLw66XIQ07mw13b6PDNh1vit0cGzUBLq5MfJUTKDU0yaKFE0l9CqSpe6xv4n4+z4RWEytP5xePKZQ=="],
|
|
79
|
+
|
|
80
|
+
"@mks2508/telegram-bot-core": ["@mks2508/telegram-bot-core@workspace:core"],
|
|
81
|
+
|
|
82
|
+
"@mks2508/telegram-bot-utils": ["@mks2508/telegram-bot-utils@workspace:packages/utils"],
|
|
83
|
+
|
|
84
|
+
"@oxlint/darwin-arm64": ["@oxlint/darwin-arm64@1.38.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-9rN3047QTyA4i73FKikDUBdczRcLtOsIwZ5TsEx5Q7jr5nBjolhYQOFQf9QdhBLdInxw1iX4+lgdMCf1g74zjg=="],
|
|
85
|
+
|
|
86
|
+
"@oxlint/darwin-x64": ["@oxlint/darwin-x64@1.38.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Y1UHW4KOlg5NvyrSn/bVBQP8/LRuid7Pnu+BWGbAVVsFcK0b565YgMSO3Eu9nU3w8ke91dr7NFpUmS+bVkdkbw=="],
|
|
87
|
+
|
|
88
|
+
"@oxlint/linux-arm64-gnu": ["@oxlint/linux-arm64-gnu@1.38.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZiVxPZizlXSnAMdkEFWX/mAj7U3bNiku8p6I9UgLrXzgGSSAhFobx8CaFGwVoKyWOd+gQgZ/ogCrunvx2k0CFg=="],
|
|
89
|
+
|
|
90
|
+
"@oxlint/linux-arm64-musl": ["@oxlint/linux-arm64-musl@1.38.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-ELtlCIGZ72A65ATZZHFxHMFrkRtY+DYDCKiNKg6v7u5PdeOFey+OlqRXgXtXlxWjCL+g7nivwI2FPVsWqf05Qw=="],
|
|
91
|
+
|
|
92
|
+
"@oxlint/linux-x64-gnu": ["@oxlint/linux-x64-gnu@1.38.0", "", { "os": "linux", "cpu": "x64" }, "sha512-E1OcDh30qyng1m0EIlsOuapYkqk5QB6o6IMBjvDKqIoo6IrjlVAasoJfS/CmSH998gXRL3BcAJa6Qg9IxPFZnQ=="],
|
|
93
|
+
|
|
94
|
+
"@oxlint/linux-x64-musl": ["@oxlint/linux-x64-musl@1.38.0", "", { "os": "linux", "cpu": "x64" }, "sha512-4AfpbM/4sQnr6S1dMijEPfsq4stQbN5vJ2jsahSy/QTcvIVbFkgY+RIhrA5UWlC6eb0rD5CdaPQoKGMJGeXpYw=="],
|
|
95
|
+
|
|
96
|
+
"@oxlint/win32-arm64": ["@oxlint/win32-arm64@1.38.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-OvUVYdI68OwXh3d1RjH9N/okCxb6PrOGtEtzXyqGA7Gk+IxyZcX0/QCTBwV8FNbSSzDePSSEHOKpoIB+VXdtvg=="],
|
|
97
|
+
|
|
98
|
+
"@oxlint/win32-x64": ["@oxlint/win32-x64@1.38.0", "", { "os": "win32", "cpu": "x64" }, "sha512-7IuZMYiZiOcgg5zHvpJY6jRlEwh8EB/uq7GsoQJO9hANq96TIjyntGByhIjFSsL4asyZmhTEki+MO/u5Fb/WQA=="],
|
|
99
|
+
|
|
100
|
+
"@telegraf/types": ["@telegraf/types@7.1.0", "", {}, "sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw=="],
|
|
101
|
+
|
|
102
|
+
"@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
|
|
103
|
+
|
|
104
|
+
"@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
|
|
105
|
+
|
|
106
|
+
"@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260106.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260106.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260106.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260106.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260106.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260106.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260106.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260106.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-EeH81rQsgLjewxuVOBN0MnQWAyf5YNeHRP3+Et6wJyr4d7HuA7zFwfNaEdfX1k366kgpKOR5K6dakorBhKZGng=="],
|
|
107
|
+
|
|
108
|
+
"@typescript/native-preview-darwin-arm64": ["@typescript/native-preview-darwin-arm64@7.0.0-dev.20260106.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-9n7HIVP3UMgWSK8Yi2H+23hrrEDNNfkW78mbkxfatGh/ghU4m2QuO8R6MdMdPsSmmKDvbWOtpLEuSZFKNzu7eQ=="],
|
|
109
|
+
|
|
110
|
+
"@typescript/native-preview-darwin-x64": ["@typescript/native-preview-darwin-x64@7.0.0-dev.20260106.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zHJ1KsgQTpBnG3RbI1kjH/fD8juc5DTlQ9gbmJi23OhhaOgNF+PkqC2vAAWLFqdH99tAMvmJf9BJncbB7LwxXA=="],
|
|
111
|
+
|
|
112
|
+
"@typescript/native-preview-linux-arm": ["@typescript/native-preview-linux-arm@7.0.0-dev.20260106.1", "", { "os": "linux", "cpu": "arm" }, "sha512-z7hdUMOOhdiVg1RmWyRyrIG3IIki4eJF3/TUtVVSTRwGq3t+j2JnLUUoK5VgX7EiqlN6wuJ94/FpWtyf+X4fkw=="],
|
|
113
|
+
|
|
114
|
+
"@typescript/native-preview-linux-arm64": ["@typescript/native-preview-linux-arm64@7.0.0-dev.20260106.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Mp7M7fgUsVW8MHadN58gjie1bzg06K1Id6vm2Aycnmk9rKgu8CxdaDayllr5giPo+iZLZOnw2FyGItrywd4fuA=="],
|
|
115
|
+
|
|
116
|
+
"@typescript/native-preview-linux-x64": ["@typescript/native-preview-linux-x64@7.0.0-dev.20260106.1", "", { "os": "linux", "cpu": "x64" }, "sha512-H+c7xgK0gItbntnPFvt9nVv+cjjjn0lTj2tIjBQcTbH92q9RgFkIfztgxrP5zD8MzJKDOyIw/iAUSsb57lyxjw=="],
|
|
117
|
+
|
|
118
|
+
"@typescript/native-preview-win32-arm64": ["@typescript/native-preview-win32-arm64@7.0.0-dev.20260106.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-PS1FyYa+/sHQa5Va0yz21DxaBkGGwOYfjMyRSs6oHq01DzMnVIjtsdNAALP0+oqki8Adw0D2XtsdB5QapDbBJw=="],
|
|
119
|
+
|
|
120
|
+
"@typescript/native-preview-win32-x64": ["@typescript/native-preview-win32-x64@7.0.0-dev.20260106.1", "", { "os": "win32", "cpu": "x64" }, "sha512-AKVSTGcIE7d5KFtclhK3PVwUrsNnzziA7ZC/VDbMbvYCjLk7FE2GdNKaxQxLGHb53IUirgmltR5r4htn0WSM6A=="],
|
|
121
|
+
|
|
122
|
+
"abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
|
|
123
|
+
|
|
124
|
+
"ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
|
|
125
|
+
|
|
126
|
+
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
|
127
|
+
|
|
128
|
+
"buffer-alloc": ["buffer-alloc@1.2.0", "", { "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" } }, "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow=="],
|
|
129
|
+
|
|
130
|
+
"buffer-alloc-unsafe": ["buffer-alloc-unsafe@1.1.0", "", {}, "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="],
|
|
131
|
+
|
|
132
|
+
"buffer-fill": ["buffer-fill@1.0.0", "", {}, "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="],
|
|
133
|
+
|
|
134
|
+
"bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
|
|
135
|
+
|
|
136
|
+
"chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
|
137
|
+
|
|
138
|
+
"chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="],
|
|
139
|
+
|
|
140
|
+
"cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="],
|
|
141
|
+
|
|
142
|
+
"commander": ["commander@14.0.2", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="],
|
|
143
|
+
|
|
144
|
+
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
145
|
+
|
|
146
|
+
"dotenv": ["dotenv@17.2.3", "", {}, "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w=="],
|
|
147
|
+
|
|
148
|
+
"emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="],
|
|
149
|
+
|
|
150
|
+
"event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
|
|
151
|
+
|
|
152
|
+
"get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="],
|
|
153
|
+
|
|
154
|
+
"glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="],
|
|
155
|
+
|
|
156
|
+
"iconv-lite": ["iconv-lite@0.7.1", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw=="],
|
|
157
|
+
|
|
158
|
+
"lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="],
|
|
159
|
+
|
|
160
|
+
"minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="],
|
|
161
|
+
|
|
162
|
+
"minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
|
|
163
|
+
|
|
164
|
+
"mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="],
|
|
165
|
+
|
|
166
|
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
167
|
+
|
|
168
|
+
"mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="],
|
|
169
|
+
|
|
170
|
+
"node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
|
|
171
|
+
|
|
172
|
+
"oxlint": ["oxlint@1.38.0", "", { "optionalDependencies": { "@oxlint/darwin-arm64": "1.38.0", "@oxlint/darwin-x64": "1.38.0", "@oxlint/linux-arm64-gnu": "1.38.0", "@oxlint/linux-arm64-musl": "1.38.0", "@oxlint/linux-x64-gnu": "1.38.0", "@oxlint/linux-x64-musl": "1.38.0", "@oxlint/win32-arm64": "1.38.0", "@oxlint/win32-x64": "1.38.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.10.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-XT7tBinQS+hVLxtfJOnokJ9qVBiQvZqng40tDgR6qEJMRMnpVq/JwYfbYyGntSq8MO+Y+N9M1NG4bAMFUtCJiw=="],
|
|
173
|
+
|
|
174
|
+
"p-timeout": ["p-timeout@4.1.0", "", {}, "sha512-+/wmHtzJuWii1sXn3HCuH/FTwGhrp4tmJTxSKJbfS+vkipci6osxXM5mY0jUiRzWKMTgUT8l7HFbeSwZAynqHw=="],
|
|
175
|
+
|
|
176
|
+
"path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="],
|
|
177
|
+
|
|
178
|
+
"prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="],
|
|
179
|
+
|
|
180
|
+
"safe-compare": ["safe-compare@1.1.4", "", { "dependencies": { "buffer-alloc": "^1.2.0" } }, "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ=="],
|
|
181
|
+
|
|
182
|
+
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
|
183
|
+
|
|
184
|
+
"sandwich-stream": ["sandwich-stream@2.0.2", "", {}, "sha512-jLYV0DORrzY3xaz/S9ydJL6Iz7essZeAfnAavsJ+zsJGZ1MOnsS52yRjU3uF3pJa/lla7+wisp//fxOwOH8SKQ=="],
|
|
185
|
+
|
|
186
|
+
"signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
|
|
187
|
+
|
|
188
|
+
"string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
|
|
189
|
+
|
|
190
|
+
"strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
|
|
191
|
+
|
|
192
|
+
"telegraf": ["telegraf@4.16.3", "", { "dependencies": { "@telegraf/types": "^7.1.0", "abort-controller": "^3.0.0", "debug": "^4.3.4", "mri": "^1.2.0", "node-fetch": "^2.7.0", "p-timeout": "^4.1.0", "safe-compare": "^1.1.4", "sandwich-stream": "^2.0.2" }, "bin": { "telegraf": "lib/cli.mjs" } }, "sha512-yjEu2NwkHlXu0OARWoNhJlIjX09dRktiMQFsM678BAH/PEPVwctzL67+tvXqLCRQQvm3SDtki2saGO9hLlz68w=="],
|
|
193
|
+
|
|
194
|
+
"tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
|
|
195
|
+
|
|
196
|
+
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
197
|
+
|
|
198
|
+
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
199
|
+
|
|
200
|
+
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
|
|
201
|
+
|
|
202
|
+
"whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
|
|
203
|
+
|
|
204
|
+
"wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="],
|
|
205
|
+
|
|
206
|
+
"zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
|
|
207
|
+
}
|
|
208
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Environment Variables Template
|
|
2
|
+
|
|
3
|
+
# === Required: Bot Token ===
|
|
4
|
+
TG_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
|
|
5
|
+
|
|
6
|
+
# === Required: Bot Operation Mode ===
|
|
7
|
+
# Options: polling, webhook
|
|
8
|
+
TG_MODE=polling
|
|
9
|
+
|
|
10
|
+
# === Required if TG_MODE=webhook ===
|
|
11
|
+
# TG_WEBHOOK_URL=https://your-domain.com/webhook
|
|
12
|
+
# TG_WEBHOOK_SECRET=random_secret_token_min_16_chars
|
|
13
|
+
|
|
14
|
+
# === Environment Identification ===
|
|
15
|
+
# Options: local, staging, production
|
|
16
|
+
TG_ENV=local
|
|
17
|
+
|
|
18
|
+
# Instance name for multi-instance support
|
|
19
|
+
TG_INSTANCE_NAME=mks-bot
|
|
20
|
+
|
|
21
|
+
# Optional: Custom instance ID (auto-generated if not set)
|
|
22
|
+
# TG_INSTANCE_ID=
|
|
23
|
+
|
|
24
|
+
# === Instance Detection ===
|
|
25
|
+
# Enable/disable instance conflict detection
|
|
26
|
+
TG_INSTANCE_CHECK=true
|
|
27
|
+
|
|
28
|
+
# Lock backend: pid or redis
|
|
29
|
+
TG_LOCK_BACKEND=pid
|
|
30
|
+
|
|
31
|
+
# Redis URL (required if TG_LOCK_BACKEND=redis)
|
|
32
|
+
# TG_REDIS_URL=redis://localhost:6379
|
|
33
|
+
|
|
34
|
+
# === ngrok Configuration (for local development) ===
|
|
35
|
+
# Enable ngrok integration
|
|
36
|
+
TG_NGROK_ENABLED=false
|
|
37
|
+
|
|
38
|
+
# Port for ngrok to forward
|
|
39
|
+
TG_NGROK_PORT=3000
|
|
40
|
+
|
|
41
|
+
# Optional: Custom ngrok domain
|
|
42
|
+
# TG_NGROK_DOMAIN=
|
|
43
|
+
|
|
44
|
+
# ngrok region: us, eu, ap, au, sa, jp, in
|
|
45
|
+
TG_NGROK_REGION=us
|
|
46
|
+
|
|
47
|
+
# Optional: ngrok auth token (for custom domain)
|
|
48
|
+
# TG_NGROK_AUTH_TOKEN=
|
|
49
|
+
|
|
50
|
+
# === Log Topic Configuration (for log streaming) ===
|
|
51
|
+
# TG_LOG_CHAT_ID=-1001234567890
|
|
52
|
+
# TG_LOG_TOPIC_ID=123
|
|
53
|
+
|
|
54
|
+
# === Control Topic Configuration (for health/commands) ===
|
|
55
|
+
# TG_CONTROL_CHAT_ID=-1001234567890
|
|
56
|
+
# TG_CONTROL_TOPIC_ID=124
|
|
57
|
+
|
|
58
|
+
# === Authorization ===
|
|
59
|
+
# Comma-separated user IDs for control commands
|
|
60
|
+
# TG_AUTHORIZED_USER_IDS=123456789,987654321
|
|
61
|
+
|
|
62
|
+
# === Logging ===
|
|
63
|
+
# Log level: debug, info, warn, error
|
|
64
|
+
LOG_LEVEL=info
|
|
65
|
+
|
|
66
|
+
# === File Logging Configuration ===
|
|
67
|
+
# TG_LOG_FILE_ENABLED=true
|
|
68
|
+
# TG_LOG_DIR=./logs
|
|
69
|
+
# TG_LOG_MAX_SIZE=1048576
|
|
70
|
+
# TG_LOG_MAX_FILES=5
|
|
71
|
+
# TG_LOG_LEVELS=info,warn,error,critical
|