Cómo implementar el bot Python Telegram usando Webhooks en Google Cloud Platform
En lugar del prólogo

- Escribe un bot de telegramas. Ahora incluso los escolares escriben ”, dijo.
"Y por qué no", pensé entonces ("Bueno, bueno", diría ahora).
Nos sentamos en Bean y con una taza de café discutimos las posibilidades de probar ideas con modelos de inteligencia artificial en un círculo cercano y no muy cercano de amigos. Lena, mi ex colega, y en todos los aspectos no una rubia que acababa de graduarse de una magistratura, razonó de la siguiente manera. Al crear un bot, puede ahorrar tiempo y energía en la interfaz al enfocarse en el núcleo con el aprendizaje automático. Debes admitir que fue imposible resistirse a esa lógica de "deportista, miembro de Komsomol y simplemente hermosa" ese hermoso domingo por la mañana. Está resuelto. Telegram bot significa telegram bot.
En primer lugar, me metí en Google y encontré una gran cantidad de enlaces "cómo hacer un bot en 30 minutos". Me inspiró tanto que no fui más allá de los nombres y comencé a crear un núcleo. En la primera aproximación, tuve que escribir un sistema de procesamiento de consultas de búsqueda usando NLP (procesamiento de lenguaje natural). Escribir el núcleo tomó un tiempo bastante razonable (sin embargo, la experiencia de Coca-Cola no se puede beber). Y unos días después estaba listo para envolver la primera versión de prueba del kernel en un par de otros comandos de envío y recepción en un par de horas, ejecutando todo esto en Telegram para el beneficio de mis amigos. Pero ahí estaba.
De repente surgieron muchos problemas. Después de pasar un par de días buscando en Internet y hablando con colegas en la tienda, me di cuenta de que lo obvio no es obvio y que otra "instrucción" no hará daño. Entonces apareció este artículo.
En lugar de entrada. Bibliotecas
Hay varias bibliotecas de Python para bots de telegramas. Telegram se refiere a tres de ellos: python-telegram-bot , pyTelegramBotAPI , AIOGram . Los enlaces a estas bibliotecas y ejemplos en otros idiomas se pueden encontrar en el sitio web de Telegram aquí . Por supuesto, todavía existe la API de Telegram . En el curso de mis experimentos, probé dos variantes de la API de Telegram y pyTelegramBotAPI. Y mientras se detuvo en el segundo.
En general, las impresiones de las bibliotecas son las siguientes. Todos son muy similares, lo cual no es sorprendente. Python-telegram-bot, me pareció, tiene la mejor documentación de todas, aunque el trabajo se ha detenido (espero estar equivocado). Se puede ver que el trabajo continúa en pyTelegramBotAPI, aparece una nueva funcionalidad. AIOGram parece más joven y más verde. En el último no me gustó eso, en lugar de la documentación en webhooks había un enlace al sitio web de Telegram. Pero todo fluye, todo cambia. Y la elección final queda por hacer.
No volveremos al tema de las bibliotecas en este artículo.
En cuanto al código del bot en sí, como ya he señalado, hay muchos manuales en Internet dedicados a crear programas simples y más complejos. Para los propósitos de este artículo, esto no tiene principios. Tomemos por definición dos ejemplos del github oficial pyTelegramBotAPI:
- Telegram bot usando sondeo ;
- Telegram bot usando webhook .
Los temas más controvertidos con los bots de telegram son los certificados SSL, webhooks y diploing. Alrededor de esto y centrar nuestra atención. A continuación, le daré instrucciones paso a paso que le permitirán colocar su bot de telegramas en uno de los mejores servicios en la nube del mundo de la manera más simple y confiable en el menor tiempo (al menos en el primer año). También se resaltará la creación de certificados SSL, su registro en Telegram y otros temas relacionados. Si es necesario, daré explicaciones de por qué usamos esta o aquella opción, estos o esos equipos.
Encuesta vs Webhook

Si no fuera por la confrontación entre sondeo vs webhook y algunas dificultades (parcialmente inventadas) con webhook, este artículo no hubiera sido necesario. Como esto es de importancia fundamental, veamos con más detalle.
¿Qué es un bot y cómo se comunica con Telegram? Obviamente, un bot es un programa que se ejecuta en su computadora o servidor. Y la comunicación con el Telegram se produce enviando y recibiendo mensajes. Y si todo está claro con el envío de mensajes, una opción es enviar (la dirección "dónde" la conocemos). Hay dos opciones para recibir mensajes de bot de Telegram.
El primero es una encuesta (traducción literal de la palabra sondeo) del servidor Telegram para mensajes para el bot. El segundo es un "buzón" con una dirección IP (webhook se puede traducir como una trampa web), a la que llegan los mensajes del servidor Telegram.
La analogía más simple con el correo real. Deje que el correo (oficina de correos) sea el servidor de Telegram, y usted es su bot. Luego, en el primer caso (votación), debe dirigirse a la oficina de correos para recibir correspondencia. Y si desea recibir mensajes sin demora, no tendrá que irse, sino literalmente ir y venir sin respiro. Según entendemos, ¡está prohibido vivir en el correo esperando mensajes! En el segundo caso, le dice a la oficina de correos la dirección de su casa y espera la correspondencia tranquilamente en casa, tomando té o fumando bambú.
Por supuesto, para una persona, la primera opción parece la más severa. Pero, hablando entre nosotros, si corremos detrás de los mensajes enviamos un trozo de hierro con un código, entonces no debería importarnos. Y así sería, si no fuera por un problema. De vez en cuando, el correo (el servidor de Telegram) a veces cierra para el almuerzo, luego se mueve. Y en su primera opción (sondeo) ocurre una tragedia, que en el mundo real de los bots termina con su desplazamiento y falla.
En el segundo caso, el "buzón" con la dirección (webhook) no ocurre. Porque ni usted ni su bot no van a ninguna parte, sino que simplemente esperan. Y no le importa a dónde se haya mudado la oficina de correos, porque el cartero le envía el correo.
Por lo tanto, en términos de la cantidad de código (ver enlace anterior), la primera opción parece más simple. Y el segundo es más lógico, pero más difícil. Para su implementación, debe obtener una dirección, confirmar su autenticidad y elevar el servidor web, al que llegarán los mensajes del Telegram.
Por supuesto, para la primera opción es posible agregar manejo de excepciones al código. Por ejemplo, si el correo está cerrado, espere y espere. Pero Internet afirma que los mismos bots con sondeo son solo para jugar.
Al principio no creía que el problema fuera tan grave. E hizo una opción con el sondeo, sugiriendo que algún día lo volvería a escribir en webhooks. Pero eso no funcionó. En la computadora de mi casa con macOS, el bot funcionó sin problemas durante una hora y dos (por supuesto, con una VPN) y no se bloqueó. Pero tan pronto como lo transfirí al servidor de la nube en Linux, no pudo funcionar durante 20 minutos. Traté de resolver este problema de diferentes maneras y configuraciones, pero recibí solo un código de error diferente. Selawy, este es Telegram. Habiendo perdido un día, tuve que tomar webhooks, sin demora. Al final, quería lanzar el bot en el servidor ahora, y no en un año.
Reescribiendo código en webhook
El webhook no da tanto miedo como está pintado.
Si ya tiene un código bot con sondeo, copiarlo al webhook no será difícil. Compare los códigos de los ejemplos de la biblioteca pyTelegramBotAPI. Encontrará la intersección del código. Las líneas 13-25 del primer ejemplo son las mismas que las líneas 56-67 del segundo ejemplo . Esta es una unidad lógica responsable de procesar comandos, mensajes y respuestas. En este caso, el ejemplo es demasiado simple, pero refleja la esencia principal.
Por lo tanto, el bloque lógico del bot debe dejarse sin cambios, y el resto debe cambiarse utilizando el código de copiado banal fuera del bloque lógico del segundo ejemplo (es decir, copie las líneas 1-55 y 70-87). Si observa el código que está copiando, puede descubrir fácilmente que, utilizando la biblioteca aiohttp, su bot instala un servidor http y comienza a escuchar en el puerto asignado para este puerto, mientras que el módulo ssl de Python es responsable del cifrado y los certificados. Además de aiohttp, hay otras bibliotecas similares, cuyos ejemplos se pueden encontrar aquí .
Entonces Tenemos un bot con webhook. Queda por cargarlo en el servidor y ejecutarlo, recibiendo simultáneamente datos para completar los valores vacíos en el código API_TOKEN, WEBHOOK_HOST, WEBHOOK_PORT, WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV. Detrás de cada uno de estos valores hay un cierto procedimiento con un significado secreto.
Registrarse bot en Telegram
Comencemos con el token bot. Para obtenerlo, vaya al mensajero de Telegram y conéctese al bot @BotFather. Ingrese el comando "/ newbot". En respuesta, BotFather nos solicita que ingresemos el nombre y el nombre de usuario de nuestro bot y nos envía un codiciado token del formulario "712308912: DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova" (por supuesto, tendrá otro). Guardamos el token, no se lo mostramos a nadie. En el código lo asignamos a la variable API_TOKEN.
Dónde publicar Google Cloud Platform vs Heroku
Algunas palabras sobre el tormento de elegir un servicio en la nube. Hay muchos ejemplos en Internet donde los bots de telegramas están alojados en Heroku. Heroku es una plataforma PaaS (plataforma como servicio). Subes el código a GitHub, y desde allí a Heroku . Y tu bot comienza a funcionar de inmediato. No es necesario instalar el servidor, Python y las bibliotecas, todo ya se ha hecho por usted. Al menos, idealmente. Esta solución también me la recomendó uno de mis amigos. Pero lo rechacé.
Según tengo entendido, el mensaje principal para las recomendaciones de Heroku en muchos manuales de "bot de 30 minutos" es la disponibilidad de un plan tarifario gratuito para Heroku. Pero, si observa de cerca, resulta que este plan es muy limitado y no le permitirá implementar un bot gratuito que funcione día y noche.
A diferencia de Heroku, Google Cloud Platform (GCP) ofrece un año completo de trabajo gratuito en todos los servicios dentro de los $ 300. Por esta cantidad para el año, puedes probar muchas cosas. En mi opinión, este es un regalo maravilloso, especialmente para aquellos que se dedican a la ciencia de datos. Y, por supuesto, GCP también es PaaS, una lista completa de servicios está aquí . Hay soluciones sin servidor, como en Heroku. Elegí un camino más conservador para un mayor control en el futuro, a saber, la solución de servidor Compute Engine en GCP.
Plataforma en la nube de Google
Proyecto, instancia, ip estática, puerto
Crear un proyecto y servidor
Vamos a GCP, seleccionamos "Comenzar gratis" y seguimos las instrucciones. Si hacemos todo bien, tendremos una cuenta con un monto de $ 300 e incluso el primer proyecto creado. Seleccionamos este proyecto o creamos otro en el menú superior, lo cual no es difícil. Y luego vaya a la pestaña "Compute Engine / VM Instance" en el menú lateral que se abre.
Haga clic en "CREAR INSTANCIA" y seleccione la configuración del servidor, por ejemplo, como se muestra en la siguiente captura de pantalla. Puede elegir una microconfiguración y luego costará solo $ 4 por mes. También puede barajar, los fondos se debitarán de un regalo de Google a $ 300.
Como resultado, obtenemos.
Hacer la dirección IP estática
En la columna "IP externa", vemos la dirección que ingresamos en la variable WEBHOOK_HOST en nuestro bot (en este ejemplo, es 35.224.231.90). Recibiremos un certificado SSL a esta dirección más adelante. Si tiene la intención de usar el bot por un tiempo prolongado (incluso si cambia el servidor dentro de GCP), le recomiendo que esta dirección IP sea estática para guardarla cuando cambie de una instancia a otra. Esto se hace en la sección "VPC / Direcciones IP externas".
Cambiamos el campo "Tipo" de "Efímero" a "Estático", dando el nombre a la dirección estática para que no se confunda más tarde si tiene una docena de direcciones IP más tarde.
Puerto abierto
Para que el webhook funcione correctamente, debemos abrir el puerto en el que Telegram tocará. Actualmente (julio de 2019) Telegram admite los siguientes puertos: 443, 80, 88, 8443. Más detalles puede ver la guía completa de Telegram en webhooks aquí . Abriremos el puerto 8443. En nuestro bot, este valor ya está asignado a la variable WEBHOOK_PORT. Queda por configurar la regla de firewall en GCP para nuestra instancia de webhook-bot. Como hacerlo Vaya a la pestaña "Reglas de VPC / Firewall" y haga clic en "CREAR REGLA DE FIREWALL".
Y cree una regla, como se muestra en la captura de pantalla a continuación.
Nos conectamos al servidor, instalamos bibliotecas
Esto completa la configuración básica del servidor en Google Cloud Platform. Tenemos una cuenta en GCP, creamos un proyecto, creamos un servidor (instancia) basado en Ubuntu 19.04 como parte del proyecto, reservamos una dirección IP, abrimos el puerto 8443.
Queda poco. Esperemos que podamos prescindir de una descripción detallada de la parte de instalación de Python y las bibliotecas. Por lo tanto, brevemente.
Vaya a la pestaña GCP "Compute Engine / VM Instance" y en el campo "Connect" haga clic en "SSH".
Se debe abrir una terminal en su computadora local con acceso a la instancia en GCP. Este es un entorno normal de Ubuntu. Instale conda o virtualenv , cree un entorno virtual e instale Python 3 con las bibliotecas principales. Además, instalamos las bibliotecas necesarias para el funcionamiento de nuestro bot:
pip install pyTelegramBotAPI
pip install aiohttp
Después de la instalación, no cierre la terminal, la necesitaremos.
Obtención de un certificado SSL autofirmado para IP
Debo decir que en Internet el tema de los certificados SSL para Telegram es un horror absoluto. Como Mikhail Lermontov dijo a este respecto:
"Caballos mezclados en un montón, gente,
Y voleas de mil cañones
Fundido en un largo aullido ... "
Si lees lo que escriben en Internet, resulta que si el bot no funciona en webhooks, entonces los culpables son los certificados recibidos incorrectamente. Y sin embargo, no se pueden registrar en ip. En general, Telegram no acepta certificados autofirmados. E incluso si acepta el certificado, esto no significa que su bot funcionará, y Telegram ni siquiera enviará un error.
Estas son historias de terror. ¿Por qué estoy escribiendo esto? Además del hecho de que estas historias de terror me costaron otro día perdido, incluso tuve que omitir ver "El Hobbit". Mi bot inicialmente se negó a trabajar en webhooks. Esto sucedió debido a mis errores al colocarlo en el servidor (entonces no lo sabía). Pero debido a las historias de terror anteriores, estaba buscando el problema que no estaba allí, centrándome en resolver problemas con certificados SSL que no estaban allí. Pero gané una experiencia invaluable. Registré certificados para los próximos años tanto para nombres de dominio como para ip, tanto autofirmados como pagados, tanto en forma de dos archivos como en forma de cuatro. Descubrí qué certificados vienen y cómo hacer cadenas de ellos. Espero que esto sea útil alguna vez.
Una cosa es buena, no necesitas pisar este rastrillo, ya lo hice por ti. Admito plenamente que, como no hay "humo sin fuego", había una razón para tales historias de terror. Pero para el día actual, la situación parece haberse calmado.
En este momento, recibiremos un certificado SSL de la manera más conveniente para nosotros, es decir, en ip (y no en un nombre de dominio), autofirmado (es decir, gratis) y con un costo de una sola línea sin ningún sitio.
En el terminal (que aún no hemos cerrado), prepare un directorio separado en el que guardaremos el archivo del certificado y la clave privada. Vaya a este directorio y llame al siguiente comando desde él.
$ openssl req -newkey rsa:2048 -sha256 -nodes -keyout url_private.key -x509 -days 3560 -out url_cert.pem
En respuesta, recibirá solicitudes para completar una serie de campos simples. Llénalos en el siguiente ejemplo. Pero, por supuesto, indique correctamente el código de su país, región, ciudad, nombre de la empresa (si corresponde), sustituya su IP y su correo electrónico.
Como resultado, obtendrá dos archivos en el directorio desde el que ejecutó este comando. Un archivo url_cert.pem es su certificado, y la segunda clave privada es url_private.key. En el código bot, se les asignan las variables WEBHOOK_SSL_CERT y WEBHOOK_SSL_PRIV, respectivamente. No olvide ingresar las rutas de acceso a estos archivos junto con los nombres. Descargue copias y guárdelas para referencia futura.
No cierre la terminal.
Registrar webhook en Telegram
Registrar un webhook con un certificado autofirmado
Quizás esta sea la parte más emocionante de "¿Qué dirá Telegram?". Sin preámbulos, simplemente introduzca el siguiente comando en su terminal. Reemplace la dirección IP con la suya; no toque el puerto 8443. Inserte el token recibido de BotFather entre "/ bot" y "/ setWebhook") en lugar de YOUR-TOKEN. Ejecute el comando desde el directorio donde se almacenan los certificados.
$ curl -F "url=https://35.224.231.90:8443" -F "certificate=@url_cert.pem" https://api.telegram.org/botYOUR-TOKEN/setWebhook
Si todo está correcto, recibirá en el terminal un mensaje conciso del Telegram que indica que el webhook está instalado.
Registrar un webhook con el certificado "correcto"
Si no tiene un certificado autofirmado, puede instalar webhook con el siguiente comando directamente desde el navegador.
https://api.telegram.org/botYOUR-TOKEN/setWebhook?url=https://YOUR.DOMAIN:8443/YOUR-TOKEN/
Tenga en cuenta que su token se indica dos veces. Además, es importante que YOUR.DOMAIN se especifique como se muestra en el certificado. Por ejemplo Registré el dominio mydreem.com, el registrador me emitió un certificado SSL para el dominio www.mydreem.com. En lugar de YOUR.DOMAIN, debe especificar el último www.mydreem.com.
¿Cómo verificar si webhook está instalado?
Puede verificar si webhook está instalado desde el navegador con el siguiente comando:
https://api.telegram.org/botYOUR-TOKEN/getWebhookInfo
Esto funciona para todos los casos. En respuesta, debería obtener algo como esto en caso de que el webhook esté instalado y el bot se esté ejecutando:
{"ok":true,"result":{"url":"https://35.224.231.90:8443/712308912:DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova/","has_custom_certificate":true,"pending_update_count":0,"max_connections":40}}
O así, cuando el webhook está instalado, pero el bot no funciona (no se ejecuta):
{"ok":true,"result":{"url":"https://35.224.231.90:8443/712308912:DLGSteczdUnPdnNYLzNikaGOhome7l9q3vova/","has_custom_certificate":true,"pending_update_count":2,"last_error_date":1564506964,"last_error_message":"Connection refused","max_connections":40}}
¿Cómo restablecer webhook?
A veces puede que necesite cambiar el certificado del bot, por ejemplo, en caso de mudarse a otro servidor (dominio). Entonces el token permanece y el certificado cambia (el webhook se reinstala). O se hace necesario ejecutar el bot no en el webhook, sino en el sondeo (si el webhook está instalado, el sondeo no funcionará). En ambos casos, un comando que "restablece" el webhook es útil:
https://api.telegram.org/botYOUR-TOKEN/setWebhook
Ahora todo está listo para cargar el código al servidor y ejecutar el bot. Si eres un maestro del juego en la línea de comando con diez dedos, entonces no será difícil para ti. Y en un minuto tu bot funcionará. De lo contrario, la siguiente sección ayudará a facilitar un poco la tarea de cargar / descargar archivos a su servidor y administrarlos.
Cloud Shell o "Drop Dead Beautiful"
Como una persona lejos de la administración del sistema, es difícil para mí entender por qué, en la era del triunfo de la inteligencia artificial, todavía nos comunicamos con los servidores de línea de comandos como en los viejos tiempos en la computadora EU / SM. Supongamos que hay razones desconocidas para los simples mortales. Entonces, un fenómeno como Cloud Shell en GCP debe ser aceptado con gran alegría. Esta herramienta permite, aunque con muletas, pero de alguna manera facilitar el trabajo de los no iniciados. Aunque puede hacer daño si no conoce algunos de los matices.
Cloud Shell proporciona acceso a los recursos de la nube desde la línea de comandos directamente desde el navegador. Usted puede facil administre sus proyectos y recursos sin instalar el SDK de Google Cloud u otras herramientas en su sistema (las dos últimas oraciones se toman de su página, las tacho "fácilmente"). Aquí puede encontrar cómo administrar sus proyectos desde la línea de comandos. Pero lo principal para nosotros no es esto. Inicie Cloud Shell (vea el gif a continuación, tomado de google).
Has iniciado sesión en Cloud Shell. Ahora, si hace clic en el botón en forma de lápiz, se abrirá el "editor de texto de la versión beta".
En el menú "Ayuda / Acerca de", puede descubrir que es "theia-editor-for-cloudshell-preview 0.0.1". Al final del artículo no profundizaré en las características de trabajar con este editor. Solo destacaré puntos clave. Este no es solo un editor para varios idiomas (marcado solo con Python), sino también un administrador de archivos. Puede organizar fácilmente el intercambio de archivos entre Cloud Shell y su computadora local. Puede transferir archivos y directorios dentro del espacio Cloud Shell con su mouse.
Tenga en cuenta que no he escrito en ninguna parte anterior que con el editor puede editar y administrar archivos en su servidor (instancia). Pero incluso esto es suficiente para hacernos la vida más fácil. Y más sobre eso a continuación. Y ahora te contaré algo importante sobre Cloud Shell. Esto debe entenderse para no meterse en el desorden, como me sucedió a mí.
Cloud Shell es un servidor basado en Debian con 5 GB de espacio en disco y 1,7 GB de RAM. Algún software ya está preinstalado en él (incluido Python). Cloud Shell puede confundirse fácilmente con su instancia, instalar conda en él, crear env y ejecutar el bot. Y, si el bot está sondeando, entonces funcionará. Si está en webhook, entonces no funcionará, ¡porque todos los puertos en Cloud Shell están cerrados! Y cuántos no abren puertos en la instancia, no aparecerán en Cloud Shell.
Debido a mi inexperiencia juvenil y descuido, caí en esta trampa y traté de entender durante mucho tiempo por qué Telegram no ve a mi bot con un webhook. Entonces estaba muy molesto. Pero la esposa se calentó, y los hijos se tranquilizaron, y apareció este artículo.
Por cierto, Cloud Shell existe fuera del espacio y el tiempo (una broma cercana a la verdad). Si elimina todas las instancias y todos los proyectos de su hogar, su Cloud Shell continuará existiendo durante otros 120 días con todo lo que haya cargado. No confunda esto con la copia de seguridad de sus servidores.
Entonces Prevenido, luego armado. Y ahora podemos hablar sobre las comodidades y conocer un par de comandos útiles.
Por ejemplo, si desea utilizar Cloud Shell como terminal para acceder a su servidor (por ejemplo, webhook-bot), debe activar su instancia en la línea de comandos:
$ gcloud compute ssh webhook-bot --zone us-central1-a
Después de eso, te encuentras en la línea de comando de tu servidor. Puede volver a Cloud Shell con el comando "salir". Suponga que desea copiar algunos archivos de Cloud Shell a una instancia. Para hacer esto, en el símbolo del sistema de Cloud Shell (no una instancia), escriba el siguiente comando:
$ gcloud compute scp --recurse ~/telebot/my_favorite_robot.py webhook-bot:~/telebot --zone us-central1-a
Si cambia la fuente con el destino, se realizará la copia de la instancia a Cloud Shell. En el siguiente ejemplo, copiamos el archivo "ex1.py" del directorio "/ examples" del servidor "webhook-bot" al directorio "/ telebot2" de Cloud Shell:
$ gcloud compute scp --recurse webhook-bot:~/examples/ex1.py --zone us-central1-a ~/telebot2
Estos y otros comandos para compartir archivos se pueden encontrar aquí . Puede intercambiar no solo archivos, sino también directorios completos. Como resultado, obtenemos el siguiente esquema que nos facilita la vida. Desde la computadora local, copiamos archivos haciendo clic en un par de botones del mouse en Cloud Shell a través del administrador de archivos del editor "theia-editor-for-cloudshell-preview 0.0.1". Y luego redirigimos esto a nuestro servidor (instancia) con la línea de comando. Si necesitamos editar algo rápidamente, podemos hacerlo en el mismo editor en Cloud Shell y cargar archivos con el mismo comando en el servidor. Resulta bastante rápido.
Creo que hay formas más elegantes y convenientes de intercambiar y administrar archivos para un servidor en la nube en GCP en todos los aspectos (sin instalar programas adicionales en la computadora local). Quizás a través del almacenamiento en la nube . Francamente, pasé solo unas pocas horas buscando y experimentando este problema. Por lo tanto, les agradecería que compartan sus ideas o soluciones de trabajo en los comentarios.
Entonces Subimos los archivos al servidor (instancia). Y, si aún no ha lanzado el bot, es hora de hacerlo yendo a la terminal del servidor, activando el entorno virtual necesario y escribiendo un comando como "python my_webhook_bot.py". Todo debería funcionar. Para que el bot continúe funcionando cuando el terminal está cerrado, debe iniciarse en segundo plano. Por ejemplo, "nohup python my_webhook_bot.py &". La búsqueda de cómo sacar el proceso del fondo y completarlo, lo dejo a usted, a menos que, por supuesto, ya lo sepa.
Conclusión
Espero que este artículo te haya sido útil, te ayudó a ahorrar tiempo y evitar los errores que cometí al escribir un bot de telegramas con webhooks y colocarlo en el servidor. Todo lo que se describió en el artículo, lo revisé yo mismo, y al momento de escribir, julio-agosto de 2019, funcionó así. Quiero expresar un agradecimiento especial a Mikhail Krutikov por navegar conjuntamente en las extensiones de los servicios de GCP y por ayudar a realizar una serie de verdades importantes. Estoy abierto a preguntas, discusiones y agradeceré los consejos en los comentarios a este artículo. O siéntase libre de escribirme en Telegram @Eduard_Lanchev .
Hasta el último momento, la pregunta estaba abierta para mí si debía dar un enlace a mi bot de telegramas. Los amigos me convencieron de que valía la pena. Puedes chatear con mi bot en @AelitaSoccerBot . El bot está al comienzo del viaje, y queda mucho trabajo por hacer. Por lo tanto, escriba, si algo está mal, escriba si desea compartir su experiencia o dar consejos. Mi gratitud no tendrá límites dentro de límites razonables. Nota A finales de 2019, el bot fue deshabilitado debido a la falta de tiempo para su soporte y desarrollo.
¡Y al final, me gustaría desear éxito a todos los botovods y mis colegas, científicos de datos!
Enlaces utiles
- Telegram Bot API
- Ejemplos de código de bot
- python-telegram-bot
- pyTelegramBotAPI
- AIOGram
- ssl: contenedor TLS / SSL para objetos de socket
- Heroku
- Plataforma en la nube de Google
- Motor de cálculo de Google
- Guía maravillosa de Marvin para todas las cosas Webhook
- Conda
- Virtualenv
- Caparazón de nube
- La herramienta de línea de comandos de cómputo gcloud
- Transferencia de archivos con la herramienta de línea de comandos gcloud
- Almacenamiento en la nube de Google