Discord Bot web UI first preview

This commit is contained in:
2023-04-08 13:18:25 +03:00
parent 0a2dff0c6d
commit 810a527cc1
86 changed files with 74906 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
using DiscordBotUI.DiscordBot;
using DiscordBotUI.Models.Bot;
using Microsoft.AspNetCore.Mvc;
using PluginManager;
namespace DiscordBotUI.Controllers
{
public class BotController : Controller
{
public async Task<IActionResult> Start()
{
if (!Config.Data.ContainsKey("ServerID") || !Config.Data.ContainsKey("token") ||
Config.Data["token"] == null ||
(Config.Data["token"]?.Length != 70 && Config.Data["token"]?.Length != 59) ||
!Config.Data.ContainsKey("prefix") || Config.Data["prefix"] == null ||
Config.Data["prefix"]?.Length != 1)
return RedirectToAction("Settings", "Home");
if (DiscordBot.DiscordBot.Instance is null)
{
new DiscordBot.DiscordBot(Config.Data["token"], Config.Data["prefix"]);
await DiscordBot.DiscordBot.Instance.Start();
await DiscordBot.DiscordBot.Instance.LoadPlugins();
}
BotModel model = new BotModel();
model.StartStatus = DiscordBot.DiscordBot.Instance._boot.client.ConnectionState.ToString();
model.BotName = DiscordBot.DiscordBot.Instance._boot.client.CurrentUser.Username;
model.PluginsLoaded = PluginManager.Loaders.PluginLoader.PluginsLoaded;
model.SlashCommands = PluginManager.Loaders.PluginLoader.SlashCommands;
model.Events = PluginManager.Loaders.PluginLoader.Events;
model.Commands = PluginManager.Loaders.PluginLoader.Commands;
return View(model);
}
}
}

View File

@@ -0,0 +1,63 @@
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using DiscordBotUI.Models;
using DiscordBotUI.Models.Home;
using Discord.WebSocket;
using PluginManager;
namespace DiscordBotUI.Controllers;
public class HomeController : Controller
{
public IActionResult Index()
{
if (!Config.Data.ContainsKey("ServerID") || !Config.Data.ContainsKey("token") ||
Config.Data["token"] == null ||
(Config.Data["token"]?.Length != 70 && Config.Data["token"]?.Length != 59) ||
!Config.Data.ContainsKey("prefix") || Config.Data["prefix"] == null ||
Config.Data["prefix"]?.Length != 1)
return RedirectToAction("Settings");
IndexModel model = new IndexModel();
model.ServerID = Config.Data["ServerID"];
model.BotPrefix = Config.Data["prefix"];
return View(model);
}
public IActionResult Settings()
{
SettingsModel model = new SettingsModel();
model.BotToken = Config.Data["token"];
model.BotPrefix = Config.Data["prefix"];
model.ServerID = Config.Data["ServerID"];
return View(model);
}
[HttpPost]
public async Task<IActionResult> Settings(SettingsModel model)
{
if (ModelState.IsValid)
{
Config.Data["token"] = model.BotToken;
Config.Data["prefix"] = model.BotPrefix;
if (model.ServerID is not null)
Config.Data["ServerID"] = model.ServerID;
else Config.Data["ServerID"] = null;
Config.Data.Save();
return RedirectToAction("Index");
}
return View(model);
}
public IActionResult Privacy()
{
return View();
}
}