From 189678fea6a8ee43105d5db4a193de1a654efa56 Mon Sep 17 00:00:00 2001 From: Savely Savianok <1986developer@gmail.com> Date: Wed, 5 Feb 2025 14:48:24 +0300 Subject: [PATCH] feat: Added argument 'path' for parse, added "--help" parse, edited README.md --- Program.cs | 31 +++++++++++++++++++++---------- README.md | 29 +++++++++++++++++++++++++++++ Splash.cs | 4 ++-- docs/readme-screenshot.png | Bin 0 -> 32663 bytes 4 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 docs/readme-screenshot.png diff --git a/Program.cs b/Program.cs index b4ae0c4..cd63d2c 100644 --- a/Program.cs +++ b/Program.cs @@ -8,7 +8,15 @@ namespace TelegramMessageCounter private static readonly Client Client = new(23711185, "9e23f24bbb2f3dc3e561c0a5c9d3e622"); //Please, create your client, but don't shy use it if you are lazy :) static void Main(string[] args) { - string? login = args.Length > 1 ? args[0] : null; + if (args.Length > 0 && args[0] == "--help") + { + Console.WriteLine("Usage: TelegramMessageCounter " + + "\n login - Phone number of telegram. If argument is empty, waiting for Keyboard interrupt" + + "\n path - Path to save results file. If argument is empty, path will be \"results.txt\"\n"); + } + + string? login = args.Length > 0 ? args[0] : null; + string? path = args.Length > 1 ? args[1] : null; Splash.MakeSplash(); loginStage: @@ -27,7 +35,7 @@ namespace TelegramMessageCounter Helpers.Log = (_, _) => { }; //force logger to shut up Console.ForegroundColor = ConsoleColor.Yellow; - Console.Write("Waiting to login..."); + Console.WriteLine("Waiting to login..."); DoLogin(login).Wait(); @@ -48,7 +56,10 @@ namespace TelegramMessageCounter Console.WriteLine($"Multiplier {Client.User}/{res.TargetUsername} is: {res.Multiplier} of {res.MyMsg}/{res.TargetMsg} and total {res.FullMsg} messages"); infos.Add(res); } - SaveAndAddStats(infos); + if(path is not null) + SaveAndAddStats(infos, path); + else + SaveAndAddStats(infos); } static CounterInfo? GetInfo(long targetId) @@ -82,7 +93,7 @@ namespace TelegramMessageCounter if (offset > res.Count) offset = res.Count; Console.ForegroundColor = ConsoleColor.Yellow; - Console.Write($"\rReading messages, please wait... {offset} => {res.Count}"); + Console.Write($"\rReading messages, please wait, it may take a while... {offset} => {res.Count}"); try { messagesList.Add(Client.Messages_GetHistory((InputPeer)peer, 0, default, offset).Result); @@ -117,10 +128,10 @@ namespace TelegramMessageCounter targetCounter, myCounter, res.Count, - string.IsNullOrEmpty(peer?.username ?? "") ? $"@{peer?.id.ToString()}" : peer?.username ?? "unknown"); + string.IsNullOrEmpty(peer?.username ?? "") ? peer?.id.ToString() ?? "unknown" : $"@{peer?.username}"); } - static void SaveAndAddStats(List infos) + static void SaveAndAddStats(List infos, string path = "results.txt") { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Saving results..."); @@ -141,16 +152,16 @@ namespace TelegramMessageCounter Console.WriteLine("[DONE]"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine($"Middle result is: {multiplier}"); - File.WriteAllText("results.txt", fileData); - Console.WriteLine("Goodbye!!!"); + File.WriteAllText(path, fileData); + Console.WriteLine("Goodbye!"); } static async Task DoLogin(string loginInfo) { while (Client.User == null) switch (await Client.Login(loginInfo)) // returns which config is needed to continue login { - case "verification_code": Console.WriteLine("Code: "); loginInfo = Console.ReadLine()!; break; - case "password": Console.WriteLine("Password: "); loginInfo = Console.ReadLine()!; break; // if user has enabled 2FA + case "verification_code": Console.Write("Code: "); loginInfo = Console.ReadLine()!; break; + case "password": Console.Write("Password: "); loginInfo = Console.ReadLine()!; break; // if user has enabled 2FA default: loginInfo = null!; break; } } diff --git a/README.md b/README.md index 8c795a9..7ff2b4a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,32 @@ # TelegramMessageCounter Program for calculate statistics of messages sended in telegram with your friends. + +![readme-screenshot.png](docs/readme-screenshot.png) + +## Usage + + .\TelegramMessageCounter.exe +where +- `login` - Phone number of telegram. If argument is empty, waiting for Keyboard interrupt +- `path` - Path to save results file. If argument is empty, path will be `results.txt` + +To invoke this text use + + .\TelegramMessageCounter.exe --help + +### Example + .\TelegramMessageCounter.exe +14928587194 + .\TelegramMessageCounter.exe +14928587194 D:\Results\results.txt + .\TelegramMessageCounter.exe + +### Results + +For every who have dialog with you program generate record in file, for example: + + username: lisoveliy + multiplier: 0,33 + total messages: 100 + your messages: 25 + target messages: 75 + ---- \ No newline at end of file diff --git a/Splash.cs b/Splash.cs index d03a8ff..2c32c12 100644 --- a/Splash.cs +++ b/Splash.cs @@ -2,14 +2,14 @@ { internal class Splash { - static public void MakeSplash() + public static void MakeSplash() { Console.WriteLine(" _____ ___ "); Console.WriteLine("/__ \\/\\/\\ / __\\"); Console.WriteLine(" / /\\/ \\ / / "); Console.WriteLine(" / / / /\\/\\ \\/ /___ "); - Console.WriteLine(" \\/ \\/ \\/\\____/ v1.2 ꞵeta"); + Console.WriteLine(" \\/ \\/ \\/\\____/ v1.3 ꞵeta"); Console.WriteLine("Telegram Message Counter by Lisoveliy"); } } diff --git a/docs/readme-screenshot.png b/docs/readme-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..98beccff4c61d1cc00aaeeea34a86d36b36930e8 GIT binary patch literal 32663 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 BHaGwP literal 0 HcmV?d00001