从Python发送电报消息

时间:2015-03-12 06:36:45

标签: python linux telegram

我想通过Telegram从Python脚本发送消息。 我试图通过telegram-cli,original version from vyshengpatched version from luckydonald来做到这一点。通过这两种方式,我可以成功地向手机发送消息。 我的问题是:

  • pytg2没有干净地安装(导入DictObject失败,显然作者单独在pypi上有这个,但我在那时停止了),需要Python 3(不同于我的项目的其余部分,但半可接受)并且可以比我需要做的更多。
  • 我无法输入随后在那里执行的tg控制台环境。通过此SO question中的<<EOF ... EOF输入失败;程序在控制台上打开,但不输出任何内容。
  • 通过-P选项打开端口工作。然后我可以从nc环境(类似于tg wiki)进行操作,但我不确定在我的Python脚本中实现所有这些调用是否明智。

  • 我还发现另一个脚本将命令发送到tg(忘记来源),但它也没有工作(与上面<<EOF类似的行为)

    #!/bin/bash
    to=Matthias_SG
    msg="test message"
    tgpath=/home/matthias/dvl/tg
    cd ${tgpath}
    (echo "add_contact +xxx Matthias SG"; echo "msg $to $msg") | ${tgpath}/bin/telegram-cli -k tg-server.pub
    

所以我的问题是: 我应该回到旧版的pytg吗?我可以通过从subprocess.call或popen输入stringIO来修复shell脚本或将它们修改为Python吗?是否有人以强有力的方式使用它?

背景

3 个答案:

答案 0 :(得分:0)

我宁愿使用包python-telegram-bot,它也适用于我。

您可以找到here文档和一个简单的示例来开始。

为了回复短信,您可以在CommandHandler之后添加MessageHandler,例如:

updater.dispatcher.add_handler(MessageHandler(Filters.text, text_reply))

def text_reply(bot, updater):
    text = update.message.text

    if text == 'ping':
        reply = 'pong'

    elif text == 'pong':
        reply = 'ping'

    # add any process to the text

    else:
        reply = "I only respond to ping pong"

    update.message.reply_text(reply)

不要忘记导入from telegram.ext import MessageHandler

希望这有帮助!

答案 1 :(得分:0)

我认为使用特定的软件包制作Telegram机器人是一个坏主意;你必须保持它们的更新,它们可能不会像你那样运行,如果API的一部分发生了变化并且模块没有更新,可能会发生奇怪的事情。

对我来说真正有用的是使用基本模块并自己制作所有命令。一开始会花费更多时间。

看看this website,它们会向您展示使用jsonrequests制作机器人的基础知识。他们编写代码的方式为您提供了很多自由。

使用简单的模块,您将获得保修;您可以直接从Telegram获取所需的任何文档或帮助。

答案 2 :(得分:0)

第一步是创建一个bot并获得barplot

第二步是获取x <- c("Early", "Evening", "Morning", "Night" ) y <- c(0.9083699, 0.4830701, 0.3752655, 0.5393416) barplot(y ~ x, ylim = c(0, 1), las = 2)

  • 在聊天中写点东西
  • 访问token,并在键chat_id下获得https://api.telegram.org/bot<YourBOTToken>/getUpdates

最后一步是使用以下代码:

chat_id

Medium.com: How to create a Telegram bot, and send messages with Python提取的代码