So erstellen Sie einen einfachen Telegramm-Bot mit Python 3

Wenn Sie ein Telegrammbenutzer sind, müssen Sie irgendwann ein "Gespräch" mit einem Chatbot geführt haben. Mit ihrer erstaunlichen Anpassbarkeit bieten die Bots von Telegram eine Vielzahl von Vorteilen – sei es für die Automatisierung von Aufgaben oder um ein bisschen Spaß mit Spielen in Ihrer Chat-Gruppe zu haben.

Während einige die Entwicklung eines Bots als entmutigende Aufgabe empfinden, ist dies nicht der Fall. Mit der richtigen Planung können Sie einen Telegramm-Bot in weniger als einer Stunde zum Laufen bringen! Hier erfahren Sie, wie Sie einen einfachen Telegramm-Bot erstellen, der auf Aufforderung niedliche Bilder von Internetkatzen ausgibt.

Anfangen

Für dieses Tutorial verwenden wir Python 3, den Python-Telegramm-Bot und die Anforderungsbibliothek sowie TheCatAPI .

Jeder Bot in Telegram verfügt über ein eindeutiges Token, mit dessen Hilfe er mit der Bot-API kommunizieren kann, um die Messaging-Oberfläche der App zu verwenden. Mit der Bot-API, einer der beliebtesten Funktionen von Telegram bei Entwicklern, können Sie die Nachrichten als Schnittstelle verwenden.

Um das Token zu erhalten, starten Sie eine Unterhaltung mit @BotFather , einem offiziellen Bot, mit dem Sie, wie der Name schon sagt, Ihre eigenen Bots erstellen und anpassen können. Sie können über den angegebenen Link auf den Bot zugreifen oder alternativ im Telegramm nach '@botfather' suchen.

Erstellen Sie im Chat Ihren Bot, indem Sie den Befehl / newbot eingeben . Legen Sie weiterhin den Namen und den Benutzernamen Ihres Bots fest (wir haben uns entschlossen, unseren @pawsomebot zu nennen). Anschließend erhalten Sie einen für Ihren Bot einzigartigen Token.

Jetzt, da wir alle Voraussetzungen haben, ist es Zeit, zum aufregenden Teil zu gelangen!

Bibliotheken installieren

Wenn Sie Windows verwenden, öffnen Sie die Eingabeaufforderung und geben Sie die folgenden Befehle ein:

 pip install python-telegram-bot
pip install requests

Wenn Sie macOS oder Linux verwenden, verwenden Sie stattdessen die folgenden Befehle auf Ihrem Terminal. Stellen Sie außerdem unter Linux sicher, dass Sie als Benutzer mit Sudo-Berechtigungen angemeldet sind.

 pip3 install python-telegram-bot
pip3 install requests

Programm schreiben

Erstellen Sie einen neuen Ordner auf Ihrem Computer und öffnen Sie ihn in Ihrem bevorzugten Editor. Erstellen Sie eine neue Datei und nennen Sie sie main.py. Diese Datei enthält den Quellcode für Ihren Bot.

Importieren wir nun die zuvor installierten Bibliotheken zusammen mit einigen ihrer integrierten Funktionen.

 from telegram.ext import Updater, CommandHandler
import requests
import re

Von hier an müssen Sie auf TheCatAPI zugreifen, die URL eines zufälligen Bildes abrufen und dieses Bild an den Chat des Benutzers senden.

Beginnen wir mit einer Funktion zum Abrufen der Bild-URL, die mit dem Anforderungsmodul ausgeführt werden kann. In dieser Funktion laden wir die JSON-Daten einer von TheCatAPI bereitgestellten Zufallsdatei und extrahieren ihre URL zur späteren Verwendung. Um das Format des JSON-Objekts anzuzeigen, gehen Sie in Ihrem Browser zu https://api.thecatapi.com/v1/images/search . Sie werden so etwas bemerken:

 [{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]

Beachten Sie, dass das JSON-Objekt ein Array ist, das ein Wörterbuch enthält. Dieses Wörterbuch enthält die URL mit dem Schlüssel 'url'. Um die URL zu extrahieren, müssen wir auf das erste Element des Arrays und dann auf den entsprechenden Schlüssel verweisen.

 def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url

Als nächstes müssen wir dieses Bild in den Chat eines Benutzers senden. Dazu benötigen wir eine Bild-URL sowie die eindeutige ID des Benutzer-Chats. Erstellen wir dazu eine Wrapper-Funktion. Zuerst rufen wir getUrl () auf . Funktion zum Abrufen der URL eines zufälligen Bildes — Diese URL ändert sich jedes Mal, wenn Ihr Programm die Funktion durchläuft.

Anschließend wird die Chat-ID des Empfängerbenutzers abgerufen, die den Zielspeicherort des Bots für Nachrichten definiert und die URL über die integrierte Funktion send_photo () der Bot-API analysiert.

 def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)

