---
title: "Komendy z ukośnikiem: własne /komendy w społeczności mssgs"
description: "Własne komendy z ukośnikiem w społeczności mssgs: mssgs wysyła wiadomość do twojej usługi, a odpowiedź JSON publikuje jako kartę. Konfiguracja i limity."
canonical: https://docs.mss.gs/pl/commands
language: pl
---

# Dodaj komendy z ukośnikiem

Daj swojej społeczności własne /komendy . Gdy członek wpisze jedną z nich, mssgs wysyła wiadomość do twojej usługi sieciowej i publikuje jej odpowiedź: kartę, przyciski albo odpowiedź widoczną tylko dla tej osoby.

## Co możesz z tym zrobić

- **Odpowiedz kartą** Odpowiedz JSON-em, a na kanale pojawi się karta.

- **Wiedz, kto pyta** Dostajesz członka i jego role, więc możesz sprawdzić, komu co wolno.

- **Odpowiadaj prywatnie** Pokaż odpowiedź tylko osobie, która pytała.

- **Bez pośpiechu** Odpowiedz loaderem w ciągu 5 sekund, a resztę dokończ przez callback URL.

W aplikacji

Wpisz /, a pojawią się komendy społeczności

#### Amsterdam

Twoja usługa odpowiada, mssgs publikuje kartę

Lista wyboru i karta pochodzą z samej aplikacji. Stopka mówi, kto użył której komendy.

- [Szybki start](#quick-start)

- [Ustawienia](#settings)

- [Co otrzymujesz](#request)

- [Co odpowiadasz](#reply)

- [Pięć sekund](#timing)

- [Prywatne odpowiedzi](#private)

- [Pełny przykład](#example)

- [Limity](#limits)

## Szybki start

- 1 Utwórz trigger W aplikacji desktopowej przejdź w swojej społeczności do **Manage Server → Triggers** i dodaj trigger: komendę, na którą reaguje, np. /weather , oraz URL twojej usługi sieciowej.

### Odbierz wiadomość

Gdy członek wyśle wiadomość zaczynającą się od /weather , mssgs wysyła ją żądaniem POST na twój 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=..."
}
```

### Odpowiedz JSON-em

Odpowiedz w ciągu 5 sekund ze statusem 2xx i JSON-em. Na kanale zamieni się on w kartę.

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

## Ustawienia

Każdy trigger ma te ustawienia w **Manage Server → Triggers**.

| Ustawienie | Co robi |
| --- | --- |
| Trigger Name | Nazwa triggera, widoczna obok komendy na liście wyboru. |
| Word to Match | Tekst, od którego musi się zaczynać wiadomość, np. /weather . Ukośnik jest zwyczajowy, ale nie wymagany. |
| URL Endpoint | Dokąd mssgs wysyła wiadomość. |
| Webhook Secret | Opcjonalny. mssgs podpisuje nim każde żądanie, zobacz niżej. |
| Active | Wyłącza trigger bez usuwania go. |
| Post Matching Message | Czy wiadomość członka, np. /weather Amsterdam , zostaje na kanale nad twoją odpowiedzią. |
| Show Loading Reply | Pokazuje kartę ładowania, gdy twoja usługa pracuje. |
| Allowed User Groups | Uruchamiają go tylko członkowie z tymi rolami. Dla wszystkich innych to zwykła wiadomość. |

## Co otrzymujesz

Żądanie POST z treścią JSON. Wśród nagłówków jest User-Agent: mssgs-webhook/1.0 .

| Pole | Typ | Co to jest |
| --- | --- | --- |
| server_guid | string | Społeczność. |
| channel_guid | string | Kanał, na którym wysłano wiadomość. |
| trigger_match | string | Dopasowana komenda, np. /weather . |
| message.content | string | Cała wiadomość, razem z komendą. |
| message.member_guid | string | Nadawca jako członek tej społeczności. |
| message.user_guid | string | Konto tej samej osoby, takie samo w każdej społeczności. |
| message.group_guids | array | Role członka. |
| message.cms | number | Czas wysłania, w milisekundach. |
| message.is_action_button | boolean | true , gdy trigger uruchomił przycisk, a nie wpisana komenda. |
| message.action_payload | object | payload przycisku, przy naciśnięciach przycisków. |
| callback_url | string | Zaktualizuj albo usuń swoją odpowiedź później, przez 30 minut. |
| stream_url | string | Strumień na żywo z odpowiedziami, reakcjami i naciśnięciami przycisków dotyczącymi twojej odpowiedzi, przez 10 minut. |

### Sprawdzanie, komu co wolno

Porównaj message.group_guids z rolami, którym ufasz, np. żeby tylko moderatorzy mogli uruchamiać /ban . Żeby komenda w ogóle nie działała dla nikogo innego, ustaw jej role w ustawieniach triggera.

## Co odpowiadasz

Dowolny status 2xx z treścią JSON, do 4 MB. Wyślij co najmniej jedno z pól message_container lub actions .

| Pole | Typ | Co to jest |
| --- | --- | --- |
| message_container | object | Karta. Działa tu każde pole kart wiadomości, łącznie z pigułką statusu, plakietką, statystykami diffu i zwiniętym rozumowaniem. |
| title , description , color , ... | string | Skrót: pola karty podane na najwyższym poziomie zostaną za ciebie zapakowane w kartę. |
| actions | array | Przyciski pod kartą. Zobacz przyciski. |
| visible_to_member_guids | array | Odpowiedź widzą tylko ci członkowie. Zobacz prywatne odpowiedzi. |

## Pięć sekund

mssgs czeka na twoją odpowiedź 5 sekund. Jeśli potrzebujesz więcej czasu, odpowiedz od razu kartą z loaderem i dokończ przez callback_url , który jest ważny przez 30 minut.

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

## Prywatne odpowiedzi

Wpisz identyfikatory członków w visible_to_member_guids , a tylko oni zobaczą twoją odpowiedź. Użyj member_guid z żądania, żeby odpowiedzieć tylko osobie, która pytała.

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

## Pełny przykład

Komenda /weather w Node.js z Expressem, odpowiadająca kartą.

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

## Limity

| Limit | Wartość |
| --- | --- |
| Czas na odpowiedź | 5 sekund |
| Rozmiar odpowiedzi | 4 MB |
| Komendy na członka | 5 co 5 sekund |
| Późniejsza aktualizacja odpowiedzi | 30 minut, przez callback_url |
| Strumień odpowiedzi na żywo | 10 minut, przez stream_url |

## Buduj dalej
