feat: Added counter for symbols

This commit is contained in:
Pavel-Savely Savianok 2025-02-11 21:13:47 +03:00
parent 1e40bbd735
commit e9db40dee9
4 changed files with 51 additions and 31 deletions

View File

@ -3,7 +3,7 @@
public static class ArgumentReader public static class ArgumentReader
{ {
public static DataRequest ReadArguments(string[] args) public static DataRequest ReadArguments(string[] args)
{ {
string? login = null; string? login = null;
string? username = null; string? username = null;
if (args.Length > 0 && args.Any(x => x == "--help")) if (args.Length > 0 && args.Any(x => x == "--help"))
@ -18,9 +18,9 @@ public static class ArgumentReader
if (args.Any(x => x == "--user")) if (args.Any(x => x == "--user"))
{ {
var userNameArgIndex = args.ToList().IndexOf("--user"); var userNameArgIndex = args.ToList().IndexOf("--user");
username = args[userNameArgIndex+1]; username = args[userNameArgIndex + 1];
} }
if (args.Any(x => x == "--login" || x == "-L")) if (args.Any(x => x == "--login" || x == "-L"))
{ {
var userNameArgIndex = args.ToList().IndexOf("--login"); var userNameArgIndex = args.ToList().IndexOf("--login");
@ -28,11 +28,16 @@ public static class ArgumentReader
{ {
userNameArgIndex = args.ToList().IndexOf("-L"); 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);
} }
} }

View File

@ -8,10 +8,13 @@ namespace TelegramMessageCounter
{ {
internal record CounterInfo internal record CounterInfo
( (
float Multiplier, float MessageMultiplier,
int TargetMsg, float SymbolsMultiplier,
int MyMsg, int UserMessageCount,
int FullMsg, int TargetMessageCount,
int UserSymbolsCount,
int TargetSymbolsCount,
int FullMessageCount,
string TargetUsername string TargetUsername
); );
} }

View File

@ -46,11 +46,11 @@ namespace TelegramMessageCounter
var res = GetInfo(user.id); var res = GetInfo(user.id);
if (res == null) if (res == null)
{ {
Console.WriteLine($"User {user.id} not found! Skipping..."); Console.WriteLine($"[WARN]User {user.id} failed to analyze! Skipping...");
continue; 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); infos.Add(res);
} }
SaveAndAddStats(infos, dataRequest.Path); SaveAndAddStats(infos, dataRequest.Path);
@ -59,8 +59,10 @@ namespace TelegramMessageCounter
static CounterInfo? GetInfo(long targetId) static CounterInfo? GetInfo(long targetId)
{ {
var dialogs = Client.Messages_GetAllDialogs().Result; var dialogs = Client.Messages_GetAllDialogs().Result;
int myCounter = 0; int userMsgCount = 0;
int targetCounter = 0; int userSymbolsCount = 0;
int targetMsgCount = 0;
int targetSymbolsCount = 0;
User? peer; User? peer;
try try
{ {
@ -71,7 +73,7 @@ namespace TelegramMessageCounter
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("[DONE]"); Console.WriteLine("[DONE]");
Console.WriteLine($"Username is: {(peer)?.username}"); Console.WriteLine($"Username is: {peer?.username}");
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -82,7 +84,7 @@ namespace TelegramMessageCounter
} }
List<Messages_MessagesBase> messagesList = []; List<Messages_MessagesBase> messagesList = [];
var messageCount = 0; var fullMsgCount = 0;
try try
{ {
var res = Client.Messages_GetHistory((InputPeer)peer).Result; var res = Client.Messages_GetHistory((InputPeer)peer).Result;
@ -102,7 +104,7 @@ namespace TelegramMessageCounter
// ignored // ignored
} }
} }
messageCount =res.Count; fullMsgCount = res.Count;
} }
catch (Exception) catch (Exception)
{ {
@ -119,9 +121,14 @@ namespace TelegramMessageCounter
{ {
if (msg.from_id != null) 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; Console.ForegroundColor = ConsoleColor.White;
return new( return new(
(float)myCounter / targetCounter, (float)userMsgCount / targetMsgCount,
targetCounter, (float)userSymbolsCount / targetSymbolsCount,
myCounter, userMsgCount,
messageCount, targetMsgCount,
userSymbolsCount,
targetSymbolsCount,
fullMsgCount,
string.IsNullOrEmpty(peer?.username ?? "") ? peer?.id.ToString() ?? "unknown" : $"@{peer?.username}"); string.IsNullOrEmpty(peer?.username ?? "") ? peer?.id.ToString() ?? "unknown" : $"@{peer?.username}");
} }
@ -141,17 +151,19 @@ namespace TelegramMessageCounter
{ {
Console.ForegroundColor = ConsoleColor.Yellow; Console.ForegroundColor = ConsoleColor.Yellow;
Console.Write("Saving results..."); Console.Write("Saving results...");
File.Create("results.txt");
string fileData = ""; string fileData = "";
float multiplier = 0; float multiplier = 0;
foreach (CounterInfo info in infos) foreach (CounterInfo info in infos)
{ {
fileData += "username: " + info.TargetUsername + "\n" + fileData += "username: " + info.TargetUsername + "\n" +
"multiplier: " + info.Multiplier + "\n" + "message multiplier (You/Target): " + info.MessageMultiplier + "\n" +
"total messages: " + info.FullMsg + "\n" + "symbol multiplier (You/Target): " + info.SymbolsMultiplier + "\n" +
"your messages: " + info.MyMsg + "\n" + "total messages: " + info.FullMessageCount + "\n" +
"target messages: " + info.TargetMsg + "\n-----\n"; "your messages: " + info.UserMessageCount + "\n" +
multiplier += info.Multiplier; "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; multiplier /= infos.Count;
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;

View File

@ -9,7 +9,7 @@
Console.WriteLine("/__ \\/\\/\\ / __\\"); Console.WriteLine("/__ \\/\\/\\ / __\\");
Console.WriteLine(" / /\\/ \\ / / "); Console.WriteLine(" / /\\/ \\ / / ");
Console.WriteLine(" / / / /\\/\\ \\/ /___ "); Console.WriteLine(" / / / /\\/\\ \\/ /___ ");
Console.WriteLine(" \\/ \\/ \\/\\____/ v1.3 ꞵeta"); Console.WriteLine(" \\/ \\/ \\/\\____/ v1.4 ꞵeta");
Console.WriteLine("Telegram Message Counter by Lisoveliy"); Console.WriteLine("Telegram Message Counter by Lisoveliy");
} }
} }