用Telegram-api或CLI发送消息?

2024-05-18 06:51:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用电报给一个群聊发个信息。我想运行一个python脚本(它执行一些已经生效的操作),然后,如果一些参数有一些值,脚本应该通过Telegram发送一条消息给一个组聊天。我正在使用Ubuntu和Python 2.7

我想,如果我没有错,我有两种方法:

我认为第一种方法比较长,所以最好使用第二种方法。

在这种情况下,我真的不知道该怎么做。 我不太了解linux中的脚本,但我试着这样做:

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

这在一半的时候起作用:它正确地发送消息,但随后进程保持打开状态。第二个问题,我不知道如何从python调用它,以及如何向这个脚本传递一些值。我想传递给脚本的值是“messagehere”变量:这将是一个100/200个字符的消息,由python脚本内部定义。

有人有线索吗? 谢谢你的回复,我希望这对其他人有用。


Tags: 方法httpsecho脚本api信息消息参数
3条回答

首先为名为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"])

自1.05版以来,您可以使用-p选项接受来自套接字的消息,这是解决问题的第三个选项。很抱歉,这不是你问题的答案,但我不能评论你的问题,因为我没有足够的声誉。

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等价物供我参考。

相关问题 更多 >