<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Himanshu Jain</title>
    <description>The latest articles on DEV Community by Himanshu Jain (@himanshujain112).</description>
    <link>https://dev.to/himanshujain112</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2059216%2F545538df-ee04-4787-8944-0adfcf1c424b.jpeg</url>
      <title>DEV Community: Himanshu Jain</title>
      <link>https://dev.to/himanshujain112</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/himanshujain112"/>
    <language>en</language>
    <item>
      <title>How to Build a Discord Bot that Tracks Free Games (Epic &amp; Steam)</title>
      <dc:creator>Himanshu Jain</dc:creator>
      <pubDate>Mon, 09 Feb 2026 13:07:53 +0000</pubDate>
      <link>https://dev.to/himanshujain112/how-to-build-a-discord-bot-that-tracks-free-games-epic-steam-58if</link>
      <guid>https://dev.to/himanshujain112/how-to-build-a-discord-bot-that-tracks-free-games-epic-steam-58if</guid>
      <description>&lt;p&gt;We all love free games. But we all hate remembering to claim them.&lt;/p&gt;

&lt;p&gt;Every Thursday, Epic Games drops a free title. Steam randomly makes paid games free for a weekend. If you aren't glued to Reddit, you usually miss it.&lt;/p&gt;

&lt;p&gt;Today, we fix that.&lt;/p&gt;

&lt;p&gt;We’ll build &lt;strong&gt;LootBot&lt;/strong&gt;, a simple Discord bot that checks for active freebies and posts them to your server.&lt;/p&gt;




&lt;h2&gt;
  
  
  ❌ The Old Way
&lt;/h2&gt;

&lt;p&gt;Scrape the Epic Store website using Puppeteer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow&lt;/li&gt;
&lt;li&gt;Heavy&lt;/li&gt;
&lt;li&gt;Gets IP banned&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ✅ The New Way
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;Game Deals &amp;amp; Freebies API&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;No scraping headaches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get coding. 😺&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Step 1: The Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create a Discord Bot Token
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Discord Developer Portal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New Application&lt;/strong&gt; → name it &lt;code&gt;LootBot&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;Bot&lt;/strong&gt; tab → click &lt;strong&gt;Add Bot&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Scroll to &lt;strong&gt;Privileged Gateway Intents&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Message Content Intent&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Copy your &lt;strong&gt;Bot Token&lt;/strong&gt; and save it&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  2. Initialize the Node.js Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
npm &lt;span class="nb"&gt;install &lt;/span&gt;discord.js axios dotenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔑 Step 2: Get Your Free API Key
&lt;/h2&gt;

&lt;p&gt;We aren’t scraping websites today. It’s 2026 — we use APIs.&lt;/p&gt;

&lt;p&gt;We’ll use &lt;strong&gt;Game Deals &amp;amp; Freebies API&lt;/strong&gt; from RapidAPI. It aggregates data from &lt;strong&gt;Epic Games&lt;/strong&gt;, &lt;strong&gt;Steam&lt;/strong&gt;, and &lt;strong&gt;GamerPower&lt;/strong&gt; into a clean JSON feed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Game Deals &amp;amp; Freebies API&lt;/strong&gt; on RapidAPI&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Subscribe to Test&lt;/strong&gt; (Basic tier is free)&lt;/li&gt;
&lt;li&gt;Copy your &lt;strong&gt;X-RapidAPI-Key&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🧠 Step 3: The Code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Environment Variables
&lt;/h3&gt;

