Olay Referansı
Her webhook olay türü ve TicketWave’in gönderdiği tam payload.
Olay Referansı
Her uç nokta için altı olay türüne abone olunabilir. Her istek aynı zarfı kullanır — event, timestamp, guild_id ve data — ve yalnızca data nesnesi farklıdır.
| Event | Fires when |
|---|---|
ticket.created | Bir bilet açıldığında |
ticket.closed | Bir bilet kapatıldığında |
ticket.updated | Açık bir bilette başka bir şey değiştiğinde |
message.sent | Bir üye veya personel bir bilette yazdığında |
blacklist.added | Bir üye kara listeye alındığında |
blacklist.removed | Bir kara liste kaydı kaldırıldığında |
Çözümlenemeyen alanlar atlanmak yerine null olarak gönderilir — böylece anahtarların mevcut olduğuna güvenebilirsiniz. Discord kullanıcıyı döndürmediğinde username değeri null olur.
Ortak alanlar
Her bilet olayı şunları içerir:
| Field | Type | Description |
|---|---|---|
ticket_id | string | Kalıbınızdan gelen okunabilir bilet kimliği, ör. ticket-1042 |
ticket_num_id | number | Artan bilet numarası, ör. 1042 |
channel_id | string | Biletin Discord kanalı |
category | string | null | Kategori adı, bilette kategori yoksa null |
user | object | null | { id, username } biçiminde bilet sahibi |
ticket.created
Bilet kanalı oluşturulur oluşturulmaz gönderilir.
{
"event": "ticket.created",
"timestamp": "2026-08-26T08:23:11.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1042",
"ticket_num_id": 1042,
"channel_id": "998877665544332211",
"category": "🤖 Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"created_at": "2026-08-26T08:23:11.000Z"
}
}Bu olay, bilet açıldığında tetiklenir; yani üye henüz hiçbir şey yazmadan önce. İlk mesajı istiyorsanız message.sent olayını da dinleyin.
ticket.closed
{
"event": "ticket.closed",
"timestamp": "2026-08-26T07:45:02.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1041",
"ticket_num_id": 1041,
"channel_id": "998877665544332211",
"category": "💸 Payment",
"user": { "id": "987654321098765432", "username": "Luna" },
"closed_by": { "id": "112233445566778899", "username": "Staff_01" },
"reason": "Issue resolved",
"closed_at": "2026-08-26T07:45:02.000Z"
}
}| Field | Type | Description |
|---|---|---|
closed_by | object | Kim kapattı. Otomatik kapanışlarda bot raporlanır |
reason | string | null | Kapatma nedeni, verilmediyse null |
ticket.updated
Açık bir bilettteki değişiklikler için genel olaydır. action, neyin değiştiğini söyler; changes ise o belirli işlemin ayrıntılarını taşır.
{
"event": "ticket.updated",
"timestamp": "2026-08-26T14:02:19.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1038",
"ticket_num_id": 1038,
"channel_id": "998877665544332211",
"category": "🤖 Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"action": "ticket_priority:add",
"changes": { "priority": "high" },
"reason": null,
"updated_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Olası action değerleri
action | Meaning | changes contains |
|---|---|---|
ticket_claim:add | Bir personel bileti sahiplendi | (empty) |
ticket_unclaim:add | Sahiplik bırakıldı | (empty) |
ticket_priority:add | Öncelik değişti | priority |
ticket_rename:add | Kanalın adı değiştirildi | new_name |
ticket_remind:add | Bir hatırlatma gönderildi | (empty) |
ticket_feedback:add | Üye bileti değerlendirdi | star_count, feedback |
ticket_schedule_close:add | Bir kapanış planlandı | duration, schedule_time |
ticket_request_close:add | Personel üyeden kapatmasını istedi | duration, request_duration_time |
ticket_request_close_accept:add | Üye kabul etti | (empty) |
ticket_request_close_deny:add | Üye reddetti | (empty) |
ticket_close_cancel:add | Devam eden bir kapanış iptal edildi | (empty) |
ticket_additional_access:add | Bilete bir kullanıcı veya rol eklendi | entity_type, entity_id, reason |
ticket_additional_access:remove | Bir kullanıcı veya rol kaldırıldı | entity_type, entity_id, reason |
Bu listeyi açık uçlu olarak değerlendirin. TicketWave büyüdükçe yeni işlemler eklenir ve bunlar ticket.updated olarak gelir. Bilinmeyen değerlerde hata vermek yerine, yalnızca ilgilendiğiniz işlemlere göre dallanıp geri kalanını yok sayın.
Bir bilet adımını yanıtlamak bir olay üretmez. Aksi halde çok adımlı bir bilet, üye formu doldururken uç noktanızı gereksiz yere istila ederdi.
message.sent
Açık bir bilet içindeki her insan mesajı için gönderilir. Botlardan gelen mesajlar — TicketWave’in kendisi dahil — atlanır.
{
"event": "message.sent",
"timestamp": "2026-08-26T22:10:55.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1040",
"ticket_num_id": 1040,
"channel_id": "998877665544332211",
"message_id": "1234567890123456789",
"content": "Hello, how can I help you?",
"author": { "id": "112233445566778899", "username": "Staff_01" },
"is_staff": true,
"sent_at": "2026-08-26T22:10:55.000Z"
}
}| Field | Type | Description |
|---|---|---|
content | string | Ham mesaj metni. Yalnızca ek içeren mesajlarda boştur |
author | object | Gönderenin { id, username } bilgisi |
is_staff | boolean | Gönderenin yapılandırılmış bir destek rolü varsa true |
Bu, açık ara en yüksek hacimli olaydır — yoğun bir sunucu mesaj başına bir istek üretir. Yalnızca gerçekten mesaj düzeyinde veriye ihtiyacınız varsa abone olun ve alıcınızın hızlı yanıt verdiğinden emin olun.
blacklist.added
Bir bilete bağlı değildir, bu yüzden bu payload’da ticket_id yoktur.
{
"event": "blacklist.added",
"timestamp": "2026-08-26T18:33:47.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"reason": "Spam",
"added_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}blacklist.removed
{
"event": "blacklist.removed",
"timestamp": "2026-08-26T18:40:12.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"removed_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Test events
Send test event düğmesi, data alanı yalnızca şu olan gerçek ve imzalı bir istek gönderir:
{
"event": "ticket.created",
"timestamp": "2026-08-26T12:00:00.000Z",
"guild_id": "123456789012345678",
"data": { "test": true }
}event, uç noktanın abone olduğu ilk türdür. Üretim mantığında test teslimlerini atlamak istiyorsanız data.test alanını kontrol edin.
Next Steps
- Example Server (Bu payload’ları Express içinde işleme)
- Webhooks (İmzalama, yeniden denemeler ve teslim geçmişi)
How is this guide?
