Een basistelegrambot bouwen met Python 3

Een basistelegrambot bouwen met Python 3

Als je een Telegram-gebruiker bent, heb je vast wel eens een ‘gesprek’ met een chatbot gehad. Met hun verbazingwekkende aanpasbaarheid bieden de bots van Telegram een ​​verscheidenheid aan voordelen --- of het nu gaat om het automatiseren van taken of om gewoon een beetje plezier te hebben met games in je chatgroep.





Hoewel sommigen het ontwikkelen van een bot misschien een ontmoedigende taak vinden, is het dat echt niet. Met de juiste planning kunt u een Telegram-bot in minder dan een uur aan de gang hebben! Hier leest u hoe u een eenvoudige Telegram-bot maakt die schattige foto's van internetkatten maakt wanneer daarom wordt gevraagd.





Beginnen

Voor deze tutorial gaan we Python 3 gebruiken, de python-telegram-bot en verzoeken bibliotheek, en TheCatAPI .





Elke bot in Telegram heeft een uniek token waarmee hij kan communiceren met Bot-API om de berichteninterface van de app te gebruiken. Bot API, een van de meest populaire functies van Telegram onder ontwikkelaars, stelt u in staat om zijn berichten als interface te gebruiken.

hoe een hotmail-account te verwijderen

Om het token te krijgen, start u een gesprek met @BotFather die, zoals de naam al doet vermoeden, een officiële bot is waarmee je je eigen bots kunt maken en aanpassen. U kunt de bot openen via de gegeven link of u kunt ook zoeken op '@botfather' op Telegram.



Eenmaal in de chat, maak je je bot door de . te typen /nieuwebot opdracht. Ga door met het instellen van de naam en gebruikersnaam van je bot (we hebben besloten de onze een naam te geven @pawsomebot). Hierna krijgt u een token die uniek is voor uw bot.

Nu we alle vereisten hebben, is het tijd om naar het spannende deel te gaan!





Bibliotheken installeren

Als u Windows gebruikt, opent u de opdrachtprompt en typt u de volgende opdrachten:

pip install python-telegram-bot
pip install requests

Als u macOS of Linux gebruikt, gebruikt u in plaats daarvan de volgende opdrachten op uw terminal. Zorg er bovendien in Linux voor dat u bent aangemeld als een gebruiker met sudo-rechten.





pip3 install python-telegram-bot
pip3 install requests

Het programma schrijven

Maak een nieuwe map op uw computer en open deze in uw favoriete editor. Maak een nieuw bestand en noem het main.py. Dit bestand bevat de broncode voor uw bot.

Laten we nu de bibliotheken importeren die we eerder hebben geïnstalleerd, samen met enkele van hun ingebouwde functies.

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

De stroom van het programma vanaf nu is om toegang te krijgen tot TheCatAPI, de URL van een willekeurige afbeelding te verkrijgen en die afbeelding naar de chat van de gebruiker te sturen.

Laten we beginnen met een functie om de afbeeldings-URL op te halen, wat kan worden gedaan met behulp van de aanvraagmodule. In deze functie laden we de JSON-gegevens van een willekeurig bestand geleverd door TheCatAPI en extraheren we de URL voor later gebruik. Om de indeling van het JSON-object te bekijken, gaat u naar: https://api.thecatapi.com/v1/images/search op uw browser. U zult iets als dit opmerken:

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

Merk op dat het JSON-object een array is die een woordenboek bevat. Dit woordenboek bevat de URL met de sleutel 'url'. Om de URL te extraheren, moeten we verwijzen naar het eerste element van de array en vervolgens naar de relevante sleutel.

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

Vervolgens moeten we deze afbeelding naar de chat van een gebruiker sturen. Hiervoor hebben we een afbeeldings-URL nodig, evenals de unieke ID van de chat van de gebruiker. Laten we hiervoor een wrapper-functie maken. Eerst noemen we de getUrl() . functie om de URL van een willekeurige afbeelding te verkrijgen --- deze URL verandert elke keer dat uw programma de functie doorloopt.

Dit wordt vervolgens gevolgd door het verkrijgen van de chat-ID van de ontvangende gebruiker, die de doellocatie van de bot voor berichten definieert en het ontleden van de URL via de ingebouwde Bot API. stuur foto() functie.

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

Als u meer wilt weten over de verschillende ingebouwde functies van Bot API en hoe ze werken, kunt u die van Telegram bekijken officiële documentatie na deze tutorial.

Laten we tot slot een functie maken die de algehele werking van de bot regelt. Deze functie --- conventioneel main() genoemd --- is waar we een HTTP-verzoek naar Bot API sturen met behulp van het token dat we aan het begin van de tutorial hebben verkregen en vervolgens definiëren hoe de gebruikersinteractie van de bot eruit zal zien. In een geval zo eenvoudig als het onze, betekent dit in wezen het starten van de bot en het aanroepen van de Stuur afbeelding () functie wanneer daarom wordt gevraagd door de gebruiker.

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()

Je definitieve programma zou er als volgt uit moeten zien:

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()

Je eigen Telegram-bot

Gefeliciteerd! Je hebt je eigen stressverlichtende bot gebouwd die open source-afbeeldingen van de schattigste internetkatten verzendt wanneer daarom wordt gevraagd. Probeer uw programma uit te voeren en typ /mauw in de chat van uw bot om deze te activeren.

Hoewel dit misschien een eenvoudige bot is met beperkte functionaliteit, laat het zien hoe krachtig het ecosysteem voor botontwikkeling van Telegram is. U kunt een willekeurig aantal complexe subroutines en functies toevoegen om de functionaliteit van uw bot te verbeteren --- de hemel is de limiet. Voor meer informatie over geweldige Telegram-bots die bijdragers in de loop der jaren hebben gemaakt, bekijk onze lijst met nuttige Telegram-bots .

U kunt ook een verscheidenheid aan open-source gelicentieerde programma's voor Telegram-bots vinden op platforms zoals GitHub. Met de meeste open-sourcelicenties kunt u de broncode van een programma gebruiken, bestuderen, downloaden of wijzigen.

Host uw Telegram Bot online

Nu je bot in gebruik is, probeer main.py op je pc te sluiten en de bot op je Telegram-messenger-app te gebruiken. Reageert het nog steeds op de? /mauw opdracht? Nee, dat doet het niet.

Als beginner ben je misschien in de war over de reden waarom main.py op je pc actief moet zijn als je al een bot op internet hebt gemaakt. De reden hiervoor is dat het programma uw pc als lokale server gebruikt om HTTP-verzoeken te verzenden naar de API's die in dit programma worden gebruikt.

Als zodanig is het niet haalbaar of handig om het programma elke keer dat u de app wilt gebruiken uit te voeren. Om dit probleem op te lossen, moeten we de afhankelijkheid van de bot van uw apparaat verwijderen

Een manier om dit te doen is door een goedkope printplaat (PCB), zoals Raspberry Pi, te gebruiken om uw eigen webserver op te zetten en deze te gebruiken om uw programma uit te voeren. Het heeft dezelfde voordelen als het programma op uw pc draaien zonder de kosten om het de hele dag en nacht aan te laten staan, aangezien PCB's over het algemeen een aanzienlijk lagere energie-voetafdruk hebben.

Als alternatief kunt u uw programma ook in de cloud implementeren. Ga naar een web-app-hostingplatform zoals Heroku, AWS, Google Cloud of Microsoft Azure en kies een abonnement dat het beste bij je past. We raden u aan een gratis proefversie of abonnement te kiezen en deze te upgraden naarmate u de schaal of reikwijdte van uw programma vergroot.

Deel Deel Tweeten E-mail Hoe u uw Python-website gratis kunt hosten op Heroku

Wilt u gratis een kleine website hosten? Heroku is misschien precies wat je zoekt.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Python
  • Telegram
  • Chatbot
  • Bots voor sociale media
Over de auteur Yash Chellani(10 artikelen gepubliceerd)

Yash is een aspirant-student computerwetenschappen die ervan houdt dingen te bouwen en te schrijven over alles wat met technologie te maken heeft. In zijn vrije tijd speelt hij graag squash, leest hij een exemplaar van de nieuwste Murakami en jaagt hij op draken in Skyrim.

Meer van Yash Chellani

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren