Com es construeix un bot de telegrama bàsic amb Python 3

Com es construeix un bot de telegrama bàsic amb Python 3

Si sou usuari de Telegram, és probable que hagueu mantingut una 'conversa' amb un chatbot en algun moment. Gràcies a la seva personalització increïble, els robots de Telegram ofereixen una gran varietat d’avantatges, ja sigui per automatitzar tasques o simplement divertir-se amb els jocs del grup de xat.





Tot i que és possible que alguns desenvolupin un robot com una tasca descoratjadora, realment no ho és. Amb la planificació adequada, podeu tenir un bot de Telegram en funcionament en menys d’una hora. A continuació s’explica com crear un robot de Telegram senzill que emet imatges boniques de gats d’Internet quan se us demani.





Començant

Per a aquest tutorial, farem servir Python 3, el fitxer python-telegram-bot i sol·licituds biblioteca, i El CatAPI .





Tots els robots de Telegram tenen un testimoni únic que l’ajuda a comunicar-se API Bot per utilitzar la interfície de missatgeria de l’aplicació. L'API Bot, una de les funcions més populars de Telegram entre els desenvolupadors, us permet utilitzar els seus missatges com a interfície.

com obtenir un retrat a l'iPhone 7

Per obtenir el testimoni, inicieu una conversa amb @BotFather que, com el seu nom indica, és un bot oficial que us permet crear i personalitzar els vostres propis robots. Podeu accedir al bot mitjançant l’enllaç indicat o, alternativament, cercar ‘@botfather’ a Telegram.



Un cop al xat, creeu el bot escrivint el bot / newbot comandament. Continueu configurant el nom i el nom d'usuari del vostre bot (hem decidit anomenar el nostre @pawsomebot). Després, obtindreu un testimoni únic per al vostre bot.

Ara que tenim tots els requisits previs, és hora d’arribar a la part emocionant.





Instal·lació de biblioteques

Si utilitzeu Windows, obriu l'indicador d'ordres i escriviu les ordres següents:

pip install python-telegram-bot
pip install requests

Si utilitzeu macOS o Linux, feu servir les ordres següents al vostre terminal. A més, assegureu-vos que heu iniciat la sessió com a usuari amb privilegis sudo a Linux.





pip3 install python-telegram-bot
pip3 install requests

Redacció del programa

Creeu una carpeta nova a l'ordinador i obriu-la al vostre editor favorit. Creeu un fitxer nou i anomeneu-lo main.py. Aquest fitxer contindrà el codi font del bot.

Ara, importem les biblioteques que hem instal·lat anteriorment, juntament amb algunes de les seves funcions integrades.

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

El flux del programa d’aquí en endavant és accedir a TheCatAPI, obtenir l’URL d’una imatge aleatòria i enviar aquesta imatge al xat de l’usuari.

Comencem amb una funció per obtenir l'URL de la imatge, que es pot fer mitjançant el mòdul de sol·licituds. En aquesta funció, carreguem les dades JSON d’un fitxer aleatori proporcionat per TheCatAPI i n’extreurem l’URL per utilitzar-les posteriorment. Per veure el format de l'objecte JSON, aneu a https://api.thecatapi.com/v1/images/search al vostre navegador. Notareu una cosa així:

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

Fixeu-vos que l'objecte JSON és una matriu que conté un diccionari. Aquest diccionari conté l'URL amb la clau 'url'. Per extreure l'URL, hem de fer referència al primer element de la matriu i després a la clau corresponent.

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

A continuació, hem d’enviar aquesta imatge al xat d’un usuari. Per a això, necessitem un URL d’imatge i l’identificador únic del xat de l’usuari. Creem una funció d'embolcall per fer-ho. En primer lloc, anomenem el getUrl () . funció per obtenir l'URL d'una imatge aleatòria --- aquest URL canvia cada vegada que el programa itera a través de la funció.

Tot seguit, s’obté l’identificador de xat de l’usuari destinatari, que defineix la ubicació de destinació del bot per als missatges i analitza l’URL a través de l’API de bot incorporada. Envia una foto() funció.

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

