# Gateway olayları, opcode'lar, intent'ler ve kapanış kodları

Son güncelleme: 2026-11-11 (11 Kasım 2026) · N'oluyo bot gateway'inde her çerçeve `op` alanı taşıyan bir JSON nesnesidir.

## Opcode'lar

### `op: 0` — DISPATCH (Bot alır)

Bir olay. `t` adını, `s` sıra numarasını, `d` içeriğini verir. Son `s` saklanır: resume için gerekir.

```json
{
  "op": 0,
  "d": {
    "id": "21531879014400001"
  },
  "s": 42,
  "t": "GUILD_DELETE"
}
```

### `op: 1` — HEARTBEAT (Bot gönderir)

Bağlantıyı canlı tutar; her `heartbeat_interval` süresinde gönderilir. Sunucu op 11 ile yanıtlar, `d` alanını okumaz. Heartbeat gelmezse bağlantı kapanış kodu olmadan kopar, oturum sürdürülebilir kalır.

```json
{
  "op": 1,
  "d": 42
}
```

### `op: 2` — IDENTIFY (Bot gönderir)

Oturum başlatır. `token` ve `intents` zorunludur. `shard` `[id, count]` biçimindedir, verilmezse `[0, 1]` olur. `presence` isteğe bağlıdır. Uygulamanın oturum başlatma haklarından birini harcar.

```json
{
  "op": 2,
  "d": {
    "token": "<token>",
    "intents": 513,
    "shard": [
      0,
      1
    ],
    "presence": {
      "status": "online",
      "activities": []
    }
  }
}
```

### `op: 3` — PRESENCE_UPDATE (Bot gönderir)

Botun durumunu değiştirir: `online`, `idle`, `dnd` ya da `invisible`. Bir oturum dakikada 5 kez gönderebilir; fazlasında `RATE_LIMITED` gelir ve güncelleme yok sayılır.

```json
{
  "op": 3,
  "d": {
    "status": "idle",
    "activities": []
  }
}
```

### `op: 4` — VOICE_STATE_UPDATE (Bot gönderir)

Bir sunucunun ses kanalına katılmayı (`channel_id` dolu) ya da o sunucuda sesten ayrılmayı (`channel_id` null) ister. Katılma `VOICE_SERVER_UPDATE` ya da `VOICE_JOIN_ERROR` ile yanıtlanır; ayrılma ikisini de göndermez. Intent gerektirmez, kanalda `ViewChannel`, `Connect` ve `Speak` izinleri gerekir. Bot sunucu başına 20 saniyede 5 kez gönderebilir.

```json
{
  "op": 4,
  "d": {
    "guild_id": "21531879014400001",
    "channel_id": "21531879014400005",
    "self_mute": false
  }
}
```

### `op: 6` — RESUME (Bot gönderir)

Kopan bağlantıdan sonra oturumu sürdürür, oturum başlatma hakkı harcamaz. `seq` sonrasında kaçırılan olaylar yeniden gönderilir, ardından `RESUMED` gelir. Oturum artık yoksa op 9 gelir.

```json
{
  "op": 6,
  "d": {
    "token": "<token>",
    "session_id": "6f1c0e2ab7d94c3f8e5a1d0b9c7e4a26",
    "seq": 42
  }
}
```

### `op: 7` — RECONNECT (Bot alır)

Sunucu kapanıyor. Yeniden bağlanıp resume yapılır.

```json
{
  "op": 7,
  "d": null,
  "s": null,
  "t": null
}
```

### `op: 8` — REQUEST_GUILD_MEMBERS (Bot gönderir)

Bir sunucunun üyelerini ister; yanıt `GUILD_MEMBERS_CHUNK` olarak gelir. `query` ve `user_ids` alanlarından tam olarak biri gönderilir. Boş `query` tam listedir ve `GUILD_MEMBERS` ister; `presences: true` `GUILD_PRESENCES` ister. Aynı anda tek istek olur.

```json
{
  "op": 8,
  "d": {
    "guild_id": "21531879014400001",
    "query": "ay",
    "limit": 10,
    "presences": false,
    "nonce": "arama-1"
  }
}
```

### `op: 9` — INVALID_SESSION (Bot alır)

Oturum sürdürülemez. `d` her zaman false'tur: op 2 ile yeni oturum açılır.

```json
{
  "op": 9,
  "d": false,
  "s": null,
  "t": null
}
```

### `op: 10` — HELLO (Bot alır)

Her bağlantının ilk çerçevesi. `heartbeat_interval` milisaniyedir.

```json
{
  "op": 10,
  "d": {
    "heartbeat_interval": 41250
  },
  "s": null,
  "t": null
}
```

### `op: 11` — HEARTBEAT_ACK (Bot alır)

Op 1'in yanıtı. Gelmezse bağlantı ölmüştür: yeniden bağlanıp resume yapılır.

```json
{
  "op": 11,
  "d": null,
  "s": null,
  "t": null
}
```

### `op: 30` — PHONE_CAMERA (Bot gönderir)

Yalnızca kişilerin uygulamaları içindir. Gönderen bot 4001 ile kapatılır.

```json
{
  "op": 30,
  "d": {}
}
```

### `op: 31` — ACTIVE (Bot gönderir)

Yalnızca kişilerin uygulamaları içindir. Gönderen bot 4001 ile kapatılır.

```json
{
  "op": 31,
  "d": null
}
```

## Kapanış kodları

| Kod | Ad | Yeniden bağlan | Açıklama |
| --- | --- | --- | --- |
| `4000` | `UNKNOWN_ERROR` | `reconnect: true` (Evet) | Sunucuda bir şeyler ters gitti. Yeniden bağlanılır. |
| `4001` | `UNKNOWN_OPCODE` | `reconnect: false` (Hayır) | Bot, olmayan ya da botlara açık olmayan bir opcode gönderdi. |
| `4002` | `DECODE_ERROR` | `reconnect: false` (Hayır) | Bir çerçeve ya da içerik okunamadı veya değerleri geçersiz. |
| `4003` | `NOT_AUTHENTICATED` | `reconnect: false` (Hayır) | Bot, identify'dan önce op 1, op 2 ya da op 6 dışında bir şey gönderdi veya 10 saniye içinde identify etmedi. |
| `4004` | `AUTHENTICATION_FAILED` | `reconnect: false` (Hayır) | Token yanlış ya da sıfırlandı, veya bot ya da sahibi devre dışı bırakıldı ya da silindi. Önce yeni token gerekir. |
| `4005` | `ALREADY_AUTHENTICATED` | `reconnect: false` (Hayır) | Bot, oturumu olan bir bağlantıda op 2 ya da op 6 gönderdi. |
| `4008` | `RATE_LIMITED` | `reconnect: true` (Evet) | Çok fazla çerçeve (dakikada 120) ya da kısa sürede çok fazla oturum başlatma. Beklenir, sonra yeniden bağlanılır. |
| `4010` | `MAINTENANCE` | `reconnect: true` (Evet) | Platform bakımda. Daha sonra yeniden denenir. |
| `4011` | `TOO_MANY_SESSIONS` | `reconnect: false` (Hayır) | Daha yeni bir oturum bunun yerini aldı: aynı shard yeniden identify edildi ya da botun oturumu çok fazla. Bir botun iki kopyası birbirini böyle düşürür. |
| `4012` | `INVALID_SHARD` | `reconnect: false` (Hayır) | `shard` biçimi ya da aralığı yanlış, veya izin verilenden çok shard istiyor. |
| `4013` | `INVALID_INTENTS` | `reconnect: false` (Hayır) | `intents` yok, sayı değil ya da tanımsız bitler içeriyor. |
| `4014` | `DISALLOWED_INTENTS` | `reconnect: false` (Hayır) | Bot izni olmayan ayrıcalıklı bir intent istedi ya da `op 8` oturumda olmayan bir intent gerektiriyor. |
| `4015` | `SHARDING_REQUIRED` | `reconnect: false` (Hayır) | Bot bu shard sayısı için çok fazla sunucuda. Yalnızca daha çok shard ile başarılı olur. |
| `4016` | `SESSION_START_LIMIT` | `reconnect: true` (Evet) | Günlük oturum başlatma hakları bitti. Yeniden bağlanmak için `GET /gateway/bot` yanıtındaki `reset_after` süresi beklenir. |

## Intent'ler

