N'oluyo · Geliştirici Dokümanları · Son güncelleme: · https://noluyo.net/gelistirici

Mesajlar

Mesajlar için REST API rotaları.

Mesajlar

Mesajlar için REST API rotaları.

Mesajları listele (listMessages)

GET https://noluyo.net/api/v1/channels/{channel_id}/messages (GET /channels/{channel_id}/messages)

Mesajları en yeniden eskiye döndürür: son sayfayı ya da bir mesajın öncesini, sonrasını veya çevresini. before ile after birlikte, around da bunlardan biriyle kullanılamaz. ReadMessageHistory yoksa yanıt hata değil, boş listedir. Çağıranın tepkileri reactions[].me ile işaretlenir. Sunucu kanalında, içerik intent'i olmayan bir bot başkalarının mesajlarını içeriği çıkarılmış olarak alır; botu etiketleyenler hariç.

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

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.
limitqueryinteger-Kaç mesaj döneceği. (1–100 · = 50)
beforequeryID-Bu ID'den eski mesajlar.
afterqueryID-Bu ID'den yeni mesajlar. Ona en yakın olanlar döner, sıra yine en yeniden eskiyedir.
aroundqueryID-Bu ID'nin çevresindeki mesajlar: kendisi ve yenileri sayfanın büyük yarısını doldurur.

Örnek çağrılar

curl "https://noluyo.net/api/v1/channels/111500000000000100/messages?limit=50" \
  -H "Authorization: Bot $BOT_TOKEN"
// JavaScript (noluyo-bot)
await bot.rest.listMessages("111500000000000100", { limit: 50 });
# Python (noluyo_bot)
await bot.rest.list_messages("111500000000000100", {"limit": 50})

Yanıt (200)

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

Hata kodları

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

Mesaj gönder (createMessage)

POST https://noluyo.net/api/v1/channels/{channel_id}/messages (POST /channels/{channel_id}/messages)

Metin kanalına mesaj gönderir ve mesajla birlikte 200 döner. content en çok 2000 karakterdir; mesajda dosya, iletme, anket veya çıkartma yoksa zorunludur. Dosya göndermek için multipart/form-data kullan: JSON payload_json adlı parçada, en çok on dosya files[0], files[1] gibi adlandırılmış parçalarda olur; bunun için AttachFiles gerekir. message_reference mesajı yanıta çevirir (ReadMessageHistory); allowed_mentions.replied_user false, yanıtın kişiyi etiketlemesini önler. En çok 64 karakterlik nonce yalnızca bu yanıtta geri gelir. Bir mesajda anket, iletme ve çıkartmadan yalnızca biri olabilir; hiçbiri dosyayla birlikte gönderilemez. Sunucunun otomatik moderasyonu mesajı automod_blocked, kanalın yavaş modu slowmode ile reddedebilir. Botlar mesaja embed (en çok 10 kart) ve bileşen (buton ve menü, en çok 5 satır) ekleyebilir; nasıl yapıldığını embed rehberi anlatır. Embed görselleri mesajla gönderilen dosyalardır, başka bir adres olamaz. flags 64 (ephemeral) ephemeral_forbidden döner. Embed ve bileşenler ayrıca, boyutları sunucunun üye sayısıyla çarpılarak x-rate-limits içindeki fanout tavanına sayılır: X-RateLimit-Scope bot ile gelen 429 sahibinin payı ya da bekleme süresidir, shared ile gelen 429 tüm botların ortak tavanıdır ve botun suçu değildir; max_bytes ile gelen 400 fanout_too_large, mesajın o kanal için fazla büyük olduğunu söyler. Bir kişinin botunla açtığı DM'de kendiliğinden ancak kişinin son mesajı, komutu ya da basmasından sonraki 24 saat içinde yazabilirsin (dm_window_closed); kişi DM'yi kapattıysa ya da botu engellediyse hiç yazamazsın (dm_closed); tüm DM'lerinde toplam dm_send sınırı geçerlidir. Ayrıntılar özel mesajlar rehberinde.

  • Kimlik: Bot token'ı (Authorization: Bot <BOT_TOKEN>)
  • İzinler: SendMessages, AttachFiles, ReadMessageHistory, MentionEveryone, UseExternalStickers
  • Hız sınırı: message (5 / 5s)

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.

Gövde alanları

