void ProcessTradeEvents() { // If we are not running a trade and are not waiting for the response // of a pending trade request, then we should dequeue a new trade. bool hasTrade = CurrentTrade != null || PendingTradeRequest != null; bool hasPendingTrades = PendingTrades.Count > 0; if (!hasTrade && hasPendingTrades) { PendingTradeRequest = PendingTrades.Dequeue(); SteamTrading.RequestTrade(PendingTradeRequest.Target); PendingTradeTimer.Change(PendingTradeTimeout, TimeSpan.FromTicks(-1)); } ProcessCurrentTrade(); }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.DarkCyan; System.Console.Title = "TradeBot"; System.Console.WriteLine("Welcome to TradeBot!\nCreated by Jessecar.\nTurn of Steam Guard before loggin in!\n\n"); Console.ForegroundColor = ConsoleColor.White; printConsole("Steam Username:"******"jessecar96"; //Console.ReadLine(); System.Console.WriteLine("Steam Password: "******"Sorry, could not connect to Steam."); } steamUser.LogOn(new SteamUser.LogOnDetails { Username = username, Password = password, }); }); //Login Callback msg.Handle <SteamUser.LoggedOnCallback>(callback => { if (callback.Result != EResult.OK) { printConsole("Incorrect username or Password. Make sure you have disabled steam guard!"); } else { printConsole("Connected to Steam!\nWelcome " + steamUser.SteamID); steamFriends.SetPersonaName("ChatBot Beta (Say hi)"); steamFriends.SetPersonaState((EPersonaState)6); } }); //Chat Messages msg.Handle <SteamFriends.FriendMsgCallback>(callback => { EChatEntryType type = callback.EntryType; if (type == EChatEntryType.ChatMsg) { SteamID sid = callback.Sender; if (!clients.Contains(callback.Sender)) { printConsole("[New Client]" + callback.Sender, ConsoleColor.Magenta); clients.Add(callback.Sender); steamFriends.SendChatMessage(callback.Sender, EChatEntryType.ChatMsg, "Welcome to TradeBot created by Jessecar. To see a list of commands type /help"); } if (callback.Message.StartsWith("/")) { string message = callback.Message.Replace("/", ""); printConsole("[Command]" + callback.Sender + " (" + steamFriends.GetFriendPersonaName(callback.Sender) + "): " + message, ConsoleColor.Magenta); //string[] args = .Split(" "); string[] words = message.Split(new char[] { ' ' }, 2); switch (words[0]) { case "trade": //Send a trade trade.RequestTrade(callback.Sender); printConsole("Trade requested by " + callback.Sender + " (" + steamFriends.GetFriendPersonaName(callback.Sender) + ")", ConsoleColor.Green); steamFriends.SendChatMessage(callback.Sender, EChatEntryType.Emote, "initiated a trade request."); break; case "remove": //Remove Friend steamFriends.SendChatMessage(callback.Sender, EChatEntryType.ChatMsg, "Thank you for using the Steam TradeBot BETA."); steamFriends.RemoveFriend(callback.Sender); printConsole("[Friend] Friend Removed: " + callback.Sender + " (" + steamFriends.GetFriendPersonaName(callback.Sender) + ")", ConsoleColor.Yellow); break; case "status": //get status (nothing) steamFriends.SendChatMessage(callback.Sender, EChatEntryType.Emote, "is Online and working good."); break; case "hi": steamFriends.SendChatMessage(callback.Sender, EChatEntryType.Emote, "says hello."); break; case "help": steamFriends.SendChatMessage(callback.Sender, EChatEntryType.ChatMsg, "\nList Of Commands:\n/trade - Start a trade.\n/remove - Remove TradeBot from your friends.\n/hi - say hello"); break; case "name": if (checkAdmin(sid)) { steamFriends.SetPersonaName(words[1]); } break; case "send": string[] wrds = message.Split(new char[] { ' ' }, 3); int index = int.Parse(wrds[1]); if (index < clients.Count() && index >= 0) { steamFriends.SendChatMessage(clients[index], EChatEntryType.ChatMsg, wrds[2]); } else { steamFriends.SendChatMessage(callback.Sender, EChatEntryType.Emote, "Error: index out of bounds."); } break; default: printConsole("[Error]Unknown command from " + callback.Sender + ": " + callback.Message, ConsoleColor.Red); steamFriends.SendChatMessage(callback.Sender, EChatEntryType.Emote, "doesn't know that command."); break; } } else { printConsole("[Chat][" + getIndex(sid) + "]" + callback.Sender + ": " + " (" + steamFriends.GetFriendPersonaName(callback.Sender) + ")" + callback.Message, ConsoleColor.Magenta); if ((callback.Message != "hi" || callback.Message != "hello") && clients.Contains(callback.Sender)) { steamFriends.SendChatMessage(callback.Sender, EChatEntryType.ChatMsg, "You Said: " + callback.Message); } } } else if (type == EChatEntryType.Emote) { printConsole("[Emote]" + callback.Sender + ": " + callback.Message, ConsoleColor.DarkMagenta); } }); msg.Handle <SteamTrading.TradeProposedCallback>(callback => { SteamID sid = callback.Other; //trade.RespondTradeRequest(callback.TradeRequestId, sid, true); //trade.HandleMsg((IPacketMsg)EMsg.EconTrading_InitiateTradeProposed); }); msg.Handle <SteamTrading.TradeRequestCallback>(callback => { printConsole("[Trade] Trade Status with " + callback.Other + " (" + steamFriends.GetFriendPersonaName(callback.Other) + "): " + callback.Status.ToString(), ConsoleColor.Green); if (callback.Status == ETradeStatus.Rejected) { printConsole("[Trade] Trade rejected by " + callback.Other + " (" + steamFriends.GetFriendPersonaName(callback.Other) + ")", ConsoleColor.DarkRed); steamFriends.SendChatMessage(callback.Other, EChatEntryType.Emote, "detected that you rejected that trade."); } //trade.RespondTradeRequest(callback.TradeRequestId, callback.Other, true); }); msg.Handle <SteamTrading.TradeStartSessionCallback>(callback => { //callback.Other }); msg.Handle <SteamFriends.PersonaStateCallback>(callback => { if (callback.FriendID == steamUser.SteamID) { return; } EFriendRelationship relationship = steamFriends.GetFriendRelationship(callback.FriendID); if (!(relationship == EFriendRelationship.RequestRecipient)) { return; } printConsole("[Friend] Added Friend: " + callback.FriendID + "(" + steamFriends.GetFriendPersonaName(callback.FriendID) + ")", ConsoleColor.Yellow); steamFriends.AddFriend(callback.FriendID); }); } }
public static void Main(string[] args) { #region SteamRE Init AllArgs = args; //Hacking around https ServicePointManager.CertificatePolicy = new MainClass(); Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("\n\tSteamBot Beta\n\tCreated by Jessecar96.\n\n"); Console.ForegroundColor = ConsoleColor.White; steamClient = new SteamClient(); steamTrade = steamClient.GetHandler <SteamTrading>(); SteamUser steamUser = steamClient.GetHandler <SteamUser> (); steamFriends = steamClient.GetHandler <SteamFriends>(); steamClient.Connect(); #endregion while (true) { CallbackMsg msg = steamClient.WaitForCallback(true); //Console Debug printConsole(msg.ToString(), ConsoleColor.Blue, true); #region Logged Off Handler msg.Handle <SteamUser.LoggedOffCallback> (callback => { printConsole("Logged Off: " + callback.Result, ConsoleColor.Red); }); #endregion #region Steam Disconnect Handler msg.Handle <SteamClient.DisconnectedCallback> (callback => { printConsole("Disconnected.", ConsoleColor.Red); }); #endregion #region Steam Connect Handler /** * --Steam Connection Callback * * It's not needed to modify this section */ msg.Handle <SteamClient.ConnectedCallback> (callback => { //Print Callback printConsole("Steam Connected Callback: " + callback.Result, ConsoleColor.Cyan); //Validate Result if (callback.Result == EResult.OK) { //Get Steam Login Details printConsole("Username: "******"Password: "******"Getting Web Cookies...", ConsoleColor.Yellow); //Get Web Cookies SteamWeb web = new SteamWeb(); WebCookies = web.DoLogin(user, pass); if (WebCookies != null) { printConsole("SteamWeb Cookies retrived.", ConsoleColor.Green); //Do Login steamUser.LogOn(new SteamUser.LogOnDetails { Username = user, Password = pass }); } else { printConsole("Error while getting SteamWeb Cookies.", ConsoleColor.Red); } } else { //Failure printConsole("Failed to Connect to steam.", ConsoleColor.Red); } }); #endregion #region Steam Login Handler //Logged in (or not) msg.Handle <SteamUser.LoggedOnCallback>(callback => { printConsole("Logged on callback: " + callback.Result, ConsoleColor.Cyan); if (callback.Result != EResult.OK) { printConsole("Login Failed!", ConsoleColor.Red); } else { printConsole("Successfulyl Logged In!\nWelcome " + steamUser.SteamID, ConsoleColor.Green); //Set community status steamFriends.SetPersonaName(BotPersonaName); steamFriends.SetPersonaState(BotPersonaState); } }); #endregion #region Steam Trade Start /** * * Steam Trading Handler * */ msg.Handle <SteamTrading.TradeStartSessionCallback>(call => { //Trading trade = null; trade = new TradeSystem(); trade.initTrade(steamUser.SteamID, call.Other, WebCookies); }); #endregion #region Trade Requested Handler //Don't modify this msg.Handle <SteamTrading.TradeProposedCallback>(thing => { //Trade Callback printConsole("Trade Proposed Callback. Other: " + thing.Other + "\n"); //Accept It steamTrade.RequestTrade(thing.Other); }); #endregion msg.Handle <SteamFriends.PersonaStateCallback>(callback => { if (callback.FriendID == steamUser.SteamID) { return; } EFriendRelationship relationship = steamFriends.GetFriendRelationship(callback.FriendID); if (!(relationship == EFriendRelationship.RequestRecipient)) { return; } if (steamFriends.GetFriendRelationship(callback.FriendID) == EFriendRelationship.PendingInvitee) { printConsole("[Friend] Friend Request Pending: " + callback.FriendID + "(" + steamFriends.GetFriendPersonaName(callback.FriendID) + ") - Accepted", ConsoleColor.Yellow); steamFriends.AddFriend(callback.FriendID); } }); #region Steam Chat Handler /** * * Steam Chat Handler * */ msg.Handle <SteamFriends.FriendMsgCallback>(callback => { //Type (emote or chat) EChatEntryType type = callback.EntryType; if (type == EChatEntryType.ChatMsg) { //Message is a chat message //Reply with the same message steamFriends.SendChatMessage(callback.Sender, EChatEntryType.ChatMsg, callback.Message); //Chat API coming soon } else if (type == EChatEntryType.Emote) { //Message is emote //Do nothing yet } }); #endregion } //end while loop } //end Main method