| Intent | Bit | Değer | Ayrıcalıklı | Açıklama |
| --- | --- | --- | --- | --- |
| `GUILDS` | `1 << 0` | `1` | Hayır | Sunucular, rolleri, kanalları ve sabitlemeler. |
| `GUILD_MEMBERS` | `1 << 1` | `2` | Evet | Üyelerin katılması, değişmesi ve ayrılması; op 8 ile tam liste. |
| `GUILD_MODERATION` | `1 << 2` | `4` | Hayır | Yasaklar ve kaldırılmaları. |
| `GUILD_EXPRESSIONS` | `1 << 3` | `8` | Hayır | Emojiler, çıkartmalar ve ses paneli. |
| `GUILD_WEBHOOKS` | `1 << 5` | `32` | Hayır | Bir kanalın webhook'larındaki değişiklikler. |
| `GUILD_INVITES` | `1 << 6` | `64` | Hayır | Oluşturulan ve silinen davetler. |
| `GUILD_VOICE_STATES` | `1 << 7` | `128` | Hayır | Seste kimlerin olduğu ve orada çalınan sesler. |
| `GUILD_PRESENCES` | `1 << 8` | `256` | Evet | Üyelerin çevrimiçi durumu ve etkinlikleri; op 8 ile de. |
| `GUILD_MESSAGES` | `1 << 9` | `512` | Hayır | Sunucu kanallarındaki mesajlar. |
| `GUILD_MESSAGE_REACTIONS` | `1 << 10` | `1024` | Hayır | Sunucu kanallarındaki tepkiler. |
| `GUILD_MESSAGE_TYPING` | `1 << 11` | `2048` | Hayır | Sunucu kanallarında yazıyor bildirimi. |
| `DIRECT_MESSAGES` | `1 << 12` | `4096` | Hayır | Sunucu dışındaki mesajlar. |
| `DIRECT_MESSAGE_REACTIONS` | `1 << 13` | `8192` | Hayır | Sunucu dışındaki tepkiler. |
| `DIRECT_MESSAGE_TYPING` | `1 << 14` | `16384` | Hayır | Sunucu dışında yazıyor bildirimi. |
| `MESSAGE_CONTENT` | `1 << 15` | `32768` | Evet | Mesajların içeriği. Kendi başına bir olay açmaz: bu intent olmadan mesajlar içeriği süzülmüş gelir. |
| `GUILD_SCHEDULED_EVENTS` | `1 << 16` | `65536` | Hayır | Sunucudaki etkinlikler. |
| `AUTO_MODERATION_CONFIGURATION` | `1 << 20` | `1048576` | Hayır | Otomatik moderasyon kurallarındaki değişiklikler. |

## Tüm olaylar

### `READY` — Oturum başladı

Op 2'den sonraki ilk olay. Botun kim olduğunu söyler ve bu shard'ın sunucularını `unavailable` olarak listeler; her biri ardından `GUILD_CREATE` olarak gelir, başka olaylar ondan önce de gelebilir. `session_id` resume için saklanır. Resume'da yeniden gönderilmez.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `v` | `integer` | evet | Gateway sürümü, şimdilik 1. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `session_id` | `string` | evet |  |
| `application` | `object` | evet |  |
| `application.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `shard` | `integer[]` | evet | `[id, count]`. |
| `guilds` | `object[]` | evet |  |

```json
{
  "v": 1,
  "user": {
    "id": "21879171579904005",
    "username": "selam_botu",
    "display_name": "Selam Botu",
    "avatar": null,
    "cosmetics": null,
    "bot": true
  },
  "session_id": "6f1c0e2ab7d94c3f8e5a1d0b9c7e4a26",
  "application": {
    "id": "21879167385600004"
  },
  "shard": [
    0,
    1
  ],
  "guilds": [
    {
      "id": "21531879014400001",
      "unavailable": true
    }
  ]
}
```

### `RESUMED` — Oturum sürdürüldü

Op 6'yı doğrular. `seq` sonrasında kaçırılan olaylar bundan önce gelir. Botun onaylamadığı `GUILD_CREATE`'ler yeniden gönderilir; `GUILD_MEMBERS_CHUNK` ve `RATE_LIMITED` gönderilmez, yeniden istenir.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

```json
{}
```

### `USER_UPDATE` — Botun profili değişti

Değişen profilin ardından botun kendi herkese açık profili. Bot başkasınınkini duymaz. Yalnızca shard 0'a gider.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `username` | `string` | evet |  |
| `display_name` | `string | null` | evet |  |
| `avatar` | `string | null` | evet | Avatar hash'i. |
| `cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |

```json
{
  "id": "21879171579904005",
  "username": "selam_botu",
  "display_name": "Merhaba Botu",
  "avatar": null,
  "cosmetics": null,
  "bot": true
}
```

### `VOICE_SERVER_UPDATE` — Ses bağlantı token'ı hazır

Op 4 isteğini (veya bir yöneticinin kanal taşımasını) medya sunucusu adresi, bağlanmak için 10 dakika geçerli salt-yayın token'ı ve kanalın saniyedeki bit cinsinden `bitrate` değeriyle yanıtlar. Bot bir LiveKit istemcisiyle doğrudan `endpoint` adresine bağlanır ve yalnızca tek bir mikrofon ses izi yayınlayabilir; kimsenin sesine abone olamaz.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `endpoint` | `string` | evet | Her zaman doludur (`wss://` ya da `ws://`). |
| `token` | `string` | evet | Salt-yayın LiveKit JWT (`canSubscribe: false`). Gizli tutulur. |
| `bitrate` | `integer` | evet | Kanalın saniyedeki bit cinsinden hedef ses bit hızı. |

```json
{
  "guild_id": "21531879014400001",
  "channel_id": "21531879014400005",
  "endpoint": "wss://noluyo.net",
  "token": "<livekit-jwt>",
  "bitrate": 64000
}
```

### `VOICE_JOIN_ERROR` — Ses kanalına katılma reddedildi

Op 4 reddedildiğinde ya da medya sunucusuna bağlanırken bot ses sınırı dolduğunda `VOICE_SERVER_UPDATE` yerine gönderilir. Gateway oturumu açık kalır.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID | null` | evet |  |
| `code` | `string` | evet | (unknown_guild, unknown_channel, invalid_channel_type, missing_permissions, voice_unavailable, channel_bot_limit, guild_bot_limit, app_voice_limit, bot_voice_full) |
| `message` | `string` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "channel_id": "21531879014400005",
  "code": "channel_bot_limit",
  "message": "This voice channel already has the maximum number of bots."
}
```

### `RATE_LIMITED` — Bir op çok hızlı olduğu için reddedildi

