SnapixLP | Tim G. c214be937c Initial Commit
2025-05-19 09:16:34 +02:00

95 lines
2.5 KiB
C#

namespace DX86.Modules;
/*
* Copyright 2024 SnapixLP
*/
public class MessageSender
{
private string[] messageHistory = {};
private bool saveOnly = false;
private string logfile;
public MessageSender(string logfile)
{
this.logfile = logfile;
if (!File.Exists(logfile))
{
File.Create(logfile).Close();
Log("[MessageSender] Log file created.");
}
Log("[MessageSender] Starting Logoutput to " + logfile);
Log("[MessageSender] MessageSender initialized.");
}
private async Task WriteToFileAsync(string message)
{
try
{
using (StreamWriter writer = new StreamWriter(logfile, true))
{
await writer.WriteLineAsync(message);
}
}
catch (Exception ex)
{
Error($"Failed to write to log file: {ex.Message}");
}
}
public async void Log(string message)
{
Console.ForegroundColor = ConsoleColor.Gray;
this.Send($"[{DateTime.Now}] [INFO ] {message}");
}
public async void Warn(string message)
{
Console.ForegroundColor = ConsoleColor.Yellow;
this.Send($"[{DateTime.Now}] [WARN ] {message}");
Console.ForegroundColor = ConsoleColor.Gray;
}
public async void Error(string message)
{
Console.ForegroundColor = ConsoleColor.Red;
this.Send($"[{DateTime.Now}] [ERROR] {message}");
Console.ForegroundColor = ConsoleColor.Gray;
}
private async void Send(string message)
{
WriteToFileAsync(message);
if (!saveOnly)
{
Console.WriteLine(message);
}
messageHistory = messageHistory.Concat(new[] { message }).ToArray();
if (messageHistory.Length > 50)
{
messageHistory = messageHistory.Skip(1).ToArray();
}
}
public async void SendHistory()
{
int i = 0;
foreach (var s in messageHistory)
{
if (s.Contains("[INFO ]"))
Console.ForegroundColor = ConsoleColor.Gray;
if (s.Contains("[WARN ]"))
Console.ForegroundColor = ConsoleColor.Yellow;
if (s.Contains("[ERROR]"))
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"{s}");
Console.ForegroundColor = ConsoleColor.Gray;
}
}
public void SaveOnly(bool newValue)
{
saveOnly = newValue;
}
}