diff --git a/DiscordBot/DiscordBot.csproj b/DiscordBot/DiscordBot.csproj
index 8fbd91a..e4b4394 100644
--- a/DiscordBot/DiscordBot.csproj
+++ b/DiscordBot/DiscordBot.csproj
@@ -8,7 +8,7 @@
False
True
- 1.0.1.0
+ 1.0.1.1
diff --git a/PluginManager/Items/ConsoleCommandsHandler.cs b/PluginManager/Items/ConsoleCommandsHandler.cs
index a99e935..36589e0 100644
--- a/PluginManager/Items/ConsoleCommandsHandler.cs
+++ b/PluginManager/Items/ConsoleCommandsHandler.cs
@@ -9,7 +9,6 @@ using System.Threading.Tasks;
using Discord.WebSocket;
-using PluginManager.Interfaces;
using PluginManager.Loaders;
using PluginManager.Online;
using PluginManager.Others;
@@ -259,6 +258,8 @@ public class ConsoleCommandsHandler
await Config.Plugins.SetVersionAsync(name, ver);
isDownloading = false;
+
+ await ExecuteCommad("localload " + name);
}
);
@@ -307,15 +308,10 @@ public class ConsoleCommandsHandler
{
if (client is null)
return;
- var bar = new Utilities.ProgressBar(ProgressBarType.NO_END);
- bar.Start();
- bar.Stop("Saved config !");
- Settings.Variables.outputStream.WriteLine();
Settings.sqlDatabase.Stop();
await client.StopAsync();
await client.DisposeAsync();
-
await Task.Delay(1000);
Environment.Exit(0);
}
@@ -335,19 +331,23 @@ public class ConsoleCommandsHandler
await s.CopyToAsync(str);
var asmb = Assembly.Load(str.ToArray());
- var types = asmb.GetTypes();
- foreach (var type in types)
- if (type.IsClass && typeof(DBEvent).IsAssignableFrom(type))
- {
- var instance = (DBEvent)Activator.CreateInstance(type);
- instance.Start(this.client);
- Settings.Variables.outputStream.WriteLine($"[EVENT] Loaded external {type.FullName}!");
- }
- else if (type.IsClass && typeof(DBCommand).IsAssignableFrom(type))
- {
- var instance = (DBCommand)Activator.CreateInstance(type);
- Settings.Variables.outputStream.WriteLine($"[CMD] Instance: {type.FullName} loaded !");
- }
+ await PluginLoader.LoadPluginFromAssembly(asmb, this.client);
+ }
+ catch (Exception ex)
+ {
+ Settings.Variables.outputStream.WriteLine(ex.Message);
+ }
+ });
+
+ AddCommand("localload", "Load a local command", "local [pluginName]", async args =>
+ {
+ if (args.Length <= 1) return;
+ try
+ {
+ var pName = string.Join(' ', args, 1, args.Length - 1);
+ var asmb = Assembly.LoadFile(Path.GetFullPath("./Data/Plugins/" + pName + ".dll"));
+
+ await PluginLoader.LoadPluginFromAssembly(asmb, this.client);
}
catch (Exception ex)
{
@@ -422,6 +422,7 @@ public class ConsoleCommandsHandler
AddCommand("reload", "Reload the bot with all plugins", () =>
{
+
if (Functions.GetOperatingSystem() == OperatingSystem.WINDOWS)
{
Process.Start("DiscordBot.exe", "lp");
diff --git a/PluginManager/Loaders/PluginLoader.cs b/PluginManager/Loaders/PluginLoader.cs
index 934788d..98ea502 100644
--- a/PluginManager/Loaders/PluginLoader.cs
+++ b/PluginManager/Loaders/PluginLoader.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.Reflection;
using System.Threading.Tasks;
using Discord;
@@ -108,7 +109,7 @@ public class PluginLoader
private async void Loader_PluginLoaded(LoaderArgs args)
{
- // Settings.Variables.outputStream.WriteLine(args.TypeName);
+
switch (args.TypeName)
{
case "DBCommand":
@@ -139,7 +140,7 @@ public class PluginLoader
builder.WithDescription(slash.Description);
builder.WithDMPermission(slash.canUseDM);
builder.Options = slash.Options;
- //Settings.Variables.outputStream.WriteLine("Loaded " + slash.Name);
+
onSLSHLoad?.Invoke(((DBSlashCommand)args.Plugin!).Name, args.TypeName, args.IsLoaded, args.Exception);
await _client.CreateGlobalApplicationCommandAsync(builder.Build());
@@ -148,4 +149,36 @@ public class PluginLoader
break;
}
}
+ public static async Task LoadPluginFromAssembly(Assembly asmb, DiscordSocketClient client)
+ {
+ var types = asmb.GetTypes();
+ foreach (var type in types)
+ if (type.IsClass && typeof(DBEvent).IsAssignableFrom(type))
+ {
+ var instance = (DBEvent)Activator.CreateInstance(type);
+ instance.Start(client);
+ PluginLoader.Events.Add(instance);
+ Settings.Variables.outputStream.WriteLine($"[EVENT] Loaded external {type.FullName}!");
+ }
+ else if (type.IsClass && typeof(DBCommand).IsAssignableFrom(type))
+ {
+ var instance = (DBCommand)Activator.CreateInstance(type);
+ PluginLoader.Commands.Add(instance);
+ Settings.Variables.outputStream.WriteLine($"[CMD] Instance: {type.FullName} loaded !");
+ }
+ else if (type.IsClass && typeof(DBSlashCommand).IsAssignableFrom(type))
+ {
+ var instance = (DBSlashCommand)Activator.CreateInstance(type);
+ SlashCommandBuilder builder = new SlashCommandBuilder();
+ builder.WithName(instance.Name);
+ builder.WithDescription(instance.Description);
+ builder.WithDMPermission(instance.canUseDM);
+ builder.Options = instance.Options;
+
+ await client.CreateGlobalApplicationCommandAsync(builder.Build());
+ PluginLoader.SlashCommands.Add(instance);
+ Settings.Variables.outputStream.WriteLine($"[SLASH] Instance: {type.FullName} loaded !");
+
+ }
+ }
}
\ No newline at end of file
diff --git a/PluginManager/Others/Channels.cs b/PluginManager/Others/Channels.cs
deleted file mode 100644
index ca8a270..0000000
--- a/PluginManager/Others/Channels.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System.Threading.Tasks;
-using Discord;
-
-namespace PluginManager.Others;
-
-///
-/// A class that handles the sending of messages to the user.
-///
-public static class ChannelManagement
-{
- ///
- /// Get the text channel by name from server
- ///
- /// The server
- /// The channel name
- ///
- ///
- ///
- public static IGuildChannel GetTextChannel(this IGuild server, string name)
- {
- return server.GetTextChannel(name);
- }
-
- ///
- /// Get the voice channel by name from server
- ///
- /// The server
- /// The channel name
- ///
- ///
- ///
- public static IGuildChannel GetVoiceChannel(this IGuild server, string name)
- {
- return server.GetVoiceChannel(name);
- }
-
- ///
- /// Get the DM channel between and
- ///
- ///
- ///
- ///
- ///
- public static async Task GetDMChannel(IGuildUser user)
- {
- return await user.CreateDMChannelAsync();
- }
-
- ///
- /// Get the channel where the message was sent
- ///
- /// The message
- ///
- ///
- ///
- public static IChannel GetChannel(IMessage message)
- {
- return message.Channel;
- }
-}
\ No newline at end of file
diff --git a/PluginManager/Others/Functions.cs b/PluginManager/Others/Functions.cs
index 4e2d89f..eb29510 100644
--- a/PluginManager/Others/Functions.cs
+++ b/PluginManager/Others/Functions.cs
@@ -41,11 +41,6 @@ public static class Functions
///
public static readonly string pakFolder = @"./Data/PAKS/";
- ///
- /// Beta testing folder
- ///
- public static readonly string betaFolder = @"./Data/BetaTest/";
-
///
/// Read data from a file that is inside an archive (ZIP format)