Josiox Posted September 21 Report Posted September 21 Hello. I'm getting this error when I try to run storehouse-steamcommunity: Steam login fail: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined. How can I fix it? /** * STOREHOUSE - node-steamcommunity * * Uses node-steamcommunity to login to Steam, accept and confirm all incoming trade offers, * node-steam-totp to generate 2FA codes */ const SteamCommunity = require('steamcommunity'); const SteamTotp = require('steam-totp'); const TradeOfferManager = require('steam-tradeoffer-manager'); // use require('steam-tradeoffer-manager') in production const FS = require('fs'); const config = require('./config.js'); let community = new SteamCommunity(); let manager = new TradeOfferManager({ "domain": "example.com", // Our domain is example.com "language": "en", // We want English item descriptions "pollInterval": 5000 // We want to poll every 5 seconds since we don't have Steam notifying us of offers }); // Steam logon options let logOnOptions = { "accountName": config.accountName, "password": config.password, "twoFactorCode": SteamTotp.getAuthCode(config.sharedSecret) }; if (FS.existsSync('steamguard.txt')) { logOnOptions.steamguard = FS.readFileSync('steamguard.txt').toString('utf8'); } if (FS.existsSync('polldata.json')) { manager.pollData = JSON.parse(FS.readFileSync('polldata.json').toString('utf8')); } community.login(logOnOptions, function(err, sessionID, cookies, steamguard) { if (err) { console.log("Steam login fail: " + err.message); process.exit(1); } FS.writeFileSync('steamguard.txt', steamguard); console.log("Logged into Steam"); manager.setCookies(cookies, function(err) { if (err) { console.log(err); process.exit(1); // Fatal error return; } console.log("Cookies set"); }); }); manager.on('newOffer', function(offer) { console.log("New offer #" + offer.id + " from " + offer.partner.getSteam3RenderedID()); offer.accept(function(err, status) { if (err) { console.log("Unable to accept offer: " + err.message); } else { console.log("Offer accepted: " + status); if (status == "pending") { community.acceptConfirmationForObject(config.identitySecret, offer.id, function(err) { if (err) { console.log("Can't confirm trade offer: " + err.message); } else { console.log("Trade offer " + offer.id + " confirmed"); } }); } } }); }); manager.on('receivedOfferChanged', function(offer, oldState) { console.log(`Offer #${offer.id} changed: ${TradeOfferManager.ETradeOfferState[oldState]} -> ${TradeOfferManager.ETradeOfferState[offer.state]}`); if (offer.state == TradeOfferManager.ETradeOfferState.Accepted) { offer.getExchangeDetails((err, status, tradeInitTime, receivedItems, sentItems) => { if (err) { console.log(`Error ${err}`); return; } // Create arrays of just the new assetids using Array.prototype.map and arrow functions let newReceivedItems = receivedItems.map(item => item.new_assetid); let newSentItems = sentItems.map(item => item.new_assetid); console.log(`Received items ${newReceivedItems.join(',')} Sent Items ${newSentItems.join(',')} - status ${TradeOfferManager.ETradeStatus[status]}`) }) } }); manager.on('pollData', function(pollData) { FS.writeFileSync('polldata.json', JSON.stringify(pollData)); }); /* * Example output: * * Logged into Steam * Cookies set * New offer #474139989 from [U:1:46143802] * Offer accepted * Offer #474139989 changed: Active -> Accepted * Received: Reinforced Robot Bomb Stabilizer */ Quote
Dr. McKay Posted September 21 Report Posted September 21 4 hours ago, Josiox said: FS.writeFileSync('steamguard.txt', steamguard); Remove this line. The steam guard value doesn't exist anymore. Quote
Josiox Posted September 22 Author Report Posted September 22 6 hours ago, Dr. McKay said: Remove this line. The steam guard value doesn't exist anymore. Works now. Thanks. But now have other issue: method manager.on('newOffer', function(offer) do not react on incoming/created offers at all... Quote
Josiox Posted September 22 Author Report Posted September 22 55 minutes ago, Josiox said: Works now. Thanks. But now have other issue: method manager.on('newOffer', function(offer) do not react on incoming/created offers at all... Fixed with adding "useAccessToken": true to manager parameter list Dr. McKay 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.