public async Task RunBots() { users = GetUsers(pathToUsers); SessionInfo sessionInfo = new SessionInfo(DateTime.Now); //Running bots using (HttpClient http = new HttpClient()) { foreach (User user in users) { LTCBot ltcBot = new LTCBot(user, http); await ltcBot.ConnectAsync(); await CheckAuthorization(ltcBot); //Check timeouts of bot if (!IsTimeoutsGood(user)) { continue; } BotStateInfo result = new BotStateInfo(); try { OnUserStarted?.Invoke(user); SubscribeOnBotEvents(ltcBot); result = await ltcBot.Start(); await TryToWithdraw(ltcBot, result); } catch (Exception e) { OnBotException?.Invoke(e); } SaveUsers(); OnUserCompleted?.Invoke(result); UpdateSessionInfo(sessionInfo, result); //Timeout before starting next bot if (users.Last() != user) { await Task.Delay(60000); } } } if (sessionInfo.CountOfUsers > 0) { sessionInfo.DurationInMinutes = (DateTime.Now - sessionInfo.Date).TotalMinutes; SaveSession(sessionInfo); } OnSessionCompleted?.Invoke(sessionInfo); }
public LTCBot(User user, HttpClient httpClient, string sessionPath = "Sessions", int captchaLimit = 3) { User = user; this.httpClient = httpClient; currentState = new BotStateInfo(captchaLimit: captchaLimit); if (!Directory.Exists(sessionPath)) { Directory.CreateDirectory(sessionPath); } client = new TelegramClient(User.ApiId, User.ApiHash, new FileSessionStore(new DirectoryInfo(sessionPath)), User.Phone); }
private async Task TryToWithdraw(LTCBot ltcBot, BotStateInfo result) { if (result.BalanceOfBot > 0.0004m) { try { await ltcBot.Withdraw(); OnWithdrawed?.Invoke(result.BalanceOfBot); withdrowedFromSession += result.BalanceOfBot; result.BalanceOfBot = 0; } catch (Exception e) { OnBotException?.Invoke(e); } } }
private void UpdateSessionInfo(SessionInfo sessionInfo, BotStateInfo result) { sessionInfo.CountOfUsers++; sessionInfo.Earning += result.EarningFromBotSession; sessionInfo.WithdrawedCount = withdrowedFromSession; }
private static void BotHolder_OnShowBotResult(BotStateInfo result) { WriteWithColor("Stop reason: " + result.StopReason, ConsoleColor.Green); WriteWithColor("Count of processed sites: " + result.SiteCount.ToString(), ConsoleColor.Green); WriteWithColor("Balance: " + result.BalanceOfBot.ToString(), ConsoleColor.Green); }