-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Cambios para Rodentbot #58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Araxielfenix
wants to merge
298
commits into
pedrojlazevedo:main
Choose a base branch
from
Araxielfenix:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Gestión Centralizada de Configuración y Constantes: Todas las variables que dependen del entorno (como API keys, IDs de canales, nombres de modelos) se cargan ahora desde process.env al inicio del archivo y se les asignan constantes con nombres descriptivos. Se han añadido validaciones básicas para asegurar que las variables de entorno críticas estén presentes al iniciar el bot, terminando la ejecución si faltan. Cadenas de texto "mágicas" (como IDs de usuario específicos o prompts) se han definido como constantes para mejorar la legibilidad y facilitar futuras modificaciones. Configuraciones derivadas (como listas de IDs de canales ignorados o palabras clave) se procesan una vez al inicio. Eliminación de Código No Utilizado: Se quitaron importaciones de módulos (CronJob, https, EmbedBuilder) que no se estaban utilizando en el código. Introducción de Funciones Auxiliares (Helpers): callShapesAPI: Se creó esta función para encapsular la lógica de las llamadas a la API de shapes_client. Esto reduce la duplicación de código en los diferentes manejadores de eventos y centraliza el manejo de errores de la API. Ahora devuelve null en caso de error para que el llamador pueda manejarlo. logSeparator: Una pequeña utilidad para imprimir separadores en la consola, ayudando a organizar visualmente los logs. Refactorización y Mejoras en los Manejadores de Eventos: ready: Se corrigió el uso de la cabecera X-Channel-Id para que utilice el id del canal (canal.id) en lugar de una variable message que no estaba definida en ese contexto. Ahora utiliza la función callShapesAPI para el mensaje periódico. Se mejoró el manejo de errores en caso de que el canal general no se encuentre o la API falle. guildMemberAdd: Similar al evento ready, se corrigió la cabecera X-Channel-Id para usar canal.id por consistencia. Utiliza callShapesAPI para generar el mensaje de bienvenida. Mejorado el manejo de errores. messageCreate: Las condiciones de guarda (para ignorar mensajes) se han reescrito para mayor claridad, utilizando las constantes definidas (ej. MEE6_USER_ID, IGNORED_CHANNEL_IDS). La lógica para determinar si el bot debe responder (debeResponder) ahora usa la constante COMMAND_KEYWORDS. Utiliza callShapesAPI para obtener la respuesta del bot. La cabecera X-Channel-Id ahora usa message.channel.id consistentemente. El formato del historial de conversación (formattedHistory) enviado a la API es más legible y se une con saltos de línea. La construcción del apiUserContentPayload (que incluye texto, imágenes o audio) es más clara. Se ha mejorado el manejo de errores, incluyendo un try-catch al intentar responder al usuario en caso de fallo, y se verifica !message.replied para evitar respuestas duplicadas. Mejoras Generales en Claridad y Mantenimiento: Uso consistente de async/await. Comentarios explicativos para las variables de entorno y algunas lógicas complejas. Mejor manejo del estado de userConversations, asegurando que el historial se actualice correctamente. Se añadió un console.log más detallado en messageCreate para incluir el ID del canal.
Explicación detallada de los cambios en messageCreate: import { ChannelType } from "discord.js";: Se añade ChannelType a las importaciones. const isDM = message.channel.type === ChannelType.DM;: Al inicio del manejador, determinamos si el mensaje es un DM y guardamos el resultado en isDM. Guard Clause pedrojlazevedo#3 (Roles): Aunque la condición if (message.member) ya manejaba correctamente el caso de DMs (donde message.member es null), he añadido !isDM && para que sea explícito que esta lógica de roles solo aplica si no es un DM y message.member existe. Esto es más una clarificación que un cambio funcional crítico para DMs, ya que message.member sería null de todas formas. Guard Clause pedrojlazevedo#4 (Canales Ignorados): Se modifica a if (!isDM && IGNORED_CHANNEL_IDS.includes(message.channel.id)) return;. Esto asegura que la lista de canales ignorados solo se aplique si el mensaje NO es un DM. Logging: El console.log ahora usa la variable isDM para mostrar "DM" o el nombre del canal según corresponda: console.log( `Mensaje recibido: "${message.content}" por ${message.author.username} en ${isDM ? 'DM' : `canal ${message.channel.name}`} (ID: ${message.channel.id})` );
Inicializamos debeResponder a false. Si isDM es true (es decir, el mensaje es un Mensaje Directo), establecemos debeResponder a true inmediatamente. Esto asegura que el bot procesará el mensaje. Si no es un DM (else), mantenemos la lógica original: el bot responderá si es mencionado o si el mensaje contiene alguna de las COMMAND_KEYWORDS.
Si el usuario solo escribe el comando (por ejemplo, "@RodentPlay" y nada más), el bot detecta que no hay mensaje después del comando y responde pidiendo que escriban un mensaje. Solo si hay texto adicional, el bot envía ese texto a la IA.
El comando y cualquier texto (o sólo el comando) se manda directo a la IA. No hay mensajes de error por mensaje vacío. La lógica es más simple y robusta.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.