Python telebot отправить файл

Отправить файл большого размера через телеграм бота

Отправить файл большого размера через телеграм бота

Приветствую всех. В этой небольшой статье я покажу один из способов, как можно отправить файл большого размера в телеграм боте с помощью Python. Для примера буду использовать библиотеку pyTelegramBotAPI (telebot).

Что бы лучше понять о чем речь, попробуйте воспроизвести код ниже.

import telebot bot = telebot.TeleBot("ТОКЕН") @bot.message_handler(func=lambda message: message.text.lower() in ['файл']) def echo_all(message): bot.reply_to(message, 'Загрузка файла') file = open('file.rar', 'rb') bot.send_document(message.chat.id, file) bot.infinity_polling()

Отправка файлов в телеграм бот

Если документ file.rar будем иметь вес больше 50МБ, то пользователь его не получит.

Отправка файлов в телеграм бот

Проблему можно решить способом отправки file_id .

Отправка файла по file_id

Откройте в браузере ссылку указав свой токен.

https://api.telegram.org/bot/getUpdates

После чего, отправьте своему боту документ. Я отправил file.rar с весом ~70МБ.

Отправка файлов в телеграм бот

Перезагрузите страницу с ссылкой что вы открыли в браузере ранее, и вы увидите массив данных где присутствует file_id вашего документа.

Отправка файлов в телеграм бот

Теперь вы можете использовать его в коде, и таким образом отправлять документы больше 50МБ.

import telebot bot = telebot.TeleBot("ТОКЕН") @bot.message_handler(func=lambda message: message.text.lower() in ['файл']) def echo_all(message): bot.reply_to(message, 'Загрузка файла') file ='IAAxkBAAIFIWJYZMHvbYpgCRAAIKGQACdSfBSqBQd6lVllkwIwQ' bot.send_document(message.chat.id, file) bot.infinity_polling()

Источник

Telegram бот на Python. Практические примеры

Представляю Вашему вниманию практические примеры по теме, как создать Telegram бот на Python3 с использованием библиотеки pyTelegramBotAPI. Тут я не вижу смысла рассказывать о том, как использовать Bot Father, так как, скорее всего это знают все, либо инфы в инете полно. Минимум что будет из банальных примеров — это обработка таких команд, как «/start» и «/help» либо любой бот начинается именно с этого + это будет полезно, для тех кто только начинает свой путь в создании ботов Telegram.

План действий в рамках этой статьи такой. Но она будет дополнятся, так как данную статью я буду использовать для себя в качестве справки… По этому можете добавить страницу в закладки.

  1. Подготовка — Создаём config.py и используем Proxy.
  2. Обработка команд «/start» и «/help».
  3. Обработка простых сообщений. Отправка и получение.
  4. Как скачать и отправить стикер пользователю из бота.
  5. Как отправить и получить документ, аудио, видео и.т.д
  6. Разбираемся с Emoji, как получить код смайла для отправки в сообщении.
  7. Получаем информацию о пользователе, который запустил бота.
Читайте также:  Изменить расширение файла питон

Подготовка — Создаём config.py и используем Proxy.

Файл config.py понадобится нам для хранения Токена бота и proxy (Если используете). Сложного тут нет ничего, обычный файл с двумя переменными, которые мы будет использовать в основном файле проекта.

Так просто выглядит файл config.py который нужно импортировать в основном файле проекта, созданием которого мы сейчас займемся. Я его так и назову «telegram_bot.py»

Практически Telegram бот на Python уже готов к работе и его можно запустить, если нет ошибок то бот работает. Но есть одна проблема. Бот работает через прокси, а библиотека request, которая нам нужна для загрузки файлов от пользователя, в данном случаи не использует прокси, по этому скачивать файлы не получиться… Это дело можно исправить, но лучше использовать VPN а от proxy отказаться.

В дальнейшем будем считать, что у нас настроен VPN ну или бот пишется непосредственно на сервере))) Теперь когда с подключением разобрались, пришло время научить бота совершать какие либо действия.

Обработка команд «/start» и «/help».

Библиотека «pyTelegramBotAPI» использует декораторы, это очень удобно и практично. Посмотрим как это работает на примере обработки команд «/start» и «/help».

Если пользователь Вашего бота отправить одну из команд start или help то сработает функция «welcome()» (Название функции может быть произвольным) главное что бы она принимала обязательный параметр «message» в котором содержится много полезной информации.

А вот пример как работают декораторы. Мы можем обработать команды в разных функциях.

Все получается аккуратно и логично, запутаться что и где уже стало сложнее, а значит разработка бота сводится не к рутине а к удовольствию =)

Обработка простых сообщений. Отправка и получение.

До этого момента мы работали только с командами, теперь нам предстоит работа с различным типом сообщений от пользователя. Сложного в этом ничего нет, все так же просто, как и с командами. Просто нам нужно указать тип ожидаемого сообщения от пользователя.

Типов сообщений в pyTelegramBotAPI достаточно. Некоторые из них для примера «text, audio, document» и.т.д. Рассмотрим пример

Так же можно записать следующим образом @bot.message_handler(content_types=[«text», «document», «audio»]) Надеюсь с этим все понятно, и работа декораторов Вам понятна.

Как получить простое сообщение от пользователя.

Ранее я уже сказал что в «message» много интересного. Там же и находится сообщение которое напечатал пользователь боту. Прочитать его можно так.

В консоль будет выведено сообщение от пользователя.

Как отправить простое сообщение пользователю.

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

Читайте также:  Java update cannot proceed with internet connection settings

Вызываем метод «send_message» и передаём ему собственно ID и текст сообщение. В данном примере происходит следующие: Если пользователь напишет «hello» то бот ему ответит «И тебе hello»

Как скачать и отправить стикер пользователю из Telegram бота

Думаю это будет интересный пример, сейчас мы научимся отправлять Стикеры из telegram бот на python3. Для того что бы отправить стикер из бота, нам нужно узнать ID нужного нам стикера. Сделать это просто, отправьте любой стикер боту «@StickerID_Bot» и он в ответ вернёт Вам ID файла.

Как отправить Стикер

Если пользователь боту пришлёт слово «sticker» то в ответ мы отправим ему свой стикер. За место send_message вызывается метод send_sticker также передаётся id и за место текста отправляется ID стикера. Все просто — стикер отправлен))

Как получить Стикер (Скачать на локальную машину)

Давайте скачаем на локальную машину файл стикера, который прислал пользователь боту.

Собственно опять «message»! Пользователь отправляет нам стикер. Находим ID Стикера и отдаём его методу «get_file» что бы получить путь до файла на сервере телеграмма. А дальше скачаем файл в папку «stickers» которую нужно создать в том каталоге, где находится весь проект бота.

Как отправить и получить документ, аудио, видео, фото и.т.д

Продолжаем пилить telegram бот на python3 и на простом примере разберёмся, как отправлять файлы пользователям telegram бота.

Как отправить файл пользователю бота

Отправляем пользователю фотографию

За это отвечает метод «send_photo» Аналогично поступим и с другими типами файлов. Например нам нужно отправить документ «file.txt»

Отправляем пользователю документ

Тут мы уже используем метод «send_document» аналогично поступаем с другими типами файлов аудио, видео и прочие.

Как получить файл от пользователя

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

Получим от пользователя музыку

Точно таким-же способом можно получить любой тип файла от пользователей и создать Telegram бот на Python для конвертации файлов или у кого на что фантазии хватает))

  • PySpeedTest Как узнать Скорость соединения в Python
  • Nuitka — Библиотека для трансляции кода на python в С и компиляции в exe
  • Pafy — Библиотека для скачивания видео с YouTube
  • Instabot — модуль для Python, который реализует обертку над API Instagram
  • Python-Cptchnet — Модуль для работы с API сервиса Cptch.net
  • pyTelegramBotAPI Библиотека для создание Ботов Telegram

Если есть возможность — поддержать нас: будем очень признательны. Денежные средства пойдут на дальнейшее развитие проекта!

Источник

Как отправить файл через бота в телеграмм?

Как можно отправлять файл с расширение боту, у меня при отправке приходит просто документ с названием document, в документации посмотрел https://core.telegram.org/bots/api#senddocument , но ничего не нашел(возможно пропустил что-то). Подскажите как отправлять файл с именем и расширением.

import config import telebot name_bot="бот" bot = telebot.TeleBot(config.token) @bot.message_handler(commands=['marksSYAP']) def send_welcome(message): with open("D:\\MarksSYAP.xlsx","rb") as misc: f=misc.read() bot.send_document(message.chat.id,f)

Средний 1 комментарий

Читайте также:  Classes in java util package

leahch

Args: chat_id (:obj:`int` | :obj:`str`): Unique identifier for the target chat or username of the target channel (in the format @channelusername). document (:obj:`str` | `filelike object` | :class:`telegram.Document`): File to send. Pass a file_id as String to send a file that exists on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the Internet, or upload a new one using multipart/form-data. Lastly you can pass an existing :class:`telegram.Document` object to send. filename (:obj:`str`, optional): File name that shows in telegram message (it is useful when you send file generated by temp module, for example). Undocumented. caption (:obj:`str`, optional): Document caption (may also be used when resending documents by file_id), 0-1024 characters. parse_mode (:obj:`str`, optional): Send Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in the media caption. See the constants in :class:`telegram.ParseMode` for the available modes. disable_notification (:obj:`bool`, optional): Sends the message silently. Users will receive a notification with no sound. reply_to_message_id (:obj:`int`, optional): If the message is a reply, ID of the original message. reply_markup (:class:`telegram.ReplyMarkup`, optional): Additional interface options. A JSON-serialized object for an inline keyboard, custom reply keyboard, instructions to remove reply keyboard or to force a reply from the user. thumb (`filelike object`, optional): Thumbnail of the file sent. The thumbnail should be in JPEG format and less than 200 kB in size. A thumbnail's width and height should not exceed 90. Ignored if the file is not is passed as a string or file_id. timeout (:obj:`int` | :obj:`float`, optional): Send file timeout (default: 20 seconds). **kwargs (:obj:`dict`): Arbitrary keyword arguments. Returns: :class:`telegram.Message`: On success, the sent Message is returned

bot.send_document(message.chat.id,f,filename=»MarksSYAP.xlsx») изменил, получаю ошибку
TypeError: send_document() got an unexpected keyword argument ‘filename’

leahch

leahch

bot.send_document(message.chat.id,document=f, filename=“1346.mg”)

leahch

leahch

Александр Бондаренко, увы, все ссылки на леленрам на территории России заблокированы. Давайте ссылку на гитхаб.

leahch

def send_document(self, chat_id, data, reply_to_message_id=None, caption=None, reply_markup=None, parse_mode=None, disable_notification=None, timeout=None): """ Use this method to send general files. :param chat_id: :param data: :param reply_to_message_id: :param reply_markup: :param parse_mode: :param disable_notification: :return: API reply. """ return types.Message.de_json( apihelper.send_data(self.token, chat_id, data, 'document', reply_to_message_id, reply_markup, parse_mode, disable_notification, timeout, caption=caption))

Источник

Оцените статью