<?xml version="1.0"?>
<rss version="2.0"><channel><title>node-steam-user Latest Topics</title><link>https://dev.doctormckay.com/forum/7-node-steam-user/</link><description>node-steam-user Latest Topics</description><language>en</language><item><title>Can Steam web auth establish a GC session for CS2 (e.g. trade-ups)</title><link>https://dev.doctormckay.com/topic/5932-can-steam-web-auth-establish-a-gc-session-for-cs2-eg-trade-ups/</link><description><![CDATA[<p>
	<span><span style="padding:5px 0px;"><span>I know this sounds unlikely, but I’ve seen a Chinese </span></span></span><span><span style="padding:5px 0px;"><span><span>trading platform</span></span></span></span><span><span style="padding:5px 0px;"><span> that actually works this way: I only need to sign in and link my account through Steam’s browser-based sign-in inside their </span></span></span><span><span style="padding:5px 0px;"><span><span>app</span></span></span></span><span><span style="padding:5px 0px;"><span>, and then it can perform automated trade-up contracts.</span></span></span><span><span style="padding:5px 0px;"><span> This isn’t fake trade—in my inventory history, real trade-up contract entries appeared, even though I never authorized a desktop Steam Client login, and Steam did not show any new PC as an authorized device (for example, in the Steam Mobile app’s device / machine list).</span></span></span><span><span style="padding:5px 0px;"><span> Does anyone </span></span></span><span><span style="padding:5px 0px;"><span><span>know how</span></span></span></span><span><span style="padding:5px 0px;"><span> this could be implemented? Thanks.<br />
	<br />
	Update (packet capture): I also inspected the app’s traffic. In the payload the app sends back to the server for steamRefresh_steam, the sub field is still [web, derive, renew] (i.e., it does not look like a typical “full Steam Client session” fingerprint).</span></span></span>
</p>
]]></description><guid isPermaLink="false">5932</guid><pubDate>Mon, 06 Apr 2026 05:38:07 +0000</pubDate></item><item><title>armory redeem item with stars</title><link>https://dev.doctormckay.com/topic/5908-armory-redeem-item-with-stars/</link><description><![CDATA[<p>
	how to use node-globaloffensive to execute the command and protocol for redeeming items with Stars in the CS2 Armory?
</p>

<p>
	i guess the command like this:
</p>

<div style="background-color:#273136;color:#f2fffc;font-size:14px;">
	<div>
		<span style="color:#f2fffc;">k_EMsgGCCStrike15_v2_ClientRedeemMissionReward = </span><span style="color:#baa0f8;">9209</span><span style="color:#f2fffc;">;</span>
	</div>
</div>

<p>
	and the protocol like this:
</p>

<div style="background-color:#273136;color:#f2fffc;font-size:14px;">
	<div>
		<span style="color:#ff6d7e;">message</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">CMsgGCCstrike15_v2_ClientRedeemMissionReward</span><span style="color:#f2fffc;"> {</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> campaign_id = </span><span style="color:#baa0f8;">1</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> redeem_id = </span><span style="color:#baa0f8;">2</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> redeemable_balance = </span><span style="color:#baa0f8;">3</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> expected_cost = </span><span style="color:#baa0f8;">4</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">int32</span><span style="color:#f2fffc;"> bid_control = </span><span style="color:#baa0f8;">5</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">}</span>
	</div>
</div>

<p>
	but i don't know what's the param's value
</p>

<p>
	i can parse redeem_balance from hello，the type id is 6 and the protocol like this:
</p>

<div style="background-color:#273136;color:#f2fffc;font-size:14px;">
	<div>
		<span style="color:#ff6d7e;">message</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">CSOAccountXpShop</span><span style="color:#f2fffc;"> {</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> generation_time = </span><span style="color:#baa0f8;">1</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">optional</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> redeemable_balance = </span><span style="color:#baa0f8;">2</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">    </span><span style="color:#ff6d7e;">repeated</span><span style="color:#f2fffc;"> </span><span style="color:#7cd5f1;">uint32</span><span style="color:#f2fffc;"> xp_tracks = </span><span style="color:#baa0f8;">3</span><span style="color:#f2fffc;">;</span>
	</div>

	<div>
		<span style="color:#f2fffc;">}</span>
	</div>
