From 3a233313e041ee57ae45448873d13349b1fb34a9 Mon Sep 17 00:00:00 2001 From: shnimlz Date: Sat, 20 Sep 2025 02:09:44 -0500 Subject: [PATCH] Usando redis para produccion, eliminado redis/docker --- prisma/dev.db | Bin 106496 -> 114688 bytes .../messages/alliaces/createEmbedv2.ts | 37 +++++++----------- src/commands/messages/alliaces/editEmbedv2.ts | 37 +++++++----------- src/core/lib/vars.ts | 31 +++++++++++++++ src/core/redis.ts | 15 ++++++- 5 files changed, 74 insertions(+), 46 deletions(-) diff --git a/prisma/dev.db b/prisma/dev.db index c7a45de61dd0e426e5bec9bd2b6b87b00ec8a995..15d0e936edfb078f5730cabb808dd0f5262bb8d0 100644 GIT binary patch delta 969 zcmZoTz}C>fK0%tbnSp^pW}<>UWAny@CHl;AoC_zj8W=UeALSj*FrJ}Mdi=isNxv8nSg`tUsfr){! ziLt4viBWNCQCVt{LT+MGVv(Y{42z*Izon^#rMZ!jv4OFsx>XJ=jNv$0kT9lmWHvYZdKxh+DJg9}UvD13;ljYH z!|lR-VY8rs88>HhDl?nCd|RUNp*v!n_+`!0u`hk2# zt?Ba;8O66-Co&%3<6&T6kXGPgU|>+rzpbCSu zGE<28$)@Q>g%)Y48HGx+%=V06+jG;(4Gatnj6t?1Wg4dEC8e1v!ez0!O<{X{4dX&( zc3uVs1_g!#)7cXk9jNQEqkKFd!|1>H>WByr=m7@P+a3;$O_$%=>V&pnxmy=4M|{BW8Jd`OW9+%>y_t zF!1VdU*Nv5Sy12*H%C(>Gn>79i|1sY+qyEDd1aX;sd{;dxv5GzO3C>-`9(@rrpAV5 zCdMX{XWkB(yzj2~WYs$%leO*{vFDZM ([ ]); /** - * Validar si una URL es válida + * Validar si una URL es válida o es una variable del sistema */ -const isValidUrl = (url: string): boolean => { - if (!url) return false; - try { - new URL(url); - return url.startsWith('http://') || url.startsWith('https://'); - } catch { - return false; - } -}; +const isValidUrl = isValidUrlOrVariable; /** * Validar y limpiar contenido para Discord @@ -654,20 +646,21 @@ export const command: CommandMessage = { await i.editReply({ content: "📋 **Variables Disponibles:**\n\n" + "**👤 Usuario:**\n" + - "`{user.name}` - Nombre del usuario\n" + - "`{user.id}` - ID del usuario\n" + - "`{user.mention}` - Mención del usuario\n" + - "`{user.avatar}` - Avatar del usuario\n\n" + + "`user.name` - Nombre del usuario\n" + + "`user.id` - ID del usuario\n" + + "`user.mention` - Mención del usuario\n" + + "`user.avatar` - Avatar del usuario\n\n" + "**📊 Estadísticas:**\n" + - "`{user.pointsAll}` - Puntos totales\n" + - "`{user.pointsWeekly}` - Puntos semanales\n" + - "`{user.pointsMonthly}` - Puntos mensuales\n\n" + + "`user.pointsAll` - Puntos totales\n" + + "`user.pointsWeekly` - Puntos semanales\n" + + "`user.pointsMonthly` - Puntos mensuales\n\n" + "**🏠 Servidor:**\n" + - "`{guild.name}` - Nombre del servidor\n" + - "`{guild.icon}` - Ícono del servidor\n\n" + + "`guild.name` - Nombre del servidor\n" + + "`guild.icon` - Ícono del servidor\n\n" + "**🔗 Invitación:**\n" + - "`{invite.name}` - Nombre del servidor invitado\n" + - "`{invite.icon}` - Ícono del servidor invitado" + "`invite.name` - Nombre del servidor invitado\n" + + "`invite.icon` - Ícono del servidor invitado\n\n" + + "💡 **Nota:** Las variables se usan SIN llaves `{}` en los campos de URL/imagen." }); break; } diff --git a/src/commands/messages/alliaces/editEmbedv2.ts b/src/commands/messages/alliaces/editEmbedv2.ts index fb29d85..7719037 100644 --- a/src/commands/messages/alliaces/editEmbedv2.ts +++ b/src/commands/messages/alliaces/editEmbedv2.ts @@ -1,7 +1,7 @@ import { CommandMessage } from "../../../core/types/commands"; // @ts-ignore import { ComponentType, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, Message, MessageFlags } from "discord.js"; -import { replaceVars } from "../../../core/lib/vars"; +import { replaceVars, isValidUrlOrVariable } from "../../../core/lib/vars"; /** * Botones de edición - VERSIÓN MEJORADA @@ -47,17 +47,9 @@ const btns = (disabled = false) => ([ ]); /** - * Validar si una URL es válida + * Validar si una URL es válida o es una variable del sistema */ -const isValidUrl = (url: string): boolean => { - if (!url) return false; - try { - new URL(url); - return url.startsWith('http://') || url.startsWith('https://'); - } catch { - return false; - } -}; +const isValidUrl = isValidUrlOrVariable; /** * Validar y limpiar contenido para Discord @@ -704,20 +696,21 @@ export const command: CommandMessage = { await i.editReply({ content: "📋 **Variables Disponibles:**\n\n" + "**👤 Usuario:**\n" + - "`{user.name}` - Nombre del usuario\n" + - "`{user.id}` - ID del usuario\n" + - "`{user.mention}` - Mención del usuario\n" + - "`{user.avatar}` - Avatar del usuario\n\n" + + "`user.name` - Nombre del usuario\n" + + "`user.id` - ID del usuario\n" + + "`user.mention` - Mención del usuario\n" + + "`user.avatar` - Avatar del usuario\n\n" + "**📊 Estadísticas:**\n" + - "`{user.pointsAll}` - Puntos totales\n" + - "`{user.pointsWeekly}` - Puntos semanales\n" + - "`{user.pointsMonthly}` - Puntos mensuales\n\n" + + "`user.pointsAll` - Puntos totales\n" + + "`user.pointsWeekly` - Puntos semanales\n" + + "`user.pointsMonthly` - Puntos mensuales\n\n" + "**🏠 Servidor:**\n" + - "`{guild.name}` - Nombre del servidor\n" + - "`{guild.icon}` - Ícono del servidor\n\n" + + "`guild.name` - Nombre del servidor\n" + + "`guild.icon` - Ícono del servidor\n\n" + "**🔗 Invitación:**\n" + - "`{invite.name}` - Nombre del servidor invitado\n" + - "`{invite.icon}` - Ícono del servidor invitado" + "`invite.name` - Nombre del servidor invitado\n" + + "`invite.icon` - Ícono del servidor invitado\n\n" + + "💡 **Nota:** Las variables se usan SIN llaves `{}` en los campos de URL/imagen." }); break; } diff --git a/src/core/lib/vars.ts b/src/core/lib/vars.ts index 775368e..484df46 100644 --- a/src/core/lib/vars.ts +++ b/src/core/lib/vars.ts @@ -1,5 +1,36 @@ import {Guild, Invite, User} from "discord.js"; +/** + * Lista de variables válidas del sistema (sin llaves {}) + */ +export const VALID_VARIABLES = [ + 'user.name', 'user.id', 'user.mention', 'user.avatar', + 'user.pointsAll', 'user.pointsWeekly', 'user.pointsMonthly', + 'guild.name', 'guild.icon', + 'invite.name', 'invite.icon' +]; + +/** + * Validar si una URL es válida o contiene variables del sistema + * @param url - La URL o texto a validar + * @returns boolean - true si es válida + */ +export function isValidUrlOrVariable(url: string): boolean { + if (!url) return false; + + // Verificar si el texto contiene variables válidas + const hasValidVariables = VALID_VARIABLES.some(variable => url.includes(variable)); + if (hasValidVariables) return true; + + // Si no tiene variables, validar como URL normal + try { + new URL(url); + return url.startsWith('http://') || url.startsWith('https://'); + } catch { + return false; + } +} + //@ts-ignore export async function replaceVars(text: string, user: User | undefined, guild: Guild | undefined, stats?: any, invite: Invite | undefined): Promise { if(!text) return ''; diff --git a/src/core/redis.ts b/src/core/redis.ts index f46ace6..eaee4e9 100644 --- a/src/core/redis.ts +++ b/src/core/redis.ts @@ -1,8 +1,19 @@ import { createClient } from "redis"; +/** +* export const redis = createClient({ +* url: process.env.REDIS_URL, +* }) +**/ + export const redis = createClient({ - url: process.env.REDIS_URL, -}) + username: 'default', + password: process.env.REDIS_PASS, + socket: { + host: process.env.REDIS_URL, + port: 17965 + } +}); redis.on("error", (err: any) => console.error("Redis error:", err)); redis.on("connect", () => console.log("✅ Conectado a Redis"));