Pular para o conteúdo principal

A versão curta

Quase todo lugar que aceita variáveis usa o mesmo resolvedor: ele pega o seu texto, encontra cada {variable} nele e troca pelos dados do que disparou a mensagem (o membro que entrou, o sorteio que terminou, a mensagem que ativou uma resposta automática). Os dados disponíveis dependem desse evento; as regras, não.

A ordem dos passos

1

Imagens e reações são retiradas

{imgcard:name} é removido do texto e vira o cartão de imagem da mensagem. {reactreply:emoji} é removido e vira uma reação na mensagem enviada.
O Petto dá boas-vindas a Mia com um embed cuja imagem é o cartão de boas-vindas com o nome e o número de membro dela, e uma reação 👋 embaixo

No Discord: {imgcard:welcome} virou o cartão do embed e {reactreply:👋} uma reação.

2

As funções rodam

{choose:a|b|c}, {timestamp:<when>|<style>}, {range:1-100}, {arg1} … {arg10} e {args_from:N} são calculados, de novo a cada vez. A mesma mensagem salva dá um {choose:…} ou {range:…} diferente cada vez que é enviada.
kira usa !roll duas vezes e recebe um número e uma frase diferentes a cada vez

No Discord: o mesmo comando duas vezes: {range} e {choose} são escolhidos de novo a cada vez.

3

Todo o resto é buscado de uma só vez

Cada {name} que sobrou é comparado, ignorando maiúsculas e espaços dentro das chaves, com a lista do Petto e depois com os nomes que outros bots usam. O que uma variável devolve nunca é lido de novo, então um membro que escreve {server_owner} em uma mensagem não faz o {message_content} mencionar o dono.
nova escreve {server_owner} em uma mensagem e a resposta do Petto o repete como texto, sem mencionar o dono

No Discord: {server_owner} escrito por um membro fica como texto dentro de {message_content}.

Como as funções rodam primeiro, uma função não pode conter outras variáveis: em {choose:Oi {user}|Olá} o primeiro } fecha a função antes da hora. Escreva {choose:Oi|Olá} {user} em vez disso.

Conhecidas, desconhecidas e vazias

O Petto preenche {user} com chu, deixa {level} vazia entre os colchetes e mantém {usr} como foi escrita

No Discord: uma variável conhecida, uma conhecida sem dados aqui e uma desconhecida.

É por isso que as variáveis de Níveis só fazem sentido na mensagem de subida de nível e {gw.*} só nas mensagens de sorteios. Usá-las em outro lugar não faz mal, elas só não dão nada.

Dois estilos de nome, mesmo resultado

{user_name} e {user.name} resolvem igual. O estilo com sublinhado é o conjunto original; o estilo com ponto foi adicionado para facilitar a leitura e combina com {guild.*}, {channel.*} e o resto. Nenhum dos dois vai sumir, use o que ler melhor.

Palavras e datas seguem o idioma do servidor

As palavras que o próprio Petto escreve numa variável (Sim, Nunca, Nível 2, Sem impulso), datas como {user.joined_at} e as terminações ordinais (1st, 1.º, 1º) seguem o idioma do servidor. O seu próprio texto, os nomes e os dados do servidor nunca são traduzidos. {date} usa o horário da Colômbia (GMT-5); para um horário que aparece no fuso de cada leitor, use as variáveis {timestamp…}.
O Petto preenche {user.boost}, {user.boost_since}, {user.joined_at}, {user.join_position_suffix} e {guild.boost_tier} para chu

No Discord: as palavras, datas e terminações ordinais que o Petto escreve, no idioma do servidor.

Menções silenciosas

Coloque um ! logo antes de uma menção e ela aparece como a menção azul de sempre, mas ninguém recebe notificação. Sem o !, a menção funciona como sempre. Vale para qualquer mensagem que o Petto envia, então você pode escrever sobre quem é a mensagem sem acordar ninguém.
O Petto publica em anuncios: @everyone A noite de cinema começa às 20h na sala de voz. Dúvidas? Pergunte aos @Moderadores. As duas menções aparecem como pílulas azuis

No Discord: a mensagem foi escrita com !@everyone e !@Moderadores. As duas aparecem como menções e ninguém recebe notificação.

As formas

Exemplo

As regras

  • O ! vai no começo do texto ou depois de um espaço, uma quebra de linha ou pontuação. Oi !@here e (!@here) são silenciosas, oi!@here não.
  • Para mostrar os caracteres !@everyone como texto, escreva \!@everyone.
  • Importa em mensagens normais e no texto de Components V2, que é onde uma menção pode notificar. No título, na descrição, nos campos e no rodapé de um embed clássico uma menção nunca notifica, então ali o ! só é removido.
  • Uma mensagem com menções silenciosas e normais notifica só as normais.
  • O único limite: um @everyone silencioso ao lado de um @everyone normal na mesma mensagem notifica, porque o Discord decide isso uma vez por mensagem. Use um só tipo em cada mensagem.
  • O ! só remove notificações, nunca adiciona. Um recurso que nunca avisa (os temporizadores e os feeds, por exemplo) não avisa com ou sem ele.
  • As prévias do dashboard desenham a menção silenciosa como uma menção normal, sem o !.

Quando usar

Use quando uma mensagem deve mostrar sobre quem ela é ou a quem perguntar, sem acordar ninguém: um anúncio que cita !@everyone ou !@Moderadores como texto, uma boas-vindas que diz Pergunte aos !@Moderadores se precisar de ajuda, ou uma mensagem de sorteio que cita o cargo dos ganhadores. Para um aviso de verdade, escreva a menção como sempre.

Testando uma mensagem

Você não precisa de um evento real para ver o resultado:
  • !welcome test, !leave test, !boost test e !dmonjoin test enviam a mensagem com a sua própria conta como o membro.
  • !embed preview <name> monta um embed salvo com você como o membro e o canal atual, então as variáveis são preenchidas.
  • As prévias do dashboard preenchem as variáveis com dados de exemplo (um membro chamado Liam, um servidor com 1.204 membros), e uma mensagem de teste enviada pelo dashboard usa a sua conta e o seu servidor de verdade.
liam usa !welcome test e o Petto escreve as boas-vindas com liam como membro, o nome do servidor, a contagem de membros e uma das duas opções

No Discord: um texto de boas-vindas testado com !welcome test, com cada variável preenchida.

As variáveis de um evento (um número de caso, um prêmio de sorteio, um nível) ficam vazias numa prévia, porque ainda não existe evento.

Onde este resolvedor é usado

Mensagens de boas-vindas, saída, boost, DM ao entrar e aniversário, respostas automáticas, comandos personalizados, subidas de nível, sorteios, mensagens de bump, mensagens de sanções, starboard e monkeyboard, sugestões, confissões, enquetes, parceiros, pedidos, formulários, mensagens do honeypot, embeds de metas dos contadores, verificação, mensagens de Vanity e Server Tag, alertas de Quests e Rollouts, nomes de threads automáticas, botões com resposta, a mensagem de boas-vindas dos uploads, e cada campo de um embed salvo ou de um cartão de imagem. Alguns textos têm os seus próprios placeholders curtos e não usam este resolvedor: nomes de contadores, nomes de canais de tickets e textos de boas-vindas dos tickets, respostas rápidas, horários da equipe de tickets, mensagens de apelação, nomes do VoiceMaster, nomes de threads de sugestões, aliases de comandos e o texto simples das mensagens fixas. Os Temporizadores enviam o texto como foi escrito. Veja Placeholders de um recurso. Para condições, loops ou dados salvos, use o Petto Code, documentado em code.petto.sbs.