]> git.somenet.org - pub/jan/mattermost.git/blob - somebot/modules/WSOnboarding.py
[somebot] WS:Onboarding
[pub/jan/mattermost.git] / somebot / modules / WSOnboarding.py
1 # Mattermost Bot.
2 #  Copyright (c) 2016-2020 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
3 #  published under MIT-License
4
5 import inspect
6
7
8 from AbstractWSHandler import *
9 class WSOnboarding(AbstractWSHandler):
10     NAME = "onboarding"
11
12
13     def on_WS_EVENT(self, data):
14         # no longer needed, as its checked on registration
15         if data["event"] != "new_user":
16             return
17
18         # on registration
19         # {'broadcast': {'channel_id': '',
20         #               'omit_users': None,
21         #               'team_id': '',
22         #               'user_id': ''},
23         # 'data': {'user_id': '...'},
24         # 'event': 'new_user',
25         # 'seq': ...}
26
27         # todo: make configurable?
28         self.bot.api.add_user_to_team("nnw9hzzrgbdmbdcade1ryfr5wa", data["data"]["user_id"])
29         self.bot.api.add_user_to_channel("sjouu7puffytfk6n4k36gpkter", data["data"]["user_id"])
30         self.bot.api.add_user_to_team("sswtb6oqciyyfmkibh6mjz479w", data["data"]["user_id"])
31         self.bot.api.add_user_to_channel("jo6iokdkdfnudrr5otiyijxm4c", data["data"]["user_id"])
32
33         self.spam_user(data)
34         return True
35
36
37     def spam_user(self, data):
38         c = self.bot.api.create_dm_channel_with(data['data']['user_id'])
39
40         # splitting up posts to prevent "Show More"
41         # this Markdown cannot be properly formatted because mm converts newlines to <br>
42
43         msg = inspect.cleandoc("""
44             ## **``Willkommen auf Mattermost!``**
45
46             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.
47             **Das VoWi-Team beinhaltet**
48             + 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. :)
49             + Viele private Channels, die von Übungsgruppen genutzt werden. Du kannst für deine Gruppen gerne ebenfalls private Chanmel anlegen.
50             **Das FSInf-Team beinhaltet**
51             + 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.:)
52             """)
53         self.bot.api.create_post(c['id'], msg, props={"from_webhook":"true"})
54
55         msg = inspect.cleandoc("""
56             Es gibt etliche Befehle, die dir die Navigation in Mattermost erleichtern sollen. Einige wichtige sind:
57             + **``/join-all`` im FSInf-Team** - Befiehlt mir, dich in alle verfügbaren öffentlichen Channel zu adden, damit du nich jedem Channel manuell beitreten musst.
58             + **``/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.
59             + **``/beratungsinfo``** - Hilft dir, den Beratungschannel zu finden.
60             + **``/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.
61             + **``/raumsuche <Name des Raums>``** hilft dir Räume an der TU zu finden.
62             """)
63         self.bot.api.create_post(c['id'], msg, props={"from_webhook":"true"})
64
65         msg = inspect.cleandoc("""
66         Das Motto auf mattermost ist: **``Be excellent to each other``**
67         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.
68         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.
69
70         Happy am meisten mattern :)
71             """)
72         self.bot.api.create_post(c['id'], msg, props={"from_webhook":"true"})