AlanTürZorunluAçıklama
contentstring-(<= 2000)
noncestring-Daha uzunu hata vermeden atılır. (<= 64)
message_referenceobject-
message_reference.message_idIDevet64 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.
allowed_mentionsobject-
allowed_mentions.replied_userboolean-
allowed_mentions.parsestring[]-Yalnızca botlar için. Metindeki hangi etiket türlerinin bildirim göndereceği. parse, users veya roles gönderilirse yalnızca listelenenler bildirim gönderir; varsayılan için üçünü de yazma.
allowed_mentions.usersID[]-Yalnızca botlar için. parse içinde users yokken de bildirim gönderen kullanıcılar. parse içindeki users ile birlikte yazılamaz. En çok 100. (<= 100)
allowed_mentions.rolesID[]-Yalnızca botlar için. parse içinde roles yokken de bildirim gönderen roller. parse içindeki roles ile birlikte yazılamaz. En çok 100. (<= 100)
forwardobject-
forward.channel_idIDevet64 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_idIDevet64 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.
pollobject-
poll.questionstringevet(1–300)
poll.answersstring[]evet(2–10)
poll.allow_multiselectboolean-
poll.durationinteger-Saat. (1, 4, 8, 24, 72, 168 · = 24)
sticker_idsID[]-(<= 1)
embedsEmbed[]-Yalnızca botlar için; kişi gönderirse validation_failed alır. Embed'li mesajda content gerekmez. Görseller aynı mesajla gönderilen dosyalardan gelir (attachment://); başka bir adres reddedilir. (<= 10)
componentsMessageComponent[]-Yalnızca botlar için. Yalnızca bileşenli mesaj reddedilir: content, embed veya dosya gerekir. (<= 5)
flagsinteger-Yalnızca botlar için. Boş bırak: 64 (ephemeral) ephemeral_forbidden döner çünkü kanal mesajının gösterileceği tek bir kişi yoktur; başka her bit invalid olur.

Örnek çağrılar

curl -X POST "https://noluyo.net/api/v1/channels/111500000000000100/messages" \
  -H "Authorization: Bot $BOT_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content":"Merhaba!"}'
// JavaScript (noluyo-bot)
await bot.rest.createMessage("111500000000000100", { content: "Merhaba!" });
# Python (noluyo_bot)
await bot.rest.create_message("111500000000000100", {"content": "Merhaba!"})

Yanıt (200)

{
  "id": "111600000000000000",
  "type": 0,
  "channel_id": "111500000000000100",
  "guild_id": "111500000000000000",
  "author": {
    "id": "111540000000000001",
    "username": "ornek_bot",
    "display_name": "Örnek Bot",
    "avatar": null,
    "cosmetics": null,
    "bot": true
  },
  "content": "Merhaba!",
  "timestamp": "2026-11-04T22:58:33.427Z",
  "edited_timestamp": null,
  "attachments": [],
  "mentions": [],
  "mention_roles": [],
  "mention_everyone": false,
  "pinned": false,
  "nonce": "istek-1"
}

Hata kodları

  • HTTP 400: validation_failed, invalid_body, invalid_channel_type, automod_blocked, ephemeral_forbidden
  • HTTP 401: unauthorized
  • HTTP 403: missing_access, missing_permissions, temporarily_banned, dm_closed, dm_window_closed
  • HTTP 404: unknown_channel
  • HTTP 413: body_too_large, file_too_large
  • HTTP 429: rate_limited, slowmode, upload_quota
  • HTTP 503: maintenance

Mesajı getir (getMessage)

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

Tek bir mesajı döndürür. Listeden farklı olarak, ReadMessageHistory yoksa missing_permissions döner. Sunucu kanalında, içerik intent'i olmayan bir bot başkalarının mesajlarını içeriği çıkarılmış olarak alır; botu etiketleyenler hariç.

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

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.
message_idpathstringevetMesaj ID'si.

Örnek çağrılar

curl -X GET "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000" \
  -H "Authorization: Bot $BOT_TOKEN"
// JavaScript (noluyo-bot)
await bot.rest.getMessage("111500000000000100", "111600000000000000");
# Python (noluyo_bot)
await bot.rest.get_message("111500000000000100", "111600000000000000")

Yanıt (200)

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

Hata kodları

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

Mesajı düzenle (editMessage)

PATCH https://noluyo.net/api/v1/channels/{channel_id}/messages/{message_id} (PATCH /channels/{channel_id}/messages/{message_id})

Çağıranın kendi mesajını değiştirir. Kişi yalnızca content değiştirir. Bot content, embeds ve components alanlarını ayrı ayrı değiştirebilir: göndermediği alan kalır, boş liste embed veya bileşenleri kaldırır, yalnızca bileşen değişirse mesaj düzenlendi sayılmaz. Embed içindeki attachment:// yalnızca mesajın var olan dosyalarına bakar; yeni dosyalı istek reddedilir. Düzenleme, etiketlenenleri günceller ama kimseye yeniden bildirim göndermez. Dosya, iletme, anket, çıkartma veya embed içeren mesajın metni boşaltılabilir.

  • Kimlik: Bot token'ı (Authorization: Bot <BOT_TOKEN>)
  • İzinler: SendMessages
  • Hız sınırı: write (10 / 10s)

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.
message_idpathstringevetMesaj ID'si.

Gövde alanları

