From e9db40dee970ef6b59ae5f0da311d3d4549685b5 Mon Sep 17 00:00:00 2001 From: Savely Savianok <1986developer@gmail.com> Date: Tue, 11 Feb 2025 21:13:47 +0300 Subject: [PATCH] feat: Added counter for symbols --- ArgumentReader.cs | 19 +++++++++++------- CounterInfo.cs | 11 +++++++---- Program.cs | 50 +++++++++++++++++++++++++++++------------------ Splash.cs | 2 +- 4 files changed, 51 insertions(+), 31 deletions(-) diff --git a/ArgumentReader.cs b/ArgumentReader.cs index 4ac0d70..1a352a6 100644 --- a/ArgumentReader.cs +++ b/ArgumentReader.cs @@ -3,7 +3,7 @@ public static class ArgumentReader { public static DataRequest ReadArguments(string[] args) - { + { string? login = null; string? username = null; if (args.Length > 0 && args.Any(x => x == "--help")) @@ -18,9 +18,9 @@ public static class ArgumentReader if (args.Any(x => x == "--user")) { var userNameArgIndex = args.ToList().IndexOf("--user"); - username = args[userNameArgIndex+1]; + username = args[userNameArgIndex + 1]; } - + if (args.Any(x => x == "--login" || x == "-L")) { var userNameArgIndex = args.ToList().IndexOf("--login"); @@ -28,11 +28,16 @@ public static class ArgumentReader { userNameArgIndex = args.ToList().IndexOf("-L"); } - login = args[userNameArgIndex+1]; - } - string? path = args.Length > 1 ? args.Last() : null; - return new(login, username, (path ?? default)!); + login = args[userNameArgIndex + 1]; + } + + string?[] argValues = [login, username]; + string? path = args.Length > 1 && argValues.All(x => x != args.Last()) ? args.Last() : null; + + if (path == null) + return new(login, username); + return new(login, username, path); } } \ No newline at end of file diff --git a/CounterInfo.cs b/CounterInfo.cs index 5e25a41..721c383 100644 --- a/CounterInfo.cs +++ b/CounterInfo.cs @@ -8,10 +8,13 @@ namespace TelegramMessageCounter { internal record CounterInfo ( - float Multiplier, - int TargetMsg, - int MyMsg, - int FullMsg, + float MessageMultiplier, + float SymbolsMultiplier, + int UserMessageCount, + int TargetMessageCount, + int UserSymbolsCount, + int TargetSymbolsCount, + int FullMessageCount, string TargetUsername ); } diff --git a/Program.cs b/Program.cs index 8bb7d1b..391f521 100644 --- a/Program.cs +++ b/Program.cs @@ -46,11 +46,11 @@ namespace TelegramMessageCounter var res = GetInfo(user.id); if (res == null) { - Console.WriteLine($"User {user.id} not found! Skipping..."); + Console.WriteLine($"[WARN]User {user.id} failed to analyze! Skipping..."); continue; } - Console.WriteLine($"Multiplier {Client.User}/{res.TargetUsername} is: {res.Multiplier} of {res.MyMsg}/{res.TargetMsg} and total {res.FullMsg} messages"); + Console.WriteLine($"MessageMultiplier {Client.User}/{res.TargetUsername} is: {res.MessageMultiplier} of {res.UserMessageCount}/{res.TargetMessageCount} and total {res.FullMessageCount} messages"); infos.Add(res); } SaveAndAddStats(infos, dataRequest.Path); @@ -59,8 +59,10 @@ namespace TelegramMessageCounter static CounterInfo? GetInfo(long targetId) { var dialogs = Client.Messages_GetAllDialogs().Result; - int myCounter = 0; - int targetCounter = 0; + int userMsgCount = 0; + int userSymbolsCount = 0; + int targetMsgCount = 0; + int targetSymbolsCount = 0; User? peer; try { @@ -71,7 +73,7 @@ namespace TelegramMessageCounter Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("[DONE]"); - Console.WriteLine($"Username is: {(peer)?.username}"); + Console.WriteLine($"Username is: {peer?.username}"); } catch (Exception ex) { @@ -82,7 +84,7 @@ namespace TelegramMessageCounter } List messagesList = []; - var messageCount = 0; + var fullMsgCount = 0; try { var res = Client.Messages_GetHistory((InputPeer)peer).Result; @@ -102,7 +104,7 @@ namespace TelegramMessageCounter // ignored } } - messageCount =res.Count; + fullMsgCount = res.Count; } catch (Exception) { @@ -119,9 +121,14 @@ namespace TelegramMessageCounter { if (msg.from_id != null) { - myCounter++; + userMsgCount++; + userSymbolsCount += msg.message.Length; + } + else + { + targetMsgCount++; + targetSymbolsCount += msg.message.Length; } - else targetCounter++; } } } @@ -130,10 +137,13 @@ namespace TelegramMessageCounter Console.ForegroundColor = ConsoleColor.White; return new( - (float)myCounter / targetCounter, - targetCounter, - myCounter, - messageCount, + (float)userMsgCount / targetMsgCount, + (float)userSymbolsCount / targetSymbolsCount, + userMsgCount, + targetMsgCount, + userSymbolsCount, + targetSymbolsCount, + fullMsgCount, string.IsNullOrEmpty(peer?.username ?? "") ? peer?.id.ToString() ?? "unknown" : $"@{peer?.username}"); } @@ -141,17 +151,19 @@ namespace TelegramMessageCounter { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write("Saving results..."); - File.Create("results.txt"); string fileData = ""; float multiplier = 0; foreach (CounterInfo info in infos) { fileData += "username: " + info.TargetUsername + "\n" + - "multiplier: " + info.Multiplier + "\n" + - "total messages: " + info.FullMsg + "\n" + - "your messages: " + info.MyMsg + "\n" + - "target messages: " + info.TargetMsg + "\n-----\n"; - multiplier += info.Multiplier; + "message multiplier (You/Target): " + info.MessageMultiplier + "\n" + + "symbol multiplier (You/Target): " + info.SymbolsMultiplier + "\n" + + "total messages: " + info.FullMessageCount + "\n" + + "your messages: " + info.UserMessageCount + "\n" + + "target messages: " + info.TargetMessageCount + "\n" + + "your symbols in messages: " + info.UserSymbolsCount + "\n" + + "target symbols in messages: " + info.TargetSymbolsCount + "\n-----\n"; + multiplier += info.MessageMultiplier; } multiplier /= infos.Count; Console.ForegroundColor = ConsoleColor.Green; diff --git a/Splash.cs b/Splash.cs index 2c32c12..ab855b7 100644 --- a/Splash.cs +++ b/Splash.cs @@ -9,7 +9,7 @@ Console.WriteLine("/__ \\/\\/\\ / __\\"); Console.WriteLine(" / /\\/ \\ / / "); Console.WriteLine(" / / / /\\/\\ \\/ /___ "); - Console.WriteLine(" \\/ \\/ \\/\\____/ v1.3 ꞵeta"); + Console.WriteLine(" \\/ \\/ \\/\\____/ v1.4 ꞵeta"); Console.WriteLine("Telegram Message Counter by Lisoveliy"); } }