From 323d6fa521e388d3783659eebb83a867a4ca55f3 Mon Sep 17 00:00:00 2001
From: adam <git@adamrgrey.com>
Date: Sun, 22 Jun 2025 00:04:51 -0400
Subject: [PATCH] webhooks aren't triggered by "!hook"; triggered by their own
 configured value

---
 Behavior/Webhook.cs | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/Behavior/Webhook.cs b/Behavior/Webhook.cs
index 42e40d7..1c3c832 100644
--- a/Behavior/Webhook.cs
+++ b/Behavior/Webhook.cs
@@ -69,22 +69,25 @@ public class Webhook : Behavior
 
     public override bool ShouldAct(Message message, List<UAC> matchedUACs)
     {
-        if (!base.ShouldAct(message, matchedUACs))
-            return false;
-
-        Console.WriteLine("webhook checking");
-
         if (configuredWebhooks?.Count() < 1)
         {
-            Console.Error.WriteLine("no webhooks configured!");
+            return false;
         }
 
-        var webhookableMessageContent = message.Content.Substring(message.Content.IndexOf(Trigger) + Trigger.Length + 1);
-        Console.WriteLine($"webhookable content: {webhookableMessageContent}");
         foreach (var wh in configuredWebhooks)
         {
-            if (webhookableMessageContent.StartsWith(wh.Trigger))
+            var triggerTarget = wh.Trigger;
+            foreach (var uacMatch in matchedUACs)
             {
+                foreach (var substitution in uacMatch.CommandAlterations)
+                {
+                    triggerTarget = new Regex(substitution.Key).Replace(triggerTarget, substitution.Value);
+                }
+            }
+            if (Regex.IsMatch(message.TranslatedContent, $"\\b{triggerTarget}\\b", RegexOptions.IgnoreCase))
+            {
+                var webhookableMessageContent = message.Content.Substring(message.Content.IndexOf(triggerTarget) + triggerTarget.Length + 1);
+                Console.WriteLine($"webhookable content: {webhookableMessageContent}");
                 var uacConf = Rememberer.SearchUAC(uac => uac.OwnerId == wh.uacID);
                 if (uacConf.Users.Contains(message.Author.IsUser) || uacConf.Channels.Contains(message.Channel) || uacConf.AccountInChannels.Contains(message.Author))
                 {
@@ -92,7 +95,7 @@ public class Webhook : Behavior
                     authedCache.TryAdd(message.Id, new WebhookActionOrder()
                     {
                         Conf = wh,
-                        webhookContent = webhookableMessageContent.Substring(wh.Trigger.Length + 1),
+                        webhookContent = webhookableMessageContent,
                     });
                     Console.WriteLine($"added {message.Id} to authedcache");
                     return true;
@@ -164,7 +167,7 @@ public class Webhook : Behavior
         }
         else
         {
-           Behaver.Instance.Reply(message.Id, await response.Content.ReadAsStringAsync());
+            Behaver.Instance.Reply(message.Id, await response.Content.ReadAsStringAsync());
         }
         return true;
     }