Advertisement
Guest User

Steam Bot Template

a guest
May 12th, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.70 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using SteamKit2;
  8.  
  9. namespace BotTemplate
  10. {
  11.     public class Program
  12.     {
  13.         private static string _authCode;
  14.  
  15.         public static SteamClient SteamClient;
  16.         public static CallbackManager Manager;
  17.         public static SteamUser SteamUser;
  18.         public static SteamFriends SteamFriends;
  19.  
  20.         private static bool _isRunning;
  21.  
  22.         private static string _twoFactorCode;
  23.  
  24.         private static string _user;
  25.         private static string _pass;
  26.  
  27.         private static void Main()
  28.         {
  29.             Console.Write("Please enter bot username: ");
  30.             _user = Console.ReadLine();
  31.  
  32.             Console.Write("Please enter bot password: ");
  33.             _pass = Console.ReadLine();
  34.  
  35.             SteamClient = new SteamClient();
  36.             Manager = new CallbackManager(SteamClient);
  37.             SteamUser = SteamClient.GetHandler<SteamUser>();
  38.             SteamFriends = SteamClient.GetHandler<SteamFriends>();
  39.  
  40.             Manager.Subscribe<SteamClient.ConnectedCallback>(OnConnected);
  41.             Manager.Subscribe<SteamUser.LoggedOnCallback>(OnLoggedOn);
  42.             Manager.Subscribe<SteamUser.LoggedOffCallback>(OnLoggedOff);
  43.             Manager.Subscribe<SteamUser.UpdateMachineAuthCallback>(OnMachineAuth);
  44.             Manager.Subscribe<SteamClient.DisconnectedCallback>(OnDisconnected);
  45.             Manager.Subscribe<SteamUser.AccountInfoCallback>(OnAccountInfo);
  46.             Manager.Subscribe<SteamFriends.FriendMsgCallback>(OnChatMessage);
  47.             Manager.Subscribe<SteamFriends.FriendsListCallback>(OnFriendsList);
  48.  
  49.             _isRunning = true;
  50.             Console.WriteLine("Attempting client connection...");
  51.             SteamClient.Connect();
  52.  
  53.             while (_isRunning)
  54.             {
  55.                 Manager.RunWaitCallbacks(TimeSpan.FromSeconds(1));
  56.             }
  57.             Console.ReadKey();
  58.         }
  59.        
  60.  
  61.         private static void OnConnected(SteamClient.ConnectedCallback callback)
  62.         {
  63.             if (callback.Result != EResult.OK)
  64.             {
  65.                 Console.WriteLine("Unable to connect to Steam: " + callback.Result);
  66.                 _isRunning = false;
  67.                 return;
  68.             }
  69.  
  70.             Console.WriteLine("Client connection was successful!");
  71.             Console.WriteLine("Logging into \"" + _user + "\"...");
  72.  
  73.             byte[] sentryHash = null;
  74.             if (File.Exists("sentry.bin"))
  75.             {
  76.                 byte[] sentryFile = File.ReadAllBytes("sentry.bin");
  77.                 sentryHash = CryptoHelper.SHAHash(sentryFile);
  78.             }
  79.  
  80.             SteamUser.LogOn(new SteamUser.LogOnDetails
  81.             {
  82.                 Username = _user,
  83.                 Password = _pass,
  84.                 AuthCode = _authCode,
  85.                 TwoFactorCode = _twoFactorCode,
  86.                 SentryFileHash = sentryHash
  87.             });
  88.  
  89.         }
  90.  
  91.         private static void OnDisconnected(SteamClient.DisconnectedCallback callback)
  92.         {
  93.             Console.WriteLine(_user + " disconnected from Steam, reconnecting in 1 second...");
  94.             Thread.Sleep(TimeSpan.FromSeconds(1));
  95.             SteamClient.Connect();
  96.         }
  97.  
  98.         private static void OnLoggedOn(SteamUser.LoggedOnCallback callback)
  99.         {
  100.             bool isSteamGuard = callback.Result == EResult.AccountLogonDenied;
  101.             bool is2Fa = callback.Result == EResult.AccountLoginDeniedNeedTwoFactor;
  102.  
  103.             if (isSteamGuard || is2Fa)
  104.             {
  105.                 if (is2Fa)
  106.                 {
  107.                     Console.Write("Please enter 2FA code: ");
  108.                     _twoFactorCode = Console.ReadLine();
  109.                 }
  110.                 else
  111.                 {
  112.                     Console.Write("Please enter the auth code sent to the email at {0}: ", callback.EmailDomain);
  113.                     _authCode = Console.ReadLine();
  114.                 }
  115.                 return;
  116.             }
  117.  
  118.             if (callback.Result != EResult.OK)
  119.             {
  120.                 Console.WriteLine("Unable to log in to Steam: " + callback.Result + " / " + callback.ExtendedResult);
  121.  
  122.                 if (callback.Result != EResult.ServiceUnavailable)
  123.                     _isRunning = false;
  124.  
  125.                 return;
  126.             }
  127.  
  128.             Console.WriteLine(_user + " successfully logged in!");
  129.         }
  130.  
  131.         private static void OnLoggedOff(SteamUser.LoggedOffCallback callback)
  132.         {
  133.             Console.WriteLine("Logged off of Steam: " + callback.Result);
  134.         }
  135.  
  136.         private static void OnMachineAuth(SteamUser.UpdateMachineAuthCallback callback)
  137.         {
  138.             Console.WriteLine("Updating sentry file...");
  139.             byte[] sentryHash = CryptoHelper.SHAHash(callback.Data);
  140.             File.WriteAllBytes("sentry.bin", callback.Data);
  141.  
  142.             SteamUser.SendMachineAuthResponse(new SteamUser.MachineAuthDetails
  143.             {
  144.                 JobID = callback.JobID,
  145.                 FileName = callback.FileName,
  146.                 BytesWritten = callback.BytesToWrite,
  147.                 FileSize = callback.Data.Length,
  148.                 Offset = callback.Offset,
  149.                 Result = EResult.OK,
  150.                 LastError = 0,
  151.                 OneTimePassword = callback.OneTimePassword,
  152.                 SentryFileHash = sentryHash
  153.             });
  154.  
  155.             Console.WriteLine("Update successful!");
  156.         }
  157.  
  158.         private static void OnAccountInfo(SteamUser.AccountInfoCallback callback)
  159.         {
  160.             SteamFriends.SetPersonaState(EPersonaState.Online);
  161.             SteamFriends.SetPersonaName("Nanobot ᴮᴱᵀᴬ");
  162.         }
  163.  
  164.         private static void OnFriendsList(SteamFriends.FriendsListCallback callback)
  165.         {
  166.             foreach (
  167.                 var friend in
  168.                     callback.FriendList.Where(friend => friend.Relationship == EFriendRelationship.RequestRecipient)
  169.                         .TakeWhile(friend => !friend.SteamID.IsClanAccount))
  170.             {
  171.                 SteamFriends.AddFriend(friend.SteamID);
  172.                 Console.WriteLine("Accepted " + SteamFriends.GetFriendPersonaName(friend.SteamID) + "'s friend request.");
  173.                 Thread.Sleep(500);
  174.             }
  175.         }
  176.  
  177.         private static void OnChatMessage(SteamFriends.FriendMsgCallback callback)
  178.         {
  179.             if (callback.EntryType != EChatEntryType.ChatMsg) return;
  180.  
  181.             if (callback.Message.Length <= 1 || callback.Message.Remove(1) != "!")
  182.             {
  183.                 SendMsg(callback.Sender, "This is where I respond to chat messages!");
  184.                 return;
  185.             }
  186.  
  187.             string commandstring = callback.Message.Remove(0, 1);
  188.             List<string> args = Seperate(commandstring);
  189.             Console.Write(callback.Sender + " attempted to use command:");
  190.             foreach (string s in args)
  191.             {
  192.                 Console.Write(" " + s);
  193.             }
  194.         }
  195.  
  196.         public static List<string> Seperate(string toSeperate)
  197.         {
  198.             var toReturn = new List<string>();
  199.             var builder = new StringBuilder();
  200.             bool inQuotes = false;
  201.             bool skipCharacter = false;
  202.             //command abc 123 "come with me"
  203.  
  204.             foreach (char t in toSeperate)
  205.             {
  206.                 if (skipCharacter)
  207.                 {
  208.                     skipCharacter = false;
  209.                     continue;
  210.                 }
  211.  
  212.                 if (t == '\"')
  213.                 {
  214.                     inQuotes = !inQuotes;
  215.                     if (inQuotes == false)
  216.                     {
  217.                         skipCharacter = true;
  218.                         toReturn.Add(builder.ToString());
  219.                         builder.Clear();
  220.                     }
  221.                     continue;
  222.                 }
  223.  
  224.                 if (t == ' ' && !inQuotes)
  225.                 {
  226.                     toReturn.Add(builder.ToString());
  227.                     builder.Clear();
  228.                     continue;
  229.                 }
  230.  
  231.                 builder.Append(t);
  232.             }
  233.             if (builder.Length > 0) toReturn.Add(builder.ToString());
  234.             return toReturn;
  235.         }
  236.  
  237.         public static string GetName(SteamID steamid)
  238.         {
  239.             return SteamFriends.GetFriendPersonaName(steamid);
  240.         }
  241.  
  242.         public static EPersonaState GetState(SteamID steamid)
  243.         {
  244.             return SteamFriends.GetFriendPersonaState(steamid);
  245.         }
  246.  
  247.         public static void SendMsg(SteamID user, string msg)
  248.         {
  249.             SteamFriends.SendChatMessage(user, EChatEntryType.ChatMsg, msg);
  250.         }
  251.     }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement