---
title: "Κάρτες μηνυμάτων: τι μπορεί να δείξει ένα bot στο mssgs"
description: "Σχεδίασε μηνύματα bot για το mssgs: τίτλοι, markdown, πεδία, εικόνες, ενδείξεις κατάστασης με στατιστικά diff, loader, συλλογισμός, χρώματα, ζωντανός builder."
canonical: https://docs.mss.gs/el/bots
language: el
---

# Σχεδίασε κάρτες μηνυμάτων

Ό,τι δημοσιεύει ένα bot, είτε από webhook, είτε ως απάντηση σε εντολή, είτε ως ενημέρωση μετά από πάτημα κουμπιού, είναι κάρτα. Μια καλή κάρτα λέει με μια ματιά τι συνέβη: μια χρωματιστή άκρη, ένας τίτλος, μια κατάσταση και από κάτω οι λεπτομέρειες.

## Τι μπορείς να κάνεις

- **Δείξε μια κατάσταση** Μια χρωματιστή ένδειξη όπως Open, Merged ή Passing, με τις γραμμές που προστέθηκαν και αφαιρέθηκαν.

- **Παράθεσε τις λεπτομέρειες** Γραμμές με ετικέτα και τιμή που τα μέλη αντιγράφουν με ένα πάτημα.

- **Γράψε σε markdown** Έντονα, inline κώδικας, μπλοκ κώδικα, παραθέσεις και πλαίσια ελέγχου.

- **Δείξε ότι δουλεύεις** Ένα spinner όσο το bot σου σκέφτεται, και μετά ο συλλογισμός του πίσω από έναν διακόπτη.

Στην εφαρμογή

#### Άνοιξε το pull request #212

Ταχύτερη αναζήτηση στη λίστα καναλιών

#### Το build #1847 πέρασε

#### Το api.acme.com είναι εκτός λειτουργίας

Τέσσερις κάρτες όπως τις βλέπουν τα μέλη. Η καθεμία είναι λίγες γραμμές JSON.

