Distinguish the content types
Unicode emoji is text. Custom emoji uses an entity associated with a document. Stickers can be static, animated or video, while Telegram GIF content commonly uses silent video. Custom emoji IDs are not Unicode characters.
Standalone animated emoji, dice and message reactions are separate mechanisms. Dice outcomes come from the server; a client must display that outcome rather than generating a substitute locally.
Build the picker around eligibility
Category methods differ by use, and keyword dictionaries support localization and incremental updates. Premium status, chat reaction settings and configuration affect availability. Being able to render an incoming effect does not establish permission to send it.
Custom emoji entities need correct text coverage and offsets; see text entities.
Reactions and effects are not ordinary new messages
Reactions change a message’s reaction collection and related unread state. Effects accompany sent content. Each has its own catalog, caching and update rules; do not download every animation whenever a chat opens.
Performance and accessibility recommendations
Start with static previews, animate visible items only, and bound resource caches. Refresh expired references through their original sources. Provide text or ordinary emoji fallbacks and respect reduced-motion preferences. Keep labels, search and keyboard navigation functional.
Use the linked official chapters for exact format dimensions, frame rates and playback rules.