32

我希望能够向 Telegram 中的群聊发送消息。我想运行一个 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 脚本内部定义。

有人对此有任何线索吗?感谢您的回复,我希望这可能对其他人有用。

4

6 回答 6

31

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

于 2015-06-26T18:32:19.663 回答
10

从 1.05 版开始,您可以使用 -P 选项来接受来自套接字的消息,这是解决问题的第三个选项。抱歉,这不是您问题的真正答案,但我无法评论您的问题,因为我没有足够的声誉。

于 2014-12-10T21:53:33.057 回答
5

首先为电报创建一个名为 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}

然后将脚本放在与你的python脚本相同的文件夹中,并给它+x权限chmod +x tg.sh

最后从python,你可以这样做:

import subprocess
subprocess.call(["./tg.sh", "user#****", "message here"])
于 2014-07-03T15:26:27.920 回答
5

我正在使用 pytg,可以在这里找到: A Python package that wraps around Telegram messenger CLI

它工作得很好。我已经有一个基于该项目的 python 机器人

于 2014-10-22T21:14:33.327 回答
2

您可以使用safe_quit来终止连接,因为它会等到一切都完成后再关闭连接并终止应用程序

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

将其用作简单脚本,并按照其他答案的建议从 python 代码中调用它。

于 2014-08-15T18:59:53.923 回答
0

我会推荐第一个选项。

一旦您对生成AuthKey感到满意,您应该开始掌握文档。

为了提供帮助,我在此处编写了有关如何从头开始编写 AuthKey 生成代码的详细分步指南。

它在 vb.net 中,但这些步骤应该可以帮助您在 python 中做同样的事情。

于 2015-09-30T18:38:13.530 回答