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