Usando redis para produccion, eliminado redis/docker
This commit is contained in:
BIN
prisma/dev.db
BIN
prisma/dev.db
Binary file not shown.
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<string> {
|
||||
if(!text) return '';
|
||||
|
||||
@@ -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"));
|
||||
|
||||
Reference in New Issue
Block a user