Как сделать стикеры из сообщений в телеграмме
Перейти к содержимому

Как сделать стикеры из сообщений в телеграмме

  • автор:

Фонд золотых цитат: генерируйте стикеры из сообщений в Telegram

Рассказываем, как сделать стикер-бота без лишних телодвижений, и отдаем свое творение на тест.

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

Схема рабочая, но напрашивается идея минимизировать количество пересылок. Тем более, что в Telegram существуют боты, создающие пользовательские стикерпаки. Концепт идеи прост: пользователь пересылает сообщение в диалог с ботом, бот создает стикер.

Чтобы было интереснее, введем дополнительные ограничения:

  • никаких баз данных, даже встроенных;
  • никаких промежуточных файлов, стараемся делать все в памяти.

Такой подход усложняет разработку бота, но значительно упрощает его эксплуатацию:

  • вся информация хранится в Telegram, у бота нет данных — не нужно думать о резервном копировании;
  • для запуска бота нужен только код и файл конфигурации;
  • бот может быть запущен даже на Raspberry Pi.

Сервер с «малинкой» можно получить в Selectel в течение часа после заказа. Всего за 499 рублей в месяц.

→ Потестить на каникулах

Для разработки я выбрал язык Python версии 3.8. Сперва сделаем основу бота, которая получает сообщения и выводит доступную информацию.

Итак, регистрируем нового бота или используем старого. Все операции с ними производятся через официального BotFather. Для начала хватит идентификатора бота (username) и токена для API.

Представленный в статье код адаптирован для объяснения в контексте статьи. Ссылка на оригинальный исходный код будет в конце.Для Bot API уже есть обертка, названная python-telegram-bot. В статье используется версия 13.4.1. Создаем простой обработчик текстовых сообщений:

Создаем бота и регистрируем обработчик.

Теперь боту можно переслать любое сообщение, и он выведет в stdout данные, которые ему доступны.

Вывод обработчика без чувствительных данных:

В представленном выводе доступна следующая информация:

  • forward_from — информация об авторе пересланного сообщения;
  • text — текст пересланного сообщения.

Для того, чтобы нарисовать «пузырек» сообщения, не хватает лишь аватарки. Получаем ее парой отдельных вызовов:

Вызов get_user_profile_photos() возвращает двумерный массив записей типа File. Первое измерение задает количество аватарок у пользователя, но не больше limit. Второе измерение задает аватарку разных размеров. В нашем случае достаточно забрать первую попавшуюся картинку, но для оптимизации стоит сразу выбирать картинку подходящего разрешения.

Объект file имеет метод download_as_bytearray(), что позволяет загрузить аватарку в память без использования промежуточных файлов.

Теперь, когда есть необходимая информация, можно нарисовать «пузырек».

Пример созданного изображения

Для рисования используем библиотеку Pillow версии 8.4.0. Шрифт — OpenSans, такой же используется в официальных приложениях Telegram.

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

Функция textwrap.wrap() разбивает строку на массив строк, пытаясь сделать перенос по пробелам. Расчет высоты картинки прост:

  • отступ от начала — BUBBLE_PADDING, в моем случае 10px;
  • имя отправителя — font_height;
  • сообщение — font_height * len(text);
  • отступ до конца — BUBBLE_PADDING.

Если сообщение большое, то высота картинки может получиться больше 512 пикселей. В этом случае наши полномочия — лапки, выбрасываем исключение. Если размер меньше, то можем продолжать. Проверяем наличие аватарки у пользователя и адаптируем ее к нашему стикеру.

Теперь у нас есть сообщение и аватарка. Создаем «холст» и начинаем рисовать. Обязательно выбираем цветовой режим RGBA и делаем прозрачный (alpha = 0) основным цветом «холста».

Финальный штрих — сохранить изображение. Так как мы все держим в памяти, то сохраняем также в виртуальный байтовый поток.

Осталось совсем немного: загрузить стикер в Telegram и передать его пользователю.

Те, кто создавал собственные наборы, знают, что для всех операций со стикерами необходимо обращаться к боту Stickers. Однако, в Bot API есть набор вызовов для взаимодействия со стикерами, в том числе функция создания набора. Созданный ботом набор стикеров имеет следующие особенности:

  • уникальное имя набора (используется в ссылках вида https://t.me/addstickers/<имя>) обязательно должно заканчиваться на _by_%BOT_USERNAME%;
  • набор стикеров принадлежит пользователю и может быть отредактирован через бота Stickers;
  • для управления набором стикеров через бота требуется его уникальное имя и идентификатор пользователя.

Как упоминалось ранее, бот должен работать без базы данных. Таким образом, уникальное имя набора должно быть вычисляемым. Самый простой способ — использовать идентификатор пользователя в имени набора. Однако это некорректно: любой пользователь набора стикеров может «вычислить» автора.

Имя бота в уникальном имени набора неявно используется для аутентификации действий бота. Так, зная идентификатор пользователя, произвести деструктивные действия с набором не получится.

Эта «особенность» исправляется хэшированием. Мне показалось подходящим использовать UUIDv5, который использует SHA-1 для хэширования. Правда, UUIDv5 не соответствует сразу двум ограничениям Telegram:

  • может начинаться с цифры;
  • имеет запрещенные символы — дефисы.

Первая проблема решается префиксом, а вторая — удалением запрещенных символов. Таким образом, UUIDv5 от идентификатора пользователя — отличное вычисляемое решение. А чтобы усложнить угадывание автора, можно добавить «соль» к идентификатору.

Теперь у нас все есть, создаем набор с первым стикером.

Если функция вернула True, то стикерпак создан. Если мы хотим добавить еще один стикер, то сперва набор нужно найти.

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

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

Вот и все, бот готов.

Конечно, это далеко не продуктовый вариант, так как Emoji не поддерживаются, существует ограничение на 120 стикеров на человека и совершенно нет кастомизации сообщений. Но для начала сойдет.

Еще один маленький шажок для автоматизации рутинных процессов.

Генерация стикеров — не самый популярный случай, но, если вдруг захочется автоматизировать, теперь вы знаете как. Для быстрого тестирования можете использовать моего бота: ohmyquotebot (если что, он не будет жить вечно).

Бот не отвечает на команду /start, так что не волнуйтесь и просто пересылайте ему сообщение, из которого хотите сделать стикер.

Как сделать стикеры в ТГ из сообщений

Стикеры в Telegram — это веселые и красочные изображения, которые можно использовать в чатах, группах и каналах. Их создание не является трудоемким процессом, и вы можете создавать свои стикеры прямо из сообщений в Telegram, используя несколько простых способов. В этом гайде мы рассмотрим различные способы создания стикеров в Telegram, включая:

  • Создание стикеров из сообщений используя StickerizerBot
  • Создание стикеров с телефона в Telegram
  • Создание стикеров на iPhone в Telegram
  • Создание стикеров из фото в Telegram
  • Использование приложения Sticked для создания стикеров из любых изображений и текста.

Создание стикеров из сообщений используя StickerizerBot

StickerizerBot — это бот Telegram, который позволяет создавать стикеры напрямую в чате. Этот бот очень легко использовать, и вы можете создать собственные стикеры всего за несколько секунд. Вот как это сделать:

  1. Откройте любой чат, группу или ваш канал.
  2. Введите название бота @stickerizerbot с пробелом после него.
  3. Напишите любой текст и подождите, пока сформируется стикер.
  4. Нажмите на стикер, чтобы его отправить.

Создание стикеров с телефона в Telegram

Если вы хотите создать свои стикеры, то вам необходимо загрузить приложение для создания стикеров в Telegram на свой телефон. Для этого введите запрос «создание стикеров Telegram» или «telegram stickers» в поисковик магазина приложений на своем телефоне. Установите любое понравившееся приложение и следуйте инструкциям для создания своих стикеров.

Создание стикеров на iPhone в Telegram

Владельцы iPhone могут легко создавать свои собственные стикеры для Telegram прямо из приложения «Фото». Вот, как это сделать:

  1. Откройте нужную картинку на iPhone в приложении «Фото».
  2. Удерживайте палец на объекте до его отделения на изображении.
  3. Переключитесь на Telegram другим пальцем.
  4. Перетащите объект на поле ввода текста и отпустите палец.
  5. Бот распознает стикер и предложит добавить его в стикерпак.

Создание стикеров из фото в Telegram

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

  1. Выбрать картинки или фотографии, которые вы хотите использовать в качестве стикеров.
  2. Проверить, что изображения соответствуют требованиям Telegram (разрешение не выше 512х512 пикселей, формат png).
  3. Загрузите изображения в социальную сеть через Telegram бота для стикеров.
  4. Найдите и добавьте новый стикерпак в свои наборы.

Использование приложения Sticked для создания стикеров из любых изображений и текста

Sticked — это приложение для создания стикеров, которое позволяет вам создавать стикеры из любых изображений и текста. Вы можете создавать целые стикерпаки из фотографий своих друзей или домашних питомцев. Используя Sticked, вы можете создавать стикеры абсолютно бесплатно и легко делиться ими с другими пользователями Telegram.

Полезные советы и выводы

  • Размер стикеров не должен превышать 512х512 пикселей и они должны быть в формате png.
  • Если вы пользуетесь iPhone, то создание стикеров станет еще проще благодаря приложению «Фото».
  • Если вы хотите создавать стикеры профессионального качества, используйте приложение Sticked.
  • Используйте StickerizerBot для быстрого создания стикеров прямо в чате.
  • Не забудьте проверить качество изображения перед созданием стикера.
  • Создавайте свои уникальные стикеры, чтобы сделать чаты с друзьями или коллегами еще более веселыми и увлекательными.

Как создать стикеры в Телеграм через телефон

Далее нужно открыть «Photo & Picture Resizer» и найти созданное в предыдущем приложении фото в разделе «Мои файлы». После открытия фото в этом приложении, нажмите на «Изменить» и выберите «Размер изображения». Затем выбираем размер 512×512 пикселей и сохраняем результат. После этого нажимаем на кнопку «Сохранить изменения» и выбираем папку для сохранения измененного фото. Возвращаемся в приложение «Мой стикер Maker». Нажимаем на значок «+» в правом верхнем углу и выбираем «Загрузить из галереи». Находим созданное ранее фото в галерее и выбираем. Затем прикрепляем фото к стикерпаку и добавляем название. Нажимаем кнопку «Сохранить» и готово! Теперь вы можете использовать свои созданные стикеры в Телеграме.

Как сделать стикеры в Телеграме со своими фотками

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

Сначала нажмите на объект на фотографии, который вы хотите вырезать, и удерживайте палец на нем, пока он не выделится белым цветом по контуру. Затем, чтобы отделить этот объект от фона, зажмите его одним пальцем и слегка сдвиньте изображение в сторону.

После этого откройте Телеграм с помощью другого пальца и перетащите фотографию в окно ввода. Бот в Телеграме превратит этот объект в стикер.

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

Как создать стикеры в ДС на телефоне

Для создания собственных стикеров в Discord на телефоне можно воспользоваться следующей инструкцией:

  1. Откройте приложение Discord на своем телефоне и выполните вход в аккаунт.
  2. Перейдите в тот текстовый канал, в котором вы хотите использовать стикеры.
  3. Нажмите на символ смайла, который находится рядом с опцией GIF или просто на кнопку GIF, если таковая имеется.
  4. В появившемся окне выберите нужный стикер из предложенных вариантов и добавьте его к сообщению.
  5. При желании можно удерживать клавишу SHIFT и добавлять сразу несколько стикеров.

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

Как сделать свой стикеры на айфоне

В открывшемся меню выберите «Стикери», а затем коснитесь кнопки «Создать».

  1. Обрежьте изображение по желанию, а затем коснитесь кнопки «Готово».
  2. Выберите место для сохранения стикера: в альбоме «Стикеры» или в приложении «Фото».
  3. Введите имя для стикера и коснитесь кнопки «Готово».
  4. Теперь ваш стикер будет доступен в разделе «Стикеры» в приложении «Сообщения».
  5. Чтобы использовать стикер в чате, откройте приложение «Сообщения», выберите чат и коснитесь значка стикеров в нижнем левом углу клавиатуры.
  6. В разделе «Стикеры» выберите нужный стикер и отправьте его собеседнику.

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

StickerizerBot — это бот, который позволяет создавать стикеры из текста прямо в чате. Для этого нужно выбрать любой чат, группу или свой канал и ввести название бота — @stickerizerbot. Затем через пробел написать любой текст и подождать, пока бот сформирует соответствующий стикер. Далее, чтобы отправить стикер, достаточно нажать на него. В результате получается удобный способ создания персональных стикеров для использования в различных ситуациях. Это может быть использовано как для развлечения, так и для более серьезных целей — например, для создания визуальных инструкций или для общения в виртуальной командной работе. В целом, StickerizerBot это простой и удобный инструмент для создания стикеров в Telegram.

StickerizerBot — как создать стикеры из текста прямо в чате

Сегодня расскажем вам о боте, который создает стикеры из вашего текста — @StickerizerBot. Бот работает в инлайн режиме, а это значит, что его можно запустить только в чате.

Как пользоваться ботом

1. Выберите любой чат, группу или ваш канал и введите название бота @stickerizerbot.

2. Через пробел напишите любой текст и подождите пока сформируется стикер.

3. Нажмите на стикер, чтобы его отправить.

Также есть возможность изменить цвет текста и фон стикера. Ниже приведена таблица доступных форматов:

Для этого введите @StickerizerBot, затем код, который указан в таблице и текст. Например:

@stickerizerbot #43 привет, как дела?

В итоге мы получим вот такой стикер:

Используйте только один из доступных форматов кода, комбинировать их невозможно.

В Desktop версии Telegram бот может работать не совсем корректно и иногда не видно предпросмотр стикера. Но вы все равно можете нажать на пустое место, чтобы отправить стикер.

Подписывайтесь на канал Вам Телеграм — актуальные новости, полезные статьи и советы по работе с Telegram.

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

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