From 35fcd3f85105aa9f34d84acf077c8febce113f76 Mon Sep 17 00:00:00 2001
From: Thorsten <mail@aero2k.de>
Date: Thu, 18 Mar 2021 19:33:01 +0100
Subject: [PATCH] searx that

---
 distbot/plugins/searx.py | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/distbot/plugins/searx.py b/distbot/plugins/searx.py
index 6382e77..96e2725 100644
--- a/distbot/plugins/searx.py
+++ b/distbot/plugins/searx.py
@@ -27,9 +27,10 @@ class RateLimitingError(HTTPError):
 
 
 class Searx(Worker):
-    binding_keys = ["nick.search.#", "nick.next-searx"]
+    binding_keys = ["nick.search.#", "nick.search.that", "nick.next-searx", "nick.next.searx"] + Worker.CATCH_ALL
+    uses_history = True
     description = "search the web (using searx)"
-    usage = "bot: search <terms> or bot: next-searx (to drop current searx engine)"
+    usage = "bot: search <terms|that> or bot: next searx (to drop current searx engine)"
 
     search_list = []
 
@@ -99,21 +100,26 @@ class Searx(Worker):
 
     def parse_body(self, msg):
         words = get_words(msg)
-        if words[0] == "next-searx":
+        if words[0] == "next-searx" or words[0:2] == ["next", "searx"]:
             searx_provider = self.search_list.pop(0)
             return Action(msg='Ok. There goes {}'.format(searx_provider))
-        else:
+        elif words == ["search", "that"]:
+            result = self.searx(self.history[-1]['body'])
+        elif words[0] == "search":
             result = self.searx(' '.join(words[1:]))
-            if not result:
-                return Action(msg='Sorry, no results.')
-            else:
-                abstract, url, provider = result
-
-            if len(abstract) > 150:
-                suffix = '…'
-            else:
-                suffix = ''
-            return Action(msg='{}{} ({}) - powered by {}'.format(abstract[:150], suffix, url, provider))
+        else:
+            return
+
+        if not result:
+            return Action(msg='Sorry, no results.')
+        else:
+            abstract, url, provider = result
+
+        if len(abstract) > 150:
+            suffix = '…'
+        else:
+            suffix = ''
+        return Action(msg='{}{} ({}) - powered by {}'.format(abstract[:150], suffix, url, provider))
 
 
 ALL = [Searx]
-- 
2.47.3