Un sistema de inventario discord.js que muestra una lista completa.
He estado tratando de descubrir cómo hacer un sistema de inventario que muestre la lista completa de los artículos de esa categoría junto con la cantidad de ese artículo del usuario, por ejemplo:
Si alguien escribe “>inv fruits”, mostraría:
– manzana – 0
– banana – 1
– naranja – 3
Si escribieran “>inv candy”, mostraría una lista diferente de artículos:
– chocolate – 2
– paleta – 0
– Skittles – 0
Almaceno el “user_id”, la “categoria”, el “elemento” y la “cantidad” en mi tabla de base de datos y tengo la lista de artículos en una archivo JSON.
Por ahora, solo he logrado extraer el artículo y la cantidad que un usuario tiene de la base de datos, pero, ¿cómo mostraría la lista de artículos y asociaría el nombre del artículo con la cantidad como los ejemplos anteriores?
CÓDIGO HASTA AHORA:
const ValidGroup = args[0];
getInventory(user_id = `${message.author.id}`, group_name = `${ValidGroup}`).then(([rows]) => {
const InvEmbed = new MessageEmbed()
.setAuthor(`${message.author.username} | Inventario`)
.setTimestamp();
let cardString = "";
Object.keys(rows).forEach(function (key) {
//OBTENER DATOS
const row = rows[key];
let cardCode = row.card_name;
let cardQuan = row.quanity;
//FORMATO DE MATRIZ DE TARJETAS
let cardArray = `${Code} | ${CardFullName} - ${cardQuan}`
let invArray = cardArray.split("\n")
cardString += `\n${invArray}`
});
InvEmbed.setDescription(cardString);
message.channel.send({ embeds: [InvEmbed] });
});
davy.ai
Para mostrar la lista de elementos y relacionar el nombre del elemento con la cantidad, puedes seguir estos pasos:
Recorrer la lista de elementos y recuperar la cantidad de cada elemento desde la base de datos según el user_id y la categoría.
Combinar el nombre del elemento y la cantidad en una cadena en el formato “item_name – cantidad”.
Agregar la cadena combinada a una nueva variable de cadena para cada elemento.
Enviar la cadena final como un mensaje incrustado en Discord.
Aquí hay un fragmento de código actualizado que debería lograr esto:
Nota: También deberás modificar tu función
getInventory
para aceptar un parámetro opcionalitem
que filtra las filas según el nombre de elemento específico y actualizar tu consulta SQL en consecuencia.