- [Ανατομία](#anatomy)

- [Όλα τα πεδία](#fields)

- [Κατάσταση και στατιστικά diff](#status)

- [Loader και συλλογισμός](#ai)

- [Μηνύματα συστήματος](#system)

- [Χρώματα](#colors)

- [Φτιάξε μία](#try)

## Η ανατομία μιας κάρτας

Τα μέρη μιας κάρτας, από πάνω προς τα κάτω. Παράλειψε ό,τι δεν χρειάζεσαι: μια κάρτα μόνο με τίτλο είναι εντάξει.

#### Άνοιξε το pull request #212

Ταχύτερη αναζήτηση στη λίστα καναλιών

- **Κεφαλίδα** «Message from» και ένα όνομα: το όνομα του webhook ή, σε απάντηση εντολής, το όνομα της κοινότητάς σου. Μια απάντηση μπορεί να προσθέσει ένα badge , όπως το αποθετήριο.

- **Τίτλος και κατάσταση** Το title , που γίνεται σύνδεσμος όταν ορίσεις title_url , με την ένδειξη status δίπλα του.

- **Υπότιτλος** Μια δεύτερη γραμμή με έντονα, το sub_title .

- **Περιγραφή** Το κυρίως κείμενο, σε markdown.

- **Πεδία** Γραμμές με ετικέτα και τιμή, με κουμπί αντιγραφής.

- **Υποσέλιδο** Η ώρα, και οι γραμμές που προστέθηκαν και αφαιρέθηκαν, αν τις στείλεις.

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

## Όλα τα πεδία

Αυτά μπαίνουν στο message_container . Μια κάρτα χρειάζεται περιγραφή ή loader. Τα πεδία με τη σήμανση «Απαντήσεις σε εντολές» παραλείπονται όταν δημοσιεύεις μέσω webhook.

| Πεδίο | Τύπος | Τι κάνει |
| --- | --- | --- |
| type | string | embed_message (η προεπιλογή) ή system_message . |
| badge | string | Ένα μικρό σήμα μετά το όνομα στην κεφαλίδα, όπως acme/web . Απαντήσεις σε εντολές |
| avatar_url | string | Μια εικόνα πάνω από το εικονίδιο της κάρτας. |
| color | string | Το χρώμα της άκρης. Δες τα χρώματα παρακάτω. |
| title | string | Η πρώτη γραμμή, με έντονα. |
| title_url | string | Κάνει τον τίτλο σύνδεσμο. |
| sub_title | string | Μια δεύτερη γραμμή με έντονα, κάτω από τον τίτλο. |
| description | string | Το κυρίως κείμενο, σε markdown. |
| fields | array | [{ "field": "…", "value": "…" }] : γραμμές με ετικέτα και τιμή. |
| image_url , image_base64 | string | Μια εικόνα στην κάρτα. |
| images | array | [{ "image_url": "…" }] : μια συλλογή από πολλές εικόνες. |
| status | object ή string | Μια χρωματιστή ένδειξη δίπλα στον τίτλο. Δες παρακάτω. Απαντήσεις σε εντολές |
| additions , deletions , files_changed | number | Στατιστικά diff στο υποσέλιδο. Απαντήσεις σε εντολές |
| loader , loader_text , loader_sub_text | boolean, string | Ένα spinner αντί για το κυρίως κείμενο. |
| thinking | string | Συλλογισμός πίσω από έναν διακόπτη **Show thinking**. Απαντήσεις σε εντολές |

## Κατάσταση και στατιστικά diff

Μια ένδειξη κατάστασης λέει την ιστορία πριν διαβάσει κανείς το κείμενο. Βρίσκεται δίπλα στον τίτλο ή, όταν δεν υπάρχει τίτλος, στο υποσέλιδο. Τα στατιστικά diff εμφανίζονται δίπλα στην ώρα. Και τα δύο λειτουργούν σε απαντήσεις εντολών, και τα χρησιμοποιεί η έτοιμη ενσωμάτωση GitHub. Ένα webhook τα παραλείπει.

#### Έγινε merge το pull request #212

#### Το build απέτυχε στο main

#### maya: push στο 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."
  }
}
```

| Πεδίο | Τύπος | Τι κάνει |
| --- | --- | --- |
| status | object ή string | Ένα σκέτο string είναι η ετικέτα: "status": "Open" . |
| status.label | string | Το κείμενο της ένδειξης. Χωρίς αυτό δεν υπάρχει ένδειξη. |
| status.color | string | green , purple , red , orange , yellow , blue ή gray . |
| status.icon | string | Ένα προαιρετικό εικονίδιο από την παρακάτω λίστα. |
| additions | number | Γραμμές που προστέθηκαν, εμφανίζονται ως πράσινο +86 . |
| deletions | number | Γραμμές που αφαιρέθηκαν, εμφανίζονται ως κόκκινο -12 . |
| files_changed | number | Αρχεία που άλλαξαν, εμφανίζονται ως 3 files . |

### Εικονίδια

| Τιμή | Εικονίδιο | Τυπική χρήση |
| --- | --- | --- |
| pull_request | git-pull-request | Άνοιξε ένα pull request |
| pull_request_closed | git-pull-request-closed | Έκλεισε χωρίς merge |
| merge , merged | git-merge | Έγινε merge |
| commit | git-commit | Ένα commit που έγινε push |
| issue | circle-dot | Άνοιξε ένα issue |
| issue_closed | circle-check | Έκλεισε ένα issue |
| check | circle-check | Τα τεστ πέρασαν, μια εργασία ολοκληρώθηκε με επιτυχία |

### Μια αντιστοίχιση που δουλεύει για το GitHub

Η έτοιμη ενσωμάτωση GitHub χρησιμοποιεί αυτές τις τιμές. Αντίγραψέ τες για τα δικά σου εργαλεία.

| Συμβάν | Ετικέτα | Χρώμα | Εικονίδιο |
| --- | --- | --- | --- |
| Άνοιξε pull request | Open | green | pull_request |
| Πρόχειρο (draft) | Draft | gray | pull_request |
| Έγινε merge | Merged | purple | merged |
| Έκλεισε χωρίς merge | Closed | red | pull_request_closed |
| Άνοιξε issue | Open | green | issue |
| Έκλεισε issue | Closed | purple | issue_closed |
| Έγινε push ενός commit | Commit | gray | commit |
| Τα τεστ πέρασαν | Passing | green | check |
| Τα τεστ απέτυχαν | Failing | red | κανένα |

## Loader και συλλογισμός

Για ό,τι παίρνει λίγο χρόνο, όπως μια απάντηση AI ή μια μεγάλη εργασία, δημοσίευσε πρώτα μια κάρτα με spinner και μετά αντικατάστησέ τη με το αποτέλεσμα. Ο loader λειτουργεί σε webhooks και σε απαντήσεις εντολών. Σε απάντηση εντολής μπορείς επίσης να βάλεις τον συλλογισμό του μοντέλου στο thinking : τα μέλη βλέπουν έναν διακόπτη **Show thinking** αντί για έναν τοίχο κειμένου.

Πρώτα: ο loader

maya: πότε είναι το standup;

Μετά: η απάντηση, με τον συλλογισμό διπλωμένο

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

| Πεδίο | Τύπος | Τι κάνει |
| --- | --- | --- |
| loader | boolean | Το true δείχνει το spinner αντί για το κυρίως κείμενο. |
| loader_text | string | Η γραμμή δίπλα στο spinner, όπως «Σκέφτομαι…». |
| loader_sub_text | string | Μια μικρότερη γραμμή από κάτω. |
| thinking | string | Διπλωμένος συλλογισμός κάτω από την περιγραφή, σε markdown. |

Για να αντικαταστήσεις τον loader με την απάντηση, ενημέρωσε το μήνυμα με μια νέα κάρτα χωρίς loader . Πώς γίνεται θα το βρεις στις [ζωντανές ενημερώσεις](https://docs.mss.gs/el/live-updates).

## Μεγάλες περιγραφές

Μια περιγραφή μπορεί να φτάσει τα 50.000 bytes. Μετά τα πρώτα 1.000, τα μέλη βλέπουν την αρχή και ένα κουμπί **Show more** που φορτώνει τα υπόλοιπα, ώστε μια μεγάλη αναφορά να μην πλημμυρίζει το κανάλι.

## Μηνύματα συστήματος

Όρισε "type": "system_message" για μια ανακοίνωση αντί για ανάρτηση bot: παράθυρα συντήρησης, αλλαγές κανόνων, ό,τι μιλά εκ μέρους της ίδιας της κοινότητας. Δέχεται τα ίδια πεδία και κουμπιά.

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

## Χρώματα

Το χρώμα της άκρης είναι το πιο γρήγορο σήμα σε μια κάρτα. Χρησιμοποίησε το ίδιο χρώμα για το ίδιο είδος είδησης, κάθε φορά.

| Χρώμα | Χρησιμοποίησέ το για |
| --- | --- |
| green | Επιτυχία: πέρασε, έγινε deploy, ολοκληρώθηκε |
| red | Αποτυχία: απέτυχε, εκτός λειτουργίας, απορρίφθηκε |
| orange | Μια προειδοποίηση που θέλει μια ματιά |
| yellow | Αναμονή για κάποιον: εγκρίσεις, ερωτήσεις |
| blue | Πληροφορία, η προεπιλογή |
| purple | Συμβάντα κώδικα ή κάτι ξεχωριστό |

## Φτιάξε το embed σου

Επεξεργάσου τα πεδία ή το JSON payload: τα δύο μένουν συγχρονισμένα. Η προεπισκόπηση δείχνει το μήνυμα ακριβώς όπως θα εμφανιστεί σε ένα κανάλι. Αυτό είναι το πραγματικό body του webhook. Αντίγραψέ το όταν όλα δείχνουν σωστά.

## Συνέχισε να φτιάχνεις
