Twitch ist aktuell die größte Streamingplattform. Aufgrund der hohen Zuschauerzahlen greifen viele Steamer nicht nur auf menschliche Moderationsteams, sondern auch auf Moderationsbots zurück.
Bots können beim Moderieren von Twitch-Chats nützlich sein, da sie dir helfen können, Regeln durchzusetzen und den Chat organisiert zu halten. Hier ein paar Aufgaben, die Bots übernehmen können:
- Herausfiltern unangemessener oder Spam-Nachrichten
- Ausgabe von Warnungen an Benutzer, die gegen die Regeln verstoßen
- Antworten auf häufig gestellte Fragen oder Commands von Benutzern
- Unterhaltung durch zum Beispiel einem Frage-Antwortquiz
- Externe Systeme wie Subscriber-Alarme oder Spiele mit Chatintegration anbinden
Durch die Automatisierung dieser Aufgaben können Bots deinen Moderatoren helfen, den Chat sauber und konzentriert zu halten, sodass du mehr Zeit für die Interaktion mit deinen Zuschauern hast. Im Gegensatz zu menschlichen Moderatoren werden Bots nicht müde.
In diesem Tutorial lernst du, wie du einen einfachen Chatbot in Python implementieren kannst. Wir verwenden dabei das TwitchIO Modul da dies schnell umsetzbar und Modular erweiterbar ist.
Twitch Chat Schnittstellen
Twitch verwendet Internet Relay Chat (IRC) für seine Chat-Funktionalität. IRC ist ein Protokoll, das es Benutzern ermöglicht, miteinander zu kommunizieren. Es ist für die Gruppenkommunikation in Kanälen konzipiert, ermöglicht aber auch die Eins-zu-eins-Kommunikation über private Nachrichten.
Twitch-Chatserver verwenden eine modifizierte Version des IRC-Protokolls, das zusätzliche Funktionen und Features enthält, die für Twitch spezifisch sind. Um sich mit dem Twitch-Chat zu verbinden und mit ihm zu interagieren, müssen Sie eine IRC-Bibliothek oder einen Client verwenden, der mit dem Twitch-IRC-Server kompatibel ist.
Alternativ kannst du auch die Twitch-API verwenden, um auf Chat-Daten und -Funktionen zuzugreifen. Die Twitch-API verwendet HTTP (Hypertext Transfer Protocol), um mit den Twitch-Servern zu kommunizieren, und bietet eine Möglichkeit, programmgesteuert auf Daten und Funktionen auf der Twitch-Plattform zuzugreifen.
In diesem Tutorial benutzen wir das TwitchIO Modul, welches die Kommunikation abnimmt. Wir müssen uns also nicht mehr um die Protokolle kümmern.
Was ist TwitchIO
TwitchIO ist ein asynchroner Python-Wrapper um sowohl die Twitch-API als auch das IRC mit einer leistungsstarken Befehlserweiterung zum Erstellen von Twitch-Chat-Bots. TwitchIO deckt fast die gesamte neue Twitch-API ab und bietet Unterstützung für Commands, PubSub, Webhooks und EventSub.
Die neuste Version ist im Moment 2.5.0.
TwitchIO installieren
TwitchIO kannst du, wie die meisten Pythonmodule, ganz leicht mit Pypi installieren.
pip install twitchio
Vorbereitung
Wenn du einen Twitch Bot betreiben willst, musst du diesen zunächst als neuen Account auf Twitch anlegen. Anschließend musst du ein OAuth Token erzeugen. Dieses Token braucht TwitchIO, um sich mit dem Twitchchat zu verbinden.
Neuen Twitch Account erstellen
Den Account kannst du wie deinen eigenen auf Twitch registrieren. Falls du schon eingeloggt bist, musst du dich natürlich erst abmelden.
In deinen Profileinstellungen findest du übrigens eine Option, mit der du mehrere Accounts mit derselben E-Mail Adresse bzw. derselben Telefonnummer erstellen kannst.
Login Token generieren
Hast du deinen neuen Account erstellt, brauchst du nur noch einen Logintoken. Diesen kannst du gemäß der Dokumentation selbst generieren oder zu Testzwecken einfach den Generator von swiftyspiffy verwenden.
Twitch Bot Grundgerüst
Hier ein Beispiel für einen Twitchbot, der auf das Kommando “!hello” mit “Hello” + Name antwortet.
from twitchio.ext import commands
token = "" # hier muss dein Token rein
class Bot(commands.Bot):
def __init__(self):
super().__init__(
token=token,
prefix="!", #prefix für commands
initial_channels=["nymn", "forsen"], # Liste der Kanäle
)
async def event_ready(self):
print(f"Logged in as | {self.nick}")
print(f"User id is | {self.user_id}")
@commands.command()
async def hello(self, ctx: commands.Context): # Beispielbefehl "hello"
# Send a hello back!
await ctx.send(f"Hello {ctx.author.name}!")
async def event_message(self, message): # wird bei jeder Chatnachricht ausgeführt
if message.echo: #message.echo sind die eigenen Chatnachrichten des Bots
return # wir ignorieren sie
m = message
print( # print auf Konsole
f"#{message.author.channel.name}-{message.author.name}({message.timestamp}): {message.content}"
)
await self.handle_commands(message) # anschließend Commands abarbeiten
bot = Bot() # Bot initialisieren
bot.run() # Bot ausführen
Wie du siehst kannst du die ganze Konfiguration in die Bot
Klasse schreiben.
Prefix für Commands
Bei der Initialisierung musst du neben den Kanälen, zu denen sich dein Bot verbinden soll (im Beispiel NymN und forsen) auch einen Prefix angeben. Dieser Prefix verhindert, dass der Bot jede Zeile als Kommando erkennt. Stattdessen werden nur Zeilen, die mit diesem Prefix beginnen, berücksichtigt.
Im Beispiel ist der Prefix ein Ausrufezeichen.
Alle Methoden, die du mit dem @commands.command() Dekorator versiehst, sind Commands. So z.B. die hello()
Methode aus dem Beispiel. hello()
wird jedes Mal ausgeführt, wenn jemand !hello in den Chat schreibt.
Event Message
Die event_message()
Methode wird bei jedem Nachrichten-Event in einem der verbundenen Chats ausgeführt. Im Beispiel haben wir einfach der Inhalt der einkommenden Chatnachrichten auf der Konsole angezeigt.
Event Ready
Die event_ready()
Methode wird immer nach dem Loginprozess ausgeführt.
Abschluss
Dies war natürlich nur ein kleines Beispiel. TwitchIO kann viel mehr. Den vollen Funktionsumfang findest du in der offiziellen Dokumentation.
Konnte ich helfen? Ich freue mich über einen Drink!
💙