DeukBot4/DeukBot4/MessageHandlers/JokeHandling/JokeHandler.cs

40 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using DeukBot4.Database.ServerSettings;
using Discord;
using Discord.WebSocket;
namespace DeukBot4.MessageHandlers.JokeHandling
{
public static class JokeHandler
{
public static readonly Dictionary<string, IJokeController> Jokes = new Dictionary<string, IJokeController>();
public static void Initialize()
{
var jokes = typeof(JokeHandler).Assembly.GetTypes()
.Where(x => typeof(IJokeController).IsAssignableFrom(x) && !x.IsInterface);
foreach (var joke in jokes)
{
var c = (IJokeController)Activator.CreateInstance(joke);
Jokes.Add(c.Id.ToLowerInvariant(), c);
}
}
public static async Task RunJokes(SocketMessage message)
{
if (message.Channel is IGuildChannel guildChannel)
{
var guildSettings = ServerSettingHandler.GetSettings(guildChannel.GuildId);
var jokes = guildSettings.EnabledJokes;
foreach (var enabledJoke in jokes)
{
var jokeController = Jokes[enabledJoke];
jokeController.Run(message);
}
}
}
}
}