python telegram bot Post 来自磁盘的图像文件

python telegram bot Post an image file from disk

Result after google [查看 Post 磁盘中的图像文件]

In[2]: from telegram import Bot

In[3]: bot = Bot(token)

In[4]: update = bot.get_updates()[0]

In[5]: update
Out[5]: <telegram.update.Update at 0x1a295c18>

In[6]: chat_id = update["message"]["chat"]["id"]

In[7]: bot.send_photo(chat_id=chat_id, photo=open("test.jpg", "rb"))
Traceback (most recent call last):

  File "<ipython-input-9-4c19142e0fd3>", line 1, in <module>
    bot.send_photo(chat_id=chat_id, photo=open("test.jpg", "rb"))

  File "C:\Users\Cheung\Anaconda3\lib\site-packages\telegram\bot.py", line 60, in decorator
    result = func(self, *args, **kwargs)

  File "C:\Users\Cheung\Anaconda3\lib\site-packages\telegram\bot.py", line 85, in decorator
    result = self._request.post(url, data, timeout=kwargs.get('timeout'))

  File "C:\Users\Cheung\Anaconda3\lib\site-packages\telegram\utils\request.py", line 265, in post
    'POST', url, body=data.to_form(), headers=data.headers, **urlopen_kwargs)

  File "C:\Users\Cheung\Anaconda3\lib\site-packages\telegram\utils\request.py", line 196, in _request_wrapper
    raise NetworkError('urllib3 HTTPError {0}'.format(error))

NetworkError: urllib3 HTTPError ('Connection aborted.', timeout('The write operation timed out',))

Actual Coding and error

为什么这不起作用?

也许我应该使用其他方法来获取 file_id?但我如何获得它?

您使用的是代理服务器吗?这可能是这个问题背后的原因。您是在本地机器还是远程服务器上尝试这些代码?如果是远程服务器,请在本地机器上尝试。

您的代码没有任何问题。

此错误是部分用户的临时错误。所以,你可能想稍等一下..

尝试增加上传文件的超时时间。

bot.send_photo(chat_id=chat_id, photo=open("test.jpg", "rb"), timeout=100)