---
title: "Eğik çizgi komutları: mssgs topluluğuna /komutlar ekle"
description: "mssgs topluluğuna kendi eğik çizgi komutlarını ver: mssgs mesajı web servisine gönderir ve JSON yanıtını kart olarak paylaşır. Kurulum, yanıtlar, limitler."
canonical: https://docs.mss.gs/tr/commands
language: tr
---

# Eğik çizgi komutları ekle

Topluluğuna kendi /komutlarını ver. Bir üye bunlardan birini yazdığında mssgs mesajı web servisine gönderir ve servisin verdiği yanıtı paylaşır: bir kart, düğmeler ya da yalnızca o üyenin görebileceği bir yanıt.

## Neler yapabilirsin

- **Kartla yanıt ver** JSON ile yanıt ver, yanıtın kanalda bir kart olarak görünsün.

- **Kimin sorduğunu bil** Üyeyi ve rollerini alırsın, böylece kimin neyi yapabileceğini kontrol edebilirsin.

- **Özel yanıt ver** Yanıtı yalnızca soran üyeye göster.

- **Acele etme** 5 saniye içinde bir yükleme kartıyla yanıt ver, sonra işi callback URL üzerinden bitir.

Uygulamada

/ yaz, topluluğun komutları görünsün

#### Amsterdam

Servisin yanıt verir, mssgs kartı paylaşır

Seçici de kart da uygulamanın kendisine ait. Alt bilgi kimin hangi komutu kullandığını söyler.

- [Hızlı başlangıç](#quick-start)

- [Ayarlar](#settings)

- [Sana gelen](#request)

- [Senin yanıtın](#reply)

- [Beş saniye](#timing)

- [Özel yanıtlar](#private)

- [Tam bir örnek](#example)

- [Limitler](#limits)

## Hızlı başlangıç

- 1 Tetikleyiciyi oluştur Masaüstü uygulamasında topluluğunun **Manage Server → Triggers** bölümünü aç ve bir tetikleyici ekle: tepki vereceği komut, örneğin /weather , ve web servisinin URL’si.

### Mesajı al

Bir üye /weather ile başlayan bir mesaj gönderdiğinde mssgs onu bir POST isteğiyle URL’ine gönderir:

```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 ile yanıt ver

5 saniye içinde 2xx durum koduyla ve JSON ile yanıt ver. Yanıtın kanalda bir karta dönüşür.

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

## Ayarlar

Her tetikleyicinin **Manage Server → Triggers** içinde şu ayarları vardır.

| Ayar | Ne yapar |
| --- | --- |
| Trigger Name | Tetikleyicinin adı; seçicide komutun yanında görünür. |
| Word to Match | Mesajın başlaması gereken metin, örneğin /weather . Eğik çizgi alışılmış olandır ama zorunlu değildir. |
| URL Endpoint | mssgs’in mesajı gönderdiği adres. |
| Webhook Secret | İsteğe bağlı. mssgs her isteği bununla imzalar, aşağıya bak. |
| Active | Tetikleyiciyi silmeden kapatır. |
| Post Matching Message | Üyenin kendi /weather Amsterdam mesajının kanalda senin yanıtının üstünde kalıp kalmayacağı. |
| Show Loading Reply | Servisin çalışırken bir yükleme kartı gösterir. |
| Allowed User Groups | Yalnızca bu rollerdeki üyeler onu tetikler. Diğer herkes için sıradan bir mesajdır. |

## Sana gelen

JSON gövdeli bir POST isteği. Başlıklar arasında User-Agent: mssgs-webhook/1.0 bulunur.

| Alan | Tür | Nedir |
| --- | --- | --- |
| server_guid | string | Topluluk. |
| channel_guid | string | Mesajın gönderildiği kanal. |
| trigger_match | string | Eşleşen komut, örneğin /weather . |
| message.content | string | Komut dahil mesajın tamamı. |
| message.member_guid | string | Mesajı gönderen üye, bu topluluktaki haliyle. |
| message.user_guid | string | Aynı kişinin hesabı; her toplulukta aynıdır. |
| message.group_guids | array | Üyenin sahip olduğu roller. |
| message.cms | number | Gönderildiği zaman, milisaniye cinsinden. |
| message.is_action_button | boolean | Tetikleyiciyi yazılan bir komut değil de bir düğme çalıştırdıysa true . |
| message.action_payload | object | Düğme basışlarında düğmenin payload verisi. |
| callback_url | string | Yanıtını 30 dakika boyunca sonradan güncelle ya da sil. |
| stream_url | string | Yanıtına gelen yanıtların, tepkilerin ve düğme basışlarının 10 dakika boyunca canlı akışı. |

### Kimin neyi yapabileceğini kontrol etmek

message.group_guids değerini güvendiğin rollerle karşılaştır, örneğin /ban komutunu yalnızca moderatörler çalıştırabilsin diye. Bir komutu diğer herkesten tamamen uzak tutmak için rollerini tetikleyicinin ayarlarında belirle.

## Senin yanıtın

JSON gövdeli herhangi bir 2xx durum kodu, en fazla 4 MB. message_container ya da actions alanlarından en az birini gönder.

| Alan | Tür | Nedir |
| --- | --- | --- |
| message_container | object | Kart. Mesaj kartlarındaki her alan burada çalışır; durum kapsülü, rozet, diff istatistikleri ve katlanmış akıl yürütme dahil. |
| title , description , color , ... | string | Kısayol: en üst düzeydeki kart alanları senin için bir karta sarılır. |
| actions | array | Kartın altındaki düğmeler. Düğmelere bak. |
| visible_to_member_guids | array | Yanıtı yalnızca bu üyeler görür. Özel yanıtlara bak. |

## Beş saniye

mssgs yanıtın için 5 saniye bekler. Daha fazla zamana ihtiyacın varsa hemen bir yükleme kartıyla yanıt ver ve işi 30 dakika geçerli kalan callback_url üzerinden bitir.

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

## Özel yanıtlar

Üye kimliklerini visible_to_member_guids içine koy, yanıtını yalnızca onlar görsün. Yalnızca soran kişiye yanıt vermek için istekteki member_guid değerini kullan.

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

## Tam bir örnek

Node.js ve Express ile yazılmış, kartla yanıt veren bir /weather komutu.

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

## Limitler

| Limit | Değer |
| --- | --- |
| Yanıt süresi | 5 saniye |
| Yanıt boyutu | 4 MB |
| Üye başına komut | 5 saniyede 5 |
| Yanıtı sonradan güncelleme | callback_url üzerinden 30 dakika |
| Yanıtın canlı akışı | stream_url üzerinden 10 dakika |

## Geliştirmeye devam et