</div>
]]></description><guid isPermaLink="false">5908</guid><pubDate>Thu, 13 Nov 2025 08:16:30 +0000</pubDate></item><item><title>Auth session tickets get cancelled after a few minutes</title><link>https://dev.doctormckay.com/topic/5923-auth-session-tickets-get-cancelled-after-a-few-minutes/</link><description><![CDATA[<p>
	Hello,
</p>

<p>
	I am successfully creating valid auth session tickets using the createAuthSessionTicket api, but after a few minutes they get cancelled.
</p>

<p>
	Do I need to keep a client alive somehow for them to stay valid?
</p>

<p>
	Please forgive my ignorance.
</p>

<p>
	Best,
</p>

<p>
	James
</p>
]]></description><guid isPermaLink="false">5923</guid><pubDate>Thu, 12 Mar 2026 07:28:42 +0000</pubDate></item><item><title>Download .manifest files</title><link>https://dev.doctormckay.com/topic/1066-download-manifest-files/</link><description><![CDATA[<p>So, I am trying to download all .manifest files of all my owned games.</p><p>Here is the snippet that should do this:</p><p></p><pre class="ipsCode prettyprint">    client.once("appOwnershipCached", function() {
        console.log("appOwnershipCached");
        client.getProductInfo(client.getOwnedApps(), [], function(apps) {
            console.log("gotProductInfo");
            apploop:
            for (appid in apps) {
                depotloop:
                for (depotid in apps[appid].appinfo.depots) {
                    if (!isNaN(parseInt(depotid))) { //is key the depot id?
                        manifestloop:
                        for (type in apps[appid].appinfo.depots[depotid].manifests) {
                            var manifestid = apps[appid].appinfo.depots[depotid].manifests[type];
                            client.getRawManifest(parseInt(appid), parseInt(depotid), manifestid, function(error, manifest) {
                                if (!error) {
                                    //console.log(manifest);
                                    fs.writeFile(path.join(__dirname + "/" + depotid + "_" + manifestid + ".manifest"), manifest, "utf8", function(error) {
                                        console.log(error);
                                    });
                                }
                            });
                            break apploop; //limit to 1 manifest for now
                        }
                    }
                }
            }
        });
    });
</pre>But the .manifest file I get isn't quite the same as the original downloaded directly from Steam. I suspect because the filenames are encrypted with my .manifest file. The problem is though, there is no feature that decrypts the filenames without parsing the raw manifest into an JSON object. <p>Is this the problem? Or is it something else? Should I do something differently?</p><p> </p><p>Thanks</p><p><a href="https://dev.doctormckay.com/applications/core/interface/file/attachment.php?id=31" data-fileid="31" data-fileext="zip" rel="">11_3149618157612033597.manifest.zip</a></p>]]></description><guid isPermaLink="false">1066</guid><pubDate>Mon, 05 Jun 2017 17:09:34 +0000</pubDate></item><item><title>Private Beta Branch</title><link>https://dev.doctormckay.com/topic/5910-private-beta-branch/</link><description><![CDATA[<p>
	Hello, I was wondering if there's any way to get the latest manifest id of a private beta branch if I have the app id, depot id, branch name &amp; password?
</p>
]]></description><guid isPermaLink="false">5910</guid><pubDate>Tue, 25 Nov 2025 17:27:06 +0000</pubDate></item><item><title>inspect screenshot tools</title><link>https://dev.doctormckay.com/topic/5916-inspect-screenshot-tools/</link><description><![CDATA[<p>
	I’m trying to build a <strong>screenshot service</strong> similar to <strong>BUFF</strong> and <strong>CSMoney</strong>
</p>

<p>
	Ideally, the full pipeline would cover everything <strong>from an action/inspect link</strong> (e.g., <code>steam://rungame/... +csgo_econ_action_preview ...</code>) <strong>to generating clean, high-quality, UI-free weapon screenshots.</strong>
</p>

<p>
	However, I found a YouTube video showing a Python-based method to capture images:<br />
	<a href="https://www.youtube.com/watch?v=HUIERG6r-t0&amp;utm_source=chatgpt.com" rel="external nofollow">https://www.youtube.com/watch?v=HUIERG6r-t0</a><br />
	This looks more like a manual/automation screenshot workflow inside the game, and it may not match what I want in terms of <em>scalability</em>.
</p>

<p>
	I also noticed this site:<br />
	<a href="https://cs2inspects.com/zh-CN/screenshots" rel="external nofollow">https://cs2inspects.com/zh-CN/screenshots</a><br />
	It seems able to generate screenshots using only <strong>paint seed</strong>, <strong>paint index</strong>, and <strong>float</strong> (wear), without requiring an inspect link.
</p>

<p>
	Or does achieving this level of control usually rely on in-game injection or memory hooking?
</p>
]]></description><guid isPermaLink="false">5916</guid><pubDate>Mon, 05 Jan 2026 06:58:45 +0000</pubDate></item><item><title>Help with getServerList</title><link>https://dev.doctormckay.com/topic/1657-help-with-getserverlist/</link><description><![CDATA[<p>I need help with Help with getServerList().</p><p> </p><p><a href="https://github.com/DoctorMcKay/node-steam-user#getserverlistfilter-limit-callback" rel="external nofollow">https://github.com/DoctorMcKay/node-steam-user#getserverlistfilter-limit-callback</a></p><p> </p><p>Someone can help me, with a exemples?</p><p> </p><p>Thanks?</p>]]></description><guid isPermaLink="false">1657</guid><pubDate>Thu, 29 Mar 2018 13:32:46 +0000</pubDate></item><item><title>How can I log into both the SteamClient session and the MobileApp session with a single login attempt (username + password + SteamGuard mobile code just once)?</title><link>https://dev.doctormckay.com/topic/5911-how-can-i-log-into-both-the-steamclient-session-and-the-mobileapp-session-with-a-single-login-attempt-username-password-steamguard-mobile-code-just-once/</link><description><![CDATA[<p>
	The features I’m using require different types of sessions.<br />
	For example, <code>enableTwoFactor</code> needs a <strong>MobileApp</strong> session, while component-related operations like <code>getCasketContents</code> require a <strong>SteamClient</strong> session.
</p>

<p>
	Is there a way to obtain both sessions with one login process (one username/password + one mobile authenticator confirmation)?<br />
	Or is it possible to convert between these two types of sessions?
</p>
]]></description><guid isPermaLink="false">5911</guid><pubDate>Fri, 05 Dec 2025 06:45:03 +0000</pubDate></item><item><title><![CDATA[Automating purchases in CS2 (Sticker Capsules & Armory Pass) with Node.js]]></title><link>https://dev.doctormckay.com/topic/5888-automating-purchases-in-cs2-sticker-capsules-armory-pass-with-nodejs/</link><description><![CDATA[<p>
	I frequently purchase Sticker Capsules and other items from the CS2 in-game store, including the Armory Pass. Can this be automated with Node.js so that purchases are executed directly by the <strong><a href="https://github.com/DoctorMcKay/node-globaloffensive" rel="external nofollow">node-globaloffensive</a> </strong>client?
</p>
]]></description><guid isPermaLink="false">5888</guid><pubDate>Tue, 16 Sep 2025 21:31:47 +0000</pubDate></item><item><title>getUserOwnedApps return Dota 2 and TF2</title><link>https://dev.doctormckay.com/topic/5906-getuserownedapps-return-dota-2-and-tf2/</link><description><![CDATA[<p>
	How to return Dota 2 and TF2 in a reply?
</p>
]]></description><guid isPermaLink="false">5906</guid><pubDate>Mon, 10 Nov 2025 18:47:23 +0000</pubDate></item><item><title>using more than one account in a script</title><link>https://dev.doctormckay.com/topic/5902-using-more-than-one-account-in-a-script/</link><description><![CDATA[<p>
	Hi,<br />
	its a little simple but can i login 2 or 3 account using steam-user in a single script sth liek this<br />
	 
</p>

<div style="color:rgb(204,204,204);background-color:rgb(31,31,31);font-family:Consolas, 'Courier New', monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre;">
	<div>
		<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">const logOnOptions1 = {
  accountName: config.STEAM_USER_1,
  password: config.STEAM_PASS_1,
};
const logOnOptions2 = {
  accountName: config.STEAM_USER_2,
  password: config.STEAM_PASS_2,

};


