From 7c9e5d818ee5be939e6961335d08e24029eea84c Mon Sep 17 00:00:00 2001 From: JustArchi Date: Thu, 29 Oct 2015 16:38:16 +0100 Subject: [PATCH] Add very basic statistics --- ArchiSteamFarm/ArchiWebHandler.cs | 59 ++++++++++++++++++++----------- ArchiSteamFarm/Bot.cs | 19 ++++++++++ ArchiSteamFarm/Program.cs | 1 + ArchiSteamFarm/config/example.xml | 5 +++ 4 files changed, 64 insertions(+), 20 deletions(-) diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index e82df00cc..7a43a6949 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -223,6 +223,45 @@ namespace ArchiSteamFarm { return result; } + internal async Task JoinClan(ulong clanID) { + if (clanID == 0) { + return; + } + + string sessionID; + if (!SteamCookieDictionary.TryGetValue("sessionid", out sessionID)) { + return; + } + + string request = "http://steamcommunity.com/gid/" + clanID; + + Dictionary postData = new Dictionary() { + {"sessionID", sessionID}, + {"action", "join"} + }; + + await Utilities.UrlPostRequest(request, postData, SteamCookieDictionary).ConfigureAwait(false); + } + + internal async Task LeaveClan(ulong clanID) { + if (clanID == 0) { + return; + } + + string sessionID; + if (!SteamCookieDictionary.TryGetValue("sessionid", out sessionID)) { + return; + } + + string request = GetHomeProcess(); + Dictionary postData = new Dictionary() { + {"sessionID", sessionID}, + {"action", "leaveGroup"}, + {"groupId", clanID.ToString()} + }; + await Utilities.UrlPostRequest(request, postData, SteamCookieDictionary).ConfigureAwait(false); + } + internal async Task AcceptTradeOffer(ulong tradeID) { if (tradeID == 0) { return false; @@ -275,26 +314,6 @@ namespace ArchiSteamFarm { return response != null; // Steam API doesn't respond with any error code, assume any response is a success } - internal async Task LeaveClan(ulong clanID) { - if (clanID == 0) { - return; - } - - string sessionID; - if (!SteamCookieDictionary.TryGetValue("sessionid", out sessionID)) { - return; - } - - string request = GetHomeProcess(); - Dictionary postData = new Dictionary() { - {"sessionID", sessionID}, - {"action", "leaveGroup"}, - {"groupId", clanID.ToString()} - }; - - await Utilities.UrlPostRequest(request, postData, SteamCookieDictionary).ConfigureAwait(false); - } - internal async Task GetBadgePage(int page) { if (SteamID == 0 || page == 0) { return null; diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 086d2df54..7d47123ec 100644 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -64,6 +64,7 @@ namespace ArchiSteamFarm { internal ulong SteamMasterID { get { return ulong.Parse(Config["SteamMasterID"]); } } private ulong SteamMasterClanID { get { return ulong.Parse(Config["SteamMasterClanID"]); } } internal HashSet Blacklist { get; } = new HashSet(); + internal bool Statistics { get { return bool.Parse(Config["Statistics"]); } } internal Bot(string botName) { BotName = botName; @@ -129,6 +130,7 @@ namespace ArchiSteamFarm { SteamFriends = SteamClient.GetHandler(); CallbackManager.Subscribe(OnFriendsList); CallbackManager.Subscribe(OnFriendMsg); + CallbackManager.Subscribe(OnPersonaState); SteamUser = SteamClient.GetHandler(); CallbackManager.Subscribe(OnAccountInfo); @@ -270,6 +272,18 @@ namespace ArchiSteamFarm { } } + private void OnPersonaState(SteamFriends.PersonaStateCallback callback) { + if (callback == null) { + return; + } + + SteamID steamID = callback.FriendID; + SteamID sourceSteamID = callback.SourceSteamID; + string steamNickname = callback.Name; + EPersonaState personaState = callback.State; + EClanRank clanRank = (EClanRank) callback.ClanRank; + } + private void OnAccountInfo(SteamUser.AccountInfoCallback callback) { if (callback == null) { return; @@ -324,6 +338,11 @@ namespace ArchiSteamFarm { SteamFriends.JoinChat(clanID); } + if (Statistics) { + SteamFriends.JoinChat(Program.ArchiSCFarmGroup); + await ArchiWebHandler.JoinClan(Program.ArchiSCFarmGroup).ConfigureAwait(false); + } + await CardsFarmer.StartFarming().ConfigureAwait(false); break; case EResult.Timeout: diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index eac5df4cc..8905b0c39 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -37,6 +37,7 @@ namespace ArchiSteamFarm { TwoFactorAuthentication, } + internal const ulong ArchiSCFarmGroup = 103582791440160998; internal const string ConfigDirectoryPath = "config"; private static readonly HashSet Bots = new HashSet(); internal static readonly object ConsoleLock = new object(); diff --git a/ArchiSteamFarm/config/example.xml b/ArchiSteamFarm/config/example.xml index 600728c30..ebc4bdb24 100644 --- a/ArchiSteamFarm/config/example.xml +++ b/ArchiSteamFarm/config/example.xml @@ -39,4 +39,9 @@ + + + + + \ No newline at end of file