Как сделать чтобы бот отправлял картинку python telegram
Перейти к содержимому

Как сделать чтобы бот отправлял картинку python telegram

  • автор:

Telegram bot отправить фото

Author24 — интернет-сервис помощи студентам

Как сделать так, чтобы телеграмм бот отправлял фото которое находится на пк, по дефолту нужен url фотки, мне же нужно именно с пк(из самого проекта)
Пробовал так:

1 2 3 4
photo = r'<>\utils\objects.jpg'.format(os.getcwd()) img = open(photo) print(img) bot.send_photo(message.from_user.id, photo=img)
Здесь вы можете заказать любую студенческую или школьную работу.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Отправить содержание print в telegram bot
Добрый день, есть следующий код: from bs4 import BeautifulSoup import requests as req resp =.

Telegram bot: Отправить Json объект (ReplyKeyboardMarkup)
Появилась необходимость добавить удобные кнопки для отправки команд боту(ReplyKeyboardMarkup).

Bot telegram
Доброго времени суток! 🙂 Пишу свойего бота для телеграм вот уже месяц(немогу разобраться). Хочу.

Telegram bot
Здравствуйте уважаемые форумчане! Подскажите как решить такую проблему: Написал небольшой бот для.

Эксперт Python

2684 / 1590 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1

Решение для вас:

1 2 3
with open("file.img", "rb") as file: data = file.read() bot.send_photo(message.from_user.id, photo=data)

Добавлено через 4 минуты
UPD: Прочитал API. Вам надо указать ссылку на файл, на вашем компьютере.

photo = r'<>\utils\objects.jpg'.format(os.getcwd()) bot.send_photo(message.from_user.id, photo=photo)

Есть вероятность что весь путь указывать не обязательно, т.е.

photo = r'.\utils\objects.jpg' bot.send_photo(message.from_user.id, photo=photo)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Telegram bot
Добрый день в питоне я полный ноль, но для работы нужно написать телеграм бота. пример что нужно.

Telegram bot
Не знаю в чём ошибка. def jobs(bot, update): update.message.reply_text(‘Доступная.

Telegram Bot
1)Как реализовать клавиатуру как на фото? 2)Почему запуская myBot.py пишу ему сообщение в.

Telegram-bot на Python
Здравствуйте, у меня вопрос: как написать бота для Telegram, который будет отсылать предупреждение.

Поисковый telegram bot
Доброго времени суток. Уважаемые, помогите, пожалуйста. Которые сутки бьюсь в потугах написать.

Telegram bot на Python
Есть такой код, с первого сайта по созданию бота в телеграме import telebot; bot =.

Telegram bot aiogram
Подскажите пожалуйста как можно сделать такую штуку. У меня есть телеграм бот, в котором сделаны.

Или воспользуйтесь поиском по форуму:

Telegram бот на Python, отправка файлов, встроенная клавиатура

Telegram бот на Python, отправка файлов, встроенная клавиатура

Это вторая часть статьи, где мы продолжим создавать нашего телеграм бота на Python, и научим его отправлять файлы и выводить настраиваемую клавиатуру.

Отправка файлов Telegram API

В Telegram API есть три способа отправки файлов, для демонстрации воспользуемся методом sendPhoto и добавим три функции для отправки фотографии.

Первая способ: Предоставить файл по URL, Telegram скачает и отправит его (максимальный размер 5 МБ).

def send_photo_url(chat_id, img_url): requests.get(f'/sendPhoto?chat_id=&photo=')

Второй способ: Отправить файл с компьютера (максимальный размер фотографий — 10 МБ, для остальных файлов — 50 МБ).

def send_photo_file(chat_id, img): files = requests.post(f'/sendPhoto?chat_id=', files=files)

Третий способ: Отправить, передав в параметрах file_id файла который уже хранится где-то на серверах Telegram (ограничений нет).

def send_photo_file_id(chat_id, file_id): requests.get(f'/sendPhoto?chat_id=&photo=')

Проверка

Почти все готово, осталось немного отредактировать функцию check_message и приступим к проверке бота.

