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

Как сделать так, чтобы телеграмм бот отправлял фото которое находится на пк, по дефолту нужен 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
Здравствуйте уважаемые форумчане! Подскажите как решить такую проблему: Написал небольшой бот для.
![]()
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, отправка файлов, встроенная клавиатура

Это вторая часть статьи, где мы продолжим создавать нашего телеграм бота на 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()
![]()
Фото с компьютера
![]()
Фото с сервера телеграм
![]()
Таким образом вы можете отправить документ, видео, или аудиофайл заменив в 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, 'Вот что я умею')
Проверка
Проверим как все работает
Отправим боту сообщение Сайт
![]()
Если отправить сообщение на которые бот не может дать ответ, он выведет клавиатуру и сообщение Вот что я умею
![]()
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)?

Я начинающий программист python, научился отвечать на сообщения в телеграм-боте, но как отправить в ответ на сообщение фотографию, не могу понять. В интернете искал, мало информации нормальной. Жду адекватного ответа. Спасибо!
- Вопрос задан более трёх лет назад
- 23123 просмотра
3 комментария
Простой 3 комментария
Что такое Phyton?

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

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

Может python, не ?
Пожалуйста вот ссылка на код который показывает как это делать https://pypi.org/project/pyTelegramBotAPI/0.2.9/ 🙂
Лайфхак:
После перехода на страницу нажимаем ctrl + f и вписываем в окно поиска send_photo и получаем следующее :
Или в вашем случае для начала нужно будет сделать так:
КОД:
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 ).
Смотрим, как можно отправить документ.
- Загрузка файла в 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