Hvordan bygge en grunnleggende Telegram Bot med Python 3

Hvordan bygge en grunnleggende Telegram Bot med Python 3

Hvis du er en Telegram -bruker, vil du sikkert ha hatt en 'samtale' med en chatbot på et tidspunkt. Med sin fantastiske tilpassbarhet tilbyr Telegrams roboter en rekke fordeler-det være seg for å automatisere oppgaver eller bare ha det gøy med spill i chat-gruppen din.





Selv om noen synes det er en skremmende oppgave å utvikle en bot, er det virkelig ikke det. Med riktig planlegging kan du ha en Telegram -bot i gang på mindre enn en time! Slik lager du en enkel Telegram -bot som sender ut søte bilder av internettkatter når du blir bedt om det.





Starter

For denne opplæringen skal vi bruke Python 3, python-telegram-bot og forespørsler bibliotek, og TheCatAPI .





Hver bot i Telegram har et unikt token som hjelper den å kommunisere med Bot API for å bruke appens meldingsgrensesnitt. Bot API, en av Telegrams mest populære funksjoner blant utviklere, lar deg bruke meldingene som et grensesnitt.

Windows kan ikke kommunisere med enheten

For å få token, start en samtale med @BotFather som, som navnet antyder, er en offisiell bot som lar deg lage og tilpasse dine egne bots. Du kan få tilgang til boten ved hjelp av den angitte lenken eller alternativt søke '@botfather' på Telegram.



Når du er i chatten, lager du boten din ved å skrive /newbot kommando. Fortsett å angi navnet og brukernavnet til boten din (vi bestemte oss for å gi vår @pawsomebot et navn). Etter dette får du et token som er unikt for boten din.

Nå som vi har alle forutsetningene, er det på tide å komme til den spennende delen!





Installere biblioteker

Hvis du bruker Windows, åpner du ledeteksten og skriver inn følgende kommandoer:

pip install python-telegram-bot
pip install requests

Hvis du bruker macOS eller Linux, bruker du følgende kommandoer på terminalen i stedet. I tillegg må du sørge for at du er logget på som bruker med sudo -privilegier i Linux.





pip3 install python-telegram-bot
pip3 install requests

Skriver programmet

Lag en ny mappe på datamaskinen din og åpne den i favorittredigereren din. Lag en ny fil og gi den navnet main.py. Denne filen vil inneholde kildekoden for boten din.

La oss nå importere bibliotekene vi installerte tidligere sammen med noen av deres innebygde funksjoner.

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

Flyten av programmet herfra og ut er å få tilgang til TheCatAPI, få URL -en til et tilfeldig bilde og sende det bildet til brukerens chat.

La oss starte med en funksjon for å få bilde -URL -en, som kan gjøres ved hjelp av forespørselsmodulen. I denne funksjonen laster vi JSON -dataene til en tilfeldig fil levert av TheCatAPI og trekker ut URL -en for senere bruk. For å se på formatet til JSON -objektet, gå til https://api.thecatapi.com/v1/images/search i nettleseren din. Du vil legge merke til noe slikt:

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

Legg merke til at JSON -objektet er en matrise som inneholder en ordbok. Denne ordboken inneholder nettadressen med nøkkelen 'url'. For å trekke ut URL -en må vi referere til det første elementet i matrisen, og deretter til den relevante nøkkelen.

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

Deretter må vi sende dette bildet til en brukers chat. For dette trenger vi en bildeadress og en unik ID for brukerens chat. La oss lage en innpakningsfunksjon for å gjøre dette. Først kaller vi getUrl () . funksjon for å få URL til et tilfeldig bilde --- denne URL endres hver gang programmet iterates gjennom funksjonen.

Dette blir deretter fulgt av å skaffe mottakerbrukerens chat -ID, som definerer botens målplassering for meldinger og analysere nettadressen gjennom Bot APIs innebygde Send bilde() funksjon.

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

For å finne ut mer om Bot APIs forskjellige innebygde funksjoner og hvordan de fungerer, kan du sjekke ut Telegrams offisiell dokumentasjon etter denne opplæringen.

Til slutt, la oss lage en funksjon som styrer det generelle arbeidet til boten. Denne funksjonen --- konvensjonelt kalt main () --- er der vi sender en HTTP-forespørsel til Bot API ved hjelp av tokenet vi fikk i begynnelsen av opplæringen og deretter definerer hvordan botens brukerinteraksjon vil være. I et så enkelt tilfelle som vårt, betyr dette i hovedsak å starte boten og ringe til sendImage () funksjonen når brukeren blir bedt om det.

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

Det endelige programmet ditt skal se slik ut:

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

Din egen Telegram Bot

Gratulerer! Du har bygd din egen stressavlastende bot som sender bilder med åpen kildekode av de søteste internettkattene når de blir bedt om det. Prøv å kjøre programmet og skriv /mjau i botens chat for å aktivere den.

Selv om dette kan være en enkel bot med begrenset funksjonalitet, viser det hvor kraftig Telegrams botutviklingsøkosystem er. Du kan legge til et hvilket som helst antall komplekse underrutiner og funksjoner for å forbedre funksjonaliteten til boten din --- himmelen er grensen. For å finne ut mer om fantastiske Telegram -bots som bidragsytere har laget gjennom årene, sjekk ut vår liste over nyttige Telegram -roboter .

Du kan også finne en rekke åpen kildekode-lisensierte programmer for Telegram-roboter på plattformer som GitHub. De fleste lisenser med åpen kildekode lar deg bruke, studere, laste ned eller endre kildekoden til et program.

Vert din Telegram Bot Online

Nå som du har boten din i gang, kan du prøve å lukke main.py på PCen og bruke boten på Telegram messenger -appen. Svarer den fortsatt på /mjau kommando? Nei, det gjør det ikke.

Som nybegynner kan du være forvirret om hvorfor main.py på PC -en din må være i gang når du allerede har opprettet en bot som kjører på internett. Grunnen til dette er at programmet bruker PC -en din som en lokal server for å sende HTTP -forespørsler til API -ene som brukes i dette programmet.

Som sådan er det verken mulig eller praktisk å måtte kjøre programmet hver gang du vil bruke appen. For å løse dette problemet må vi fjerne botens avhengighet av enheten din

En måte å gjøre det på er å bruke et rimelig kretskort (PCB), for eksempel Raspberry Pi, til å sette opp din egen webserver og bruke den til å kjøre programmet. Det har de samme fordelene som å kjøre programmet på din PC uten kostnadene ved å beholde det hele dagen og natten siden PCB har en tendens til å ha et betydelig lavere energifotavtrykk.

Alternativt kan du også distribuere programmet til skyen. Gå til en web-app-vertsplattform som Heroku, AWS, Google Cloud eller Microsoft Azure og velg et abonnement som passer best for dine behov. Vi anbefaler å velge en gratis prøveversjon eller et abonnement og oppgradere den etter hvert som du øker omfanget eller omfanget av programmet.

Dele Dele kvitring E -post Hvordan hoste ditt Python -nettsted gratis på Heroku

Trenger du å være vert for et lite nettsted uten kostnad? Heroku kan være akkurat det du leter etter.

Les neste
Relaterte temaer
  • Programmering
  • Python
  • Telegram
  • Chatbot
  • Bots for sosiale medier
Om forfatteren Yash Chellani(10 artikler publisert)

Yash er en håpefull informatikkstudent som liker å bygge ting og skrive om alt teknisk. På fritiden liker han å spille Squash, lese en kopi av den siste Murakami og jakte på drager i Skyrim.

Mer fra Yash Chellani

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere