# Yapay zekaya yazdır

Hiç kod bilmesen bile bir yapay zeka asistanına N'oluyo'nun dokümanını verip çalışan bir bot yazdırabilirsin. İşin sırrı yapay zekaya doğru referans dosyasını vermek, ne istediğini net tarif etmek ve botun şifresi olan token'ı gizli tutmaktır.

## 1. Portaldan uygulamanı aç ve token'ı `.env` dosyasına koy

1. [Geliştirici portalına](https://noluyo.net/gelistirici/uygulamalar) git, N'oluyo hesabınla giriş yap ve **Yeni uygulama** düğmesine bas.
2. Botuna bir görünen ad (örneğin `Karşılama Botu`) ve küçük harfli bir kullanıcı adı (örneğin `karsilama_botu`) verip **Oluştur**'a bas.
3. Ekranda yalnızca bir kez gösterilen **token** değerini **Kopyala** ile al.
4. Bilgisayarında botun için boş bir klasör aç (örneğin `benim-botum`), içinde `.env` adında düz metin bir dosya oluştur ve token'ı yalnızca oraya yaz:

```ini title=.env
BOT_TOKEN=buraya_kopyaladigin_token_gelecek
```

> **Uyarı:** Token'ı **asla yapay zeka sohbetine yapıştırma** ve **asla kod dosyalarının içine düz metin olarak yazdırma.** Sohbete yapıştırdığın an şifreni üçüncü taraf bir servise vermiş olursun. Yanlışlıkla yapıştırırsan hemen portala dönüp **Token'ı yenile** düğmesine bas.

Ardından uygulama sayfasının **Ekleme bağlantısı** bölümünden botun ihtiyaç duyacağı izinleri seç (başlangıç için **Kanalları görüntüle**, **Mesaj gönder**, **Mesaj geçmişini oku** yeterlidir), **Bağlantıyı aç**'a bas ve botu deneme sunucuna ekle.

Botun kanaldaki normal mesajların metnini okuyacaksa (örneğin küfür süzgeci ya da `!selam` gibi ünlemli komutlar için) portaldaki **Ayrıcalıklı intent'ler** bölümünden **Mesaj içeriği**'ni açmayı unutma. Yalnızca `/` eğik çizgi komutu ve buton kullanacaksan buna gerek yoktur.

## 2. Yapay zekaya hangi doküman dosyasını vereceksin

Yapay zeka araçları N'oluyo API'sini ezbere bilmez; dokümanı vermezsen başka sohbet platformlarının adreslerini ve kütüphanelerini uydurur. Kullandığın araca göre şu seçeneklerden birini indirip sohbete ekle:

| Seçenek | Adres / Nasıl alınır | Ne zaman seçmeli |
|---|---|---|
| **`llms-kisa.txt`** (önerilen başlangıç) | `/gelistirici/llms-kisa.txt` adresinden indir ya da kopyala | 30 KB altındadır. Ücretsiz ya da dar bağlamlı sohbet pencerelerine doğrudan yapıştırmak ve resmi `noluyo-bot` kütüphanesiyle hızlıca bot yazdırmak için en iyi seçimdir. |
| **`llms-full.txt`** (tam referans) | `/gelistirici/llms-full.txt` adresinden indir | Dosya yükleme destekleyen araçlara ver. Tüm rehberleri, bütün REST rotalarını, olay şemalarını, ses kurallarını ve OAuth2 akışını tek dosyada içerir. |
| **Tek sayfa `.md`** | Her rehberin üstündeki **Markdown olarak aç** / **Kopyala** düğmesi | Yalnızca tek bir özelliği (örneğin [Ses](https://noluyo.net/gelistirici/ses.md) ya da [Formlar](https://noluyo.net/gelistirici/formlar.md)) ekletmek istediğinde ilgili `.md` dosyasını ver. |
| **`.html` veya `.pdf` kaydı** | Tarayıcıdan **Farklı kaydet** (`.html`) ya da **Yazdır → PDF olarak kaydet** | Yalnızca PDF veya HTML yüklemesi kabul eden kurumsal yapay zeka araçlarında kullan. |

## 3. Kopyalanmaya hazır istem

Yukarıdaki doküman dosyasını (`llms-kisa.txt` veya `llms-full.txt`) sohbete ekledikten sonra aşağıdaki kutuyu kopyalayıp yapıştır, en altındaki `[BURAYA BOTUN NE YAPACAĞINI YAZ]` satırını kendi istediğin işle değiştir:

```text title=istem
Sana ekte N'oluyo geliştirici dokümanını (llms-kisa.txt veya llms-full.txt) veriyorum. Yalnızca bu dokümandaki kurallara, rotalara ve olay adlarına uyarak N'oluyo için çalışan bir bot yaz.

Kesin kurallar:
1. Başka hiçbir sohbet platformunun kütüphanesini, adresini veya olay yapısını kullanma. Resmi `noluyo-bot` paketini (Node.js 22+ ESM) kullan; gerekirse yalnızca dokümanın açıkça söylediği standart API adresini (`https://noluyo.net/api/v1`) çağır.
2. Bot token değerini benden isteme ve koda düz metin olarak asla yazma. Kod token'ı ortam değişkeninden (`.env` dosyasından `node --env-file=.env bot.mjs` ile `process.env.BOT_TOKEN`) okusun.
3. Bana oluşturmam gereken tüm dosyaları (`package.json`, `.gitignore`, `.env.example`, `bot.mjs`) tam içerikleriyle, hiçbir yeri `// ...` diye kısaltmadan ver; `.gitignore` içinde `.env` ve `node_modules` mutlaka bulunsun.
4. Bu bot için geliştirici portalında açmam gereken ayrıcalıklı intent'leri (`GUILD_MEMBERS`, `GUILD_PRESENCES`, `MESSAGE_CONTENT`) ve sunucuda bota vermem gereken izinleri adım adım söyle.
5. Etkileşimlere (`INTERACTION_CREATE`) 3 saniye içinde yanıt ver; embed görseli gerekiyorsa dış URL yerine yalnızca `attachment://` kullan; `4004` ve `4014` gibi yeniden bağlanılmaması gereken kapanış kodlarında sonsuz döngüye girme.
6. Sonunda botu Windows, macOS ve Linux terminalinde nasıl kurup çalıştıracağımı tek tek komutlarla anlat.

İstediğim bot şu işi yapacak:
[BURAYA BOTUN NE YAPACAĞINI YAZ]
```

Python tercih ediyorsan istemdeki 1. ve 2. maddede `noluyo-bot` Python paketini (`noluyo_bot`, Python 3.11+) ve `os.environ["BOT_TOKEN"]` istediğini belirtmen yeterlidir.

## 4. Botunu nasıl tarif etmelisin

Yapay zeka belirsiz cümlelerde tahmin yürütür; tetikleyiciyi (ne olunca?), aksiyonu (ne yapacak?) ve sınırı (kim kullanabilir, hangi kanalda?) tek paragrafta açıkça yaz.

**İyi tarif örnekleri (5 örnek):**

1. **Karşılama mesajı:** "Sunucuya yeni bir üye katıldığında (`GUILD_MEMBER_ADD`), `HOSGELDIN_KANAL_ID` ortam değişkenindeki kanala yeni üyeyi etiketleyerek 'Aramıza hoş geldin!' yazan ve sunucu kurallarını özetleyen mavi renkli bir embed kartı atan bot."
2. **Butonla rol seçici:** "`/rol-paneli` eğik çizgi komutunu yalnızca `ManageRoles` izni olan yöneticiler çalıştırabilsin. Komut kanala 'Duyuru bildirimlerini almak için butona bas' mesajı ve bir buton göndersin; üye butona bastığında `DUYURU_ROL_ID` rolü onda yoksa versin, varsa geri alsın ve sonucu yalnızca basan kişinin gördüğü (`ephemeral`) bir mesajla bildirsin."
3. **Sözcük süzgeci:** "Kanalda yazılan mesajlarda `.env` içindeki `YASAKLI_KELIMELER` listesinde geçen bir sözcük varsa mesajı silsin, aynı kanala yazarı etiketleyip 'Bu sözcük yasak.' diyen bir uyarı bıraksın ve 10 saniye sonra kendi uyarı mesajını da silsin."
4. **Butonlu anket:** "`/anket` komutu `soru`, `secenek1` ve `secenek2` adında üç zorunlu metin seçeneği alsın. Kanala iki butonlu bir kart göndersin; her üye yalnızca bir kez oy verebilsin, oy değiştirirse eski oyu düşsün ve kartın üstündeki oy sayıları anında güncellensin."
5. **Zaman aşımı komutu:** "`/sustur` komutu bir `uye` (kullanıcı), `dakika` (1 ile 60 arası tam sayı) ve isteğe bağlı `sebep` alsın; yalnızca `ModerateMembers` izni olanlar kullanabilsin. Hedef üyeyi o süre kadar zaman aşımına alsın ve `DENETIM_KANAL_ID` kanalına kimin kimi neden susturduğunu yazan bir kayıt mesajı atsın."

**Kaçınman gereken belirsiz tarifler (3 kötü örnek):**

- *"Bana her şeyi yapan güzel bir moderasyon botu yaz."* — Hangi komutların olacağı, kimin kullanacağı ve ne ceza verileceği belirsizdir; yapay zeka yarım kalan onlarca komut üretir.
- *"Sunucudaki küfürleri engellesin ve insanlara özelden uyarı atsın."* — N'oluyo'da botlar kimseye ilk DM'yi atamaz (`403 bot_forbidden`); kurala aykırı istek botun sürekli hata almasına yol açar.
- *"Ses kanalındaki konuşmaları dinleyip yazıya döken bot yap."* — N'oluyo'da botlar seste yalnızca yayın yapar, hiçbir koşulda ses alamaz ve kimseyi duyamaz.

## 5. Yapay zekanın sık yanılgıları ve nasıl düzeltilir

Yapay zeka bazen kendi eski alışkanlıklarına döner. Kodda şunlardan birini görürsen kendisine hatırlatıp düzelttir:

| Yanılgı | Kodda nasıl anlaşılır | Yapay zekaya ne söylemeli |
|---|---|---|
| Başka platformun kütüphanesini eklemek | `package.json` veya `import` satırında `noluyo-bot` dışında yabancı bir sohbet kütüphanesi görünür | "Başka platform kütüphanesi çalışmaz; onu kaldır ve dokümandaki `noluyo-bot` paketini kullan." |
| API adresini uydurmak | `https://api.noluyo.net` ya da `/api/v10` gibi yanlış adresler yazar | "Taban adres tam olarak `https://noluyo.net/api/v1` olmalı; dokümandaki rotaları birebir kullan." |
| `4014` kapanış kodunu görmezden gelmek | Bağlantı kopunca her kodda sonsuz `setTimeout` ile yeniden bağlanır | "`4014` ayrıcalıklı intent kapalı demektir, `4004` geçersiz token demektir; bunlarda yeniden bağlanma, net hata yazıp dur." |
| Token'ı koda gömmek | `const token = "nly_..."` gibi sabit metin yazar | "Token'ı koddan sil; yalnızca `process.env.BOT_TOKEN` oku." |
| Embed resmine dış URL koymak | `image: { url: "https://..." }` gönderir ve `400 validation_failed` alır | "N'oluyo'da embed görselleri dış URL kabul etmez; resmi dosya olarak yükleyip `attachment://dosya.png` kullan ya da görsel alanını kaldır." |

## 6. Çalıştırmak, hatayı yapıştırmak ve botu açık tutmak

Bilgisayarında Node.js ya da Python kurulu değilse önce [Kurulum](https://noluyo.net/gelistirici/kurulum.md) sayfasındaki adımları tamamla. Sonra klasöründe terminali açıp yapay zekanın verdiği kurulum ve çalıştırma komutunu uygula:

```bash
npm install
node --env-file=.env bot.mjs
```

**Hata çıkarsa ne yapmalı?** Kırmızı bir hata metni görürsen panikleme; ilk seferde küçük bir izin ya da ayar eksiği çıkması çok doğaldır. Terminaldeki hata satırlarını kopyalayıp yapay zekaya yapıştır (**`.env` dosyasının içeriğini ve token'ı asla yapıştırma!**). En sık karşılaşılan hata mesajlarının anlamını kendin de [Sık hatalar](https://noluyo.net/gelistirici/sik-hatalar.md) sayfasından bir dakikada kontrol edebilirsin.

**Bittiğini nasıl anlarsın?**

- Terminalde botunun bağlandığını söyleyen satırı (`... bağlandı` / `READY`) görüyorsun,
- Sunucunun üye listesinde botun çevrimiçi görünüyor,
- İstediğin komutu veya olayı denediğinde bot 1–2 saniye içinde beklediğin yanıtı veriyor ve terminalde kırmızı hata satırı çıkmıyor.

Botun kendi bilgisayarında sorunsuz çalıştığında, bilgisayarını kapattığında da açık kalmasını istiyorsan [Botu açık tut](https://noluyo.net/gelistirici/botu-acik-tut.md) rehberine geç.

## Bu sayfayı yapay zekaya verirsen

> **İpucu:** Bu sayfanın kendisini değil, 3. adımdaki `istem` kutusunu ve `/gelistirici/llms-kisa.txt` ya da `/gelistirici/llms-full.txt` dosyasını yapay zekaya ver. Token'ın yalnızca `.env` dosyasında durduğundan her adımda emin ol.

## Sırada ne var

- [Kurulum](https://noluyo.net/gelistirici/kurulum.md): Node.js, Python, terminal ve `.env` kurulumunun ekran çıktılarıyla anlatımı
- [Sık hatalar](https://noluyo.net/gelistirici/sik-hatalar.md): `4014`, boş `content`, `403` ve "etkileşim başarısız" çözümleri
- [Botu açık tut](https://noluyo.net/gelistirici/botu-acik-tut.md): botunu bir Linux sunucuda 7/24 kesintisiz çalıştırmak
