Порядок работы
- Пройди по коду бота: тексты сообщений, подписи к фото и файлам, все кнопки.
- Для каждого места выбери эмодзи по смыслу из каталога. Придуманный ID не покажется.
- В тексте сообщения вставляй эмодзи тегом
<tg-emoji>и отправляй сparse_mode=HTML. - В кнопках ставь ID в поле
icon_custom_emoji_id, а обычный эмодзи из текста кнопки убирай. - Обнови библиотеку бота до версии, которая знает поле
icon_custom_emoji_id.
Условия
- У владельца бота должен быть Telegram Premium — иначе вместо анимации будут обычные эмодзи.
- Работает в личке, группах и супергруппах.
Сообщения
Тег: <tg-emoji emoji-id="ID">😀</tg-emoji>. В emoji-id только цифры, внутри тега — один обычный эмодзи: его увидят там, где премиум не показывается. Символы <, > и & в остальном тексте экранируй.
await message.answer(
'<tg-emoji emoji-id="ID">👋</tg-emoji> Привет! Выберите раздел:',
parse_mode="HTML",
)Кнопки
Текст кнопки — без эмодзи, иконка — в icon_custom_emoji_id.
InlineKeyboardMarkup(inline_keyboard=[
[InlineKeyboardButton(text="Каталог", callback_data="catalog",
icon_custom_emoji_id="ID")],
[InlineKeyboardButton(text="Поддержка", url=SUPPORT_URL,
icon_custom_emoji_id="ID")],
])
KeyboardButton(text="Профиль", icon_custom_emoji_id="ID")Где не работает
- Всплывающие ответы
callback.answer()и алерты. - Описание бота, список команд и кнопка меню.
Частые ошибки
emoji-id="id123…"— приставкаidлишняя.- Эмодзи в тексте кнопки вместе с
icon_custom_emoji_id— получится две иконки. - Нет
parse_mode=HTML— тег виден как текст. - ID не из каталога — иконки не будет.