client1.logOn(logOnOptions1 );
client2.logOn(logOnOptions2 );</span></pre>

		<div style="color:rgb(204,204,204);background-color:rgb(31,31,31);font-family:Consolas, 'Courier New', monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre;">
			<div>
				 
			</div>
		</div>
	</div>
</div>
]]></description><guid isPermaLink="false">5902</guid><pubDate>Mon, 27 Oct 2025 12:31:35 +0000</pubDate></item><item><title>Memory leak</title><link>https://dev.doctormckay.com/topic/5901-memory-leak/</link><description><![CDATA[<p>
	Hello, I use Steam-User without any other functions, I have a memory leak after 3-12 hours of work, I mainly use these methods:
</p>

<div style="background-color:rgb(31,31,31);font-size:14px;">
	<div style="color:rgb(204,204,204);">
		<span style="color:#569cd6;">new</span><span style="color:#cccccc;"> </span><span style="color:#4ec9b0;">SteamUser</span><span style="color:#cccccc;">({</span>
	</div>

	<div style="color:rgb(204,204,204);">
		<span style="color:#cccccc;">            </span><span style="color:#9cdcfe;">enablePicsCache</span><span style="color:#9cdcfe;">:</span><span style="color:#cccccc;"> </span><span style="color:#569cd6;">false</span><span style="color:#cccccc;">,</span>
	</div>

	<div style="color:rgb(204,204,204);">
		<span style="color:#cccccc;">            </span><span style="color:#9cdcfe;">renewRefreshTokens</span><span style="color:#9cdcfe;">:</span><span style="color:#cccccc;"> </span><span style="color:#569cd6;">true</span><span style="color:#cccccc;">,</span>
	</div>

	<div style="color:rgb(204,204,204);">
		<span style="color:#cccccc;">            </span><span style="color:#9cdcfe;">httpProxy</span><span style="color:#9cdcfe;">:</span><span style="color:#cccccc;"> </span><span style="color:#9cdcfe;">proxy</span><span style="color:#cccccc;">,</span>
	</div>

	<div style="color:rgb(204,204,204);">
		<span style="color:#cccccc;">            </span><span style="color:#9cdcfe;">saveAppTickets</span><span style="color:#9cdcfe;">:</span><span style="color:#cccccc;"> </span><span style="color:#569cd6;">false</span>
	</div>

	<div style="color:rgb(204,204,204);">
		<span style="color:#cccccc;">        });</span>
	</div>

	<div style="color:rgb(204,204,204);">
		 
	</div>

	<div style="color:rgb(204,204,204);">
		<div style="background-color:#1f1f1f;color:#cccccc;font-size:14px;">
			<div>
				<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">logOff</span>
			</div>
		</div>
	</div>

	<div>
		<div style="background-color:rgb(31,31,31);font-size:14px;">
			<div style="color:rgb(204,204,204);">
				<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">logOn</span>
			</div>

			<div>
				<div style="background-color:rgb(31,31,31);font-size:14px;">
					<div style="color:rgb(204,204,204);">
						<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">once</span><span style="color:#cccccc;">(</span><span style="color:#ce9178;">'disconnected'</span>
					</div>

					<div>
						<div style="background-color:rgb(31,31,31);font-size:14px;">
							<div style="color:rgb(204,204,204);">
								<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">setOption</span><span style="color:#cccccc;">(</span><span style="color:#ce9178;">"httpProxy"</span>
							</div>

							<div>
								<div style="background-color:rgb(31,31,31);font-size:14px;">
									<div style="color:rgb(204,204,204);">
										<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">setPersona</span><span style="color:#cccccc;">(</span><span style="color:#4ec9b0;">SteamUser</span><span style="color:#cccccc;">.</span><span style="color:#4ec9b0;">EPersonaState</span><span style="color:#cccccc;">.</span><span style="color:#4fc1ff;">Online</span><span style="color:#cccccc;">)</span>
									</div>

									<div>
										<div style="background-color:rgb(31,31,31);font-size:14px;">
											<div style="color:rgb(204,204,204);">
												<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">once</span><span style="color:#cccccc;">(</span><span style="color:#ce9178;">'loggedOn'</span>
											</div>

											<div>
												<div style="background-color:rgb(31,31,31);font-size:14px;">
													<div style="color:rgb(204,204,204);">
														<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">gamesPlayed</span><span style="color:#cccccc;">(</span><span style="color:#4fc1ff;">games</span><span style="color:#cccccc;">)</span>
													</div>

													<div>
														<div style="background-color:rgb(31,31,31);font-size:14px;">
															<div>
																<span style="color:rgb(156,220,254);">client</span><span style="color:rgb(204,204,204);">.</span><font color="#dcdcaa">on</font><span style="color:rgb(204,204,204);">(</span><span style="color:rgb(206,145,120);">'error'</span>
															</div>
														</div>
													</div>
												</div>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>

					<div style="color:rgb(204,204,204);">
						<div style="background-color:#1f1f1f;color:#cccccc;font-size:14px;">
							<div>
								<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">on</span><span style="color:#cccccc;">(</span><span style="color:#ce9178;">'refreshToken'</span>
							</div>

							<div>
								<div style="background-color:#1f1f1f;color:#cccccc;font-size:14px;">
									<div>
										<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">getUserOwnedApps</span>
									</div>

									<div>
										<div style="background-color:#1f1f1f;color:#cccccc;font-size:14px;">
											<div>
												<span style="color:#9cdcfe;">client</span><span style="color:#cccccc;">.</span><span style="color:#dcdcaa;">requestFreeLicense</span>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>
]]></description><guid isPermaLink="false">5901</guid><pubDate>Fri, 24 Oct 2025 16:14:07 +0000</pubDate></item><item><title>requestRichPresence returns empty object</title><link>https://dev.doctormckay.com/topic/5882-requestrichpresence-returns-empty-object/</link><description><![CDATA[<p>
	I’ve been using requestRichPresence without issues, but after today’s Steam maintenance (3rd September 2025), it no longer returns any data.