Hangi op'un ne zaman yeniden gönderileceğini söyler. Op 3, op 4 ve op 8 için gelir. Resume'da yeniden gönderilmez.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `opcode` | `integer` | evet |  |
| `retry_after` | `number` | evet | Beklenecek saniye. |
| `meta` | `object` | - | Op 4 ve op 8 için: reddedilen isteğin sunucusu (ve op 8'de nonce). Op 3'te yer almaz. |
| `meta.guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `meta.nonce` | `string` | - |  |

```json
{
  "opcode": 8,
  "retry_after": 12.5,
  "meta": {
    "guild_id": "21531879014400001",
    "nonce": "arama-1"
  }
}
```

### `GUILD_MEMBERS_CHUNK` — Op 8 yanıtının bir parçası

Bir parça en çok 1000 üye taşır. `chunk_index + 1`, `chunk_count` değerine eşit olduğunda yanıt biter. Botun içinde olmadığı ya da başka shard'daki bir sunucu için tek bir boş parça gelir.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `members` | `Member[]` | evet |  |
| `chunk_index` | `integer` | evet |  |
| `chunk_count` | `integer` | evet |  |
| `not_found` | `ID[]` | - | İstenen `user_ids` içinde üye olmayanlar. |
| `presences` | `Presence[]` | - | `presences: true` ile: parçadaki üyelerden çevrimiçi olanlar. |
| `nonce` | `string` | - | İsteğin `nonce` değeri. |

```json
{
  "guild_id": "21531879014400001",
  "members": [
    {
      "user": {
        "id": "14631410073600003",
        "username": "ayse",
        "display_name": "Ayşe",
        "avatar": null,
        "cosmetics": null
      },
      "nick": "Ayşe K.",
      "roles": [
        "22649241600000010"
      ],
      "joined_at": "2026-03-05T18:20:00Z",
      "mute": false,
      "deaf": false,
      "communication_disabled_until": null
    }
  ],
  "chunk_index": 0,
  "chunk_count": 1,
  "nonce": "arama-1"
}
```

### `INTERACTION_CREATE` — Biri butona bastı, menüden seçti, komut çalıştırdı ya da form gönderdi

Yalnızca basılan mesajın ya da komutun botuna, sunucusunun shard'ına gider; kişinin botla açtığı DM'den gelirse shard 0'a, member yerine user ile gider. Intent istemez. Basmada (type 3) sunucu `data.custom_id` ve `data.values` değerlerini mesajın şimdiki haline göre denetler, ama kişinin o işe yetkili olup olmadığını denetlemez: `member.permissions`'a bak. Komut çalıştırmada (type 2) seçenekleri tanımına göre ve komutu kimin kullanabileceğini denetler. Otomatik tamamlamada (type 4) yazılanı tanımına göre denetler; 3 saniye içinde callback type 8 ile yanıtlarsın, kişi yazdıkça 300 ms'de bir gelebilir. Gönderilen formda (type 5) her alanı açtığın forma göre, kişinin kanala, bota ve komuta erişimini yeniden denetler; her gönderim kendi token'ı olan yeni bir etkileşimdir. `context` sunucuyu (0) botunla açılmış DM'den (1) ayırır; DM'de yalnız `contexts` alanında 1 olan ve `default_member_permissions` koymayan global komutların çalışır.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `application_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 2 komut çalıştırmadır (eğik çizgi, kullanıcı menüsü ya da mesaj menüsü), 3 bir bileşene basmadır, 4 otomatik tamamlamadır: kişi seçeneklerinden birine yazıyor. 5 gönderilen formdur. (2, 3, 4, 5) |
| `token` | `string` | evet | Gizlidir, 15 dakika geçerlidir. Log'a yazma. |
| `version` | `integer` | evet | (1) |
| `context` | `integer` | evet | Nerede olduğu: 0 sunucu kanalı, 1 kişinin botunla açtığı DM. Her zaman vardır. DM'de member yerine user gelir, guild_id yoktur, app_permissions DM'de herkesin sahip olduğu izinlerdir. (0, 1) |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `member` | `object` | - |  |
| `member.user` | `object` | evet |  |
| `member.user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `member.user.username` | `string` | evet |  |
| `member.user.display_name` | `string | null` | evet |  |
| `member.user.avatar` | `string | null` | evet | Avatar hash'i. |
| `member.user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `member.user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `member.nick` | `string | null` | evet |  |
| `member.roles` | `ID[]` | evet | @everyone hariç rol ID'leri. |
| `member.joined_at` | `datetime` | evet |  |
| `member.mute` | `boolean` | evet |  |
| `member.deaf` | `boolean` | evet |  |
| `member.communication_disabled_until` | `string | null` | evet | Susturma sürerken doludur. |
| `member.permissions` | `permissions` | - | Ondalık metin olarak izin bit alanı. Metin yerine sayı veya tanımlı olmayan bitler invalid_body verir. |
| `user` | `object` | - |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `app_permissions` | `permissions` | evet | Ondalık metin olarak izin bit alanı. Metin yerine sayı veya tanımlı olmayan bitler invalid_body verir. |
| `locale` | `string` | evet | Basan ya da çalıştıran kişinin dili. |
| `message` | `Message | PressedEphemeral` | - | Basılan mesaj. Botun kendi mesajı, intent'lerinden bağımsız eksiksiz gelir; ephemeral mesajda yalnızca id, channel_id, flags, author ve components. Yalnızca basmada; gönderilen form taşımaz. |
| `data` | `object | object | object` | evet |  |

```json
{
  "id": "111804206284800099",
  "application_id": "14631410073600008",
  "type": 3,
  "token": "eyJpZCI6IjExMTgwNDIwNjI4NDgwMDA5OSJ9.bWFj",
  "version": 1,
  "context": 0,
  "guild_id": "21531879014400001",
  "channel_id": "21531887403008007",
  "member": {
    "user": {
      "id": "14631410073600003",
      "username": "ayse",
      "display_name": "Ayşe",
      "avatar": null,
      "cosmetics": null
    },
    "nick": null,
    "roles": [],
    "joined_at": "2026-11-01T10:00:00Z",
    "mute": false,
    "deaf": false,
    "communication_disabled_until": null,
    "permissions": "68672"
  },
  "app_permissions": "268504128",
  "locale": "tr",
  "message": {
    "id": "111804206284800011",
    "type": 0,
    "channel_id": "21531887403008007",
    "guild_id": "21531879014400001",
    "author": {
      "id": "14631410073600009",
      "username": "rolbotu",
      "display_name": null,
      "avatar": null,
      "cosmetics": null,
      "bot": true
    },
    "content": "Rolü almak için bas.",
    "timestamp": "2026-11-05T12:30:00Z",
    "edited_timestamp": null,
    "attachments": [],
    "mentions": [],
    "mention_roles": [],
    "mention_everyone": false,
    "pinned": false,
    "components": [
      {
        "type": 1,
        "components": [
          {
            "type": 2,
            "style": 1,
            "label": "Oyuncu",
            "custom_id": "rol:21531879014400009"
          }
        ]
      }
    ],
    "application_id": "14631410073600008"
  },
  "data": {
    "custom_id": "rol:21531879014400009",
    "component_type": 2
  }
}
```

### `APPLICATION_COMMAND_PERMISSIONS_UPDATE` — Bir komutu kimin kullanabileceği değişti

Bir sunucu yöneticisi bu botun bir komutunun bir sunucudaki kurallarını ya da tüm komutlarının kurallarını değiştirdi (o zaman id uygulamanın ID'sidir). permissions yeni kümenin tamamıdır; boş liste kuralların kaldırıldığını söyler. Yalnızca bota gider ve intent istemez. Kuralları sunucu zaten uygular; botun uygulaması gerekmez.

- **Gereken intent'ler:** Gerekmez (her oturuma gider)

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `application_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `permissions` | `object[]` | evet |  |

```json
{
  "id": "111560000000000000",
  "application_id": "111540000000000000",
  "guild_id": "111500000000000000",
  "permissions": [
    {
      "type": 1,
      "id": "111520000000000000",
      "allow": true
    },
    {
      "type": 3,
      "id": "0",
      "allow": false
    },
    {
      "type": 3,
      "id": "111510000000000000",
      "allow": true
    }
  ]
}
```

### `GUILD_CREATE` — Bir sunucu kullanılabilir oldu

`READY` içindeki her sunucu için ve bot bir sunucuya katıldığında gelir. Botun görebildiği kanalları ve üye olarak yalnızca botu listeler: diğerleri op 8 ile istenir. `GUILD_VOICE_STATES` yoksa `voice_states` boştur.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `name` | `string` | evet |  |
| `icon` | `string | null` | evet |  |
| `banner` | `string | null` | evet |  |
| `description` | `string | null` | evet |  |
| `owner_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `created_at` | `datetime` | evet |  |
| `features` | `string[]` | evet |  |
| `roles` | `Role[]` | evet |  |
| `discoverable` | `boolean` | evet |  |
| `discovery_category` | `string | null` | evet |  |
| `join_channel_id` | `ID | null` | evet |  |
| `leave_channel_id` | `ID | null` | evet |  |
| `channels` | `Channel[]` | evet | Botun görebildiği kanallar. |
| `members` | `Member[]` | evet | Yalnızca botun kendisi. Diğerleri op 8 ile alınır. |
| `member_count` | `integer` | evet |  |
| `large` | `boolean` | evet | Sunucuda 250'den çok üye var. |
| `voice_states` | `VoiceState[]` | evet | Botun görebildiği ses kanallarında kimlerin olduğu. |
| `stickers` | `Sticker[]` | evet |  |
| `emojis` | `Emoji[]` | evet |  |
| `tag` | `string | null` | - | Üyelerin takabildiği kısa yazı; sunucuda yoksa null. |
| `tag_icon` | `string | null` | - | Etiketin yanında görünen simge. |
| `tag_style` | `object | null` | - | Etiketin nasıl çizildiği. |

```json
{
  "id": "21531879014400001",
  "name": "Oyun Gecesi",
  "icon": null,
  "banner": null,
  "description": null,
  "owner_id": "11369919283200002",
  "created_at": "2026-03-01T10:00:00Z",
  "features": [],
  "roles": [
    {
      "id": "21531879014400001",
      "name": "@everyone",
      "color": 0,
      "hoist": false,
      "mentionable": false,
      "position": 0,
      "permissions": "68672",
      "auto_assign": false
    },
    {
      "id": "22286853734400009",
      "name": "Selam Botu",
      "color": 0,
      "hoist": false,
      "mentionable": false,
      "position": 1,
      "permissions": "68672",
      "auto_assign": false,
      "application_id": "21879167385600004"
    }
  ],
  "discoverable": false,
  "discovery_category": null,
  "join_channel_id": null,
  "leave_channel_id": null,
  "channels": [
    {
      "id": "21531883208704006",
      "type": 4,
      "guild_id": "21531879014400001",
      "name": "Metin kanalları",
      "topic": null,
      "position": 0,
      "parent_id": null,
      "nsfw": false,
      "last_message_id": null
    },
    {
      "id": "21531887403008007",
      "type": 0,
      "guild_id": "21531879014400001",
      "name": "genel",
      "topic": null,
      "position": 1,
      "parent_id": "21531883208704006",
      "nsfw": false,
      "last_message_id": "111804206284800011"
    },
    {
      "id": "21531891597312008",
      "type": 2,
      "guild_id": "21531879014400001",
      "name": "Sohbet",
      "topic": null,
      "position": 3,
      "parent_id": null,
      "nsfw": false,
      "bitrate": 64000,
      "user_limit": 0,
      "last_message_id": null
    }
  ],
  "members": [
    {
      "user": {
        "id": "21879171579904005",
        "username": "selam_botu",
        "display_name": "Selam Botu",
        "avatar": null,
        "cosmetics": null,
        "bot": true
      },
      "nick": null,
      "roles": [
        "22286853734400009"
      ],
      "joined_at": "2026-03-03T12:00:00Z",
      "mute": false,
      "deaf": false,
      "communication_disabled_until": null
    }
  ],
  "member_count": 3,
  "large": false,
  "voice_states": [],
  "stickers": [],
  "emojis": []
}
```

### `GUILD_UPDATE` — Bir sunucu değişti

Değişiklikten sonra sunucu ve rolleri. Kanal ve üye içermez.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `name` | `string` | evet |  |
| `icon` | `string | null` | evet |  |
| `banner` | `string | null` | evet |  |
| `description` | `string | null` | evet |  |
| `owner_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `created_at` | `datetime` | evet |  |
| `features` | `string[]` | evet |  |
| `roles` | `Role[]` | evet |  |
| `discoverable` | `boolean` | evet |  |
| `discovery_category` | `string | null` | evet |  |
| `join_channel_id` | `ID | null` | evet |  |
| `leave_channel_id` | `ID | null` | evet |  |
| `tag` | `string | null` | - | Üyelerin takabildiği kısa yazı; sunucuda yoksa null. |
| `tag_icon` | `string | null` | - | Etiketin yanında görünen simge. |
| `tag_style` | `object | null` | - | Etiketin nasıl çizildiği. |

```json
{
  "id": "21531879014400001",
  "name": "Turnuva Gecesi",
  "icon": null,
  "banner": null,
  "description": null,
  "owner_id": "11369919283200002",
  "created_at": "2026-03-01T10:00:00Z",
  "features": [],
  "roles": [
    {
      "id": "21531879014400001",
      "name": "@everyone",
      "color": 0,
      "hoist": false,
      "mentionable": false,
      "position": 0,
      "permissions": "68672",
      "auto_assign": false
    },
    {
      "id": "22286853734400009",
      "name": "Selam Botu",
      "color": 0,
      "hoist": false,
      "mentionable": false,
      "position": 1,
      "permissions": "68672",
      "auto_assign": false,
      "application_id": "21879167385600004"
    }
  ],
  "discoverable": false,
  "discovery_category": null,
  "join_channel_id": null,
  "leave_channel_id": null
}
```

### `GUILD_DELETE` — Sunucu bot için yok oldu

Sunucu silindi ya da bot sunucudan çıkarıldı.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "id": "21531879014400001"
}
```

### `GUILD_ROLE_CREATE` — Bir rol oluşturuldu

Sunucuya bot eklendiğinde, botun kendi rolü için de gelir.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `role` | `object` | evet |  |
| `role.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `role.name` | `string` | evet |  |
| `role.color` | `integer` | evet | Tam sayı olarak RGB, 0 ile 16777215 arası. |
| `role.hoist` | `boolean` | evet |  |
| `role.mentionable` | `boolean` | evet |  |
| `role.position` | `integer` | evet | Büyük olan daha üsttedir. @everyone en alttadır. |
| `role.permissions` | `permissions` | evet | Ondalık metin olarak izin bit alanı. Metin yerine sayı veya tanımlı olmayan bitler invalid_body verir. |
| `role.auto_assign` | `boolean` | evet |  |
| `role.application_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "guild_id": "21531879014400001",
  "role": {
    "id": "22649241600000010",
    "name": "Moderatör",
    "color": 3447003,
    "hoist": true,
    "mentionable": true,
    "position": 2,
    "permissions": "68672",
    "auto_assign": false
  }
}
```

