feat: Added argument 'path' for parse, added "--help" parse, edited README.md

This commit is contained in:
Savely Savianok
2025-02-05 14:48:24 +03:00
parent 47b3166b94
commit 189678fea6
4 changed files with 52 additions and 12 deletions

View File

@@ -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 <login (phone number)> <path>" +
"\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<CounterInfo> infos)
static void SaveAndAddStats(List<CounterInfo> 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;
}
}