</p>

<p>
	Expected result (before today):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">{
    "users": {
        "76561198006409530": {
            "richPresence": {
                "status": "Playing CS:GO",
                "version": "13765",
                "time": "15.851017",
                "game:state": "lobby",
                "steam_display": "#display_Menu",
                "connect": "+gcconnectG02C0193A"
            },
            "localizedString": "Playing CS:GO"
        }
    }
}</span></pre>

<p>
	Result after maintenance:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">{
  "users": {

  }
}</span></pre>

<p>
	 
</p>

<p>
	node-steam-user version: 5.2.3<br />
	Node.js version: 22.11.0
</p>
]]></description><guid isPermaLink="false">5882</guid><pubDate>Wed, 03 Sep 2025 15:33:39 +0000</pubDate></item><item><title>server_secret in CMsgAuthTicket</title><link>https://dev.doctormckay.com/topic/5892-server_secret-in-cmsgauthticket/</link><description><![CDATA[<p>
	There is anyway to generate or understand what it is responsible for server_secret in css ? 
</p>
]]></description><guid isPermaLink="false">5892</guid><pubDate>Tue, 30 Sep 2025 16:24:11 +0000</pubDate></item><item><title>After I successfully call the method this.client.gamesPlayed([730]), haveGCSession is false</title><link>https://dev.doctormckay.com/topic/5890-after-i-successfully-call-the-method-thisclientgamesplayed730-havegcsession-is-false/</link><description><![CDATA[<p>
	<img alt="image.png.c4f953524165feccac4eef9cd5c300d7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="564" data-ratio="28.93" style="height:auto;" width="280" data-src="https://dev.doctormckay.com/uploads/monthly_2025_09/image.png.c4f953524165feccac4eef9cd5c300d7.png" src="https://dev.doctormckay.com/applications/core/interface/js/spacer.png" />
</p>