AlanTürZorunluAçıklama
contentstring-(<= 2000)
embedsEmbed[]-Yalnızca botlar için. Embed'lerin yerine geçer. attachment:// yalnızca mesajın var olan dosyalarına bakar; yeni dosya yeni mesajla gelir. (<= 10)
componentsMessageComponent[]-Yalnızca botlar için. Satırların yerine geçer. Yalnızca bu değişirse mesaj düzenlendi sayılmaz. (<= 5)
allowed_mentionsobject-
allowed_mentions.replied_userboolean-
allowed_mentions.parsestring[]-Yalnızca botlar için. Metindeki hangi etiket türlerinin bildirim göndereceği. parse, users veya roles gönderilirse yalnızca listelenenler bildirim gönderir; varsayılan için üçünü de yazma.
allowed_mentions.usersID[]-Yalnızca botlar için. parse içinde users yokken de bildirim gönderen kullanıcılar. parse içindeki users ile birlikte yazılamaz. En çok 100. (<= 100)
allowed_mentions.rolesID[]-Yalnızca botlar için. parse içinde roles yokken de bildirim gönderen roller. parse içindeki roles ile birlikte yazılamaz. En çok 100. (<= 100)

Örnek çağrılar

curl -X PATCH "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000" \
  -H "Authorization: Bot $BOT_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content":"Merhaba, düzenlendi!"}'
// JavaScript (noluyo-bot)
await bot.rest.editMessage("111500000000000100", "111600000000000000", { content: "Merhaba, düzenlendi!" });
# Python (noluyo_bot)
await bot.rest.edit_message("111500000000000100", "111600000000000000", {"content": "Merhaba, düzenlendi!"})

Yanıt (200)

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

Hata kodları

  • HTTP 400: validation_failed, invalid_body, invalid_channel_type, automod_blocked
  • HTTP 401: unauthorized
  • HTTP 403: not_author, system_message, missing_access, missing_permissions, temporarily_banned, dm_closed
  • HTTP 404: unknown_channel, unknown_message
  • HTTP 413: body_too_large
  • HTTP 429: rate_limited
  • HTTP 503: maintenance

Mesajı sil (deleteMessage)

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

Mesajı siler. Çağıranın kendi mesajı izin istemez; başkasının mesajı veya sunucudaki sistem mesajı ManageMessages ister.

  • Kimlik: Bot token'ı (Authorization: Bot <BOT_TOKEN>)
  • İzinler: ManageMessages
  • Hız sınırı: write (10 / 10s)

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.
message_idpathstringevetMesaj ID'si.

Örnek çağrılar

curl -X DELETE "https://noluyo.net/api/v1/channels/111500000000000100/messages/111600000000000000" \
  -H "Authorization: Bot $BOT_TOKEN"
// JavaScript (noluyo-bot)
await bot.rest.deleteMessage("111500000000000100", "111600000000000000");
# Python (noluyo_bot)
await bot.rest.delete_message("111500000000000100", "111600000000000000")

Yanıt (204)

Yanıt gövdesi yok.

Hata kodları

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

Birden çok mesajı sil (bulkDeleteMessages)

POST https://noluyo.net/api/v1/channels/{channel_id}/messages/bulk-delete (POST /channels/{channel_id}/messages/bulk-delete)

Sunucudaki bir metin kanalının 2 ile 100 arası mesajını siler; hiçbiri 14 günden eski olamaz. Var olmayan mesajların ID'leri yok sayılır, tekrar edenler bir kez sayılır.

  • Kimlik: Bot token'ı (Authorization: Bot <BOT_TOKEN>)
  • İzinler: ManageMessages
  • Hız sınırı: bulk (1 / 1s)

Parametreler

AdKonumTürZorunluAçıklama
channel_idpathstringevetKanal ID'si.

Gövde alanları

AlanTürZorunluAçıklama
messagesID[]evet(2–100)

Örnek çağrılar

curl -X POST "https://noluyo.net/api/v1/channels/111500000000000100/messages/bulk-delete" \
  -H "Authorization: Bot $BOT_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"messages":["111600000000000000","111600000000000100"]}'
// JavaScript (noluyo-bot)
await bot.rest.bulkDeleteMessages("111500000000000100", { messages: ["111600000000000000", "111600000000000100"] });
# Python (noluyo_bot)
await bot.rest.bulk_delete_messages("111500000000000100", {"messages": ["111600000000000000", "111600000000000100"]})

Yanıt (204)

Yanıt gövdesi yok.

Hata kodları

  • HTTP 400: validation_failed, invalid_body, invalid_channel_type, messages_too_old
  • HTTP 401: unauthorized
  • HTTP 403: missing_access, missing_permissions, temporarily_banned
  • HTTP 404: unknown_channel
  • HTTP 413: body_too_large
  • HTTP 429: rate_limited
  • HTTP 503: maintenance