[somebot] WS:Onboarding
authorSomeone <someone@somenet.org>
Wed, 8 Dec 2021 18:38:38 +0000 (19:38 +0100)
committerSomeone <someone@somenet.org>
Wed, 8 Dec 2021 18:38:38 +0000 (19:38 +0100)
modules/WSOnboarding.py [new file with mode: 0644]

diff --git a/modules/WSOnboarding.py b/modules/WSOnboarding.py
new file mode 100644 (file)
index 0000000..8793ea6
--- /dev/null
@@ -0,0 +1,81 @@
+# Mattermost Bot module.
+#  Copyright (c) 2016-2021 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
+#  published under MIT-License
+
+import pprint
+import re
+from inspect import cleandoc
+
+
+from AbstractWSHandler import *
+class WSOnboarding(AbstractWSHandler):
+    NAME = "onboarding"
+
+
+    def __init__(self, user_teams_and_channels, guest_teams_and_channels):
+        super().__init__()
+
+        self.user_teams_and_channels = user_teams_and_channels
+        self.guest_teams_and_channels = guest_teams_and_channels
+
+
+    def on_WS_EVENT(self, data):
+        user = self.bot.api.get_user(data['data']['user_id'])
+
+        if not "system_guest" in user["roles"]:
+            for team_id, chan_ids in self.user_teams_and_channels.items():
+                for chan_id, excluded_user_ids in chan_ids.items():
+                    if not user["id"] in excluded_user_ids:
+                        self.bot.api.add_user_to_team(team_id, user["id"], exc=False)
+                        self.bot.api.add_user_to_channel(chan_id, user["id"], exc=False)
+        else:
+            for team_id, chan_ids in self.guest_teams_and_channels.items():
+                for chan_id, excluded_user_ids in chan_ids.items():
+                    if not user["id"] in excluded_user_ids:
+                        self.bot.api.add_user_to_team(team_id, user["id"], exc=False)
+                        self.bot.api.add_user_to_channel(chan_id, user["id"], exc=False)
+
+        c = self.bot.api.create_dm_channel_with(data['data']['user_id'])
+
+        self.bot.api.create_post(c['id'], cleandoc("""
+            ## **``Willkommen auf Mattermost!``**
+
+            Ich habe mir erlaubt, dich in beide Teams (Gruppen) zu joinen. Mit der linken Spalte kannst du zwischen den 2 Teams hin und her springen.
+            **Das VoWi-Team beinhaltet**
+            + Einen öffentlichen Channel für jede LVA der :tu: Inf-Studien. Diese Channels werden von mir gemanaged. Ich informiere auch, wenn sich im VoWi zu der jeweiligen LVA etwas tut. :)
+            + Viele private Channels, die von Übungsgruppen genutzt werden. Du kannst für deine Gruppen gerne ebenfalls private Chanmel anlegen.
+            **Das FSInf-Team beinhaltet**
+            + Channels wie den Beratungschannel, Lernraum-Infos, das MemeOperationCenter, Programming und die Linux Lounge, Gaming, catcontent und andere Channels, die dich möglicherweise interessieren dürften.:)
+            """))
+
+        self.bot.api.create_post(c['id'], cleandoc("""
+            Es gibt etliche Befehle, die dir die Navigation in Mattermost erleichtern sollen. Einige wichtige sind:
+            + **``/join-active`` bzw. ``/join-all`` im FSInf-Team** - Befiehlt mir, dich in alle aktiven/verfügbaren öffentlichen Channels zu adden, damit du nich jedem Channel manuell beitreten musst.
+            + **``/tissjoin <kopie der deutschsprachigen favoriten-tabelle aus tiss>`` nur im VoWi-Team** - Basically /join-all in sinnvoll. Added dich in die LVA-Channels deiner tiss-favoriten.
+            + **``/beratungsinfo``** - Hilft dir, den Beratungschannel zu finden.
+            + **``/threads``** - Mattermost benutzt Threads, um Diskussionen übersichtlicher zu gestalten. Mit diesem Befehl kannst du deine Mitstudierenden darauf hinweisen, Threads zu benutzen. Dies ist der wohl most over-used Befehl hier und ist bereits zu memes verarbeitet worden.
+            + **``/raumsuche <Name des Raums>``** hilft dir Räume an der TU zu finden.
+            """))
+
+        self.bot.api.create_post(c['id'], cleandoc("""
+            Das Motto auf mattermost ist: **``Be excellent to each other``**
+            Sollte dir auffallen, dass sich wer nicht exzellent benimmt und z.b. andere beleidigt zögere nicht und kontaktiere eine_n der Team-Admin_as.
+            Sollte ich mich mal nicht exzellent benehmen, z.b. indem ich Befehle nicht ordnungsgemäß ausführe, oder du mich verbessern willst (ich bin in python geschrieben), kontaktiere meinen Botmaster @someone.
+
+            Happy am meisten mattern :)
+            """))
+
+        # additional info for guests.
+        if "system_guest" in user["roles"]:
+            self.bot.api.create_post(c['id'], cleandoc("""
+                ## ``Confirm your student email to get full access to Mattermost``
+                Your account is currently a [guest account](https://docs.mattermost.com/deployment/guest-accounts.html), which means your user expirience is limited due to privacy, copyright and licencing reasons and you are restricted to these channels:
+                * Chat
+                * Beratung (Consultation)
+                * Guest-Talk
+
+                Guest accounts are deleted after 30 days of inactivity.
+
+                To gain full access to all channels and features you need to go to your Account Settings and change your email to ``eXXXXXXXX@student.tuwien.ac.at`` and then click on the link in the confirmation email. You will then get full access within an hour.
+                """))
+