Files
SethDiscordBot/DiscordBotUI/Windows/HomePage.axaml.cs

70 lines
1.9 KiB
C#

using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using DiscordBotUI.Bot;
using DiscordBotUI.Windows;
using PluginManager;
using PluginManager.Others;
using PluginManager.Others.Logger;
namespace DiscordBotUI;
public partial class HomePage : Window
{
private readonly DiscordBot _DiscordBot;
public HomePage()
{
InitializeComponent();
_DiscordBot = new DiscordBot(null!);
Loaded += HomePage_Loaded;
}
private async void HomePage_Loaded(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
await Config.Initialize();
while(string.IsNullOrWhiteSpace(Config.AppSettings["token"]) || string.IsNullOrWhiteSpace(Config.AppSettings["prefix"]))
{
await new SettingsPage().ShowDialog(this);
}
textBoxToken.Text = Config.AppSettings["token"];
textBoxPrefix.Text = Config.AppSettings["prefix"];
textBoxServerId.Text = Config.AppSettings["ServerID"];
}
private void SetTextToTB(Log logMessage)
{
logTextBlock.Text += $"[{logMessage.Type}] [{logMessage.ThrowTime.ToShortTimeString()}] {logMessage.Message}\n";
}
private async void ButtonStartBotClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
Config.Logger.OnLog += async (sender, logMessage) =>
{
await Dispatcher.UIThread.InvokeAsync(() => SetTextToTB(logMessage), DispatcherPriority.Background);
};
await _DiscordBot.InitializeBot();
await _DiscordBot.LoadPlugins();
}
private async void SettingsMenuClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
await new SettingsPage().ShowDialog(this);
}
private void PluginsMenuClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
{
new PluginsPage().Show();
}
}