# Tepkiler

Tepkiler için REST API rotaları.

## Mesaja tepki ver (`addReaction`)

**`PUT https://noluyo.net/api/v1/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me`** (`PUT /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/@me`)

Botun tepkisini ekler. Mesajda olmayan bir emoji AddReactions ister; zaten olan emojiye katılmak istemez, ama bot susturulmuşsa buna da izin verilmez. Bir mesajda en çok 20 farklı emoji olur. İki kez tepki vermek bir şey değiştirmez.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ReadMessageHistory`, `AddReactions`
- **Hız sınırı:** `reaction` (4 / 1s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |
| `emoji` | `path` | `string` | evet | URL kodlanmış Unicode emoji; ya da sunucu emojisi için ad:id, hareketliyse a:ad:id veya yalnızca ID. |

### Örnek çağrılar

```bash
curl -X PUT "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000/reactions/%F0%9F%91%8B/@me" \
  -H "Authorization: Bot $BOT_TOKEN"
```

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

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

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

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

## Tepkiyi kaldır (`removeReaction`)

**`DELETE https://noluyo.net/api/v1/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/{user_id}`** (`DELETE /channels/{channel_id}/messages/{message_id}/reactions/{emoji}/{user_id}`)

Bir kişinin tepkisini kaldırır. Botun kendi tepkisi için user_id @me olabilir; başkasınınki ManageMessages ister.

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

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |
| `emoji` | `path` | `string` | evet | URL kodlanmış Unicode emoji; ya da sunucu emojisi için ad:id, hareketliyse a:ad:id veya yalnızca ID. |
| `user_id` | `path` | `string` | evet | Kullanıcı ID'si ya da botun kendisi için @me. |

### Örnek çağrılar

```bash
curl -X DELETE "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000/reactions/%F0%9F%91%8B/@me" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.removeReaction("111500000000000100", "111600000000000000", "👋", "@me");
```

```py
# Python (noluyo_bot)
await bot.rest.remove_reaction("111500000000000100", "111600000000000000", "👋", "@me")
```

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

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

## Tepki verenleri listele (`listReactors`)

**`GET https://noluyo.net/api/v1/channels/{channel_id}/messages/{message_id}/reactions/{emoji}`** (`GET /channels/{channel_id}/messages/{message_id}/reactions/{emoji}`)

Bir emojiyle tepki veren kullanıcıları döndürür. limit 1 ile 100 arasındadır, varsayılanı 25'tir; sayfalamak için after'a bir kullanıcı ID'si ver.

- **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. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |
| `emoji` | `path` | `string` | evet | URL kodlanmış Unicode emoji; ya da sunucu emojisi için ad:id, hareketliyse a:ad:id veya yalnızca ID. |
| `limit` | `query` | `integer` | - | Kaç kullanıcı döneceği. (1–100 · = 25) |
| `after` | `query` | `ID` | - | Bu kullanıcı ID'sinden sonrasını getirir. |

### Örnek çağrılar

```bash
curl "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000/reactions/%F0%9F%91%8B?limit=25" \
  -H "Authorization: Bot $BOT_TOKEN"
```

```js
// JavaScript (noluyo-bot)
await bot.rest.listReactors("111500000000000100", "111600000000000000", "👋", { limit: 25 });
```

```py
# Python (noluyo_bot)
await bot.rest.list_reactors("111500000000000100", "111600000000000000", "👋", {"limit": 25})
```

### Yanıt (200)

```json
[
  {
    "id": "111400000000000000",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  }
]
```

### Hata kodları

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

## Bir emojinin tepkilerini kaldır (`clearEmojiReactions`)

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

Mesajdan bu emojiyle verilmiş tüm tepkileri kaldırır.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ManageMessages`
- **Hız sınırı:** `reaction` (4 / 1s)

### Parametreler

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `channel_id` | `path` | `string` | evet | Kanal ID'si. |
| `message_id` | `path` | `string` | evet | Mesaj ID'si. |
| `emoji` | `path` | `string` | evet | URL kodlanmış Unicode emoji; ya da sunucu emojisi için ad:id, hareketliyse a:ad:id veya yalnızca ID. |

### Örnek çağrılar

```bash
curl -X DELETE "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000/reactions/%F0%9F%91%8B" \
  -H "Authorization: Bot $BOT_TOKEN"
```

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

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

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

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

## Tüm tepkileri kaldır (`clearReactions`)

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

Mesajdaki tüm tepkileri kaldırır.

- **Kimlik:** Bot token'ı (`Authorization: Bot <BOT_TOKEN>`)
- **İzinler:** `ManageMessages`
- **Hız sınırı:** `reaction` (4 / 1s)

### 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/messages/111600000000000000/reactions" \
  -H "Authorization: Bot $BOT_TOKEN"
```

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

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

### Yanıt (204)

Yanıt gövdesi yok.

### Hata kodları

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