telegram - 在 Telegram Bot API 中从 DigitalOcean Spaces 发送照片时出现 Telegram 错误 BadRequest
问题描述
我的电报机器人遇到了从 DigitalOcean Spaces CDN 发送图片的问题。这里最令人沮丧的部分是大多数图片都没有任何错误发送,但是一些特定的图片导致来自 Telegram Bot API 的 BadRequest 400 错误。
这些图像在格式和元数据方面完全相同,但由于某种原因 Telegram 拒绝加载其中的一些(即使我将 URL 发送到“损坏的”图像,Telegram 也不会显示预览)。
这里最糟糕的部分是,当我将 .cdn 子域添加到 URL 时,一些“损坏”的图片被接受,反之亦然——如果我删除它,一些带有 .cdn 子域的“损坏”图片将被接受。
好的图片(没有错误,从我的个人帐户发送时显示预览)
损坏的图像(错误,从我的个人帐户发送时未显示预览)。
神奇地修复了损坏的图像(没有错误,显示预览,与之前相同,但 URL 中没有 .cdn)
对于解决此问题的任何提示,我将不胜感激
解决方案
事实证明,Telegram 缓存了来自照片 URL 的响应(成功和不成功)。因此,如果由于某种原因其中一个 URL 返回非 200 响应,则此响应将被缓存,并且所有后续通过同一 URL 发送此图像的重试都将失败。
此答案包含有关如何更新缓存的信息。
推荐阅读
- scala - 将 Spark 数据帧保存到按日期分区的 HDFS
- c# - 无法将值 NULL 插入列错误消息
- c# - 第二个 WPF 窗口为空白
- python-3.x - 无法使用带有 xsd 的 elementtree 读取 XML 元素
- r - 如何在不使用公式表示法的情况下将参数传递给 purrr 的 map 函数?
- android - If(calender.getTime().after(new Date...)) 总是正确的...?
- sql - 在更新查询中运行 dense_rank() 窗口函数 - Oracle
- python - 在 C++ 编译文件中使用 PyList_New 时出现分段错误
- r - 如何更改 R 中两列的顺序?
- sql-server - 使用 iexpress 从 bat 文件创建的 Exe 无法执行