Bot_Omb - Changelog

  • 02.01.2016

    Bot_Omb & Twitter


    Der Bot_Omb hat ein neues und etwas größeres, nennen wir es einfach erwähnenswertes, Feature spendiert bekommen. Dieser schreibt nämlich nun einen "zufällig" generierten Text auf Twitter, der eine Verlinkung zu eurem Channel der gerade online gegangen ist enthält.


    Alle X Minuten prüft Bot_Omb über die Twitch API ob ein Stream online ist und sobald dies erkannt wird, erfolgt der Beitrag. Es wird pro Stream der online geht nur ein Beitrag auf Twitter erstellt!


    Aktuell benötigt der Bot_Omb eine Liste der "Nutzer", gegen die geprüft werden soll ob deren Stream aktiv ist. Grundsätzlich hätte ich es auch so machen können, dass jeder Bot Nutzer dort niedergeschrieben wird und nachträglich lässt sich dies noch sehr leicht anpassen.
    Der eigentliche Grund für die Liste ist, dass man so gezielt Leute hinzufügen kann.


    Dieses Feature ist besonders interessant für Streamer, die über einen Bot verschiedene Kanäle auf Twitter "promoten" wollen bspw. für ihre eigene kleine Twitch-Gruppe. So können Leute die dem Twitter-Account folgen sofort feststellen, ob jemand aus einer "Gruppe" online ist.


    Um die Funktionalität zu gewährleisten wird Twython benötigt! Wer für seine eigene Verwendung des Bot_Omb diese Funktion nicht benötigt, kann diese leicht rausnehmen. Die Grundfunktionalitäten werden über die Twitter.py gewährleistet.


    Wie viele Follower habe ich?


    Diese Frage ist leicht beantwortet, schau einfach unten rechts von deinem Stream und du siehst die Zahl. Doch wie viele der Follower bekommen eine Benachrichtigung wenn ich online gehe? Diese Frage kann man nicht so leicht beantworten.


    Daher hat der Bot_Omb einen neuen Befehl spendiert bekommen. Über !follows ermittelt der Bot_Omb anhand eurer Anzahl von Followern wie viele davon eine Nachricht bekommen sobald ihr Live geht.
    Pro Nutzer ist eine Anfrage für sich selbst gleichzeitig möglich. Je nach Anzahl eurer Follower kann es eine Weile dauern, bis Bot_Omb durch alle durchgegangen ist. Da dies über Threads abgehandelt wird, werden die anderen Funktionalitäten des Bots nicht beeinträchtigt in der Bearbeitungszeit.


    Das Ergebnis bekommt ihr dann per Whisper zugeflüstert. Diese Funktion ist nur im Hauptchannel unter Twitch möglich!


    Was kommt als nächstes?


    Schauen wir einfach mal...

    11.01.2016


    Wenn ich meine Augen über den kleinen Stapel 5cm x 4cm großen PostITs schweifen lasse fällt mir auf, dass ich doch einiges die Tage hier geschafft habe. Genauso gut sehe ich aber auch, dass noch einiges vor mir liegt.


    Nach dem folgenden schönen Thread Twitch Punktesystem und dem Gespräch mit ApfelBraut sowie ein paar Änderungen die mir am Herzen lagen, konnte ich einige Verbesserungen/Erweiterungen vornehmen.


    Folgende Neuerungen sind hinzugekommen und (sollten) ohne Probleme funktionieren:

    • Mit dem Befehl !member können sich Nutzer in eurem Channel anzeigen lassen, wie lange sie euch schon folgen.
    • Mit dem Befehl !member username (!member serdrad0x) könnt ihr euch von einzelnen Nutzern anzeigen lassen, wie lange sie euch schon folgen.
    • Mit dem Befehl !uptime könnt ihr im Chat anzeigen, wie lange euer Stream schon online ist.
    • Mit dem Befehl !rank add rank priv (!rank add Gurke 0)könnt ihr einen Rang mit einem Befugnisslevel verknüpfen.
    • Mit dem Befehl !ranks werden euch alle Ränge eures Channels angezeigt.
    • Mit dem Befehl !rank remove rank (!rank remove Gurke) lässt sich ein bestimmter Rang eures Channels entfernen.
    • Mit dem Befehl !rank me wird euch euer aktueller Rang angezeigt. Ist kein Rang mit eurem Befugnisslevel verknüpft, wird euch eure Befugniss angezeigt.
    • Mit dem Befehl !priv username rank (!priv serdrad0x Gurke) könnt ihr euren Nutzern nun mit Rängen verknüpfte Befugfnislevel erteilen.

    Folgende Verbesserungen wurden gemacht:

    • Die Sprache welche über !lang language eingestellt wird, bleibt bei einem Neustart des Bots erhalten.
    • Im Hauptchannel vom Bot angezeigte follows (Follower die Benachrichtigung beim Online gehen bekommen) mit !follows werden nun in mehreren Threads gleichzeitig abgearbeitet! Als kleines Beispiel hat eine Anfrage für 40.000 Follower vorher ca. 26 Minuten gedauert. Diese wurde nun auf etwa 10 Minuten reduziert.

    Folgende Funktionen sind bereits enthalten, haben aber noch schwächen:

    • Mit dem Befehl !bank robbery kann ein Banküberfall gestartet werden.
    • Mit dem Befehl !bank spy kann die Bank ausspioniert werden.
    • Mit dem Befehl !bank robbery flee kann von einem Banküberfall geflohen werden.
    • Mit dem Befehl !bank guards werden die Wächter der Bank angezeigt.
    • Mit dem Befehl !bank guard add name difficulty (!bank guard add Tim 60) kann ein neuer Wächter hinzugefügt werden.
    • Mit dem Befehl !bank guard remove name (!bank guard remove Tim) kann ein Wächter entfernt werden.

    Der Inhalt der Bank (Tresor, Wachen) ändert sich alle X Minuten. Die Wächter sowie deren Anzahl wird ebenfalls zufällig bestimmt. Mit dem spy Befehl kann man sich vor dem Überfall einen Eindruck verschaffen. Jenachdem ob die Spionage klappt, erhält man Infos über die Wächter sowie den Inhalt des Tresors. Eine Spionagemission dauert immer zufällig lange. Je mehr spioniert wird, desto mehr werden die Wächter vorsichtig. Daher erhöht sich mit jeder Spionage der Schwierigkeitsgrad. Wenn man an einem Raubzug teilnimmt und flieht, hat man je nach Anzahl der Raubteilnehmer eine erhöhte Chance noch fliehen zu können. Je weniger teilnehmen desto schwerer ist es. Während eines Überfalls kann man erst entdeckt und im schlimmsten Fall gefangen genommen werden.


    Soweit erstmal dazu, es fehlt noch das man "Geld" vom Raubzug bekommt und eben eine "Strafe" sofern man erwischt wird. So zum testen funktioniert aber schon mal alles.


    Was ist noch geplant:

    • Die Twitter-Funktion soll nicht sofort bei Streamneustart greifen. Das heißt, wenn der Stream abstürzt und neu gestartet wird, soll sofern innerhalb der letzten X Minuten bereits auf Twitter gepostet wurde, nicht nochmal gepostet werden.
    • Die CSV Datein die aktuell von "Hand" geupdated werden, sollen aufgrund der CSV-Dateien des Haupt-Bots geupdated werden.
    • Irgendwie ist der Wurm bei den Umlauten der deutschen Sprache drin. Ich konnte es bisher nicht fixxen, werden aber weiter ein Auge darauf werfen.
    • Die Bot Befehle sollen ein wenig umstrukturiert werden. Vorne der "Haupt"-Punkt gefolgt von den "Unter"-Punkten !main sub
    • Die Ausgabe der Nachrichten soll eingestellt werden können. So kann man selbst entscheiden ob Ausgaben im Chat oder Geflüstert werden sollen.
    • Die Watchtime der Nutzer soll ermittelt werden können. In diesem Zusammenhang auch ein Punktesystem für Zuschauer.
    • Umfragen sollen nicht mehr nur auf den !vote id Befehl begrenzt werden sondern auch anhand von Wörtern (#tomate) ausgewählt werden können.

    Ich denke, da brauch sich der Bot nicht verstecken. Soweit bin ich recht zufrieden mit der bisherigen Umsetzung, dass mit der Ausgabe der Befehle ob Chat oder Whisper wird bestimmt noch eine Qual (nicht weil es schwer ist sondern viel).
    Die Funktionen sind noch nicht auf GitHub zu finden, sondern lediglich in der "Live"-Version. Berechtigungen können soweit für die Ausführung der Befehle schon gesetzt werden, liegen aber meist bei 99 weil noch nicht auf GItHub und testen und so!


    Dann danke ich fürs lesen und wenn noch wer Ideen hat, Vorschläge oder Verbesserungen, ich höre mir diese gerne an.

  • 31.01.2016


    Ein kleines Update zum aktuellen Stand der Lage.


    Es gab ein paar Verbesserungen, die sogar erwähnenswert sind. So wurde die Twitter Funktionalität weiter verbessert. Um doppelte identische Tweets zu vermeiden, lädt Bot_Omb beim Start den letzten Tweet von Twitter und speichert diesen zwischen. Kommt es dann zu einem Tweet, wird einfach gegen den "letzten Tweet" geprüft und bei Bedarf ein neuer gewählt.
    Natürlich wird dadurch der gespeicherte "letzte Tweet" durch den Neuen ersetzt.


    Auch die Problematik mit den Umlauten wurde beseitigt. Das Wirrwarr von encode/decode was es vormals gab, wurde entfernt und damit auch die Fehlerquelle!


    Die Prüfung der "watch time" hat auch Verbesserungen erfahren, so sollte es nun nicht mehr zu Zeitresets kommen, da ein Nutzer aus der Twitch API nicht gefunden werden konnte.


    Ein Fehler im Umfragesystem wurde beseitigt. Es wurden vorher "negative" Votes akzeptiert, z.B. Testumfrage 0. Ja 1. Nein ---> #-1. Dies klappt jetzt nicht mehr. Dafür werden bei den Hashtag Votes neben bspw. #OptX auch #id akzeptiert.


    Für die Ankündigungen wurde noch eine Beschränkung eingerichtet und zwar kann man nun maximal drei Ankündigungen haben und diese mit einer minimalen Verzögerung von einer Minute ausgeben.


    Ansonsten wurden nun auch alle Änderungen auf GitHub zur Verfügung gestellt!


    Folgende Probleme gibt es:

    • Whitelist: Hier ist der Wurm drin, aber finden konnte ich ihn bisher leider nicht. Ursache dafür, dass fremde "Bots" teilweise in der Whitelist nicht akzeptiert werden, liegt scheinbar daran, wie diese ihre Befehle an Twitch übermitteln.

    Folgende Neuerungen gibt es:

    • Mit dem Befehl !clam question könnt ihr die magische Miesmuschel nach den wichtigen Dingen des Lebens befragen.
    • Mit dem Befehl !roulette startet ihr das bekannte Spiel, aber gebt Acht! Nicht das es euer letzter Versuch war...
    • Mit dem Befehl !hug random zeigt ihr einer zufälligen Person im Chat, wie gern ihr sie habt!
    • Mit dem Befehl !hug person zeigt ihr einer bestimmten Person im Chat, wie gern ihr sie habt!

    Dann bleibt mir nur noch viel Spaß zu wünschen, beim austesten der Funktionen!

    25.04.2016


    Es gab so viele Änderungen und trotzdem sieht es so aus, als hätte sich nichts geändert. Wie kann das sein?


    Grundsätzlich habe ich mich daran gemacht, die internen Strukturen (ein wenig) zu säubern. Es gab viel zu viele Redundanzen bei Funktionen, die mehrfach Verwendung fanden. Ich weiß nicht genau warum ich diese nicht gleich in einer externen Klasse ausgelagert habe, aber jetzt ist es ordentlicher. Betroffen waren davon folgende Funktionen:

    • save(file_path, data)
    • load(file_path)
    • update(key, data, frm)
    • get_element(key, frm)
    • create(files)
    • show(elements)
    • has(arr, element)
    • string_to_bool(message)
    • isNumber(value)

    Allein schon an den Bezeichnungen sollte es deutlich werden, wofür diese Funktionen Verwendung finden und warum man nicht überall eine eigene "Funktion" benötigt. Durch diese Verallgemeinerung wurden auch einige Zeilen Code angepasst um auch die weitere Funktionalität zu gewährleisten.


    Neben diesen Anpassungen waren die Anfragen an die API von Twitch auch nicht sehr schön. Daher gibt es hierfür nun einen festen Thread der alle X Minuten eine Anfrage schickt um die Datenbestände zu aktualisieren. So umgeht man das Problem, wenn mal eine Anfrage verloren geht, endet es nicht in einem Fehler sondern man greift auf die Daten zurück, die noch vorhanden sind.


    Die Änderungen sind bereits auf GitHub veröffentlicht und können sich dort gerne angesehen werden, falls daran Interesse besteht.

    05.08.2016


    Keine Sorge, nur weil man seit längerem nichts vom Bot gehört hat heißt es nicht, dass es nicht voran geht. Meist laufen die ungehörten Dinge am Besten


    Ich wollte hier auch nur kurz anmerken, dass der Bot nun die Voraussetzungen der Kraken API Anfragen, die ab 08.08.2016 in Kraft treten werden, erfüllt.


    Falls es jemand nicht mitbekommen hat, ab kommenden Montag (08.08.2016) muss für eine Anfrage an die Kraken API die Client-ID mitgeschickt werden. Diese Voraussetzung gab es schon "immer" nur war Twitch nicht so dahinter her, diese Anforderung auch einzufordern. Dies ändert sich nun allerdings!


    Weitere Informationen hierzu finden sich unter:


    - Client-ID Requirement FAQs - API - Twitch Developer Forums
    - Client-ID required for Kraken API calls — Twitch Blog


    29.09.2016

    Damals auf der Suche nach einer einfachen Lösung um das Folgedatum eines Followers herauszufinden, habe ich auf die "NewTimeNow"-API gesetzt. Leider hat diese allerdings die Arbeit eingestellt, auch wenn die dazugehörige Seite noch erreichbar ist.
    Grund dafür dürften wohl die neuen Anforderungen an die Twitch-Api Anfragen sein.


    Somit war es eine Zeit lang nicht möglich, mit dem Bot den entsprechenden Befehl zu verwenden. Dies wurde nun dahingehend geändert, dass ich nun eine Abfrage an die gute alte Twitch-Krake stelle und mir über diese die notwendigen Informationen hole. Warum ich das nicht schon früher gemacht habe? Ich weiß es ehrlich gesagt nicht...


    Wer es selbst einmal ausprobieren möchte, der findet hier die jeweils notwendigen Abfragen:


    NewTimeNow-Api (defekt) : http://api.newtimenow.com/follow-length/?channel=EIGENERNAME&user=ANDERERNAME
    Twitch-Api : https://api.twitch.tv/kraken/users/ANDERERNAME/follows/channels/EIGENERNAME

    Mit diesen Abfragen prüft ihr, seit wann und ob ein bestimmter Nutzer (ANDERERNAME) eurem Channel (EIGENERNAME) folgt.

Jetzt mitmachen!

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