【问题标题】:Sending Photo to Telegram (API / Bot)将照片发送到 Telegram (API / Bot)
【发布时间】:2018-11-12 07:28:58
【问题描述】:

我从 Excel 向电报发送消息。它工作得很好。 但是我怎样才能发送照片?没看懂(https://core.telegram.org/bots/api#sendphoto)

感谢您的帮助!

我的发送消息:

Dim objRequest As Object
Dim strChatId As String
Dim strMessage As String
Dim strPostData As String
Dim strResponse As String

 strChatId = Worksheets("Einstellungen").Cells(3, "AB")
 strMessage = Report
 APIcode = Worksheets("Einstellungen").Cells(2, "AB")

strPostData = "chat_id=" & strChatId & "&text=" & strMessage

 Set objRequest = CreateObject("MSXML2.XMLHTTP")
With objRequest
  .Open "POST", "https://api.telegram.org/" & APIcode & "/sendMessage?", False
  .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  .send (strPostData)
   GetSessionId = .responseText
End With

【问题讨论】:

    标签: vba excel telegram telegram-bot


    【解决方案1】:

    如果您的代码按原样用于纯文本消息,那么您只需对其进行一些更改。

    您目前可能正在使用 API 的 sendMessage 方法,该方法采用 chat_idtext 参数。

    您想使用sendPhoto 方法,该方法包含chat_idphoto 参数(但没有text 参数)。

    所以这有点像在黑暗中拍摄,因为我从未使用或听说过 Telegram,而且我没有钥匙,所以我无法测试它,但理论上,你可以从像这样的网址:

    Sub telegram_SendPhoto()
    
        Const photoURL = "https://i.imgur.com/0eH6d1v.gif" 'URL of photo
    
        Dim objRequest As Object, strChatId As String, APIcode As String
        Dim strPostData As String, strResponse As String
    
        strChatId = Worksheets("Einstellungen").Cells(3, "AB")
        APIcode = Worksheets("Einstellungen").Cells(2, "AB")
    
        strPostData = "chat_id=" & strChatId & "&photo=" & photoURL
    
        Set objRequest = CreateObject("MSXML2.XMLHTTP")
        With objRequest
            .Open "POST", "https://api.telegram.org/" & APIcode & "/sendPhoto?", False
            .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            .send (strPostData)
            strResponse = .responseText
        End With
    
        MsgBox strResponse
    
    End Sub
    

    file_id 作为String 传递以发送存在于Telegram 服务器上的照片(推荐),将HTTP URL 作为String 传递给Telegram 以获取照片来自互联网(上图),或使用multipart/form-data 上传新照片。 More info on Sending Files »

    【讨论】:

    • 非常感谢您的回答!它工作正常!你能告诉我它是如何与一个本地图片一起工作的吗?我的照片在我的磁盘上,而不是在网络上。 (我不明白的多部分/来自数据)
    • 是的,但它们总是用于库(例如 python)。电报本身几乎没有适合初学者的互联网条目。你必须先上传图片。但我没有找到真实的例子。 core.telegram.org/bots/api#sending-files
    • 如果您需要以这种方式提交照片,您可以进行更多研究以了解其他人做了什么,或联系开发人员,或在他们的 GitHub 网站上提交请求。或者,您可以使用解决方法,例如以编程方式将图像上传到网络,然后通过 URL 调用它们,或者以编程方式或通过他们自己的网络界面手动提交它们。还请务必检查常规(“非机器人”)API 部分以获取那里的一些线索。
    • 我想你想发布一个字节数组,例如Byte()。也许这会有所帮助:stackoverflow.com/questions/1356118/…
    • @ConnorMacLeod - 不要忘记 ✓ Accept 一个有助于解决您问题的答案...您将获得 +2 声誉,并且答案的作者得到 +15 代表。当您的声望达到 15 时,您可以 ▲ Upvote 任何有帮助的答案,这也将奖励作者加上您的反馈投票的形式有利于Stack Overflow 整个社区!
    猜你喜欢
    • 2015-11-24
    • 2016-07-09
    • 2017-06-06
    • 2021-10-03
    • 2021-04-24
    • 2015-09-20
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多