Добрый день! Подскажите пожалуйста как настроить отправку нескольких фотографий в 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-сообщество
- Начало
- » 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