examples conversation commands bot python linux shell python-2.7 telegram

conversation - telegram bot python doc



¿Enviando mensajes con Telegram-API o CLI? (6)

Desde la versión 1.05, puede usar la opción -P para aceptar mensajes de un socket, que es una tercera opción para resolver su problema. Lamento que no sea realmente la respuesta a su pregunta, pero no puedo comentar su pregunta porque no tengo suficiente reputación.

Me gustaría poder enviar un mensaje a un chat grupal en Telegram. Quiero ejecutar un script de python (que hace algunas operaciones que ya funcionan) y luego, si algunos parámetros tienen algunos valores, el script debe enviar un mensaje a un chat de grupo a través de Telegram. Estoy usando Ubuntu y Python 2.7

Creo que si no estoy equivocado, tengo dos formas de hacerlo:

  • Forma uno: haga que la secuencia de comandos de Python se conecte a las API de Telegram directamente y envíe el mensaje ( https://core.telegram.org/api ).

  • Forma 2: haga que la secuencia de comandos de Python llame a la CLI de Telegram ( https://github.com/vysheng/tg ), pase algunos valores a esto y luego el mensaje es enviado por la CLI de Telegram.

Creo que la primera forma es más larga, por lo que una buena idea podría ser utilizar el Camino Dos.

En este caso, realmente no sé cómo proceder. No sé mucho sobre scripts en Linux, pero traté de hacer esto:

#!/bin/bash cd /home/username/tg echo "msg user#******** messagehere" | ./telegram sleep 10 echo "quit" | ./telegram

esto funciona a la mitad: envía el mensaje correctamente, pero luego el proceso permanece abierto. Y segundo problema, no tengo ni idea de cómo llamarlo desde Python y cómo pasarle algo de valor a este script. El valor que me gustaría pasar al script es el var "messagehere": este sería un mensaje de 100/200 caracteres, definido desde el interior del script de python.

¿Alguien tiene alguna pista sobre eso? Gracias por las respuestas, espero que esto pueda ser útil para otra persona.



Primero crea un script bash para telegrama llamado tg.sh:

#!/bin/bash now=$(date) to=$1 subject=$2 body=$3 tgpath=/home/youruser/tg LOGFILE="/home/youruser/tg.log" cd ${tgpath} ${tgpath}/telegram -k ${tgpath}/tg-server.pub -W <<EOF msg $to $subject safe_quit EOF echo "$now Recipient=$to Message=$subject" >> ${LOGFILE} echo "Finished" >> ${LOGFILE}

A continuación, coloque el guión en la misma carpeta que su secuencia de comandos python y chmod +x tg.sh permiso + x con chmod +x tg.sh

Y finalmente de Python, puedes hacer:

import subprocess subprocess.call(["./tg.sh", "user#****", "message here"])


Puede usar safe_quit para terminar la conexión, ya que espera hasta que todo esté listo antes de cerrar la conexión y finalizar la aplicación.

#!/bin/bash cd /home/username/tg echo "msg user#******** messagehere/nsafe_quit/n" | ./telegram

utilízalo como un script simple y llámalo desde el código python como sugirió la otra respuesta.


Telegram lanzó recientemente su nueva API Bot que hace que el envío / recepción de mensajes sea trivial. Sugiero que también eche un vistazo a eso y vea si se ajusta a sus necesidades, es mejor que envolver la biblioteca del cliente o integrarse con su API MTProto.

import urllib import urllib2 # Generate a bot ID here: https://core.telegram.org/bots#botfather bot_id = "{YOUR_BOT_ID}" # Request latest messages result = urllib2.urlopen("https://api.telegram.org/bot" + bot_id + "/getUpdates").read() print result # Send a message to a chat room (chat room ID retrieved from getUpdates) result = urllib2.urlopen("https://api.telegram.org/bot" + bot_id + "/sendMessage", urllib.urlencode({ "chat_id": 0, "text": ''my message'' })).read() print result

Lamentablemente, no he visto ninguna biblioteca de Python con la que pueda interactuar directamente, pero aquí hay un equivalente de NodeJS que trabajé como referencia.


Yo recomendaría la primera opción.

Una vez que se sienta cómodo generando un AuthKey , debería comenzar a manejar la documentación.

Para ayudar, he escrito una guía paso a paso detallada de cómo escribí el código de generación AuthKey desde cero here .

Está en vb.net, pero los pasos deberían ayudarte a hacer lo mismo en Python.