<p>
	<span style="background-color:#ffffff;color:#0f1115;font-size:16px;">I'm running into a weird issue with the GC session in CS</span><span style="background-color:#ffffff;color:#0f1115;font-size:16px;">:GO</span><span style="background-color:#ffffff;color:#0f1115;font-size:16px;">. As you can see in the screenshot, I'm logged in, but<span> </span></span><code style="background-color:#ebeef2;color:#0f1115;font-size:0.875em;padding:0px 5px;">haveGCSession</code><span style="background-color:#ffffff;color:#0f1115;font-size:16px;"><span> </span>is showing as false. The strange part is that it doesn't happen every time—sometimes it's true. Any idea what's going on?</span>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">async</span><span class="pln"> loginGame</span><span class="pun">(</span><span class="pln">appId </span><span class="pun">=</span><span class="pln"> </span><span class="lit">730</span><span class="pun">){</span><span class="pln">
    logger</span><span class="pun">.</span><span class="pln">info</span><span class="pun">(</span><span class="str">'loginGC'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">config</span><span class="pun">.</span><span class="pln">steamId</span><span class="pun">,</span><span class="pln"> </span><span class="str">';'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getClientGC</span><span class="pun">().</span><span class="pln">haveGCSession</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">if</span><span class="pun">(!</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getClientGC</span><span class="pun">().</span><span class="pln">haveGCSession</span><span class="pun">){</span><span class="pln">
      </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">client</span><span class="pun">.</span><span class="pln">gamesPlayed</span><span class="pun">([</span><span class="pln">appId</span><span class="pun">]);</span><span class="pln">
      </span><span class="kwd">await</span><span class="pln"> sleep</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      code</span><span class="pun">:</span><span class="lit">200</span><span class="pun">,</span><span class="pln">
      success</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
      data</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">null</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">  checkStatus</span><span class="pun">(){</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      code</span><span class="pun">:</span><span class="lit">200</span><span class="pun">,</span><span class="pln">
      success</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
      data</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        isSteamConnected</span><span class="pun">:</span><span class="pln"> </span><span class="pun">!!</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">client</span><span class="pun">.</span><span class="pln">steamID</span><span class="pun">?.</span><span class="pln">toString</span><span class="pun">(),</span><span class="pln">
        isGCClientConnected</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">getClientGC</span><span class="pun">().</span><span class="pln">haveGCSession
      </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<img alt="image.png.b3547678861298d5ff61418ccb77f7ca.png" class="ipsImage ipsImage_thumbnailed" data-fileid="565" data-ratio="45.96" style="height:auto;" width="359" data-src="https://dev.doctormckay.com/uploads/monthly_2025_09/image.png.b3547678861298d5ff61418ccb77f7ca.png" src="https://dev.doctormckay.com/applications/core/interface/js/spacer.png" />
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			<strong>steam-user: 5.2.3<br />
			globaloffensive: 3.2.0</strong>
		</p>
	</div>
</blockquote>

<p>
	<br />
	 
</p>
]]></description><guid isPermaLink="false">5890</guid><pubDate>Wed, 24 Sep 2025 09:50:30 +0000</pubDate></item><item><title>how to update access token for EAuthTokenPlatformType.SteamClient?</title><link>https://dev.doctormckay.com/topic/5886-how-to-update-access-token-for-eauthtokenplatformtypesteamclient/</link><description><![CDATA[<p>
	When using EAuthTokenPlatformType.SteamClient I'm trying to call <a href="https://github.com/DoctorMcKay/node-steam-user?tab=readme-ov-file#weblogon" rel="external nofollow"><code>webLogOn</code></a><code> to obtain new access token for already logged in account, but </code>webSession event gives same steamLoginSecure cookie as before with different sessionid and clientsessionid;  and after around 24 hours it becomes invalid an <a href="https://github.com/DoctorMcKay/node-steam-user?tab=readme-ov-file#weblogon" rel="external nofollow"><code>webLogOn</code></a><code> starts to throw 403 error</code>
</p>
]]></description><guid isPermaLink="false">5886</guid><pubDate>Sun, 14 Sep 2025 13:34:37 +0000</pubDate></item><item><title>Memory leak in steamUser when using enablePicsCache / picsCacheAll</title><link>https://dev.doctormckay.com/topic/5884-memory-leak-in-steamuser-when-using-enablepicscache-picscacheall/</link><description><![CDATA[<p>
	I’m using the functions `enablePicsCache` and  `picsCacheAll` in `steamUser`. However, I believe these two features eventually lead to a memory leak. Is this a known issue or intended behavior?  
</p>