### `GUILD_ROLE_UPDATE` — Bir rol değişti

Değişiklikten sonraki rol. Bir rolü taşımak başkalarının sırasını da değiştirebilir; her birinin kendi olayı gelir.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `role` | `object` | evet |  |
| `role.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `role.name` | `string` | evet |  |
| `role.color` | `integer` | evet | Tam sayı olarak RGB, 0 ile 16777215 arası. |
| `role.hoist` | `boolean` | evet |  |
| `role.mentionable` | `boolean` | evet |  |
| `role.position` | `integer` | evet | Büyük olan daha üsttedir. @everyone en alttadır. |
| `role.permissions` | `permissions` | evet | Ondalık metin olarak izin bit alanı. Metin yerine sayı veya tanımlı olmayan bitler invalid_body verir. |
| `role.auto_assign` | `boolean` | evet |  |
| `role.application_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "guild_id": "21531879014400001",
  "role": {
    "id": "22649241600000010",
    "name": "Yönetici",
    "color": 3447003,
    "hoist": true,
    "mentionable": true,
    "position": 2,
    "permissions": "68672",
    "auto_assign": false
  }
}
```

### `GUILD_ROLE_DELETE` — Bir rol silindi

Yalnızca ID'ler: rol artık yok.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `role_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "guild_id": "21531879014400001",
  "role_id": "22649241600000010"
}
```

### `CHANNEL_CREATE` — Bir kanal oluşturuldu

Kanalı görebilen botlara gelir.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 0 metin, 2 ses, 4 kategori. (0, 2, 4) |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `name` | `string` | - |  |
| `topic` | `string | null` | evet |  |
| `position` | `integer` | evet |  |
| `parent_id` | `ID | null` | evet |  |
| `nsfw` | `boolean` | evet |  |
| `bitrate` | `integer` | - | Ses kanalları. |
| `user_limit` | `integer` | - | Ses kanalları; 0 sınırsızdır. |
| `rate_limit_per_user` | `integer` | - | Saniye olarak yavaş mod; kapalıyken yer almaz. |
| `last_message_id` | `ID | null` | evet |  |
| `permission_overwrites` | `Overwrite[]` | - |  |
| `voice_status` | `string` | - |  |
| `voice_since` | `datetime` | - |  |

```json
{
  "id": "21531887403008007",
  "type": 0,
  "guild_id": "21531879014400001",
  "name": "genel",
  "topic": null,
  "position": 1,
  "parent_id": "21531883208704006",
  "nsfw": false,
  "last_message_id": "111804206284800011"
}
```

### `CHANNEL_UPDATE` — Bir kanal değişti

Değişiklikten sonraki kanal. Değişiklik kanalı bottan gizlerse yerine `CHANNEL_DELETE` gelir.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 0 metin, 2 ses, 4 kategori. (0, 2, 4) |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `name` | `string` | - |  |
| `topic` | `string | null` | evet |  |
| `position` | `integer` | evet |  |
| `parent_id` | `ID | null` | evet |  |
| `nsfw` | `boolean` | evet |  |
| `bitrate` | `integer` | - | Ses kanalları. |
| `user_limit` | `integer` | - | Ses kanalları; 0 sınırsızdır. |
| `rate_limit_per_user` | `integer` | - | Saniye olarak yavaş mod; kapalıyken yer almaz. |
| `last_message_id` | `ID | null` | evet |  |
| `permission_overwrites` | `Overwrite[]` | - |  |
| `voice_status` | `string` | - |  |
| `voice_since` | `datetime` | - |  |

```json
{
  "id": "21531887403008007",
  "type": 0,
  "guild_id": "21531879014400001",
  "name": "genel",
  "topic": "Genel sohbet",
  "position": 1,
  "parent_id": "21531883208704006",
  "nsfw": false,
  "last_message_id": "111804206284800011"
}
```

### `CHANNEL_DELETE` — Kanal bot için yok oldu

Kanal silindi ya da bot artık kanalı göremiyor.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 0 metin, 2 ses, 4 kategori. (0, 2, 4) |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `name` | `string` | - |  |
| `topic` | `string | null` | evet |  |
| `position` | `integer` | evet |  |
| `parent_id` | `ID | null` | evet |  |
| `nsfw` | `boolean` | evet |  |
| `bitrate` | `integer` | - | Ses kanalları. |
| `user_limit` | `integer` | - | Ses kanalları; 0 sınırsızdır. |
| `rate_limit_per_user` | `integer` | - | Saniye olarak yavaş mod; kapalıyken yer almaz. |
| `last_message_id` | `ID | null` | evet |  |
| `permission_overwrites` | `Overwrite[]` | - |  |
| `voice_status` | `string` | - |  |
| `voice_since` | `datetime` | - |  |

```json
{
  "id": "21531887403008007",
  "type": 0,
  "guild_id": "21531879014400001",
  "name": "genel",
  "topic": null,
  "position": 1,
  "parent_id": "21531883208704006",
  "nsfw": false,
  "last_message_id": "111804206284800011"
}
```

### `CHANNEL_PINS_UPDATE` — Bir kanalın sabitlenenleri değişti

Sabitlenen mesaj kalmayınca `last_pin_timestamp` null olur.

- **Gereken intent'ler:** `GUILDS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `last_pin_timestamp` | `string | null` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "channel_id": "21531887403008007",
  "last_pin_timestamp": "2026-11-05T12:30:00Z"
}
```

### `GUILD_MEMBER_ADD` — Biri sunucuya katıldı

Üye; alanlarının yanında sunucunun ID'si.

- **Gereken intent'ler:** `GUILD_MEMBERS`

> **Not:** `GUILD_MEMBERS` ayrıcalıklıdır: sahibi portaldan açar, 100 sunucudan itibaren onay gerekir. Bot kendisiyle ilgili olayları bu intent olmadan da alır.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `nick` | `string | null` | evet |  |
| `roles` | `ID[]` | evet | @everyone hariç rol ID'leri. |
| `joined_at` | `datetime` | evet |  |
| `mute` | `boolean` | evet |  |
| `deaf` | `boolean` | evet |  |
| `communication_disabled_until` | `string | null` | evet | Susturma sürerken doludur. |

```json
{
  "guild_id": "21531879014400001",
  "user": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  },
  "nick": "Ayşe K.",
  "roles": [],
  "joined_at": "2026-03-05T18:20:00Z",
  "mute": false,
  "deaf": false,
  "communication_disabled_until": null
}
```

### `GUILD_MEMBER_UPDATE` — Bir üye değişti

Değişiklikten sonraki üye: takma ad, roller, susturma ya da zaman aşımı.

- **Gereken intent'ler:** `GUILD_MEMBERS`

> **Not:** `GUILD_MEMBERS` ayrıcalıklıdır: sahibi portaldan açar, 100 sunucudan itibaren onay gerekir. Bot kendisiyle ilgili olayları bu intent olmadan da alır.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `nick` | `string | null` | evet |  |
| `roles` | `ID[]` | evet | @everyone hariç rol ID'leri. |
| `joined_at` | `datetime` | evet |  |
| `mute` | `boolean` | evet |  |
| `deaf` | `boolean` | evet |  |
| `communication_disabled_until` | `string | null` | evet | Susturma sürerken doludur. |

```json
{
  "guild_id": "21531879014400001",
  "user": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  },
  "nick": "Ayşe K.",
  "roles": [
    "22649241600000010"
  ],
  "joined_at": "2026-03-05T18:20:00Z",
  "mute": false,
  "deaf": false,
  "communication_disabled_until": null
}
```

### `GUILD_MEMBER_REMOVE` — Biri sunucudan ayrıldı

Kendisi ayrıldı, ya da atıldı veya yasaklandı.

- **Gereken intent'ler:** `GUILD_MEMBERS`

> **Not:** `GUILD_MEMBERS` ayrıcalıklıdır: sahibi portaldan açar, 100 sunucudan itibaren onay gerekir. Bot kendisiyle ilgili olayları bu intent olmadan da alır.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |

```json
{
  "guild_id": "21531879014400001",
  "user": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  }
}
```

### `GUILD_BAN_ADD` — Biri yasaklandı

Yalnızca botun sunucuda `BanMembers` izni varsa gelir.

- **Gereken intent'ler:** `GUILD_MODERATION`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |

```json
{
  "guild_id": "21531879014400001",
  "user": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  }
}
```

### `GUILD_BAN_REMOVE` — Bir yasak kaldırıldı

Yalnızca botun sunucuda `BanMembers` izni varsa gelir.

- **Gereken intent'ler:** `GUILD_MODERATION`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user` | `object` | evet |  |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user.username` | `string` | evet |  |
| `user.display_name` | `string | null` | evet |  |
| `user.avatar` | `string | null` | evet | Avatar hash'i. |
| `user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |

```json
{
  "guild_id": "21531879014400001",
  "user": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  }
}
```

### `GUILD_EMOJIS_UPDATE` — Sunucunun emojileri değişti

Yalnızca değişeni değil, listenin tamamını taşır.

- **Gereken intent'ler:** `GUILD_EXPRESSIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `emojis` | `Emoji[]` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "emojis": [
    {
      "id": "32735703859200014",
      "guild_id": "21531879014400001",
      "name": "selam",
      "animated": false,
      "creator_id": "11369919283200002"
    }
  ]
}
```

### `GUILD_STICKERS_UPDATE` — Sunucunun çıkartmaları değişti

Yalnızca değişeni değil, listenin tamamını taşır.

- **Gereken intent'ler:** `GUILD_EXPRESSIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `stickers` | `Sticker[]` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "stickers": [
    {
      "id": "33098091724800015",
      "guild_id": "21531879014400001",
      "name": "kedi",
      "tags": "kedi",
      "description": null,
      "hash": "9f3c1a7e",
      "width": 320,
      "height": 320,
      "creator_id": "11369919283200002"
    }
  ]
}
```

### `GUILD_SOUNDBOARD_SOUNDS_UPDATE` — Sunucunun ses paneli değişti

Yalnızca değişeni değil, listenin tamamını taşır.

- **Gereken intent'ler:** `GUILD_EXPRESSIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `soundboard_sounds` | `Sound[]` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "soundboard_sounds": [
    {
      "id": "33460479590400016",
      "guild_id": "21531879014400001",
      "name": "alkış",
      "emoji": "👏",
      "volume": 1,
      "creator_id": "11369919283200002"
    }
  ]
}
```

### `WEBHOOKS_UPDATE` — Bir kanalın webhook'ları değişti

Yalnızca nerede olduğunu söyler. Kanalı görebilen botlara gelir.

- **Gereken intent'ler:** `GUILD_WEBHOOKS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "guild_id": "21531879014400001",
  "channel_id": "21531887403008007"
}
```

### `INVITE_CREATE` — Bir davet oluşturuldu

Yalnızca botun sunucuda `ManageGuild` izni varsa gelir.

- **Gereken intent'ler:** `GUILD_INVITES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `code` | `string` | evet |  |
| `guild` | `object` | evet |  |
| `guild.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild.name` | `string` | evet |  |
| `guild.icon` | `string | null` | evet |  |
| `guild.banner` | `string | null` | evet |  |
| `guild.description` | `string | null` | evet |  |
| `guild.features` | `string[]` | evet |  |
| `channel` | `object` | evet |  |
| `channel.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel.name` | `string` | evet |  |
| `channel.type` | `integer` | evet |  |
| `inviter_id` | `ID | null` | evet |  |
| `max_age` | `integer` | evet | Saniye; 0 süresizdir. |
| `max_uses` | `integer` | evet | 0 sınırsızdır. |
| `uses` | `integer` | evet |  |
| `created_at` | `datetime` | evet |  |
| `expires_at` | `string | null` | evet |  |

```json
{
  "code": "aB3xY9kQ",
  "guild": {
    "id": "21531879014400001",
    "name": "Oyun Gecesi",
    "icon": null,
    "banner": null,
    "description": null,
    "features": []
  },
  "channel": {
    "id": "21531887403008007",
    "name": "genel",
    "type": 0
  },
  "inviter_id": "11369919283200002",
  "max_age": 86400,
  "max_uses": 0,
  "uses": 0,
  "created_at": "2026-11-05T12:00:00Z",
  "expires_at": "2026-11-06T12:00:00Z"
}
```

### `INVITE_DELETE` — Bir davet silindi

Yalnızca botun sunucuda `ManageGuild` izni varsa gelir.

