Как отправить файл python Telegram

Добрый день! Подскажите пожалуйста как настроить отправку нескольких фотографий в telegram канал, так, чтобы они отображались одним постом (альбом), а не каждая фотография отдельным постом. Отправляю, используя python telegram bot api. Код:

import telebot for j in range(c): bot.send_photo(channel_name, post_media[j][‘photo’][‘src_xxbig’])

Ответы (3 шт):

В API это реализовано методом sendMediaGroup:

В библиотеке python telegram bot api это реализовано одноимённым методом sendMediaGroup.

У telebot для python можно сделать так:

from telebot.types import InputMediaPhoto def send_album_with_text(message): wget.download(«https://example.com/766793/15675732133090s.jpg») pic1 = open(«15675732133090s.jpg», «rb») wget.download(«https://example.com/766793/15675732133111s.jpg») pic2 = open(«15675732133111s.jpg», «rb») media = [InputMediaPhoto(pic1, caption=»test»), InputMediaPhoto(pic2)] bot.send_media_group(message.chat.id, media)
with open(‘files/1.jpg’, ‘rb’) as f1, open(‘files/2.jpg’, ‘rb’) as f2: bot.send_media_group(call.message.chat.id, [InputMediaPhoto(f1), InputMediaPhoto(f2)])

media — Массив InputMediaAudio , InputMediaDocument , InputMediaPhoto и InputMediaVideo .

Отправка telegram сообщение на python

Сериализованный в формате JSON массив, описывающий отправляемые сообщения, должен включать от 2 до 10 элементов.

Источник: husl.ru

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Telegram API sendDocument

#1 Сен. 18, 2019 22:16:10

Telegram API sendDocument

Здравствуйте. Подскажите мне, что я делаю не так.
Нужен совет касающийся конкретно 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/sendDocument’)

Написано, что файл должен передаваться в multipart/form-data, но запрос такого вида почему-то не принимает телеграм.
Буду признателен вам за помощь.

Еще по теме:  Бот который видит неактивных подписчиков в Телеграмме

#2 Сен. 19, 2019 02:12:55

Telegram API sendDocument

stratum
Написано, что файл должен передаваться в multipart/form-data, но запрос такого вида почему-то не принимает телеграм.

Неправильно отправляешь запрос. Потренируйся на кошках отправлять POST-запросы. Telegram тут ни при чём.

Скачай netcat. С её помощью можешь сымитировать сервер, отправить на него запрос и прочитать, что в итоге отправляется. Так ты увидишь, что отправляешь вообще не то.

Отредактировано py.user.next (Сен. 19, 2019 02:13:14)

Telegram бот на python aiogram #4 хендлеры по файлам, организация проекта

#3 Сен. 19, 2019 09:59:07

Telegram API sendDocument

Уже решил проблему, спасибо за помощь.

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/sendDocument’, data=post_data, files=post_file) print(r.text)

#4 Сен. 19, 2019 10:01:34

Telegram API sendDocument

Может кто-нибудь продемонстрирует, как сделать тоже самое с помощью urllib ?
У телеграм Api — два обязательных параметра chat_id и document
Но не обязательно на примере Telegram API, меня больше интересует как отправить файл с помощью multipart/form-data используя urllib

#5 Сен. 19, 2019 12:27:44

Telegram API sendDocument

stratum
Но не обязательно на примере Telegram API, меня больше интересует как отправить файл с помощью multipart/form-data используя urllib


Вот мы берём и отправляем на netcat через requests сначала

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)

Получаем результат

Дальше то же самое надо вопроизвести через urllib. Для формирования запроса надо использовать urllib.request.Request(). Для отправки запроса надо использовать urllib.request.urlopen().

Также в инете есть куча готовых вариантов для второго питона, из которых можно составить готовое решение побыстрее. Но суть такая: ты делаешь функцию, в которую подаёшь имя файла и содержимое этого файла, и она возвращает тебе готовый заполненный запрос (заголовки запроса и тело запроса) urllib.request.Request() . Потом ты этот запрос отправляешь уже на адрес. Сложного я ничего не увидел. Решения в инете слишком перегруженные, поэтому вслепую брать их не надо.

Еще по теме:  Почему приложение не установлено с Телеграмма

Отредактировано py.user.next (Сен. 19, 2019 12:36:16)

Источник: python.su

Отправить большой видео файл по file_id с помощью бота Telegram

Я использую python и telebotAPI для своего бота и заметил, что команда bot.send_video(chat_id, open(file_name, ‘rb’)) отправляет только видео размером менее 10 Мб, есть ли способ отправки очень больших видеофайлов?

ОБНОВЛЕНИЕ: После некоторых комментариев, которые я прочитал в документации телеграммы: если файл уже хранится где-то на серверах Telegram, вам не нужно перезагружать его: каждый объект файла имеет поле file_id, просто передайте этот file_id в качестве параметра вместо загрузка . Для файлов, отправляемых таким способом, ограничений нет. Итак, как я могу отправить видео на сервер телеграммы, а затем отправить file_id в чат?

JayJona 14 Ноя 2019 в 22:50

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...