Mic*_*ele 31 python linux shell python-2.7 telegram
我希望能够在Telegram中向群聊发送消息.我想运行一个python脚本(这使得一些操作已经有效)然后,如果某些参数有一些值,脚本应该通过Telegram向群聊发送消息.我使用的是Ubuntu和Python 2.7
我想,如果我没有错,我有两种方法可以做到:
方法一:使Python脚本直接连接到Telegram API并发送消息(https://core.telegram.org/api).
方法二:让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
Run Code Online (Sandbox Code Playgroud)
这工作在一半:它正确地发送消息,但然后该过程保持打开状态.第二个问题,我不知道如何从python调用它以及如何将一些值传递给这个脚本.我想传递给脚本的值是"messagehere"var:这将是一个100/200字符的消息,从python脚本中定义.
有人有任何线索吗?感谢您的回复,我希望这可能对其他人有用.
Chr*_*and 30
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
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有看到任何可以直接与之交互的Python库,但这里有一个NodeJS等价物,我参与其中.
首先为名为tg.sh的电报创建一个bash脚本:
#!/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}
Run Code Online (Sandbox Code Playgroud)
然后将脚本放在与python脚本相同的文件夹中,并赋予它+ x权限 chmod +x tg.sh
最后从python,你可以做到:
import subprocess
subprocess.call(["./tg.sh", "user#****", "message here"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49329 次 |
| 最近记录: |