- **Gereken intent'ler:** `GUILD_INVITES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `code` | `string` | evet |  |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "code": "aB3xY9kQ",
  "guild_id": "21531879014400001",
  "channel_id": "21531887403008007"
}
```

### `VOICE_STATE_UPDATE` — Birinin ses durumu değişti

Katıldı, taşındı, sesini kapattı ya da ayrıldı; ayrılınca `channel_id` null olur. Kanalı görebilen botlara gelir.

- **Gereken intent'ler:** `GUILD_VOICE_STATES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID | null` | evet | Kullanıcı kanaldan ayrıldığında null olur. |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `member` | `object` | evet |  |
| `member.user` | `object` | evet |  |
| `member.user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `member.user.username` | `string` | evet |  |
| `member.user.display_name` | `string | null` | evet |  |
| `member.user.avatar` | `string | null` | evet | Avatar hash'i. |
| `member.user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `member.user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `member.nick` | `string | null` | evet |  |
| `member.roles` | `ID[]` | evet | @everyone hariç rol ID'leri. |
| `member.joined_at` | `datetime` | evet |  |
| `member.mute` | `boolean` | evet |  |
| `member.deaf` | `boolean` | evet |  |
| `member.communication_disabled_until` | `string | null` | evet | Susturma sürerken doludur. |
| `member.permissions` | `permissions` | - | Ondalık metin olarak izin bit alanı. Metin yerine sayı veya tanımlı olmayan bitler invalid_body verir. |
| `session_id` | `string` | evet |  |
| `mute` | `boolean` | evet |  |
| `deaf` | `boolean` | evet |  |
| `self_mute` | `boolean` | evet |  |
| `self_deaf` | `boolean` | evet |  |
| `self_stream` | `boolean` | evet |  |
| `self_video` | `boolean` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "channel_id": "21531891597312008",
  "user_id": "14631410073600003",
  "member": {
    "user": {
      "id": "14631410073600003",
      "username": "ayse",
      "display_name": "Ayşe",
      "avatar": null,
      "cosmetics": null
    },
    "nick": "Ayşe K.",
    "roles": [
      "22649241600000010"
    ],
    "joined_at": "2026-03-05T18:20:00Z",
    "mute": false,
    "deaf": false,
    "communication_disabled_until": null
  },
  "session_id": "b41d7e90",
  "mute": false,
  "deaf": false,
  "self_mute": false,
  "self_deaf": false,
  "self_stream": false,
  "self_video": false
}
```

### `VOICE_CHANNEL_EFFECT_SEND` — Seste bir ses çalındı

Biri bir ses kanalında ses panelinden bir ses çaldı.

- **Gereken intent'ler:** `GUILD_VOICE_STATES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `sound_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `sound_volume` | `number` | evet |  |
| `emoji` | `string | null` | evet |  |

```json
{
  "channel_id": "21531891597312008",
  "guild_id": "21531879014400001",
  "user_id": "14631410073600003",
  "sound_id": "33460483784704017",
  "sound_volume": 1,
  "emoji": "👏"
}
```

### `VOICE_CHANNEL_EFFECT_STOP` — Çalınan ses durduruldu

Biri çaldığı sesi durdurdu.

- **Gereken intent'ler:** `GUILD_VOICE_STATES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "channel_id": "21531891597312008",
  "guild_id": "21531879014400001",
  "user_id": "14631410073600003"
}
```

### `PRESENCE_UPDATE` — Bir üyenin durumu değişti

Durumu ya da etkinlikleri değişti. Çok sayıda bağlı bot ve kişi olan sunucuda bunlar yerine `PRESENCE_UPDATE_BATCH` olarak toplu gelir.

- **Gereken intent'ler:** `GUILD_PRESENCES`

> **Not:** `GUILD_PRESENCES` ayrıcalıklıdır: sahibi portaldan açar, 100 sunucudan itibaren onay gerekir.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `user` | `object` | evet | Yalnızca kullanıcının ID'si. |
| `user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `status` | `string` | evet | Çevrimdışı görünen kişi offline olarak gelir. (online, idle, dnd, offline) |
| `activities` | `Activity[]` | evet | Çevrimdışıyken boştur. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "user": {
    "id": "14631410073600003"
  },
  "status": "online",
  "activities": [
    {
      "type": 0,
      "name": "Minecraft",
      "timestamps": {
        "start": 1793878200000
      }
    }
  ],
  "guild_id": "21531879014400001"
}
```

### `PRESENCE_UPDATE_BATCH` — Bir sunucunun birkaç durumu

Yoğun bir sunucunun `PRESENCE_UPDATE`'leri, toplanıp birlikte gönderilir. Her biri tek başına gönderileceği haliyledir.

- **Gereken intent'ler:** `GUILD_PRESENCES`

> **Not:** `GUILD_PRESENCES` ayrıcalıklıdır: sahibi portaldan açar, 100 sunucudan itibaren onay gerekir.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `presences` | `GuildPresence[]` | evet |  |

```json
{
  "guild_id": "21531879014400001",
  "presences": [
    {
      "user": {
        "id": "14631410073600003"
      },
      "status": "online",
      "activities": [
        {
          "type": 0,
          "name": "Minecraft",
          "timestamps": {
            "start": 1793878200000
          }
        }
      ],
      "guild_id": "21531879014400001"
    }
  ]
}
```

### `MESSAGE_CREATE` — Bir mesaj gönderildi

Botun görebildiği kanallardaki mesajlar için, kendininkiler için de gelir. Sunucu dışında `guild_id` yer almaz. Ephemeral mesaj buraya hiç gelmez: yalnızca basan kişiye gider. Bir kişinin botla açtığı DM'deki mesaj DIRECT_MESSAGES ister, guild_id taşımaz ve shard 0'a gider.

- **Gereken intent'ler:** `GUILD_MESSAGES`, `DIRECT_MESSAGES`

> **Not:** Ayrıcalıklı `MESSAGE_CONTENT` intent'i olmadan `content` boş, `attachments` boş liste gelir; `sticker_items`, `poll`, `forward`, `hidden_embeds` ve `data` yer almaz. Mesajı bot yazdıysa ya da mesaj botu adıyla etiketliyorsa hepsi gelir. Botla DM'de bu kural uygulanmaz: kişinin orada bota yazdığı her şey tam gelir.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 0 normal, 19 yanıt, 6 sabitleme bildirimi, 18 başlık açılışı, 24 otomatik moderasyon uyarısı, 1 ile 5 arası grup ve arama bildirimleri. Yenileri eklenebilir. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `author` | `object` | evet |  |
| `author.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `author.username` | `string` | evet |  |
| `author.display_name` | `string | null` | evet |  |
| `author.avatar` | `string | null` | evet | Avatar hash'i. |
| `author.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `author.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `content` | `string` | evet |  |
| `timestamp` | `datetime` | evet |  |
| `edited_timestamp` | `string | null` | evet |  |
| `attachments` | `Attachment[]` | evet |  |
| `mentions` | `User[]` | evet |  |
| `mention_roles` | `ID[]` | evet |  |
| `mention_everyone` | `boolean` | evet |  |
| `message_reference` | `object` | - |  |
| `message_reference.message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_reference.channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `pinned` | `boolean` | evet |  |
| `data` | `object` | - | Sistem mesajının gösterilmesi için gerekenler. |
| `forward` | `object` | - |  |
| `forward.channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.author` | `object` | evet |  |
| `forward.author.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.author.username` | `string` | evet |  |
| `forward.author.display_name` | `string | null` | evet |  |
| `forward.author.avatar` | `string | null` | evet | Avatar hash'i. |
| `forward.author.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `forward.author.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `forward.content` | `string` | evet |  |
| `forward.timestamp` | `datetime` | evet |  |
| `forward.mentions` | `User[]` | evet |  |
| `forward.sticker_items` | `StickerItem[]` | - |  |
| `forward.webhook_name` | `string` | - |  |
| `poll` | `object` | - |  |
| `poll.question` | `string` | evet |  |
| `poll.answers` | `object[]` | evet |  |
| `poll.allow_multiselect` | `boolean` | evet |  |
| `poll.expiry` | `datetime` | evet |  |
| `poll.results` | `object` | - |  |
| `poll.results.finalized` | `boolean` | evet |  |
| `poll.results.voters` | `integer` | evet |  |
| `poll.results.answers` | `object[]` | evet |  |
| `sticker_items` | `StickerItem[]` | - |  |
| `nonce` | `string` | - | Gönderenin mesaja verdiği kendi kimliği; oluşturulurken aynen döner. |
| `webhook_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `activity` | `object` | - | Başkalarını yazarın etkinliğine katılmaya çağırır. |
| `activity.type` | `integer` | evet |  |
| `activity.party_id` | `string` | evet |  |
| `hidden_embeds` | `string[]` | - | Yazarın kaldırdığı bağlantı önizlemeleri ve davet kartları: yazıldığı gibi bir bağlantı ya da küçük harfle bir davet kodu. |
| `embeds` | `Embed[]` | - | Botun eklediği kartlar. |
| `components` | `MessageComponent[]` | - | Botun eklediği butonları ve menüleri taşıyan satırlar. |
| `flags` | `integer` | - | Bit bayrakları. 0 ise yoktur. 64: ephemeral, yalnızca basan kişi görür. 128: henüz hazırlanan yanıt. |
| `application_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction` | `object` | - | Bir etkileşime verilen yanıtta: hangisi ve kimin bastığı ya da çalıştırdığı. |
| `interaction.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction.type` | `integer` | evet | 2 komut çalıştırma, 3 bileşene basmadır. |
| `interaction.name` | `string` | - | Çalıştırılan komut, "X, /ad kullandı" için. Basmada yer almaz. |
| `interaction.user` | `object` | evet |  |
| `interaction.user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction.user.username` | `string` | evet |  |
| `interaction.user.display_name` | `string | null` | evet |  |
| `interaction.user.avatar` | `string | null` | evet | Avatar hash'i. |
| `interaction.user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `interaction.user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `ephemeral_state` | `string` | - | Bileşenli ephemeral mesajda: mesajın mühürlü bileşenleri. Yalnızca mesajın sahibine gider, istemcisi basarken onu geri gönderir. |

```json
{
  "id": "111804206284800011",
  "type": 0,
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001",
  "author": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  },
  "content": "Bu akşam kim var?",
  "timestamp": "2026-11-05T12:30:00Z",
  "edited_timestamp": null,
  "attachments": [],
  "mentions": [],
  "mention_roles": [],
  "mention_everyone": false,
  "pinned": false
}
```

### `MESSAGE_UPDATE` — Bir mesaj değişti

Düzenleme, sabitleme ya da önizleme değişikliğinden sonra mesajın tamamı. Ephemeral güncelleme ya da silme yalnızca basan kişiye gider; istemci onu yalnızca elinde flags 64 ile tuttuğu ve application_id'si aynı olan mesaja uygular.

- **Gereken intent'ler:** `GUILD_MESSAGES`, `DIRECT_MESSAGES`