Per obtenir més informació sobre les diverses funcions incorporades de l'API Bot i com funcionen, no dubteu a consultar les de Telegram documentació oficial després d’aquest tutorial.

Finalment, creem una funció que controla el funcionament general del bot. Aquesta funció --- anomenada convencionalment main () --- és on enviem una sol·licitud HTTP a l'API Bot mitjançant el testimoni que vam obtenir al principi del tutorial i després definim com serà la interacció amb l'usuari del bot. En un cas tan simple com el nostre, això significa essencialment iniciar el bot i trucar al fitxer enviarImatge () funció quan l'usuari ho demani.

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

El vostre programa final hauria de tenir aquest aspecte:

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

El vostre propi bot de Telegram

Enhorabona! Heu creat el vostre propi robot per alleujar l’estrès que envia imatges de codi obert dels gats d’Internet més macos quan se us demana. Proveu d'executar el programa i escriviu /meu al xat del vostre bot per activar-lo.

Tot i que pot ser un bot simple amb una funcionalitat limitada, mostra el poderós ecosistema de desenvolupament de bot de Telegram. Podeu afegir qualsevol nombre de subrutines i funcions complexes per millorar la funcionalitat del vostre bot: el cel és el límit. Per obtenir més informació sobre els increïbles robots de Telegram que han contribuït els col·laboradors al llarg dels anys, consulteu el nostre llista de bots útils de Telegram .

També podeu trobar una gran varietat de programes amb llicència de codi obert per a robots Telegram en plataformes com GitHub. La majoria de llicències de codi obert us permeten utilitzar, estudiar, descarregar o modificar el codi font d’un programa.

Allotgeu el vostre bot de Telegram en línia

Ara que ja teniu el bot en funcionament, proveu de tancar main.py al vostre PC i utilitzeu el bot a la vostra aplicació de missatgeria Telegram. Encara respon al /meu comandament? No, no.

Com a principiant, us pot confondre el motiu pel qual main.py al vostre ordinador ha d’estar en funcionament quan ja heu creat un bot que s’executa a Internet. La raó és que el programa utilitza el vostre PC com a servidor local per enviar sol·licituds HTTP a les API que s’utilitzen en aquest programa.

Com a tal, no és factible ni convenient haver d'executar el programa cada vegada que vulgueu utilitzar l'aplicació. Per resoldre aquest problema, hem d’eliminar la dependència del bot al vostre dispositiu

Una manera de fer-ho és fer servir una placa de circuit imprès (PCB) de baix cost, com ara Raspberry Pi, per configurar el vostre propi servidor web i utilitzar-lo per executar el vostre programa. Té els mateixos avantatges que executar el programa al vostre PC sense costos de mantenir-lo tot el dia i la nit, ja que els PCB solen tenir una petjada energètica significativament inferior.

Com a alternativa, també podeu desplegar el vostre programa al núvol. Dirigiu-vos a una plataforma d’allotjament d’aplicacions web com Heroku, AWS, Google Cloud o Microsoft Azure i trieu una subscripció que s’adapti millor a les vostres necessitats. Recomanem escollir una prova o subscripció gratuïta i actualitzar-la a mesura que augmenteu l’escala o l’abast del vostre programa.

Compartir Compartir Tweet Correu electrònic Com allotjar el vostre lloc web Python de forma gratuïta a Heroku

Necessiteu allotjar un lloc web sense cap cost? Heroku pot ser el que busqueu.

Llegiu a continuació
Temes relacionats
  • Programació
  • Python
  • Telegrama
  • Chatbot
  • Bots de xarxes socials
Sobre l'autor Yash Chellani(10 articles publicats)

Yash és un aspirant a estudiant d'informàtica a qui li encanta construir coses i escriure sobre totes les coses tecnològiques. Durant el temps lliure, li agrada jugar a l’esquaix, llegir una còpia de l’últim Murakami i caçar dracs a Skyrim.

Més de Yash Chellani

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us