Envoyer des messages avec télégramme-APIs ou CLI?

j'aimerais pouvoir envoyer un message à un groupe de discussion dans le Télégramme. Je veux lancer un script python (qui fait des opérations qui fonctionnent déjà) et ensuite, si certains paramètres ont des valeurs, le script devrait envoyer un message à un groupe de discussion par télégramme. J'utilise Ubuntu, et Python 2.7

je pense que, si je ne me trompe pas, que j'ai deux façons de le faire:

  • première méthode: faire le script Python se connecter directement à L'API de télégramme et envoyer le message (https://core.telegram.org/api).

  • deuxième méthode: faire en sorte que le script Python appelle le CLI du Télégramme (https://github.com/vysheng/tg), passez quelques valeurs à ceci et puis le message est envoyé par le CLI du Télégramme.

je pense que la première est plus longue, donc une bonne idée pourrait être en utilisant les Deux.

Dans ce cas je ne sais vraiment pas comment procéder. Je ne sais pas beaucoup de choses sur les scripts linux, mais j'ai essayé de faire ceci:

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

cela fonctionne à moitié: il envoie le message correctement, mais le processus reste ouvert. Et le second problème, je n'ai aucune idée de comment appeler cela de python et comment passer une certaine valeur à ce script. La valeur que je voudrais passer au script est le "messagehere" var: ce serait un message de 100/200 caractères, défini à l'intérieur du script python.

quelqu'un a-t-il des indices là-dessus? Merci pour les réponses, j'espère cela peut être utile pour quelqu'un d'autre.

31
demandé sur Michele 2014-06-20 19:36:15

6 réponses

créer D'abord un bash script pour télégramme appelé tg.sh:

#!/bin/bash
now=$(date)
to=
subject=
body=
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}

alors mettez le script dans le même dossier que votre script python, et donnez lui la permission de +x avec chmod +x tg.sh

et enfin de python, vous pouvez faire:

import subprocess
subprocess.call(["./tg.sh", "user#****", "message here"])
4
répondu Guillermo Olmedo 2014-07-03 17:13:47

Telegram a récemment publié leur nouveau BOT API ce qui rend l'Envoi/la réception de messages triviaux. Je vous suggère également de jeter un coup d'oeil à cela et de voir si cela correspond à vos besoins, cela bat l'enroulement de la bibliothèque client ou l'intégration avec leur 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

malheureusement je n'ai pas vu de bibliothèques Python avec lesquelles vous pouvez interagir directement, mais voici un NodeJS équivalent sur lequel j'ai travaillé pour référence.

29
répondu Chris Brand 2015-06-26 20:05:19

depuis la version 1.05, vous pouvez utiliser l'option-P pour accepter les messages d'une socket, qui est une troisième option pour résoudre votre problème. Désolé qu'il n'est pas vraiment la réponse à votre question, mais je ne suis pas en mesure de commenter votre question car je n'ai pas assez de réputation.

10
répondu nfgf 2014-12-10 21:53:33

je travaille avec pytg qui peut être trouvé ici: un paquet de Python qui s'enroule autour de Telegram messenger CLI

ça marche plutôt bien. J'ai déjà un bot python basé sur ce projet

5
répondu ShlomiK 2014-10-22 21:14:33

Vous pouvez utiliser safe_quit pour terminer la connexion à la place puisqu'il attend que tout soit fait avant de fermer la connexion et de terminer l'application

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

utilisez ceci comme un script simple et appelez-le à partir du code python comme l'autre réponse l'a suggéré.

2
répondu Fahad Alduraibi 2014-08-15 18:59:53

je recommande la première option.

une Fois que vous êtes à l'aise avec la génération d'un AuthKey, vous devriez commencer à obtenir une poignée sur la documentation.

pour aider, j'ai écrit un guide détaillé étape par étape de la façon dont J'ai écrit le code de génération AuthKey à partir de zéro ici.

C'est dans vb.net, mais les étapes devraient vous aider à faire la même chose en python.

0
répondu Charles Okwuagwu 2017-05-23 12:18:01