Бот который делает стикеры в Телеграмме

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

Что такое автоматический бот

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

Следуя им, легко сделать новый пакет приколов. Далее программа выдает ссылку на sticker pack. Ее можно отправлять в других чатах. Рассылка наклеек помогает сделать их популярными и узнаваемыми.

Боты помогают создать stickers из картинок или из любимых наборов. Для этого нужно загрузить исходные данные в программу и запустить обработку. Через 2-3 минуты появляются новые пакеты.

Slicker — телеграм бот для создания анимированных стикеров

Создаете много стикеров, а после не можете их найти? Сохраняйте все паки в одном месте! Воспользуйтесь сервисом мультиссылок от Хиполинк и сделайте страницу для хранения эмодзи! Услуга бесплатная.

Список проверенных ботов

Эти боты бесплатные и безопасные, но открытие сторонних ссылок и предоставление персональных данных третьим лицам не рекомендуется.

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

Принцип использования разработок по созданию стикеров примерно одинаков:
— Запустите любой бот в Телеграмме.
— Нажмите «Start».
— Отправьте боту фото или смайлик для образца.
— Следуйте дальнейшим инструкциям.
— В конце откройте линк и сохраните набор.

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

Как сохранить все паки стикеров в одном месте

Если создаете много стикеров в Телеграмме, можно легко запутаться в ссылках или потерять нужные. Чтобы сохранить все линки в одном месте, воспользуйтесь сервисом Хиполинк. Конструктор предоставляет удобную услугу по созданию мультиссылки. В нее можно добавить множество страниц для сохранения их в одном месте. В дальнейшем линк отправляется в чатах и других ресурсах.

Юзеры переадресовываются в отдельное окно браузера. Вкладка открывает доступ к списку ссылок на наборы. Можно добавить оригинальные названия.

Источник: hipolink.net

Как сделать стикеры в Телеграм с нуля

Аськи и jabber ушли в далекое прошлое со своими классическими смайлами. Сейчас в тренде соцсети и мессенджеры, в которые встроены комплекты стикеров. Поговорим о том, как сделать свои стикеры в Телеграм самому, в том числе с телефона.

как сделать стикеры в телеграме | как создать стикерпак для телеграмма #телеграмбот

Загляните в наш Каталог: Телеграм каналы с удобной сортировкой по категориям и странам.

Содержание:

картинка: как сделать стикеры для телеграм

  • Как сделать стикеры в Телеграм через бота
  • Что еще может робот?
  • Самый простой и быстрый способ сделать стикеры в Телеграм с телефона

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

Итак, как быть, если хочется эксклюзива в плане стикеров? Варианта два: заказать их у дизайнеров или создать самостоятельно. Если вы выбрали второй вариант, то разберемся, как сделать стикеры в Телеграм.

Сначала поговорим о боте-помощнике, а потом о том, как без специальных навыков сделать стикер пак.

Главное – учитывать требования программы:

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

Еще по теме:  Как подключиться к чату в Телеграмме по названию

Телеграм бот принимает исключительно png.

  • Авторское право.

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

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

  • Добавляйте белую обводку и тени.
  • Нужно сделать прозрачный фон.
  • Загружайте изображение через приложение на ПК (не имеет значения это Linux, macOS или Windows) или с помощью веб-версии.

Рекомендуем нашу статью обо всех секретах Телеграм онлайн.

Интересно: при обработке собственной будущей наклейки желательно пользоваться фотошопом, т.к. Телеграм высылает качественный psd-шаблон для образца. Его вам выдаст бот.

Как происходит создание собственных стикеров и масок в Telegram

Итак, изображение мы отрисовали. Остается сделать только одно — завязать интеллектуальную беседу с ботом:

— пишем /start, чтобы начать;

— добавляем запрос, чтобы сделать маски — /newmasks или набор наклеек — /newpack;

— даем название своей творческой работе;

— загружаем отфотошопленный материал;

— настраиваем: для наклейки подбираем эквивалентный Телеграм эмодзи, а для маски указываем месторасположение на лице;

— набираем /publish, чтобы сохраниться;

— придумываем короткое название.

Готово!

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

бот для создания стикеров в телеграм

Что еще может сделать робот

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

/addsticker Дополняет набор новыми иллюстрациями
/ordersticker Меняет последовательность картинок
/editsticker Редактирует смайлы и маски
/delsticker Удаляет отдельно взятый рисунок
/delpack Удаляет весь пакет

Если хочется узнать, какие миниатюры самые ходовые или насколько определенный комплект популярнее другого, открываем в Телеграм диалог с роботом: /start. Придется сделать небольшой допрос:

/stats Статистика по отдельному стикеру в Телеграм
/top Топ стикеров
/packstats Статистика по набору стикеров
/packtop Топ наборов
/topbypack Топ стикеров в наборе
/packusagetop Статистика использования Ваших наборов

Самый простой и быстрый способ сделать стикеры в Телеграм с телефона

Этот способ актуален для тех, кто очень хочет сделать свои стикеры для Телеграм, но не владеет графическими редакторами.

Используя свой смартфон, вы можете создать неограниченное количество Telegram-стикеров!

  • Зайти в App Store или Google Play;
  • Ввести в строку поиска «стикеры для Телеграм» или «Stickers for Telegram».

Эти специальные программки действуют по схожему принципу. Вам нужно загрузить в приложение картинку, а затем программа подскажет, как вытереть фон и сохранить готовый результат.

картинка: сделать стикеры для телеграм с телефона

Таким образом, вы даже можете сделать набор из собственных фото!

После чего останется лишь переслать боту в Телеграм ваши творения по алгоритму из первого пункта.

Если сделать стикеры с нуля для вас слишком сложная задача, просто воспользуйтесь нашим огромным Телеграм Каталогом!

Также вам может пригодиться наша статья о поиске стикер-паков.

Приятного использования Телеграм!

Источник: tgrm.su

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

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

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

Концепт идеи прост: пользователь пересылает сообщение в диалог с ботом, бот создает стикер.

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

  • никаких баз данных, даже встроенных;
  • никаких промежуточных файлов, стараемся делать все в памяти.
  • вся информация хранится в Telegram, у бота нет данных — не нужно думать о резервном копировании;
  • для запуска бота нужен только код и файл конфигурации;
  • бот может быть запущен даже на Raspberry Pi (кстати, сервер с этим одноплатником можно получить в Selectel в течение часа).
Еще по теме:  Как понять что в Телеграмме прочитано твое сообщение

Основа

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

Представленный в статье код адаптирован для объяснения в контексте статьи. Ссылка на оригинальный исходный код будет в конце.

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

def on_message_received(update: Update, context: CallbackContext): # Игнорируем все события, кроме получения сообщения if not update.message: return # Если идентификатор чата не равен идентификатору отправителя, # то бота включили в группу. Игнорируем. if update.message.chat_id != update.message.from_user.id: return # Синтетическое ограничение: хотим работать только с пересланными сбщ if not update.message.forward_from: update.message.reply_text(«Only forwarded messages supported!») return print(update.message)

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

import toml from telegram.ext import Updater, MessageHandler, Filters config = toml.load(‘dsb.toml’) bot = Updater( token=config[«telegram»][«token»] ) bot.dispatcher.add_handler( MessageHandler(Filters.update.message, on_message_received) ) bot.start_polling() bot.idle()

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

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

< ‘message_id’: 391, ‘date’: 1640260315, ‘chat’: < ‘id’: 00000001, ‘type’: ‘private’, ‘username’: ‘someone-s-username’, ‘first_name’: ‘Пример’, ‘last_name’: ‘Примерыч’ >, ‘forward_from’: < ‘id’: 0000002, ‘first_name’: ‘Иван’, ‘is_bot’: False, ‘last_name’: ‘Иваныч’, ‘username’: ‘totally-not-a-bot’, ‘language_code’: ‘en’ >, ‘forward_date’: 1640259241, ‘text’: ‘пример!’, ‘entities’: [], ‘caption_entities’: [], ‘photo’: [], ‘new_chat_members’: [], ‘new_chat_photo’: [], ‘delete_chat_photo’: False, ‘group_chat_created’: False, ‘supergroup_chat_created’: False, ‘channel_chat_created’: False, ‘from’: < ‘id’: 00000001, ‘type’: ‘private’, ‘username’: ‘someone-s-username’, ‘first_name’: ‘Пример’, ‘last_name’: ‘Примерыч’, ‘language_code’: ‘ru’ >>

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

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

# получаем первую (текущую) аватарку пользователя result = context.bot.get_user_profile_photos( update.message.forward_from.id, limit=1 ) # type: UserProfilePhotos # Обрабатываем ситуацию, когда аватарки нет, или она скрыта настройками приватности if result.total_count > 0: file = context.bot.get_file(result.photos[0][0].file_id) # type: File

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

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

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

Рисуем стикер

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

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

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

# Импортируем шрифт, кегль 26 OPEN_SANS = ImageFont.truetype(‘OpenSans.ttf’, 26) # Разбиваем сообщение на строки из расчета, # что в одной строке не больше 30 символов text = textwrap.wrap(update.message[«text»], width=30) # Получаем высоту шрифта font_height = OPEN_SANS.getsize(text[0])[1] # Рассчитываем высоту картинки height = font_height * (len(text) + 1) + 2*BUBBLE_PADDING if height > 512: raise OverflowError(«Image too big»)

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

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

# Скачиваем аватарку как массив байт data = file.download_as_bytearray() # Класс Image из Pillow умеет читать только из потоков, # создаем виртуальный байтовый поток avatar = Image.open(BytesIO(data)) # type: Image.Image # Аватарки в Телеграме квадратные, поэтому просто масштабируем # до желаемого размера size = (AVATAR_SIZE, AVATAR_SIZE) avatar = avatar.resize(size, Image.ANTIALIAS) # Создаем круглую маску mask = Image.new(‘L’, size, 0) draw = ImageDraw.Draw(mask) draw.ellipse((0, 0) + size, fill=255) # Заполняем прозрачным по маске avatar = ImageOps.fit(avatar, mask.size, centering=(0.5, 0.5)) avatar.putalpha(mask)

Еще по теме:  Как зайти в Телеграм если была утерена симка

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

# Создаем изображение img = Image.new(‘RGBA’, (width, height), color=(255, 255, 255, 0)) # Создаем холст, на котором рисуем d = ImageDraw.Draw(img) # Если есть аватарка – вставляем, если нет – рисуем синий круг if avatar: img.paste(self.avatar, (0, 0)) else: d.ellipse((0, 0, AVATAR_SIZE, AVATAR_SIZE), fill=»blue») # Рисуем черный пузырек d.rounded_rectangle((BUBBLE_X_START, 0, width, height), fill=»black», radius=BUBBLE_RADIUS) # Первая строка – розовый заголовок, имя d.text( (TEXT_X_START, BUBBLE_PADDING), update.message.forward_from.first_name, fill=»pink», font=OPEN_SANS ) # Вторая и последующие строки – текст сообщения offset = BUBBLE_PADDING + font_height for line in self._text: d.text((TEXT_X_START, offset), line, fill=»white», font=OPEN_SANS) offset += font_height

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

sticker = BytesIO() # Для прозрачности сохраняем в PNG img.save(sticker, ‘PNG’) # Отматываем поток на начало, чтобы из него можно было считать sticker.seek(0);

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

Заполнение набора стикеров

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

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

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

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

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

# id пользователя + соль sid = f»-» # Генерируем uuidv5 и конвертируем в строку uid = str(uuid.uuid5(uuid.NAMESPACE_X500, sid)) # Удаляем дефисы uid = uid.replace(«-«, «») # В качестве буквенного префикса используем s sticker_set_name = f»s_by_»

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

context.bot.add_sticker_to_set( user_id=update.message.from_user.id, name=sticker_set_name, emojis=DEFAULT_EMOJI, png_sticker=bio )

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

# get_sticker_set выбросит исключение, если набора нет. # Это можно использовать для определения, когда нужно создать набор. sticker_set = context.bot.get_sticker_set(sticker_set_name) # type: StickerSet # Наборы ограничены по 120 стикеров if len(sticker_set.stickers) >= 120: update.message.reply_text(«Sticker set is full») return # Добавляем! context.bot.add_sticker_to_set( user_id=update.message.from_user.id, name=sticker_set_name, emojis=DEFAULT_EMOJI, png_sticker=bio )

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

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

sticker_set = context.bot.get_sticker_set(sticker_set_name) # type: StickerSet update.message.reply_sticker(sticker_set.stickers[-1])

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

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

Заключение

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

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

Исходный код доступен на GitHub.

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...