Weitere Informationen zu den verschiedenen integrierten Funktionen der Bot-API und deren Funktionsweise finden Sie in der offiziellen Dokumentation von Telegram nach diesem Lernprogramm.

Lassen Sie uns abschließend eine Funktion erstellen, die die Gesamtarbeit des Bots steuert. In dieser Funktion – üblicherweise main () genannt – senden wir eine HTTP-Anfrage an die Bot-API mit dem Token, das wir zu Beginn des Tutorials erhalten haben, und definieren dann, wie die Benutzerinteraktion des Bots aussehen soll. In einem so einfachen Fall wie unserem bedeutet dies im Wesentlichen, den Bot zu initiieren und die Funktion sendImage () aufzurufen, wenn der Benutzer ihn dazu auffordert.

 def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Ihr endgültiges Programm sollte folgendermaßen aussehen:

 from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

Ihr eigener Telegramm-Bot

Herzliche Glückwünsche! Sie haben Ihren eigenen stressabbauenden Bot erstellt, der Open-Source-Bilder der süßesten Internetkatzen sendet, wenn Sie dazu aufgefordert werden. Versuchen Sie, Ihr Programm auszuführen, und geben Sie / meow in den Chat Ihres Bots ein, um es zu aktivieren.

Dies ist zwar ein einfacher Bot mit eingeschränkter Funktionalität, zeigt jedoch, wie leistungsfähig das Bot-Entwicklungs-Ökosystem von Telegram ist. Sie können eine beliebige Anzahl komplexer Unterprogramme und Funktionen hinzufügen, um die Funktionalität Ihres Bots zu verbessern – der Himmel ist die Grenze. Weitere Informationen zu fantastischen Telegramm-Bots, die Mitwirkende im Laufe der Jahre erstellt haben, finden Sie in unserer Liste nützlicher Telegramm-Bots .

Sie können auch eine Vielzahl von Open-Source-Lizenzprogrammen für Telegramm-Bots auf Plattformen wie GitHub finden. Mit den meisten Open-Source-Lizenzen können Sie den Quellcode eines Programms verwenden, studieren, herunterladen oder ändern.

Hosten Sie Ihren Telegramm-Bot online

Nachdem Sie Ihren Bot eingerichtet haben, schließen Sie main.py auf Ihrem PC und verwenden Sie den Bot in Ihrer Telegram Messenger-App. Reagiert es immer noch auf den Befehl / meow ? Nein, das tut es nicht.

Als Anfänger sind Sie möglicherweise verwirrt darüber, warum main.py auf Ihrem PC betriebsbereit sein muss, wenn Sie bereits einen im Internet laufenden Bot erstellt haben. Der Grund dafür ist, dass das Programm Ihren PC als lokalen Server verwendet, um HTTP-Anforderungen an die in diesem Programm verwendeten APIs zu senden.

Daher ist es weder machbar noch bequem, das Programm jedes Mal ausführen zu müssen, wenn Sie die App verwenden möchten. Um dieses Problem zu lösen, müssen wir die Abhängigkeit des Bots von Ihrem Gerät entfernen

Eine Möglichkeit, dies zu tun, besteht darin, eine kostengünstige Leiterplatte wie Raspberry Pi zu verwenden, um einen eigenen Webserver einzurichten und damit Ihr Programm auszuführen. Es hat die gleichen Vorteile wie das Ausführen des Programms auf Ihrem PC, ohne dass die Kosten dafür anfallen, dass es Tag und Nacht eingeschaltet bleibt, da Leiterplatten tendenziell einen erheblich geringeren Energieverbrauch haben.

Alternativ können Sie Ihr Programm auch in der Cloud bereitstellen. Besuchen Sie eine Web-App-Hosting-Plattform wie Heroku, AWS, Google Cloud oder Microsoft Azure und wählen Sie ein Abonnement, das Ihren Anforderungen am besten entspricht. Wir empfehlen, eine kostenlose Testversion oder ein Abonnement auszuwählen und zu aktualisieren, wenn Sie den Umfang oder Umfang Ihres Programms erhöhen.