Jump to content
McKay Development

All Activity

This stream auto-updates

  1. Past hour
  2. Am I trippin or steam added new fields to GetTradeOffer API? eresult: 1 delay_settlement: true
  3. Today
  4. Internal behavior changes when logging on with EAuthTokenPlatFormType.MobileApp Updated reported app version from 3.0.0 to 3.10.3 Updated reported device name from Galaxy S22 to Galaxy S25 Added origin=SteamMobile query string parameter to match official app behavior Full Changelog: v1.9.3...v1.9.4 View on GitHub
  5. As you've figured out, the actual trade offer stays in the Accepted state, but the underlying trade gets rolled back. steam-tradeoffer-manager doesn't poll GetTradeHistory at all right now, so adding support for detecting these rolled back trades would incur additional requests. I'm still working on thinking of the best way to go about this, but for now I suggest you do your own GetTradeHistory polling.
  6. https://github.com/DoctorMcKay/node-steamcommunity/releases/tag/v3.49.0 As far as I can tell, clicking that button in the popup (which is what acknowledgeTradeProtection() does) is all that's needed, and it only needs to be done once per account. If you've already clicked the button on the account(s) you use to trade, you shouldn't need to do anything more.
  7. Added acknowledgeTradeProtection() method Full Changelog: v3.48.8...v3.49.0 View on GitHub
  8. Last week
  9. Thanks, I wasnt aware there was a different contextid for trade protected items.
  10. The sentOfferChanged event does not emit when an offer is rolled back. Please confirm if this is already known, or if this can be addressed in an update. Thanks.
  11. Yes is a bit difficult to use GetTradeHistory, but for the moment this is the only solution, until steam will solve the endpoint. I just implemented GetTradeHistory to track also the rolled back trades (state == 12) and is working. You just have to get the trade history and find that one with your trade id, and you will get the state and the items also.
  12. yep, if you will find other endpoint that will give info about trades on hold let us all know. GetTradeHistory isn't convenient for our use case
  13. I checked also that API endpoint you mention and still same state id, 3 (Completed). Now I thing that is something from steam, they didnt update properly the system, or they didnt update this endpoint. I think that node-steam-tradeoffer-manager module is also using this endpoint, so may not be a problem from module, but from steam. As a conclusion, the trade state is updated only on trade history API: https://api.steampowered.com/IEconService/GetTradeHistory/v1
  14. Thanks doc. Your'e a life saver as always. For now, as a temporary fix, I just logged into the bot using the steam client (or a web browser) and accepted the pop up manually in trade history page. It's working fine for now. currently waiting for the new update. ❤️
  15. Probably a GC limitation. You should wait until the item modified event is emitted after adding or removing an item before moving on to the next one.
  16. This is not unexpected. It was always just happenstance that this method worked via steam-user; it uses a method not used by any official Steam app. You should use node-steamcommunity instead, which uses the official method.
  17. I'm traveling right now. I'll be able to push out an update in the next couple days.
  18. could you check same trade using this api endpoint? I assume steam failed to update it. https://api.steampowered.com/IEconService/GetTradeOffer/v1/
  19. I'm trying to set up two-factor authentication using steam-user, but I keep running into an issue where the enableTwoFactor function consistently fails with result code 2. As a result, I'm not receiving any Activation code via email. I'm logging in with a username and password using steam-user, and once the webSession 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. 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? Interestingly, when I follow the same steps using Steam Desktop Authenticator, everything works as expected. As some other users have already pointed out, could there be an issue with the enableTwoFactor function itself? Or is the problem possibly on my end, in my code? Thanks!
  20. After the new steam update with the ability to reverse trades, I tested the revert system on a trade, but by calling manager.getOffer(), I am getting the same state id 3 (Completed), instead 12 (Rolled Back). This is the history of my trades using https://api.steampowered.com/IEconService/GetTradeHistory/v1 API. You can see how the original trade has been rolled back with status 12, and the other one is the rollback trade, which gave me back the item. And this is the response from manager.getOffer(). The state didnt change and is still 3. Any solutions for this problem? Is there comming a fix for this steam update for node-steam-tradeoffer-manager module?
  21. You're probably trying to search items by context "2" (as all items for CS2 before), but new trade-protected items are in context "16"
  22. igor

    buy confirmation

    nevermind, I am just dumb: after the first request I do update to body but I don't update content-len header
  23. Since last nights update using getInventoryContents on your own inventory will only return your inventory without any of the trade protected items. I have 58 items in my inventory but 2 of them are trade protected so calling getInventoryContents with only return a count of 56 items, not 58. Is there any way to see how many CS2 items are in your inventory including trade protected items?
  24. Thanks for the code, this works for now, hopefully we can get something similar added to the offical steamcommunity node
  25. works fine, dont forget to change logger to console output or logger of your choice and community to your node-steamcommunity instance let tradeOfferAcknowledged = false; const acknowledgeTradeOffer = function(sessionId=null, callback) { try { if (tradeOfferAcknowledged) { const error = new Error('Trade offer has already been acknowledged'); logger.warn('Attempt to acknowledge trade offer that was already acknowledged'); if (callback) callback(error); return; } if (!community) { const error = new Error('Community not initialized'); logger.error('Cannot acknowledge trade offer - community not initialized'); if (callback) callback(error); return; } if (!sessionId) { sessionId = community.getSessionID(); } const options = { uri: 'https://steamcommunity.com/trade/new/acknowledge', method: 'POST', form: { sessionid: sessionId, message: 1 } }; logger.info('Acknowledging trade offer'); community.httpRequest(options, (err, response, body) => { if (err) { logger.error(`Error acknowledging trade offer: ${err}`); if (callback) callback(err); return; } // Check if response indicates success (currently Steam returns [] on success) if (response && response.statusCode === 200) { tradeOfferAcknowledged = true; logger.info(`Trade offer acknowledged successfully. Response: ${body}`); if (callback) callback(null, body); } else { const error = new Error(`Unexpected response from Steam: ${response ? response.statusCode : 'unknown'}`); logger.error(`Failed to acknowledge trade offer: ${error.message}. Response body: ${body}`); if (callback) callback(error); } }, 'acknowledgeTradeOffer'); } catch (error) { logger.error(`Error acknowledging trade offer: ${error}`); if (callback) callback(error); } };
  26. igor

    buy confirmation

    Hello everyone! Due to recent update I tried implementing buy order confirmation and I failed (partly)😞. I came here to ask for help because It seems I can't understand why my code runs into the problems. here are the pieces of my code: function getCookiesHeaders(contentLength, cookiesStr, itemName, game) { return { Accept: "*/*", "Accept-Encoding": "gzip, deflate, br, zstd", "Accept-Language": "en-US,en;q=0.9", Connection: "keep-alive", "Content-Length": contentLength, "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", Cookie: cookiesStr, Host: "steamcommunity.com", Origin: "https://steamcommunity.com", Referer: `https://steamcommunity.com/market/listings/${ GAME_IDENTIFIERS[game] }/${encodeURI(itemName)}`, "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36", "sec-ch-ua": '"Google Chrome";v="138", "Not)A.Brand";v="8", "Chromium";v="138"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"', }; } function getParamsWithFee(cookies, priceInfo) { const { converted_price: subtotal, converted_fee: fee } = priceInfo; return { sessionid: cookies.sessionid, currency: 18, subtotal, fee, total: fee + subtotal, quantity: 1, billing_state: "", save_my_address: 0, confirmation: 0 }; } function generateListingIdLink(listingId) { return "https://steamcommunity.com/market/buylisting/" + listingId; } async function buyItem(itemName, priceDetails, listingId, game, buyingCookies) { // all these params are fine const confData = { identitySecret: "myIdentitySecretFromMyFile", steamId: "mySteamIdFromMyFile", cookies: buyingCookies }; const { cookies, cookiesStr } = getStrObjCookies(buyingCookies); const params = getParamsWithFee(cookies, priceDetails); const { bodyParams, contentLength } = getSearchParamsData(params); const headers = getCookiesHeaders(contentLength, cookiesStr, itemName, game); const sendBuyReq = async () => { try{ const response = await axios.post(generateListingIdLink(listingId), bodyParams, { headers, validateStatus: (statusCode) => { return statusCode <= 400 || statusCode === 406}}) // validateStatus needs to be done because axios thinks that 406 statusCode here is error and it falls into catch scope console.log('Response status:', response.status); return response; }catch(err){ console.log(err.message, "--errorMsg--"); throw err; } } try { const { data } = await sendBuyReq(); // that's fine it works great. From SDA it's clearly visible that the buy order is set. // I tried here await waitTime(2) so my buy information could get in time to the servers. await confirmBuyListing(confData); // The problem might be right here but it's unlikely because by itself it works await waitTime(1); // I tried increasing time from 1 sec to 2 secs. bodyParams.set("confirmation", data.confirmation?.confirmation_id); // updataing params with confirmationId to send new buyLink() const { data: finalizedData } = await sendBuyReq(); // THE MAIN PROBLEM IS HERE if (finalizedData.success === 22) console.log(finalizedData); // testing } catch (err) { console.log(err); } } I tried checking for confirmation_id and it's fine. Left that just as bodyParams.set("confirmation", data.confirmation?.confirmation_id); I think that line with "// THE MAIN PROBLEM IS HERE" is main part because when I make request it shows "status:502" but the original repetitave steam request shows "status:406" And this is the part where I can't understand why I get 502 code in my code. If needed I will add confirmBuyListing function for clarification. Shortly I tested the function with browser manual buying and it confirmed and I bought the item Despite what I wrote above my second thought would be, the problem lies within both confirmation function and buyLink function. I've seen 3 diffrent projects that this confirmation logic was implemented in: C#, JS, PYTHON and I chose python approach because pythonists have already confirmed that they solved this confirmation problem so I tried to follow their solution (this solution could be found in steamPy issues on git). I don't know what is the cause of that status 502. I did almost everything I prayed and cursed and still can't find the cause of that. I am not giving up on this but the only thing I am looking here is help😰😰 *Possible solution is to run python solution directly in my js file from pythonists (the last thing I wanna do).
  27. also did anyone find the way to know if item is still protected or trade finalized? Clicking "acknowledge and close" sends post request: url: https://steamcommunity.com//trade/new/acknowledge body: sessionid=YOURSESSIONID&message=1
  1. Load more activity
×
×
  • Create New...