<p>
	The `picsCache` keeps growing over time (this becomes especially noticeable when running 5 or more bots simultaneously), until after a few days the JavaScript Heap runs out of memory and crashes, since the Cache cannot be garbage collected. <br />
	When these functions are not enabled, this memory leak does not occur. In Chrome DevTools, most of the consumed memory can also be traced back to `picsCache`.  
</p>

<p>
	Is there a way to store this `picsCache` on disk (or in some other form of persistent storage) instead of keeping it in memory, in order to prevent the memory leak?<br />
	 
</p>
]]></description><guid isPermaLink="false">5884</guid><pubDate>Sun, 07 Sep 2025 12:45:11 +0000</pubDate></item><item><title>Best way to check if Client is still logged in ?</title><link>https://dev.doctormckay.com/topic/5877-best-way-to-check-if-client-is-still-logged-in/</link><description><![CDATA[<p>
	what is the best way to check if my client is still logged in ?<br />
	and if the client logged out how to relogin again ?<br />
	<br />
	btw i have sth like this but it does not work:
</p>

<div style="color:rgb(204,204,204);background-color:rgb(31,31,31);font-family:Consolas, 'Courier New', monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre;">
	<div>
		<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">
// this should relogin again but wont work
client.on("disconnected", (eresult, msg) =&gt; {
  console.log(`Disconnected from Steam: ${msg} (${eresult})`);

  setTimeout(() =&gt; {
      if (client.steamID === null) {
          try {
              client.logOn(logOnOptions);
            } catch (error) {
              console.error(error);
            }
      }
  }, 5000);
});

// the way i check if client is logged in or not
function isLoggedIn() {
  return client.steamID;
}</span></pre>
	</div>
</div>
]]></description><guid isPermaLink="false">5877</guid><pubDate>Mon, 25 Aug 2025 04:59:17 +0000</pubDate></item><item><title>about error LoggedInElsewhere</title><link>https://dev.doctormckay.com/topic/5874-about-error-loggedinelsewhere/</link><description><![CDATA[<p>
	If I have login on Compute A.
</p>

<p>
	Then I login again on Compute B.Maybe It will tell me error of LoggedInElsewhere.
</p>

<p>
	Can I kick off Compute A login session?
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">5874</guid><pubDate>Tue, 19 Aug 2025 08:32:17 +0000</pubDate></item><item><title>WebSession not emitted</title><link>https://dev.doctormckay.com/topic/5869-websession-not-emitted/</link><description><![CDATA[<p>
	Hello, the websession is never emitted when logged in with refresh token. Only loggedOn is emitted.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">const</span><span class="pln"> </span><span class="typ">SteamUser</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> require</span><span class="pun">(</span><span class="str">"steam-user"</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> client </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">SteamUser</span><span class="pun">();</span><span class="pln">

client</span><span class="pun">.</span><span class="pln">logOn</span><span class="pun">({</span><span class="pln"> refreshToken</span><span class="pun">:</span><span class="pln"> </span><span class="str">"YOUR_REFRESH_TOKEN"</span><span class="pln"> </span><span class="pun">});</span><span class="pln">

client</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">"loggedOn"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"Logged in"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

client</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">"webSession"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">sessionID</span><span class="pun">,</span><span class="pln"> cookies</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"Web session fired!"</span><span class="pun">,</span><span class="pln"> sessionID</span><span class="pun">,</span><span class="pln"> cookies</span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

client</span><span class="pun">.</span><span class="pln">on</span><span class="pun">(</span><span class="str">"error"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="pln">err</span><span class="pun">));</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">5869</guid><pubDate>Thu, 14 Aug 2025 15:46:44 +0000</pubDate></item><item><title>RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds</title><link>https://dev.doctormckay.com/topic/4978-rangeerror-err_buffer_out_of_bounds-attempt-to-access-memory-outside-buffer-bounds/</link><description><![CDATA[<p>
	I use <a href="https://github.com/csfloat/inspect" rel="external nofollow">https://github.com/csfloat/inspect</a>, use the node-steam-user, I always to found the problem
</p>

