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

Полтора месяца назад я увидел статью про стикеры-информеры, а потом вышла статья от 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. Будте готовы страдать, там наговнокожено

1515
15 комментариев

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

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

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

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

1
Ответить

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

1
Ответить

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

Ответить

Нормально

1
Ответить

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

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

1
Ответить

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

Ответить

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

Ответить