Telegram-bot (telepot api):是否可以直接从 URL 发送图像而不保存它

2023-12-09

我使用 python 编写一个电报机器人远程遥控API。我现在陷入了这样的境地:我想发送直接来自 URL 的图片,而不将其存储在本地。Telepot提供以下发送照片的说明:

>>> f = open('zzzzzzzz.jpg', 'rb')  # some file on local disk
>>> response = bot.sendPhoto(chat_id, f)

现在我正在使用

f = urllib2.urlopen('http://i.imgur.com/B1fzGoh.jpg')
bot.sendPhoto(chat_id, f)

这里的问题是urllib2.urlopen('url')为我提供类似文件的对象,例如:

<addinfourl at 140379102313792 whose fp = <socket._fileobject object at 0x7fac8e86d750>>

不喜欢open('myFile.jpg', 'rb')文件对象,例如:

<open file 'app-root/runtime/repo/myImage.jpg', mode 'rb' at 0x7fac8f322540>

如果我在 sendPhoto() 中发送类似文件的对象,则会收到以下错误: 回溯(最近一次调用最后一次):

[Wed Feb 10 06:21:09 2016] [error]   File "/var/lib/openshift/56b8e2787628e1484a00013e/python/virtenv/lib/python2.7/site-packages/telepot/__init__.py", line 340, in handle
[Wed Feb 10 06:21:09 2016] [error]     callback(update['message'])
[Wed Feb 10 06:21:09 2016] [error]   File "/var/lib/openshift/56b8e2787628e1484a00013e/app-root/runtime/repo/moviequiz_main.py", line 35, in handle
[Wed Feb 10 06:21:09 2016] [error]     response = bot.sendPhoto(chat_id, gif)
[Wed Feb 10 06:21:09 2016] [error]   File "/var/lib/openshift/56b8e2787628e1484a00013e/python/virtenv/lib/python2.7/site-packages/telepot/__init__.py", line 230, in sendPhoto
[Wed Feb 10 06:21:09 2016] [error]     return self._sendFile(photo, 'photo', p)
[Wed Feb 10 06:21:09 2016] [error]   File "/var/lib/openshift/56b8e2787628e1484a00013e/python/virtenv/lib/python2.7/site-packages/telepot/__init__.py", line 226, in _sendFile
[Wed Feb 10 06:21:09 2016] [error]     return self._parse(r)
[Wed Feb 10 06:21:09 2016] [error]   File "/var/lib/openshift/56b8e2787628e1484a00013e/python/virtenv/lib/python2.7/site-packages/telepot/__init__.py", line 172, in _parse
[Wed Feb 10 06:21:09 2016] [error]     raise BadHTTPResponse(response.status_code, response.text)
[Wed Feb 10 06:21:09 2016] [error] BadHTTPResponse: (414, u'<html>\\r\\n<head><title>414 Request-URI Too Large</title></head>\\r\\n<body bgcolor="white">\\r\\n<center><h1>414 Request-URI Too Large</h1></center>\\r\\n<hr><center>nginx/1.9.1</center>\\r\\n</body>\\r\\n</html>\\r\\n')

有一个解决方案这里提供了不同的电报机器人项目他们发送到的地方urllib2.urlopen('url').read()回到 telegram,但就我而言,这会产生与没有 .read() 相同的错误。

如何从 url 获取文件作为文件对象(最好是不将其保存在本地)? 或者如何从 urlopen() 提供的“类文件对象”中获取“文件对象”?

谢谢你的帮助 :)


现在机器人API 2.3.1,您可以简单地将文件的 url 发送到服务器:

bot.sendPhoto(chat_id, "http://i.imgur.com/B1fzGoh.jpg");

就是这样。

你甚至不需要下载它,Telegram会自己上传。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Telegram-bot (telepot api):是否可以直接从 URL 发送图像而不保存它 的相关文章