&lt;p&gt;Create a file named &lt;code&gt;.env&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DISCORD_TOKEN=yourdiscordbottoken_here
RAPIDAPI_KEY=yourrapidapikeyhere
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. Bot Logic (&lt;code&gt;index.js&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The bot listens for &lt;code&gt;!loot&lt;/code&gt; and replies with currently active free games.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;EmbedBuilder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;discord.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;intents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Guilds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GuildMessages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;GatewayIntentBits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MessageContent&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getFreeGames&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://game-deals-freebies-api.p.rapidapi.com/epic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-RapidAPI-Key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RAPIDAPI_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-RapidAPI-Host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;game-deals-freebies-api.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;active&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;API Error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;messageCreate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!loot&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;🔍 Scanning for freebies...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;games&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getFreeGames&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;games&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No free games found right now. Check back later!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="nx"&gt;games&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;game&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;embed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EmbedBuilder&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0099FF&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setDescription&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addFields&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Original Price&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;originalPrice&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Free&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
                    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Status&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;🔥 Active Now&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;inline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storeUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setFooter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Powered by Game Deals &amp;amp; Freebies API&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

            &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;embeds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;embed&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ready&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`😺 LootBot is online as &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ▶️ Step 4: Run It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Invite the bot to your server (via &lt;strong&gt;OAuth2&lt;/strong&gt; in the Discord Developer Portal), type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!loot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And watch the magic happen ✨&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 Why Use an API Instead of Scraping?
&lt;/h2&gt;

&lt;p&gt;Scraping works — until it doesn’t.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; – APIs respond in milliseconds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance&lt;/strong&gt; – HTML changes break scrapers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bandwidth&lt;/strong&gt; – Clean JSON instead of heavy HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt; – No IP bans or CAPTCHAs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next?
&lt;/h2&gt;

&lt;p&gt;You can expand LootBot to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⏰ Auto-check freebies every Thursday using &lt;code&gt;node-cron&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;💰 Track discounts via the &lt;code&gt;/deals&lt;/code&gt; endpoint&lt;/li&gt;
&lt;li&gt;🔑 Find Steam beta keys using &lt;code&gt;/freebies&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;📢 Auto-ping roles when new games drop&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔗 Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rapidapi.com/codemeoww/api/game-deals-freebies-api" rel="noopener noreferrer"&gt;Game Deals &amp;amp; Freebies API (RapidAPI)
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/himanshujain112/lootbot" rel="noopener noreferrer"&gt;Source Code (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy coding! 😺&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>discord</category>
      <category>epicgames</category>
      <category>steam</category>
    </item>
    <item>
      <title>Building IntelliCV: An AI Resume Tool That Actually Helps 🚀</title>
      <dc:creator>Himanshu Jain</dc:creator>
      <pubDate>Sun, 27 Jul 2025 12:14:26 +0000</pubDate>
      <link>https://dev.to/himanshujain112/building-intellicv-an-ai-resume-tool-that-actually-helps-1n7m</link>
      <guid>https://dev.to/himanshujain112/building-intellicv-an-ai-resume-tool-that-actually-helps-1n7m</guid>
      <description>&lt;p&gt;Have you ever poured your heart into a resume, hit "submit," and waited… only to hear nothing back? That frustrating silence, the endless second-guessing, the late-night tweaks wondering if your resume was even seen? I’ve been there. And I’m betting you have too.&lt;/p&gt;

&lt;p&gt;I’m &lt;strong&gt;Himanshu Jain&lt;/strong&gt;, a final-year Computer Science student from India, and I built &lt;a href="//intellicv.com"&gt;IntelliCV&lt;/a&gt; because I was done with the resume black hole. I wanted a tool that doesn’t just spit out a score or generic advice—it gets the job search grind and gives you clear, actionable feedback to stand out. Here’s why I created IntelliCV, how I built it, and why you should join the waitlist to try it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Job Search Grind 😩
&lt;/h2&gt;

&lt;p&gt;It’s 2 a.m. You’re tweaking your resume for the hundredth time. You’ve Googled “best resume templates,” rewritten bullet points to sound “professional,” and asked a friend to proofread. You hit “apply” on a job portal, hoping this is the one.&lt;/p&gt;

&lt;p&gt;Days pass. Weeks. No emails, no calls—just silence.&lt;/p&gt;

&lt;p&gt;That was me a year ago, grinding through internship applications. As a CS student, I thought my resume was solid: one page, keywords, no typos. But nothing worked. I kept wondering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is my resume getting stuck in an &lt;strong&gt;Applicant Tracking System (ATS)?&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Are recruiters seeing it and passing it over?&lt;/li&gt;
&lt;li&gt;What’s the real reason I’m not getting callbacks?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The worst part? No one could tell me what was wrong. Friends said, “Looks good!” Online tools gave me a vague “85%” score with no explanation. Professional reviews were either too pricey or felt like a scam. I was stuck, like my future was on pause, and I didn’t know how to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most Resume Tools Suck
&lt;/h2&gt;

&lt;p&gt;Most resume tools are a letdown. They either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Give vague scores: **“92%” sounds cool, but what does it mean? How do you improve?
-&lt;/strong&gt; Obsess over keywords: &lt;strong&gt;Keywords matter, but a resume should sound like you, not a bot.
-&lt;/strong&gt; Lack real insight:** Tools like ChatGPT give generic tips like “use action verbs,” but they miss your role’s context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push upsells:&lt;/strong&gt; Paywalls for “premium feedback” or reviews that feel off.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a tool that’s like a friend who knows recruiting, ATS systems, and clear writing. That’s why I built IntelliCV.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is IntelliCV? 🤖
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.debuglife.fun/2025/07/why-i-built-intellicv.html" rel="noopener noreferrer"&gt;IntelliCV&lt;/a&gt; is an AI-powered resume analysis tool that gives you honest, actionable feedback in seconds. It’s not about fluff—it’s about showing you what’s holding your resume back and how to fix it. For example, IntelliCV might say: “Your bullet point about ‘team projects’ is vague—try adding specifics like ‘Led a 5-person team using Agile to deliver a web app in 3 months.’” Here’s what it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checks ATS compatibility:&lt;/strong&gt; Makes sure your resume passes Applicant Tracking Systems.&lt;/li&gt;
&lt;li&gt;**Flags grammar and clarity issues: **Catches typos or phrasing recruiters might flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyzes role relevance:&lt;/strong&gt; Compares your resume to the job and suggests improvements.
-** Offers real-time suggestions:** Specific advice, not just “add keywords.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviews your LinkedIn profile:&lt;/strong&gt; Because recruiters check your online presence first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**IntelliCV **is like a 24/7 job application coach—reliable, straightforward, and built to get you interviews.&lt;/p&gt;

&lt;p&gt;🚀 Want to fix your resume? Join the waitlist at intellicv.com and be the first to try it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;I didn’t start IntelliCV because I had free time (final-year CS student here—my schedule’s a mess). I built it because I was fed up. The job search felt like a game I couldn’t win, and I knew I wasn’t alone. Every student, career switcher, or dev tweaking their resume at midnight is in the same boat.&lt;/p&gt;

&lt;p&gt;I still remember my first rejection email after weeks of silence. It was a generic “we’ve moved on with other candidates.” I wasn’t just disappointed—I was lost. Was it my skills? My resume? Something else? The lack of feedback was brutal. Without knowing what was wrong, I was just guessing, and that’s a fast track to burnout.&lt;/p&gt;

&lt;p&gt;That’s when I realized: feedback is everything. If you know what’s off, you can fix it. If you don’t, you’re stuck. So, I set out to build a tool that gives you clear, honest feedback to land that internship, job, or career pivot.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenges
&lt;/h2&gt;

&lt;p&gt;Building IntelliCV was tough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human-like AI feedback: AI can sound stiff, so I spent weeks tweaking it to be practical and clear.&lt;/li&gt;
&lt;li&gt;Secure file uploads: Resumes have sensitive info, so I prioritized security without slowing things down.&lt;/li&gt;
&lt;li&gt;Limited test data: Early on, I didn’t have enough real resumes, so I got creative with mock data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Wins
&lt;/h2&gt;

&lt;p&gt;The grind paid off with moments like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nailing the ATS scoring logic and seeing results that make sense.&lt;/li&gt;
&lt;li&gt;Beta testers saying, “This is exactly what I needed.”&lt;/li&gt;
&lt;li&gt;Watching the waitlist grow as devs and job seekers get excited.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the IntelliCV Waitlist 🚀
&lt;/h2&gt;

&lt;p&gt;IntelliCV isn’t live yet, but it’s almost ready. The core is solid, the feedback is sharp, and I’m polishing the final bits. I want you to be part of it from the start. Join the waitlist at intellicv.com to get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Early access:&lt;/strong&gt; Try IntelliCV before anyone else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature voting:&lt;/strong&gt; Tell me what you need, and I’ll build it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A community:&lt;/strong&gt; Connect with other job seekers who are done guessing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn’t just a tool—it’s a way to take control of your job search.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Commitment to You
&lt;/h2&gt;

&lt;p&gt;I didn’t build IntelliCV for clout or cash. I built it because I know what it’s like to put everything into a resume and get nothing back. I know the doubt, the frustration, the feeling that you’re not good enough. IntelliCV is my way of saying: You are good enough. You just need a tool that shows it.&lt;/p&gt;

&lt;p&gt;Whether you’re a dev chasing gigs, a student hunting internships, or a career switcher starting fresh, IntelliCV is for you. It’s not just a resume tool—it’s your job search wingman.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Level Up Your Resume?
&lt;/h2&gt;

&lt;p&gt;The job search doesn’t have to be a mystery. With IntelliCV, you’ll get the feedback you need to land interviews.&lt;/p&gt;

&lt;p&gt;👉 Join the waitlist at &lt;a href="//intellicv.com"&gt;intellicv.com&lt;/a&gt; and let’s make your resume unstoppable.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>ai</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
