【问题标题】:How to send photo via Telegram Bot with file path?如何通过带有文件路径的 Telegram Bot 发送照片?
【发布时间】:2020-04-27 16:02:45
【问题描述】:

我正在尝试通过我的 Telegram 机器人发送照片,但出现错误。我的电脑上有照片的文件路径。也许我没有正确输入文件路径。我得到的错误是:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape`. 

指的是在路径名之前。这是我的代码:

import requests
import json

bot_token = 'XXXXXX'
chat_id = "-100YYYYYY"
file = "C:\Users\name\OneDrive\Desktop\Capture.PNG"

message = ('https://api.telegram.org/bot'+ bot_token + '/sendPhoto?chat_id=' 
           + chat_id + 'photo=' + file)
send = requests.get(message)

【问题讨论】:

  • 这里的错误信息指向'\U'。 python中的反斜杠'\'字符用于指代特殊字符,例如换行符'\n'。您需要将反斜杠加倍。 “C:\\Users\\name\\OneDrive\\Desktop\\Capture.PNG”。我认为您正在构建的请求不会起作用。服务端 api.telegram.org 没有 Capture.PNG,所以给路径也没用,需要自己想办法发送实际图片。等待了解电报 API 的人回答或尝试阅读电报文档。
  • 如何将照片添加到 Telegram 服务器?然后那个 file_id 会是什么?

标签: python telegram telegram-bot python-telegram-bot


【解决方案1】:

这是您应该如何使用 python 中的电报 sendPhoto 端点上传文件。

import requests
import json

bot_token = 'BOT TOKEN'
chat_id = "CHAT ID"
file = r"C:\Users\name\OneDrive\Desktop\Capture.PNG"

files = {
    'photo': open(file, 'rb')
}

message = ('https://api.telegram.org/bot'+ bot_token + '/sendPhoto?chat_id=' 
           + chat_id)
send = requests.post(message, files = files)

【讨论】:

    【解决方案2】:

    在回复答案时,我使用了上面的代码,但是图像质量很差,我无法清楚地理解图像内容。图片是我的笔记本电脑屏幕截图,分辨率为 1080p

    【讨论】:

    • 嗨@Vindictive,感谢您的贡献。您的帖子没有回答提出的问题,而是对另一个答案的评论。请考虑将您的帖子作为评论移动。请注意,答案是根据其声誉进行排序的,因此应避免使用“上述”来引用另一个答案。最后,您引用的图像丢失了。
    猜你喜欢
    • 2017-06-06
    • 2021-08-03
    • 2019-08-23
    • 1970-01-01
    • 2021-04-24
    • 2021-10-03
    • 2018-11-12
    • 2016-08-12
    • 2015-11-24
    相关资源
    最近更新 更多