@Lucky1337

Как использовать премиум emoji телеграм в UserBot на pyrogram?

Как использовать премиум эмодзи телеграм в юзер боте на pyrogram? Не нашел в документации ничего похожего на это (либо плохо искал).
  • Вопрос задан
  • 8834 просмотра
Решения вопроса 1
@loharik229
Тоже задался таким же вопросом. Решил проверить send_message() и нашел это:
entities (List of MessageEntity) – List of special entities that appear in message text, which can be specified instead of parse_mode.

Дальше рыскал и нашел pyrogram.raw.types.MessageEntityCustomEmoji. Дело в том, что при отправке сообщения можно добавить MessageEntity, а есть еще MessageEntityCustomEmoji, что и является необходимым MessageEntity.

MessageEntityCustomEmoji требует три параметра: length, offset и document_id. Их можно получить, взяв какой нибудь message имеющий премиум-эмоджи. Я написал в избранное сообщение с двумя кастомными эмоджи и нашел:
"entities": [
        {
            "_": "MessageEntity",
            "type": "MessageEntityType.CUSTOM_EMOJI",
            "offset": 3,
            "length": 2,
            "custom_emoji_id": 5343528654456496221
        },
        {
            "_": "MessageEntity",
            "type": "MessageEntityType.CUSTOM_EMOJI",
            "offset": 5,
            "length": 2,
            "custom_emoji_id": 5343615236702215768
        }
    ],

Здесь хранится и offset и document_id (custom_emoji_id). length это длина сообщения вместе с этим MessageEntity.

Итак, чтобы отправить премиум эмодзи, в send_message() добавляем параметр:
entities=[pyrogram.raw.types.MessageEntityCustomEmoji(offset=1, length=1, document_id=1)]
. Вместо offset ставим offset из необходимого премиум эмодзи (которое получили улавливая message), вместо document_id пишем custom_emoji_id из нужного премиум эмодзи, а вместо length длину текста вместе с эмодзи.
Пример:
await app.send_message(message.chat.id, "text", entities=[pyrogram.raw.types.MessageEntityCustomEmoji(offset=3, length=6, document_id=5343528654456496221), pyrogram.raw.types.MessageEntityCustomEmoji(offset=5, length=6, document_id=5343615236702215768)])

Этот пример пишет "text" и 2 премиум-эмодзи (параметр entities требует массив с различными MessageEntity)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы