web-dev-qa-db-ja.com

Telegramでメッセージを送信する-APIまたはCLIですか?

Telegramのグループチャットにメッセージを送信できるようにします。 pythonスクリプト(これは既に動作するいくつかの操作を行います)を実行し、一部のパラメーターに値がある場合、スクリプトはTelegramを介してグループチャットにメッセージを送信する必要があります。 Ubuntu、およびPython 2.7

私が間違っていなければ、私はそれをする2つの方法があると思います:

  • 方法1:PythonスクリプトをTelegram APIに直接接続して、メッセージを送信します( https://core.telegram.org/api )。

  • 方法2:PythonスクリプトがTelegramのCLIを呼び出す(- https://github.com/vysheng/tg )、これにいくつかの値を渡し、次にメッセージを渡すTelegramのCLIによって送信されます。

最初の方法はもっと長いと思うので、Way Twoを使用することをお勧めします。

この場合、どうすればいいかわかりません。私はLinuxのスクリプトについて多くを知りませんが、私はこれをしようとしました:

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

これは半分で機能します。メッセージを正しく送信しますが、プロセスは開いたままです。 2番目の問題は、pythonからそれを呼び出す方法と、このスクリプトに値を渡す方法についての手がかりがありません。スクリプトに渡したい値は「messagehere」ですvar:これは、pythonスクリプト内から定義された100/200文字のメッセージです。

誰か手がかりがありますか?返信いただきありがとうございます。これが他の誰かに役立つことを願っています。

31
Michele

まず、tg.shという電報用に bash script を作成します。

#!/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}

次に、pythonスクリプトと同じフォルダーにスクリプトを配置し、chmod +x tg.shで+ x許可を与えます

最後に、Pythonから次のことができます。

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

Telegramは最近、メッセージの送受信を簡単にする新しい Bot API をリリースしました。また、それを見て、ニーズに合うかどうかを確認することをお勧めします。クライアントライブラリのラッピングやMTProto APIとの統合に勝るものです。

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

残念ながら、直接対話できるPythonライブラリは見ていませんが、参照用に作成した NodeJS と同等のものがあります。

30
Chris Brand

バージョン1.05以降、-Pオプションを使用してソケットからのメッセージを受け入れることができます。これは、問題を解決する3番目のオプションです。本当にそれがあなたの質問に対する答えではないことを申し訳ありませんが、私はあなたの質問にコメントすることができません。私には十分な評判がありません。

10
nfgf

私はここで見つけることができるpytgで作業しています: A Python TelegramメッセンジャーCLIを包むパッケージ

それはかなりうまく機能します。私はすでにそのプロジェクトに基づいてpythonボットを持っています

5
ShlomiK

接続を閉じてアプリケーションを終了する前にすべてが完了するまで待機するため、代わりにsafe_quitを使用して接続を終了できます。

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

これを単純なスクリプトとして使用し、他の答えが示唆するようにpythonコードから呼び出します。

2
Fahad Alduraibi

最初のオプションをお勧めします。

AuthKeyの生成に慣れたら、ドキュメントの操作を開始する必要があります。

支援するために、AuthKey生成コードを最初から here で記述した詳細なステップバイステップガイドを作成しました。

これはvb.netにありますが、手順はPythonで同じことを行うのに役立ちます。

0