Nac*_*alb 0 python web telegram-bot
我在通过该sendDocument方法将文件上传到电报时遇到了一个奇怪的问题。我正在用python-telegram-bot用python编写一个机器人。我尝试向用户发送一个 ZIP 文件,将 URL 作为document. 这是网址:http://telegram.someurl.tdl/32487352.zip
bot.send_document(
chat_id,
document=document,
filename=filename,
timeout=60)
Run Code Online (Sandbox Code Playgroud)
据我所知,我的文件遵循 Telegram 给出的规则:http://telegram.someurl.tdl/32487352.zip
http://telegram.someurl.tdl/32487352.zip2.14 MBapplication/zipZIP file这些是标题:
Accept-Ranges ?bytes
Connection ?keep-alive
Content-Length ?2247049
Content-Type ?application/zip
Date ?Sun, 29 Oct 2017 21:15:36 GMT
ETag ?"59f5e6e6-224989"
Last-Modified ?Sun, 29 Oct 2017 14:34:14 GMT
Server ?nginx/1.10.3 (Ubuntu)
Run Code Online (Sandbox Code Playgroud)
该文件由 nginx (v1.10.3) 提供,使用这个简单的配置。
server {
listen 80;
server_name telegram.someurl.tdl;
root /path/to/download_dir;
location / {
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,Where/path/to/download_dir替换为实际路径。
正如标题中所说,我得到的错误是这个:
Accept-Ranges ?bytes
Connection ?keep-alive
Content-Length ?2247049
Content-Type ?application/zip
Date ?Sun, 29 Oct 2017 21:15:36 GMT
ETag ?"59f5e6e6-224989"
Last-Modified ?Sun, 29 Oct 2017 14:34:14 GMT
Server ?nginx/1.10.3 (Ubuntu)
Run Code Online (Sandbox Code Playgroud)
还发送另一个我在网上找到的 ZIP 文件:http : //techslides.com/demos/samples/sample.zip
我已经在寻找解决方案,例如。这个Telegram bot 奇怪的错误:错误的请求:错误的文件标识符/HTTP URL 指定,这为什么我在电报机器人中得到错误的文件标识符/HTTP URL 指定错误?不要帮助。
我希望你们能帮我解决这个问题。
我的一个朋友帮助了我,我们可以解决这个问题。根据 Telegram Bot API 文档,我所做的一切都是正确的,但看起来文档并不完整。
问题是我的文件名。该文件必须以字母开头。它不能以数字开头。所以例如。test123.zip和t123.zip工作,但123.zip或1test.zip不。
2020 年 7 月更新:
Telegram 似乎改变了它的文件名政策。我只是尝试了以下名称,并且每个名称都有效。我的猜测是他们现在接受任何文件名,尽管并非每个客户端都以相同的方式保存文件:
\-\-\-\-.zip # in Telegram Desktop on Windows shown as "\-\-\-\-.zip" but saved as "_-_-_-_-.zip"
# in Telegram on Android shown and saved as "----.zip"
hällo.zip
1.zip
test\nme.zip # even with a filename with a literal new line character
# in Telegram Desktop on Windows shown as "testme.zip" but saved as "test_me.zip"
# in Telegram on Android shown and saved as "testme.zip"
tttt.zip
!test.zip
test!.zip
ttt.zip
t.zip
t1.zip
1t.zip
000.zip
äääää.zip
Run Code Online (Sandbox Code Playgroud)
测试如下:
for path in paths:
print(path)
chat.send_document('http://test.someurl.tdl/%s' % path, path)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4323 次 |
| 最近记录: |