diff --git a/Feature/AutoRespond/AutoRespond.cs b/Feature/AutoRespond/AutoRespond.cs index 0a4c8bd..918e620 100644 --- a/Feature/AutoRespond/AutoRespond.cs +++ b/Feature/AutoRespond/AutoRespond.cs @@ -21,13 +21,27 @@ namespace Noikoio.RegexBot.Feature.AutoRespond /// /// /// - class AutoRespond : BotFeature + partial class AutoRespond : BotFeature { public override string Name => "AutoRespond"; public AutoRespond(DiscordSocketClient client) : base(client) { - throw new NotImplementedException(); + client.MessageReceived += Client_MessageReceived; + } + + private async Task Client_MessageReceived(SocketMessage arg) + { + // Determine channel type - if not a guild channel, stop. + var ch = arg.Channel as SocketGuildChannel; + if (ch == null) return; + + // TODO either search server by name or remove server name support entirely + var defs = GetConfig(ch.Guild.Id) as IEnumerable; + if (defs == null) return; + + foreach (var def in defs) + await Task.Run(async () => await ProcessMessage(arg, def)); } [ConfigSection("autoresponses")] diff --git a/Feature/AutoRespond/AutoRespond_Process.cs b/Feature/AutoRespond/AutoRespond_Process.cs new file mode 100644 index 0000000..0cd5418 --- /dev/null +++ b/Feature/AutoRespond/AutoRespond_Process.cs @@ -0,0 +1,19 @@ +using Discord.WebSocket; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace Noikoio.RegexBot.Feature.AutoRespond +{ + partial class AutoRespond + { + private async Task ProcessMessage(SocketMessage msg, ResponseDefinition def) + { + // Filtering checks + + // Rate limit checks + + } + } +}