# Kurulum

Botunu kendi bilgisayarında çalıştırmak için iki şeye ihtiyacın var: bir programlama çalışma ortamı (**Node.js 22+** veya **Python 3.11+**) ve komut yazacağın bir **terminal** penceresi. İkisini de kurmak yalnızca birkaç dakika sürer; yalnız birini seçmen yeterlidir.

## 1. Çalışma ortamını kur

JavaScript ile yazacaksan **Node.js 22 veya üstünü**, Python ile yazacaksan **Python 3.11 veya üstünü** kur. Kararsızsan Node.js ile başla: [Hızlı başlangıç](https://noluyo.net/gelistirici/baslangic.md) ve [Yapay zekaya yazdır](https://noluyo.net/gelistirici/yapay-zekaya-yazdir.md) örnekleri varsayılan olarak onu kullanır.

### Windows

- **Node.js:** `nodejs.org` adresinden güncel LTS (22 ya da üstü) `.msi` kurulum paketini indirip ileri diyerek kur; ya da PowerShell açıp `winget install OpenJS.NodeJS.LTS` komutunu çalıştır.
- **Python:** `python.org/downloads` adresinden Python 3.11+ indirirken ilk ekrandaki **"Add python.exe to PATH"** kutusunu mutlaka işaretle; ya da `winget install Python.Python.3.12` çalıştır.

Kurulum bitince açık terminal penceren varsa kapatıp yeniden aç ki yeni komutlar tanınsın.

### macOS

- **Node.js:** `nodejs.org` adresinden `.pkg` kurulum dosyasını indirip kur; Homebrew kullanıyorsan `brew install node@22` çalıştır.
- **Python:** `python.org/downloads` adresinden macOS paketini kur ya da `brew install python@3.12` çalıştır.

### Linux (Ubuntu / Debian ve türevleri)

Dağıtım depolarındaki eski Node sürümleri (`node 18` altı) yerleşik `WebSocket` taşımadığı için güncel Node 22+ veya Python 3.11+ kurduğundan emin ol:

```bash
# Python 3.11+ ve sanal ortam aracı
sudo apt update && sudo apt install -y python3 python3-venv python3-pip curl
```

Node.js için `nodejs.org/en/download` sayfasındaki resmi ikili paketi ya da sürüm yöneticisini (`fnm` / `nvm`) kullanarak `22` sürümünü kur.

## 2. Terminali aç ve sürümü doğrula

- **Windows:** Başlat menüsüne `PowerShell` veya `Terminal` yazıp aç.
- **macOS:** `Cmd + Space` tuşlarına bas, `Terminal` yazıp aç.
- **Linux:** Uygulama menüsünden `Terminal` aç (`Ctrl + Alt + T`).

Kurduğun aracın sürümünü kontrol et:

```bash tab=JavaScript
node --version
npm --version
```

```bash tab=Python
python3 --version
```

Beklenen çıktı (sürüm numaralarının son haneleri daha yüksek olabilir):

```text
v22.14.0
10.9.2
```

ya da Python için (`Windows`'ta `python --version` da yazabilirsin):

```text
Python 3.12.8
```

`command not found` veya `'node' is not recognized` görürsen terminali kapatıp yeniden aç; Python'da Windows kullanıyorsan kurulumda PATH kutusunun işaretli olduğundan emin ol.

## 3. Proje klasörünü oluştur

Masaüstünde ya da belgelerinde botun için temiz bir klasör aç ve içine gir:

```bash
mkdir ilk-botum
cd ilk-botum
```

## 4. `.env` ve `.gitignore` dosyalarını hazırla

[Geliştirici portalından](https://noluyo.net/gelistirici/uygulamalar) aldığın bot token'ını kodun içine değil, aynı klasördeki `.env` dosyasına koy. Yanına da bu dosyanın yanlışlıkla Git'e yüklenmesini engelleyen `.gitignore` dosyasını ekle.

```ini title=.env
BOT_TOKEN=buraya_portaldan_kopyaladigin_token_gelecek
```

```text title=.gitignore
.env
node_modules/
.venv/
__pycache__/
```

> **Uyarı:** Windows Not Defteri kullanıyorsan dosyayı kaydederken **Kayıt türü: Tüm Dosyalar** seç ki dosyanın adı `.env.txt` olmasın. Terminalde `ls -a` (PowerShell'de `Get-ChildItem -Force`) yazdığında tam olarak `.env` adını görmelisin.

## 5. `noluyo-bot` kütüphanesini kur

Resmi `noluyo-bot` kütüphanesi Node.js tarafında sıfır çalışma zamanı bağımlılığıyla, Python tarafında ise yalnızca `aiohttp` ile gelir:

```bash tab=JavaScript
npm init -y
npm pkg set type=module
npm install noluyo-bot
```

```bash tab=Python
python3 -m venv .venv
# macOS / Linux:
source .venv/bin/activate
# Windows PowerShell:
# .\.venv\Scripts\Activate.ps1

pip install noluyo-bot
```

## 6. İlk çalıştırma ve beklenen çıktı

Klasörün içine küçük bir bağlantı testi dosyası kaydet (`bot.mjs` veya `bot.py`). Bu kod hiçbir ayrıcalıklı intent istemeden bağlanır ve hazır olduğunda botun kullanıcı adını terminale yazar:

```js tab=JavaScript
// bot.mjs
import { Client, Intents } from "noluyo-bot";

const bot = new Client({
  token: process.env.BOT_TOKEN,
  intents: Intents.GUILDS,
});

bot.on("READY", (d) => {
  console.log(`Hazır! ${d.user.username} (${d.user.id}) olarak bağlandı.`);
  console.log(`Bulunduğu sunucu sayısı: ${d.guilds.length}`);
});

await bot.login();
```

```py tab=Python
# bot.py
import os
import noluyo_bot

bot = noluyo_bot.Client(
    token=os.environ["BOT_TOKEN"],
    intents=noluyo_bot.Intents.GUILDS,
)

@bot.on("READY")
async def on_ready(d):
    print(f"Hazır! {d['user']['username']} ({d['user']['id']}) olarak bağlandı.")
    print(f"Bulunduğu sunucu sayısı: {len(d['guilds'])}")

bot.run()
```

Şimdi terminalden çalıştır:

```bash tab=JavaScript
node --env-file=.env bot.mjs
```

```bash tab=Python
# macOS / Linux:
env $(cat .env | xargs) python3 bot.py
# Windows PowerShell:
# Get-Content .env | ForEach-Object { $k,$v = $_ -split '=',2; Set-Item "Env:$k" $v }; python bot.py
```

Her şey doğruysa birkaç saniye içinde terminalde şu çıktıyı görürsün ve imleç alt satırda beklemeye devam eder:

```text
Hazır! karsilama_botu (21879171579904005) olarak bağlandı.
Bulunduğu sunucu sayısı: 1
```

İmlecin beklemeye devam etmesi programın donduğu anlamına gelmez: bot şu an açık WebSocket bağlantısından olayları dinliyor ve sunucunda çevrimiçi görünüyor. Durdurmak istediğinde terminalde `Ctrl + C` tuşlarına bas.

`4004` veya `401` hatası görürsen `.env` içindeki `BOT_TOKEN` değerinin başında ve sonunda boşluk ya da tırnak kalmadığını kontrol et.

## Bu sayfayı yapay zekaya verirsen

> **İpucu:** Yapay zekadan kurulum adımı istediğinde Node.js 22+ için yerleşik `--env-file=.env` bayrağını (`dotenv` paketi kurmadan), Python 3.11+ için `.venv` sanal ortamını kullanmasını ve `.gitignore` içine `.env` eklemesini iste.

## Sırada ne var

- [Tarifler](https://noluyo.net/gelistirici/tarifler.md): karşılama, otomatik rol, anket ve moderasyon için kopyalanıp çalıştırılan 9 hazır bot
- [JavaScript kütüphanesi](https://noluyo.net/gelistirici/kutuphane-js.md) veya [Python kütüphanesi](https://noluyo.net/gelistirici/kutuphane-python.md): resmi SDK'ların tüm özellikleri
- [Botu açık tut](https://noluyo.net/gelistirici/botu-acik-tut.md): bilgisayarını kapattığında da botun çalışmaya devam etmesi
