From ea186fac4d6162e1a151e19d94d2204aed73e9d5 Mon Sep 17 00:00:00 2001
From: Von Random <von@mechanus.net>
Date: Fri, 7 Feb 2025 22:46:36 +0200
Subject: [PATCH] bot self report errors

---
 pgbotlib/api.py | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/pgbotlib/api.py b/pgbotlib/api.py
index 28f5909..ee0b0ca 100644
--- a/pgbotlib/api.py
+++ b/pgbotlib/api.py
@@ -1,6 +1,7 @@
 import json
 import random
 import re
+import sys
 import typing
 
 import bs4
@@ -26,18 +27,21 @@ class ApiWrapper:
 
     # this is the entry point for the api calls
     # if you add another api, make sure there is a match here
-    # this could have used match - case statement, but python 3.9
     def call(self, api: str, data: typing.Union[str, None],
              message: str) -> str:
-        match api:
-            case 'img_url': return self.format_img(data)
-            case 'gif': return self.get_gif()
-            case 'kmp': return self.get_kmp()
-            case 'fga': return self.get_fga()
-            case 'fakenews': return self.get_fakenews()
-            case 'anek': return self.get_anek()
-            case 'y_search': return self.y_search(message)
-            case _: return self.FAILED
+        try:
+            match api:
+                case 'img_url': return self.format_img(data)
+                case 'gif': return self.get_gif()
+                case 'kmp': return self.get_kmp()
+                case 'fga': return self.get_fga()
+                case 'fakenews': return self.get_fakenews()
+                case 'anek': return self.get_anek()
+                case 'y_search': return self.y_search(message)
+                case _: return self.FAILED
+        except Exception as e:
+            sys.stderr.write(e)
+            return self.FAILED
 
     def __sanitize_search(self, message: str) -> str:
         """Removes one of each of the search tokens from the query