Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }