---
title: "Slash команди: добавете /команди в общността си в mssgs"
description: "Дайте на общността си в mssgs собствени slash команди: mssgs изпраща съобщението до вашата уеб услуга и публикува JSON отговора като карта. Настройка и лимити."
canonical: https://docs.mss.gs/bg/commands
language: bg
---

# Добавете slash команди

Дайте на общността си собствени /команди . Когато член напише някоя от тях, mssgs изпраща съобщението до вашата уеб услуга и публикува отговора ѝ: карта, бутони или отговор, който вижда само той.

## Какво можете да направите

- **Отговаряйте с карта** Отговорете с JSON и той се появява в канала като карта.

- **Знайте кой пита** Получавате члена и ролите му, така че можете да проверите кой какво може да прави.

- **Отговаряйте насаме** Покажете отговора само на члена, който е попитал.

- **Не бързайте** Отговорете с индикатор за зареждане до 5 секунди, а после довършете чрез callback URL.

В приложението

Напишете / и командите на общността се появяват

#### Amsterdam

Вашата услуга отговаря, mssgs публикува картата

Списъкът и картата са тези на самото приложение. Долната част на картата показва кой е използвал коя команда.

- [Бърз старт](#quick-start)

- [Настройки](#settings)

- [Какво получавате](#request)

- [Какво отговаряте](#reply)

- [Пет секунди](#timing)

- [Частни отговори](#private)

- [Пълен пример](#example)

- [Лимити](#limits)

## Бърз старт

- 1 Създайте тригера В настолното приложение отворете **Manage Server → Triggers** на вашата общност и добавете тригер: командата, на която реагира, например /weather , и URL адреса на вашата уеб услуга.

### Получете съобщението

Когато член изпрати съобщение, което започва с /weather , mssgs го изпраща с POST на вашия 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=..."
}
```

### Отговорете с JSON

Отговорете до 5 секунди със статус 2xx и JSON. Той става карта в канала.

```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

## Настройки

Всеки тригер има тези настройки в **Manage Server → Triggers**.

| Настройка | Какво прави |
| --- | --- |
| Trigger Name | Името на тригера, което се показва до командата в списъка. |
| Word to Match | Текстът, с който трябва да започва съобщението, например /weather . Наклонената черта е обичайна, но не е задължителна. |
| URL Endpoint | Къде mssgs изпраща съобщението. |
| Webhook Secret | По избор. mssgs подписва всяка заявка с него, вижте по-долу. |
| Active | Изключва тригера, без да го изтрива. |
| Post Matching Message | Дали собственото съобщение на члена, /weather Amsterdam , остава в канала над вашия отговор. |
| Show Loading Reply | Показва карта със зареждане, докато вашата услуга работи. |
| Allowed User Groups | Задействат го само членове с тези роли. За всички останали това е обикновено съобщение. |

## Какво получавате

POST заявка с JSON тяло. Сред хедърите е User-Agent: mssgs-webhook/1.0 .

| Поле | Тип | Какво е |
| --- | --- | --- |
| server_guid | string | Общността. |
| channel_guid | string | Каналът, в който е изпратено съобщението. |
| trigger_match | string | Командата, която е съвпаднала, например /weather . |
| message.content | string | Цялото съобщение, включително командата. |
| message.member_guid | string | Членът, който го е изпратил, в тази общност. |
| message.user_guid | string | Акаунтът на същия човек, еднакъв във всяка общност. |
| message.group_guids | array | Ролите на члена. |
| message.cms | number | Кога е изпратено, в милисекунди. |
| message.is_action_button | boolean | true , когато тригерът е задействан от бутон, а не от написана команда. |
| message.action_payload | object | payload на бутона, при натискане на бутон. |
| callback_url | string | Обновете или изтрийте отговора си по-късно, в рамките на 30 минути. |
| stream_url | string | Поток на живо с отговорите, реакциите и натисканията на бутони по вашия отговор, за 10 минути. |

### Проверка кой какво може да прави

Сравнете message.group_guids с ролите, на които имате доверие, например за да позволите само на модераторите да изпълняват /ban . За да скриете команда напълно от всички останали, задайте ролите ѝ в настройките на тригера.

## Какво отговаряте

Всеки статус 2xx с JSON тяло, до 4 MB. Изпратете поне едно от двете: message_container или actions .

| Поле | Тип | Какво е |
| --- | --- | --- |
| message_container | object | Картата. Тук работи всяко поле от картите на съобщения, включително етикетът за статус, значката, статистиката на diff и сгънатите разсъждения. |
| title , description , color , ... | string | Съкратен запис: полетата на картата на най-горното ниво се опаковат в карта вместо вас. |
| actions | array | Бутони под картата. Вижте бутони. |
| visible_to_member_guids | array | Само тези членове виждат отговора. Вижте частни отговори. |

## Пет секунди

mssgs чака отговора ви 5 секунди. Ако ви трябва повече време, отговорете веднага с карта със зареждане и довършете чрез callback_url , който е валиден 30 минути.

```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 } })
});
```

## Частни отговори

Сложете id на членове в visible_to_member_guids и само те ще видят отговора ви. Използвайте member_guid от заявката, за да отговорите само на човека, който е попитал.

```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>"]
}
```

## Пълен пример

Команда /weather на Node.js с Express, която отговаря с карта.

```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);
```

## Лимити

| Лимит | Стойност |
| --- | --- |
| Време за отговор | 5 секунди |
| Размер на отговора | 4 MB |
| Команди на член | 5 на всеки 5 секунди |
| Обновяване на отговора след това | 30 минути, чрез callback_url |
| Поток на живо за отговора | 10 минути, чрез stream_url |

## Продължете нататък
