Announcement with images
An event announcement with a banner, details, a file with the rules and buttons. It shows how to mix content outside and inside a container.
{ "flags": 32768, "allowed_mentions": { "parse": [ "roles" ] }, "components": [ { "type": 10, "content": "<@&123456789012345678> new event!" }, { "type": 17, "accent_color": 15418782, "components": [ { "type": 12, "items": [ { "media": { "url": "attachment://banner.png" }, "description": "Tournament banner" } ] }, { "type": 10, "content": "# 🏆 Winter tournament\nShow everyone who the best player on the server is. Prizes for the top 3." }, { "type": 14, "divider": true, "spacing": 1 }, { "type": 9, "components": [ { "type": 10, "content": "📅 **Date:** <t:1796025600:F>\n👥 **Slots:** 32 players\n🎁 **Prize:** Nitro + exclusive role" } ], "accessory": { "type": 2, "style": 3, "label": "Sign me up", "custom_id": "tournament_signup", "emoji": { "name": "✋" } } }, { "type": 14, "divider": true, "spacing": 1 }, { "type": 10, "content": "**Tournament rules**" }, { "type": 13, "file": { "url": "attachment://tournament-rules.pdf" } }, { "type": 1, "components": [ { "type": 2, "style": 5, "label": "Rulebook", "url": "https://example.com/rules" }, { "type": 2, "style": 5, "label": "Livestream", "url": "https://example.com/live" } ] } ] } ]}Key points
Section titled “Key points”- The role mention goes outside the container, in a Text Display, so it reads like an alert.
allowed_mentionswith"parse": ["roles"]lets the role mention notify.- The banner is a Media Gallery with a single item: it’s shown large, full width.
- The PDF is shown with a File component pointing to
attachment://tournament-rules.pdf. - Link buttons (style
5) don’t send an interaction: they open the URL directly.
Count the components
Section titled “Count the components”This message uses 14 components (out of the 40 allowed):
| Component | Count |
|---|---|
| Text Display | 4 |
| Container | 1 |
| Media Gallery | 1 |
| Separator | 2 |
| Section | 1 |
| Button | 3 |
| File | 1 |
| Action Row | 1 |