def check_message(chat_id, message): if message.lower() in ['привет', 'hello']: send_message(chat_id, 'Привет :)') elif message.lower() in 'фото по url': # Отправить URL-адрес картинки (телеграм скачает его и отправит) send_photo_url(chat_id, 'https://ramziv.com/static/assets/img/home-bg.jpg') elif message.lower() in 'фото с компьютера': # Отправить файл с компьютера send_photo_file(chat_id, 'photo.jpg') elif message.lower() in 'фото с сервера телеграм': # Отправить id файла (файл уже хранится где-то на серверах Telegram) send_photo_file_id(chat_id, 'AgACAgIAAxkBAAMqYVGBbdbivL53IzKLfUKUClBnB0cAApy0MRtfMZBKHL0tNw9aITwBAAMCAAN4AAMhBA')
import requests import time TOKEN = 'токен' URL = 'https://api.telegram.org/bot' def get_updates(offset=0): result = requests.get(f'/getUpdates?offset=').json() return result['result'] def send_message(chat_id, text): requests.get(f'/sendMessage?chat_id=&text=') def send_photo_url(chat_id, img_url): requests.get(f'/sendPhoto?chat_id=&photo=') def send_photo_file(chat_id, img): files = requests.post(f'/sendPhoto?chat_id=', files=files) def send_photo_file_id(chat_id, file_id): requests.get(f'/sendPhoto?chat_id=&photo=') def check_message(chat_id, message): if message.lower() in ['привет', 'hello']: send_message(chat_id, 'Привет :)') elif message.lower() in 'фото по url': # Отправить URL-адрес картинки (телеграм скачает его и отправит) send_photo_url(chat_id, 'https://ramziv.com/static/assets/img/home-bg.jpg') elif message.lower() in 'фото с компьютера': # Отправить файл с компьютера send_photo_file(chat_id, 'photo.jpg') elif message.lower() in 'фото с сервера телеграм': # Отправить id файла (файл уже хранится где-то на серверах Telegram) send_photo_file_id(chat_id, 'AgACAgIAAxkBAAMqYVGBbdbivL53IzKLfUKUClBnB0cAApy0MRtfMZBKHL0tNw9aITwBAAMCAAN4AAMhBA') def run(): update_id = get_updates()[-1]['update_id'] # Присваиваем ID последнего отправленного сообщения боту while True: time.sleep(2) messages = get_updates(update_id) # Получаем обновления for message in messages: # Если в обновлении есть ID больше чем ID последнего сообщения, значит пришло новое сообщение if update_id < message['update_id']: update_id = message['update_id'] # Присваиваем ID последнего отправленного сообщения боту # Отвечаем тому кто прислал сообщение боту check_message(message['message']['chat']['id'], message['message']['text']) if __name__ == '__main__': run()

телеграм бота на Python

Фото с компьютера

телеграм бота на Python

Фото с сервера телеграм

телеграм бота на Python

Таким образом вы можете отправить документ, видео, или аудиофайл заменив в URL метод sendPhoto на подходящий.

  • sendVoice Используйте этот метод для отправки аудиофайлов, если вы хотите, чтобы клиент Telegram отображал файл как воспроизводимое голосовое сообщение.
  • sendDocument Используйте этот метод для отправки общих файлов.
  • sendAudio Используйте этот метод для отправки аудиофайлов, если вы хотите, чтобы клиент Telegram отображал их в музыкальном проигрывателе.
  • sendVideo Используйте этот метод для отправки видеофайлов, клиент Telegram поддерживают видео в формате mp4 (другие форматы могут быть отправлены как документ ).
  • sendPhoto Используйте этот метод для отправки фотографий.

С полным списком методов можно ознакомиться здесь

Встроенная клавиатура

Добавим две функции для вывода настраиваемой клавиатуры в телеграм

InlineKeyboardMarkup - Этот объект представляет собой встроенную клавиатуру, которая появляется рядом с отправленным сообщением.

def inline_keyboard(chat_id, text): reply_markup = ]]> data = requests.post(f'/sendMessage', data=data)

ReplyKeyboardMarkup - Этот объект представляет собой настраиваемую клавиатуру с параметрами ответа

def reply_keyboard(chat_id, text): reply_markup = < "keyboard": [["Фото по url", "Сайт"], ["Привет"]], "resize_keyboard": True, "one_time_keyboard": True>data = requests.post(f'/sendMessage', data=data)

Отредактируем функцию check_message для вывода нашей клавиатуры

def check_message(chat_id, message): if message.lower() in ['привет', 'hello']: send_message(chat_id, 'Привет :)') elif message.lower() in 'сайт': inline_keyboard(chat_id, 'Вы можете ознакомиться\nс товаром на сайте') elif message.lower() in 'фото по url': # Отправить URL-адрес картинки (телеграм скачает его и отправит) send_photo_url(chat_id, 'https://ramziv.com/static/assets/img/home-bg.jpg') elif message.lower() in 'фото с компьютера': # Отправить файл с компьютера send_photo_file(chat_id, 'photo.jpg') elif message.lower() in 'фото с сервера телеграм': # Отправить id файла (файл уже хранится где-то на серверах Telegram) send_photo_file_id(chat_id, 'AgACAgIAAxkBAAMqYVGBbdbivL53IzKLfUKUClBnB0cAApy0MRtfMZBKHL0tNw9aITwBAAMCAAN4AAMhBA') else: reply_keyboard(chat_id, 'Вот что я умею')

Проверка

Проверим как все работает

Отправим боту сообщение Сайт

телеграм бота на Python

Если отправить сообщение на которые бот не может дать ответ, он выведет клавиатуру и сообщение Вот что я умею

телеграм бота на Python

import requests import time import json TOKEN = 'токен' URL = 'https://api.telegram.org/bot' def get_updates(offset=0): result = requests.get(f'/getUpdates?offset=').json() return result['result'] def send_message(chat_id, text): requests.get(f'/sendMessage?chat_id=&text=') def send_photo_url(chat_id, img_url): requests.get(f'/sendPhoto?chat_id=&photo=') def send_photo_file(chat_id, img): files = requests.post(f'/sendPhoto?chat_id=', files=files) def send_photo_file_id(chat_id, file_id): requests.get(f'/sendPhoto?chat_id=&photo=') def inline_keyboard(chat_id, text): reply_markup = ]]> data = requests.post(f'/sendMessage', data=data) def reply_keyboard(chat_id, text): reply_markup = < "keyboard": [["Фото по url", "Сайт"], ["Привет"]], "resize_keyboard": True, "one_time_keyboard": True>data = requests.post(f'/sendMessage', data=data) def check_message(chat_id, message): if message.lower() in ['привет', 'hello']: send_message(chat_id, 'Привет :)') elif message.lower() in 'сайт': inline_keyboard(chat_id, 'Вы можете ознакомиться\nс товаром на сайте') elif message.lower() in 'фото по url': # Отправить URL-адрес картинки (телеграм скачает его и отправит) send_photo_url(chat_id, 'https://ramziv.com/static/assets/img/home-bg.jpg') elif message.lower() in 'фото с компьютера': # Отправить файл с компьютера send_photo_file(chat_id, 'photo.jpg') elif message.lower() in 'фото с сервера телеграм': # Отправить id файла (файл уже хранится где-то на серверах Telegram) send_photo_file_id(chat_id, 'AgACAgIAAxkBAAMqYVGBbdbivL53IzKLfUKUClBnB0cAApy0MRtfMZBKHL0tNw9aITwBAAMCAAN4AAMhBA') else: reply_keyboard(chat_id, 'Вот что я умею') def run(): update_id = get_updates()[-1]['update_id'] # Присваиваем ID последнего отправленного сообщения боту while True: time.sleep(2) messages = get_updates(update_id) # Получаем обновления for message in messages: # Если в обновлении есть ID больше чем ID последнего сообщения, значит пришло новое сообщение if update_id < message['update_id']: update_id = message['update_id'] # Присваиваем ID последнего отправленного сообщения боту # Отвечаем тому кто прислал сообщение боту check_message(message['message']['chat']['id'], message['message']['text']) if __name__ == '__main__': run()

Вот и все, теперь бот может не только поприветствовать, но и отправить файл, и вывести настраиваемую клавиатуру. Скоро я выпушу третью часть, где мы добавим оплату через QIWI кошелек, или любой другой функционал который вы пожелаете. (напишите мне если вы хотите третью часть побыстрее)

Дополнительную информацию о методах вы можете получить в документации.

Как сделать, чтобы телеграм-бот отправлял фото(python)?

5dcaeea315522794900214.jpeg

Я начинающий программист python, научился отвечать на сообщения в телеграм-боте, но как отправить в ответ на сообщение фотографию, не могу понять. В интернете искал, мало информации нормальной. Жду адекватного ответа. Спасибо!

  • Вопрос задан более трёх лет назад
  • 23123 просмотра

3 комментария

Простой 3 комментария

Что такое Phyton?

Ternick

Araya, Опечатка вероятно 🙂

Ternick

Для начала давайте сделаем так, вы удалите скриншот кода и скопируете код в специальный тег для кода.

Решения вопроса 1

Ternick

Может python, не ?
Пожалуйста вот ссылка на код который показывает как это делать https://pypi.org/project/pyTelegramBotAPI/0.2.9/ 🙂
Лайфхак:
После перехода на страницу нажимаем ctrl + f и вписываем в окно поиска send_photo и получаем следующее :
image.png
Или в вашем случае для начала нужно будет сделать так:
imagee8cf526e2cd3c116.png
КОД:

