🧩 Componentes V2
Monte mensagens com Container, TextDisplay, Section, Separator, Thumbnail e MediaGallery em vez de content/embeds.
Components V2 é um jeito diferente de montar mensagens: em vez de content (texto simples) e embeds, você monta a mensagem inteira com blocos visuais — Container, TextDisplay, Section, Separator, Thumbnail e MediaGallery. Ative passando { componentsV2: true } como opção nas funções de envio/resposta.
: para chamar método (isso é sintaxe de Lua, não do Logic Script). Toda chamada encadeada usa ponto (.), igual ao resto da linguagem: Container().setAccentColor(v).addComponents(...). Escrever Container():setAccentColor(v) gera erro de sintaxe.
on command("perfil", message, args)
let card = Container()
.setAccentColor("#7C8FFF")
.addComponents(
TextDisplay("**" .. message.author.username .. "**"),
Separator().setSpacing("small"),
Section("Nível 12 · 3.450 XP")
.setAccessory(Thumbnail(message.author.avatarURL))
)
message.reply({ componentsV2: true, components: [card] })
endRepare no padrão: cada bloco é criado chamando o construtor como uma função — Container(), TextDisplay("texto"), Separator() — e cada método set.../add... devolve o próprio componente, por isso dá pra encadear vários .set...() em sequência antes de usar o resultado.
Os blocos disponíveis:
- Container() — a caixa que agrupa tudo.
.addComponents(...componentes)adiciona TextDisplay/Section/Separator/MediaGallery (ou um Button/SelectMenu, que vira uma linha) dentro dela;.setAccentColor(v)define a cor da barra lateral;.setSpoiler(v)marca o conteúdo como spoiler. - TextDisplay(texto?) — um bloco de texto (aceita Markdown).
.setContent(v)define/troca o texto. - Section(texto?) — texto com um acessório ao lado.
.setText(v)define o texto principal;.setAccessory(v)recebe umThumbnail()ou umButton()comstylelink. - Separator() — linha divisória entre blocos.
.setDivider(v)mostra/esconde a linha;.setSpacing(v)aceita"small"ou"large". - Thumbnail(url?) — miniatura de imagem.
.setURL(v)define a imagem;.setDescription(v)é o texto alternativo (acessibilidade);.setSpoiler(v)marca como spoiler. - MediaGallery() — galeria de mídia.
.addItem(url, descricao?, spoiler?)adiciona uma imagem ou vídeo.
componentsV2: true a mensagem não pode ter content nem embeds — todo o texto vira TextDisplay() dentro dos componentes.
Funciona em sendMessage, sendDM, message.reply/edit, user.send, channel.send, topic.send e interaction.reply/update/edit/followUp.