Lyrischer Exkurs
Bots sind heute ein multifunktionales Werkzeug, sowohl für geschäftliche als auch für Unterhaltungszwecke. Persönlich glaube ich, dass die Zukunft bei ihnen liegt. Nachdem Sie diesen Artikel gelesen haben, können Sie natürlich keine großen Projekte erstellen, aber es ist ziemlich interessant, sich dafür zu interessieren und zu beginnen.
Installation und Einrichtung
Laden Sie zunächst Python selbst herunter. Sie können dies auf der
offiziellen Website tun. Vergessen Sie nicht, während der Installation das Hinzufügen zu PATH zu aktivieren! Nach der Installation von Python benötigen wir einen guten Code-Editor. JetBrains
hilft mit seinem kostenlosen
PyCharm . Wir sind nah dran, es bleibt noch die Telebot-Bibliothek herunterzuladen. Gehen Sie dazu zur Befehlszeile und schreiben Sie:
pip install pytelegrambotapi
Wenn alles gut gegangen ist, können wir weitermachen!
VPN
Ich denke, jeder kennt die Blockierung von Telegrammen in Russland und die einzige Lösung ist wie immer VPN. Persönlich empfehle ich
Windscribe als Sie geben Ihnen 2 GB. Der Verkehr ist völlig kostenlos!
Bot Vater
Bei der Suche nach einem Telegramm finden wir Bot Farher und erstellen unseren Bot mit dem Befehl / newbot. Geben Sie dann den Namen und den Benutzernamen ein. Bitte beachten Sie, dass der Benutzername mit bot enden muss!

Wie Sie sehen, haben wir ein spezielles API-Token erhalten, mit dem Sie Ihren Bot steuern können (in meinem Fall:
776550937: AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM ). Sie können sich an Ihr Token erinnern, aber ich empfehle, es aufzuschreiben.
Code
Der Moment ist gekommen, auf den alle gewartet haben. Öffnen Sie PyCharm und erstellen Sie ein neues Projekt.

Hier empfehle ich, alles als meins zu setzen (der Name kann natürlich geändert werden). Nachdem Sie das Projekt erstellt haben, erstellen wir eine Datei, in der sich unser Code befindet. Klicken Sie mit der rechten Maustaste auf den Ordner mit Ihrem Projekt und dann auf Neu → Python-Datei. Ok, fangen wir an, Code zu schreiben. Importieren Sie die Telebot-Bibliothek mit:
import telebot
Jetzt müssen Sie die Bot-Variable erstellen. Eigentlich kann der Variablenname alles sein, aber ich bin es gewohnt, Bot zu schreiben.
bot = telebot.TeleBot(' ')
Wir schreiben den Dekorator
bot .message_handler (), mit dem unser Bot auf den Befehl / start reagiert. Dazu schreiben wir Befehle = ['start'] in Klammern. Als Ergebnis sollten wir dies bekommen:
@bot.message_handler(commands=['start'])
Wenn Sie versuchen, Ihren Bot zu starten (RMB-> Ausführen), funktioniert nichts für Sie. Zuerst müssen wir am Ende des Codes bot.polling () schreiben. Dies ist erforderlich, damit der Bot nicht sofort ausgeschaltet wird, sondern funktioniert und prüft, ob auf dem Server eine neue Nachricht vorhanden ist. Und zweitens kann unser Bot, selbst wenn er nach Nachrichten sucht, immer noch nichts beantworten. Es ist Zeit, das Problem zu beheben! Nach unserem Dekorator erstellen wir die Funktion start_message, die den Nachrichtenparameter übernimmt (der Name der Funktion kann beliebig sein). Als nächstes implementieren wir das Senden von Nachrichten vom Bot selbst. In der Funktion schreiben wir bot.send_message (message.chat.id, 'Hallo, du hast mir geschrieben / start'). Sehen Sie, was Sie bekommen sollten:
import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start') bot.polling()
Lassen Sie uns überprüfen ...

Großartig, unser Bot funktioniert! Damit er nicht nur auf Befehle, sondern auch auf Nachrichten reagiert, erstellen Sie einen neuen Dekorationsbot .message_handler () und schreiben Sie in Klammern content_types = ['text']. Im Allgemeinen gibt es viele Arten von Inhalten, z. B. Ort, Foto, Audio, Aufkleber usw. Aber wir müssen auf den Text antworten, oder? Daher erstellen wir eine send_text-Funktion, die einen Nachrichtenparameter akzeptiert. In der Funktion schreiben wir die Bedingung:
@bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ', ') elif message.text == '': bot.send_message(message.chat.id, ', ')
Wenn der Nachrichtentext "Hallo" ist, antwortet der Bot "Hallo mein Schöpfer", und wenn der Nachrichtentext "Tschüss" ist, antwortet der Bot "Auf Wiedersehen Schöpfer". Hier denke ich, dass alles klar ist. Aber Sie haben sich höchstwahrscheinlich gefragt, und wenn der Benutzer "Hallo" oder "Hallo" schreibt, was sollten Sie in dieser Situation tun? Alles ist ganz einfach! In der Bedingung schreiben Sie nach dem message.text die Funktion .lower () und ersetzen Sie im Text alle Großbuchstaben durch Kleinbuchstaben. Jetzt antwortet unser Bot nicht nur auf "Hallo", sondern auch auf "PrivT" und sogar auf "PRIVET".

Folgendes sollten Sie bekommen:
import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling()
Nun, wir haben den Text herausgefunden, aber wie kann man zum Beispiel einen Aufkleber senden? Alles ist einfach! Jeder Aufkleber hat jeweils eine eigene ID. Wenn wir die ID kennen, können wir sie senden. Es gibt zwei Möglichkeiten, um die ID des Aufklebers zu erhalten. Die erste (einfache) - durch den speziellen Bot "Was ist die Aufkleber-ID?"

Nun, der zweite Weg für diejenigen, die nicht nach einfachen Wegen suchen. Wir erstellen einen neuen
Bot .message_handler () Dekorator, nur in Klammern schreiben wir content_types = ['sticker']. Dann ist alles wie gewohnt. Wir erstellen eine Funktion, die den Nachrichtenparameter übernimmt, aber hier schreiben wir print (message). Wir starten den Bot.

Sobald ich den Aufkleber gesendet habe, wurden sofort Informationen in der Konsole angezeigt, und ganz am Ende befindet sich unsere Aufkleber-ID (file_id). Stellen wir sicher, dass der Bot mit einem Aufkleber antwortet, wenn der Benutzer den Bot „Ich liebe dich“ sendet. Es ist nicht erforderlich, einen neuen Dekorateur zu erstellen. Wir fügen lediglich die vorherige Bedingung hinzu. Aber anstelle von bot.send_message () schreiben wir bot.send_sticker () und anstelle des Textes schreiben wir die ID des Aufklebers.

Herzlichen Glückwunsch, alles hat geklappt! Ich überlege, wie ich Audio, Fotos und Geolokalisierung senden soll. Sie werden es selbst herausfinden. Ich möchte Ihnen zeigen, wie Sie eine Tastatur erstellen, die der Bot Ihnen beim Start zeigt. Dies wird es schwieriger machen. Wir erstellen die Variable keyboard1, in die wir telebot.types.ReplyKeyboardMarkup () schreiben. Diese Funktion ruft die Tastatur auf. Als nächstes erstellen Sie die Zeilen, aber denken Sie daran, dass es nicht mehr als 12 Zeilen geben darf! Um sie zu erstellen, schreiben Sie keyboard1.row (). Schreiben Sie in Klammern, was Sie wollen, persönlich schreibe ich "Hallo" und "Tschüss". Um nun die Tastatur aufzurufen, fügen wir der Funktion zum Senden einer Nachricht beim Start reply_markup = keyboard1 hinzu. Folgendes sollten Sie bekommen:
keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start', reply_markup=keyboard1)
Wir starten den Bot ...

Sie sehen, dass die Tastatur ziemlich groß ist. Um dies zu beheben, müssen Sie nur True in ReplyKeyboardMarkup () registrieren. Wenn Sie möchten, dass die Tastatur ausgeblendet wird, sobald der Benutzer darauf klickt, schreiben Sie ein weiteres True. Weitere Informationen zu diesen Bedeutungen finden Sie in der
offiziellen Dokumentation .
keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)
Nun, das ist alles! Natürlich sind dies nicht alle möglichen Bots im Telegramm, aber ich habe Ihnen die Hauptfunktionen gezeigt. Vielen Dank für Ihre Aufmerksamkeit.
Quellcode:
import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ', /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == ' ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling()
Wenn Sie Fragen haben, können Sie an das Telegramm
dimagorovtsov schreiben