C:\Users\lokin\node_modules\steam-tradeoffer-manager\lib\classes\TradeOffer.js:255
throw new Error("Missing appid, contextid, or assetid parameter");
^
Error: Missing appid, contextid, or assetid parameter
at addItem (C:\Users\lokin\node_modules\steam-tradeoffer-manager\lib\classes\TradeOffer.js:255:9)
at TradeOffer.addMyItem (C:\Users\lokin\node_modules\steam-tradeoffer-manager\lib\classes\TradeOffer.js:167:9)
at C:\Users\lokin\OneDrive\New folder\bot.js:48:23
at SteamCommunity.<anonymous> (C:\Users\lokin\node_modules\steamcommunity\components\users.js:384:5)
at Request._callback (C:\Users\lokin\node_modules\steamcommunity\components\http.js:67:15)
at Request.self.callback (C:\Users\lokin\node_modules\request\request.js:185:22)
at Request.emit (events.js:182:13)
at Request.<anonymous> (C:\Users\lokin\node_modules\request\request.js:1161:10)
at Request.emit (events.js:182:13)
at Gunzip.<anonymous> (C:\Users\lokin\node_modules\request\request.js:1083:12) Error ^^
I found some examples of creating trade offers on steam but I don't quite understand how to do it.
I would like to first differentiate the refined metal from the TF2 inventory and send a certain number (eg 5 refined metal) to the owner when it has more than 5 in its backpack.
const SteamUser = require('steam-user');
const SteamCommunity = require('steamcommunity');
const SteamTotp = require('steam-totp');
const TradeOfferManager = require('steam-tradeoffer-manager');
const config = require('./config');
let client = new SteamUser();
let manager = new TradeOfferManager({
"steam": client, // Polling every 30 seconds is fine since we get notifications from Steam
"domain": "example.com", // Our domain is example.com
"language": "en" // We want English item descriptions
});
let community = new SteamCommunity();
// Steam logon options
let logOnOptions = {
"accountName": config.accountName,
"password": config.password,
"twoFactorCode": SteamTotp.getAuthCode(config.shared_secret)
};
client.logOn(logOnOptions);
client.on('loggedOn', function() {
console.log("Logged into Steam");
});
client.on('webSession', function(sessionID, cookies) {
manager.setCookies(cookies, function() {
manager.loadInventory(440, 2, true, function(err, inventory) {
if (err) {
console.log(err);
return;
}
console.log("Found " + inventory.length + " Team Fortress 2 items");
console.log(inventory);
var ref = 0;
for (var i = 0; i < inventory.length; i++){
if(inventory[i].market_hash_name == 'Refined Metal'){
ref++
var metal = inventory[i].assetid;
}
}
console.log(metal);
if(ref >= 5){ //I want to send 5 metal when the bot backpack has enough metal in its backpack
console.log('We have enough refined metal. Sending the trade');
let offer = manager.createOffer(config.bossID);
offer.addMyItem(metal);
offer.send(function(err, status) {
if (err) {
console.log(err);
return;
}
if (status == 'pending') {
console.log(`Offer #${offer.id} sent, but requires confirmation`);
community.acceptConfirmationForObject(config.identity_secret, offer.id, function(err) {
if (err) {
console.log(err);
} else {
console.log("Offer confirmed");
}
});
} else {
console.log(`Offer #${offer.id} sent successfully`);
}
});
}
});
});
community.setCookies(cookies);
});
Next time, please present properly formatted code with curly braces... its very disorientating to follow if .. else statements that do not use curly brackets...