> **Not:** Ayrıcalıklı `MESSAGE_CONTENT` intent'i olmadan `content` boş, `attachments` boş liste gelir; `sticker_items`, `poll`, `forward`, `hidden_embeds` ve `data` yer almaz. Mesajı bot yazdıysa ya da mesaj botu adıyla etiketliyorsa hepsi gelir.

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `type` | `integer` | evet | 0 normal, 19 yanıt, 6 sabitleme bildirimi, 18 başlık açılışı, 24 otomatik moderasyon uyarısı, 1 ile 5 arası grup ve arama bildirimleri. Yenileri eklenebilir. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `author` | `object` | evet |  |
| `author.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `author.username` | `string` | evet |  |
| `author.display_name` | `string | null` | evet |  |
| `author.avatar` | `string | null` | evet | Avatar hash'i. |
| `author.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `author.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `content` | `string` | evet |  |
| `timestamp` | `datetime` | evet |  |
| `edited_timestamp` | `string | null` | evet |  |
| `attachments` | `Attachment[]` | evet |  |
| `mentions` | `User[]` | evet |  |
| `mention_roles` | `ID[]` | evet |  |
| `mention_everyone` | `boolean` | evet |  |
| `message_reference` | `object` | - |  |
| `message_reference.message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_reference.channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `pinned` | `boolean` | evet |  |
| `data` | `object` | - | Sistem mesajının gösterilmesi için gerekenler. |
| `forward` | `object` | - |  |
| `forward.channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.author` | `object` | evet |  |
| `forward.author.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `forward.author.username` | `string` | evet |  |
| `forward.author.display_name` | `string | null` | evet |  |
| `forward.author.avatar` | `string | null` | evet | Avatar hash'i. |
| `forward.author.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `forward.author.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `forward.content` | `string` | evet |  |
| `forward.timestamp` | `datetime` | evet |  |
| `forward.mentions` | `User[]` | evet |  |
| `forward.sticker_items` | `StickerItem[]` | - |  |
| `forward.webhook_name` | `string` | - |  |
| `poll` | `object` | - |  |
| `poll.question` | `string` | evet |  |
| `poll.answers` | `object[]` | evet |  |
| `poll.allow_multiselect` | `boolean` | evet |  |
| `poll.expiry` | `datetime` | evet |  |
| `poll.results` | `object` | - |  |
| `poll.results.finalized` | `boolean` | evet |  |
| `poll.results.voters` | `integer` | evet |  |
| `poll.results.answers` | `object[]` | evet |  |
| `sticker_items` | `StickerItem[]` | - |  |
| `nonce` | `string` | - | Gönderenin mesaja verdiği kendi kimliği; oluşturulurken aynen döner. |
| `webhook_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `activity` | `object` | - | Başkalarını yazarın etkinliğine katılmaya çağırır. |
| `activity.type` | `integer` | evet |  |
| `activity.party_id` | `string` | evet |  |
| `hidden_embeds` | `string[]` | - | Yazarın kaldırdığı bağlantı önizlemeleri ve davet kartları: yazıldığı gibi bir bağlantı ya da küçük harfle bir davet kodu. |
| `embeds` | `Embed[]` | - | Botun eklediği kartlar. |
| `components` | `MessageComponent[]` | - | Botun eklediği butonları ve menüleri taşıyan satırlar. |
| `flags` | `integer` | - | Bit bayrakları. 0 ise yoktur. 64: ephemeral, yalnızca basan kişi görür. 128: henüz hazırlanan yanıt. |
| `application_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction` | `object` | - | Bir etkileşime verilen yanıtta: hangisi ve kimin bastığı ya da çalıştırdığı. |
| `interaction.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction.type` | `integer` | evet | 2 komut çalıştırma, 3 bileşene basmadır. |
| `interaction.name` | `string` | - | Çalıştırılan komut, "X, /ad kullandı" için. Basmada yer almaz. |
| `interaction.user` | `object` | evet |  |
| `interaction.user.id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `interaction.user.username` | `string` | evet |  |
| `interaction.user.display_name` | `string | null` | evet |  |
| `interaction.user.avatar` | `string | null` | evet | Avatar hash'i. |
| `interaction.user.cosmetics` | `object | null` | evet | Varsa profil süslemeleri. |
| `interaction.user.bot` | `boolean` | - | Bot hesaplarında ve webhook'ların yazdığı hesaplarda bulunur ve true'dur; diğerlerinde yer almaz. |
| `ephemeral_state` | `string` | - | Bileşenli ephemeral mesajda: mesajın mühürlü bileşenleri. Yalnızca mesajın sahibine gider, istemcisi basarken onu geri gönderir. |

```json
{
  "id": "111804206284800011",
  "type": 0,
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001",
  "author": {
    "id": "14631410073600003",
    "username": "ayse",
    "display_name": "Ayşe",
    "avatar": null,
    "cosmetics": null
  },
  "content": "Bu akşam kim var? 21.00",
  "timestamp": "2026-11-05T12:30:00Z",
  "edited_timestamp": "2026-11-05T12:31:00Z",
  "attachments": [],
  "mentions": [],
  "mention_roles": [],
  "mention_everyone": false,
  "pinned": false
}
```

### `MESSAGE_DELETE` — Bir mesaj silindi

Yalnızca ID'ler: mesaj artık yok. Ephemeral güncelleme ya da silme yalnızca basan kişiye gider; istemci onu yalnızca elinde flags 64 ile tuttuğu ve application_id'si aynı olan mesaja uygular.

- **Gereken intent'ler:** `GUILD_MESSAGES`, `DIRECT_MESSAGES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `ephemeral` | `boolean` | - | Ephemeral mesajda true; yalnızca basan kişiye gider. |
| `application_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "id": "111804206284800011",
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001"
}
```

### `MESSAGE_DELETE_BULK` — Birkaç mesaj silindi

Toplu silmede ve yasak üyenin son mesajlarını da sildiğinde gelir.

- **Gereken intent'ler:** `GUILD_MESSAGES`, `DIRECT_MESSAGES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `ids` | `ID[]` | evet |  |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "ids": [
    "111804206284800011"
  ],
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001"
}
```

### `MESSAGE_POLL_UPDATE` — Bir anketin sonuçları değişti

Oy verilince ya da anket bitince anketin yeni sayıları.

- **Gereken intent'ler:** `GUILD_MESSAGES`, `DIRECT_MESSAGES`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `expiry` | `datetime` | evet |  |
| `results` | `object` | evet |  |
| `results.finalized` | `boolean` | evet |  |
| `results.voters` | `integer` | evet |  |
| `results.answers` | `object[]` | evet |  |

```json
{
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001",
  "message_id": "111804206284800011",
  "expiry": "2026-11-06T12:30:00Z",
  "results": {
    "finalized": false,
    "voters": 2,
    "answers": [
      {
        "id": 1,
        "count": 2
      },
      {
        "id": 2,
        "count": 0
      }
    ]
  }
}
```

### `MESSAGE_REACTION_ADD` — Bir tepki eklendi

Standart emojide `emoji.id` null olur.

- **Gereken intent'ler:** `GUILD_MESSAGE_REACTIONS`, `DIRECT_MESSAGE_REACTIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `emoji` | `object` | evet |  |
| `emoji.id` | `ID | null` | evet | Sunucu emojisinde doludur. |
| `emoji.name` | `string` | evet |  |
| `emoji.animated` | `boolean` | - |  |

```json
{
  "user_id": "14631410073600003",
  "channel_id": "21531887403008007",
  "message_id": "111804206284800011",
  "guild_id": "21531879014400001",
  "emoji": {
    "id": null,
    "name": "👍"
  }
}
```

### `MESSAGE_REACTION_REMOVE` — Bir tepki kaldırıldı

`user_id` tepkisi kalkan kişidir, kaldıran değil.

- **Gereken intent'ler:** `GUILD_MESSAGE_REACTIONS`, `DIRECT_MESSAGE_REACTIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `emoji` | `object` | evet |  |
| `emoji.id` | `ID | null` | evet | Sunucu emojisinde doludur. |
| `emoji.name` | `string` | evet |  |
| `emoji.animated` | `boolean` | - |  |

```json
{
  "user_id": "14631410073600003",
  "channel_id": "21531887403008007",
  "message_id": "111804206284800011",
  "guild_id": "21531879014400001",
  "emoji": {
    "id": null,
    "name": "👍"
  }
}
```

### `MESSAGE_REACTION_REMOVE_ALL` — Mesajın tüm tepkileri kaldırıldı

`ManageMessages` izni olan biri mesajı temizledi.

- **Gereken intent'ler:** `GUILD_MESSAGE_REACTIONS`, `DIRECT_MESSAGE_REACTIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |

```json
{
  "channel_id": "21531887403008007",
  "message_id": "111804206284800011",
  "guild_id": "21531879014400001"
}
```

### `MESSAGE_REACTION_REMOVE_EMOJI` — Bir emojinin tüm tepkileri kaldırıldı

`ManageMessages` izni olan biri mesajdan bir emojiyi temizledi.

- **Gereken intent'ler:** `GUILD_MESSAGE_REACTIONS`, `DIRECT_MESSAGE_REACTIONS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `message_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `emoji` | `object` | evet |  |
| `emoji.id` | `ID | null` | evet | Sunucu emojisinde doludur. |
| `emoji.name` | `string` | evet |  |
| `emoji.animated` | `boolean` | - |  |

