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";
|
import { CommandMessage } from "../../../core/types/commands";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { ComponentType, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, Message, MessageFlags } from "discord.js";
|
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
|
* 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 => {
|
const isValidUrl = isValidUrlOrVariable;
|
||||||
if (!url) return false;
|
|
||||||
try {
|
|
||||||
new URL(url);
|
|
||||||
return url.startsWith('http://') || url.startsWith('https://');
|
|
||||||
} catch {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validar y limpiar contenido para Discord
|
* Validar y limpiar contenido para Discord
|
||||||
@@ -654,20 +646,21 @@ export const command: CommandMessage = {
|
|||||||
await i.editReply({
|
await i.editReply({
|
||||||
content: "📋 **Variables Disponibles:**\n\n" +
|
content: "📋 **Variables Disponibles:**\n\n" +
|
||||||
"**👤 Usuario:**\n" +
|
"**👤 Usuario:**\n" +
|
||||||
"`{user.name}` - Nombre del usuario\n" +
|
"`user.name` - Nombre del usuario\n" +
|
||||||
"`{user.id}` - ID del usuario\n" +
|
"`user.id` - ID del usuario\n" +
|
||||||
"`{user.mention}` - Mención del usuario\n" +
|
"`user.mention` - Mención del usuario\n" +
|
||||||
"`{user.avatar}` - Avatar del usuario\n\n" +
|
"`user.avatar` - Avatar del usuario\n\n" +
|
||||||
"**📊 Estadísticas:**\n" +
|
"**📊 Estadísticas:**\n" +
|
||||||
"`{user.pointsAll}` - Puntos totales\n" +
|
"`user.pointsAll` - Puntos totales\n" +
|
||||||
"`{user.pointsWeekly}` - Puntos semanales\n" +
|
"`user.pointsWeekly` - Puntos semanales\n" +
|
||||||
"`{user.pointsMonthly}` - Puntos mensuales\n\n" +
|
"`user.pointsMonthly` - Puntos mensuales\n\n" +
|
||||||
"**🏠 Servidor:**\n" +
|
"**🏠 Servidor:**\n" +
|
||||||
"`{guild.name}` - Nombre del servidor\n" +
|
"`guild.name` - Nombre del servidor\n" +
|
||||||
"`{guild.icon}` - Ícono del servidor\n\n" +
|
"`guild.icon` - Ícono del servidor\n\n" +
|
||||||
"**🔗 Invitación:**\n" +
|
"**🔗 Invitación:**\n" +
|
||||||
"`{invite.name}` - Nombre del servidor invitado\n" +
|
"`invite.name` - Nombre del servidor invitado\n" +
|
||||||
"`{invite.icon}` - Ícono del servidor invitado"
|
"`invite.icon` - Ícono del servidor invitado\n\n" +
|
||||||
|
"💡 **Nota:** Las variables se usan SIN llaves `{}` en los campos de URL/imagen."
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { CommandMessage } from "../../../core/types/commands";
|
import { CommandMessage } from "../../../core/types/commands";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { ComponentType, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle, ActionRowBuilder, Message, MessageFlags } from "discord.js";
|
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
|
* 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 => {
|
const isValidUrl = isValidUrlOrVariable;
|
||||||
if (!url) return false;
|
|
||||||
try {
|
|
||||||
new URL(url);
|
|
||||||
return url.startsWith('http://') || url.startsWith('https://');
|
|
||||||
} catch {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validar y limpiar contenido para Discord
|
* Validar y limpiar contenido para Discord
|
||||||
@@ -704,20 +696,21 @@ export const command: CommandMessage = {
|
|||||||
await i.editReply({
|
await i.editReply({
|
||||||
content: "📋 **Variables Disponibles:**\n\n" +
|
content: "📋 **Variables Disponibles:**\n\n" +
|
||||||
"**👤 Usuario:**\n" +
|
"**👤 Usuario:**\n" +
|
||||||
"`{user.name}` - Nombre del usuario\n" +
|
"`user.name` - Nombre del usuario\n" +
|
||||||
"`{user.id}` - ID del usuario\n" +
|
"`user.id` - ID del usuario\n" +
|
||||||
"`{user.mention}` - Mención del usuario\n" +
|
"`user.mention` - Mención del usuario\n" +
|
||||||
"`{user.avatar}` - Avatar del usuario\n\n" +
|
"`user.avatar` - Avatar del usuario\n\n" +
|
||||||
"**📊 Estadísticas:**\n" +
|
"**📊 Estadísticas:**\n" +
|
||||||
"`{user.pointsAll}` - Puntos totales\n" +
|
"`user.pointsAll` - Puntos totales\n" +
|
||||||
"`{user.pointsWeekly}` - Puntos semanales\n" +
|
"`user.pointsWeekly` - Puntos semanales\n" +
|
||||||
"`{user.pointsMonthly}` - Puntos mensuales\n\n" +
|
"`user.pointsMonthly` - Puntos mensuales\n\n" +
|
||||||
"**🏠 Servidor:**\n" +
|
"**🏠 Servidor:**\n" +
|
||||||
"`{guild.name}` - Nombre del servidor\n" +
|
"`guild.name` - Nombre del servidor\n" +
|
||||||
"`{guild.icon}` - Ícono del servidor\n\n" +
|
"`guild.icon` - Ícono del servidor\n\n" +
|
||||||
"**🔗 Invitación:**\n" +
|
"**🔗 Invitación:**\n" +
|
||||||
"`{invite.name}` - Nombre del servidor invitado\n" +
|
"`invite.name` - Nombre del servidor invitado\n" +
|
||||||
"`{invite.icon}` - Ícono del servidor invitado"
|
"`invite.icon` - Ícono del servidor invitado\n\n" +
|
||||||
|
"💡 **Nota:** Las variables se usan SIN llaves `{}` en los campos de URL/imagen."
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,36 @@
|
|||||||
import {Guild, Invite, User} from "discord.js";
|
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
|
//@ts-ignore
|
||||||
export async function replaceVars(text: string, user: User | undefined, guild: Guild | undefined, stats?: any, invite: Invite | undefined): Promise<string> {
|
export async function replaceVars(text: string, user: User | undefined, guild: Guild | undefined, stats?: any, invite: Invite | undefined): Promise<string> {
|
||||||
if(!text) return '';
|
if(!text) return '';
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
import { createClient } from "redis";
|
import { createClient } from "redis";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* export const redis = createClient({
|
||||||
|
* url: process.env.REDIS_URL,
|
||||||
|
* })
|
||||||
|
**/
|
||||||
|
|
||||||
export const redis = createClient({
|
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("error", (err: any) => console.error("Redis error:", err));
|
||||||
redis.on("connect", () => console.log("✅ Conectado a Redis"));
|
redis.on("connect", () => console.log("✅ Conectado a Redis"));
|
||||||
|
|||||||
Reference in New Issue
Block a user