随机推荐

  • Predict.svm 中的错误:测试数据与模型不匹配

    我有一个大约 500 行和 170 列的数据框 我正在尝试使用 e1071 包中的 svm 运行分类模型 分类变量称为 SEGMENT 是一个有 6 个级别的因子变量 数据框中还有其他三个因子变量 其余都是数字 data lt my dat
  • 从 Google 通讯录中删除重复或重复的联系人

    我的目标是制作一个包含客户联系信息 地址和注释的电子表格 创建新的 Google 通讯录条目 并将联系人 ID 和 已添加 标记到表格中 该表格将已输入到 Google 通讯录的联系人标记为 已添加 这张表 我成功地做到了 一切正常 问题只
  • 即时搜索 PB 级数据

    我需要在 CSV 格式文件中搜索 PB 级的数据 使用LUCENE建立索引后 索引文件的大 小是原始文件的两倍 是否可以减小索引文件的大 小 如何在HADOOP中分发LUCENE索引文件以及如何在搜索环境中使用 或者是否有必要 我应该使用s
  • 如何在 pytorch 中更改输入图片的尺寸?

    我制作了一个卷积神经网络 我希望它获取输入图片和输出图片 但是当我将图片转换为张量时 它们的尺寸错误 RuntimeError Expected 4 dimensional input for 4 dimensional weight 20
  • Jenkins 无法识别生成的 allure 报告 xml 文件的正确目录

    我已成功将 Allure 报告集成到我的基于 Maven 的 testNG 项目中 并且能够使用 jetty 服务器查看该报告 但现在我正在尝试按照此处建议的说明将魅力报告与詹金斯集成 http wiki qatools ru displa
  • 如何处理不在 UINavigationController 堆栈顶部的 UIViewController 的旋转?

    我在 UINavigationController 中有一个根 UIViewController VC1 它通过在 willRotateToInterfaceOrientation 方法中手动调整其视图 子视图框架来处理旋转 如果根 UIV
  • 加密/解密字节数组 Crypto++

    我正在尝试使用 AES 加密字节数组 我已经能够毫无问题地加密字符串和文件 但是字节数组似乎不适合我 我传入一个要加密的字节数组 为了便于测试 我只传入由 crypto bArrayToEncrypt 生成的 AES 密钥 加密似乎有效 但
  • systemd 服务未使用 dbus 接口启动

    我正在尝试启动 systemd 服务 usnig dbus 服务 我正在关注下面提到的链接的示例 5 http www freedesktop org software systemd man systemd service html 我的
  • 在 Lua 中按值对表进行关联排序

    我有一个 key gt value 表 我想在 Lua 中排序 键都是整数 但不连续 并且有意义 Lua唯一的排序函数似乎是table sort 它将表视为简单数组 丢弃原始键及其与特定项目的关联 相反 我本质上希望能够使用PHP s as
  • GCP Firestore Python 凭证

    我在将数据从 Linux 虚拟机发送到 GCP 的 Firestore 时遇到问题 我只是想更新数据库内的项目 我遇到有关凭据的问题 根据我使用的方法 我会得到不同的错误 但我相信它们都源于同一问题 请注意 我有一个带有 json 凭据的服
  • 为什么 T* 可以在寄存器中传递,但 unique_ptr 却不能?

    我正在观看 Chandler Carruth 在 CppCon 2019 上的演讲 不存在零成本抽象 在其中 他举了一个例子 说明他对使用std unique ptr
  • 为此使用什么正则表达式

    我正在编写一个正则表达式 它将找到 1个或多个点 后面跟一个空格或者后面根本不跟任何东西 1 个或多个问号 再次后面跟一个空格或者后面根本不跟任何东西 我该如何编写这个正则表达式 以便让它执行此或操作 你只需要逃避 or with a 从字
  • Rails 3 关联错误

    我有一个表格页面和一个表格作者 每一页都属于一位作者 还为表和模型创建了迁移 但在表单中使用它时出现此错误 NoMethodError in Pages new Showing C rorapp app views pages form h
  • 不活动和活动、应用程序空闲、用户不活动自动注销

    经过大量谷歌搜索并花费了 4 个小时后 我想这是查找用户不活动和锁定屏幕的最佳方法 public MainWindow InitializeComponent var timer new DispatcherTimer Interval T
  • 如何将 detectorron2 的增强功能与使用 register_coco_instances 加载的数据集结合使用

    我已经在以 coco 格式标记和导出的自定义数据上训练了 detectorron2 模型 但现在我想应用增强并使用增强数据进行训练 如果我不使用自定义 DataLoader 而是使用 register coco instances 函数 我
  • iText7获取表格高度

    这是我的代码片段 Dim table As iText Layout Element Table New iText Layout Element Table 4 table SetWidth pagesize GetWidth 40 Di
  • 无法使用 Java FTP 客户端下载具有阿拉伯名称的文件

    我有连接到 FTP 服务器并下载文件的 Java 代码 如果文件名包含阿拉伯字母 则总是下载失败 但如果是英文的话 就下载成功了 这是我的代码 如果路径是这样则下载失败 String actualFileLocation RelatedDo
  • 需要帮助使用 Visual Studio .asm 文件以汇编语言显示带小数位的数字

    需要帮助使用 Visual Studio 以汇编语言显示带小数位的数字 asm file 例如 10 除 4 将是 2 5 但它只显示 2 mov eax 10 mov ebx 4 xor edx edx div ebx call Writ
  • 当给定IP地址和网络掩码时,如何计算IP范围?

    当 IP 范围写为 aaa bbb ccc ddd netmask 时 CIDR 表示法 我需要用 C 计算此范围内的第一个和最后一个包含的 ip 地址 Example Input 192 168 0 1 25 Result 192 168
  • Telegram-bot (telepot api):是否可以直接从 URL 发送图像而不保存它

    我使用 python 编写一个电报机器人远程遥控API 我现在陷入了这样的境地 我想发送直接来自 URL 的图片 而不将其存储在本地 Telepot提供以下发送照片的说明 gt gt gt f open zzzzzzzz jpg rb so