Отправка изображения telegram api python

Отправка изображения telegram api python

Light mode Dark mode Auto light/dark mode

PTB has undergone significant changes in v20. Please read the documentation carefully and also check out the transition guide in the wiki.

  • Animation
  • Audio
  • BotCommand
  • BotCommandScope
  • BotCommandScopeAllChatAdministrators
  • BotCommandScopeAllGroupChats
  • BotCommandScopeAllPrivateChats
  • BotCommandScopeChat
  • BotCommandScopeChatAdministrators
  • BotCommandScopeChatMember
  • BotCommandScopeDefault
  • BotDescription
  • BotName
  • BotShortDescription
  • CallbackQuery
  • Chat
  • ChatAdministratorRights
  • ChatInviteLink
  • ChatJoinRequest
  • ChatLocation
  • ChatMember
  • ChatMemberAdministrator
  • ChatMemberBanned
  • ChatMemberLeft
  • ChatMemberMember
  • ChatMemberOwner
  • ChatMemberRestricted
  • ChatMemberUpdated
  • ChatPermissions
  • ChatPhoto
  • ChatShared
  • Contact
  • Dice
  • Document
  • File
  • ForceReply
  • ForumTopic
  • ForumTopicClosed
  • ForumTopicCreated
  • ForumTopicEdited
  • ForumTopicReopened
  • GeneralForumTopicHidden
  • GeneralForumTopicUnhidden
  • InlineKeyboardButton
  • InlineKeyboardMarkup
  • InputFile
  • InputMedia
  • InputMediaAnimation
  • InputMediaAudio
  • InputMediaDocument
  • InputMediaPhoto
  • InputMediaVideo
  • InputSticker
  • KeyboardButton
  • KeyboardButtonPollType
  • KeyboardButtonRequestChat
  • KeyboardButtonRequestUser
  • Location
  • LoginUrl
  • MenuButton
  • MenuButtonCommands
  • MenuButtonDefault
  • MenuButtonWebApp
  • Message
  • MessageAutoDeleteTimerChanged
  • MessageEntity
  • MessageId
  • PhotoSize
  • Poll
  • PollAnswer
  • PollOption
  • ProximityAlertTriggered
  • ReplyKeyboardMarkup
  • ReplyKeyboardRemove
  • SentWebAppMessage
  • SwitchInlineQueryChosenChat
  • TelegramObject
  • Update
  • User
  • UserProfilePhotos
  • UserShared
  • Venue
  • Video
  • VideoChatEnded
  • VideoChatParticipantsInvited
  • VideoChatScheduled
  • VideoChatStarted
  • VideoNote
  • Voice
  • WebAppData
  • WebAppInfo
  • WebhookInfo
  • WriteAccessAllowed
  • ChosenInlineResult
  • InlineQuery
  • InlineQueryResult
  • InlineQueryResultArticle
  • InlineQueryResultAudio
  • InlineQueryResultCachedAudio
  • InlineQueryResultCachedDocument
  • InlineQueryResultCachedGif
  • InlineQueryResultCachedMpeg4Gif
  • InlineQueryResultCachedPhoto
  • InlineQueryResultCachedSticker
  • InlineQueryResultCachedVideo
  • InlineQueryResultCachedVoice
  • InlineQueryResultContact
  • InlineQueryResultDocument
  • InlineQueryResultGame
  • InlineQueryResultGif
  • InlineQueryResultLocation
  • InlineQueryResultMpeg4Gif
  • InlineQueryResultPhoto
  • InlineQueryResultsButton
  • InlineQueryResultVenue
  • InlineQueryResultVideo
  • InlineQueryResultVoice
  • InputMessageContent
  • InputTextMessageContent
  • InputLocationMessageContent
  • InputVenueMessageContent
  • InputContactMessageContent
  • InputInvoiceMessageContent
  • Credentials
  • DataCredentials
  • EncryptedCredentials
  • EncryptedPassportElement
  • FileCredentials
  • IdDocumentData
  • PassportData
  • PassportElementError
  • PassportElementErrorDataField
  • PassportElementErrorFile
  • PassportElementErrorFiles
  • PassportElementErrorFrontSide
  • PassportElementErrorReverseSide
  • PassportElementErrorSelfie
  • PassportElementErrorTranslationFile
  • PassportElementErrorTranslationFiles
  • PassportElementErrorUnspecified
  • PassportFile
  • PersonalDetails
  • ResidentialAddress
  • SecureData
  • SecureValue
  • Application
  • ApplicationBuilder
  • ApplicationHandlerStop
  • BaseUpdateProcessor
  • CallbackContext
  • ContextTypes
  • Defaults
  • ExtBot
  • Job
  • JobQueue
  • SimpleUpdateProcessor
  • Updater
  • Handlers
  • BaseHandler
  • CallbackQueryHandler
  • ChatJoinRequestHandler
  • ChatMemberHandler
  • ChosenInlineResultHandler
  • CommandHandler
  • ConversationHandler
  • filters Module
  • InlineQueryHandler
  • MessageHandler
  • PollAnswerHandler
  • PollHandler
  • PreCheckoutQueryHandler
  • PrefixHandler
  • ShippingQueryHandler
  • StringCommandHandler
  • StringRegexHandler
  • TypeHandler
  • arbitrarycallbackdatabot.py
  • chatmemberbot.py
  • contexttypesbot.py
  • conversationbot.py
  • conversationbot2.py
  • customwebhookbot.py
  • deeplinking.py
  • echobot.py
  • errorhandlerbot.py
  • inlinebot.py
  • inlinekeyboard.py
  • inlinekeyboard2.py
  • nestedconversationbot.py
  • passportbot.py
  • paymentbot.py
  • persistentconversationbot.py
  • pollbot.py
  • rawapibot.py
  • timerbot.py
  • webappbot.py

Источник

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 кошелек, или любой другой функционал который вы пожелаете. (напишите мне если вы хотите третью часть побыстрее)

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

Источник

Читайте также:  Arrays stream sum java
Оцените статью