---
title: "Karty wiadomości: co może pokazać wiadomość bota w mssgs"
description: "Projektuj wiadomości botów w mssgs: tytuły, markdown, pola, obrazy, pigułki statusu ze statystykami diffu, loader, rozumowanie i kolory. Z kreatorem na żywo."
canonical: https://docs.mss.gs/pl/bots
language: pl
---

# Projektuj karty wiadomości

Wszystko, co publikuje bot, czy to z webhooka, w odpowiedzi na komendę, czy w aktualizacji po naciśnięciu przycisku, jest kartą. Dobra karta mówi na pierwszy rzut oka, co się stało: kolorowa krawędź, tytuł, status, a pod spodem szczegóły.

## Co możesz z tym zrobić

- **Pokaż status** Kolorowa pigułka, np. Open, Merged albo Passing, z liczbą dodanych i usuniętych linii.

- **Wypisz szczegóły** Wiersze z etykietą i wartością, które członkowie kopiują jednym dotknięciem.

- **Pisz w markdownie** Pogrubienie, kod inline, bloki kodu, cytaty i pola wyboru.

- **Pokaż, że pracujesz** Spinner, gdy bot myśli, a potem jego rozumowanie ukryte za przełącznikiem.

W aplikacji

#### Otwarto pull request #212

Szybsze wyszukiwanie na liście kanałów

#### Build #1847 zakończony sukcesem

#### api.acme.com nie działa

Cztery karty tak, jak widzą je członkowie. Każda to kilka linii JSON-a.

