emoji.wivvi

400 премиум эмодзи · Telegram iOS Icons

Премиум эмодзи для твоего Telegram бота

Готовые ID и гайд для ИИ. Отправь ссылку нейронке, и она сама расставит иконки в сообщениях и кнопках.

Добавь премиум эмодзи в моего Telegram бота по гайду: https://emoji.wivvi.net

Иконки рисуются из оригинальных TGS, как в Telegram. Нажми, чтобы скопировать ID. Добавить пак: t.me/addemoji/tgiosicons

Все 400 эмодзи

В строке эмодзи, название и ID. Эмодзи из начала строки ставится внутрь тега, ID идёт в emoji-id или icon_custom_emoji_id.

Клик по строке копирует её ID · .txt · .json

Гайд для ИИ

Как вставить эмодзи в сообщения и кнопки бота. Эту часть читает нейронка, тот же текст вместе со всем списком лежит в одном файле.

Гайд и весь список

Одним файлом: emoji.wivvi.net/llms.txt

Что сделать

  1. Найди в коде бота все тексты сообщений, подписи к медиа и кнопки.
  2. К каждому месту подбери иконку по смыслу из списка эмодзи. ID бери только из него, не выдумывай и не бери по памяти.
  3. В текстах сообщений вставляй эмодзи тегом <tg-emoji> и отправляй с parse_mode=HTML.
  4. В кнопках, инлайн и обычной клавиатуры, ставь ID в поле icon_custom_emoji_id. Обычные эмодзи из текста кнопки убери: в кнопках только премиум.
  5. Проверь, что библиотека бота свежая и знает поле icon_custom_emoji_id.

Требования

  • Bot API 9.4 или новее (февраль 2026). В aiogram 3 и python-telegram-bot нужна версия с его поддержкой.
  • У владельца бота должен быть Telegram Premium. Без него вместо иконок будут обычные эмодзи.
  • Работает в личных чатах, группах и супергруппах.

Сообщения

Формат тега: <tg-emoji emoji-id="ID">эмодзи</tg-emoji>

  • В emoji-id только цифры, без приставки id.
  • Внутри тега ровно один обычный эмодзи: тот, что стоит первым в строке списка. Его видно там, где премиум не показывается.
  • Нужен parse_mode=HTML, иначе тег придёт текстом. Символы <, > и & в остальном тексте экранируй.
  • Подписи к фото, видео и файлам работают так же, через caption и parse_mode=HTML.
python
@dp.callback_query(F.data == "admin_broadcast")
async def broadcast_callback(callback: CallbackQuery, state: FSMContext):
    if callback.from_user.id not in ADMIN_IDS:
        await callback.answer("✖️ У вас нет доступа", show_alert=True)
        return

    await callback.message.edit_text(
        '<b><tg-emoji emoji-id="6021418126061605425">📢</tg-emoji> Отправь сообщение, которое нужно разослать всем пользователям.</b>',
        parse_mode=ParseMode.HTML,
        reply_markup=get_broadcast_keyboard()
    )
    await state.set_state(BroadcastStates.waiting_for_message)
    await callback.answer()

Инлайн кнопки

Текст кнопки без эмодзи, иконка в поле icon_custom_emoji_id.

python
return InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(
        text="Подписаться",
        url=CHANNEL_LINK,
        icon_custom_emoji_id="6039486778597970865"
    )],
    [InlineKeyboardButton(
        text="Проверить подписку",
        callback_data="check_subscribe",
        icon_custom_emoji_id="5774022692642492953"
    )],
])

Кнопки клавиатуры

Правило то же: в text без эмодзи, иконка в icon_custom_emoji_id. В aiogram это KeyboardButton(text=..., icon_custom_emoji_id=...).

python
keyboard = {
    "keyboard": [
        [
            {"text": "Профиль", "icon_custom_emoji_id": "6035084557378654059"}
        ],
        [
            {"text": "Настройки", "icon_custom_emoji_id": "6032742198179532882"},
            {"text": "Помощь", "icon_custom_emoji_id": "6030848053177486888"}
        ]
    ],
    "resize_keyboard": True
}

Где премиум не работает

  • Всплывающие ответы callback.answer() и алерты: там только обычные эмодзи.
  • Описание бота, список команд и кнопка меню.

Частые ошибки

  • emoji-id="id5870...": приставка id лишняя, только цифры.
  • Обычный эмодзи в тексте кнопки вместе с icon_custom_emoji_id: получится две иконки.
  • Нет parse_mode=HTML: тег будет виден как текст.
  • ID придуман или взят из другого пака: иконки не будет. Бери из списка.
  • Старая версия библиотеки: поле icon_custom_emoji_id потеряется или вызовет ошибку.