const priceTable = [ { regex: /\b(?:thp|summoner|summ)\b/i, returnKeyWord: "summoner piece", prices: ["1000;10", "1100;15", "1200;30", "1250;100", "1300;1000"], }, ]; function constructPriceSubTable(idx) { const orig = priceTable[idx]; const priceSubTable = []; orig.prices.forEach((price) => { const splitPrice = price.split(";"); const obj = { number: parseInt(splitPrice[0]), val: parseInt(splitPrice[1]), }; priceSubTable.push(obj); }); return priceSubTable; } function findClosestPrice(subtable, gameValue) { let closest = subtable[0]; let smallestDiff = Math.abs(subtable[0].number - gameValue); for (let i = 1; i < subtable.length; i++) { const diff = Math.abs(subtable[i].number - gameValue); if (diff < smallestDiff) { smallestDiff = diff; closest = subtable[i]; } } return { val: closest.val, diff: smallestDiff }; } exports.name = "estimate"; exports.description = ":money_with_wings: Give an estimated price of certain items in cv. [WIP]"; exports.usage = "< { const combined = args.join(" "); console.log(combined); // regex's are split for readability const builderRegex = /\b(?:app|apprentice|thp|summoner|summ|tdmg|tdamage|aura|trange)\b/i; const dpsRegex = /\b(?:dps|hhp|hdmg)\b/i; const otherRegex = /\b(?:frost rifle|mm|mischief maker|)\b/i; let entryFound = false; let estimatedPrice = 0; let gameValue = 0; args.forEach((arg) => { if (!isNaN(parseInt(arg))) { gameValue = parseInt(arg); } }); console.log(gameValue); let returnKeyWord = ""; if (!gameValue) { return message.channel.send( "You didn't include any numbers in your query. Try again or consult `< { if (price.regex.test(combined)) { entryFound = true; returnKeyWord = price.returnKeyWord; estimatedPrice = findClosestPrice( constructPriceSubTable(idx), gameValue ).val; } }); if (entryFound) { message.channel.send( `Hmm... I estimate your ${gameValue} ${returnKeyWord} to be worth approximately ${ estimatedPrice > 500 ? `**${estimatedPrice}** (probably auction)` : estimatedPrice } cv.\n*Take this info with a grain of salt though. Estimation is provided through looking at past trades/price checks/sheets in DDRNG. GLHF.*` ); } else message.channel.send( "Your summary didn't match any entry in price table (WIP, im workig on it), please refine your query and/or reffer to `<