<p>
	RangeError [ERR_BUFFER_OUT_OF_BOUNDS]: Attempt to access memory outside buffer bounds<br />
	    at new NodeError (node:internal/errors:399:5)<br />
	    at boundsError (node:internal/buffer:86:11)<br />
	    at Buffer.readUInt32LE (node:internal/buffer:222:5)<br />
	    at TCPConnection._readMessage (/usr/src/csgofloat/node_modules/steam-user/components/connection_protocols/tcp.js:182:33)<br />
	    at Socket.emit (node:events:513:28)<br />
	    at emitReadable_ (node:internal/streams/readable:590:12)<br />
	    at onEofChunk (node:internal/streams/readable:568:5)<br />
	    at readableAddChunk (node:internal/streams/readable:275:5)<br />
	    at Readable.push (node:internal/streams/readable:234:10)<br />
	    at TCP.onStreamRead (node:internal/stream_base_commons:232:12) {<br />
	  code: 'ERR_BUFFER_OUT_OF_BOUNDS'
</p>
]]></description><guid isPermaLink="false">4978</guid><pubDate>Thu, 18 Apr 2024 10:09:26 +0000</pubDate></item><item><title>What is the purpose of hasWallet in the steam-user library?</title><link>https://dev.doctormckay.com/topic/5864-what-is-the-purpose-of-haswallet-in-the-steam-user-library/</link><description><![CDATA[<p>
	The hasWallet property in the wallet data returns either true or false, but what is this value based on? Is hasWallet always false for limited accounts and always true for non-limited accounts?
</p>
]]></description><guid isPermaLink="false">5864</guid><pubDate>Tue, 05 Aug 2025 22:30:47 +0000</pubDate></item><item><title>Problem enabling 2FA via steam-user &#x2013; result code 2</title><link>https://dev.doctormckay.com/topic/5850-problem-enabling-2fa-via-steam-user-%E2%80%93-result-code-2/</link><description><![CDATA[<p>
	I'm trying to set up two-factor authentication using <code>steam-user</code>, but I keep running into an issue where the <code>enableTwoFactor</code> function consistently fails with result code <code>2</code>. As a result, I'm not receiving any Activation code via email.
</p>

<p>
	I'm logging in with a username and password using <code>steam-user</code>, and once the <code>webSession</code> event is emitted, I start the two-factor setup process. There is currently no Steam Guard enabled on the account, and Steam Mail Guard is also disabled.
</p>

<p>
	I assume that if Steam Mail Guard were enabled, it would make sense that the process doesn't work—since Mail Guard is a form of Steam Guard. Is that correct?
</p>

<p>
	Interestingly, when I follow the same steps using Steam Desktop Authenticator, everything works as expected.
</p>

<p>
	As some other users have already pointed out, could there be an issue with the <code>enableTwoFactor</code> function itself?<br />
	Or is the problem possibly on my end, in my code?<br />
	<br />
	Thanks!
</p>
]]></description><guid isPermaLink="false">5850</guid><pubDate>Thu, 17 Jul 2025 13:06:53 +0000</pubDate></item><item><title>Error: Could not act on confirmation</title><link>https://dev.doctormckay.com/topic/5859-error-could-not-act-on-confirmation/</link><description><![CDATA[<p>
	Recently I started getting the error below when trying to confirm trades.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="pln">Error: Could not act on confirmation</span></pre>

<p>
	Is it perhaps related to <a href="https://i.ibb.co/qYT4g62d/image.png" rel="external nofollow">this</a> issue?
</p>

<p>
	If so, can it only be fixed manually by logging into each steam account or is there a way to fix it via the module?<br />
	 
</p>
]]></description><guid isPermaLink="false">5859</guid><pubDate>Wed, 23 Jul 2025 18:01:39 +0000</pubDate></item><item><title>The function "enableTwoFactor" can no longer bind tokens and always returns the status "status: 2". Could this be fixed</title><link>https://dev.doctormckay.com/topic/5838-the-function-enabletwofactor-can-no-longer-bind-tokens-and-always-returns-the-status-status-2-could-this-be-fixed/</link><description><![CDATA[<p>
	{<br />
	    "status": 2<br />
	}
</p>
]]></description><guid isPermaLink="false">5838</guid><pubDate>Mon, 07 Jul 2025 10:03:45 +0000</pubDate></item></channel></rss>
