From ac6235eaeaca767554791f9bdaffe761d58e2fbe Mon Sep 17 00:00:00 2001 From: Darkstack <1835601+darkstack@users.noreply.github.com> Date: Thu, 4 Oct 2018 01:32:33 +0200 Subject: [PATCH] Challonge Test --- .../LaDOSE.DiscordBot/Command/Result.cs | 8 +++ .../LaDOSE.DiscordBot/Command/Twitch.cs | 2 +- .../LaDOSE.DiscordBot/Dependencies.cs | 2 + .../LaDOSE.DiscordBot.csproj | 6 +++ .../LaDOSE.DiscordBot/Program.cs | 19 +++----- .../Service/ChallongeService.cs | 46 ++++++++++++++++++ .../LaDOSE.DiscordBot/settings.json | 7 ++- .../Library/ChallongeCSharpDriver.dll | Bin 0 -> 43520 bytes 8 files changed, 76 insertions(+), 14 deletions(-) create mode 100644 LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Service/ChallongeService.cs create mode 100644 LaDOSE.DiscordBot/Library/ChallongeCSharpDriver.dll diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs index ccbebee..9e775c8 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Result.cs @@ -20,6 +20,14 @@ namespace LaDOSE.DiscordBot.Command await ctx.RespondAsync("Resultat"); } + + [Command("last")] + public async Task LastAsync(CommandContext ctx) + { + var tournament = await dep.ChallongeService.GetLastTournament(); + await ctx.RespondAsync($"Dernier tournois: {tournament}"); + + } } } } \ 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 index 15ec6f2..fa502aa 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Command/Twitch.cs @@ -4,7 +4,7 @@ using DSharpPlus.CommandsNext.Attributes; namespace LaDOSE.DiscordBot.Command { - public partial class Result + public class Result { internal class Twitch diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs index 3b55465..20cd3ca 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Dependencies.cs @@ -1,5 +1,6 @@ using System.Threading; using DSharpPlus.Interactivity; +using LaDOSE.DiscordBot.Service; namespace LaDOSE.DiscordBot { @@ -7,5 +8,6 @@ namespace LaDOSE.DiscordBot { internal InteractivityModule Interactivity { get; set; } internal CancellationTokenSource Cts { get; set; } + public ChallongeService ChallongeService { 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 21ef2a8..bcf31fd 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot.csproj @@ -13,6 +13,12 @@ + + + ..\..\Library\ChallongeCSharpDriver.dll + + + PreserveNewest diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs index 1ce8522..d63d37f 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Program.cs @@ -8,6 +8,7 @@ using DSharpPlus.Interactivity; using DSharpPlus.CommandsNext; using DSharpPlus.EventArgs; using LaDOSE.DiscordBot.Command; +using LaDOSE.DiscordBot.Service; using Microsoft.Extensions.Configuration; namespace LaDOSE.DiscordBot @@ -15,7 +16,6 @@ namespace LaDOSE.DiscordBot class Program { static DiscordClient discord; - static InteractivityModule _interactivity; static void Main(string[] args) { @@ -29,6 +29,7 @@ namespace LaDOSE.DiscordBot .AddJsonFile("settings.json", optional: true, reloadOnChange: true).Build(); var discordToken = builder["Discord:Token"].ToString(); + var challongeToken = builder["Challonge:Token"].ToString(); Console.WriteLine($"LaDOSE.Net Discord Bot"); @@ -40,22 +41,18 @@ namespace LaDOSE.DiscordBot TokenType = TokenType.Bot }); - var _interactivity = discord.UseInteractivity(new InteractivityConfiguration() - { - PaginationBehaviour = TimeoutBehaviour.Delete, - PaginationTimeout = TimeSpan.FromSeconds(30), - Timeout = TimeSpan.FromSeconds(30) - }); - var _cts = new CancellationTokenSource(); + var challongeService = new ChallongeService(challongeToken); + var cts = new CancellationTokenSource(); DependencyCollection dep = null; using (var d = new DependencyCollectionBuilder()) { d.AddInstance(new Dependencies() { - Interactivity = _interactivity, - Cts = _cts + + Cts = cts, + ChallongeService = challongeService }); dep = d.Build(); } @@ -89,7 +86,7 @@ namespace LaDOSE.DiscordBot await e.Guild.GetDefaultChannel().SendMessageAsync($"Bonjour {e.Member.DisplayName}!"); }; await discord.ConnectAsync(); - while (!_cts.IsCancellationRequested) + while (!cts.IsCancellationRequested) { await Task.Delay(200); } diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Service/ChallongeService.cs b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Service/ChallongeService.cs new file mode 100644 index 0000000..867fd22 --- /dev/null +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/Service/ChallongeService.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using ChallongeCSharpDriver; +using ChallongeCSharpDriver.Caller; +using ChallongeCSharpDriver.Core.Queries; +using ChallongeCSharpDriver.Core.Results; +using ChallongeCSharpDriver.Main; +using ChallongeCSharpDriver.Main.Objects; + +namespace LaDOSE.DiscordBot.Service +{ + public class ChallongeService + { + public string ApiKey { get; set; } + + + public ChallongeService(string apiKey) + { + this.ApiKey = apiKey; + + } + + public async Task GetLastTournament() + { + ChallongeConfig config = new ChallongeConfig(this.ApiKey); + var caller = new ChallongeHTTPClientAPICaller(config); + var tournaments = new Tournaments(caller); + List tournamentResultList = await new TournamentsQuery() + { + state = TournamentState.Ended + } + .call(caller); + List tournamentList = new List(); + foreach (TournamentResult result in tournamentResultList) + { + tournamentList.Add(new TournamentObject(result, caller)); + } + + var startedTournament = tournamentList.Last(); + + return startedTournament.ToString(); + } + } +} \ No newline at end of file diff --git a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/settings.json b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/settings.json index 126d385..2e4eb56 100644 --- a/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/settings.json +++ b/LaDOSE.DiscordBot/LaDOSE.DiscordBot/LaDOSE.DiscordBot/settings.json @@ -1,5 +1,8 @@ { "Discord": { - "Token" : "APITOKEN Here" - } + "Token": "DISCORD TOKEN" + }, + "Challonge": { + "Token": "CHALLONGE API TOKEN" + } } \ No newline at end of file diff --git a/LaDOSE.DiscordBot/Library/ChallongeCSharpDriver.dll b/LaDOSE.DiscordBot/Library/ChallongeCSharpDriver.dll new file mode 100644 index 0000000000000000000000000000000000000000..ef3338863b289f1577579e68e8c3918e28c20b53 GIT binary patch literal 43520 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 m^Zu0#3JkdQfZ_xc({#oM7#Kj?IzNC