🎨 Emojis

Custom emoji, sticker, and GIF specifications for Fluxer.


📏 Emoji Specs

PropertyValue
Max Size256 KB
FormatsPNG, APNG, GIF, Lottie
Free Slots50 per guild
Premium Slots75 per guild

🖼️ Sticker Specs

PropertyFreePremium
Max Size512 KB1 MB
FormatsPNG, APNG, GIF, Lottie, WebPSame
Slots5 per guild8 per guild

🔌 API Endpoints

GET    /api/v1/guilds/{guild_id}/emojis              # List all
POST   /api/v1/guilds/{guild_id}/emojis              # Upload new
PATCH  /api/v1/guilds/{guild_id}/emojis/{emoji_id}   # Update name/roles
DELETE /api/v1/guilds/{guild_id}/emojis/{emoji_id}   # Remove

🏗️ Architecture

  • Static Emojis

    • Served by static-proxy, running digest-pinned fluxer-static build 2026.918.165027
    • Caddy route: /emoji/* → static-proxy:8080
    • Built-in packs bundled in image
  • Custom Uploads

    • Handled by: media-proxy service
    • Storage: SeaweedFS fluxer-uploads bucket
    • CDN: https://flxr.loca.zone/media
    • Processing: resize, format validation, animated frame check
  • GIF Integrations

    • Service: gifs + gifs-shard (router/shard pattern)
    • Image: digest-pinned fluxer-gifs build 2026.913.154309
    • Role: search/proxy external GIF providers
    • Media endpoint: https://flxr.loca.zone/media

🧰 Creator Tools

  • Recommended Workflow

    • PNG/APNG: export at 128x128, optimize with pngquant or optipng
    • GIF: keep under 256KB, max 3s loop, 50fps cap
    • Lottie: export from After Effects via Bodymovin, validate with lottie-web
    • WebP (stickers only): use cwebp with -q 80 for quality/size balance
  • Quick Compression

    # PNG optimization
    pngquant --quality=65-80 --speed 1 emoji.png
     
    # GIF resize + optimize
    gifsicle --resize 128x128 --optimize=3 input.gif > output.gif
     
    # WebP conversion
    cwebp -q 80 -resize 320 320 sticker.png -o sticker.webp

⚠️ Limits

  • Animated emojis: same size limits, frame count uncapped but size-gated
  • Upload validation: API checks dimensions, file size, MIME type server-side
  • Rate limit: emoji CRUD operations subject to API rate limiting
  • Nitro/Premium: higher slots + larger sticker sizes per guild boost level