Wie einige eventuell wissen läuft der Twitch Chat über das alte aber bewährte Chat Protokoll IRC. Aus IRC Zeiten kennen viele auch noch den Nutzen eines Bouncers. Für die, die ein Bouncer nicht kennen hier eine kurze Erklärung. Auf damaligen IRC Servern gab es keine Logins oder ähnliches. Damit der eigene Name jedoch reserviert bleibt hat man sich auf einem Server einen IRC Client ständig online bleibt. Dies hat dann ebenfalls den Vorteil, dass man ältere Nachrichten empfangen kann, auch wenn man nicht „online“ war.
Für Twitch möchte man bspw. auch ältere Nachrichten von Twitch Kanälen empfangen oder nebenbei einen Log führen. Umgesetzt kann das Ganze recht Simpel mit Weechat. In diesem Fall auf einem Debian Stretch System.
WeeChat mit tmux auf Debian installieren
$ sudo apt-key adv –keyserver hkp://p80.pool.sks-keyservers.net:80 –recv-keys 11E9DE8848F2B65222AA75B8D1820DB22A11534E
$ echo „deb https://weechat.org/debian stretch main“ | sudo tee /etc/apt/sources.list.d/weechat.list
$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install weechat-curses weechat-plugins weechat-python weechat-perl tmux
$ sudo adduser ircuser
Quelle: WeeChat Dokumentation
Zu Twitch Verbinden
Für die nächsten Schritte zu dem User ircuser wechseln mit su ircuser.
Zuerst muss zum Chatten ein oAuth-Token generiert werden bspw. auf https://twitchapps.com/tmi/, Anschließend WeeChat mit dem Befehl weechat starten.
# Server hinterlegen mit Zugangsdaten für Twitch
/server add twitch irc.twitch.tv/6667 -password=oauth:XXXXXXXX -nicks=TWITCHNICK -username=TWITCHNICK
# Zusätzliche Inhalte „abonnieren“ die Twitch in IRC bereitstellt
/set irc.server.twitch.capabilities „twitch.tv/membership,twitch.tv/commands,twitch.tv/tags“
# Automatisch Twitch Server starten, wenn WeeChat gestartet wird
/set irc.server.twitch.autoconnect on
# Keine JOIN,QUIT,PART Nachrichten loggen
/set logger.level.irc.twitch 3
# Automatisch in folgende Channel joinen, wenn WeeChat sich mit dem Twitch Server verbindet
/set irc.server.twitch.autojoin „#gurkengewuerz,#thetownserver,#…“
/save
Quelle: https://gist.github.com/noromanba/df3d975613713f60e6ae
Twitch Skript installieren
Für Twitch gibt ein ein zusätzliches Python Skript welches den Stream Status als Titel anzeigt und dabei die IRC NOTICE Nachrichten korrekt interpretieren kann wie bspw. für Subscriptions.
# Skript installieren
/script install twitch.py
# Zum aktualisieren der Twitch Channel Daten in einem IRC Channel
/twitch
Quelle: https://github.com/weechat/scripts/blob/master/python/twitch.py
WeeChat Relay mit nginx Proxy
# Relay anlegen
/relay add weechat 9001
# Starkes Passwort festlegen
/set relay.network.password „randomPasswort“
/save
# Set up brute force protection limit_req_zone $binary_remote_addr zone=weechat:10m rate=5r/m; server { [...] # Your config goes here! location /weechat { proxy_pass http://localhost:8000/weechat; # Change the port to your relay's proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; # These two lines ensure that the proxy_set_header Connection "Upgrade"; # a WebSocket is used proxy_read_timeout 604800; # Prevent idle disconnects proxy_set_header X-Real-IP $remote_addr; # Let WeeChat see the client's IP limit_req zone=weechat burst=1 nodelay; # Brute force prevention } }
Quelle: https://github.com/glowing-bear/glowing-bear/wiki/Proxying-WeeChat-relay-with-a-web-server#nginx
WeeChat als Service laufen lassen
Zunächst sollte WeeChat geschlossen werden (/exit) und die nächsten Bash Befehle als Admin ausgeführt werden.
Um Weechat weiter im Hintergrund laufen zu lassen kann ein systemd Service erstellt werden welcher in einer tmux Session WeeChat als ircuser startet. Dafür wird in der Datei /etc/systemd/system/weechat.service folgendes hinzugefügt.
[Unit] Description=Weechat IRC Client (in tmux) [Service] User=ircuser Type=forking ExecStart=/usr/bin/tmux -2 new-session -d -s weechat /usr/bin/weechat ExecStop=/usr/bin/tmux kill-session -t weechat [Install] WantedBy=multi-user.target
Zum aktivieren des Service sudo systemctl enable weechat und zum starten sudo systemctl start weechat ausführen.
Quelle: https://iamkelv.in/blog/2017/08/weechat.html
Hinweis
Zwar werden JOIN/PART Nachrichten verschickt (manchmal auch gesammelt gesendet), jedoch nur bis ca. 1000 Zuschauern. Möchte man alle Zuschauer haben, kann man bspw. die Twitch API nutzen.