From 160b1ebb7b0b2d962ecc32c6e5930f4f3fbcb16a Mon Sep 17 00:00:00 2001 From: Darkstack <1835601+darkstack@users.noreply.github.com> Date: Thu, 4 Oct 2018 00:29:25 +0200 Subject: [PATCH] Ajout de CommandNext --- .../LaDOSE.DiscordBot/Command/Result.cs | 25 +++++++ .../LaDOSE.DiscordBot/Command/Shutdown.cs | 26 +++++++ .../LaDOSE.DiscordBot/Command/Twitch.cs | 26 +++++++ .../LaDOSE.DiscordBot/Dependencies.cs | 11 +++ .../LaDOSE.DiscordBot.csproj | 1 + .../LaDOSE.DiscordBot/Program.cs | 68 +++++++++++++------ 6 files changed, 137 insertions(+), 20 deletions(-) create mode 100644 LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs create mode 100644 LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Shutdown.cs create mode 100644 LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs create mode 100644 LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs new file mode 100644 index 0000000..ccbebee --- /dev/null +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; +using DSharpPlus.CommandsNext; +using DSharpPlus.CommandsNext.Attributes; + +namespace LaDOSE.DiscordBot.Command +{ + public partial class Twitch + { + internal class Result + { + Dependencies dep; + public Result(Dependencies d) + { + this.dep = d; + } + + [Command("result")] + public async Task ResultAsync(CommandContext ctx) + { + await ctx.RespondAsync("Resultat"); + + } + } + } +} \ No newline at end of file diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Shutdown.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Shutdown.cs new file mode 100644 index 0000000..19f2333 --- /dev/null +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Shutdown.cs @@ -0,0 +1,26 @@ +using System.Threading.Tasks; +using DSharpPlus.CommandsNext; +using DSharpPlus.CommandsNext.Attributes; + +namespace LaDOSE.DiscordBot.Command +{ + [RequireRolesAttribute("SuperAdmin")] + internal class Shutdown + { + private readonly Dependencies dep; + + public Shutdown(Dependencies d) + { + dep = d; + } + + + + [Command("shutdown")] + public async Task ShutDownAsync(CommandContext ctx) + { + await ctx.RespondAsync("Hasta la vista, baby"); + dep.Cts.Cancel(); + } + } +} \ No newline at end of file diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs new file mode 100644 index 0000000..15ec6f2 --- /dev/null +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs @@ -0,0 +1,26 @@ +using System.Threading.Tasks; +using DSharpPlus.CommandsNext; +using DSharpPlus.CommandsNext.Attributes; + +namespace LaDOSE.DiscordBot.Command +{ + public partial class Result + { + + internal class Twitch + { + Dependencies dep; + public Twitch(Dependencies d) + { + this.dep = d; + } + + [Command("twitch")] + public async Task TwitchAsync(CommandContext ctx) + { + await ctx.RespondAsync("https://www.twitch.tv/LaDOSETV"); + + } + } + } +} \ No newline at end of file diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs new file mode 100644 index 0000000..3b55465 --- /dev/null +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs @@ -0,0 +1,11 @@ +using System.Threading; +using DSharpPlus.Interactivity; + +namespace LaDOSE.DiscordBot +{ + internal class Dependencies + { + internal InteractivityModule Interactivity { get; set; } + internal CancellationTokenSource Cts { get; set; } + } +} \ No newline at end of file diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj index 88cf486..21ef2a8 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj @@ -7,6 +7,7 @@ + diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs index 27fbf43..1ce8522 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs @@ -1,28 +1,29 @@ using System; using System.Collections.Generic; using System.IO; +using System.Threading; using System.Threading.Tasks; using DSharpPlus; using DSharpPlus.Interactivity; +using DSharpPlus.CommandsNext; +using DSharpPlus.EventArgs; +using LaDOSE.DiscordBot.Command; using Microsoft.Extensions.Configuration; namespace LaDOSE.DiscordBot { class Program { - static DiscordClient discord; static InteractivityModule _interactivity; + static void Main(string[] args) { - - MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult(); } static async Task MainAsync(string[] args) { - var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("settings.json", optional: true, reloadOnChange: true).Build(); @@ -32,7 +33,7 @@ namespace LaDOSE.DiscordBot Console.WriteLine($"LaDOSE.Net Discord Bot"); - + discord = new DiscordClient(new DiscordConfiguration { Token = discordToken, @@ -46,26 +47,53 @@ namespace LaDOSE.DiscordBot Timeout = TimeSpan.FromSeconds(30) }); - discord.MessageCreated += async e => + var _cts = new CancellationTokenSource(); + DependencyCollection dep = null; + + using (var d = new DependencyCollectionBuilder()) { - if (e.Message.Content.ToLower().Equals("!result")) - await e.Message.RespondAsync("Les Résultats du dernier Ranking : XXXX"); - if (e.Message.Content.ToLower().Equals("!twitch")) - await e.Message.RespondAsync("https://www.twitch.tv/LaDOSETV"); - }; + d.AddInstance(new Dependencies() + { + Interactivity = _interactivity, + Cts = _cts + }); + dep = d.Build(); + } + + var _cnext = discord.UseCommandsNext(new CommandsNextConfiguration() + { + CaseSensitive = false, + EnableDefaultHelp = true, + EnableDms = false, + EnableMentionPrefix = true, + StringPrefix = "!", + IgnoreExtraArguments = true, + Dependencies = dep + }); + + _cnext.RegisterCommands(); + _cnext.RegisterCommands(); + _cnext.RegisterCommands(); + + + //discord.MessageCreated += async e => + //{ + // if (e.Message.Content.ToLower().Equals("!result")) + // await e.Message.RespondAsync("Les Résultats du dernier Ranking : XXXX"); + // if (e.Message.Content.ToLower().Equals("!twitch")) + // await e.Message.RespondAsync("https://www.twitch.tv/LaDOSETV"); + //}; discord.GuildMemberAdded += async e => { - await e.Guild.GetDefaultChannel().SendMessageAsync($"Bonjour {e.Member.Nickname}!"); + await e.Guild.GetDefaultChannel().SendMessageAsync($"Bonjour {e.Member.DisplayName}!"); }; await discord.ConnectAsync(); - await Task.Delay(-1); + while (!_cts.IsCancellationRequested) + { + await Task.Delay(200); + } + } - } - -} - - - - +} \ No newline at end of file