TicketWave Logo
Webhooks

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.

EventFires when
ticket.createdBir bilet açıldığında
ticket.closedBir bilet kapatıldığında
ticket.updatedAçık bir bilette başka bir şey değiştiğinde
message.sentBir üye veya personel bir bilette yazdığında
blacklist.addedBir üye kara listeye alındığında
blacklist.removedBir 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:

FieldTypeDescription
ticket_idstringKalıbınızdan gelen okunabilir bilet kimliği, ör. ticket-1042
ticket_num_idnumberArtan bilet numarası, ör. 1042
channel_idstringBiletin Discord kanalı
categorystring | nullKategori adı, bilette kategori yoksa null
userobject | 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"
  }
}
FieldTypeDescription
closed_byobjectKim kapattı. Otomatik kapanışlarda bot raporlanır
reasonstring | nullKapatma 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

actionMeaningchanges contains
ticket_claim:addBir personel bileti sahiplendi(empty)
ticket_unclaim:addSahiplik bırakıldı(empty)
ticket_priority:addÖncelik değiştipriority
ticket_rename:addKanalın adı değiştirildinew_name
ticket_remind:addBir hatırlatma gönderildi(empty)
ticket_feedback:addÜye bileti değerlendirdistar_count, feedback
ticket_schedule_close:addBir kapanış planlandıduration, schedule_time
ticket_request_close:addPersonel üyeden kapatmasını istediduration, request_duration_time
ticket_request_close_accept:addÜye kabul etti(empty)
ticket_request_close_deny:addÜye reddetti(empty)
ticket_close_cancel:addDevam eden bir kapanış iptal edildi(empty)
ticket_additional_access:addBilete bir kullanıcı veya rol eklendientity_type, entity_id, reason
ticket_additional_access:removeBir 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"
  }
}
FieldTypeDescription
contentstringHam mesaj metni. Yalnızca ek içeren mesajlarda boştur
authorobjectGönderenin { id, username } bilgisi
is_staffbooleanGö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?