public async Task CreateANewTradeOffer() { var apiKey = "API KEY"; var json = "SESSION JSON CONTENT"; var partnerSteamId = 76561198000000000; var webSession = JsonConvert.DeserializeObject <WebSession>(json); var webAccess = new SteamWebAccess(webSession); var webApi = new SteamWebAPI(apiKey, webAccess); var tradeOfferManager = new TradeOfferManager(webApi, webAccess, TradeOfferOptions.Default); if (!await tradeOfferManager.ValidateAccess(new SteamID(partnerSteamId))) { // Can't propose a trade offer to this user // Maybe inventory is private return; } // Get partner inventory var partnerInventory = await tradeOfferManager.GetPartnerInventory(new SteamID(partnerSteamId)); // Get all partner dota2 assets var partnerDota2Assets = await partnerInventory.GetAssets(AppIds.DotA2); // We don't want to give any asset xD var ourAssets = new Asset[0]; var newTradeOfferItemsList = new NewTradeOfferItemsList(ourAssets, partnerDota2Assets.Cast <Asset>().ToArray()); var tradeOfferMessage = "Give me your Dota2 items"; var sentTradeOfferId = await tradeOfferManager.Send(new SteamID(partnerSteamId), newTradeOfferItemsList, tradeOfferMessage); // We can also get the trade offer var sentTradeOffer = await tradeOfferManager.GetTradeOffer(sentTradeOfferId); }
public async Task ManageTradeOffers() { var apiKey = "API KEY"; var json = "SESSION JSON CONTENT"; var webSession = JsonConvert.DeserializeObject <WebSession>(json); var webAccess = new SteamWebAccess(webSession); var webApi = new SteamWebAPI(apiKey, webAccess); var tradeOfferManager = new TradeOfferManager(webApi, webAccess, TradeOfferOptions.Default); tradeOfferManager.TradeOfferReceived += (sender, args) => { // Received new trade offer // Accept it right away if it is a gift if (!args.TradeOffer.IsOurOffer && args.TradeOffer.OurAssets.Length == 0) { await tradeOfferManager.Accept(args.TradeOffer); } }; tradeOfferManager.TradeOfferInEscrow += (sender, args) => { // A trade offer is in escrow // If escrow is longer than 10 days, decline or cancel var escrowDuration = await tradeOfferManager.GetEscrowDuration(args.TradeOffer); if (escrowDuration.MyEscrowDuration > TimeSpan.FromDays(10)) { if (args.TradeOffer.IsOurOffer) { await tradeOfferManager.Cancel(args.TradeOffer); } else { await tradeOfferManager.Decline(args.TradeOffer); } } }; tradeOfferManager.StartPolling(); // Wait for the end of program tradeOfferManager.Dispose(); }