Jump to content
McKay Development

Deeerby

Member
  • Posts

    6
  • Joined

  • Last visited

Everything posted by Deeerby

  1. Hey, I've been using Steam Trade Offer Manager for years, but it stopped working recently. What am I missing? I've tried reading around but got lost with all the recent updates, attaching my code. const SteamUser = require("steam-user"); const SteamCommunity = require("steamcommunity"); const TradeOfferManager = require("steam-tradeoffer-manager"); const { getAuthCode } = require("../authenticators/steamAuthenticator"); const { initiateSleep } = require("../functions/global"); const { logger } = require("../logger/winstonLogger"); const client = new SteamUser(); const manager = new TradeOfferManager({ steam: client, domain: "example.com", language: "en", }); const community = new SteamCommunity(); const logOnOptions = { accountName: process.env.SteamUsername, password: process.env.SteamPassword, twoFactorCode: getAuthCode(), }; async function setUpTradeHandler() { await new Promise((resolve, reject) => { client.logOn(logOnOptions); client.on("loggedOn", () => { logger.trade("Logged into Steam"); }); client.on("webSession", async (sessionID, cookies) => { manager.setCookies(cookies, async (err) => { if (err) { console.log(err); process.exit(1); // Fatal error since we couldn't get our API key } await manager.apiKey; logger.trade("Got API key: " + manager.apiKey); }); community.setCookies(cookies); await initiateSleep(5000); resolve("Logged in"); }); }); return 1; } manager.on("newOffer", function (offer) { logger.trade("New offer #" + offer.id + " from " + offer.partner.getSteam3RenderedID()); if (offer.itemsToGive.length === 0) { offer.accept(function (err, status) { if (err) { logger.trade("Unable to accept offer: " + err.message); if (err.message === "Malformed JSON response") { offer.accept(); } else if (err.message === "Not Logged In") { client.webLogOn(); } } else { logger.trade("Offer accepted: " + status); if (status == "pending") { community.acceptConfirmationForObject(process.env.SteamSecret, offer.id, function (err) { if (err) { logger.trade("Can't confirm trade offer: " + err.message); } else { logger.trade("Trade offer " + offer.id + " confirmed"); } }); } } }); } }); community.on("sessionExpired", function (err) { logger.info("Session was expired, refreshing connection"); client.webLogOn(); //relogin to Steam or refresh tradeoffer-manager cookies } }); module.exports = { client, manager, community, setUpTradeHandler };
  2. What is it causing such behavior? Is it bot or steam itself, such as steam APIs being down? It seems that even after the trade expires, and after creating new trade, it still receives it malf json response, even though the getOffer beforehand works fine.
  3. Thanks! After running bot for 3 days, with minor issues and it managing to resolve it on its own, I have encountered an error that seemed to be a "killer", or at least seemed to be looping on it. Error occurs while accepting trade offer, what does it exactly trying to tell me by "malformed JSON response"?
  4. Might be stupid question, but why I can't encapsulate getOffer method into async? const offerObject = await tradeHandler.manager.getOffer( depositResponse.offerId, async function (err, offer) { if (err) { console.log(err); } else { return await offer; } } );
  5. Hey! Is there a way to accept offer by it's offer ID? I am receiving offer ID from my web API, so all what I want to do is deal only with that offer, I am looking for something like offer.confirm (id) -> community.acceptConfirmationForObject(id). Is there a way to do so, without having to have listener (manager.on("newOffer") on every incoming new offer?
×
×
  • Create New...