```json
{
  "channel_id": "21531887403008007",
  "message_id": "111804206284800011",
  "guild_id": "21531879014400001",
  "emoji": {
    "id": null,
    "name": "👍"
  }
}
```

### `TYPING_START` — Biri yazmaya başladı

`timestamp` Unix saniyedir.

- **Gereken intent'ler:** `GUILD_MESSAGE_TYPING`, `DIRECT_MESSAGE_TYPING`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `channel_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | - | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `user_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `timestamp` | `integer` | evet |  |

```json
{
  "channel_id": "21531887403008007",
  "guild_id": "21531879014400001",
  "user_id": "14631410073600003",
  "timestamp": 1793881800
}
```

### `GUILD_SCHEDULED_EVENT_CREATE` — Bir etkinlik oluşturuldu

Ses kanalındaki etkinlik yalnızca kanalı görebilen botlara gelir.

- **Gereken intent'ler:** `GUILD_SCHEDULED_EVENTS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID | null` | evet |  |
| `location` | `string | null` | evet |  |
| `name` | `string` | evet |  |
| `description` | `string | null` | evet |  |
| `scheduled_start_time` | `datetime` | evet |  |
| `scheduled_end_time` | `string | null` | evet |  |
| `status` | `integer` | evet | 1 planlandı, 2 sürüyor, 3 bitti, 4 iptal edildi. (1, 2, 3, 4) |
| `creator_id` | `ID | null` | evet |  |
| `user_count` | `integer` | evet |  |

```json
{
  "id": "105938052710400013",
  "guild_id": "21531879014400001",
  "channel_id": "21531891597312008",
  "location": null,
  "name": "Turnuva gecesi",
  "description": null,
  "scheduled_start_time": "2026-11-20T19:00:00Z",
  "scheduled_end_time": null,
  "status": 1,
  "creator_id": "11369919283200002",
  "user_count": 0
}
```

### `GUILD_SCHEDULED_EVENT_UPDATE` — Bir etkinlik değişti

Başladığında, bittiğinde ya da `user_count` değiştiğinde de gelir.

- **Gereken intent'ler:** `GUILD_SCHEDULED_EVENTS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID | null` | evet |  |
| `location` | `string | null` | evet |  |
| `name` | `string` | evet |  |
| `description` | `string | null` | evet |  |
| `scheduled_start_time` | `datetime` | evet |  |
| `scheduled_end_time` | `string | null` | evet |  |
| `status` | `integer` | evet | 1 planlandı, 2 sürüyor, 3 bitti, 4 iptal edildi. (1, 2, 3, 4) |
| `creator_id` | `ID | null` | evet |  |
| `user_count` | `integer` | evet |  |

```json
{
  "id": "105938052710400013",
  "guild_id": "21531879014400001",
  "channel_id": "21531891597312008",
  "location": null,
  "name": "Turnuva gecesi",
  "description": null,
  "scheduled_start_time": "2026-11-20T19:00:00Z",
  "scheduled_end_time": null,
  "status": 2,
  "creator_id": "11369919283200002",
  "user_count": 0
}
```

### `GUILD_SCHEDULED_EVENT_DELETE` — Bir etkinlik silindi

Etkinliğin son hali. Etkinlik başka kanala taşındığında eski kanalı görebilen botlara önce bu gelir, yeni kanalı da görüyorlarsa `GUILD_SCHEDULED_EVENT_UPDATE` gelir.

- **Gereken intent'ler:** `GUILD_SCHEDULED_EVENTS`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `channel_id` | `ID | null` | evet |  |
| `location` | `string | null` | evet |  |
| `name` | `string` | evet |  |
| `description` | `string | null` | evet |  |
| `scheduled_start_time` | `datetime` | evet |  |
| `scheduled_end_time` | `string | null` | evet |  |
| `status` | `integer` | evet | 1 planlandı, 2 sürüyor, 3 bitti, 4 iptal edildi. (1, 2, 3, 4) |
| `creator_id` | `ID | null` | evet |  |
| `user_count` | `integer` | evet |  |

```json
{
  "id": "105938052710400013",
  "guild_id": "21531879014400001",
  "channel_id": "21531891597312008",
  "location": null,
  "name": "Turnuva gecesi",
  "description": null,
  "scheduled_start_time": "2026-11-20T19:00:00Z",
  "scheduled_end_time": null,
  "status": 1,
  "creator_id": "11369919283200002",
  "user_count": 0
}
```

### `AUTO_MODERATION_RULE_CREATE` — Bir otomatik moderasyon kuralı oluşturuldu

Yalnızca botun sunucuda `ManageGuild` izni varsa gelir.

- **Gereken intent'ler:** `AUTO_MODERATION_CONFIGURATION`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `creator_id` | `ID | null` | evet |  |
| `name` | `string` | evet |  |
| `enabled` | `boolean` | evet |  |
| `trigger_type` | `integer` | evet | 1 sözcük, 4 hazır sözcük listesi, 5 toplu etiketleme. (1, 4, 5) |
| `trigger_metadata` | `object` | evet |  |
| `trigger_metadata.keyword_filter` | `string[]` | - |  |
| `trigger_metadata.allow_list` | `string[]` | - |  |
| `trigger_metadata.presets` | `integer[]` | - | 1 küfür, 2 davetler. |
| `trigger_metadata.mention_total_limit` | `integer` | - |  |
| `actions` | `object[]` | evet |  |
| `exempt_roles` | `ID[]` | evet |  |
| `exempt_channels` | `ID[]` | evet |  |

```json
{
  "id": "54841363660800012",
  "guild_id": "21531879014400001",
  "creator_id": "11369919283200002",
  "name": "Yasaklı sözcükler",
  "enabled": true,
  "trigger_type": 1,
  "trigger_metadata": {
    "keyword_filter": [
      "spam"
    ]
  },
  "actions": [
    {
      "type": 1
    }
  ],
  "exempt_roles": [],
  "exempt_channels": []
}
```

### `AUTO_MODERATION_RULE_UPDATE` — Bir otomatik moderasyon kuralı değişti

Yalnızca botun sunucuda `ManageGuild` izni varsa gelir.

- **Gereken intent'ler:** `AUTO_MODERATION_CONFIGURATION`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `creator_id` | `ID | null` | evet |  |
| `name` | `string` | evet |  |
| `enabled` | `boolean` | evet |  |
| `trigger_type` | `integer` | evet | 1 sözcük, 4 hazır sözcük listesi, 5 toplu etiketleme. (1, 4, 5) |
| `trigger_metadata` | `object` | evet |  |
| `trigger_metadata.keyword_filter` | `string[]` | - |  |
| `trigger_metadata.allow_list` | `string[]` | - |  |
| `trigger_metadata.presets` | `integer[]` | - | 1 küfür, 2 davetler. |
| `trigger_metadata.mention_total_limit` | `integer` | - |  |
| `actions` | `object[]` | evet |  |
| `exempt_roles` | `ID[]` | evet |  |
| `exempt_channels` | `ID[]` | evet |  |

```json
{
  "id": "54841363660800012",
  "guild_id": "21531879014400001",
  "creator_id": "11369919283200002",
  "name": "Yasaklı sözcükler",
  "enabled": false,
  "trigger_type": 1,
  "trigger_metadata": {
    "keyword_filter": [
      "spam"
    ]
  },
  "actions": [
    {
      "type": 1
    }
  ],
  "exempt_roles": [],
  "exempt_channels": []
}
```

### `AUTO_MODERATION_RULE_DELETE` — Bir otomatik moderasyon kuralı silindi

Yalnızca botun sunucuda `ManageGuild` izni varsa gelir.

- **Gereken intent'ler:** `AUTO_MODERATION_CONFIGURATION`

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `guild_id` | `ID` | evet | 64 bitlik ID; yanıtta da istekte de her zaman metin olarak yazılır. ID'ler oluşturulma zamanına göre sıralanır. |
| `creator_id` | `ID | null` | evet |  |
| `name` | `string` | evet |  |
| `enabled` | `boolean` | evet |  |
| `trigger_type` | `integer` | evet | 1 sözcük, 4 hazır sözcük listesi, 5 toplu etiketleme. (1, 4, 5) |
| `trigger_metadata` | `object` | evet |  |
| `trigger_metadata.keyword_filter` | `string[]` | - |  |
| `trigger_metadata.allow_list` | `string[]` | - |  |
| `trigger_metadata.presets` | `integer[]` | - | 1 küfür, 2 davetler. |
| `trigger_metadata.mention_total_limit` | `integer` | - |  |
| `actions` | `object[]` | evet |  |
| `exempt_roles` | `ID[]` | evet |  |
| `exempt_channels` | `ID[]` | evet |  |

```json
{
  "id": "54841363660800012",
  "guild_id": "21531879014400001",
  "creator_id": "11369919283200002",
  "name": "Yasaklı sözcükler",
  "enabled": true,
  "trigger_type": 1,
  "trigger_metadata": {
    "keyword_filter": [
      "spam"
    ]
  },
  "actions": [
    {
      "type": 1
    }
  ],
  "exempt_roles": [],
  "exempt_channels": []
}
```
