# Sabitlenen mesajlar

Sabitlenen mesajlar için REST API rotaları.

## Sabitlenen mesajları listele (`listPins`)

**`GET https://noluyo.net/api/v1/channels/{channel_id}/pins`** (`GET /channels/{channel_id}/pins`)

Sabitlenen mesajları, en son sabitlenenden başlayarak döndürür. limit 1 ile 50 arasındadır, varsayılanı 50'dir. Sayfalamak için has_more true olduğu sürece before'a son öğenin pinned_at değerini ver. ReadMessageHistory yoksa liste boştur. Sunucu kanalında, içerik intent'i olmayan bir bot başkalarının mesajlarını içeriği çıkarılmış olarak alır; botu etiketleyenler hariç.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ReadMessageHistory`
- **Hız sınırı:** `read` (30 / 5s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `limit` | `query` | `integer` | - | Kaç sabitleme döneceği. (1–50 · = 50) |
| `before` | `query` | `datetime` | - | Bu zamandan önce yapılan sabitlemeler (RFC 3339). |

### Örnek çağrılar

```bash
curl "https://noluyo.net/api/v1/channels/111500000000000100/pins?limit=50" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.listPins("111500000000000100", { limit: 50 });
```

```py
# Python (noluyo_bot)
await bot.rest.list_pins("111500000000000100", {"limit": 50})
```

### Yanıt (200)

```json
{
  "items": [
    {
      "pinned_at": "2026-11-05T09:00:00Z",
      "message": {
        "id": "111600000000000000",
        "type": 0,
        "channel_id": "111500000000000100",
        "guild_id": "111500000000000000",
        "author": {
          "id": "111540000000000001",
          "username": "ornek_bot",
          "display_name": "Örnek Bot",
          "avatar": null,
          "cosmetics": null,
          "bot": true
        },
        "content": "Merhaba!",
        "timestamp": "2026-11-04T22:58:33.427Z",
        "edited_timestamp": null,
        "attachments": [],
        "mentions": [],
        "mention_roles": [],
        "mention_everyone": false,
        "pinned": true
      }
    }
  ],
  "has_more": false
}
```

### Hata kodları

- **HTTP 400:** `validation_failed`, `invalid_channel_type`
- **HTTP 401:** `unauthorized`
- **HTTP 403:** `missing_access`, `temporarily_banned`
- **HTTP 404:** `unknown_channel`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`

## Mesajı sabitle (`pinMessage`)

**`PUT https://noluyo.net/api/v1/channels/{channel_id}/pins/{message_id}`** (`PUT /channels/{channel_id}/pins/{message_id}`)

Mesajı sabitler ve kanala bir sabitleme bildirimi (mesaj türü 6) gönderir. Zaten sabit olan mesajı sabitlemek bir şey değiştirmez. Bir kanalda en çok 250 sabit mesaj olur. Sistem mesajları sabitlenemez.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ManageMessages`, `ReadMessageHistory`
- **Hız sınırı:** `write` (10 / 10s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |

### Örnek çağrılar

```bash
curl -X PUT "https://noluyo.net/api/v1/channels/111500000000000100/pins/111600000000000000" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.pinMessage("111500000000000100", "111600000000000000");
```

```py
# Python (noluyo_bot)
await bot.rest.pin_message("111500000000000100", "111600000000000000")
```

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

- **HTTP 400:** `max_pins`, `invalid_channel_type`
- **HTTP 401:** `unauthorized`
- **HTTP 403:** `system_message`, `missing_access`, `missing_permissions`, `temporarily_banned`, `dm_closed`, `dm_window_closed`
- **HTTP 404:** `unknown_channel`, `unknown_message`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`

## Mesajın sabitlemesini kaldır (`unpinMessage`)

**`DELETE https://noluyo.net/api/v1/channels/{channel_id}/pins/{message_id}`** (`DELETE /channels/{channel_id}/pins/{message_id}`)

Mesajın sabitlemesini kaldırır. Kanala bir şey gönderilmez.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ManageMessages`, `ReadMessageHistory`
- **Hız sınırı:** `write` (10 / 10s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |

### Örnek çağrılar

```bash
curl -X DELETE "https://noluyo.net/api/v1/channels/111500000000000100/pins/111600000000000000" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.unpinMessage("111500000000000100", "111600000000000000");
```

```py
# Python (noluyo_bot)
await bot.rest.unpin_message("111500000000000100", "111600000000000000")
```

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

- **HTTP 400:** `invalid_channel_type`
- **HTTP 401:** `unauthorized`
- **HTTP 403:** `system_message`, `missing_access`, `missing_permissions`, `temporarily_banned`, `dm_closed`, `dm_window_closed`
- **HTTP 404:** `unknown_channel`, `unknown_message`
- **HTTP 429:** `rate_limited`
- **HTTP 503:** `maintenance`