import telebot from requests import get bot = telebot.TeleBot("TOKEN") @bot.message_handler(commands=["start"]) def start(message): bot.send_message(message.chat.id, "ТЕСТ") bot.send_photo(message.chat.id, get("https://i0.wampi.ru/2019/11/12/image.png").content) bot.polling()

На всё про всё минут 7 понадобилось мне и 2 ссылки которые доступны по первому же запросу в гугл.
(2 ссылку указать не могу потому что видёт на 'запрещённый сайт' 🙂 )
Вопросы ?

Работа с файлами/media, модуль python-telegram-bot в Python

В разделе рассмотрены примеры сниппетов, для работы с файлами, медиа и URL-адресами при создании Telegram бота с помощью пакета python-telegram-bot .

Внимание! Пакеты python-telegram-bot версии 13.x будут придерживаться многопоточной парадигмы программирования (*на данный момент актуальна версия 13.15). Пакеты версий 20.x и новее предоставляют чистый асинхронный Python интерфейс для Telegram Bot API. Дополнительно смотрите основные изменения в пакете python-telegram-bot версии 20.x.

Здесь рассматривается методы экземпляра bot = telegram.Bot() . Если при создании бота используется пакет расширения telegram.ext , то методы объекта bot будут доступны через:

  • updater.bot - это экземпляр telegram.Bot , связанный с экземпляром Updater , который присылает и отправляет все сообщения;
  • в функции обратного вызова через контекст context.bot - это telegram.Bot связанный с контекстом обработанного сообщения.
from telegram.ext import Updater, CommandHandler TOKEN = 'Замените строку на Ваш token' updater = Updater(token=TOKEN) dispatcher = updater.dispatcher # экземпляр `telegram.Bot`, связанный с экземпляром `Updater` updater.bot.send_photo(. ) # методы `telegram.Bot` доступны через `context` def call_back(update, context): . # `telegram.Bot` связанный с контекстом # обработанного сообщения context.bot.send_photo(. ) . dispatcher.add_handler(CommandHandler("you_command", call_back)) 

Публикация файлов, media и URL-адресов в Telegram.

Если нужно отправить файл, например, отправить фото, то для этого есть три метода:

  • Загрузить файл в Telegram.
  • Отправить HTTP-ссылку, ведущую к файлу
  • Отправить file_id уже отправленного файла.

Обратите внимание, что не каждый метод поддерживается везде (например, для thumbnails нельзя передать file_id ).

Смотрим, как можно отправить документ.
  1. Загрузка файла в Telegram:
bot.send_document(chat_id=chat_id, document=open('tests/test.png', 'rb')) 
bot.send_document(chat_id=chat_id, document='https://site.ru/static/test.gif')) 
bot.send_document(chat_id=chat_id, document=file_id)) 
  • У каждого бота есть свои собственные идентификаторы файлов, т.е. нельзя использовать идентификатор файла от другого бота для отправки фотографии
  • Как получить fileid фотографии, которую вы отправили? Прочтите его из возвращаемого значения bot.senddocument (или любого другого объекта Message, который вы получите):
message = bot.send_document(. ) file_id = message.document.file_id 

Примечание. Метод bot.send_document используется для отправки файлов любого типа. В настоящее время боты могут отправлять файлы любого типа размером до 50 МБ, это ограничение может быть изменено в будущем. Аргументом document может быть либо file_id , либо URL-адрес, либо файл с диска открытый как open(file_name, 'rb') . Отправка по URL в настоящее время работает только с файлами GIF, PDF и ZIP.

Это почти так же работает для всех других методов send_media_type , таких как bot.send_photo() , bot.send_video() и т. д.

Далее рассматриваются другие распространенные примеры кода. Обратите внимание на то, что подход к публикации файлов почти одинаков, НО методы экземпляра bot разные!

Опубликовать файл изображения с диска в Telegram.
bot.send_photo(chat_id=chat_id, photo=open('tests/test.png', 'rb')) 
Опубликовать фото с URL-адреса в Telegram.
bot.send_photo(chat_id=chat_id, photo='https://telegram.org/img/t_logo.png') 
Опубликовать голосовой файл с диска в Telegram.
bot.send_voice(chat_id=chat_id, voice=open('tests/telegram.ogg', 'rb')) 
Опубликовать аудио файл с диска в Telegram.
bot.send_audio(chat_id=chat_id, audio=open('tests/test.mp3', 'rb')) 
Опубликовать документ или архив с диска в Telegram.
bot.send_document(chat_id=chat_id, document=open('tests/test.zip', 'rb')) 
Опубликовать гифку в Telegram.

Используйте этот метод для отправки файлов анимации (видео в формате GIF или H.264/MPEG-4 AVC без звука). В настоящее время боты могут отправлять файлы анимации размером до 50 МБ, это ограничение может быть изменено в будущем.

bot.send_animation(chat_id=chat_id, document=open('tests/animation.gif', 'rb')) 
Опубликовать медиа-группу из фото, расположенных в URL-адресах:

Используйте этот метод для отправки группы фотографий или видео в виде альбома.

from telegram import InputMediaPhoto list_of_urls = [ 'https://example.org/commons/foto1.jpg', 'https://example.org/commons/foto2.jpg', 'https://example.org/commons/foto3.jpg' ] # список мультимедиа media_group = [] for number, url in enumerate(list_of_urls): media_group.append(InputMediaPhoto(media=url, caption="Фотография №" + number)) bot.send_media_group(chat_id=chat_id, media=media_group) 

Примечание Элементы в списке мультимедиа media_group обязательно должны быть экземплярами InputMediaAudio , InputMediaDocument , InputMediaPhoto или InputMediaVideo .

Редактирование файла, отправленного в Telegram.

Если файл отправлен, то можно его отредактировать. Это работает аналогично send_media_group , т. е. медиаданные должны быть заключены в объект InputMedia . Опять же, с документом в качестве примера:

bot.edit_message_media(chat_id=chat_id, message_id=message_id, media=InputMediaDocument(media=open('tests/test.png'), . )) 

Ознакомьтесь с ограничениями на редактирование мультимедиа в документах send_media_group .

Выложить изображение прочитанное в оперативную память:

В этом примере изображение является объектом изображения модуля Pillow , но оно работает одинаково со всеми типами мультимедиа.

from io import BytesIO bio = BytesIO() bio.name = 'image.jpeg' image.save(bio, 'JPEG') bio.seek(0) bot.send_photo(chat_id, photo=bio) 
Получить изображение с размерами, максимально приближенными к желаемому размеру:

Где photos - это список объектов PhotoSize , а desired_size - кортеж, содержащий нужный размер.

def get_closest(photos, desired_size): def diff(p): return p.width - desired_size[0], p.height - desired_size[1] def norm(t): return abs(t[0] + t[1] * 1j) return min(photos, key=lambda p: norm(diff(p))) 

Загрузка файлов из Telegram сообщений.

Примечание. При загрузке фотографий имейте в виду, что update.message.photo - это массив фотографий разных размеров (упорядоченный от самого малого к большому).

Используйте update.message.photo[-1] , чтобы получить самый большой размер.

file_id = message.voice.file_id newFile = bot.get_file(file_id) newFile.download('voice.ogg') 

Для полученного video, voice и т.д нужно изменить message.document на message.video , message.voice и т.д. Однако есть одно исключение: message.photo - это список объектов PhotoSize , которые представляют разные размеры одной и той же фотографии. Чтобы получить наибольший размер, нужно используйте message.photo[-1].file_id .

Кроме того, приведенный выше фрагмент можно сократить, используя встроенные ссылки:

newFile = message.effective_attachment.get_file() newFile.download('file_name') 

message.efficient_attachment автоматически содержит любое мультимедийное вложение, которое есть в сообщении - в случае фотографии снова придется использовать, например: message.efficient_attachment[-1].get_file() .

  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Переход на асинхронный python-telegram-bot версии 20.x
  • Чистый интерфейс Python для Telegram Bot API
  • Команды и оповещения @BotFather в Telegram
  • Обработка сообщений модулем python-telegram-bot
  • Фильтры сообщений модуля python-telegram-bot
  • Хранение временных данных модулем python-telegram-bot
  • Настройки по умолчанию модуля python-telegram-bot
  • Планировщик сообщений модуля python-telegram-bot
  • Форматирование и отправка сообщений в python-telegram-bot
  • Работа с файлами/media, модуль python-telegram-bot
  • Меню из кнопок, модуль python-telegram-bot
  • Объект CallbackContext модуля python-telegram-bot
  • Подключения Telegram-бота через webhook
  • Обработка исключений модуля python-telegram-bot
  • Создание Inline-бота, модуль python-telegram-bot
  • Работа с опросами в модуле python-telegram-bot
  • Создание разговоров ConversationHandler в python-telegram-bot
  • Перезапуск телеграмм-бота в случае ошибки
  • Декоратор-обработчик сообщений в python-telegram-bot
  • Авторизация на сайте через Telegram Passport
  • Ведение публикаций в Telegram-канале с python-telegram-bot
  • UTF коды emoji/эмодзи для отправки в Telegram из Python

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *