Erstelle deinen eigenen Telegram Bot mit n8n und MySQL für WordPress

  • Beitrags-Autor:
  • Beitrags-Kommentare:0 Kommentare
  • Beitrags-Kategorie:Workflows
  • Lesedauer:11 Minuten zum Lesen
Du betrachtest gerade Erstelle deinen eigenen Telegram Bot mit n8n und MySQL für WordPress

Vor 11 Tagen ging mein Blog an die Öffentlichkeit. Hin und wieder verirrt sich schon ein Besucher hier her aber meist sind es doch nur Bots. Doch nimmt mir das nicht den Spaß. In meinem ersten Artikel sagte ich auch, es ist mehr meine Spielwiese und ich habe keine Ahnung, was ich hier machen werde. Nun sind 11 Tage vorbei und dies ist bereits der neunte Artikel. Und ich denke er wird lange und deswegen auch ein Download Plugin für WordPress installiert, da der / die fertigen json Dateien für n8n ziemlich lange sind.

Fun Fact nebenbei: erst vorgestern habe ich meine n8n ToDo-Liste hier preisgegeben, da stand das hier noch nicht mal auf dem Plan, entstand aber in den letzten zwei Tagen. Doch um was geht es? Es geht um einen eigenen Telegram Bot für WordPress mit MySQL als Datenbank. Er muss jedoch nicht speziell für WordPress sein und statt MySQL kann man auch eine andere Datenbank verwenden.

Fun Fact zwei: ich wollte für einen anderen Workflow eigentlich nur meine Telegram User ID abfragen. Dafür gibt es auch genügend Bots aber alle hatten irgendwas chinesisches an sich. Und da ich bereits Telegram Spam bekomme, habe ich mich für eine eigene Lösung entschieden, die dezent eskalierte.

Was sehen wir hier?

Einen Workflow mit ziemlich vielen einzelnen Nodes, kombiniert mit ein paar MySQL Nodes, einer Email Node und einem RSS Feed Node – der demnächst ersetzt wird. So wurde aus einem @mifupabot welcher nur die User ID ausgeben sollte ein etwas umfangreicherer Telegram Bot, mit ein paar Gimmicks. Der Bot ist noch nicht fertig, es kommen noch weitere Bereiche dazu wie einen Administrations und Moderations Zweig sowie in Kombination mit einer Telegram Gruppe. Stand alles nicht auf meiner ToDo-Liste jedoch macht es mir einfach Spaß. Bevor er aber zu umfangreich wird, teile ich es lieber auf mehrere Artikel auf. Jeweils mit den dazu gehörigen json Dateien. Und wenn jemand das gleiche machen will, kann er das gerne als Vorlage nehmen oder es besser machen.

Wie funktioniert der n8n Telegram Bot mit MySQL und was kann er?

Zu aller erst müssen wir uns einen Telegram Bot erstellen. Dies geht direkt in der Telegram App und ist komplett kostenlos. Schreibe dazu einfach den Nutzer @BotFather, achte hierbei auf die blaue Verifizierung. Nur der mit der Verifizierung ist der offizielle von Telegram. Starte den Chat und wähle aus, neuen Bot erstellen. Im Anschluss wirst du aufgefordert einen Namen auszuwählen sowie einen Benutzernamen welcher mit bot endet. In meinem Fall ist es der User mifupa mit dem Benutzernamen mifupabot. Direkt danach bekommst du deinen API-Token, diesen speicherst du dir ab und teilst ihn mit niemanden.

In n8n kannst du dann einen Telegram Trigger mit den Credentials anlegen. Und nun zudem, was der mifupa Telegram Bot kann.

Betritt man den Chat mit dem Bot startet man ihn und erhält schon eine kleine Willkommensnachricht mit ein paar Funktionen was er kann. Folgende Funktionen sind hier integriert:

  • /start – gibt die Willkommensnachricht aus
  • /hilfe – eine Übersicht aller vorhandenen Befehle
  • /id – gibt Werte aus die der Bot von Telegram vom User bekommt (ID, Benutzername, Name, Land, ob es ein Bot ist)
  • /feedback – Nutzer können direkt über Telegram ein Feedback absenden
  • /artikel – liefert den neuesten Artikel von mifupa.com
  • /datenschutz – eine kleine Datenschutzerklärung mit dem Link zur großen
  • /blogabo – den Blog über Telegram abonnieren um automatische Updates zu erhalten für neue Artikel
  • /holmichhierraus – den Blog wieder deabonnieren

Die Standard Befehle

Befehle wie /start, /hilfe, id und /datenschutz sind vordefinierte Telegram Nachrichten. Der Nutzer schickt den Befehl ab, n8n sortiert ihn und gibt den entsprechenden Telegram Node wieder von sich. Bei /start ist es die Willkommensnachricht. Diese kann man so vorgeben wie man lustig ist. /hilfe wird meist genutzt um den Nutzern zu zeigen, was der Bot alles kann. /id ist eigentlich das, was ich mit dem Bot machen wollte. Mir die User ID ausgeben lassen, da jedoch die anderen User ID Bots mir zu mysteriös waren, habe ich die Funktion selber umgesetzt. Telegram liefert von alleine an den Bot in jeder Nachricht die User ID, den Benutzernamen, Vornamen (Nachnamen glaube ich auch), die Sprache und ob der Nutzer selber ein Bot ist. Über eine extra API könnte man noch an das Benutzerfoto kommen aber das wollte ich nicht. /datenschutz dieser Befehl ist dafür da, weil er eben von einem Deutschen betrieben wird. Ob notwendig oder nicht. Auch habe ich eine extra Datenschutzerklärung für den Telegram Bot erstellen lassen (ChatGPT) um einfach darzustellen, wie mit den Daten umgegangen wird. Rechtlich notwendig? I dont know. Aber lieber haben als nicht.

Den neuesten Artikel ausgeben mittels /artikel

Ich möchte das der Nutzer auf dem mifupa Telegram Bot einfach /artikel eingeben kann und erhält als Antwort den neuesten Artikel geliefert. Dies ist im aktuellen Workflow einfach gemacht über einen RSS Node, welcher das Ergebnis weitergibt an den Telegram Node. In jedem Telegram Node kann man die Ausgabe selber definieren. Ob schlicht nur Text oder auch mit Smileys. Alles ist möglich.

Im nächsten Update werde ich dies aber anders machen mit der selben Methode wie aus /blogabo.

Newsletter war gestern – Telegram Abo Bot

Für diese Funktion gibt es schon einzelne WordPress Plugins aber dann hat man eben einen Bot, der nur das kann. So kann man den eigenen Telegram Bot aufbauen, wie man ihn möchte. In diesem Workflow wenn der Nutzer /blogabo eingibt, wird seine User-ID in einer MySQL Datenbank gespeichert. In einem zweiten Workflow welcher per Cron angesprochen wird, wird diese User-ID aus der MySQL Datenbank genommen und gegen geprüft mit der Abfrage ob es neue Artikel gibt. Dies wiederum funktioniert mit einem HTTP-Request Node, HTML Extractor Node, einem Edit Node der die Daten zusammenfasst sowie weitere MySQL Nodes. Natürlich soll jeder Artikel nur einmal versendet werden und nicht in Dauerschleife. Deshalb die Speicherung in der Datenbank. Der ganze Workflow sieht dann so aus.

Der /feedback Befehl

Den Blog hier mache ich weil ich gerne mein Wissen und Erfahrungen teilen möchte. Ob ich es richtig mache oder nicht – ist ein anderes Thema. Aber dafür gibt es ja die Kommentare. Und selbiges möchte ich auch im Telegram Bot anbieten. Nutzer können über /feedback mir direkt ihr Feedback zukommen lassen. Das funktioniert, so wie es im Workflow ist, auch wenn ich nicht ganz happy bin. Wieso erfährst du im übernächsten Absatz.

Der Prozess ist eigentlich einfach. Der Nutzer gibt /feedback ein, in einer MySQL Datenbank wird seine ID gespeichert, erhält eine Telegram Nachricht zurück das er nun sein Feedback abgeben soll sowie kurzen Datenschutz Hinweis. Der Nutzer schreibt nun sein Feedback ohne Befehl zurück.

Im ersten Telegram Trigger gibt es einen if Zweig. Enthält die Nachricht einen Befehl oder nicht. Bei keinem Befehl sollte eigentlich eine Meldung zurück kommen, dass die Nachricht unklar ist. Hat man den /feedback Prozess gestartet, kommt die Nachricht ohne Befehl an. Der if Zweig leitet sie zu dem Zweig für ohne Befehle. Hier gibt es einen MySQL User-ID Abgleich. Wird die ID gefunden kommt die Feedback Nachricht in eine MySQL Datenbank, der Nutzer erhält eine Bestätigung, ich eine Email und die User-ID wird aus MySQL gelöscht. Gibt der Nutzer nun erneut eine Nachricht ab ohne Befehl, wird sie nicht als Feedback abgespeichert weil der Prozess beendet wurde. Erst durch /feedback beginnt alles von vorne.

Und hier hat man auch rausgelesen, womit ich noch nicht so ganz happy bin. Man kann eine Nachricht abschicken ohne Befehl, es kommt aber kein Hinweis das die Nachricht nicht erkannt wurde = es kommt einfach nichts. Die Lösung ist eigentlich schon im Workflow aber irgendwo hakt es da. Aber… das hier ist mein Spielplatz und eigentlich, es kommt eben kein Hinweis, wenn ich darüber nachdenke eigentlich auch nicht schlimm.

Der json Workflow Download

Normal habe ich den jscon Code einfach hier reinkopiert in den Artikel aber allein der Code für den Bot – er ist lange. Deshalb direkt als Download als zip Datei der beide Workflows separat enthält. Diesen kann man auch direkt in n8n importieren und loslegen. Wer ihn vorher testen möchte – schaut in die Sidebar oder schreibt auf Telegram den User @mifupabot an. Hier läuft er wie aus diesem Workflow inkl. was mir noch alles einfällt.

telegram-bot.zip Download

Die benötigten MySQL Tabellen

Der Telegram Bot speichert die User IDs aus /blogabo. Weiterhin braucht der /blogabo eine Tabelle für die gesendeten Artikel. Bei /feedback die User ID sowie das Feedback. Bei mir sind dies 4 Tabellen, man kann, wenn man es nachproduziert, auch optimierter machen.

Tabelle „blog_abo“

Spalte userid (VARCHAR, 255)
Spalte created_at (datetime)

Tabelle „feedback_data“

Spalte user_id (VARCHAR, 255)
Spalte id (INT)
Spalte feedback_text (text)
Spalte created_at (datetime)

Tabelle „feedback_status“

Spalte userid (VARCHAR, 255)
Spalte created_at (datetime)

Tabelle „sent articles“

Spalte article_url (VARCHAR, 255)
Spalte id (INT)
Spalte sent_at (datetime)

Geplante Erweiterungen

Einen Administratorzweig

Geplant ist ein weiterer Zweig speziell für Admin Dinge. Klingt mysteriös aber ist es nicht. Einerseits ist ein OpenAI Bilderstellungsbefehl geplant. Meine Artikelbilder lasse ich von KIs erstellen. Hier möchte ich speziell die API von OpenAI nutzen mit einem Modell, der auf mich abgestimmt ist und die Bilder so macht wie ich sie will. Die Bilder daraus sollen dann direkt optimiert werden und in WordPress hochgeladen werden. Ein weiterer Befehl wird für Statistiken sein. Speziell aber nur für die /blogabo Nutzer. Telegram Bot Logs für die Erfassung von Dingen die man im Admin und Mod Bereich gemacht hat. WordPress Kommentare moderieren vielleicht nicht ganz moderieren aber Kommentare abfragen, die erst noch genehmigt werden müssen. n8n Workflows steuern auch das wäre eine Möglichkeit die man mit einem Telegram Bot erledigen kann. Neustarten, starten, stoppen oder einfach den Status abrufen eines einzelnen Workflows. Vielleicht mit direktem Monitoring. Feedbacks verarbeiten bisher kommt ein Feedback zu mir per Email. Im Grunde kann man darauf auch nicht antworten. Auch nicht innerhalb von Telegram. Man erhält zwar den Username und kann ihn manuell anschreiben, wenn man möchte. Aber auf die Feedbacks direkt zugreifen bzw. auslesen zu können. Benutzer Management so das auch andere mit dem Telegram Bot interagieren können. Ob als Admin oder Mod. Im weiteren Schritt auch User in dem Gruppen Chat als Moderator zu befördern.

Telegram Gruppen Chat

Auch den wird es hier wohl mal geben, vermutlich von niemanden genutzt aber ein Telegram Bot über n8n kann natürlich auch einen Gruppen Chat handhaben. Beispielsweise eine geschlossene Gruppe die nur nach Einladung zugänglich ist. Über den Bot erhält man eine Einladung. Dazu einen Keyword Filter, sozusagen als automatische Moderation für die Gruppe.

Moderatorenzweig

User Moderation um „böse“ User zu kicken oder zu bannen. Gruppenweite Nachrichten ob sponsored Nachrichten oder allgemeine Informationen. Komplett über alle Themen in der Telegram Gruppe oder speziell auf einzelne Bereiche. Evtl. auch mit einer Sortierungsmöglichkeit (Nachricht nur an User die erst seit kurzem dabei sind). Umfrage Tool um direkt über den Bot Umfragen im Gruppen Chat erstellen zu können. User Informationen abrufen jedoch nicht die normalen die Telegram ausgibt sondern Projekt bezogen. In welche Gruppen ist der User, hat er den Blog abonniert, abgegebene Feedbacks.

Zusätzliche Benutzer Features

Einer suche direkt nach einem Blog Artikel innerhalb von Telegram mit der passenden Ausgabe. Tipp des Tages / Witz des Tages einmal am Tag wird von einem AI Node ein Tipp des Tages oder ein Witz generiert und an User ausgegeben, welche es hören möchten. Dieses angepasst speziell an den Blog / Projekt / Thema – könnte cool sein. Benachrichtigungen anpassen wann möchte man sein /blogabo Update bekommen? Direkt nach der Veröffentlichung oder einmal gesammelt am Tag?

Fazit Telegram Bot mit n8n und MySQL

Es ist nicht schwer einen solchen Telegram Bot zu erstellen innerhalb von n8n. Auch in Kombination mit MySQL nicht für ein Benutzer / Daten Management. Für Basic Befehle / Funktionen wird auch keine Datenbank benötigt, vieles kann man auch mit Google Sheets als Gehirn dahinter realisieren. Ich werde das ganze natürlich völlig eskalieren lassen. Den Bot in Kombination mit WordPress, n8n, Telegram Gruppen Chat, MySQL, OpenAI und wer weiß was noch. Aber dafür habe ich diesen Blog, n8n und überhaupt diesen Server. Um mit sowas „spielen“ zu können. Dieser Telegram Bot ist das Basis Modell, was ich gerne jedem zur freien Verfügung stelle und alles weitere kommt dann in separaten Artikeln.

Schreibe einen Kommentar