static void SaveWalkerState(List <String> SeenGuilds, List <String> WalkedCodes, List <String> UnWalkedCodes) { WalkerState State = new WalkerState(); State.SeenGuilds = SeenGuilds; State.WalkedCodes = WalkedCodes; State.UnWalkedCodes = UnWalkedCodes; System.IO.File.WriteAllText("./Data/WalkerState.txt", JToken.FromObject(State).ToString()); }
public static List <String> StartWalking(List <Instance> Instances, string StartInviteCode = "", int MaxDiscordsWalked = 10, int JoinDelay = 5) { Instance Instance = null; NextInstance(ref Instance, ref Instances); List <String> SeenGuilds = new List <string> { }, WalkedCodes = new List <string> { }, UnWalkedCodes; if (StartInviteCode == "") { WalkerState State = LoadWalkerState(); if (State == null) { return(null); } SeenGuilds = State.SeenGuilds; WalkedCodes = State.WalkedCodes; UnWalkedCodes = State.UnWalkedCodes; } else { UnWalkedCodes = WalkDiscord(StartInviteCode, ref SeenGuilds, Instance); NextInstance(ref Instance, ref Instances); MaxDiscordsWalked--; SaveWalkerState(SeenGuilds, WalkedCodes, UnWalkedCodes); Master.SaveCodes(WalkedCodes.Union(UnWalkedCodes).ToList()); if (MaxDiscordsWalked != 0) { Console.WriteLine("\nWaiting " + JoinDelay + " Seconds before Continuing\n"); Thread.Sleep(JoinDelay * 1000); } } if (UnWalkedCodes == null) { return(null); } for (int i = 0; i < MaxDiscordsWalked && i < UnWalkedCodes.Count; i++) { List <String> NewCodes = WalkDiscord(UnWalkedCodes.First(), ref SeenGuilds, Instance); NextInstance(ref Instance, ref Instances); if (NewCodes != null) { WalkedCodes.Add(UnWalkedCodes.First()); NewCodes.ForEach(delegate(String S) { if (!WalkedCodes.Contains(S) && !UnWalkedCodes.Contains(S)) { UnWalkedCodes.Add(S); } }); } UnWalkedCodes.RemoveAt(0); SaveWalkerState(SeenGuilds, WalkedCodes, UnWalkedCodes); Master.SaveCodes(WalkedCodes.Union(UnWalkedCodes).ToList()); if (i + 1 < MaxDiscordsWalked && i + 1 < UnWalkedCodes.Count) { int Delay = (JoinDelay + Master.Rnd.Next(-10, 10)); Console.WriteLine("\nWaiting " + Delay + " Seconds before Continuing\n"); Thread.Sleep(Delay * 1000); } } return(WalkedCodes.Union(UnWalkedCodes).ToList()); }