Отправляем фото и видео в Telegram без сжатия и потери качества

Python *Программирование * Ожидает приглашения

В этом статье я покажу как создать Telegram бота с помощью Python, поскольку не нашел хорошей русскоязычной статьи по этой теме.

Создание бота

Бот создается с помощью BotFather через Telegram. После команды /newbot надо просто следовать инструкции.

image

В конце мы получаем токен для управления ботом и работы с Telegram API.

pyTelegramBotApi

Ссылки на документации всех библиотек будут в конце.

Создадим простого бота, отвечающего на команду /start, с помощью этой библиотеки:

import telebot  bot = telebot.TeleBot('1408700689:AAGVqcqscWWK7DnuNHahd0w1eNklfjPEVxE')  @bot.message_handler(commands=['start']) def start(message):     bot.send_message(message.chat.id, 'It works!')  bot.polling()

Примеры функций

Отправка изображений

Можно отправлять фото из локального хранилища, но удобнее это делать по ссылке. Код аналогичен предыдущему:

@bot.message_handler(commands=['start']) def start(message): bot.send_photo(message.chat.id, photo=photo_url, caption='It works!')

Замена клавиатуры

У ботов есть функция замены стандартной клавиатуры на кнопочную. Для этого у всех функций есть опциональный аргумент reply_markup:

from telebot import types  @bot.message_handler(commands=['start']) def start(message):   markup = types.ReplyKeyboardMarkup()   buttonA = types.KeyboardButton('A')   buttonB = types.KeyboardButton('B')   buttonC = types.KeyboardButton('C')    markup.row(buttonA, buttonB)   markup.row(buttonC)    bot.send_message(message.chat.id, 'It works!', reply_markup=markup)

Клавиатура для сообщений

Можно создавать клавиатуру для отдельного сообщения. Передавать его нужно так же в аргумент reply_markup:

from telebot import types  @bot.message_handler(commands=['start']) def start(message):   markup = types.InlineKeyboardMarkup()   buttonA = types.InlineKeyboardButton('A', callback_data='a')   buttonB = types.InlineKeyboardButton('B', callback_data='b')   buttonC = types.InlineKeyboardButton('C', callback_data='c')    markup.row(buttonA, buttonB)   markup.row(buttonC)    bot.send_message(message.chat.id, 'It works!', reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True) def handle(call): bot.send_message(call.message.chat.id, 'Data: {}'.format(str(call.data)))   bot.answer_callback_query(call.id)

Изменение сообщений

У ботов есть функция изменения своих сообщений (можно использовать, чтобы сделать перелистывание страниц, например). Для этого нужно воспользоваться методом edit_message_text (edit_message_caption для картинок):

@bot.callback_query_handler(lambda call: True) def handle(call): bot.send_message(chat_id=call.message.chat.id, message_id=call.message.id, text='It works!')   bot.answer_callback_query(call.id)

Смысл аргументов понятен из их названия.

Flask

Если запустить бота, то через какое-то время он упадет с ошибкой Connection to api.telegram.org timed out. Чтобы это исправить нужно использовать вебхук:

from flask import Flask, request import telebot  token = '1408700689:AAGVqcqscWWK7DnuNHahd0w1eNklfjPEVxE' bot = telebot.TeleBot(token) app = Flask(__name__)  @bot.message_handler(commands=['start']) def start(message):     bot.send_message(message.chat.id, 'It works!')  @app.route("/" + token, methods=['POST']) def getMessage():   bot.process_new_updates([telebot.types.Update.de_json(request.stream.read().decode("utf-8"))])   return "!", 200  bot.remove_webhook() bot.set_webhook('https://test.com/' + token) app.run()

Этот код при запуске сначала удалит вебхук, если такой был, и установит его на желаемый. Все запросы, которые приходят в функцию getMessage будут направляться в bot с помощью метода process_new_updates. Этот код уже можно использовать для запуска, например, на Heroku.

P.S. Чтобы работать с длинными диалогами, я хранил для каждого пользователя в базе данных его текущее состояние.

Полезные ссылки

https://flask.palletsprojects.com/en/1.1.x/ – Flask https://pypi.org/project/pyTelegramBotAPI/ – pyTelegramBotApi https://core.telegram.org/bots/api – Telegram Bot API

Для применения кейса необходимы базовые знания работы в терминале любой операционной системы Linux, понимание того как настраиваются периодические задания с помощью планировщика. Так же, для запуска скриптов понадобится либо сервер (самый простой, виртуальный), либо аккаунт на хостинге, в котором позволено будет по cron’у запустить скрипт.

