]> git.somenet.org - pub/jan/mattermost-bot.git/blob - modules/WSOnboarding.py
modules/WSGuestControl.py
[pub/jan/mattermost-bot.git] / modules / WSOnboarding.py
1 # Mattermost Bot module.
2 #  Copyright (c) 2016-2021 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
3 #  published under MIT-License
4
5 import pprint
6 import re
7 from inspect import cleandoc
8
9
10 from AbstractWSHandler import *
11 class WSOnboarding(AbstractWSHandler):
12     NAME = "onboarding"
13
14
15     def __init__(self, user_teams_and_channels, guest_teams_and_channels):
16         super().__init__()
17
18         self.user_teams_and_channels = user_teams_and_channels
19         self.guest_teams_and_channels = guest_teams_and_channels
20
21
22     def on_WS_EVENT(self, data):
23         user = self.bot.api.get_user(data['data']['user_id'])
24
25         if not "system_guest" in user["roles"]:
26             for team_id, chan_ids in self.user_teams_and_channels.items():
27                 for chan_id, excluded_user_ids in chan_ids.items():
28                     if not user["id"] in excluded_user_ids:
29                         self.bot.api.add_user_to_team(team_id, user["id"], exc=False)
30                         self.bot.api.add_user_to_channel(chan_id, user["id"], exc=False)
31         else:
32             for team_id, chan_ids in self.guest_teams_and_channels.items():
33                 for chan_id, excluded_user_ids in chan_ids.items():
34                     if not user["id"] in excluded_user_ids:
35                         self.bot.api.add_user_to_team(team_id, user["id"], exc=False)
36                         self.bot.api.add_user_to_channel(chan_id, user["id"], exc=False)
37
38         c = self.bot.api.create_dm_channel_with(data['data']['user_id'])
39
40         self.bot.api.create_post(c['id'], cleandoc("""
41             ## **``Willkommen auf Mattermost!``**
42
43             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.
44             **Das VoWi-Team beinhaltet**
45             + 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. :)
46             + Viele private Channels, die von Übungsgruppen genutzt werden. Du kannst für deine Gruppen gerne ebenfalls private Chanmel anlegen.
47             **Das FSInf-Team beinhaltet**
48             + 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.:)
49             """))
50
51         self.bot.api.create_post(c['id'], cleandoc("""
52             Es gibt etliche Befehle, die dir die Navigation in Mattermost erleichtern sollen. Einige wichtige sind:
53             + **``/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.
54             + **``/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.
55             + **``/beratungsinfo``** - Hilft dir, den Beratungschannel zu finden.
56             + **``/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.
57             + **``/raumsuche <Name des Raums>``** hilft dir Räume an der TU zu finden.
58             """))
59
60         self.bot.api.create_post(c['id'], cleandoc("""
61             Das Motto auf mattermost ist: **``Be excellent to each other``**
62             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.
63             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.
64
65             Happy am meisten mattern :)
66             """))
67
68         # additional info for guests.
69         if "system_guest" in user["roles"]:
70             self.bot.api.create_post(c['id'], cleandoc("""
71                 ## ``Confirm your student email to get full access to Mattermost``
72                 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:
73                 * Chat
74                 * Beratung (Consultation)
75                 * Guest-Talk
76
77                 Guest accounts are deleted after 30 days of inactivity.
78
79                 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.
80                 """))
81