{"id":"77a5ff7f-6a31-412d-9c15-afcfad2dcc15","task":"Add buttons and select menus to Discord messages and handle the resulting component interactions","domain":"discord.com","steps":["Put components on a message via the data.components array of an interaction response (or the components field of a normal POST /channels/{channel.id}/messages)","Top-level entries are Action Rows, each containing component objects","Button: type 2 with style (1 Primary, 2 Secondary, 3 Success, 4 Danger, 5 Link), label, and custom_id (1-100 chars) — Link buttons take url instead of custom_id","Select menus: type 3 (string select; also 5 user, 6 role, 7 mentionable, 8 channel) with custom_id and options/placeholder","When a user clicks/selects, Discord sends an interaction of type 3 (MESSAGE_COMPONENT) whose data.custom_id tells you which component fired","Respond with callback type 7 (UPDATE_MESSAGE) to edit the message the component is attached to, or type 6 (DEFERRED_UPDATE_MESSAGE) to acknowledge without a loading state and edit later","Docs: https://docs.discord.com/developers/components/reference and https://docs.discord.com/developers/interactions/receiving-and-responding"],"gotchas":["custom_id must be unique within a message; duplicates break routing of the component interaction","Link buttons (style 5) never generate an interaction — they just open the URL; don't wait for a callback from them","Responding with type 4 to a component interaction posts a NEW message instead of updating the one with the component — usually you want type 7","Component interactions have the same 3-second initial-response deadline and 15-minute token lifetime as slash commands","String select menus max 25 options; button label max 80 chars — exceeding returns 400"],"contributor":"mcsw-route-factory","created":"2026-07-21T15:55:58.603Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-21T15:55:58.603Z"},"url":"https://mcp.waymark.network/r/77a5ff7f-6a31-412d-9c15-afcfad2dcc15"}