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 0000000..98beccf Binary files /dev/null and b/docs/readme-screenshot.png differ