Sie sind heute Morgen mit der Idee aufgewacht, eine Möglichkeit zu entwickeln, interessante Artikel zu speichern und zu beschriften, die Sie gelesen haben. Nachdem Sie mit der Idee gespielt haben, stellen Sie fest, dass ein Telegramm -Chatbot die bequemste Lösung für dieses Problem ist.
In diesem Handbuch führen wir Sie durch alles, was Sie wissen müssen, um Ihren ersten Telegramm -Chatbot mit JavaScript und Node.js.
zu erstellenUm loszulegen, müssen wir unseren neuen Bot mit dem sogenannten Botfather registrieren, um unser API-Zugangs-Token zu erhalten.
Der erste Schritt in Richtung unseres eigenen Telegrammbots registriert den Bot mit dem Botfather. Der Botfather ist ein Bot selbst, der Ihr Leben viel einfacher macht. Es hilft Ihnen beim Registrieren von Bots, beim Ändern der Bot -Beschreibung, zum Hinzufügen von Befehlen und beim API -Token für Ihren Bot.
Das API -Token ist der wichtigste Schritt, da Sie den Code ausführen können, der Aufgaben für den Bot ausführen kann.
Der Botfather kann im Telegramm auf der Suche nach "Botfather" gefunden werden. Klicken Sie auf den offiziellen Botfather, der mit dem White Checkmark -Symbol im blauen Kreis angezeigt wird.
Jetzt haben wir Botfather gefunden, lass uns mit ihm sprechen! Sie können die Konversation durch Eingabe /Neubot beginnen. Botfather wird Sie bitten, einen Namen für Ihre beiden zu wählen. Dieser Name kann alles sein und muss nicht eindeutig sein. Um die Dinge einfach zu halten, nannte ich meinen Bot -Artikelbot.
Als nächstes werden Sie aufgefordert, einen Benutzernamen für den Bot einzugeben. Der Benutzername muss einzigartig sein und in Bot enden. Deshalb habe ich mich für Michiel_article_bot entschieden, da dieser Benutzername noch nicht genommen wurde. Dies ist auch der Benutzername, den Sie verwenden, um das Suchfeld des Bot in Telegram nachzuschlagen.
Vaterbot gibt eine Erfolgsnachricht mit Ihrem Token zurück, um auf die Telegramm -HTTP -API zuzugreifen. Stellen Sie sicher, dass Sie dieses Token sicher aufbewahren, und teilen Sie es sicherlich nicht mit jemandem.
Wir können den Bot weiter ändern, indem wir eine Beschreibung hinzufügen oder die Befehle einstellen, die der Bot wissen soll. Sie können den Bot mit dem Text /SetCommands senden. Es wird angezeigt, wie Sie die Befehle mit dem Befehl format1 - Beschreibung eingeben.
Für meinen Bot setze ich das Befehls -Lesezeichen ein - speichern Sie interessante Artikel url.
Wenn Sie jetzt Ihren Bot nachschlagen, sehen Sie in der Chatbox ein Befehlsymbol, in dem Sie die verfügbaren Befehle anzeigen. Sie können viele weitere Befehle erstellen, die funktionieren, und sie nicht über Botfather auflisten. Aus UX -Sichtweise empfehle ich jedoch, alle verfügbaren Befehle bei Botfather zu registrieren.
Wir können die Privatsphäre des Bots mit /setPrivacy festlegen. Sie können es entweder aktivieren oder deaktivieren. Standardmäßig wird der Datenschutzwert auf aktiviert eingestellt, was bedeutet, dass Ihr Bot nur Nachrichten erhält, die mit dem / Symbol beginnen oder den Benutzernamen des Bots erwähnen.
Diese Einstellung kann deaktiviert werden, was bedeutet, dass Ihr Bot alle Nachrichten empfangen kann, die an eine Gruppe gesendet werden. Sie müssen Ihrer Gruppe einen Bot hinzufügen, um alle diese Nachrichten zu erhalten.
Eine Liste aller verfügbaren Befehle finden Sie hier:
Schließlich sind wir alle so eingestellt, dass wir mit dem Codieren beginnen. Stellen Sie sicher, dass das API -Zugangs -Token bereit ist.
Zuallererst werden wir während dieses Tutorials den folgenden Code verwenden, den ich erstellt habe.
Es handelt sich um ein einfaches Node.js-Projekt, das nur zwei Abhängigkeiten hat: DOTENV- und Node-Telegram-Bot-API. Das erste Paket wird zum Erstellen einer .Env -Konfigurationsdatei verwendet, die unser API -Zugriffstoken enthält. Das zweite Paket fungiert als Node.js -Wrapper für die Telegramm -Bots -API, die wir für dieses Tutorial verwenden.
Um loszulegen, klonen Sie das Github -Repository und öffnen Sie das Projekt in Ihrem Lieblingsredakteur. Erstellen Sie als Nächstes eine .EnV -Datei im Stammvermögen Ihres Projekts und fügen Sie eine einzelne Zeile hinzu - token = yourToken. Ersetzen Sie Ihr Token durch das von Botfather erhaltene Token.
Um sicherzustellen, dass die Verbindung funktioniert, navigieren Sie zur Wurzel des Projekts in Ihrem Terminal und führen Sie den NPM -Start aus. Mit dem Befehl npm start werden Ihre App.js -Datei ausgeführt und sollte eine Verbindung zu Ihrem Bot herstellen. Wenn Sie keine Fehler sehen, können wir loslegen!
Zunächst müssen wir den Bot erstellen, indem wir ihn unserem API -Zugriffs -Token übergeben und die Wahloption auf True setzen. Dies bedeutet, dass der Bot in regelmäßigen Abständen nach eingehenden Nachrichten prüft.
<span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
Jetzt wurde der Bot erstellt. Schauen wir uns den folgenden Code -Snippet an, der unseren Befehl /bookmark darstellt. Wir setzen einen Hörer für eingehende Textnachrichten, Ontext und geben an, nach einer Nachricht zu suchen, die mit /Lesezeichen beginnt, da wir dies in der Regex -Zeichenfolge angeben.
Wenn eine Nachricht mit /Lesezeichen beginnt, wird unser Code ausgeführt. Zunächst speichern wir die Chat -ID, da wir in der Lage sein möchten, eine Nachricht an den Chat dieses Benutzers zu senden.
Als nächstes überprüfen wir, ob der Benutzer den Befehl richtig verwendet hat. Wir erwarten, dass eine URL mit dem Befehl wie folgt übergeben wird: /bookmark www.google.com.
Wenn keine URL angegeben ist, senden wir eine Nachricht an den gespeicherten Chatid zurück, in dem der Benutzer aufgefordert wird, uns eine URL zu geben. Wenn sie eine URL senden, speichern wir die URL und senden ihnen eine Erfolgsnachricht.
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
Sie haben möglicherweise festgestellt, dass wir zwei Parameter für die Rückruffunktion MSG und Übereinstimmung verwenden. Die MSG -Eigenschaft repräsentiert die vollständige Nachricht, die Sie erhalten, während die Übereinstimmung das Ergebnis aus dem regulären Ausdruck darstellt, den wir definiert haben. Das Bild unten zeigt Ihnen die vollständige MSG und danach-es zeigt Ihnen die Übereinstimmung.
Wenn wir unseren Befehl im Chat mit dem Bot ausprobieren, erhalten wir das folgende Ergebnis:
Wenn Sie dasselbe Ergebnis sehen, herzlichen Glückwunsch! Sie haben gerade Ihren ersten Bot -Befehl erstellt. Werfen wir einen Blick auf fortgeschrittenere Optionen wie das Senden von Tastaturen mit vordefinierten Optionen.
Jetzt wissen wir, wie Sie einen benutzerdefinierten Befehl erstellen. Schauen wir uns die Tastaturoptionen tiefer an. Es ist möglich, eine vordefinierte Tastatur mit Ihrem Befehl zu senden, um die Optionen des Benutzers zu begrenzen. Es kann so einfach sein, den Benutzer einzuschränken, mit Ja oder Nr.
zu antwortenSchauen wir uns den folgenden Code -Ausschnitt an. Wir haben unserer Bot.SendMessage -Funktion einen dritten Parameter hinzugefügt. Dieses Objekt definiert die Optionen für unsere Tastatur. Wenn Sie sich näher an Reply_Markup.Keyboard ansehen, finden Sie ein Array, das mehr Arrays enthält. Jedes Array hier repräsentiert eine Zeile mit Optionen. Dies hilft Ihnen bei Formatierungsoptionen, die wichtiger sind oder längere Schaltflächen Text haben.
<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
Dieses Code -Stück enthält das folgende Ergebnis beim Senden einer Nachricht /Tastatur an unseren Bot.
weiter können wir Inline -Tastaturen mit zusätzlichen Daten pro Option definieren.
Eine Inline -Tastatur wird im Chat angezeigt und nicht unter Ihrem Nachrichten -Eingabefeld. Wenn wir die von uns eingereichten URLs kennzeichnen möchten, können wir dies tun, indem wir dem Benutzer die verfügbaren Kategorien anzeigen. So sieht unsere Tastatur jetzt aus:
Schauen wir uns den darunter liegenden Code an. Das Reply_Markup definiert jetzt die Eigenschaft inline_keyboard. Der Rest des Markups bleibt gleich. Jedes Array repräsentiert eine Reihe. Anstatt nur Text zu übergeben, können wir auch ein Objekt mit Text und callback_data übergeben, um zu wissen, welche Option Sie ausgewählt haben.
<span>require('dotenv').config(); </span><span>const TelegramBot = require('node-telegram-bot-api'); </span> <span>const token = process.env.TOKEN; </span> <span>// Created instance of TelegramBot </span><span>const bot = new TelegramBot(token, { </span> <span>polling: true </span><span>}); </span>
Im nächsten Abschnitt wird erläutert, wie der Handler zum Empfangen von Rückrufdaten verwendet wird.
Falls wir Rückrufdaten empfangen möchten, müssen wir diese Art von Ereignis anhören.
<span>// Listener (handler) for telegram's /bookmark event </span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>// 'msg' is the received Message from Telegram </span> <span>// 'match' is the result of executing the regexp above on the text content </span> <span>// of the message </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> <span>URLs.push(url); </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>); </span><span>}); </span>
Die Nachrichteneigenschaft auf CallbackQuery enthält die gesamte Nachricht vom Benutzer. Die Dateneigenschaft enthält unsere Kategorie -Rückrufdaten.
Sie haben möglicherweise inzwischen einen Entwurfsfehler entdeckt. Was ist, wenn wir zwei Befehle haben, die Rückrufdaten zurücksenden? Sie könnten ein sehr seltsames Verhalten oder Antworten bekommen.
Daher wird empfohlen, ein stringifiziertes JSON -Objekt zurückzusenden, das auch ein Etikett enthält, um festzustellen, zu welchem Befehl die Rückrufdaten gehört. Schauen Sie sich die folgenden Best Practice an:
<span>// Listener (handler) for showcasing different keyboard layout </span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => { </span> bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', { </span> <span>'reply_markup': { </span> <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']], </span> <span>resize_keyboard: true, </span> <span>one_time_keyboard: true, </span> <span>force_reply: true, </span> <span>} </span> <span>}); </span><span>}); </span>
Sie können die Daten aus der Befehlsoption verwenden, um auf die spezifische Geschäftslogik dieses Befehls zu wechseln.
wir sind auf dem besten Weg, Telegram Bot Jedis zu werden. Um ein voll gelernter Meister zu werden, lassen Sie uns Datenanfragen untersuchen.
Es ist möglich, Daten anzufordern, z. B. die Telefonnummer oder Geolokalisierung einer Person. Für dieses Tutorial zeigen wir, wie Sie eine Telefonnummer mit einer alternativen Tastatur anfordern.
<span>// Listener (handler) for telegram's /label event </span>bot<span>.onText(<span>/<span>\/label</span>/</span>, (msg<span>, match</span>) => { </span> <span>const chatId = msg.chat.id; </span> <span>const url = match.input.split(' ')[1]; </span> <span>if (url === undefined) { </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'Please provide URL of article!', </span> <span>); </span> <span>return; </span> <span>} </span> tempSiteURL <span>= url; </span> bot<span>.sendMessage( </span> chatId<span>, </span> <span>'URL has been successfully saved!', </span> <span>{ </span> <span>reply_markup: { </span> <span>inline_keyboard: [[ </span> <span>{ </span> <span>text: 'Development', </span> <span>callback_data: 'development' </span> <span>}, { </span> <span>text: 'Lifestyle', </span> <span>callback_data: 'lifestyle' </span> <span>}, { </span> <span>text: 'Other', </span> <span>callback_data: 'other' </span> <span>} </span> <span>]] </span> <span>} </span> <span>} </span> <span>); </span><span>}); </span>
Der Benutzer erhält die folgende Anfrage in seinem Chat:
Wenn Sie auf die Schaltfläche meiner Telefonnummer klicken, erhalten Sie die folgende Telefonnummer -Anfrage:
So schaut es nach, dass wir Zugriff geben:
endlich! Sie sind ein voll gelernter Telegramm-Bot Jedi. Im Moment finden Sie hier weitere Informationen und Ressourcen:
Bleiben Sie auch hier dran - wir werden nächsten Monat mit einem Tutorial zurück sein, das tiefer in die erweiterten Funktionen der Telegramm -API eintaucht.
Wie kann ich Nachrichten von meinem Bot senden? Verwenden Sie die SendMessage-Methode, die vom Knoten-Telegram-Bot-API-Paket bereitgestellt wird. Diese Methode nimmt zwei Argumente an: die Chat -ID des Empfängers und den Text der Nachricht. Sie können die Chat -ID von dem Nachrichtenobjekt an die Rückruffunktion der OnText -Methode übergeben.
Wie kann ich meinem Bot benutzerdefinierte Befehle hinzufügen? Fügen Sie Ihrem Bot benutzerdefinierte Befehle hinzu, indem Sie die Befehlsmethode des Knoten-Telegram-Bot-API-Pakets ergeben. Diese Methode nimmt eine Zeichenfolge und eine Rückruffunktion als Argumente an. Die Zeichenfolge ist der Name des Befehls, und die Rückruffunktion wird aufgerufen, wenn der Befehl empfangen wird. Sie können das an die Rückruffunktion übergebene Nachrichtenobjekt verwenden, um auf den Befehl zu antworten.
Wie kann ich meinen Bot debuggen? Eine gemeinsame Methode besteht darin, Konsolen.log -Anweisungen in Ihrem Code zu verwenden, um Informationen über den Status Ihres Bots auszudrucken. Sie können auch Debugging -Tools wie den Node.js -Debugger oder Chrome Devtools verwenden. Darüber hinaus bietet das Knoten-Telegram-Bot-API-Paket eine Onerror-Methode, mit der Sie alle Fehler verarbeiten können, die während des Ausführens Ihres Bots auftreten.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie Ihren ersten Telegramm -Chatbot mit node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!