- Agregar selector de directorio multi-OS con validación y persistencia - Implementar preview en tiempo real del código generado en CommandCreator y EventCreator - Activar TypeScript strict mode y añadir snippets nativos para mejorar la experiencia de desarrollo - Crear documentación detallada sobre las nuevas funcionalidades y cambios realizados - Actualizar README con instrucciones de uso y solución de problemas comunes - Modificar archivos clave para integrar las nuevas características y mejorar la usabilidad
233 lines
5.8 KiB
Markdown
233 lines
5.8 KiB
Markdown
# 🤖 Amayo Bot Editor
|
||
|
||
Editor visual estilo VS Code construido con Tauri, TypeScript y Vue para gestionar comandos y eventos de tu bot de Discord.
|
||
|
||
## ✨ Características
|
||
|
||
- **📊 Dashboard con Estadísticas**: Visualiza en tiempo real:
|
||
- Comandos de mensaje (prefix-based)
|
||
- Comandos slash
|
||
- Eventos estándar de Discord.js
|
||
- Eventos custom/extras
|
||
|
||
- **📝 Editor de Código Integrado**:
|
||
- Monaco Editor (el mismo de VS Code)
|
||
- Sintaxis highlighting para TypeScript
|
||
- Autocompletado inteligente
|
||
- Shortcuts de teclado (Ctrl+S para guardar)
|
||
|
||
- **➕ Creadores Visuales**:
|
||
- Crear comandos slash y de mensaje con GUI
|
||
- Crear eventos estándar y custom
|
||
- Formularios para metadatos
|
||
- Snippets predefinidos para Discord.js
|
||
|
||
- **🔍 Explorador de Archivos**:
|
||
- Navegación intuitiva por comandos y eventos
|
||
- Iconos diferenciados por tipo
|
||
- Edición en tiempo real
|
||
|
||
## 🚀 Instalación
|
||
|
||
### Prerrequisitos
|
||
|
||
- Node.js 18+
|
||
- Rust (para compilar Tauri)
|
||
- npm o yarn
|
||
|
||
### Pasos
|
||
|
||
1. Navega al directorio del editor:
|
||
```bash
|
||
cd AEditor
|
||
```
|
||
|
||
2. Instala las dependencias:
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
3. Ejecuta en modo desarrollo:
|
||
```bash
|
||
npm run tauri dev
|
||
```
|
||
|
||
4. Para compilar la aplicación:
|
||
```bash
|
||
npm run tauri build
|
||
```
|
||
|
||
## 📖 Uso
|
||
|
||
### Crear un Comando
|
||
|
||
1. Haz clic en **"➕ Nuevo Comando"** en el sidebar
|
||
2. Selecciona el tipo:
|
||
- **Comando de Mensaje**: Usa prefix (ej: `!ping`)
|
||
- **Comando Slash**: Usa `/` (ej: `/ping`)
|
||
3. Completa los metadatos:
|
||
- Nombre del comando
|
||
- Descripción
|
||
- Categoría (opcional)
|
||
- Cooldown (opcional)
|
||
- Aliases (solo para comandos de mensaje)
|
||
4. Escribe la lógica en el editor Monaco
|
||
5. Usa el botón **"📝 Insertar Snippet"** para código común
|
||
6. Guarda con **"➕ Crear Comando"**
|
||
|
||
### Crear un Evento
|
||
|
||
1. Haz clic en **"➕ Nuevo Evento"** en el sidebar
|
||
2. Selecciona el tipo:
|
||
- **Evento Estándar**: Eventos de Discord.js (ready, messageCreate, etc.)
|
||
- **Evento Custom**: Funciones que se ejecutan desde otros eventos
|
||
3. Elige el evento de Discord (si es estándar)
|
||
4. Escribe el nombre del archivo
|
||
5. Implementa la lógica en el editor
|
||
6. Guarda con **"➕ Crear Evento"**
|
||
|
||
### Editar Archivos Existentes
|
||
|
||
1. En el sidebar, navega a la sección de **Comandos** o **Eventos**
|
||
2. Haz clic en el archivo que deseas editar
|
||
3. Edita el código en el editor Monaco
|
||
4. Guarda con **Ctrl+S** o el botón **"💾 Guardar"**
|
||
|
||
## 🎨 Estructura del Proyecto
|
||
|
||
```
|
||
AEditor/
|
||
├── src/
|
||
│ ├── components/
|
||
│ │ ├── Sidebar.vue # Panel lateral con estadísticas
|
||
│ │ ├── MonacoEditor.vue # Editor de código
|
||
│ │ ├── CommandCreator.vue # Creador de comandos
|
||
│ │ └── EventCreator.vue # Creador de eventos
|
||
│ ├── types/
|
||
│ │ └── bot.ts # Tipos TypeScript
|
||
│ └── App.vue # Componente principal
|
||
├── src-tauri/
|
||
│ └── src/
|
||
│ └── lib.rs # Comandos Rust/Tauri
|
||
└── package.json
|
||
```
|
||
|
||
## 🛠️ Tecnologías
|
||
|
||
- **Frontend**: Vue 3 + TypeScript + Vite
|
||
- **Editor**: Monaco Editor
|
||
- **Desktop**: Tauri (Rust)
|
||
- **Estilos**: CSS personalizado (tema VS Code Dark)
|
||
|
||
## 📝 Tipos de Comandos Soportados
|
||
|
||
### Comandos de Mensaje (Message Commands)
|
||
|
||
```typescript
|
||
export default {
|
||
name: "ping",
|
||
type: 'message' as const,
|
||
description: "Responde con pong",
|
||
aliases: ["p", "latencia"],
|
||
cooldown: 5,
|
||
async run(message: Message, args: string[], client: Amayo) {
|
||
await message.reply("¡Pong!");
|
||
}
|
||
}
|
||
```
|
||
|
||
### Comandos Slash (Slash Commands)
|
||
|
||
```typescript
|
||
export default {
|
||
name: "ping",
|
||
description: "Responde con pong",
|
||
type: 'slash' as const,
|
||
cooldown: 5,
|
||
async run(interaction: ChatInputCommandInteraction, client: Amayo) {
|
||
await interaction.reply({
|
||
content: "¡Pong!",
|
||
ephemeral: true
|
||
});
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🎯 Tipos de Eventos Soportados
|
||
|
||
### Eventos Estándar
|
||
|
||
Eventos nativos de Discord.js como `ready`, `messageCreate`, `interactionCreate`, etc.
|
||
|
||
```typescript
|
||
import { bot } from "../main";
|
||
import { Events } from "discord.js";
|
||
|
||
bot.on(Events.MessageCreate, async (message) => {
|
||
// Tu lógica aquí
|
||
});
|
||
```
|
||
|
||
### Eventos Custom/Extras
|
||
|
||
Funciones que se ejecutan desde otros eventos (por ejemplo, desde `messageCreate`):
|
||
|
||
```typescript
|
||
import { Message } from "discord.js";
|
||
|
||
export async function alliance(message: Message) {
|
||
// Tu lógica custom
|
||
}
|
||
```
|
||
|
||
## ⌨️ Shortcuts
|
||
|
||
- **Ctrl+S**: Guardar archivo actual
|
||
- **Ctrl+N**: Nuevo comando (cuando esté implementado)
|
||
- **F5**: Actualizar estadísticas del proyecto
|
||
|
||
## 🔧 Comandos Tauri Disponibles
|
||
|
||
- `get_project_root()`: Obtiene la ruta raíz del proyecto
|
||
- `scan_commands(projectRoot)`: Escanea todos los comandos
|
||
- `scan_events(projectRoot)`: Escanea todos los eventos
|
||
- `get_project_stats(projectRoot)`: Obtiene estadísticas del proyecto
|
||
- `read_file_content(filePath)`: Lee el contenido de un archivo
|
||
- `write_file_content(filePath, content)`: Escribe contenido a un archivo
|
||
|
||
## 🐛 Solución de Problemas
|
||
|
||
### Error al cargar el proyecto
|
||
|
||
Asegúrate de que estás ejecutando el editor desde el directorio `AEditor` y que existe la carpeta `src` con comandos y eventos en el nivel superior.
|
||
|
||
### Monaco Editor no se muestra
|
||
|
||
Verifica que Monaco Editor esté correctamente instalado:
|
||
```bash
|
||
npm list monaco-editor
|
||
```
|
||
|
||
### Errores de compilación de Rust
|
||
|
||
Asegúrate de tener Rust instalado y actualizado:
|
||
```bash
|
||
rustup update
|
||
```
|
||
|
||
## 📄 Licencia
|
||
|
||
Este proyecto es parte del bot Amayo y sigue la misma licencia del proyecto principal.
|
||
|
||
## 🤝 Contribuciones
|
||
|
||
Las contribuciones son bienvenidas. Por favor abre un issue o pull request en el repositorio principal.
|
||
|
||
## 📮 Soporte
|
||
|
||
Si encuentras algún problema o tienes sugerencias, abre un issue en el repositorio de GitHub.
|
||
|
||
---
|
||
|
||
Hecho con ❤️ para la comunidad de Amayo Bot
|