diff --git a/.idea/.idea.SethDiscordBot/.idea/.name b/.idea/.idea.SethDiscordBot/.idea/.name
new file mode 100644
index 0000000..ac07819
--- /dev/null
+++ b/.idea/.idea.SethDiscordBot/.idea/.name
@@ -0,0 +1 @@
+SethDiscordBot
\ No newline at end of file
diff --git a/.idea/.idea.SethDiscordBot/.idea/avalonia.xml b/.idea/.idea.SethDiscordBot/.idea/avalonia.xml
new file mode 100644
index 0000000..4b1d37a
--- /dev/null
+++ b/.idea/.idea.SethDiscordBot/.idea/avalonia.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.SethDiscordBot/.idea/indexLayout.xml b/.idea/.idea.SethDiscordBot/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.SethDiscordBot/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.SethDiscordBot/.idea/vcs.xml b/.idea/.idea.SethDiscordBot/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/.idea.SethDiscordBot/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.SethDiscordBot/.idea/workspace.xml b/.idea/.idea.SethDiscordBot/.idea/workspace.xml
index 39f0d0c..1fcc31c 100644
--- a/.idea/.idea.SethDiscordBot/.idea/workspace.xml
+++ b/.idea/.idea.SethDiscordBot/.idea/workspace.xml
@@ -1,43 +1,18 @@
- DiscordBot/DiscordBot.csproj
+ DiscordBot/DiscordBot.csproj
DiscordBot/DiscordBot.csproj
+ Updater/Updater.csproj
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -52,26 +27,48 @@
- {
+ "keyToString": {
+ "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "preferences.pluginManager",
+ "vue.rearranger.settings.migration": "true"
}
-}]]>
-
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -82,6 +79,8 @@
1658854902538
+
+
diff --git a/BUILDS/net6.0/CMD_Utils.dll b/BUILDS/net6.0/CMD_Utils.dll
index d0b729a..f8e8987 100644
Binary files a/BUILDS/net6.0/CMD_Utils.dll and b/BUILDS/net6.0/CMD_Utils.dll differ
diff --git a/BUILDS/net6.0/Music Commands.dll b/BUILDS/net6.0/Music Commands.dll
index cb4a5fc..d2d11e7 100644
Binary files a/BUILDS/net6.0/Music Commands.dll and b/BUILDS/net6.0/Music Commands.dll differ
diff --git a/BUILDS/net6.0/PluginManager.dll b/BUILDS/net6.0/PluginManager.dll
index 358c730..3fb7ae6 100644
Binary files a/BUILDS/net6.0/PluginManager.dll and b/BUILDS/net6.0/PluginManager.dll differ
diff --git a/BUILDS/net6.0/Plugins/Commands/CMD_LevelingSystem.dll b/BUILDS/net6.0/Plugins/Commands/CMD_LevelingSystem.dll
index 711b0d5..2fd085d 100644
Binary files a/BUILDS/net6.0/Plugins/Commands/CMD_LevelingSystem.dll and b/BUILDS/net6.0/Plugins/Commands/CMD_LevelingSystem.dll differ
diff --git a/BUILDS/net6.0/Plugins/Commands/CMD_Utils.dll b/BUILDS/net6.0/Plugins/Commands/CMD_Utils.dll
index d0b729a..f8e8987 100644
Binary files a/BUILDS/net6.0/Plugins/Commands/CMD_Utils.dll and b/BUILDS/net6.0/Plugins/Commands/CMD_Utils.dll differ
diff --git a/BUILDS/net6.0/Plugins/Commands/Music Commands.dll b/BUILDS/net6.0/Plugins/Commands/Music Commands.dll
index 2341731..d2d11e7 100644
Binary files a/BUILDS/net6.0/Plugins/Commands/Music Commands.dll and b/BUILDS/net6.0/Plugins/Commands/Music Commands.dll differ
diff --git a/BUILDS/net6.0/Plugins/Commands/Roles.dll b/BUILDS/net6.0/Plugins/Commands/Roles.dll
index d278f8c..dae9a4f 100644
Binary files a/BUILDS/net6.0/Plugins/Commands/Roles.dll and b/BUILDS/net6.0/Plugins/Commands/Roles.dll differ
diff --git a/BUILDS/net6.0/Plugins/Events/EVE_LevelingSystem.dll b/BUILDS/net6.0/Plugins/Events/EVE_LevelingSystem.dll
index 8d1dbfc..24c1a42 100644
Binary files a/BUILDS/net6.0/Plugins/Events/EVE_LevelingSystem.dll and b/BUILDS/net6.0/Plugins/Events/EVE_LevelingSystem.dll differ
diff --git a/CMD_LevelingSystem/Level.cs b/CMD_LevelingSystem/Level.cs
index ba66498..1fd129a 100644
--- a/CMD_LevelingSystem/Level.cs
+++ b/CMD_LevelingSystem/Level.cs
@@ -1,6 +1,7 @@
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager;
using PluginManager.Interfaces;
using PluginManager.Others;
@@ -17,21 +18,17 @@ internal class Level : DBCommand
public string Usage => "level";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
- if (!File.Exists(Config.GetValue("LevelingSystemPath") + $"/{message.Author.Id}.dat"))
+ if (!File.Exists(Config.GetValue("LevelingSystemPath") + $"/{context.Message.Author.Id}.dat"))
{
await context.Channel.SendMessageAsync("You are now unranked !");
return;
}
- var user = await Functions.ConvertFromJson(Config.GetValue("LevelingSystemPath") + $"/{message.Author.Id}.dat");
+ var user = await Functions.ConvertFromJson(Config.GetValue("LevelingSystemPath") + $"/{context.Message.Author.Id}.dat");
if (user == null)
{
await context.Channel.SendMessageAsync("You are now unranked !");
@@ -39,7 +36,7 @@ internal class Level : DBCommand
}
var builder = new EmbedBuilder();
- var r = new Random();
+ var r = new Random();
builder.WithColor(r.Next(256), r.Next(256), r.Next(256));
builder.AddField("Current Level", user.CurrentLevel, true)
.AddField("Current EXP", user.CurrentEXP, true)
diff --git a/CMD_Utils/Echo.cs b/CMD_Utils/Echo.cs
deleted file mode 100644
index 68e5ab2..0000000
--- a/CMD_Utils/Echo.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Discord.Commands;
-using Discord.WebSocket;
-using PluginManager.Interfaces;
-using System.Collections.Generic;
-
-internal class Echo : DBCommand
-{
- public string Command => "echo";
-
- public List Aliases => null;
-
- public string Description => "Replay with the same message";
-
- public string Usage => "echo [message]";
-
- public bool canUseDM => true;
- public bool canUseServer => true;
-
- public bool requireAdmin => false;
-
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
- {
- var m = message.Content.Substring(6);
- await message.Channel.SendMessageAsync(m);
- }
-}
diff --git a/CMD_Utils/FlipCoin.cs b/CMD_Utils/FlipCoin.cs
index 2ec361e..77c63bf 100644
--- a/CMD_Utils/FlipCoin.cs
+++ b/CMD_Utils/FlipCoin.cs
@@ -1,6 +1,8 @@
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
+
using System.Collections.Generic;
namespace CMD_Utils;
@@ -15,19 +17,16 @@ internal class FlipCoin : DBCommand
public string Usage => "flip";
- public bool canUseDM => true;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteDM(SocketCommandContext context) => ExecuteServer(context);
+ public async void ExecuteServer(SocketCommandContext context)
{
var random = new System.Random();
- var r = random.Next(1, 3);
+ var r = random.Next(1, 3);
if (r == 1)
- await message.Channel.SendMessageAsync("Heads");
+ await context.Message.Channel.SendMessageAsync("Heads");
else
- await message.Channel.SendMessageAsync("Tails");
+ await context.Message.Channel.SendMessageAsync("Tails");
}
}
diff --git a/CMD_Utils/Poll.cs b/CMD_Utils/Poll.cs
index 3093e8b..941fc1a 100644
--- a/CMD_Utils/Poll.cs
+++ b/CMD_Utils/Poll.cs
@@ -1,7 +1,9 @@
using System.Collections.Generic;
+
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
using PluginManager.Others;
@@ -17,17 +19,12 @@ public class Poll : DBCommand
public string Usage => "poll [This-is-question] [This-is-answer-1] [This-is-answer-2] ... ";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => true;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
- if (isDM) return;
- var question = message.Content.Split(' ')[1].Replace('-', ' ');
- var answers = Functions.MergeStrings(message.Content.Split(' '), 2).Split(' ');
+ var question = context.Message.Content.Split(' ')[1].Replace('-', ' ');
+ var answers = Functions.MergeStrings(context.Message.Content.Split(' '), 2).Split(' ');
var embedBuilder = new EmbedBuilder();
embedBuilder.Title = question;
var len = answers.Length;
diff --git a/CMD_Utils/Random.cs b/CMD_Utils/Random.cs
index b69fc04..9fba292 100644
--- a/CMD_Utils/Random.cs
+++ b/CMD_Utils/Random.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
public class Random : DBCommand
@@ -12,31 +14,30 @@ public class Random : DBCommand
public string Description => "random number between number1 and number2";
public string Usage => "random [number1] [number2]";
-
- public bool canUseDM => true;
- public bool canUseServer => true;
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteDM(SocketCommandContext context) => ExecuteServer(context);
+
+ public async void ExecuteServer(SocketCommandContext context)
{
try
{
- var msg = message.Content;
- var a = int.Parse(msg.Split(' ')[1]);
- var b = int.Parse(msg.Split(' ')[2]);
+ var msg = context.Message.Content;
+ var a = int.Parse(msg.Split(' ')[1]);
+ var b = int.Parse(msg.Split(' ')[2]);
if (a > b)
{
var temp = a;
- a = b;
- b = temp;
+ a = b;
+ b = temp;
}
- await message.Channel.SendMessageAsync("Your random generated number is " + new System.Random().Next(a, b));
+ await context.Message.Channel.SendMessageAsync("Your random generated number is " + new System.Random().Next(a, b));
}
catch
{
- await message.Channel.SendMessageAsync("Invalid numbers or no numbers:\nUsage: " + Usage);
+ await context.Message.Channel.SendMessageAsync("Invalid numbers or no numbers:\nUsage: " + Usage);
}
}
}
diff --git a/DiscordBot/Discord/Commands/Help.cs b/DiscordBot/Discord/Commands/Help.cs
index 570dd05..dbe8527 100644
--- a/DiscordBot/Discord/Commands/Help.cs
+++ b/DiscordBot/Discord/Commands/Help.cs
@@ -1,8 +1,10 @@
using System.Collections.Generic;
using System.Linq;
+
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
using PluginManager.Loaders;
using PluginManager.Others;
@@ -31,16 +33,6 @@ internal class Help : DBCommand
///
public string Usage => "help ";
- ///
- /// Check if the command can be used />
- ///
- public bool canUseDM => true;
-
- ///
- /// Check if the command can be used in a server
- ///
- public bool canUseServer => true;
-
///
/// Check if the command require administrator to be executed
///
@@ -53,9 +45,9 @@ internal class Help : DBCommand
/// The command message
/// The discord bot client
/// True if the message was sent from a DM channel, false otherwise
- public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public void ExecuteServer(SocketCommandContext context)
{
- var args = Functions.GetArguments(message);
+ var args = Functions.GetArguments(context.Message);
if (args.Count != 0)
{
foreach (var item in args)
@@ -72,30 +64,26 @@ internal class Help : DBCommand
var embedBuilder = new EmbedBuilder();
- var adminCommands = "";
+ var adminCommands = "";
var normalCommands = "";
- var DMCommands = "";
foreach (var cmd in PluginLoader.Commands!)
{
- if (cmd.canUseDM)
- DMCommands += cmd.Command + " ";
if (cmd.requireAdmin)
adminCommands += cmd.Command + " ";
- if (cmd.canUseServer)
+ else
normalCommands += cmd.Command + " ";
}
embedBuilder.AddField("Admin Commands", adminCommands);
embedBuilder.AddField("Normal Commands", normalCommands);
- embedBuilder.AddField("DM Commands", DMCommands);
context.Channel.SendMessageAsync(embed: embedBuilder.Build());
}
private EmbedBuilder GenerateHelpCommand(string command)
{
var embedBuilder = new EmbedBuilder();
- var cmd = PluginLoader.Commands!.Find(p => p.Command == command || (p.Aliases is not null && p.Aliases.Contains(command)));
+ var cmd = PluginLoader.Commands!.Find(p => p.Command == command || (p.Aliases is not null && p.Aliases.Contains(command)));
if (cmd == null) return null;
embedBuilder.AddField("Usage", cmd.Usage);
diff --git a/DiscordBot/Discord/Commands/Restart.cs b/DiscordBot/Discord/Commands/Restart.cs
index d9a7019..3d8d1aa 100644
--- a/DiscordBot/Discord/Commands/Restart.cs
+++ b/DiscordBot/Discord/Commands/Restart.cs
@@ -30,33 +30,19 @@ internal class Restart : DBCommand
///
public string Usage => "restart [-p | -c | -args | -cmd] ";
- ///
- /// Check if the command can be used />
- ///
- public bool canUseDM => false;
-
- ///
- /// Check if the command can be used in a server
- ///
- public bool canUseServer => true;
-
///
/// Check if the command require administrator to be executed
///
- public bool requireAdmin => false;
+ public bool requireAdmin => true;
///
/// The main body of the command
///
/// The command context
- /// The command message
- /// The discord bot client
- /// True if the message was sent from a DM channel, false otherwise
- public async void Execute(DiscordLibCommands.SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(DiscordLibCommands.SocketCommandContext context)
{
- if (!(message.Author as SocketGuildUser).hasPermission(DiscordLib.GuildPermission.Administrator)) return;
- var args = Functions.GetArguments(message);
- var OS = Functions.GetOperatingSystem();
+ var args = Functions.GetArguments(context.Message);
+ var OS = Functions.GetOperatingSystem();
if (args.Count == 0)
{
switch (OS)
diff --git a/DiscordBot/Discord/Commands/Settings.cs b/DiscordBot/Discord/Commands/Settings.cs
index 866a91f..c034702 100644
--- a/DiscordBot/Discord/Commands/Settings.cs
+++ b/DiscordBot/Discord/Commands/Settings.cs
@@ -1,8 +1,10 @@
using System;
using System.Collections.Generic;
+
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager;
using PluginManager.Interfaces;
@@ -27,16 +29,6 @@ internal class Settings : DBCommand
///
public string Usage => "set [keyword] [new Value]";
- ///
- /// Check if the command can be used />
- ///
- public bool canUseDM => true;
-
- ///
- /// Check if the command can be used in a server
- ///
- public bool canUseServer => true;
-
///
/// Check if the command require administrator to be executed
///
@@ -46,16 +38,13 @@ internal class Settings : DBCommand
/// The main body of the command
///
/// The command context
- /// The command message
- /// The discord bot client
- /// True if the message was sent from a DM channel, false otherwise
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void Execute(SocketCommandContext context)
{
- var channel = message.Channel;
+ var channel = context.Message.Channel;
try
{
- var content = message.Content;
- var data = content.Split(' ');
+ var content = context.Message.Content;
+ var data = content.Split(' ');
var keyword = data[1];
if (keyword.ToLower() == "help")
{
diff --git a/DiscordBot/Discord/Core/Boot.cs b/DiscordBot/Discord/Core/Boot.cs
index e32a198..32d82b0 100644
--- a/DiscordBot/Discord/Core/Boot.cs
+++ b/DiscordBot/Discord/Core/Boot.cs
@@ -1,10 +1,13 @@
using System;
using System.Threading;
using System.Threading.Tasks;
+
using Discord;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager;
+
using static PluginManager.Others.Functions;
namespace DiscordBot.Discord.Core;
@@ -44,7 +47,7 @@ internal class Boot
public Boot(string botToken, string botPrefix)
{
this.botPrefix = botPrefix;
- this.botToken = botToken;
+ this.botToken = botToken;
}
@@ -62,7 +65,7 @@ internal class Boot
{
DiscordSocketConfig config = new DiscordSocketConfig { AlwaysDownloadUsers = true };
- client = new DiscordSocketClient(config);
+ client = new DiscordSocketClient(config);
service = new CommandService();
CommonTasks();
@@ -81,9 +84,9 @@ internal class Boot
{
if (client == null) return;
client.LoggedOut += Client_LoggedOut;
- client.Log += Log;
- client.LoggedIn += LoggedIn;
- client.Ready += Ready;
+ client.Log += Log;
+ client.LoggedIn += LoggedIn;
+ client.Ready += Ready;
}
private Task Client_LoggedOut()
@@ -96,7 +99,7 @@ internal class Boot
private Task Ready()
{
Console.Title = "ONLINE";
- isReady = true;
+ isReady = true;
return Task.CompletedTask;
}
@@ -138,4 +141,5 @@ internal class Boot
return Task.CompletedTask;
}
+
}
diff --git a/DiscordBot/Discord/Core/CommandHandler.cs b/DiscordBot/Discord/Core/CommandHandler.cs
index c89d84b..3ba47c1 100644
--- a/DiscordBot/Discord/Core/CommandHandler.cs
+++ b/DiscordBot/Discord/Core/CommandHandler.cs
@@ -1,8 +1,10 @@
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Loaders;
using PluginManager.Others;
using PluginManager.Others.Permissions;
@@ -11,9 +13,9 @@ namespace DiscordBot.Discord.Core;
internal class CommandHandler
{
- private readonly string botPrefix;
+ private readonly string botPrefix;
private readonly DiscordSocketClient client;
- private readonly CommandService commandService;
+ private readonly CommandService commandService;
///
/// Command handler constructor
@@ -23,9 +25,9 @@ internal class CommandHandler
/// The prefix to watch for
public CommandHandler(DiscordSocketClient client, CommandService commandService, string botPrefix)
{
- this.client = client;
+ this.client = client;
this.commandService = commandService;
- this.botPrefix = botPrefix;
+ this.botPrefix = botPrefix;
}
///
@@ -75,57 +77,19 @@ internal class CommandHandler
var plugin = PluginLoader.Commands!.Where(p => p.Command == message.Content.Split(' ')[0].Substring(botPrefix.Length) || (p.Aliases is not null && p.Aliases.Contains(message.Content.Split(' ')[0].Substring(botPrefix.Length)))).FirstOrDefault();
+ if (plugin is null) throw new System.Exception("Failed to run command. !");
- if (plugin != null)
- {
- if (message.Channel == await message.Author.CreateDMChannelAsync())
- {
- if (plugin.canUseDM)
- {
- if (plugin.requireAdmin)
- {
- if (message.Author.isAdmin())
- {
- plugin.Execute(context, message, client, true);
- Functions.WriteLogFile($"[{message.Author.Id}] Executed command (DM) : " + plugin.Command);
- return;
- }
+ if (plugin.requireAdmin && !context.Message.Author.isAdmin())
+ return;
- await message.Channel.SendMessageAsync("This command is for administrators only !");
- return;
- }
+ if (context.Channel is SocketDMChannel)
+ plugin.ExecuteDM(context);
+ else plugin.ExecuteServer(context);
- plugin.Execute(context, message, client, true);
- Functions.WriteLogFile($"[{message.Author.Id}] Executed command (DM) : " + plugin.Command);
- return;
- }
-
- await message.Channel.SendMessageAsync("This command is not for DMs");
- return;
- }
-
- if (plugin.canUseServer)
- {
- if (plugin.requireAdmin)
- {
- if (message.Author.isAdmin())
- {
- plugin.Execute(context, message, client, false);
- Functions.WriteLogFile($"[{message.Author.Id}] Executed command : " + plugin.Command);
- return;
- }
-
- await message.Channel.SendMessageAsync("This command is for administrators only !");
- return;
- }
-
- plugin.Execute(context, message, client, false);
- Functions.WriteLogFile($"[{message.Author.Id}] Executed command : " + plugin.Command);
- }
- }
}
- catch
+ catch (System.Exception ex)
{
+ ex.WriteErrFile();
}
}
}
diff --git a/DiscordBot/DiscordBot.csproj b/DiscordBot/DiscordBot.csproj
index a0ad0e1..91c42bb 100644
--- a/DiscordBot/DiscordBot.csproj
+++ b/DiscordBot/DiscordBot.csproj
@@ -8,7 +8,7 @@
False
True
- 1.0.0.10
+ 1.0.0.11
diff --git a/FreeGamesModule/Commands.cs b/FreeGamesModule/Commands.cs
new file mode 100644
index 0000000..3382125
--- /dev/null
+++ b/FreeGamesModule/Commands.cs
@@ -0,0 +1,24 @@
+using Discord.Commands;
+
+using PluginManager.Interfaces;
+
+namespace FreeGamesModule
+{
+ public class Free : DBCommand
+ {
+ public string Command => "free";
+
+ public List? Aliases => null;
+
+ public string Description => "Check out any free game";
+
+ public string Usage => "free";
+
+ public bool requireAdmin => false;
+
+ public void ExecuteServer(SocketCommandContext context)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/FreeGamesModule/FreeGamesModule.csproj b/FreeGamesModule/FreeGamesModule.csproj
new file mode 100644
index 0000000..b468d70
--- /dev/null
+++ b/FreeGamesModule/FreeGamesModule.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/MusicCommands/Leave.cs b/MusicCommands/Leave.cs
index 79979e8..6cbcf54 100644
--- a/MusicCommands/Leave.cs
+++ b/MusicCommands/Leave.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
namespace MusicCommands;
@@ -15,13 +17,9 @@ internal class Leave : DBCommand
public string Usage => "leave";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
if (Data.audioClient is not null && Data.voiceChannel is not null)
{
diff --git a/MusicCommands/Pause.cs b/MusicCommands/Pause.cs
index 065a02a..d8b95ec 100644
--- a/MusicCommands/Pause.cs
+++ b/MusicCommands/Pause.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
namespace MusicCommands;
@@ -15,13 +17,9 @@ internal class Pause : DBCommand
public string Usage => "pause";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public void ExecuteServer(SocketCommandContext context)
{
Data.MusicPlayer.isPaused = !Data.MusicPlayer.isPaused;
}
diff --git a/MusicCommands/Play.cs b/MusicCommands/Play.cs
index 9b46e7f..21a6984 100644
--- a/MusicCommands/Play.cs
+++ b/MusicCommands/Play.cs
@@ -2,10 +2,12 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+
using Discord;
using Discord.Audio;
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
using PluginManager.Others;
@@ -21,17 +23,13 @@ internal class Play : DBCommand
public string Usage => "play [name/url]";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
Directory.CreateDirectory("Music");
- var path = "./Music/";
- string[] splitted = message.Content.Split(' ');
+ var path = "./Music/";
+ string[] splitted = context.Message.Content.Split(' ');
if (splitted.Length < 2)
return;
do
diff --git a/MusicCommands/Skip.cs b/MusicCommands/Skip.cs
index 0ca23b3..7082342 100644
--- a/MusicCommands/Skip.cs
+++ b/MusicCommands/Skip.cs
@@ -3,8 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
namespace MusicCommands
@@ -19,24 +21,20 @@ namespace MusicCommands
public string Usage => "skip";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
var loadedSong = Data.MusicPlayer.NowPlaying;
if (loadedSong is null || Data.MusicPlayer.isPlaying == false)
{
- message.Channel.SendMessageAsync("There is no music playing");
+ await context.Message.Channel.SendMessageAsync("There is no music playing");
return;
}
Data.MusicPlayer.isPlaying = false;
- message.Channel.SendMessageAsync($"You have skipped {loadedSong.Name}");
+ await context.Message.Channel.SendMessageAsync($"You have skipped {loadedSong.Name}");
}
}
}
diff --git a/MusicCommands/queue.cs b/MusicCommands/queue.cs
index d918f30..d60eba3 100644
--- a/MusicCommands/queue.cs
+++ b/MusicCommands/queue.cs
@@ -3,28 +3,26 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+
using Discord.Commands;
using Discord.WebSocket;
+
using PluginManager.Interfaces;
namespace MusicCommands
{
public class queue : DBCommand
{
- public string Command => "queue";
+ public string Command => "queue";
public List Aliases => new() { "q" };
public string Description => "check queue";
public string Usage => "queue";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => false;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
await context.Channel.SendMessageAsync($"You have {Data.Playlist.Count} items in queue");
}
diff --git a/PluginManager/Interfaces/DBCommand.cs b/PluginManager/Interfaces/DBCommand.cs
index 7dc759d..6082113 100644
--- a/PluginManager/Interfaces/DBCommand.cs
+++ b/PluginManager/Interfaces/DBCommand.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+
using Discord.Commands;
using Discord.WebSocket;
@@ -28,27 +29,20 @@ public interface DBCommand
///
string Usage { get; }
- ///
- /// true if the command can be used in a DM channel, otherwise false
- ///
- bool canUseDM { get; }
-
- ///
- /// true if the command can be used in a server, otherwise false
- ///
- bool canUseServer { get; }
-
///
/// true if the command requre admin, otherwise false
///
bool requireAdmin { get; }
///
- /// The main body of the command. This is what is executed when user calls the command
+ /// The main body of the command. This is what is executed when user calls the command in Server
///
/// The disocrd Context
- /// The message that the user types
- /// The discord client of the bot
- /// true if the message was sent from DM, otherwise false. It is always false if canUseDM is false
- void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM);
+ void ExecuteServer(SocketCommandContext context) { }
+
+ ///
+ /// The main body of the command. This is what is executed when user calls the command in DM
+ ///
+ /// The disocrd Context
+ void ExecuteDM(SocketCommandContext context) { }
}
diff --git a/PluginManager/Others/Functions.cs b/PluginManager/Others/Functions.cs
index 4decd4b..7934d29 100644
--- a/PluginManager/Others/Functions.cs
+++ b/PluginManager/Others/Functions.cs
@@ -87,6 +87,11 @@ namespace PluginManager.Others
File.AppendAllText(errPath, ErrMessage + " \n");
}
+ public static void WriteErrFile(this Exception ex)
+ {
+ WriteErrFile(ex.ToString());
+ }
+
///
/// Merge one array of strings into one string
///
diff --git a/Roles/AddRole.cs b/Roles/AddRole.cs
index c1ea4b8..cf4090e 100644
--- a/Roles/AddRole.cs
+++ b/Roles/AddRole.cs
@@ -1,12 +1,16 @@
using System.IO.Compression;
using System.Runtime.CompilerServices;
+
using Discord;
using Discord.Commands;
using Discord.Rest;
using Discord.WebSocket;
+
using Microsoft.Win32.SafeHandles;
+
using PluginManager.Interfaces;
using PluginManager.Others;
+
using Roles.Internals;
namespace Roles
@@ -21,15 +25,11 @@ namespace Roles
public string Usage => "addrole [user1] [user2] ... [role1] [role2] ...";
- public bool canUseDM => false;
-
- public bool canUseServer => true;
-
public bool requireAdmin => true;
- public async void Execute(SocketCommandContext context, SocketMessage message, DiscordSocketClient client, bool isDM)
+ public async void ExecuteServer(SocketCommandContext context)
{
- if (message.MentionedUsers.Count == 0 || message.MentionedRoles.Count == 0)
+ if (context.Message.MentionedUsers.Count == 0 || context.Message.MentionedRoles.Count == 0)
{
await context.Channel.SendMessageAsync($"Invalid invocation\nUsage:{Usage}");
return;
@@ -37,15 +37,20 @@ namespace Roles
try
{
- var users = message.MentionedUsers;
- var roles = message.MentionedRoles as IEnumerable;
+ var users = context.Message.MentionedUsers;
+ var roles = context.Message.MentionedRoles;
foreach (var user in users)
{
- SocketGuildUser? usr = context.Client.GetUser(user.Username, user.Discriminator) as SocketGuildUser;
- if (usr is null)
- throw new Exception("User is null");
- await usr.AddRolesAsync(roles);
+ foreach (var role in roles)
+ {
+ try
+ {
+ await ((SocketGuildUser)context.Guild.GetUser(user.Id)).AddRoleAsync(role);
+ await context.Channel.SendMessageAsync($"User {user.Mention} got role : {role.Name}");
+ }
+ catch (Exception ex) { ex.WriteErrFile(); }
+ }
}
}
catch (Exception ex)
diff --git a/SethDiscordBot.sln b/SethDiscordBot.sln
index d19c69a..f8bfc8d 100644
--- a/SethDiscordBot.sln
+++ b/SethDiscordBot.sln
@@ -25,7 +25,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Roles", "Roles\Roles.csproj
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Others", "Others", "{727BBA0B-9114-4BC8-B9A8-3F461449A564}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "Updater\Updater.csproj", "{24616F7E-E2E9-45A3-8A44-AB51FCD2D525}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Updater", "Updater\Updater.csproj", "{24616F7E-E2E9-45A3-8A44-AB51FCD2D525}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FreeGamesModule", "FreeGamesModule\FreeGamesModule.csproj", "{8959C766-414D-4EF8-BC85-9928B30AAF0A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -65,6 +67,10 @@ Global
{24616F7E-E2E9-45A3-8A44-AB51FCD2D525}.Debug|Any CPU.Build.0 = Debug|Any CPU
{24616F7E-E2E9-45A3-8A44-AB51FCD2D525}.Release|Any CPU.ActiveCfg = Release|Any CPU
{24616F7E-E2E9-45A3-8A44-AB51FCD2D525}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8959C766-414D-4EF8-BC85-9928B30AAF0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8959C766-414D-4EF8-BC85-9928B30AAF0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8959C766-414D-4EF8-BC85-9928B30AAF0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8959C766-414D-4EF8-BC85-9928B30AAF0A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -79,6 +85,7 @@ Global
{954F2AA9-6624-4554-946D-0F17B84487C3} = {449FA364-0B72-43FF-B3A3-806E2916200E}
{727BBA0B-9114-4BC8-B9A8-3F461449A564} = {1862ABD5-7C30-4F15-A561-45AC8A9CA10E}
{24616F7E-E2E9-45A3-8A44-AB51FCD2D525} = {727BBA0B-9114-4BC8-B9A8-3F461449A564}
+ {8959C766-414D-4EF8-BC85-9928B30AAF0A} = {449FA364-0B72-43FF-B3A3-806E2916200E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3FB3C5DE-ED21-4D2E-ABDD-3A00EE4A2FFF}