Форум сайта python.su
Здравствуйте. Подскажите мне, что я делаю не так.
Нужен совет касающийся конкретно API TELEGRAM
Мне нужно отправить файл через TelegramBotApi
Вот мой код.
token = 'TELEGRAM_BOT_TOKEN' chat_id = 'TELEGRAM_BOT_CHAT_ID' with open('document.zip', 'rb') as file: post_data = {'chat_id': chat_id, 'document': 'document.zip'} post_file = {'document.zip', file} requests.post(f'https://api.telegram.org/bot{token}/sendDocument')
Офлайн
stratumНеправильно отправляешь запрос. Потренируйся на кошках отправлять POST-запросы. Telegram тут ни при чём.
Написано, что файл должен передаваться в multipart/form-data, но запрос такого вида почему-то не принимает телеграм.
Отредактировано py.user.next (Сен. 19, 2019 02:13:14)
Офлайн
Уже решил проблему, спасибо за помощь.
def send_request (doc): with open(doc, 'rb') as file: post_data = {'chat_id': chat_id} post_file = {'document': file} r = requests.post(f'https://api.telegram.org/bot{token}/sendDocument', data=post_data, files=post_file) print(r.text)
Офлайн
Может кто-нибудь продемонстрирует, как сделать тоже самое с помощью urllib ?
У телеграм Api - два обязательных параметра chat_id и document
Но не обязательно на примере Telegram API, меня больше интересует как отправить файл с помощью multipart/form-data используя urllib
Офлайн
stratum
Но не обязательно на примере Telegram API, меня больше интересует как отправить файл с помощью multipart/form-data используя urllib
import requests chat_id = 'chat' with open('/tmp/file.txt', 'rb') as fin: post_data = {'chat_id': chat_id} post_file = {'document': fin} r = requests.post('http://localhost:12345', data=post_data, files=post_file) print(r.text)
[guest@localhost tmp]$ nc -l 12345
POST / HTTP/1.1
Host: localhost:12345
User-Agent: python-requests/2.13.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 245
Content-Type: multipart/form-data; boundary=e235d26c4e1844d8a3157a67cc6cf940
--e235d26c4e1844d8a3157a67cc6cf940
Content-Disposition: form-data; name="chat_id"
chat
--e235d26c4e1844d8a3157a67cc6cf940
Content-Disposition: form-data; name="document"; filename="file.txt"
test
--e235d26c4e1844d8a3157a67cc6cf940--
^C
[guest@localhost tmp]$
Отредактировано py.user.next (Сен. 19, 2019 12:36:16)
Офлайн