Skip to content

Commit 43f7171

Browse files
Shadow21ARl-zeuch
authored andcommitted
reference: document components v2
added blank lines around headers and code blocks (lint fix) and used absolute link to link the file fixed more linter errors, no more linter errors now hopefully fixed all linter errors, finally v2 added all suggestion, and fixed all corrections, simplified the example with proper syntax reference/cv2: minor formatting Signed-off-by: Luca Zeuch <[email protected]>
1 parent e2878ed commit 43f7171

File tree

10 files changed

+613
-0
lines changed

10 files changed

+613
-0
lines changed

content/docs/reference/all.png

147 KB
Loading

content/docs/reference/button.png

22.7 KB
Loading

content/docs/reference/components-v2.md

Lines changed: 507 additions & 0 deletions
Large diffs are not rendered by default.
15.1 KB
Loading

content/docs/reference/file.png

19.6 KB
Loading

content/docs/reference/gallery.png

352 KB
Loading

content/docs/reference/menu.png

24.2 KB
Loading

content/docs/reference/section.png

14.9 KB
Loading

content/docs/reference/templates/functions.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,112 @@ object](/docs/reference/templates/syntax-and-data#message). Is also valid for ep
781781

782782
---
783783

784+
## Component V2
785+
786+
Components V2 provides a new way to create interactive and visually appealing message layouts in Discord applications,
787+
making it easier to control message formatting and user interaction while maintaining line length under 120 characters.
788+
789+
### componentBuilder
790+
791+
A `componentBuilder` simplifies building Discord's ComponentsV2 in custom commands.
792+
793+
```yag
794+
{{ $component := componentBuilder (sdict [text] [section] [gallery] [file] [separator] [container] [buttons] [menus] [interactive_components] [allowed_mentions] [reply] [silent] [ephemeral]) }}
795+
```
796+
797+
Returns a complex message object with the given components.
798+
799+
All keys are optional, but the Discord API will reject completey empty messages, so some content is required.
800+
801+
- `text`: A string or a slice of strings.
802+
- `section`: A layout block that shows text with one optional accessory: a button **or** a thumbnail with the following keys:
803+
- `text`: A string or a slice of strings.
804+
- `button`: A [button object](#cbutton).
805+
- `thumbnail`: An sdict with the following keys:
806+
- `media`: A string.
807+
- `description`: A string.
808+
- `spoiler`: A bool.
809+
- `gallery`: Displays one or more media items with optional descriptions and spoiler flags with the following keys:
810+
- `media`: A string.
811+
- `description`: A string.
812+
- `spoiler`: A bool.
813+
- `file`: Attaches text files to the message and optionally displays them with the following keys:
814+
- `content`: A string. (max 100 000 chars)
815+
- `name`: A string. (.txt appended automatically)
816+
- `separator`: Adds spacing between components with the following keys:
817+
- `true`: large separator
818+
- `false` or `nil`: small separator
819+
- `container`: Top-level layout. Containers offer the ability to visually encapsulate a collection of components,
820+
and have an optional customizable accent color bar. Contains the following keys:
821+
- `components`: A [componentBuilder](#componentbuilder) or a slice thereof.
822+
- `color`: hex accent color (optional).
823+
- `spoiler`: hides content until revealed (optional).
824+
- `buttons`: Interactive [buttons](#cbutton) users can click. Can be single or multiple.
825+
- `menus`: Interactive [menus](#cmenu)s users can select from. Can be single or multiple.
826+
- `interactive_components`: Mix of buttons and menus, auto-distributed.
827+
- `allowed_mentions`: A sdict with the following keys:
828+
- `users`: A slice of user IDs.
829+
- `roles`: A slice of role IDs.
830+
- `everyone`: A bool.
831+
- `replied_user`: A bool.
832+
- `reply`: A sdict with the following keys:
833+
- `message_id`: A string.
834+
- `thread_id`: A string.
835+
- `silent`: A bool.
836+
- `ephemeral`: A bool.
837+
838+
### Component Builder Functions
839+
840+
The `ComponentBuilder` simplifies building Discord's V2 components, allowing complex layouts to be built incrementally.
841+
It provides methods for constructing, manipulating, and exporting components in a format Discord understands,
842+
ensuring line length doesn't exceed 120 characters.
843+
844+
#### ComponentBuilder.Add
845+
846+
Adds a single component entry to the builder under the given key.
847+
848+
```yag
849+
{{ $builder.Add <key> <value> }}
850+
```
851+
852+
- `key` – The top-level key for the component (e.g., "text", "section", "buttons").
853+
- `value` – The component data (string, sdict, Button, SelectMenu, etc.).
854+
855+
#### ComponentBuilder.AddSlice
856+
857+
Adds multiple components under one key.
858+
859+
```yag
860+
{{ $builder.AddSlice <key> <values...> }}
861+
```
862+
863+
- `key` – The top-level key for the component (e.g., "text", "section", "buttons").
864+
- `values` – The component data (string, sdict, Button, SelectMenu, etc.).
865+
866+
#### ComponentBuilder.Merge
867+
868+
Combine another builder into the current one.
869+
870+
```yag
871+
{{ $builder.Merge <other> }}
872+
```
873+
874+
- `other` – The other component builder to merge.
875+
876+
#### ComponentBuilder.Get
877+
878+
Returns the component data for the given key.
879+
880+
```yag
881+
{{ $value := <builder>.Get <key> }}
882+
```
883+
884+
- `key` – The top-level key for the component (e.g., "text", "section", "buttons").
885+
886+
Example usage can be found at the [Components v2](/docs/reference/components-v2).
887+
888+
---
889+
784890
## Math
785891

786892
#### abs

content/docs/reference/texts.png

18.5 KB
Loading

0 commit comments

Comments
 (0)