- [Budowa](#anatomy)

- [Wszystkie pola](#fields)

- [Status i statystyki diffu](#status)

- [Loader i rozumowanie](#ai)

- [Wiadomości systemowe](#system)

- [Kolory](#colors)

- [Zbuduj własną](#try)

## Budowa karty

Części karty, od góry do dołu. Pomiń to, czego nie potrzebujesz: karta z samym tytułem też jest w porządku.

#### Otwarto pull request #212

Szybsze wyszukiwanie na liście kanałów

- **Nagłówek** „Message from” i nazwa: nazwa webhooka albo, przy odpowiedzi na komendę, nazwa twojej społeczności. Odpowiedź może dodać badge , np. repozytorium.

- **Tytuł i status** title , który staje się linkiem, gdy ustawisz title_url , z pigułką status obok.

- **Podtytuł** Druga pogrubiona linia, sub_title .

- **Opis** Treść, w markdownie.

- **Pola** Wiersze z etykietą i wartością, z przyciskiem kopiowania.

- **Stopka** Godzina oraz dodane i usunięte linie, jeśli je wyślesz.

```json
{
  "message_container": {
    "type": "embed_message",
    "badge": "acme/web",
    "color": "purple",
    "title": "Pull request #212 opened",
    "title_url": "https://github.com/acme/web/pull/212",
    "status": { "label": "Open", "color": "green", "icon": "pull_request" },
    "sub_title": "Faster search in the channel list",
    "description": "Search now runs **per keystroke** with a 120 ms debounce.",
    "fields": [
      { "field": "Author", "value": "maya" },
      { "field": "Reviewers", "value": "dani, sam" }
    ],
    "additions": 86,
    "deletions": 12,
    "files_changed": 3
  }
}
```

## Wszystkie pola

Te pola trafiają do message_container . Karta potrzebuje opisu albo loadera. Pola oznaczone jako „Odpowiedzi na komendy” są pomijane, gdy publikujesz przez webhook.

| Pole | Typ | Co robi |
| --- | --- | --- |
| type | string | embed_message (domyślnie) albo system_message . |
| badge | string | Mała plakietka za nazwą w nagłówku, np. acme/web . Odpowiedzi na komendy |
| avatar_url | string | Obraz nałożony na ikonę karty. |
| color | string | Kolor krawędzi. Zobacz kolory niżej. |
| title | string | Pogrubiona pierwsza linia. |
| title_url | string | Zamienia tytuł w link. |
| sub_title | string | Druga pogrubiona linia pod tytułem. |
| description | string | Treść, w markdownie. |
| fields | array | [{ "field": "…", "value": "…" }] : wiersze z etykietą i wartością. |
| image_url , image_base64 | string | Obraz na karcie. |
| images | array | [{ "image_url": "…" }] : galeria kilku obrazów. |
| status | object lub string | Kolorowa pigułka obok tytułu. Zobacz niżej. Odpowiedzi na komendy |
| additions , deletions , files_changed | number | Statystyki diffu w stopce. Odpowiedzi na komendy |
| loader , loader_text , loader_sub_text | boolean, string | Spinner zamiast treści. |
| thinking | string | Rozumowanie ukryte za przełącznikiem **Show thinking**. Odpowiedzi na komendy |

## Status i statystyki diffu

Pigułka statusu opowiada historię, zanim ktokolwiek przeczyta tekst. Stoi obok tytułu albo, gdy tytułu nie ma, w stopce; statystyki diffu pojawiają się obok godziny. Jedno i drugie działa w odpowiedziach na komendy i korzysta z nich wbudowana integracja z GitHubem. Webhook je pomija.

#### Scalono pull request #212

#### Build na main nie powiódł się

#### maya: push do main

```json
{
  "message_container": {
    "color": "red",
    "title": "Build failed on main",
    "status": { "label": "Failing", "color": "red" },
    "description": "`search.test.js`: 2 of 212 tests failed."
  }
}
```

| Pole | Typ | Co robi |
| --- | --- | --- |
| status | object lub string | Zwykły string jest etykietą: "status": "Open" . |
| status.label | string | Tekst pigułki. Bez niego nie ma pigułki. |
| status.color | string | green , purple , red , orange , yellow , blue albo gray . |
| status.icon | string | Opcjonalna ikona z listy poniżej. |
| additions | number | Dodane linie, pokazywane jako zielone +86 . |
| deletions | number | Usunięte linie, pokazywane jako czerwone -12 . |
| files_changed | number | Zmienione pliki, pokazywane jako 3 files . |

### Ikony

| Wartość | Ikona | Typowe użycie |
| --- | --- | --- |
| pull_request | git-pull-request | Otwarto pull request |
| pull_request_closed | git-pull-request-closed | Zamknięto bez scalania |
| merge , merged | git-merge | Scalono |
| commit | git-commit | Wypchnięty commit |
| issue | circle-dot | Otwarto issue |
| issue_closed | circle-check | Zamknięto issue |
| check | circle-check | Testy przeszły, zadanie zakończyło się sukcesem |

### Mapowanie, które sprawdza się dla GitHuba

Wbudowana integracja z GitHubem używa tych wartości; skopiuj je do własnych narzędzi.

| Zdarzenie | Etykieta | Kolor | Ikona |
| --- | --- | --- | --- |
| Otwarto pull request | Open | green | pull_request |
| Szkic | Draft | gray | pull_request |
| Scalono | Merged | purple | merged |
| Zamknięto bez scalania | Closed | red | pull_request_closed |
| Otwarto issue | Open | green | issue |
| Zamknięto issue | Closed | purple | issue_closed |
| Wypchnięto commit | Commit | gray | commit |
| Testy przeszły | Passing | green | check |
| Testy nie przeszły | Failing | red | brak |

## Loader i rozumowanie

Przy wszystkim, co chwilę trwa, jak odpowiedź AI czy długie zadanie, najpierw opublikuj kartę ze spinnerem, a potem zastąp ją wynikiem. Loader działa w webhookach i odpowiedziach na komendy. W odpowiedzi na komendę możesz też umieścić rozumowanie modelu w thinking : członkowie zobaczą przełącznik **Show thinking** zamiast ściany tekstu.

Najpierw: loader

maya: kiedy jest standup?

Potem: odpowiedź, rozumowanie zwinięte

```json
{
  "message_container": {
    "type": "embed_message",
    "color": "blue",
    "loader": true,
    "loader_text": "Thinking…",
    "loader_sub_text": "Reading the last 50 messages"
  }
}
```

```json
{
  "message_container": {
    "type": "embed_message",
    "color": "blue",
    "sub_title": "maya: when is the standup?",
    "description": "Standup is at **09:30**, in #daily.",
    "thinking": "Checked the pinned messages and the recurring event in #daily…"
  }
}
```

| Pole | Typ | Co robi |
| --- | --- | --- |
| loader | boolean | true pokazuje spinner zamiast treści. |
| loader_text | string | Linia obok spinnera, np. „Myślę…”. |
| loader_sub_text | string | Mniejsza linia pod nią. |
| thinking | string | Zwinięte rozumowanie pod opisem, w markdownie. |

Aby zamienić loader na odpowiedź, zaktualizuj wiadomość nową kartą bez loader . Jak to zrobić, opisujemy w [aktualizacjach na żywo](https://docs.mss.gs/pl/live-updates).

## Długie opisy

Opis może mieć do 50 000 bajtów. Po pierwszych 1000 członkowie widzą początek i przycisk **Show more**, który wczytuje resztę, więc długi raport nie zalewa kanału.

## Wiadomości systemowe

Ustaw "type": "system_message" dla komunikatu zamiast posta bota: przerw serwisowych, zmian zasad i wszystkiego, co mówi w imieniu samej społeczności. Przyjmuje te same pola i przyciski.

```json
{
  "message_container": {
    "type": "system_message",
    "color": "orange",
    "title": "Maintenance tonight",
    "description": "The build servers are down from 22:00 to 23:00."
  }
}
```

## Kolory

Kolor krawędzi to najszybszy sygnał na karcie. Używaj zawsze tego samego koloru dla tego samego rodzaju wiadomości.

| Kolor | Do czego |
| --- | --- |
| green | Sukces: testy przeszły, wdrożone, gotowe |
| red | Porażka: błąd, awaria, odrzucone |
| orange | Ostrzeżenie, któremu trzeba się przyjrzeć |
| yellow | Czeka na kogoś: akceptacje, pytania |
| blue | Informacja, domyślny |
| purple | Zdarzenia w kodzie albo coś wyjątkowego |

## Zbuduj swój embed

Edytuj pola albo payload JSON: jedno i drugie zmienia się razem. Podgląd pokazuje wiadomość dokładnie tak, jak pojawi się na kanale. To prawdziwe body webhooka; skopiuj je, kiedy wszystko się zgadza.

## Buduj dalej
