Hurby – Twitch und Social Media Bot

Hurby – Twitch und Social Media Bot
Hallo, wenn du auf dieser Seite gelandet bist interessierst du dich offensichtlich für die Funktionalitäten von Hurby, unserem (nach Fertigstellung) open source Twitch und Social Media Bot.
Derzeit befindet sich Hurby noch in der Entwicklungsphase, da aber eine offene Kommunikation sowie Transparenz und Vertrauen ein für uns sehr wichtiger Bestandteil des öffentlichen Lebens ist im Bezug auf unsere Software ist wurde diese Seite schon einmal angelegt um euch über die Funktionen und Möglichkeiten zu informieren.
Wer entwickelt Hurby?
Hurby wird derzeit nur von Vortex Acherontic (unter Bürgerlichem Namen Imo Hester) entwickelt und basiert auf Python 3 und ist derzeit auch nur ausschließlich auf Twitch nutzbar.
Der Quellcode sowie das dazu gehörige Ticket-System für anstehende Funktionalitäten und Fehlerbehebungen wird auf GitLab gehostet und ist für jeden Frei einsehbar. Bis auf den tatsächlichen Quelltext.
Was kann Hurby?
Zu Hurbys Fähigkeiten zählt viel, wenn auch das meiste davon noch in Planung ist, Teile evtl in Zukunft wieder verworfen werden oder neue Funktionen die wir bisher noch nicht gelistet haben hinzukommen.
Der Zeitige Funktionen:
Twitch Chatbot:
Hurby ist in der Lage an einem beliebigen Twitch Streaming Chat teil zunehmen und dort mit den Zuschauern zu interagieren. Anzutreffen ist er unter dem Account Zray_Hurby.
Allerdings ist er nur Konfiguriert um auf dem Twitch Kanal von CouchRebelln und Z-Ray Entertainment zu interagieren wobei der erstere unser Live-Test ist, während der 2te Kanal nur zu Entwicklungs Zwecken dient.
Was tut er da?
Hurby derzeit nur in der Lage Einfache Befehle zu verstehen und eine Imaginäre Währung auch bekannt als „Kekse“ zu verteilen. Eine vollständige Liste der für den aktuellen Zuschauer verfügbaren Befehle kann von Hurby selbst über !help abgefragt werden und über !help <befehls-name> gibt er detailiertere Informationen über diesen.
Da die verfügbaren Befehle von Hurby stark mit einem Benachrichtigungssystem verknüpft sind haben Moderatoren und der Broadcaster selbst z.B. weitere zuständliche Befehle zur Verfügung, mit denen sie den Bot moderieren können. Zur Zeit beläuft sich dies auf die Verteilung von Keksen, aber eine Blacklist ist auch schon vorhanden, diese muss aber manuell im Bot in einer Konfigurationsdatei angepasst werden.


Wie sieht das Berechtigungssystem aus?
Das Berechtigungssystem beläuft sich zur Zeit auf 3 Stufen, EVERYBODY, MODERATOR und ADMINISTRATOR.
Befehle die mit dem Level EVERYBODY gekennzeichnet sind können von jeden Zuschauer, sofern dieser nicht auf der Blacklist steht, ausgeführt werden.
Das Level MODERATOR ist nur für Kanal Moderatoren verfügbar und diese werden vom Bot automatisch Erkannt, dies sind meist Befehle die der Moderation eines Zuschauer in der Bot internen Datenbank dienen. Die Möglichkeit über den Bot kanalmoderative Befehle auszuführen wie Titel oder Spiel Änderung ist (noch) nicht gegeben.
Das letzte und nur für den Broadcaster verfügbare Berechtigungslevel ADMINISTRATOR, auch dies wird vom Bot automatisch erkannt und in einer internen Charakterdatei hinterlegt, dient zu weiteren moderativen Fähigkeiten, sie sich zum aktuellen Stand aber auch nur auf Bot interne Charakterdaten beziehen.
Charakterdaten?
Jeder Zuschauer der einem Stream zuschaut in dem Hurby zur Verfügung steht bekommt eine zufällige Benutzerkennung zugewiesen die vom Bot eigenständig generiert wird. In dieser Datei werden diese ID, die Kekse, der Twitch Login-Name, Abonnentenstatus, Watchtime sowie das Berechtigungslevel hinterlegt.
Darüber hinaus sind noch weitere, derzeit unbenutzte, Attribute verfügbar, wie ein Inventar, Ausrüstung, Ausdauer, Discord Nutzer ID, YouTube Nutzername, Twitter Nutzername, Steam Nutzername und E-Mails.
Genutzte Attribute:
- UUID (Eindeutige universelle vom Bot eigenständig generierte ID)
- Die UUID dient dazu den Twitch Nutzername mit der entsprechen Charakterdatei zu referenzieren sobald ein Nutzer mit dem Bot interagiert. Oder der Bot in regelmäßigen Abständen die anwesenden Zuschauer prüft und Kekse an alle Anwesenden verteilt.
- Credits (aka. Kekse)
- Ist lediglich eine Zahl die die Anzahl der Kekse des Zuschauer hält. Kekse werden als Bot interne imaginäre Währung gehandhabt. Diese Währung hat keinen reellen Gegenwert und kann nicht mit echtem Geld gekauft werden. Darüberhinausfindet sie auch nut einsatzt in Minispielen.
- Twitch Nutzername
- Dient dazu über den Twitch IRC Chat, welcher nur die Nutzernamen enthält, mit der richtigen Charakterdatei zu referenzieren falls Charakterdatei relevante Befehle fallen.
- Abonnentenstatus
- Der Abonnentenstatus wird der Zeit vom Bot nicht automatisch erfasst, dieser muss manuell in der entsprechend Charakterdatei gesetzt werden. Der Abonnentenstatus dient dazu um beim regelmäßigen verteilen von Keksen diesen doppelt so viele Kekse zuzuschreiben wie normalen Zuschauern (2 Kekse alls 10Minuten). Darüber hinaus wird dieser Status dazu genutzt um Abonnenten eine höhere Gewinnwahrscheinlichkeit bei diversen Minigames (aktuell nur der Raid) zu geben. Nein es handelt sich hier nicht um Gewinnspiele im Klassischen Sinn, da kein reeller Einsatz der Nutzer erfordert wird. Abonnieren ist rein freiwillig und wird nicht erzwungen! Dennoch soll die Möglichkeit bestehen treuen Unterstützern des Kanals auch etwas zurück zu geben.
- Berechtigungslevel
- Wie bereits erwähnt dient das Berechtigungslevel ausschließlich dazu um bestimmte Bot Befehle nicht für alle zugänglich zu machen um Betrug und Missbrauch zu vermeiden.
- Watchtime
- Die Zuschauerzeit (in Minuten) hält lediglich fest wie lange ein Zuschauer dem Stream zu geschaut hat, da dies in diversen Minigames berücksichtig wird. So ist es z.B. denkbar das es ein Gewinnspiel-Minigame gibt welches eine Mindestwatchtime erfordert um an diesem Teil zunehmen. Dies soll dann vermeiden dass Zuschauer nur in den Stream kommen um bei einem Gewinnspiel einen Preis abzustauben und mögliche Langzeitzuschauer leer Ausgehen. Man kann diese Watchtime auch als eine Art Treuepunkt sehen.
Ungenutzte aber angestrebte Attribute:
Diese Attribute werden nicht mit Funktionalität versehen, bevor nicht das Privatsphäre-System in den Bot integriert wurde.
- Inventar
- Das Inventar ist dazu gedacht im späteren Entwicklungsstatus des Bots imaginäre Items, die keine reellen Gegenwert haben werden und nicht über echtes Geld käuflich sind, zu integrieren. Diese Gegenstände werden dann in Zukünftigen Minispielen Verwendung finden
- Ausrüstung
- Dieses Attribut hängt mit dem oberen Punkt zusammen, und dient lediglich dazu dem Nutzer die Möglichkeit zugeben Gegenstände an seinen Bot internen Charakter anzulegen, damit diese dann in zukünftigen Minispielen Verwendung finden.
- Ausdauer
- Die Ausdauer ist auch ein Attribut was für kommende Minispiele benötigt wird. Jeder Charakter hat eine maximale Ausdauer, die sich durch das Zuschauen regeneriert und in bestimmten Minispielen verbraucht wird.
- Discord Nutzer ID (Freiwillige Angabe)
- Da Huby im sehr viel späteren Entwicklungsrahmen auch an einen Discord Server angeschlossen werden können soll, wird die Discord ID letztlich dazu genutzt um einen Zuschauer, der auf Discord mit Hurby interagiert, mit seiner eindeutigen Charakterdatei zu identifizieren für weitere Minispiele.
- YouTube Nutzername (Freiwillige Angabe)
- Da Hurby in Zukunft nicht nur in Twitch Streams verwendbar sein soll, sondern auch in YouTube Stream oder Primären. Hat die YouTube Nutzer ID die selbe Funktionalität wie der Twitch Nutzername zum aktuellen Zeitpunkt.
- Twitter Nutzername (Freiwillige Angabe)
- Hurby soll in Zukunft auch dazu in der Lage sein, eigenständig auf Twitter zu agieren um in etwa automatische Tweats abzusetzen, wenn der Streamer live geht oder das Spiel wechselt. Die Twitter ID des Nutzer soll dazu verwendet werden um, wenn der Nutzer dies ausdrücklich erwünscht, diesem per Direkt Nachricht über einen anstehenden oder laufenden Stream zu informieren.
- Steam Nutzername (Freiwillige Angabe)
- Dieses Attribut wird voraussichtlich erst in später Zukunft, wenn überhaupt, Verwendung finden. Soll aber dazu dienen um dem Bot es zu ermöglichen einen Nutzer auf Steam zu kontaktieren, wenn dieser es ausdrücklich Wünscht, um diesen über den Stream zu informieren. Also ähnlich wie die Twitter ID
- E-Mails (Freiwillige Angabe)
- Da es in Zukunft möglich sein soll, das Zuschauer ihren Lieblingsstreamer nicht nur auf Twitch Abonnieren können, sondern auch z.B. auf Patreon unterstützen können, wird die E-mail dazu verwendet um einen Nutzer wieder zu erkenne, der den Streamer auf einer externen Plattform unterstützt um diesen ebenfalls den Abonnentenstatus zu zu weisen. Darüber hinaus kann die E-Mail natürlich auch für Gewinspiel Minigames verwendet werden um mit dem Gewinner Kontakt aufzunehmen oder den Gewinn zu kommen zu lassen. Ich betone nochmals, es handelt sich nicht um Gewinnspiele mit irgendeiner Form von reellen Einsatz um an diesen Teil zunehmen oder die Gewinnchance zu erhöhen, mit Ausnahme des Abonnentenstatus.
Hallo Datenschutz?
Wie zuvor erwähnt werden die zusätzlichen Attribute, sowie aber auch einige der bereits verwendeten Attribute, nicht weiter ausgebaut bis Hurby über ein vollständiges Privatsphäre-System verfügt. Weiterhin werden von Hurby gesammelte Daten nicht an dritte weitergegeben oder anderweitig außerhalb von den Bot internen Funktionalitäten verarbeitet. Es gibt ein Backup der gesamten Bot Konfiguration sowie alle vom Bot erstellten Charakterdateien in einem privaten von außen nicht zugänglichen Gitlab Git Repository auf das nur Vortex zugriff hat. Eine Entwickler Kopie dieses auf dem privaten Rechner von Vortex (Z004) sowie auf einer Raspberry Pi, ebenfalls nur für Vortex zugänglich, die den Live Hurby laufen lässt. Jedes der genannten Systeme (Pi wie Entwickler Rechner) wird unter einem aktuellen Linux System betrieben um die Datensicherheit nicht zu kompromittieren. Darüber hinaus sind der Source Code und die Konfiguration von Hurby von Begin an strickt voneinander getrennt und weder kritische Bot Konfigurationen, gesammelte Nutzerdaten noch der Quelltext sind und waren nie miteinander vermischt und tauchen daher auch nicht in der Quelltext Historie auf. Dies verhindert unter anderem, sobald Hurbys Quelltext veröffentlicht wird, das Fragmente von alten Nutzerdaten und Bot Zugangsdaten nicht versehentlich veröffentlicht werden können.
Dieses System dient dazu, das Hurby standardmäßig davon ausgeht, das jeder Zuschauer alles verboten hat. Das heißt um in Zukunft mit dem Bot zu interagieren muss der Nutzer ausdrücklich erlaubt haben das Hurby eine Charakterdatei über den Zuschauer anlegen darf. Bis dahin sind für diesen Zuschauer auch nur Befehle verfügbar die keine Charakterdatei erfordern.
Hat ein Zuschauer es generell erlaubt eine Charakterdatei zugewiesen zu bekommen kann er noch separat bestimmen welche Daten der Bot über ihn/sie/* erheben darf und welche nicht.
Folgende Einstellungen sind in der Planung:
- !trackme char
- Dieser Befehl soll dafür sorgen das Hurby den Nutzernamen in eine interne Datei übernimmt in der alle Nutzer gelistet sind, für die er die Erlaubnis bekommen hat eine Charakterdatei anzulegen. Die Standard Charakterdatei wird dann nur die UUID, Twitch/Discord/YouTube/Steam ID (je nach Plattform von der aus dieser Befehl getätigt wurde), Ausdauer, Inventar, Ausrüstung und das Berechtigungslevel enthalten.
- Beim erneuten Aufruf dieses Befehl wird diese Berechtigung widerrufen, die Charakterdatei gelöscht und der Eintrag aus der List der erlaubten Zuschauer entfernt.
- Darüber hinaus wird ebenfalls !trackme twitch/twitter/steam/youtube/discord ausgeführt, je nach dem auf welcher Plattform der Nutzer diesen Befehl an den Bot gesendet hat damit die notwendige Nutzer ID ebenfalls gespeichert wird.
- !trackme sub
- Erlaubt dem Bot den Abonnentenstatus zu erfassen
- Beim erneuten Aufruf wird der Abonnentenstatus entfernt und nicht mehr automatisch aktualisiert.
- !trackme watchtime
- Erlaubt es dem Bot die Zuschauerzeit zu erfassen
- Beim erneuten Aufruf wir die bis hier hin aufgezeichnete Watchtime gelöscht und nicht mehr automatisch erfasst.
- !trackme mail
- Erlaubt es dem Bot die E-Mail aus den für die Plattform verfügbaren Endpunkte zu ermitteln. Auf Twitch wäre das z.B. die E-Mail Adresse mit der sich dieser Benutzer registriert hat.
- Beim erneuten Aufruf werden alle gespeicherten E-Mail Adressen gelöscht und nicht mehr erfasst.
- !trackme twitter/discord/steam/youtube/twitch <id>
- Erlaubt es dem Bot den Twitter Nutzernamen zu erfassen die als 2ter Parameter angegeben werden muss
- Das erneute Aufrufen wird die betreffende ID löschen und nicht mehr automatisch erfassen
Was ist die Blacklist?
Die Blacklist wird aktuell vom Bot noch nicht berücksichtigt soll aber in erster Linie dazu dienen Bestimme Nutzer die Interaktion mit dem Bot zu verbieten und für Bot interne Minigames zu sperren. So soll in Zukunft z.B. verhindert werden dass andere im Chat befindliche Bots an zufälligen Events automatisch teilnehmen, Kekse an diese Verteilt werden oder aber auch um Spam zu vermeiden. Darüber hinaus werden auffällige Zuschauer ebenfalls auf die Blacklist gesetzt um zu Verhindern das diese an Speziellen vom Broadcaster gestarteten Events teilnehmen können, wie z.B. Gewinnspiele
Was für Zufällige Events gibt es?
- Wurmlinge
- Wurmlinge sind imaginäre Angreifer die sich im Chat umtreiben werden um einen zufälligen, nicht auf der Blacklist gelisteten, Zuschauer ein paar Kekse abzunehmen und dann wieder zu verschwinden.
- Find
- Ist das Gegenteil vom obigen Event und wird einem zufälligen, nicht auf der Blacklist gelisteten, Zuschauer ein paar Kekse gut schreiben, neben den regelmäßig verteilten Keksen an alle Zuschauer, die nicht auf der Blacklist stehen.
Was gibt es sonst noch so?
Neben den Erwähnten Funktionen, Befehlen und Events verfügt Hurby noch über die Folgenden Funktionen:
- Loots
- Wird ein Loot auf loots.com an den Stream gespendet bekommt Hurby das mit und verteilt an alle Zuschauer so viele Kekse wie Zuschauer im Chat sind.
- !raid
- Der Raid ist ein Minigame in dem unter Einsatzt von Keksen (der immaginären Bot internen Währung) ein Überfall auf eine Piratenbasis verübt wird. Der Raid steht nur einmal alle 30 Minuten zur Verfügung. Hat der erste Zuschauer das Minigame gestartet !raid <kekse> haben andere Interressenten 2 Minuten Zeit um ebenfalls daran Teilzunehmen. Je mehr Kekse von allen Teilnehmern eingesetzt wurden je höher ist die Gewinnwahrscheinlichkeit für alle beteiligten. Als Gewinn bekommt dann jeder Zuschauer seine gesetzten Kekse plus 50% der gesetzten Summe. Abonnenten haben eine leicht erhöte Grundgewinnwahrscheinlichkeit. Normale Zuschauer haben eine Basisgewinnchange von 40%, Abonnenten 50%. Die Gewinnwahrscheinlichkeit wird um den Faktor: (2 – 2 / log_10(<alle-gesetzten-kekse>)) / 10 für alle Erhöht. Oder auch um maximal 20%.
- !giftcookies
- Mit diesem Befehl kann ein Zuschauer einem anderen Zuschauer Kekse schenken
- !kekse
- Zeigt die Anzahl der gesammelten Kekse des betreffenden Nutzers im Chat an
- !addcookies / !setcookies
- Sind ADMINISTRATOR Befehle und können ur vom Broadcaster genutzt werden um einem Spiele Kekse hinzuzufügen, abzuziehen oder generell mit einer bestimmte Menge an Keksen zu überschreiben.
- !help
- Listet alle für den aktuellen Nutzer verfügbaren Befehle auf unter Berücksichtigung des Berechtigungslevels
Stand: Dezember 2019
