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 - - - - - + - - - - - - - - - - - - - - - - - - - - - - - { + "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 @@ 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}