15

我想通过 Telegram 从 Python 脚本发送消息。我试图通过电报 cli 做到这一点,来自 vysheng 的原始版本和来自 luckydonald修补版本。有了他们两个,我都可以成功地将消息发送到我的手机。我的问题是:

  • pytg2 没有完全安装(导入 DictObject 失败,显然作者在 pypi 上单独有这个,但我在那一点停止了),需要 Python 3(与我的项目的其余部分不同,但半可接受)并且可以做很多比我需要。
  • 我无法输入然后在那里执行的 tg 控制台环境。<<EOF ... EOF在这个SO 问题中输入 via失败;该程序在控制台上打开,但不输出任何内容。
  • 通过 -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 吗?有没有人以强大的方式使用它?

背景

4

2 回答 2

32

第一步是创建一个机器人并获取token.

第二步是去获取chat_id

  • 在聊天中写点东西
  • 访问https://api.telegram.org/bot<YourBOTToken>/getUpdates并获得chat_id钥匙下的钥匙message['chat']['id']

最后一步是使用此代码:

import requests

def telegram_bot_sendtext(bot_message):

   bot_token = ''
   bot_chatID = ''
   send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message

   response = requests.get(send_text)

   return response.json()


test = telegram_bot_sendtext("Testing Telegram bot")
print(test)

从 Medium.com 提取的代码:如何创建 Telegram 机器人,并使用 Python 发送消息

于 2019-11-22T05:11:03.997 回答
2

我宁愿使用 package python-telegram-bot,它对我来说效果很好。

您可以在此处找到文档和一个简单的示例以开始使用。

为了回复短信,可以在 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.

希望这有帮助!

于 2017-05-23T15:53:11.623 回答