[HowTo] Wie erstelle ich meinen EIGENEN Twitch Bot

  • Hey,


    in diesem Tutorial zeige ich euch wie ihr mit der TMIJS API einen eigenen Twitch Bot erstellen könnt.


    1. Programme die man benötigt


    1.1 Atom
    1.2 Node.JS (sehr wichtig)


    1.1 Ihr braucht ein Programm womit ihr eine js. + gegebenenfalls eine .bat Datei erstellen + bearbeiten könnt.
    Dazu empfehle ich euch:
    Atom
    Kleiner Tipp: falls ihr Atom noch NICHT benutzt, ich empfehle es euch! Es ist einfach & einfach gut :D


    1.2 Ihr braucht Node.JS, weil der ganze Bot auf Node aufgebaut ist.
    Node.JS




    2. Erste Schritte


    2.1 Erstellung eines Ordners
    2.2 .json Beschreibung erstellen


    2.1 Um einen Ordner zu erstellen braucht ihr erst mal die Eingabeaufforderung ( CMD ).


    Schritt 1: Gehe auf deinen Desktop oder sonst dort hin, wo du den Ordner erstellen willst.
    Dazu benutzt du das Kommando: CD C:\Users\DEINNAME\Desktop
    Das wichtige dabei ist das du aufpasst ob es auf der richtigen Festplatte ist, und dazu musst du noch deinen Namen einfügen.


    2.2 Um eine .json Beschreibung zu erstellen benötigen wir Node.JS
    Dazu gehen wir zuerst mit dem Kommando: CD C:\Users\DEINNAME\Desktop\DEINORDNER
    Du musst dazu noch deinen Namen + deinen Ordner den du eben in 2.1 erstellt hast ganz hinten beim Kommando einfügen.
    Dann benutzt ihr das Kommando: npm init
    Hier könnt ihr Name, Version, Beschreibung & mehr des Bots festlegen.
    Wenn ihr bei einigen Sachen, z.B entry point, nichts eingeben wollt, drückt einfach ENTER.
    Wenn ihr fertig seid, müsste in dem Ordner nun eine package.json Datei sein.


    3. Es geht los!


    3.1 Atom Ordner öffnen + app.js erstellen
    3.2 Module installieren
    3.3 Twitch Verbindung


    3.1 Ihr startet zunächst Atom, dann geht ihr oben Links auf File > Open Project Folder > einfach den Ordner auswählen den ihr auf dem Desktop erstellt habt.
    Dann öffnet den Ordner auf der Linken Seite

    Nachdem ihr den Ordner geöffnet habt, macht ihr einfach Rechtsklick
    auf den Ordner > new File > nennt sie app.js


    3.2
    Nun öffnen wir wieder die Eingabeaufforderung und geben dort im Pfad des Twitch-Bots ein:
    npm install tmi.js
    Wenn ihr dies gemacht habt, seht ihr im Twitch-Bot Ordner, einen Ordner Namens: node_modules
    In dem sollten dann den Ordner "tmi.js" dort wieder finden.


    3.3
    Nun gehen wir wieder in Atom und öffnen dort die app.js
    In diese tragen wir erstmal das Modul ein:

    JavaScript
    var tmi    = require('tmi.js');




    Danach werden die Connect Informationen eingetragen:



    Ihr müsst die Optionen an euren Bot & normalen Kanal anpassen!
    Zeile 10 = username = Der Name von eurem Bot
    Zeile 11 = password = Das Passwort ist nicht einfach das Passwort, ihr braucht dafür den Oauth-Key von eurem Bot Account.
    Dazu loggt ihr euch hier ein: OAuth
    & gebt dann alles was dort steht bei password ein!

    4.
    Die ersten Funktionen ( Beispiele ohne Erklärung )


    4.1 Beim Verbinden soll eine Nachricht in der Konsole erscheinen
    4.2 Beispiel eines Twitter Commands



    4.1 Beispiel einer Nachricht beim Start des Bots in der Konsole


    ACHTUNG: Falls ihr diesen Code benutzen wollt, müsst ihr bei der 4 Zeile, wo "exxoticx" steht euren Kanal-Namen hinzufügen!

    JavaScript
    // Connect Message in der Console
    client.on('connected', function(adress, port){
    console.log("Adresse: " + adress + " Port: " + port);
    client.say("exxoticx", "Der Bot ist nun mit dem Stream verbunden!");     
    });



    4.2 Beispiel eines Twitter Commands
    ACHTUNG: Falls ihr diesen Code benutzen wollt, müsst ihr bei der 3 Zeile, wo "exxoticx" steht euren Kanal-Namen hinzufügen!



    JavaScript
    client.on('chat', function(channel, user, message, self) {
      if(message == "!twitter"){
        client.say("exxoticx", "Mein Twitter: https://twitter.com/exxoticxTV")}
    });


    5. Wie startet man den Bot?
    Um den Bot zu starten brauchst du eine .bat!
    In diese .bat schreibst du einfach:
    node app.js


    oder so:





    6. Ende


    Ich hoffe ich konnte euch helfen :)
    Bei Fehler oder Fragen zu Commands - einfach hineinschreiben :)


    mit freundlichen Grüßen
    exxoticx


    bei Fragen schreibt mir gerne bei Twitter (@exxoticxH1)

  • Ich hab 2 Fragen ich hoffe mal dass mir jemand weiterhelfen kann
    1. Wie kann man denjenigen der den Command ausführt in der Nachricht benennen bzw. markieren?
    2. Wie kann man das so machen dass es egal ist ob man ein Command groß oder klein schreibt also zB. !beispiel , !Beispiel

  • Hey CookiePaul,


    grundsätzlich würde ich dich zunächst auf folgende Quelle verweisen: tmi.js v1.2.1
    Dort findest du die Dokumentation zur aktuellen Version von tmi.js


    Da das aber keine Antwort auf deine Frage ist, fangen wir doch mal mit deinem ersten Punkt an, hierzu benötigst du sowohl client.say als auch das userstate Objekt.

    JavaScript
    client.on('chat', function(channel, userstate, message, self) { 
      if(message == "!hi"){ 
        client.say("channel", "Sei gegrüßt "+userstate.username+", auf meinem Channel!");
      }
    });

    Das userstate Objekt beinhaltet alle Informationen des Nutzers, der eine Nachricht in den Chat gepostet hat, bzw. in diesem Fall das Kommando ausgeführt hat. Möchtest du also, dass der ausführende Nutzer genannt wird, sollte das über userstate->username (um den Namen auszugeben) funktionieren.


    Damit die Groß- und Kleinschreibung nicht weiter beachtet wird, wäre die einfachste Lösung folgende:

    JavaScript
    client.on('chat', function(channel, userstate, message, self) { 
      if(message == "!Beispiel" || message == "!beispiel"){ 
        client.say("channel", "Test");
      }
    });

    Mit dem logischen Operator || (oder) fragt man einfach ab, ob es !Beispiel oder !beispiel heißt und führt den Code dann aus.


    Ich hoffe dir somit erstmal weitergeholfen zu haben. Ansonsten schau dir die Dokumentation von dem tmi.js nochmal genauer an, dort steht alles beschrieben.

  • Ich hätte da auch mal eine Frage, ich hau das mal einfach hier rein ^^


    Und zwar wie kann ich Subscriber, Follower, Host Events testen? Ich arbeite mit der TwitchLib Libary. So einfache Events wie Chat oder so kann man ja einfach so testen aber grad bei Subscriber, wo ich nichtmal Affilate bin xD


    Wäre toll wenn da einer weiß, wie das geht :)


    Peace :peace:

    Name lautet Patrick.
    Aber im Internet nennt man mich Ross

  • Ich habe vor einem Jahr ein Studium angefangen (Wirtschaftsinformatik) habe darüber Java gelernt und bringe mir gerade selbständig javascript bei. Daher habe ich das auch versucht und funktioniert einwandfrei. Gibt es aber irgendwie eine Art Übersicht, wie man noch bestimmte Sachen machen kann? Via Google habe ich jetzt nicht soooo viel herausgefunden

  • Was meinst du denn genau mit: "Gibt es aber irgendwie eine Art Übersicht, wie man noch bestimmte Sachen machen kann?"


    Womit denn genau machen? Bezogen auf die Javascript Chat Library tmi.js oder etwas anderem, was hier in dem Thread bereits genannt wurde?


    Oder möchtest du gar keine Library verwenden und von grundauf Anfragen an den Chat/API verarbeiten?


    Wenn du das verrätst, kann man dir sicher besser weiterhelfen mit dem was du vorhast.

  • Also da ich noch am Anfang bin mit JavaScript, wäre jetzt erstmal die Frage, macht es Sinn mit dem Programmieren von einem Chatbot zu lernen? Falls ja, dann eher mit der Library oder lieber von grundauf? Wenn library, wie finde ich heraus was gibt es so für tolle Sachen? Also ich habe jetzt selber herausgefunden, wie ich ein ping befehl mache und der Ping vom Schreiber angezeigt wird.
    Aber gibt es z.b. auch eine Möglichkeit ein Lied in eine Spotify-Playlist hinzufügen. Im sinne von !sr Künstler - TItel -> zur Playlist xy hinzugefügt.


    Im Endeffekt suche ich einfach eine Art leitfaden, damit ich damit rumspielen kann. Ergibt das etwas mehr Sinn? Also mit Hilfe von Chatbot programmieren JavaScript lernen

  • Um Programmieren zu lernen ist es nicht so wichtig was du entwickeln möchtest, sondern vielmehr das du etwas entwickelst.


    Du hast dir ja jetzt schon ein schönes Projekt ausgesucht mit dem Chatbot, was dich sicher vor einige Probleme stellen wird aber wenn das entsprechende Interesse da ist, auch eine gute Basis bietet um viele verschiedene Aspekte zu lernen.


    Die Frage ob du eine Library verwenden möchtest, musst du dir anhand folgendem selbst beantworten:


    - Möchtest du von grundauf "verstehen" wie bspw. die Kommunikation zwischen dem Chat/der API und deinem Programm funktioniert?
    oder
    - Möchtest du dich gerne in die Funktionalitäten von bereits geschriebenem Code einlesen und dessen Funktionalitäten verwenden?


    Um das einlesen wirst du bei beiden Varianten nicht kommen. Persönlich würde ich ja vorschlagen, die Kommunikation selbst zu basteln, anstelle sich jetzt was bereits vorhandenes anzuschauen.
    Für den Anfang wirst du auch sicher kaum etwas mit dem Repository bspw. von tmi.js anfangen können und wie es intern funktioniert. Siehe: TMI.js


    Du musst auch aufpassen, dass hinter solchen Aktionen wie "...ein Lied in eine Spotify Liste einzuzfügen" noch eine ganze Menge mehr steckt.


    Du bräuchtest dafür:


    - Etwas, was mit dem Chat von Twitch kommuniziert
    - Den Befehl verarbeitet
    - Das Resultat an Spotify weitergibt


    Da du für den Bot eh etwas brauchst, was mit dem Chat von Twitch kommuniziert, fängt man doch am Besten damit an.


    Twitch bietet dir in der Doku einige Informationen zu dem Chat: Chatbots & IRC Guide
    Das solltest du dir auf jeden Fall einmal anschauen. Um der Aktualität gerecht zu werden, solltest du dir besonders die Verbindung über Websockets betrachten!
    Von der Doku aus, gibt es auch noch einige Verlinkungen, die sicher auch nicht schaden, einmal betrachtet zu werden.


    Als Aufgabe passt doch dann ganz gut: Versuche eine Verbindung zum Twitch-Chat aufzubauen

    Du wirst dabei sicher auch suchen müssen, was Websockets sind und wie man sich zu diesen über JavaScript verbindet (dazu gibt es sicher einiges im Internet). Wenn du dann noch die Eigenheiten von der Twitch-Doku beachtest, sollte das kein Problem sein.


    Viel Erfolg dabei, nicht gleich den Kopf in den Sand stecken wenn was nicht klappt und ansonsten gerne fragen.

  • Uff, ja ist schon eine Menge, aber ich bin bereit mich hinzuprobieren. Werde mal von Grund auf versuchen eine Verbindung aufzubauen. Mir ist natürlich klar, dass es nicht einfach mal so geht mit Songrequest :P Websocket ist für mich soweit klar, eine Verbindung dazu aufbauen hat allerdings noch nicht geklappt.


    Bin mittlerweile aber auch zu müde um zu sagen, ich habe effektiv was versucht :D


    Danke schon mal für deine Antwort!

  • In diesem Fall musst du für den Bot einen eigenen Account auf der Plattform, auf der du streamst, erstellen. Abhängig davon was für einen Bot du verwendest, kannst du dich bei diesem dann mit dem Account, den du extra für den Bot erstellt hast, anmelden.


    Um dir da allerdings genauere Hilfe geben zu können, bräuchte es mehr Informationen zu dem verwendeten Bot und der genutzten Plattform.

  • Der Bot wird immer mit dem Accountnamen schreiben, über den die Anmeldung in der verwendeten Software erfolgt ist (sofern es eine lokale Software ist wie bspw. Ankhbot). Der Accountname ist der Name, der den jeweiligen Nutzer im Chat repräsentiert.


    Wenn du den Bot also über den Account "pianofreak800" angemeldet hast in der jeweiligen Software, wird dieser auch als "pianofreak800" schreiben. Das gleiche gilt für jeden anderen Account. Um also mit einem anderen Namen schreiben zu können, brauchst du einen entsprechenden Account mit dem Namen über den sich der Bot anmeldet.


    Bspw. Nightbot hat auf Twitch einen Account der "Nightbot" heißt, also schreibt dieser auch als "Nightbot" in allen Chats, in denen dieser aktiv ist.


    Sofern du einen Dienst wie Nightbot, Moobot, WizeBot o.Ä. verwendest wirst du dich wohl auf deren Seiten mit deinem Twitch-Account authentifizieren können, hast aber dann nicht den Benutzernamen deines Accounts, sondern den Benutzernamen des jeweiligen Anbieters für deinen Bot.
    Grund dafür ist, dass die jeweiligen Anbieter einen Account mit dem entsprechenden Namen erstellt haben und dieser die angebotenen Dienste für die Nutzer ausführen.

  • Ahoi, ich habe ein Problem.
    Ich möchte als zuschauerinteraktion den Bot dazu bringen witze zu erzählen.
    Dazu habe ich folgenden Code genutzt:


    JavaScript
    var badjokes = Array(
    witz1,
    witz2,
    witz3
    );
    var randomJoke = badjokes[Math.floor(Math.random()* badjokes.length)];


    das funktioniert auch... mit einem Witz, der Code der geladen wird wird nur einmal durchgegangen und dann immer der selbe code Ausgegeben.
    Habt ihr / Hast du eine Idee wie ich das ändern kann?


    Der Code wird ausgeführt über folgenden Chat-Befehl:

    JavaScript
    client.on('chat', function(channel, userstate, message, self) {
      if(message == "!witz"){
        client.say("TheOWord", "@"+userstate.username+" möchte einen Sehr schlechten witz hören, hier ist er: "+randomJoke+"");
      }
    });


    Ich habe gedacht den Bot Automatisch dis-/reconnecten zu lassen, dies erschien mir aber ein wenig unnötig.
    Ich würde mich über jegliche Anregung freuen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!