Автор прекрасно понимает, что таких каналов в Telegram уже огромное количество, и что они не особо-то и нужны, однако автору было нечего делать, не спалось и хотелось чем-то себя развлечь.

Итак, для организации самонаполняемого канала, нам нужно три вещи:

  1. Скрипт, которым мы получим список тематических ссылок с сайта stocksnap.io.
  2. Telegram бот, полученный от @BotFather и добавленный в наш канал.
  3. Скрипт, который будет постить в канал картинку через бота.

Получаем список ссылок.

Материал для публикации мы будем получать с сайта stocksnap.io, все изображения на этом сайте распространяются под лицензией CC0, а значит проблем с авторскими правами у нас не случится. Список ссылок на изображения в нужной категории мы получим с помощью скрипта, который через API сайта заберёт нужную информацию. Результатом работы скрипта будет файл, в котором будет список прямых ссылок на изображения.

Сам скрипт можно посмотреть здесь.

Запускается он вот так, с параметрами:

# ./downloader food 1

./downloader — имя скрипта. food — категория, из которой мы будем собирать изображения. Найти все доступные категории можно здесь https://stocksnap.io/popular 1 — страница, с которой скрипт начнёт собирать информацию. На сайте организован постраничный вывод изображений. Как только пользователь докручивает колесо мыши до нижней части страницы, ему подгружается новая порция картинок. Каждая порция картинок, во внутренностях сайта описана на отдельной странице. Что бы не заморачивать себя и получить все изображения из категории здесь можно всегда использовать единичку.

В процессе работы, скрипт с помощью wget будет по API скачивать служебную информацию, затем из всех страниц со служебной информацией, будет сформирован файл, содержащий список ссылок с именем food.url.list. Этот файл будет использоваться нашим ботом для постинга изображений в канал. Так же, этот файл, при необходимости, можно использовать для скачивания всех изображений себе (для работы бота это не обязательно).

Краткое резюме — мы запускаем скрипт и когда он отработает, получаем файл со списком ссылок на изображения нужной нам категории.

Регистрируем бота в Telegram.

Добавляем себе контакт @BotFather, начинаем работу с ним. Заводим себе нового бота командой /newbot, вводим его имя, его логин и получаем токен (далее в статье НАШТОКЕН), который нужен для работы с ботом из скрипта для постинга. При необходимости, добавляем боту аватар, дополнительно настраиваем его, но это уже по желанию.

Когда бот будет готов, добавляем его в наш канал администратором. После того как бот будет добавлен в канал, узнаем ID канала, который нам так же потребуется для работы скрипта. ID узнаём следующим образом:

  1. После того как бот добавлен администратором, отправляем в канал любое сообщение.
  2. В браузере переходим по ссылке https://api.telegram.org/botНАШТОКЕН/getUpdates и видим текст, в котором находим кусок вида:
"chat":{"id":-1013332055484,

В данном случае, нужным нам ID канала будет -1013332055484 (именно так, со знаком минус).

Краткое резюме второго этапа — мы создали бота, получили его токен (НАШТОКЕН), добавили бота к себе в канал, узнали ID канала.

Постим изображения в канал с помощью бота.

Для постинга изображений мы будем использовать telegram bot api. Через бота, мы будем оформлять пост-картинку и отправлять его в канал с отключенным уведомлением. Такие запросы можно делать из браузера, но для скрипта мы используем wget (да, да, можно и curl, но я люблю wget) Вручную это выглядит примерно так (токен тут не существующий если что):

# wget "https://api.telegram.org/bot414612848:AAGs2pMUNCDIQIrHrABU8xYXGxXVzPcRSrI/sendPhoto?chat_id=-1013332055484&photo=https://d2lm6fxwu08ot6.cloudfront.net/img-thumbs/960w/6AE3CDF29F.jpg&caption=@superchannel&disable_notification=1"

Разберём что бы было понятно:

sendPhoto — отправляем изображение. chat_id=-1001132088554 — в наш канал. photo= — изображение берём по ссылке. caption= — добавляем текст к изображению. disable_notification= — отключаем уведомление для этого сообщения.

Если всё сделано верно, то наш бот, которого мы добавили в канал администратором, запостил изображение, с названием нашего канала в подписи к картинке. Теперь нам остаётся этот процесс автоматизировать.

Для этого мы будем использовать следующий скрипт. Разберём его самые важные моменты ниже.

У меня на сервере, создана следующая структура для работы этого скрипта:

В самом скрипте, используются следующие переменные:

botToken — полученный нами НАШТОКЕН. channelId — ID нашего канала. channelName — имя нашего канала. postImage — получение случайной ссылки из файла /opt/telegram/superchannel/food.url.list

Эти параметры вам нужно будет настроить в соответствии с вашим окружением и расположением файлов на сервере.

При запуске, скрипт выбирает случайный адрес изображения из файла food.url.list и отправляет в канал пост с ним. Из общего списка этот адрес удаляется, дабы избежать дублей в дальнейшем.

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

# chmod +x /opt/telegram/superchannel/postbot

Резюмирую третью часть — у нас есть сервер, на котором в нужной нам директории лежит скрипт постинга и файл со ссылками. В скрипте верно прописаны токен, ID канала, название канала и путь до файла. При ручном вызове скрипта, бот в канале постит одну картинку:

# /opt/telegram/superchannel/postbot

Автоматизируем постинг в нужное нам время.

Для автоматизации постинга достаточно просто добавить соответствующее задание в cron. Для редактирования заданий прямо из консоли выполняем команду:

# crontab -e

В открывшемся редакторе (какой будет редактор зависит от настроек админа сервера) мы вводим, например такое задание:

00 08,13,18 * * * /opt/telegram/superchannel/postbot

Сохраняем изменения и выходим из редактора.

Текущее правило будет запускать наш скрипт каждый день в 08, 13 и 18 часов по серверному времени. В это время на канале будет публиковаться один пост-картинка.

Подходя к завершению и резюмируя всё.

Мы идём на сайт фотостока и выбираем там нужную категорию. С помощью скрипта-загрузчика мы получаем список адресов картинок нужной нам категории сайта stocksnap.io. Затем, скрипт-бот выбирает случайную ссылку на изображение и постит её в наш канал, в заданное планировщиком время. Всё происходит без нашего участия. Нам остаётся только заниматься раскруткой канала (если такие каналы сегодня имеет смысл раскручивать конечно).

Примеры созданных и работающих таким образом каналов:

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

Вот такой вот кейс. Пользуйтесь, если он покажется вам полезным.

@SysadminNotes | https://sysadmin.pm

Мессенджеры * Tutorial

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

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

Зачем бот нам?

Tagvisor — сервис для поиска настоящих отзывов о заведении. Мы агрегируем их по геолокации, хэштегам и из официальных аккаунтов заведений в социальных сетях. Далее ранжируем по популярности (количеству и свежести постов в социальных сетях) и близости к пользователю.

Custdev показал, что наша целевая аудитория часто ищет места поблизости с телефона. Не любит просматривать больше 20 вариантов в результатах поиска, хочет сразу видеть отзывы, фото и отметку заведения на карте.

Логично было бы выкатить мобильное приложение, но цена разработки и порог входа для потенциального пользователя слишком высок для молодого стартапа. Решили пойти модным путем и в качестве mvp выпустили бота.

@TagvisorBot показывает ближайшие к вам заведение по выбранной категории. Как и в десктопной версии сервиса, основным контентом выдачи являются посты из социальных сетей.

Разработка

Для реализации был выбран Node.js и форк для модуля @node-telegram-bot-api, адаптированный для Telegram 2.0.

В основном использовали документацию API telegram и модуля node-telegram-bor-api. Для людей, любящих русскую документацию, есть перевод, но он еще в процессе. Также есть группа разработчиков со всей России в самом Telegram ) и в facebook. В группах всегда можно написать вопрос, обычно отвечают в течение пары дней.

Создание

Чтобы создать бота, в первую очередь, постучитесь к @botfather с командой /newbot. Он попросит написать имя бота и его username (которое должно заканчиваться на bot). При создание бота @botfather сообщит http-токен для api. Команды, начинающиеся с /set, помогут настроить различные параметры бота, такие как имя, описание, аватар, текст в профиль и описание. Все достаточно просто.

Для работы бота нужно выбрать режим обновлений: polling или WebHook.

  • в режиме WebHook сервер Телеграма будет отправлять данные вашему боту, каждый раз при поступлении запроса. Это удобный и надежный вариант, а, главное, быстрый, но, к сожалению, этот режим требует https-подключения и сертификата.
  • в режиме polling бот будет сам ходить на сервер Телеграма и забирать новые данные. Этот режим гораздо проще, но реакция бота будет не мнгновенной, а в среднем с полсекундной задержкой. Кроме того, нужно учесть, что иногда бывают сбои в ответе с сервера, поэтому бота следует сделать устойчивым к таким ошибкам.

Запуск бота

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

const TelegramBot = require('./lib/telegram.js'); const bot = new TelegramBot(‘YOUR_TOKEN’, {polling: true}); bot.getMe().then(function (me) {    console.log('Hi my name is %s!', me.username); });  

Вызов функции getMe() происходит при успешной авторизации токена бота и выдачи управления программе. При этом в качестве аргумента функция getMe().then() принимает функцию function(me). Ее первым аргументом является объект, с помощью которого можно получить различную информацию о вашем боте и, в данном случае, вывести её в консоль.

Далее, чтобы научить бота отправлять сообщения, нужно использовать метод bot.sendMessage(chatId, ‘Hello World!!!’); А чтобы бот понимал входящие запросы, достаточно использовать bot.on(‘message’, function (msg){}). Более подробно методы описаны в документации node-telegram-bot-api.

Красивые кнопочки

Чтобы вместо стандартной пользователь видел inline клавиатуру, необходимо при отправке сообщений передать методу sendMessage ее параметры:

const opt = {    parse_mode: 'markdown',    disable_web_page_preview: false,    reply_markup: JSON.stringify({        inline_keyboard: [            [{text: `Русский ${emoji.get('ru')}`, callback_data:'rus'}, {text: `English ${emoji.get('gb')}`, callback_data:'eng'}]        ]    }) } bot.sendMessage(chatId, 'language?',opt); 

Где text — текст на кнопке, callback_data — данные, которые получит бот при нажатии на кнопку.

Соответственно, чтобы отловить события нажатия на определенную кнопку, нужно воспользоваться методом.

bot.on('callback_query', function (msg) { if (msg.data === 'rus'){ console.log(“Russian”); } if (msg.data === ‘eng’){ console.log(“English”); } });  

Изменение сообщения

Иногда требуется не отправлять заново сообщения, а поправить уже существующее (для удобства отображения данных). Для этого мы решили воспользоваться методом bot.editMessageText(text, opt); где text — измененный текст сообщения, opt — Дополнительные опции для запроса к telegram, такие как наличие клавиатуры, форматирование текста и другое.

Отправка текста и фото в одном сообщении

Стандартный метод sendPhoto не подходит, так как имеет ограничения на количество символов в тексте и другое форматирование – текст пишется под фото. Поэтому мы использовали sendMessage и просто вставили в текст сообщения ссылку на нужную картинку.

Чтобы телеграм подгрузил картинку в сообщение, необходимо установить параметр disable_web_page_preview: false.

var opt = {    chat_id: chatId,    parse_mode: 'markdown',    disable_web_page_preview: false, reply_markup = JSON.stringify({    inline_keyboard: [..] }) } 

Для форматирования текста нужно установить параметр parse_mode. Он имеет два значения: markdown и html. При значении markdown используется форматирование вида:

*bold text*         _italic text_         [text](URL)         `inline fixed-width code`         ```pre-formatted fixed-width code block``` const text = ‘[текст](url)’; bot.sendMessage(chatId, text); 

Магазин ботов

Чтобы всю эту красоту увидел мир, а не только ваши пользователи, вы можете написать статью на хабр загрузить вашего бота в магазин ботов – storebot.

Регистрация и публикация простая – достаточно залогиниться на сайте storebot.met и после «далее-делее-готово» нажать в меню «AddBot». Это вам не модерация в AppStore.

Бонус для самых классных

Итак, при помощи нашего небольшого туториала вы смогли узнать, как сделать бота в телеграме. Надеемся, он был вам полезен. А если вы крутой разработчик, и все это было для вас очевидным, тогда приглашаем поучаствовать в небольшом челлендже: как мы уже писали выше, у Tagvisor есть еще и десктопная версия, которую мы на днях запустили в тестовом режиме. И тому, кто найдет больше всех багов (в верстке, коде, мобильной-версии), мы организуем доставку трех больших пицц. Найденные баги присылайте на почту bugtracker@tagvisor.com.

Боты для телеграмма сейчас весьма популярны, давайте и мы научимся делать своих.

ЯП который мы будем использовать, как всегда Python. Напишем простого бота, который по заданной команде будет присылать нам котиков, а еще добавим кнопку, чтобы не вводить команды каждый раз.  Вот рабочий пример (надеюсь к моменту твоего прочтения, я его еще буду хостить). И итог того, что должно получиться:

Подготовка

Для начала мы будем исходить из того, что  Python3 уже установлен и из командной строки прекрасно работает >_ python и  >_ pip. Сидим мы из под Linux или Windows неважно. Для работы с телеграмом будем использовать эту библиотеку, для установки необходима командная строка с правами администратора. И ввод одной команды.

pip install python-telegram-bot –upgrade

Ну или двух :).   pip install requests

Также нужно создать непоcредственно самого бота и получить токен, для этого нужно написать в самом телеграмме @BotFather’у /newbot и следовать инструкциям. В конце вы получите токен, который уже можно использовать.

Красным подчеркнут ник по которому можно обратиться к боту и токен для работы с API

Не забудем и про добавление команды

Пишем код

В принципе, многое уже и так есть в примерах в репозитории и заново ничего придумывать не надо, мы лишь изменим и дополним то, что уже есть. И так поехали, берем из примеров простого бота echobot2, который уже умеет отвечать на все сообщения и знает команды /help /start. Отвечалку на все сообщения мы изменим, команды тоже немного поменяем и добавим свою /cat, которая собственно и будет постить котиков :3. Для начала подставляем ранее полученный токен, необходимый для работы.

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

По тому же принципу добавим свою команду строкой  dp.add_handler(CommandHandler(“cat”, sendcat)), где cat — это команда , sendcat — вызываемая функция при получение данной команды.

Изменим отправляемый текст на сообщение об ошибке

Также изменим отправляемый текст на /start и /help

Украшательства закончены. Приступим к котикам :). Котики у нас будут состоять из двух функций. Первую вы уже видели в хендлере — sendcat, она будет отвечать за отправку, но встает вопрос, а что же нам собственно отправлять? Тут мы будем использовать вторую функцию getcat которая будет отвечает за предоставление ссылок на картинки с котиками, брать которые мы будет с сайта  thecatapi. Его апи позволяет получать ссылки на случайные картинки с котами, чем мы и воспользуемся. Подключаем библиотеку requests и  пишим простенькую функцию выдающию ссылки на картинки с котиками. Потом просто вызываем ее в sendcat.

Проверим что получилос. Запускаем наш скрипт,  ищем в телеграмме бота по нику, который вы задали ему при создании и… Котики !!!

Уже неплохо, но что-то все равно не то. Мы отправляем котов не как картинки, а как ссылки, телеграм конечно их подгружает и показывает, но решение так себе. Исправим же это, открываем документацию по работе с апи телеграма для ботов и ищем метод отправки картинок.

Кажется это то, что мы ищем

Возвращаемся обратно и в функции sendcat  заменяем всю строку отправки сообщения на bot.sendPhoto(chat_id=update.message.chat_id, photo=getcat())

Результат

Почти все готово, осталось сделать кнопку в чате, чтобы не вписывать постоянно команду вручную. Использовать мы будем Inline клавиатуру (прямо в чате которая), она состоит из двух функций: первая отвечает за отрисовку (markup), вторая за обработку нажатий (callback). Снова идем в примеры, которые даются авторами библиотеки, вытаскиваем вот это и переделываем под себя. Кое-что доподключаем:

В итоге получается

Проверяем

Исходный код

import requests from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler import logging  # Enable logging logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',                     level=logging.INFO)  logger = logging.getLogger(__name__)   # Define a few command handlers. These usually take the two arguments bot and # update. Error handlers also receive the raised TelegramError object in error. def start(bot, update):     """Приветствие"""     update.message.reply_text('Привет, я бот, который очень любит котиков :3nНапиши мне /cat и я поделюсь ими с тобой')   def help(bot, update):     """Сообщение для помощи с командами"""     update.message.reply_text('Чтобы получить котика напиши /cat')   def echo(bot, update):     """На любой текст отвечаем ошибкой"""     update.message.reply_text("Неизвестная команда :(")   def error(bot, update, error):     """Log Errors caused by Updates."""     logger.warning('Update "%s" caused error "%s"', update, error)  def getcat():     '''Получение ссылки на картинку с котиком'''     try:         r = requests.get('http://thecatapi.com/api/images/get?format=src')         url = r.url     except:         url = get_cat()         print('Error with cat parsing')         pass     return url  def sendcat(bot, update):     """Отправка котиков"""     bot.sendPhoto(chat_id=update.message.chat_id, photo=getcat(), reply_markup=draw_button()) def draw_button():     keys =[[InlineKeyboardButton('?Еще котика?!?', callback_data='1')]]     return InlineKeyboardMarkup(inline_keyboard=keys) def get_callback_from_button(bot, update):     query = update.callback_query     username = update.effective_user.username     chat_id = query.message.chat.id     message_id = query.message.message_id     if int(query.data) == 1:       bot.sendPhoto(photo=getcat(),                           chat_id=chat_id,                           message_id=message_id,                           reply_markup=draw_button()) def main():     """Start the bot."""     # Create the EventHandler and pass it your bot's token.     updater = Updater("СЮДА ВАШ ТОКЕН")      # Get the dispatcher to register handlers     dp = updater.dispatcher     dp.add_handler(CallbackQueryHandler(get_callback_from_button))     dp.add_handler(CommandHandler("start", start))     dp.add_handler(CommandHandler("help", help))     dp.add_handler(CommandHandler("cat", sendcat))      # on noncommand i.e message - echo the message on Telegram     dp.add_handler(MessageHandler(Filters.text, echo))      # log all errors     dp.add_error_handler(error)      # Start the Bot     updater.start_polling()      # Run the bot until you press Ctrl-C or the process receives SIGINT,     # SIGTERM or SIGABRT. This should be used most of the time, since     # start_polling() is non-blocking and will stop the bot gracefully.     updater.idle()   if __name__ == '__main__':     main()

F.A.Q

  • Q: Т.к бот каждый раз запрашивает картинку, а потом еще и загружает ее в мессенджер, уходит масса времени. Как ускорить выдачу ответов?
  • A: Решение — использовать сервера Telegram, как кеш. Сохраняйте при отправке фото их media_id (куда нибудь в бд), чтобы потом можно было быстренько его оттуда вытянуть и отправить.
  • Q: А как сделать ребут, админку, оформить тексты т.д ?
  • A: Здесь есть отличные сниппеты
  • Q: Как осуществить … ?
  • A: Документация Telegram bot api, Вики библиотеки

image Обновлено: 05.11.2019 Лайфхаки

Telegram на фоне других мессенджеров и социальных сетей имеет массу приемуществ. Одним из наиболее важных по мнению пользователей является возможность отправлять фото и видео в телеграм без сжатия.  При этом без разницы на какое устройство отправлять фото, на андроид, айфон или вообще на компьютер (ПК).

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

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

Главным секретом отправки фото и видео без сжатия, является — отправка в виде обычного файла

Первым делом рассмотрим отправку фото и видео в мессенджере на смартфоне под управлением ОС Android

Как отправить фото без сжатия в телеграм на Android

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

  1. Нажимаем на традиционную «Скрепку» вместо фотоаппарата
  2. Далее идем в пункт «Галлерея» или Gallery если у вас телеграм на английском языке

    image

  3. После этого вы увидите список недавно сделанных фотографий и видео. Что бы отправить несколько, нужно зажать любое фото. Под списком недавно сделанных фото будут кнопки направляющие вас во всю галлерею, или ко всем папкам вашего андроид смартфона
  4. После выбора нажимаем на голубой треугольник, и отправляем выбранные фото без сжатия

image

Как фото в телеграм без потери качества на iphone

Больших отличий между отправкой файлов на айфоне или на андроиде нет. Для того что бы отправить фото нужно:

  1. Нажать на скрепку
  2. Перейти в раздел отправки фото или видео

    image

  3. Далее переходим в раздел «Файл», так как мы отправляем фото без сжатия
  4. Profit. Теперь можно выбирать необходимые медиафайлы для отправки их по телеграм без потери качества. После чего нажимаем «Отправить»

    image

Мы описали процесс передачи фотографий и видеозаписей между двумя телеграм каналами. Кстати мало кто знает что таким способом можно отправить файлы себе между устройствами, используя телеграм как некое хранилище. Для этого достаточно будучи авторизованным в обоих клиентах телеграм (на компьютере и телефоне) отправить файлы указанным выше способом себе в «Избранное».

Отправка фото без сжатия в Telegram через ПК

В отличии от двух выше описанных способов на компьютере фото и видео отправляются в 3 клика. Один тратиться на то, что бы нажать на «скрепку», второй что бы выбрать необходимые фотографии, и третий на то, что бы отправить их именно в виде файлов.

Выглядит это все следующим образом

image

Как видно из скрина выше, вместо выбора «Отправки альбомом» и «Отдельной отправкой фото». Выбран способ передачи фото с сохранением качества изображений. То есть в виде файла.

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий