From 3d4ff74d7109049f700bad40cd3808b2f5648c62 Mon Sep 17 00:00:00 2001 From: Darkstack <1835601+darkstack@users.noreply.github.com> Date: Wed, 14 Sep 2022 23:29:22 +0200 Subject: [PATCH] Fix the bots --- .../LaDOSE.DiscordBot/Command/EventStaff.cs | 24 +-- .../LaDOSE.DiscordBot/Command/Hokuto.cs | 8 +- .../LaDOSE.DiscordBot/Command/Public.cs | 18 ++- .../LaDOSE.DiscordBot/Command/Result.cs | 74 ++++----- .../LaDOSE.DiscordBot/Command/Shutdown.cs | 42 ++--- LaDOSE.Src/LaDOSE.DiscordBot/Dependencies.cs | 12 +- .../LaDOSE.DiscordBot.csproj | 6 +- LaDOSE.Src/LaDOSE.DiscordBot/Program.cs | 146 +++++++++--------- 8 files changed, 172 insertions(+), 158 deletions(-) diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Command/EventStaff.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Command/EventStaff.cs index a34f25a..2543c7f 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Command/EventStaff.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Command/EventStaff.cs @@ -3,31 +3,31 @@ using System.Text; using System.Threading.Tasks; using DSharpPlus.CommandsNext; using DSharpPlus.CommandsNext.Attributes; +using LaDOSE.DiscordBot.Service; using LaDOSE.DTO; namespace LaDOSE.DiscordBot.Command { - public class BotEvent + public class BotEvent : BaseCommandModule { - private readonly Dependencies dep; - - public BotEvent(Dependencies d) + private WebService dep; + public BotEvent(WebService d) { dep = d; } - [RequireRolesAttribute("Staff")] + [RequireRolesAttribute(RoleCheckMode.Any, "Staff")] [Command("newevent")] public async Task NewEventAsync(CommandContext ctx, string command) { - await ctx.RespondAsync(dep.WebService.RestService.CreateBotEvent(command).ToString()); + await ctx.RespondAsync(dep.RestService.CreateBotEvent(command).ToString()); } - [RequireRolesAttribute("Staff")] + [RequireRolesAttribute(RoleCheckMode.Any,"Staff")] [Command("staffs")] public async Task StaffAsync(CommandContext ctx) { - BotEventDTO currentEvent = dep.WebService.RestService.GetLastBotEvent(); + BotEventDTO currentEvent = dep.RestService.GetLastBotEvent(); StringBuilder stringBuilder = new StringBuilder(); var present = currentEvent.Results.Where(x => x.Result).ToList(); @@ -40,19 +40,19 @@ namespace LaDOSE.DiscordBot.Command await ctx.RespondAsync(stringBuilder.ToString()); } - [RequireRolesAttribute("Staff")] + [RequireRolesAttribute(RoleCheckMode.Any, "Staff")] [Command("present")] public async Task PresentAsync(CommandContext ctx) { - await ctx.RespondAsync(dep.WebService.RestService.ResultBotEvent(new DTO.BotEventSendDTO() { DiscordId = ctx.Member.Id.ToString(), DiscordName = ctx.Member.DisplayName, Present = true }).ToString()); + await ctx.RespondAsync(dep.RestService.ResultBotEvent(new DTO.BotEventSendDTO() { DiscordId = ctx.Member.Id.ToString(), DiscordName = ctx.Member.DisplayName, Present = true }).ToString()); } - [RequireRolesAttribute("Staff")] + [RequireRolesAttribute(RoleCheckMode.Any, "Staff")] [Command("absent")] public async Task AbsentAsync(CommandContext ctx) { - await ctx.RespondAsync(dep.WebService.RestService.ResultBotEvent(new DTO.BotEventSendDTO() { DiscordId = ctx.Member.Id.ToString(), DiscordName = ctx.Member.DisplayName, Present = false }).ToString()); + await ctx.RespondAsync(dep.RestService.ResultBotEvent(new DTO.BotEventSendDTO() { DiscordId = ctx.Member.Id.ToString(), DiscordName = ctx.Member.DisplayName, Present = false }).ToString()); } } } \ No newline at end of file diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Hokuto.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Hokuto.cs index baa5c28..63c0c2e 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Hokuto.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Hokuto.cs @@ -9,14 +9,14 @@ using DSharpPlus.Entities; namespace LaDOSE.DiscordBot.Command { - public class Hokuto + public class Hokuto : BaseCommandModule { - private readonly Dependencies dep; + private static List Games = new List { "2X", "3.3", "Karnov" }; private static Random r = new Random(); - public Hokuto(Dependencies d) + public Hokuto() { - dep = d; + } diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Public.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Public.cs index 009ad70..8e6a180 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Public.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Public.cs @@ -9,16 +9,16 @@ using DSharpPlus.CommandsNext.Attributes; namespace LaDOSE.DiscordBot.Command { - public class Public + public class Public : BaseCommandModule { - private readonly Dependencies dep; + private static List Quotes { get; set; } private static List Questions { get; set; } private static List Answers { get; set; } private Random rnd { get; set; } - public Public(Dependencies d) + public Public() { - dep = d; + rnd = new Random(DateTime.Now.Millisecond); } @@ -65,9 +65,17 @@ namespace LaDOSE.DiscordBot.Command } else { + for (int i = 0; i < s.Length - 1; i++) { - response += s[i] + Answers[rnd.Next(Answers.Count - 1)]; + if (s[i] == "" && i==0) + { + response += Answers[rnd.Next(Answers.Count - 1)]; + } + else + { + response += s[i] + "***" + Answers[rnd.Next(Answers.Count - 1)].ToLower() + "***"; + } } response += s[s.Length - 1]; } diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Result.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Result.cs index ab99ee8..a7200d7 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Result.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Result.cs @@ -1,45 +1,45 @@ -using System.Threading.Tasks; -using DSharpPlus.CommandsNext; -using DSharpPlus.CommandsNext.Attributes; +//using System.Threading.Tasks; +//using DSharpPlus.CommandsNext; +//using DSharpPlus.CommandsNext.Attributes; -namespace LaDOSE.DiscordBot.Command -{ - internal class Result - { - Dependencies dep; +//namespace LaDOSE.DiscordBot.Command +//{ +// internal class Result : BaseCommandModule +// { +// Dependencies dep; - public Result(Dependencies d) - { - this.dep = d; - } +// public Result(Dependencies d) +// { +// this.dep = d; +// } - //[Command("last")] - //public async Task LastAsync(CommandContext ctx) - //{ - // var lastTournamentMessage = dep.WebService.GetLastChallonge(); - // await ctx.RespondAsync(lastTournamentMessage); - //} +// //[Command("last")] +// //public async Task LastAsync(CommandContext ctx) +// //{ +// // var lastTournamentMessage = dep.WebService.GetLastChallonge(); +// // await ctx.RespondAsync(lastTournamentMessage); +// //} - //[RequireRolesAttribute("Staff")] - //[Command("inscriptions")] - //public async Task InscriptionsAsync(CommandContext ctx) - //{ - // await ctx.TriggerTypingAsync(); - // var inscrits = dep.WebService.GetInscrits(); - // await ctx.RespondAsync(inscrits); - //} +// //[RequireRolesAttribute("Staff")] +// //[Command("inscriptions")] +// //public async Task InscriptionsAsync(CommandContext ctx) +// //{ +// // await ctx.TriggerTypingAsync(); +// // var inscrits = dep.WebService.GetInscrits(); +// // await ctx.RespondAsync(inscrits); +// //} - [RequireRolesAttribute("Staff")] - [Command("UpdateDb")] - public async Task UpdateDbAsync(CommandContext ctx) - { - await ctx.RespondAsync("Mise à jour des inscriptions en cours..."); - await ctx.TriggerTypingAsync(); +// [RequireRolesAttribute(RoleCheckMode.Any,"Staff")] +// [Command("UpdateDb")] +// public async Task UpdateDbAsync(CommandContext ctx) +// { +// await ctx.RespondAsync("Mise à jour des inscriptions en cours..."); +// await ctx.TriggerTypingAsync(); - var status = dep.WebService.RefreshDb() ? "Ok" : "erreur"; +// var status = dep.WebService.RefreshDb() ? "Ok" : "erreur"; - await ctx.RespondAsync($"Status: {status}"); - } - } -} \ No newline at end of file +// await ctx.RespondAsync($"Status: {status}"); +// } +// } +//} \ No newline at end of file diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Shutdown.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Shutdown.cs index 49e6a4d..93234a0 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Command/Shutdown.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Command/Shutdown.cs @@ -1,25 +1,25 @@ -using System.Threading.Tasks; -using DSharpPlus.CommandsNext; -using DSharpPlus.CommandsNext.Attributes; +//using System.Threading.Tasks; +//using DSharpPlus.CommandsNext; +//using DSharpPlus.CommandsNext.Attributes; -namespace LaDOSE.DiscordBot.Command -{ - [RequireRolesAttribute("SuperAdmin")] - public class Shutdown - { - private readonly Dependencies dep; +//namespace LaDOSE.DiscordBot.Command +//{ +// [RequireRolesAttribute(RoleCheckMode.Any,"SuperAdmin")] +// public class Shutdown : BaseCommandModule +// { +// private readonly Dependencies dep; - public Shutdown(Dependencies d) - { - dep = d; - } +// 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 +// [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.Src/LaDOSE.DiscordBot/Dependencies.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Dependencies.cs index c331360..0446eff 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Dependencies.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Dependencies.cs @@ -4,10 +4,10 @@ using LaDOSE.DiscordBot.Service; namespace LaDOSE.DiscordBot { - public class Dependencies - { - internal InteractivityModule Interactivity { get; set; } - internal CancellationTokenSource Cts { get; set; } - public WebService WebService { get; set; } - } + //public class Dependencies + //{ + // //internal InteractivityModule Interactivity { get; set; } + // internal CancellationTokenSource Cts { get; set; } + // public WebService WebService { get; set; } + //} } \ No newline at end of file diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj b/LaDOSE.Src/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj index 9d27345..5fe63c1 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj +++ b/LaDOSE.Src/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/LaDOSE.Src/LaDOSE.DiscordBot/Program.cs b/LaDOSE.Src/LaDOSE.DiscordBot/Program.cs index 8795f37..bcad7b0 100644 --- a/LaDOSE.Src/LaDOSE.DiscordBot/Program.cs +++ b/LaDOSE.Src/LaDOSE.DiscordBot/Program.cs @@ -7,21 +7,29 @@ using DSharpPlus; using DSharpPlus.Interactivity; using DSharpPlus.CommandsNext; using DSharpPlus.EventArgs; +using DSharpPlus.Interactivity.Extensions; +//using DSharpPlus.SlashCommands; +//using DSharpPlus.SlashCommands.Attributes; using LaDOSE.DiscordBot.Command; using LaDOSE.DiscordBot.Service; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; namespace LaDOSE.DiscordBot { class Program { static DiscordClient discord; - static InteractivityModule Interactivity { get; set; } + + //static InteractivityModule Interactivity { get; set; } static void Main(string[] args) { MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult(); } + + static async Task MainAsync(string[] args) { Console.WriteLine(Directory.GetCurrentDirectory()); @@ -35,108 +43,106 @@ namespace LaDOSE.DiscordBot var restUser = builder["REST:User"].ToString(); var restPassword = builder["REST:Password"].ToString(); + var service = new ServiceCollection() + .AddSingleton(typeof(WebService), new WebService(new Uri(restUrl), restUser, restPassword)) + .BuildServiceProvider(); + + Console.WriteLine($"LaDOSE.Net Discord Bot"); - + discord = new DiscordClient(new DiscordConfiguration { Token = discordToken, - TokenType = TokenType.Bot + TokenType = TokenType.Bot, + //AutoReconnect = true, + //MinimumLogLevel = LogLevel.Debug, + //MessageCacheSize = 0, }); discord.UseInteractivity(new InteractivityConfiguration { + // default pagination behaviour to just ignore the reactions - PaginationBehaviour = TimeoutBehaviour.Ignore, + //PaginationBehaviour = TimeoutBehaviour.Ignore, // default pagination timeout to 5 minutes - PaginationTimeout = TimeSpan.FromMinutes(5), + //PaginationTimeout = TimeSpan.FromMinutes(5), // default timeout for other actions to 2 minutes Timeout = TimeSpan.FromMinutes(2) }); - var webService = new WebService(new Uri(restUrl),restUser,restPassword); - //var challongeService = new ChallongeService(challongeToken); - - var cts = new CancellationTokenSource(); - DependencyCollection dep = null; - using (var d = new DependencyCollectionBuilder()) - { - d.AddInstance(new Dependencies() - { - Cts = cts, - //ChallongeService = challongeService, - WebService = webService - }); - dep = d.Build(); - } + + var cts = new CancellationTokenSource(); var _cnext = discord.UseCommandsNext(new CommandsNextConfiguration() { - CaseSensitive = false, - EnableDefaultHelp = true, - EnableDms = false, - EnableMentionPrefix = true, - StringPrefix = "!", - IgnoreExtraArguments = true, - Dependencies = dep + //CaseSensitive = false, + //EnableDefaultHelp = true, + //EnableDms = false, + //EnableMentionPrefix = true, + StringPrefixes = new List() { "/", "!" }, + //IgnoreExtraArguments = true, + Services = service }); - _cnext.RegisterCommands(); + + //var slashCommands = discord.UseSlashCommands(new SlashCommandsConfiguration() {Services = service}); + //slashCommands.RegisterCommands(guildId:null); + + + //_cnext.RegisterCommands(); _cnext.RegisterCommands(); - _cnext.RegisterCommands(); + //_cnext.RegisterCommands(); //_cnext.RegisterCommands(); _cnext.RegisterCommands(); _cnext.RegisterCommands(); - //discord.UserUpdated += async e => - //{ - // await e.Client?.InitializeAsync(); - //}; - //discord.UserSettingsUpdated += async e => - //{ - // await e.Client?.InitializeAsync(); - //}; - //discord.GuildMemberUpdated += async e => - //{ - // await e.Client?.InitializeAsync(); - //}; - //discord.GuildRoleUpdated += async e => - //{ - // e.Client?.InitializeAsync(); - //}; - - //discord.UserSettingsUpdated += async e => - //{ - // e.Client?.InitializeAsync(); - //}; - - //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 => + foreach (var registeredCommandsKey in discord.GetCommandsNext().RegisteredCommands.Keys) { - Console.WriteLine($"{e.Member.DisplayName} Joined"); - await Task.Delay(0); - //await e.Guild.GetDefaultChannel().SendMessageAsync($"Bonjour!"); + Console.WriteLine(registeredCommandsKey); + } + + + discord.Ready += (sender, eventArgs) => + { + Console.WriteLine($"Bot READY."); + return Task.CompletedTask; + }; + discord.GuildAvailable += (sender, eventArgs) => + { + + Console.WriteLine($"Joined Guild " + eventArgs.Guild.Name); + return Task.CompletedTask; }; - await discord.ConnectAsync(); - while (!cts.IsCancellationRequested) - { - - await Task.Delay(200); + - //if(discord.GetConnectionsAsync().Result.Count) - } + await Task.Delay(Timeout.Infinite); + + //while (!cts.IsCancellationRequested) + //{ + // await Task.Delay(200); + // //if(discord.GetConnectionsAsync().Result.Count) + //} } + + } + + //internal class SlashCommand : ApplicationCommandModule + //{ + // [SlashCommand("test", "A slash command made to test the DSharpPlusSlashCommands library!")] + + // public async Task TestCommand(InteractionContext ctx) + // { + + // await ctx.CreateResponseAsync("Lol"); + + // } + //} + } \ No newline at end of file