Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using SteamKit2;
- using SteamTrade;
- using SteamTrade.TradeOffer;
- using System;
- using System.Collections.Generic;
- using TradeAsset = SteamTrade.TradeOffer.TradeOffer.TradeStatusUser.TradeAsset;
- namespace SteamBot
- {
- public class TradeOfferUserHandler : UserHandler
- {
- private readonly GenericInventory mySteamInventory;
- private readonly GenericInventory OtherSteamInventory;
- public TradeOfferUserHandler(Bot bot, SteamID sid) : base(bot, sid) {}
- public override void OnNewTradeOffer(TradeOffer offer)
- {
- if (true)
- {
- //parse inventories of bot and other partner
- //either with webapi or generic inventory
- //Bot.GetInventory();
- //Bot.GetOtherInventory(OtherSID);
- var myItems = offer.Items.GetMyItems();
- var theirItems = offer.Items.GetTheirItems();
- Log.Info("They want " + myItems.Count + " of my items.");
- Log.Info("And I will get " + theirItems.Count + " of their items.");
- foreach (var item in myItems)
- {
- GenericInventory.ItemDescription tmpInfo = mySteamInventory.getDescription((ulong)item.AssetId);
- Bot.log.Warn("Name: " + tmpInfo.market_hash_name);
- }
- //do validation logic etc
- if (DummyValidation(myItems, theirItems))
- {
- string tradeid;
- if (offer.Accept(out tradeid))
- {
- Log.Success("Accepted trade offer successfully : Trade ID: " + tradeid);
- Console.WriteLine("Accepted a trade that had " + theirItems.Count + " items in it!");
- }
- }
- else
- {
- if (offer.Decline())
- {
- Log.Info("Declined trade offer : " + offer.TradeOfferId + " from " + OtherSID.ConvertToUInt64());
- Console.WriteLine("Declined a trade that asked for " + myItems.Count + " of my items :(");
- }
- }
- }
- else
- {
- //we don't know this user so we can decline
- if (offer.Decline())
- {
- Log.Info("Declined trade offer : " + offer.TradeOfferId + " from untrusted user " + OtherSID.ConvertToUInt64());
- }
- }
- }
- private bool DummyValidation(List<TradeAsset> myAssets, List<TradeAsset> theirAssets)
- {
- if (myAssets.Count == 0)
- {
- return true;
- }
- else
- {
- // foreach (TradeAsset asset in theirAssets)
- // {
- // var inventoryItem = OtherInventory.GetItem((ulong)asset.AssetId);
- // Console.WriteLine(inventoryItem);
- //
- return true;
- }
- return false;
- }
- public override void OnMessage(string message, EChatEntryType type)
- {
- if (IsAdmin)
- {
- //creating a new trade offer
- var offer = Bot.NewTradeOffer(OtherSID);
- //offer.Items.AddMyItem(0, 0, 0);
- if (offer.Items.NewVersion)
- {
- string newOfferId;
- if (offer.Send(out newOfferId))
- {
- Log.Success("Trade offer sent : Offer ID " + newOfferId);
- }
- }
- //creating a new trade offer with token
- var offerWithToken = Bot.NewTradeOffer(OtherSID);
- //offer.Items.AddMyItem(0, 0, 0);
- if (offerWithToken.Items.NewVersion)
- {
- string newOfferId;
- // "token" should be replaced with the actual token from the other user
- if (offerWithToken.SendWithToken(out newOfferId, "token"))
- {
- Log.Success("Trade offer sent : Offer ID " + newOfferId);
- }
- }
- }
- }
- public override bool OnGroupAdd() { return false; }
- public override bool OnFriendAdd() { return IsAdmin; }
- public override void OnFriendRemove() { }
- public override void OnLoginCompleted() { }
- public override bool OnTradeRequest() { return false; }
- public override void OnTradeError(string error) { }
- public override void OnTradeTimeout() { }
- public override void OnTradeSuccess() { }
- public override void OnTradeInit() { }
- public override void OnTradeAddItem(Schema.Item schemaItem, Inventory.Item inventoryItem) { }
- public override void OnTradeRemoveItem(Schema.Item schemaItem, Inventory.Item inventoryItem) { }
- public override void OnTradeMessage(string message) { }
- public override void OnTradeReady(bool ready) { }
- public override void OnTradeAccept() { }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement