Разработка
Kokoulin Nikolay

Нормальная инструкция по созданию стикеров-информеров

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

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

Как видите, я дизайнер от бога.

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

Спустя месяц мне начали приходить просьбы добавить разные другие города, и я решил — вот она, популярность (на самом деле нет). Я подумал, что вместо того чтобы самому добавлять города, пусть люди сами делают себе такие модные стикеры.

Итак, собственно, инструкция:

Этап 0. Придумать, о чём вы хотите информировать людей.

Этап 1. Сделать бота в Telegram (про это уже был миллион статей, подробнее почитать можно, например, на «Хабре»).

Этап 2. Создать от имени бота свой стикерпак с первым стикером путём отправки простейшего запроса:

curl \ -F "name=myFirstStickerPack_by_YourBotName" \ -F "title=Stikerpack name" \ -F "emojis=❤️" \ -F "user_id=YourUserId" \ -F "png_sticker=@/path/to/FirstSticker \ https://api.telegram.org/bot<:botSecret>/createNewStickerSet

Тут возникают первые сложности:

Во-первых, где взять свой User ID: идём в поиск Telegram и ищем бота, который отвечает вашим ID (например @userid_bot).

Во-вторых, как загрузить картинку: загрузите её к себе на сервер и отдавайте в Telegram просто её адрес в интернетах.

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

Этап 3. Добавляем свои стикеры.

К этому моменту вы уже должны уметь генерировать стикеры, которые вы будете загружать, сделать это можно на любом языке.

Всё практически аналогично предыдущему запросу, за исключением того, что это другой запрос и другие данные:

curl \ -F "name=myFirstStickerPack_by_YourBotName" \ -F "userid=YouUserId" \ -F "emojis=❤️" \ -F "png_sticker=@/path/to/FirstSticker \ https://api.telegram.org/bot<:botSecret>/addstickertoset

Поздравлю, вы восхитительны. Но что дальше?

Этап 4. Обновляем стикеры.

Чтобы обновить стикер, нужно удалить старый. Я делаю это не самым оптимальным путём, так как не хочу хранить на сервере промежуточную информацию о стикерах (читать как: мне лень было поднимать базы данных).

Поэтому получаем список стикеров в стикерпаке запросом.

curl \ -F "name=myFirstStickerPack_by_YourBotName" \ https://api.telegram.org/bot<:botSecret>/getStickerSet

Находим в нём стикер, который вы хотите обновить, по его эмодзи,
берём его file_id и затем удаляем путём отправки запроса:

curl \ -F "sticker=file_id" \ https://api.telegram.org/bot<:botSecret>/deleteStickerFromSet

А теперь просто отправляем новый, используя запрос из третьего этапа. Обратите внимание, если вы передаёте URL с адресом картинки, а не грузите её напрямую, то он каждый раз должен быть уникальным, так как Telegram кэширует данные.

Этап 5. Поздравляю, вы восхитительны, пишите статью на vc.ru и в «Спортлото»!

Если кому-нибудь будет интересно, я оформил всё вышесказанное в коде и опубликовал на GitHub. Будте готовы страдать, там наговнокожено

{ "author_name": "Kokoulin Nikolay", "author_type": "self", "tags": [], "comments": 15, "likes": 18, "favorites": 68, "is_advertisement": false, "subsite_label": "dev", "id": 81148, "is_wide": true, "is_ugc": true, "date": "Fri, 30 Aug 2019 16:20:42 +0300", "is_special": false }
0
15 комментариев
Популярные
По порядку
Написать комментарий...
1

```
Во-первых, где взять свой User ID: идём в поиск Telegram и ищем бота, который отвечает вашим ID (например @userid_bot).

Во-вторых, как загрузить картинку: загрузите её к себе на сервер и отдавайте в Telegram просто её адрес в интернетах.
```

Я правильно понял, что работоспособность стикерпака у сотен юзеров зависит от одного бесплатного бота и непонятного сервера?

А вообще крутая тема, ты восхитителен :)

Ответить
1

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

Ответить
0

Пишем своему боту и смотрим ID в json, который придёт скрипту бота.

Ответить
0

ой, ступил) А удалить уже не могу

Ответить
0

Работоспособность стикеров не зависит от бота, который отвечает ID. Он нужен только один раз.

Ответить
1

Нормально

Ответить
1

Интересно, давайте на github)
Все думал кто-то сделает с курсами межбанка такое, но, вероятно, не судьба...

Сам, как говорится, «гуманитарий»

Ответить
0

Ну я оформил простой пример, это говнокод на богомерзком PHP, приправленный плохими практиками, так что будте готовы страдать: https://github.com/kokoulin/telegram-stickers

Ответить
0

Ушел в fintech из банка, за «страдать» соскучился. Спасибо)

Ответить
0

Это вы богомерзкий, а php в после 7.0 отличный язык для промышленной разработки.
Судя по вашему коду, вы даже не джун. А уже так смело поносите технологию.

Ответить
0

А вы не умеете в сарказм (:

Ответить
0

Вы восхитительны!

Ответить
0

Ееее, топовые стикеры))

Ответить
0

мне лень было поднимать базы данных

Мне тоже было лень, а потом я узнал про SQLite.

Ответить
0

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

Ответить
Читать все 15 комментариев
Продолбать миллионы и не расстроиться: почему я решил писать про АНТИ-кейсы своего маркетингового агентства АМР

Если вам поднадоели истории успешного успеха – устраивайтесь поудобнее: моя статья снова посвящена продолбу денег, неудачным рекламным кампаниям АМР и пояснениям, почему я сделал неудачи обязательной частью программы своего развития.

Как быстро интегрировать CloudPayments в сервис на PHP

Привет! На связи Иван Могилат, Backend-разработчик Flowwow. Делюсь библиотекой для работы с CloudPayments и рассказываю, кому она пригодится.

 
О русском HR

Кто эти люди? Как они туда попали? Какое у них "образование"? Зачем они вообще нужны?
Уже достаточно долгое время приходится сталкиваться с русскими ИТ-рекрутерами/HR и вот какие впечатления о них набрались:

Недосып разрушает мозг: как отсутствие сна увеличивает риск развития Альцгеймера и что с этим делать Статьи редакции

Материал издания «Кинжал».

Пацаны, у меня насущный вопрос: вы читаете или нет?

Короче, где-то увидела инфу, что из всего взрослого населения читает книжки более-менее регулярно только 10-15 процентов.

Робототехника и облачные мощности: почему роботам нужны облака

Настроить автопилот квадрокоптера и запрограммировать коллаборативного робота проще с виртуальными серверами.

«В кармане у меня было $2, я надеялся заработать $1 млн»: история одержимого финансовыми схемами мошенника Чарльза Понци Статьи редакции

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

Чарльз Понци на пике своей славы
«Авито» заблокировал мой профиль и я не могу теперь отправить оплаченный товар покупателю
Облачные игры стали доступны клиентам Yota
Что такое пассивное инвестирование. Рассказывает персональный брокер

Как правильно вкладывать деньги на годы или даже десятилетия, и как Уоррен Баффет выиграл пари

Лето с HONOR: скидки до 60 000 рублей на ноутбуки и не только

HONOR объявляет о специальных летних скидках на ноутбуки и другую продукцию бренда. С 18 июня пользователи смогут приобрести устройства HONOR с выгодой до 60 000 рублей. Подробнее об условиях акции вы можете узнать на официальном сайте интернет-магазина HONOR и в официальных монобрендовых магазинах HONOR в Москве и других городах России.

Комментарии
null