From 351067a5203307fc0c1a14ae2be84eae71246af9 Mon Sep 17 00:00:00 2001 From: TrueDoctor Date: Wed, 11 Apr 2018 14:19:57 +0200 Subject: Added possibillity for service based soundplaying --- DiscoBot/Audio/AudioModule.cs | 72 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 DiscoBot/Audio/AudioModule.cs (limited to 'DiscoBot/Audio/AudioModule.cs') diff --git a/DiscoBot/Audio/AudioModule.cs b/DiscoBot/Audio/AudioModule.cs new file mode 100644 index 0000000..0c3814f --- /dev/null +++ b/DiscoBot/Audio/AudioModule.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Threading.Tasks; + +using DiscoBot; +using DiscoBot.Audio; +using DiscoBot.Auxiliary; +using DiscoBot.Commands; + +using Discord; +using Discord.Commands; + +public class AudioModule : ModuleBase +{ + // Scroll down further for the AudioService. + // Like, way down + private readonly AudioService _service; + + // Remember to add an instance of the AudioService + // to your IServiceCollection when you initialize your bot + public AudioModule(AudioService service) + { + _service = service; + Dsa.Service = service; + } + + // You *MUST* mark these commands with 'RunMode.Async' + // otherwise the bot will not respond until the Task times out. + [Command("_join", RunMode = RunMode.Async)] + public async Task JoinCmd() + { + await _service.JoinAudio(Context.Guild, (Context.User as IVoiceState).VoiceChannel); + } + + // Remember to add preconditions to your commands, + // this is merely the minimal amount necessary. + // Adding more commands of your own is also encouraged. + [Command("_leave", RunMode = RunMode.Async)] + public async Task LeaveCmd() + { + await _service.LeaveAudio(Context.Guild); + } + + [Command("_play", RunMode = RunMode.Async)] + public async Task PlayCmd([Remainder] string song) + { + if (Dsa.GeneralContext == null) + { + Dsa.GeneralContext = this.Context; + } + + var sounds = Enum.GetValues(typeof(Sound)); + var soundList = new List(); + foreach (var sound in sounds) + { + soundList.Add((Sound)sound); + } + + var sc = new SpellCorrect(); + + var tSound = soundList.OrderBy(x => sc.Compare(song, x.ToString())).First(); + + if (sc.Compare(song, tSound.ToString()) > SpellCorrect.ErrorThreshold) + { + await _service.SendAudioAsync(Context.Guild, Context.Channel, song); + } + + await SoundEffects.Play(tSound); + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2