diff --git a/betterhelp.json b/betterhelp.json
index 896ea5624e921a1250495da3f53fbe3f5032f750..14a980cbb541efdd68367e3c09c7e8ceb05ed3de 100644
--- a/betterhelp.json
+++ b/betterhelp.json
@@ -57,6 +57,13 @@
             ],
             "Description": "Kings Cup Rules",
             "_Func": "echo"
+        },
+        {
+            "Names": [
+                ".today"
+            ],
+            "Description": "Random facts and events about today",
+            "_Func": "echo"
         }
 
         
diff --git a/mod_today.py b/mod_today.py
new file mode 100644
index 0000000000000000000000000000000000000000..9fe435c8f8a1624444d3c0c56fa0fabed6af2c06
--- /dev/null
+++ b/mod_today.py
@@ -0,0 +1,83 @@
+import requests  # Apache 2.0
+import numpy as np
+from bs4 import BeautifulSoup  # MIT
+from datetime import date, datetime
+
+
+class ModuleToday:
+    def __init__(self, log):
+        self.tag = "%20s - " % "mToday"
+        self.log = log
+
+        # self.load_today_from_csv(group)
+        self.update()
+        self.log.debug(f"{self.tag}Modul Today geladen")
+
+    def loadTodayEvents(self):
+        try:
+            response = requests.get(
+                f"https://history.muffinlabs.com/date", headers={"Accept": "application/json"})
+            result = response.json()
+            self.log.debug(f"{self.tag}Done loading events")
+            
+            return result['data']['Events']
+        except (SyntaxError, ValueError) as exc:
+            self.log.warning(
+                f"{self.tag}Error while  loading events: {exc}")
+            return []
+
+    def getTodayMessage(self):
+        message = ""
+
+        today = date.today()
+        sToday = today.strftime("%d.%m.%Y")
+        message += f"Heute ist der {sToday}\n"
+        message += f"Der Tag dauert {self.sun['day_length']} Stunden.\n"
+        message += f"Sonnenaufgang: {self.sun['sunrise']}\n"
+        message += f"Sonnenuntergang: {self.sun['sunset']}\n"
+
+        message += "\nWhat holiday is today?\n"
+        for title in self.whatIsList:
+            message += f'- {title}\n'
+
+        facts = np.random.choice(self.todayEvents, 5)
+        message += '\n5 Random History Facts about today:\n'
+        for fact in facts:
+            message += f'In {fact["year"]}: {fact["text"]}\n'
+
+        return message
+
+    def crawl_what_is_list(self):
+        temp_list = []
+        try:
+            data = requests.get(
+                "https://nationaltoday.com/what-is-today/").text
+            soup = BeautifulSoup(data, features="html.parser")
+
+            for title in soup.find_all(class_="holiday-title"):
+                name = title.text
+                if name not in temp_list:
+                    temp_list.append(name)
+        except Exception as ex:
+            self.log.error(
+                f"{self.tag}Failed crawling what-is-today list: {ex}")
+        return temp_list
+
+    def loadTodaySun(self):
+        try:
+            response = requests.get(
+                f"https://api.sunrise-sunset.org/json?lat=51.2277411&lng=6.7734556&date=today", headers={"Accept": "application/json"})
+            result = response.json()
+            self.log.debug(f"{self.tag}Done loading sun informations")
+            return result['results']
+
+        except (SyntaxError, ValueError) as exc:
+            self.log.warning(
+                f"{self.tag}Error while sun informations events: {exc}")
+            return []
+            
+    def update(self):
+        self.todayEvents = self.loadTodayEvents()
+        self.whatIsList = self.crawl_what_is_list()
+        self.sun = self.loadTodaySun()
+        self.log.debug(f"{self.tag}Modul Today updated")
diff --git a/signalbot.py b/signalbot.py
index fb1512b458e4de1700eef7f0df01b28357345895..1f05d610605438e9d117b51ed4ce9f66f24c6cbe 100755
--- a/signalbot.py
+++ b/signalbot.py
@@ -24,6 +24,7 @@ from mod_help import ModuleHelp
 from mod_quotes import ModuleQuotes
 from mod_tex import ModuleTex
 from mod_eventreminder import ModuleEventReminder
+from mod_today import ModuleToday
 
 #  @TODO README Schreiben mit signal-cli Raspberry Pi Installationsanleitung + signal-cli Systembus Einrichtung + Systemd für den Signalbot
 #  @TODO Einfacher Wrapper zum senden von Nachrichten per shell
@@ -64,6 +65,7 @@ tex = None
 help = None
 event_reminder = None
 translator = None
+today = None
 CONFIG = {}
 FUN_DICT = {}
 
@@ -198,6 +200,8 @@ def handle_action(timestamp, source, groupID, message, attachments):
             get_deepl_translation(receiver, " ".join(str(x) for x in msg_splitted[1:]))
         elif action == "kingscup" and (groupInfo is None or action in groupInfo["COMMANDS"]):
             get_kings_cup(receiver)
+        elif action == "today" and (groupInfo is None or action in groupInfo["COMMANDS"]):
+            get_today(receiver)
         else:
             unknown_command(receiver,
                             message)  # wenn nicht berechtigt, dann "ich seh nix, ich weiss nix, ich hör nix" => unbekannter befehl
@@ -469,6 +473,9 @@ def get_deepl_translation(receiver, message):
 def get_kings_cup(receiver):
     send_a("Don't drink and derive!",receiver, "/home/pi/signalbot/kings_cup_regeln.png")
 
+def get_today(receiver):
+    send(today.getTodayMessage(), receiver)
+
 def on_mqtt_message(client, userdata, msg):
     print(msg.topic + " " + str(msg.payload))
     send(msg.topic + " " + str(msg.payload), CONFIG['Admins']['Fred'])
@@ -498,6 +505,7 @@ def init_schedule_jobs():
     schedule.every().day.at("09:00").do(run_threaded, event_reminder.check_for_events)
     schedule.every().tuesday.at("10:00").do(run_threaded, gg_remind_schichten)
     schedule.every().day.at("11:00").do(run_threaded, gg_remind_stundenzettel)
+    schedule.every().day.at("00:01").do(run_threaded,today.update())
     # schedule.every(10).seconds.do(run_threaded, birthday_reminder.check_for_birthdays)
 
 
@@ -544,7 +552,7 @@ if __name__ == "__main__":
     tex = ModuleTex(log)
     help = ModuleHelp('/home/pi/signalbot/betterhelp.json', log)
     event_reminder = ModuleEventReminder(GROUPS, send, log)
-
+    today = ModuleToday(log)
     loop = GLib.MainLoop()
     bus = SystemBus()