Fixed duplicate actions

This commit is contained in:
2024-06-14 17:09:02 +03:00
parent e5e156f371
commit 1881102fb7
4 changed files with 23 additions and 5 deletions

View File

@@ -55,7 +55,7 @@ public class Program
private static async Task PrepareConsole() private static async Task PrepareConsole()
{ {
AnsiConsole.MarkupLine($"[yellow]Running on version: {Application.CurrentApplication.ApplicationEnvironmentVariables["Version"]}[/]"); AnsiConsole.MarkupLine($"[yellow]Running on version: {Assembly.GetExecutingAssembly().GetName().Version}[/]");
AnsiConsole.MarkupLine("[yellow]Git SethBot: https://github.com/andreitdr/SethDiscordBot [/]"); AnsiConsole.MarkupLine("[yellow]Git SethBot: https://github.com/andreitdr/SethDiscordBot [/]");
AnsiConsole.MarkupLine("[yellow]Git Plugins: https://github.com/andreitdr/SethPlugins [/]"); AnsiConsole.MarkupLine("[yellow]Git Plugins: https://github.com/andreitdr/SethPlugins [/]");
@@ -80,7 +80,6 @@ public class Program
private static async Task LoadComponents(string[] args) private static async Task LoadComponents(string[] args)
{ {
await Application.CreateApplication(); await Application.CreateApplication();
Application.CurrentApplication.ApplicationEnvironmentVariables["Version"] = Assembly.GetExecutingAssembly().GetName().Version.ToString();
AppUpdater updater = new(); AppUpdater updater = new();
var update = await updater.CheckForUpdates(); var update = await updater.CheckForUpdates();

View File

@@ -6,14 +6,16 @@ using DiscordBotCore.Plugin;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace DiscordBotCore namespace DiscordBotCore
{ {
public class Application /// <summary>
/// The main Application and its components
/// </summary>
public sealed class Application
{ {
public static Application CurrentApplication { get; private set; } = null!; public static Application CurrentApplication { get; private set; } = null!;

View File

@@ -38,6 +38,18 @@ public class PluginLoader
public async Task LoadPlugins() public async Task LoadPlugins()
{ {
if (_Client == null)
{
Application.CurrentApplication.Logger.Log("Discord client is null", this, LogType.ERROR);
return;
}
Commands.Clear();
Events.Clear();
SlashCommands.Clear();
Actions.Clear();
Application.CurrentApplication.Logger.Log("Loading plugins...", this); Application.CurrentApplication.Logger.Log("Loading plugins...", this);
var loader = new Loader(); var loader = new Loader();

View File

@@ -13,12 +13,17 @@ public class InternalActionManager
public async Task Initialize() public async Task Initialize()
{ {
Actions.Clear(); Actions.Clear();
PluginLoader.Actions.ForEach(action => PluginLoader.Actions.ForEach(action =>
{ {
if (action.RunType == InternalActionRunType.ON_CALL || action.RunType == InternalActionRunType.BOTH) if (action.RunType == InternalActionRunType.ON_CALL || action.RunType == InternalActionRunType.BOTH)
{ {
if (this.Actions.ContainsKey(action.ActionName)) if (this.Actions.ContainsKey(action.ActionName))
return; // ingore duplicates {
// This should never happen. If it does, log it and return
Application.CurrentApplication.Logger.Log($"Action {action.ActionName} already exists", this, LogType.ERROR);
return;
}
this.Actions.Add(action.ActionName, action); this.Actions.Add(action.ActionName, action);
} }