---
title: "Comandos de barra: /comandos na sua comunidade do mssgs"
description: "Crie comandos de barra para a sua comunidade do mssgs: o mssgs envia a mensagem ao seu serviço e publica a resposta JSON como cartão. Configuração e limites."
canonical: https://docs.mss.gs/pt/commands
language: pt
---

# Adicione comandos de barra

Dê à sua comunidade os próprios /comandos . Quando um membro digita um deles, o mssgs envia a mensagem ao seu serviço web e publica o que ele responder: um cartão, botões ou uma resposta que só essa pessoa vê.

## O que você pode fazer

- **Responda com um cartão** Responda com JSON e ele aparece no canal como um cartão.

- **Saiba quem pediu** Você recebe o membro e os cargos dele, para verificar quem pode fazer o quê.

- **Responda em particular** Mostre a resposta só para o membro que pediu.

- **Sem pressa** Responda com um loader em 5 segundos e termine pela callback URL.

No app

Digite / e os comandos da comunidade aparecem

#### Amsterdam

O seu serviço responde, o mssgs publica o cartão

A lista e o cartão são do próprio app. O rodapé diz quem usou qual comando.

- [Início rápido](#quick-start)

- [Configurações](#settings)

- [O que você recebe](#request)

- [O que você responde](#reply)

- [Cinco segundos](#timing)

- [Respostas privadas](#private)

- [Um exemplo completo](#example)

- [Limites](#limits)

## Início rápido

- 1 Crie o trigger No app para computador, abra **Manage Server → Triggers** da sua comunidade e adicione um: o comando ao qual ele reage, como /weather , e a URL do seu serviço web.

### Receba a mensagem

Quando um membro envia uma mensagem que começa com /weather , o mssgs faz um POST dela para a sua URL:

```json
{
  "server_guid": "abc12345-...",
  "channel_guid": "def67890-...",
  "trigger_match": "/weather",
  "message": {
    "id": "d01ZZdef6-...",
    "content": "/weather Amsterdam",
    "member_guid": "member-guid",
    "user_guid": "user-guid",
    "group_guids": ["group-guid-1", "group-guid-2"],
    "cms": 1790000000000
  },
  "callback_url": "https://mss.gs/api/v1/trigger-callback/...",
  "stream_url": "https://mss.gs/api/v1/instant/...?token=..."
}
```

### Responda com JSON

Responda em até 5 segundos com um status 2xx e JSON. Isso vira um cartão no canal.

```json
{
  "message_container": {
    "color": "blue",
    "title": "Amsterdam",
    "description": "14 °C, light rain until 16:00",
    "fields": [
      { "field": "Wind", "value": "SW 18 km/h" },
      { "field": "Humidity", "value": "82%" }
    ]
  }
}
```

#### Amsterdam

## Configurações

Cada trigger tem estas configurações em **Manage Server → Triggers**.

| Configuração | O que faz |
| --- | --- |
| Trigger Name | O nome do trigger, mostrado ao lado do comando na lista. |
| Word to Match | O texto com que a mensagem precisa começar, como /weather . A barra é o costume, não uma exigência. |
| URL Endpoint | Para onde o mssgs envia a mensagem. |
| Webhook Secret | Opcional. O mssgs assina cada requisição com ele, veja abaixo. |
| Active | Desliga o trigger sem apagá-lo. |
| Post Matching Message | Se o /weather Amsterdam do próprio membro fica no canal acima da sua resposta. |
| Show Loading Reply | Mostra um cartão de carregamento enquanto o seu serviço trabalha. |
| Allowed User Groups | Só membros com esses cargos o disparam. Para qualquer outra pessoa, é uma mensagem comum. |

## O que você recebe

Um POST com corpo JSON. Os headers incluem User-Agent: mssgs-webhook/1.0 .

| Campo | Tipo | O que é |
| --- | --- | --- |
| server_guid | string | A comunidade. |
| channel_guid | string | O canal em que a mensagem foi enviada. |
| trigger_match | string | O comando que correspondeu, como /weather . |
| message.content | string | A mensagem inteira, com o comando. |
| message.member_guid | string | O membro que a enviou, nesta comunidade. |
| message.user_guid | string | A conta da mesma pessoa, igual em todas as comunidades. |
| message.group_guids | array | Os cargos do membro. |
| message.cms | number | Quando foi enviada, em milissegundos. |
| message.is_action_button | boolean | true quando um botão disparou o trigger, e não um comando digitado. |
| message.action_payload | object | O payload do botão, quando é um toque em botão. |
| callback_url | string | Atualize ou apague a sua resposta depois, por 30 minutos. |
| stream_url | string | Um stream ao vivo das respostas, reações e toques em botões na sua resposta, por 10 minutos. |

### Verificar quem pode fazer o quê

Compare message.group_guids com os cargos em que você confia, por exemplo para que só moderadores possam rodar /ban . Para esconder um comando de todos os outros, defina os cargos dele nas configurações do trigger.

## O que você responde

Qualquer status 2xx com um corpo JSON, de até 4 MB. Envie pelo menos um de message_container ou actions .

| Campo | Tipo | O que é |
| --- | --- | --- |
| message_container | object | O cartão. Todos os campos dos cartões de mensagem funcionam aqui, incluindo a pílula de status, o selo, as estatísticas de diff e o raciocínio recolhido. |
| title , description , color , ... | string | Atalho: campos de cartão no nível superior são embrulhados num cartão para você. |
| actions | array | Botões embaixo do cartão. Veja botões. |
| visible_to_member_guids | array | Só esses membros veem a resposta. Veja respostas privadas. |

## Cinco segundos

O mssgs espera 5 segundos pela sua resposta. Se você precisar de mais tempo, responda na hora com um cartão de loader e termine pela callback_url , que vale por 30 minutos.

```javascript
// Answer within 5 seconds with a loader...
res.json({ message_container: { loader: true, loader_text: 'Looking it up…' } });

// ...then finish in your own time with the callback URL.
await fetch(req.body.callback_url, {
  method: 'PUT',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ message_container: { color: 'blue', title: 'Done', description: result } })
});
```

## Respostas privadas

Coloque ids de membros em visible_to_member_guids e só eles veem a sua resposta. Use o member_guid da requisição para responder só a quem pediu.

```json
{
  "message_container": {
    "color": "green",
    "title": "You're on the list",
    "description": "Only you can see this reply."
  },
  "visible_to_member_guids": ["<message.member_guid from the request>"]
}
```

## Um exemplo completo

Um comando /weather em Node.js com Express, respondendo com um cartão.

```javascript
import express from 'express';

const app = express();
app.use(express.json());

app.post('/mssgs/weather', async (req, res) => {
  const city = req.body.message.content.replace('/weather', '').trim() || 'Amsterdam';
  const w = await getWeather(city); // your own lookup

  res.json({
    message_container: {
      color: 'blue',
      title: city,
      description: `${w.temp} °C, ${w.summary}`,
      fields: [
        { field: 'Wind', value: w.wind },
        { field: 'Humidity', value: `${w.humidity}%` }
      ]
    }
  });
});

app.listen(3000);
```

## Limites

| Limite | Valor |
| --- | --- |
| Tempo para responder | 5 segundos |
| Tamanho da resposta | 4 MB |
| Comandos por membro | 5 a cada 5 segundos |
| Atualizar a resposta depois | 30 minutos, pela callback_url |
| Stream ao vivo da resposta | 10 minutos, pela stream_url |

## Continue criando
