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.
Estoy trabajando con pytg, que se puede encontrar aquí: un paquete de Python que envuelve a Telegram Messenger CLI
funciona bastante bien Ya tengo un robot python basado en ese proyecto
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.