From 41ae6f74b4245cef19796e49eaafd08608f109e0 Mon Sep 17 00:00:00 2001 From: Ayden Jahola Date: Sat, 5 Oct 2024 17:20:15 +0100 Subject: [PATCH] add cs comp endpoint --- commands/stats/cs2.js | 118 ++++++++++++++++++++++++------------------ 1 file changed, 69 insertions(+), 49 deletions(-) diff --git a/commands/stats/cs2.js b/commands/stats/cs2.js index 41d14fc..7d0df9b 100644 --- a/commands/stats/cs2.js +++ b/commands/stats/cs2.js @@ -10,20 +10,30 @@ module.exports = { .setName("steam_id") .setDescription("The Steam ID to fetch stats for.") .setRequired(true) + ) + .addStringOption((option) => + option + .setName("stats_type") + .setDescription("The type of stats to fetch (premier or competitive).") + .setRequired(true) + .addChoices( + { name: "Premier", value: "premier" }, + { name: "Competitive", value: "competitive" } + ) ), async execute(interaction) { const steamId = interaction.options.getString("steam_id"); + const statsType = interaction.options.getString("stats_type"); const apiUrl = process.env.TRACKER_API_URL; const apiKey = process.env.TRACKER_API_KEY; - const url = `https://${apiUrl}/cs2/player/${steamId}`; + const url = `https://${apiUrl}/cs2/player/${steamId}/${statsType}`; try { await interaction.deferReply(); - // Fetch data from the API const response = await axios.get(url, { headers: { "X-API-Key": apiKey, @@ -34,54 +44,64 @@ module.exports = { const statsEmbed = new EmbedBuilder() .setColor("#ff4500") - .setTitle(`CS2 Stats for Steam ID: ${data.steam_id}`) - .addFields( - { - name: "🏆 Current Rank", - value: data.current_rank, - }, - { - name: "🔝 Peak Rank", - value: data.peak_rank, - }, - { - name: "⏳ Hours Played", - value: `${data.hours_played}h`, - }, - { - name: "🎮 Matches Played", - value: `${data.matches_played}`, - }, - { - name: "🏅 Wins", - value: `${data.wins}`, - }, - { - name: "📊 Win Percentage", - value: `${data.win_percentage}%`, - }, - { - name: "⚔️ Kills", - value: `${data.kills}`, - }, - { - name: "📈 K/D Ratio", - value: `${data.kd_ratio}`, - }, - { - name: "🎯 Headshot Percentage", - value: `${data.headshot_percentage}%`, - }, - { - name: "💯 Tracker Score", - value: `${data.tracker_score}/1000`, - } - ) - .setTimestamp() - .setFooter({ - text: "CS2 Stats API made by Ayden", - iconURL: interaction.guild.iconURL(), + .setTitle(`CS2 Stats for Steam ID: ${data.steam_id} (${statsType})`); + + const rankField = { + name: + statsType === "competitive" + ? "🏆 Highest Rank (All maps)" + : "🏆 Current Rank", + value: data.current_rank, + }; + + const fields = [ + rankField, + { + name: "⏳ Hours Played", + value: `${data.hours_played}h`, + }, + { + name: "🎮 Matches Played", + value: `${data.matches_played}`, + }, + { + name: "🏅 Wins", + value: `${data.wins}`, + }, + { + name: "📊 Win Percentage", + value: `${data.win_percentage}%`, + }, + { + name: "⚔️ Kills", + value: `${data.kills}`, + }, + { + name: "📈 K/D Ratio", + value: `${data.kd_ratio}`, + }, + { + name: "🎯 Headshot Percentage", + value: `${data.headshot_percentage}%`, + }, + { + name: "💯 Tracker Score", + value: `${data.tracker_score}/1000`, + }, + ]; + + // Only add Peak Rank if statsType is not "competitive" + if (statsType !== "competitive") { + fields.splice(1, 0, { + name: "🔝 Peak Rank", + value: data.peak_rank || "N/A", }); + } + + statsEmbed.addFields(fields).setTimestamp().setFooter({ + text: "CS2 Stats API made by Ayden", + iconURL: interaction.guild.iconURL(), + }); return interaction.editReply({ embeds: [statsEmbed] }); } catch (error) {