diff --git a/BlumAutoBot/BlumBot.csproj b/BlumAutoBot/BlumBot.csproj
new file mode 100644
index 0000000..5d92cb6
--- /dev/null
+++ b/BlumAutoBot/BlumBot.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/BlumAutoBot/BlumBot.sln b/BlumAutoBot/BlumBot.sln
new file mode 100644
index 0000000..f004c0f
--- /dev/null
+++ b/BlumAutoBot/BlumBot.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.11.34929.205
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlumBot", "BlumBot.csproj", "{80381389-DD56-423C-A92F-B70C67D145CA}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {80381389-DD56-423C-A92F-B70C67D145CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80381389-DD56-423C-A92F-B70C67D145CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80381389-DD56-423C-A92F-B70C67D145CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80381389-DD56-423C-A92F-B70C67D145CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {CCF1DABB-52D3-4386-B2C6-98FD17B3E884}
+ EndGlobalSection
+EndGlobal
diff --git a/BlumAutoBot/Helper.cs b/BlumAutoBot/Helper.cs
new file mode 100644
index 0000000..1c14903
--- /dev/null
+++ b/BlumAutoBot/Helper.cs
@@ -0,0 +1,99 @@
+namespace BlumBot
+{
+ public class Helper
+ {
+ public int platform()
+ {
+ Console.WriteLine("Выберите платформу");
+ Console.WriteLine("1 - iPhone (15.0)");
+ Console.WriteLine("2 - iPhone (16.4)");
+ Console.WriteLine("3 - Android (13)");
+ Console.WriteLine("4 - Windows (10)");
+ Console.WriteLine("5 - MacOS (13.4)");
+ int choice = Int32.Parse(Console.ReadLine());
+
+ return choice;
+ }
+
+ public int replay()
+ {
+ while (true)
+ {
+ Console.Write("Введите количество повторений: ");
+ int repetitions = Int32.Parse(Console.ReadLine());
+
+ if (repetitions < 1 || repetitions > 100)
+ {
+ Console.WriteLine("Недопустимое количество повторений.");
+ }
+ else if (repetitions > 5)
+ {
+ Console.WriteLine("Ты уверен? (y/n)");
+ string choice = Console.ReadLine().ToLower();
+ if (choice == "yes" || choice == "y")
+ {
+ return repetitions;
+ }
+ else
+ {
+ continue;
+ }
+ }
+ else
+ {
+ return repetitions;
+ }
+ }
+ }
+
+ public int scores()
+ {
+ while (true)
+ {
+ Console.Write("Введите баллы (рекомендуется от 200 до 280): ");
+ string pointsInput = Console.ReadLine();
+ int points;
+
+ if (string.IsNullOrEmpty(pointsInput))
+ {
+ Random random = new Random();
+ points = random.Next(260, 280);
+ Console.WriteLine($"Никакие баллы не введены. Использование случайных точек: {points}");
+ return points;
+ }
+ else if (!int.TryParse(pointsInput, out points) || points < 200 || points > 280)
+ {
+ Console.WriteLine("Неверное значение баллов. Пожалуйста, введите число от 200 до 280.");
+ continue;
+ }
+ else
+ {
+ return points;
+ }
+ }
+ }
+
+ public string GetAuthorizationToken()
+ {
+ Console.WriteLine("\r\n██████╗░██╗░░░░░██╗░░░██╗███╗░░░███╗ ░█████╗░██╗░░░██╗████████╗░█████╗░ ██████╗░░█████╗░████████╗\r\n██╔══██╗██║░░░░░██║░░░██║████╗░████║ ██╔══██╗██║░░░██║╚══██╔══╝██╔══██╗ ██╔══██╗██╔══██╗╚══██╔══╝\r\n██████╦╝██║░░░░░██║░░░██║██╔████╔██║ ███████║██║░░░██║░░░██║░░░██║░░██║ ██████╦╝██║░░██║░░░██║░░░\r\n██╔══██╗██║░░░░░██║░░░██║██║╚██╔╝██║ ██╔══██║██║░░░██║░░░██║░░░██║░░██║ ██╔══██╗██║░░██║░░░██║░░░\r\n██████╦╝███████╗╚██████╔╝██║░╚═╝░██║ ██║░░██║╚██████╔╝░░░██║░░░╚█████╔╝ ██████╦╝╚█████╔╝░░░██║░░░\r\n╚═════╝░╚══════╝░╚═════╝░╚═╝░░░░░╚═╝ ╚═╝░░╚═╝░╚═════╝░░░░╚═╝░░░░╚════╝░ ╚═════╝░░╚════╝░░░░╚═╝░░░" + "\r\n\n");
+ while (true)
+ {
+ Console.Write("Введите токен авторизации: ");
+ string token = Console.ReadLine().Trim();
+
+ if (string.IsNullOrEmpty(token))
+ {
+ Console.WriteLine("Токен не может быть пустым. Пожалуйста, введите действительный токен авторизации.");
+ continue;
+ }
+
+ if (!token.StartsWith("Bearer "))
+ {
+ token = "Bearer " + token;
+ }
+
+ return token;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/BlumAutoBot/Program.cs b/BlumAutoBot/Program.cs
new file mode 100644
index 0000000..bd5d111
--- /dev/null
+++ b/BlumAutoBot/Program.cs
@@ -0,0 +1,48 @@
+namespace BlumBot
+{
+ class Program
+ {
+ static async Task Main(string[] args)
+ {
+ Helper help = new Helper();
+ Requests requests = new Requests();
+
+ string authorizationToken = help.GetAuthorizationToken();
+
+ while (true)
+ {
+ try
+ {
+ int choice = help.platform();
+ int repetitions = help.replay();
+ int points = help.scores();
+
+ List> tasks = new List>();
+
+ for (int i = 0; i < repetitions; i++)
+ {
+ tasks.Add(requests.MakeRequestsAsync(authorizationToken, points, i + 1, choice));
+ }
+
+ string[] results = await Task.WhenAll(tasks);
+
+ for (int i = 0; i < results.Length; i++)
+ {
+ Console.WriteLine($"Результат итерации {i + 1}:\n{results[i]}\n");
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Ошибка: {ex.Message}");
+ }
+
+ Console.WriteLine("Еще разок? (yes/no): ");
+ string runAgain = Console.ReadLine().ToLower();
+ if (runAgain != "yes" && runAgain != "y")
+ {
+ break;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/BlumAutoBot/Requests.cs b/BlumAutoBot/Requests.cs
new file mode 100644
index 0000000..37c4c8b
--- /dev/null
+++ b/BlumAutoBot/Requests.cs
@@ -0,0 +1,181 @@
+using Newtonsoft.Json.Linq;
+using System.Text;
+
+namespace BlumBot
+{
+ public class Requests
+ {
+ private static HttpClient choiceplatform(string authorizationToken, int choice)
+ {
+ HttpClient result = new HttpClient();
+
+ switch(choice)
+ {
+ case 1:
+ result = iphone_old(authorizationToken);
+ break;
+ case 2:
+ result = iphone_new(authorizationToken);
+ break;
+ case 3:
+ result = android(authorizationToken);
+ break;
+ case 4:
+ result = windows(authorizationToken);
+ break;
+ case 5:
+ result = macos(authorizationToken);
+ break;
+ }
+
+ return result;
+ }
+
+ public static HttpClient iphone_old(string authorizationToken)
+ {
+ var client = new HttpClient();
+
+ client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1");
+ client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
+ client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9");
+ client.DefaultRequestHeaders.Add("authorization", authorizationToken);
+ client.DefaultRequestHeaders.Add("origin", "https://telegram.blum.codes");
+ client.DefaultRequestHeaders.Add("priority", "u=1, i");
+ client.DefaultRequestHeaders.Add("sec-fetch-dest", "empty");
+ client.DefaultRequestHeaders.Add("sec-fetch-mode", "cors");
+ client.DefaultRequestHeaders.Add("sec-fetch-site", "same-site");
+
+ return client;
+ }
+
+ public static HttpClient iphone_new(string authorizationToken)
+ {
+ var client = new HttpClient();
+
+ client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Mobile/15E148 Safari/604.1");
+ client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
+ client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9");
+ client.DefaultRequestHeaders.Add("authorization", authorizationToken);
+ client.DefaultRequestHeaders.Add("origin", "https://telegram.blum.codes");
+ client.DefaultRequestHeaders.Add("priority", "u=1, i");
+ client.DefaultRequestHeaders.Add("sec-fetch-dest", "empty");
+ client.DefaultRequestHeaders.Add("sec-fetch-mode", "cors");
+ client.DefaultRequestHeaders.Add("sec-fetch-site", "same-site");
+
+ return client;
+ }
+
+ public static HttpClient android(string authorizationToken)
+ {
+ var client = new HttpClient();
+
+ client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Linux; Android 13; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36");
+ client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
+ client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9");
+ client.DefaultRequestHeaders.Add("authorization", authorizationToken);
+ client.DefaultRequestHeaders.Add("origin", "https://telegram.blum.codes");
+ client.DefaultRequestHeaders.Add("priority", "u=1, i");
+ client.DefaultRequestHeaders.Add("sec-fetch-dest", "empty");
+ client.DefaultRequestHeaders.Add("sec-fetch-mode", "cors");
+ client.DefaultRequestHeaders.Add("sec-fetch-site", "same-site");
+
+ return client;
+ }
+
+ public static HttpClient windows(string authorizationToken)
+ {
+ var client = new HttpClient();
+
+ client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0");
+ client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
+ client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9");
+ client.DefaultRequestHeaders.Add("authorization", authorizationToken);
+ client.DefaultRequestHeaders.Add("origin", "https://telegram.blum.codes");
+ client.DefaultRequestHeaders.Add("priority", "u=1, i");
+ client.DefaultRequestHeaders.Add("sec-ch-ua", "\"Microsoft Edge\";v=\"126\", \"Chromium\";v=\"126\", \"Not.A/Brand\";v=\"8\", \"Microsoft Edge WebView2\";v=\"126\"");
+ client.DefaultRequestHeaders.Add("sec-ch-ua-mobile", "?0");
+ client.DefaultRequestHeaders.Add("sec-ch-ua-platform", "\"Windows\"");
+ client.DefaultRequestHeaders.Add("sec-fetch-dest", "empty");
+ client.DefaultRequestHeaders.Add("sec-fetch-mode", "cors");
+ client.DefaultRequestHeaders.Add("sec-fetch-site", "same-site");
+
+ return client;
+ }
+
+ public static HttpClient macos(string authorizationToken)
+ {
+ var client = new HttpClient();
+
+ client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/537.36 (KHTML, like Gecko) Version/16.0 Safari/537.36");
+ client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
+ client.DefaultRequestHeaders.Add("accept-language", "en-US,en;q=0.9");
+ client.DefaultRequestHeaders.Add("authorization", authorizationToken);
+ client.DefaultRequestHeaders.Add("origin", "https://telegram.blum.codes");
+ client.DefaultRequestHeaders.Add("priority", "u=1, i");
+ client.DefaultRequestHeaders.Add("sec-fetch-dest", "empty");
+ client.DefaultRequestHeaders.Add("sec-fetch-mode", "cors");
+ client.DefaultRequestHeaders.Add("sec-fetch-site", "same-site");
+
+ return client;
+ }
+
+ public async Task MakeRequestsAsync(string authorizationToken, int points, int iteration, int choice)
+ {
+ HttpClient client = new HttpClient();
+
+ client = choiceplatform(authorizationToken, choice);
+
+ HttpResponseMessage response = await client.PostAsync("https://game-domain.blum.codes/api/v1/game/play", null);
+
+ if (!response.IsSuccessStatusCode)
+ {
+ if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
+ {
+ Console.WriteLine("Срок действия токенов истек. Пожалуйста, введите действительный токен авторизации.");
+ }
+ else
+ {
+ string errorMessage = await response.Content.ReadAsStringAsync();
+ Console.WriteLine($"Ошибка: {errorMessage}");
+ }
+ return $"Итерация {iteration} не удалась.";
+ }
+
+ string responseContent = await response.Content.ReadAsStringAsync();
+ Console.WriteLine($"Ответ от /game/play (итерация {iteration}):");
+ Console.WriteLine(responseContent);
+
+ var json = JObject.Parse(responseContent);
+ string gameId = json["gameId"].ToString();
+
+ Console.WriteLine($"Итерация {iteration}: Ждите 32 секунды...");
+ await Task.Delay(32000);
+
+ client.DefaultRequestHeaders.Clear();
+ client = choiceplatform(authorizationToken, choice);
+
+ var payload = new
+ {
+ gameId = gameId,
+ points = points
+ };
+
+ StringContent content = new StringContent(JObject.FromObject(payload).ToString(), Encoding.UTF8, "application/json");
+
+ response = await client.PostAsync("https://game-domain.blum.codes/api/v1/game/claim", content);
+ responseContent = await response.Content.ReadAsStringAsync();
+
+ if (!response.IsSuccessStatusCode)
+ {
+ string errorMessage = await response.Content.ReadAsStringAsync();
+ Console.WriteLine($"Ошибка от /game/claim (Итерация {iteration}): {errorMessage}");
+ return $"Итерация {iteration} не удалась.";
+ }
+
+ Console.WriteLine($"Ответ от /game/claim (Итерация {iteration}):");
+ Console.WriteLine(responseContent);
+
+ return $"Итерация {iteration} завершена успешно.";
+ }
+ }
+}
\ No newline at end of file