social-agent-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +226 -0
- package/bin/postinstall.js +19 -0
- package/bin/social-agent.js +109 -0
- package/config.example.json +20 -0
- package/hooks/post-push +69 -0
- package/knowledge/bluesky.md +1083 -0
- package/knowledge/facebook.md +603 -0
- package/knowledge/instagram.md +686 -0
- package/knowledge/linkedin.md +1013 -0
- package/knowledge/mastodon.md +1291 -0
- package/knowledge/telegram.md +824 -0
- package/knowledge/x.md +1532 -0
- package/package.json +30 -0
|
@@ -0,0 +1,824 @@
|
|
|
1
|
+
# Telegram Platform Bilgi Dosyasi
|
|
2
|
+
|
|
3
|
+
## Genel Bakis
|
|
4
|
+
|
|
5
|
+
Telegram, bulut tabanli bir mesajlasma platformudur. Otomasyon icin birincil yontem **Bot API**'dir. Bot API ucretsizdir, HTTP tabanlidir ve JSON formatinda calisir. Tum bot istekleri `https://api.telegram.org/bot<TOKEN>/<METHOD>` adresine yapilir.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Bot Olusturma ve Yonetim
|
|
10
|
+
|
|
11
|
+
### @BotFather Komutlari
|
|
12
|
+
|
|
13
|
+
Bot olusturma ve yonetim isleri Telegram icerisinde `@BotFather` botu uzerinden yapilir.
|
|
14
|
+
|
|
15
|
+
| Komut | Aciklama |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `/newbot` | Yeni bot olusturur. Once bot adi, sonra kullanici adi istenir. Kullanici adi `bot` ile bitmeli. |
|
|
18
|
+
| `/token` | Mevcut bir botun token'ini gosterir. |
|
|
19
|
+
| `/revoke` | Token'i iptal edip yenisini uretir. Eski token aninda gecersiz olur. |
|
|
20
|
+
| `/setname` | Bot gorunen adini degistirir. |
|
|
21
|
+
| `/setdescription` | Bot aciklamasini degistirir (profil sayfasinda gorunur). |
|
|
22
|
+
| `/setabouttext` | Bot hakkinda kisa bilgi (sohbet listesinde gorunur). |
|
|
23
|
+
| `/setuserpic` | Bot profil resmini degistirir. |
|
|
24
|
+
| `/setcommands` | Bot komut listesini ayarlar (/ menusunde gorunur). |
|
|
25
|
+
| `/setinline` | Inline modu etkinlestirir. |
|
|
26
|
+
| `/setjoingroups` | Botun gruplara eklenip eklenemeyecegini ayarlar. |
|
|
27
|
+
| `/setprivacy` | Gruptaki tum mesajlari mi yoksa sadece komutlari mi alacagini belirler. |
|
|
28
|
+
| `/deletebot` | Botu kalici olarak siler. |
|
|
29
|
+
| `/mybots` | Tum botlarinizi listeler ve yonetim panelini acar. |
|
|
30
|
+
|
|
31
|
+
### Token Yonetimi
|
|
32
|
+
|
|
33
|
+
- Token formati: `123456789:ABCDefGHIjklMNOpqrsTUVwxyz-0123456789`
|
|
34
|
+
- Token, bot ID (numerik) ve gizli anahtardan olusur.
|
|
35
|
+
- Token ifsa olursa `/revoke` ile hemen yenileyin.
|
|
36
|
+
- Token'i kaynak kodda veya public repo'larda saklamayin. Ortam degiskeni (env var) kullanin.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 2. Bot API - Temel Metodlar
|
|
41
|
+
|
|
42
|
+
### Mesaj Gonderme
|
|
43
|
+
|
|
44
|
+
#### `sendMessage`
|
|
45
|
+
|
|
46
|
+
Metin mesaji gonderir.
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
POST https://api.telegram.org/bot<TOKEN>/sendMessage
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
| Parametre | Tip | Zorunlu | Aciklama |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| `chat_id` | Integer/String | Evet | Hedef sohbet ID veya `@kanal_adi` |
|
|
55
|
+
| `text` | String | Evet | Mesaj metni (1-4096 karakter) |
|
|
56
|
+
| `parse_mode` | String | Hayir | `HTML`, `Markdown` veya `MarkdownV2` |
|
|
57
|
+
| `entities` | Array | Hayir | Ozel metin varliklari (parse_mode yerine) |
|
|
58
|
+
| `disable_web_page_preview` | Boolean | Hayir | Link onizlemesini kapatir |
|
|
59
|
+
| `disable_notification` | Boolean | Hayir | Sessiz mesaj gonderir (bildirim calmaz) |
|
|
60
|
+
| `protect_content` | Boolean | Hayir | Mesajin iletilmesini ve kaydedilmesini engeller |
|
|
61
|
+
| `reply_to_message_id` | Integer | Hayir | Yanit verilecek mesaj ID |
|
|
62
|
+
| `reply_markup` | Object | Hayir | InlineKeyboard, ReplyKeyboard, vs. |
|
|
63
|
+
|
|
64
|
+
#### `sendPhoto`
|
|
65
|
+
|
|
66
|
+
Fotograf gonderir.
|
|
67
|
+
|
|
68
|
+
| Parametre | Tip | Zorunlu | Aciklama |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| `chat_id` | Integer/String | Evet | Hedef sohbet ID |
|
|
71
|
+
| `photo` | InputFile/String | Evet | Dosya, file_id veya URL |
|
|
72
|
+
| `caption` | String | Hayir | Aciklama (0-1024 karakter) |
|
|
73
|
+
| `parse_mode` | String | Hayir | Aciklama formatlama modu |
|
|
74
|
+
|
|
75
|
+
#### `sendVideo`
|
|
76
|
+
|
|
77
|
+
Video gonderir.
|
|
78
|
+
|
|
79
|
+
| Parametre | Tip | Zorunlu | Aciklama |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| `chat_id` | Integer/String | Evet | Hedef sohbet ID |
|
|
82
|
+
| `video` | InputFile/String | Evet | Dosya, file_id veya URL |
|
|
83
|
+
| `caption` | String | Hayir | Aciklama (0-1024 karakter) |
|
|
84
|
+
| `duration` | Integer | Hayir | Video suresi (saniye) |
|
|
85
|
+
| `width` | Integer | Hayir | Video genisligi |
|
|
86
|
+
| `height` | Integer | Hayir | Video yuksekligi |
|
|
87
|
+
| `thumbnail` | InputFile | Hayir | Kucuk resim (thumbnail) |
|
|
88
|
+
| `supports_streaming` | Boolean | Hayir | Streaming destegi |
|
|
89
|
+
|
|
90
|
+
#### `sendDocument`
|
|
91
|
+
|
|
92
|
+
Herhangi bir dosya gonderir.
|
|
93
|
+
|
|
94
|
+
| Parametre | Tip | Zorunlu | Aciklama |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| `chat_id` | Integer/String | Evet | Hedef sohbet ID |
|
|
97
|
+
| `document` | InputFile/String | Evet | Dosya, file_id veya URL |
|
|
98
|
+
| `caption` | String | Hayir | Aciklama (0-1024 karakter) |
|
|
99
|
+
| `thumbnail` | InputFile | Hayir | Kucuk resim |
|
|
100
|
+
|
|
101
|
+
#### `sendMediaGroup`
|
|
102
|
+
|
|
103
|
+
Birden fazla medya (album) gonderir.
|
|
104
|
+
|
|
105
|
+
| Parametre | Tip | Zorunlu | Aciklama |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| `chat_id` | Integer/String | Evet | Hedef sohbet ID |
|
|
108
|
+
| `media` | Array | Evet | InputMediaPhoto ve/veya InputMediaVideo dizisi (2-10 oge) |
|
|
109
|
+
|
|
110
|
+
Onemli: `sendMediaGroup` icindeki her bir medya ogesi icin `caption` ayarlanabilir. Yalnizca ilk ogenin `caption` degeri gorunur sekilde gosterilir. Tum medya turleri karisik olabilir (foto + video).
|
|
111
|
+
|
|
112
|
+
#### `sendAnimation`
|
|
113
|
+
|
|
114
|
+
GIF veya MP4 animasyon gonderir (sessiz, otomatik oynatilan).
|
|
115
|
+
|
|
116
|
+
#### `sendAudio`
|
|
117
|
+
|
|
118
|
+
Ses dosyasi gonderir (muzik olarak, sarki bilgileriyle).
|
|
119
|
+
|
|
120
|
+
#### `sendVoice`
|
|
121
|
+
|
|
122
|
+
Sesli mesaj gonderir (.ogg formatinda).
|
|
123
|
+
|
|
124
|
+
#### `sendSticker`
|
|
125
|
+
|
|
126
|
+
Cikartma gonderir (.webp, .tgs veya .webm).
|
|
127
|
+
|
|
128
|
+
### Mesaj Duzenleme ve Silme
|
|
129
|
+
|
|
130
|
+
| Metod | Aciklama |
|
|
131
|
+
|---|---|
|
|
132
|
+
| `editMessageText` | Metin mesajini duzenler. |
|
|
133
|
+
| `editMessageCaption` | Medya aciklamasini duzenler. |
|
|
134
|
+
| `editMessageMedia` | Medyanin kendisini degistirir. |
|
|
135
|
+
| `editMessageReplyMarkup` | Sadece reply markup'i degistirir. |
|
|
136
|
+
| `deleteMessage` | Mesaji siler. Bot sadece kendi gonderdigi veya admin oldugu yerdeki mesajlari silebilir. 48 saat siniri vardir. |
|
|
137
|
+
|
|
138
|
+
### Guncellemeleri Alma
|
|
139
|
+
|
|
140
|
+
#### `getUpdates` (Polling)
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
GET https://api.telegram.org/bot<TOKEN>/getUpdates?offset=<UPDATE_ID>&timeout=30
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
| Parametre | Tip | Aciklama |
|
|
147
|
+
|---|---|---|
|
|
148
|
+
| `offset` | Integer | Son islenen update_id + 1. Eski guncellemeleri onaylar. |
|
|
149
|
+
| `limit` | Integer | Alinacak maks. guncelleme sayisi (1-100, varsayilan 100). |
|
|
150
|
+
| `timeout` | Integer | Long polling suresi (saniye). 0 = short polling. Onerilen: 25-30. |
|
|
151
|
+
| `allowed_updates` | Array | Alinacak guncelleme tipleri. Ornek: `["message", "callback_query"]` |
|
|
152
|
+
|
|
153
|
+
Long polling kullanin: `timeout=30` ayarlayin. Bu, sunucunun yeni guncelleme gelene kadar baglantini acik tutmasini saglar. Short polling (timeout=0) gereksiz istek yuku olusturur.
|
|
154
|
+
|
|
155
|
+
#### `setWebhook`
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
POST https://api.telegram.org/bot<TOKEN>/setWebhook
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
| Parametre | Tip | Aciklama |
|
|
162
|
+
|---|---|---|
|
|
163
|
+
| `url` | String | HTTPS URL (self-signed sertifika kabul edilir). Bos string webhook'u kaldirir. |
|
|
164
|
+
| `certificate` | InputFile | Self-signed sertifika (opsiyonel). |
|
|
165
|
+
| `max_connections` | Integer | Maks. esanli baglanti (1-100, varsayilan 40). |
|
|
166
|
+
| `allowed_updates` | Array | Alinacak guncelleme tipleri. |
|
|
167
|
+
| `secret_token` | String | Webhook isteklerini dogrulamak icin gizli token (1-256 karakter). `X-Telegram-Bot-Api-Secret-Token` header'inda gonderilir. |
|
|
168
|
+
|
|
169
|
+
Onemli notlar:
|
|
170
|
+
- Webhook ve getUpdates ayni anda kullanilamaz.
|
|
171
|
+
- Webhook URL'si HTTPS olmalidir.
|
|
172
|
+
- Port secenekleri: 443, 80, 88, 8443.
|
|
173
|
+
- Webhook ayarlandiktan sonra Telegram, her yeni guncellemeyi JSON POST olarak URL'nize gonderir.
|
|
174
|
+
- `deleteWebhook` ile webhook'u kaldirabilirsiniz.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 3. Kanal Yonetimi ve Bot ile Gonderim
|
|
179
|
+
|
|
180
|
+
### Kanal Turleri
|
|
181
|
+
|
|
182
|
+
| Ozellik | Kanal | Grup | Supergrup |
|
|
183
|
+
|---|---|---|---|
|
|
184
|
+
| Uyeler | Sinirsiz | 200'e kadar | 200.000'e kadar |
|
|
185
|
+
| Mesaj gonderme | Sadece adminler | Tum uyeler | Tum uyeler (ayarlanabilir) |
|
|
186
|
+
| Mesaj gecmisi | Yeni uyeler gorebilir | Yeni uyeler goremez | Ayarlanabilir |
|
|
187
|
+
| Chat ID formati | Negatif sayi (genelde -100 ile baslar) | Negatif sayi | Negatif sayi (-100 ile baslar) |
|
|
188
|
+
| Kullanici adi | `@kanal_adi` olabilir | Opsiyonel | Opsiyonel |
|
|
189
|
+
| Mesaj imzasi | Admin adi veya kanal adi | Gonderenin adi | Gonderenin adi |
|
|
190
|
+
|
|
191
|
+
### Bot ile Kanala Gonderim
|
|
192
|
+
|
|
193
|
+
1. Botu kanala admin olarak ekleyin.
|
|
194
|
+
2. Bot'a "Mesaj Gonderme" izni verin.
|
|
195
|
+
3. `chat_id` olarak `@kanal_kullanici_adi` veya kanalin numerik ID'sini kullanin.
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
POST /sendMessage
|
|
199
|
+
{
|
|
200
|
+
"chat_id": "@kanal_adi",
|
|
201
|
+
"text": "Merhaba kanal!"
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Admin Izinleri
|
|
206
|
+
|
|
207
|
+
Bot'un kanaldaki islevleri admin izinlerine baglidir:
|
|
208
|
+
|
|
209
|
+
| Izin | Aciklama |
|
|
210
|
+
|---|---|
|
|
211
|
+
| Mesaj gonderme | Metin, medya, dosya gonderme |
|
|
212
|
+
| Mesaj duzenleme | Kendi mesajlarini ve baskalarinin mesajlarini duzenleme |
|
|
213
|
+
| Mesaj silme | Herhangi bir mesaji silme |
|
|
214
|
+
| Davet linki yonetimi | Ozel davet linkleri olusturma |
|
|
215
|
+
| Sohbet bilgisini duzenleme | Kanal adi, aciklama, foto degistirme |
|
|
216
|
+
| Mesaj sabitleme | Mesajlari sabitleme/kaldirma |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 4. URL Yapisi
|
|
221
|
+
|
|
222
|
+
| URL Formati | Aciklama | Ornek |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| `t.me/USERNAME` | Kullanici veya bot profili | `t.me/mybot` |
|
|
225
|
+
| `t.me/CHANNEL` | Kanal veya genel grup | `t.me/mychannel` |
|
|
226
|
+
| `t.me/CHANNEL/MESSAGE_ID` | Belirli bir mesaja link | `t.me/mychannel/42` |
|
|
227
|
+
| `t.me/+INVITE_HASH` | Ozel davet linki | `t.me/+aBcDeFgHiJk` |
|
|
228
|
+
| `t.me/BOT_USERNAME?start=PAYLOAD` | Bot'u payload ile baslatma | `t.me/mybot?start=ref123` |
|
|
229
|
+
| `t.me/BOT_USERNAME?startgroup=PAYLOAD` | Bot'u gruba ekleme | `t.me/mybot?startgroup=setup` |
|
|
230
|
+
| `tg://resolve?domain=USERNAME` | Deep link (uygulama icinden acar) | `tg://resolve?domain=mybot` |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 5. Dosya ve Medya Sinirlari
|
|
235
|
+
|
|
236
|
+
### Genel Bot API Sinirlari
|
|
237
|
+
|
|
238
|
+
| Medya Tipi | Maks. Boyut (Bot API) | Maks. Boyut (Yerel Bot API) | Notlar |
|
|
239
|
+
|---|---|---|---|
|
|
240
|
+
| Fotograf yukleme | 10 MB | 2 GB | Sunucu tarafinda sikistirilir |
|
|
241
|
+
| Video yukleme | 50 MB | 2 GB | |
|
|
242
|
+
| Dokuuman yukleme | 50 MB | 2 GB | |
|
|
243
|
+
| Ses dosyasi | 50 MB | 2 GB | |
|
|
244
|
+
| Sesli mesaj | 50 MB | 2 GB | |
|
|
245
|
+
| Sticker (statik) | 512 KB | 512 KB | .webp, 512x512 px |
|
|
246
|
+
| Sticker (animasyonlu) | 64 KB | 64 KB | .tgs (Lottie) |
|
|
247
|
+
| Sticker (video) | 256 KB | 256 KB | .webm |
|
|
248
|
+
| Genel dosya indirme | 20 MB | 2 GB | `getFile` metodu ile |
|
|
249
|
+
|
|
250
|
+
### Fotograf Ozellikleri
|
|
251
|
+
|
|
252
|
+
- Telegram, yuklenlen fotograflari otomatik olarak sikistirir.
|
|
253
|
+
- En uzun kenar 1280 piksel olacak sekilde yeniden boyutlandirilir.
|
|
254
|
+
- Orijinal kalitede gondermek icin `sendDocument` kullanin (fotograf olarak degil, dosya olarak gonderilir).
|
|
255
|
+
- JPEG, PNG, BMP, GIF (tek kare), WebP desteklenir.
|
|
256
|
+
- Toplam fotograf boyutu 10 MB'i asmamalidir.
|
|
257
|
+
|
|
258
|
+
### Video Ozellikleri
|
|
259
|
+
|
|
260
|
+
- MP4 formati desteklenir (H.264 codec, AAC ses).
|
|
261
|
+
- Diger formatlar da gonderilebilir ama uygulamada oynatma garanti degildir.
|
|
262
|
+
- Thumbnail (kucuk resim): JPEG, maks. 320x320 piksel, 200 KB'den kucuk olmali.
|
|
263
|
+
- `sendVideo` ile gonderilen videolar uygulamada inline oynatilir.
|
|
264
|
+
- `sendDocument` ile gonderilen videolar dosya olarak gosterilir, inline oynatilmaz.
|
|
265
|
+
|
|
266
|
+
### Yerel Bot API (Local Bot API Server)
|
|
267
|
+
|
|
268
|
+
Buyuk dosyalar icin Telegram, acik kaynakli yerel Bot API sunucusu saglar:
|
|
269
|
+
- 2 GB'a kadar dosya yukleme ve indirme.
|
|
270
|
+
- Yerel dosya sistemi uzerinden dosya gonderme (sunucu ayni makinedeyse).
|
|
271
|
+
- Webhook icin HTTP destegi (HTTPS zorunlulugu yok).
|
|
272
|
+
- Kurulum: `https://github.com/tdlib/telegram-bot-api` reposundan derlenebilir.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 6. Hiz Sinirlari (Rate Limiting)
|
|
277
|
+
|
|
278
|
+
### Genel Sinirlar
|
|
279
|
+
|
|
280
|
+
| Sinir | Deger | Aciklama |
|
|
281
|
+
|---|---|---|
|
|
282
|
+
| Farkli sohbetlere mesaj | 30 mesaj/saniye | Toplu gonderimde bu sinira uyun |
|
|
283
|
+
| Ayni gruba mesaj | 20 mesaj/dakika | Grup icerisindeki islemler icin |
|
|
284
|
+
| Ayni kanala mesaj | 20 mesaj/dakika | Kanal gonderimlerinde gecerli |
|
|
285
|
+
| Toplu mesaj (broadcast) | ~30 mesaj/saniye | 30 farkli kullaniciya saniyede 1'er mesaj |
|
|
286
|
+
| API istegi genel | Belirtilmemis | Asiri istek 429 hatasi dondurur |
|
|
287
|
+
|
|
288
|
+
### 429 Too Many Requests Hatasi
|
|
289
|
+
|
|
290
|
+
Rate limit asiminida API su yaniti dondurur:
|
|
291
|
+
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"ok": false,
|
|
295
|
+
"error_code": 429,
|
|
296
|
+
"description": "Too Many Requests: retry after 35",
|
|
297
|
+
"parameters": {
|
|
298
|
+
"retry_after": 35
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
- `retry_after` degerini (saniye) bekleyin, sonra tekrar deneyin.
|
|
304
|
+
- Exponential backoff stratejisi uygulayin.
|
|
305
|
+
- Toplu gonderim yaparken mesajlar arasinda en az 33ms (1/30 saniye) bekleyin.
|
|
306
|
+
|
|
307
|
+
### Toplu Mesaj Gonderim Stratejisi
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
1. Kuyruk olusturun (message queue).
|
|
311
|
+
2. Her mesaj gonderdikten sonra en az 35ms bekleyin.
|
|
312
|
+
3. Ayni sohbete ardisik mesaj gonderiyorsaniz 3 saniye bekleyin.
|
|
313
|
+
4. 429 hatasi alindiginda retry_after suresi kadar bekleyin.
|
|
314
|
+
5. Basarisiz mesajlari kuyruga geri ekleyip yeniden deneyin.
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 7. Mesaj Formatlama
|
|
320
|
+
|
|
321
|
+
### Parse Mode Secenekleri
|
|
322
|
+
|
|
323
|
+
#### HTML
|
|
324
|
+
|
|
325
|
+
```html
|
|
326
|
+
<b>kalin</b>
|
|
327
|
+
<i>italik</i>
|
|
328
|
+
<u>alti cizili</u>
|
|
329
|
+
<s>ustu cizili</s>
|
|
330
|
+
<tg-spoiler>spoiler</tg-spoiler>
|
|
331
|
+
<a href="https://ornek.com">link</a>
|
|
332
|
+
<a href="tg://user?id=123456789">kullanici mention</a>
|
|
333
|
+
<code>tek satirlik kod</code>
|
|
334
|
+
<pre>cok satirlik kod blogu</pre>
|
|
335
|
+
<pre><code class="language-python">sozdizimi vurgulu kod</code></pre>
|
|
336
|
+
<blockquote>alinti</blockquote>
|
|
337
|
+
<blockquote expandable>genisletilebilir alinti</blockquote>
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
#### MarkdownV2
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
*kalin*
|
|
344
|
+
_italik_
|
|
345
|
+
__alti cizili__
|
|
346
|
+
~ustu cizili~
|
|
347
|
+
||spoiler||
|
|
348
|
+
[link metni](https://ornek.com)
|
|
349
|
+
[kullanici mention](tg://user?id=123456789)
|
|
350
|
+
`tek satirlik kod`
|
|
351
|
+
```pre
|
|
352
|
+
cok satirlik kod
|
|
353
|
+
```pre
|
|
354
|
+
```python
|
|
355
|
+
sozdizimi vurgulu kod
|
|
356
|
+
```pre
|
|
357
|
+
>alinti (her satirin basinda > olmali)
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
**MarkdownV2 Ozel Karakter Kacirma (Escape):**
|
|
361
|
+
|
|
362
|
+
Su karakterlerin onune `\` konulmalidir:
|
|
363
|
+
```
|
|
364
|
+
_ * [ ] ( ) ~ ` > # + - = | { } . !
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Ornek: `Fiyat 10\\.99 TL` (nokta kaciriliyor)
|
|
368
|
+
|
|
369
|
+
#### Markdown (Eski - Onerilen MarkdownV2)
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
*kalin*
|
|
373
|
+
_italik_
|
|
374
|
+
[link](https://ornek.com)
|
|
375
|
+
`tek satirlik kod`
|
|
376
|
+
```pre
|
|
377
|
+
cok satirlik kod
|
|
378
|
+
```pre
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
Eski Markdown sinirlidir. MarkdownV2 veya HTML kullanin.
|
|
382
|
+
|
|
383
|
+
### Entity Tipleri
|
|
384
|
+
|
|
385
|
+
Mesaj varliklari (entities) `parse_mode` kullanmadan formatlama yapmanizi saglar:
|
|
386
|
+
|
|
387
|
+
| Entity Tipi | Aciklama |
|
|
388
|
+
|---|---|
|
|
389
|
+
| `bold` | Kalin yazi |
|
|
390
|
+
| `italic` | Italik yazi |
|
|
391
|
+
| `underline` | Alti cizili |
|
|
392
|
+
| `strikethrough` | Ustu cizili |
|
|
393
|
+
| `spoiler` | Spoiler (tiklaninca gorunur) |
|
|
394
|
+
| `code` | Tek satirlik kod |
|
|
395
|
+
| `pre` | Kod blogu |
|
|
396
|
+
| `text_link` | Tiklanabilir URL |
|
|
397
|
+
| `text_mention` | Kullanici mention (kullanici adi olmayanlar icin) |
|
|
398
|
+
| `url` | Otomatik algilanan URL |
|
|
399
|
+
| `email` | Otomatik algilanan e-posta |
|
|
400
|
+
| `phone_number` | Otomatik algilanan telefon numarasi |
|
|
401
|
+
| `hashtag` | Hashtag |
|
|
402
|
+
| `cashtag` | Cashtag ($USD gibi) |
|
|
403
|
+
| `bot_command` | Bot komutu (/start gibi) |
|
|
404
|
+
| `mention` | @kullaniciadi mention |
|
|
405
|
+
| `blockquote` | Alinti blogu |
|
|
406
|
+
| `expandable_blockquote` | Genisletilebilir alinti |
|
|
407
|
+
| `custom_emoji` | Ozel emoji |
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## 8. Klavye ve Butonlar
|
|
412
|
+
|
|
413
|
+
### Inline Keyboard (Mesaj Icinde Butonlar)
|
|
414
|
+
|
|
415
|
+
Mesajin altinda gorunen butonlardir. Kullanici tiklayinca `callback_query` olusur.
|
|
416
|
+
|
|
417
|
+
```json
|
|
418
|
+
{
|
|
419
|
+
"reply_markup": {
|
|
420
|
+
"inline_keyboard": [
|
|
421
|
+
[
|
|
422
|
+
{"text": "Buton 1", "callback_data": "btn1"},
|
|
423
|
+
{"text": "Buton 2", "callback_data": "btn2"}
|
|
424
|
+
],
|
|
425
|
+
[
|
|
426
|
+
{"text": "Web Sayfasi", "url": "https://ornek.com"}
|
|
427
|
+
],
|
|
428
|
+
[
|
|
429
|
+
{"text": "Paylas", "switch_inline_query": "arama sorgusu"}
|
|
430
|
+
]
|
|
431
|
+
]
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Inline buton tipleri:
|
|
437
|
+
|
|
438
|
+
| Parametre | Aciklama |
|
|
439
|
+
|---|---|
|
|
440
|
+
| `callback_data` | Tiklaninca bot'a callback_query gonderir (1-64 byte) |
|
|
441
|
+
| `url` | Tiklaninca URL acar |
|
|
442
|
+
| `switch_inline_query` | Baska sohbette inline sorgu baslatir |
|
|
443
|
+
| `switch_inline_query_current_chat` | Ayni sohbette inline sorgu baslatir |
|
|
444
|
+
| `login_url` | Telegram Login ile web sitesine giris |
|
|
445
|
+
| `web_app` | Web App acar |
|
|
446
|
+
| `pay` | Odeme butonu (sadece ilk buton olabilir) |
|
|
447
|
+
|
|
448
|
+
Callback query'ye yanit vermek icin `answerCallbackQuery` kullanin. Bu, butondaki yukleniyor animasyonunu durdurur.
|
|
449
|
+
|
|
450
|
+
### Reply Keyboard (Ozel Klavye)
|
|
451
|
+
|
|
452
|
+
Kullanicinin klavyesini degistirir. Normal mesaj olarak gonderilir.
|
|
453
|
+
|
|
454
|
+
```json
|
|
455
|
+
{
|
|
456
|
+
"reply_markup": {
|
|
457
|
+
"keyboard": [
|
|
458
|
+
[
|
|
459
|
+
{"text": "Secenek A"},
|
|
460
|
+
{"text": "Secenek B"}
|
|
461
|
+
],
|
|
462
|
+
[
|
|
463
|
+
{"text": "Konum Gonder", "request_location": true},
|
|
464
|
+
{"text": "Telefon Gonder", "request_contact": true}
|
|
465
|
+
]
|
|
466
|
+
],
|
|
467
|
+
"resize_keyboard": true,
|
|
468
|
+
"one_time_keyboard": true,
|
|
469
|
+
"input_field_placeholder": "Bir secenek secin..."
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
| Parametre | Aciklama |
|
|
475
|
+
|---|---|
|
|
476
|
+
| `resize_keyboard` | Klavyeyi buton boyutuna gore kuculturu (varsayilan false) |
|
|
477
|
+
| `one_time_keyboard` | Bir kez kullanildiktan sonra gizlenir |
|
|
478
|
+
| `is_persistent` | Klavye kalici olarak gorunur |
|
|
479
|
+
| `selective` | Sadece belirli kullanicilara gosterir |
|
|
480
|
+
| `input_field_placeholder` | Giris alaninda yer tutucu metin |
|
|
481
|
+
|
|
482
|
+
### Reply Keyboard Kaldirma
|
|
483
|
+
|
|
484
|
+
```json
|
|
485
|
+
{
|
|
486
|
+
"reply_markup": {
|
|
487
|
+
"remove_keyboard": true
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### Force Reply
|
|
493
|
+
|
|
494
|
+
Kullaniciyi yanit vermeye zorlar (mesaj yanitlama arayuzu acar).
|
|
495
|
+
|
|
496
|
+
```json
|
|
497
|
+
{
|
|
498
|
+
"reply_markup": {
|
|
499
|
+
"force_reply": true,
|
|
500
|
+
"input_field_placeholder": "Yanitinizi yazin..."
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## 9. Faydali Ozellikler
|
|
508
|
+
|
|
509
|
+
### Sessiz Mesaj (Silent Message)
|
|
510
|
+
|
|
511
|
+
`disable_notification: true` parametresiyle gonderilen mesajlar bildirim olusturmaz. Gece gonderimlerinde veya dusuk oncelikli bilgilendirmelerde faydalidir.
|
|
512
|
+
|
|
513
|
+
### Zamanlanmis Mesaj (Scheduled Messages)
|
|
514
|
+
|
|
515
|
+
Bot API uzerinden dogrudan zamanlanmis mesaj gonderme destegi yoktur. Zamanlama islemini kendi sunucunuzda (cron job, task scheduler vb.) yapin ve belirlenen zamanda API cagrisini gerceklestirin.
|
|
516
|
+
|
|
517
|
+
### Mesaj Iletme (Forward)
|
|
518
|
+
|
|
519
|
+
```
|
|
520
|
+
POST /forwardMessage
|
|
521
|
+
{
|
|
522
|
+
"chat_id": hedef_chat_id,
|
|
523
|
+
"from_chat_id": kaynak_chat_id,
|
|
524
|
+
"message_id": mesaj_id
|
|
525
|
+
}
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
### Mesaj Kopyalama (Copy)
|
|
529
|
+
|
|
530
|
+
Iletilmis olarak degil, yeni mesaj olarak kopyalar (gondereni gostermez).
|
|
531
|
+
|
|
532
|
+
```
|
|
533
|
+
POST /copyMessage
|
|
534
|
+
{
|
|
535
|
+
"chat_id": hedef_chat_id,
|
|
536
|
+
"from_chat_id": kaynak_chat_id,
|
|
537
|
+
"message_id": mesaj_id
|
|
538
|
+
}
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Anketler (Polls)
|
|
542
|
+
|
|
543
|
+
```json
|
|
544
|
+
{
|
|
545
|
+
"chat_id": "@kanal_adi",
|
|
546
|
+
"question": "En sevdiginiz programlama dili?",
|
|
547
|
+
"options": ["Python", "JavaScript", "TypeScript", "Go"],
|
|
548
|
+
"is_anonymous": false,
|
|
549
|
+
"allows_multiple_answers": true
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### Bilgi Yarismasi (Quiz)
|
|
554
|
+
|
|
555
|
+
```json
|
|
556
|
+
{
|
|
557
|
+
"chat_id": "@kanal_adi",
|
|
558
|
+
"question": "Turkiye'nin baskenti neresidir?",
|
|
559
|
+
"options": ["Istanbul", "Ankara", "Izmir", "Bursa"],
|
|
560
|
+
"type": "quiz",
|
|
561
|
+
"correct_option_id": 1,
|
|
562
|
+
"explanation": "Ankara, 1923'ten beri Turkiye'nin baskentidir."
|
|
563
|
+
}
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
### Inline Mode
|
|
567
|
+
|
|
568
|
+
Kullanicilarin herhangi bir sohbette `@bot_adi sorgu` yazarak bot'u cagirmasini saglar. Bot, sonuc listesi dondurur ve kullanici birini secer.
|
|
569
|
+
|
|
570
|
+
1. @BotFather'da `/setinline` ile etkinlestirin.
|
|
571
|
+
2. `answerInlineQuery` metodu ile sonuclari dondurun.
|
|
572
|
+
3. Sonuc tipleri: Article, Photo, GIF, Video, Audio, Document, Location, Venue, Contact, Sticker ve daha fazlasi.
|
|
573
|
+
|
|
574
|
+
### Odemeler (Payments)
|
|
575
|
+
|
|
576
|
+
Telegram Bot API uzerinden odeme kabul edebilirsiniz:
|
|
577
|
+
|
|
578
|
+
1. @BotFather'da `/mybots` > Payments ile odeme saglayicisi baglayiniz (Stripe, YooKassa, vs.).
|
|
579
|
+
2. `sendInvoice` ile fatura gonderin.
|
|
580
|
+
3. `pre_checkout_query` ile odemeyi onaylayin.
|
|
581
|
+
4. Basarili odemede `successful_payment` mesaji alinir.
|
|
582
|
+
|
|
583
|
+
Telegram kendisi komisyon almaz; odeme saglayicisinin ucretleri gecerlidir.
|
|
584
|
+
|
|
585
|
+
### Web Apps
|
|
586
|
+
|
|
587
|
+
Bot mesaji icerisinde mini web uygulamalari calistirabilirsiniz:
|
|
588
|
+
|
|
589
|
+
```json
|
|
590
|
+
{
|
|
591
|
+
"reply_markup": {
|
|
592
|
+
"inline_keyboard": [[
|
|
593
|
+
{"text": "Uygulamayi Ac", "web_app": {"url": "https://ornek.com/app"}}
|
|
594
|
+
]]
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### Icerigi Koruma (Protect Content)
|
|
600
|
+
|
|
601
|
+
`protect_content: true` parametresi ile gonderilen mesajlar:
|
|
602
|
+
- Iletilemez (forward edilemez).
|
|
603
|
+
- Kaydedilemez.
|
|
604
|
+
- Ekran goruntusu uyarisi verir (mobilde).
|
|
605
|
+
|
|
606
|
+
### Mesaj Konulari (Topics / Forum)
|
|
607
|
+
|
|
608
|
+
Supergruplarda "konular" (topics/forum) ozelligi etkinlestirilebilir. Her konu ayri bir sohbet alani gibi davranir.
|
|
609
|
+
|
|
610
|
+
- `message_thread_id` parametresi ile belirli bir konuya mesaj gonderilebilir.
|
|
611
|
+
- `createForumTopic`, `editForumTopic`, `closeForumTopic`, `deleteForumTopic` metodlari ile yonetilir.
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 10. Guncelleme Tipleri (Update Types)
|
|
616
|
+
|
|
617
|
+
Bot'un alabilecegi guncelleme tipleri:
|
|
618
|
+
|
|
619
|
+
| Tip | Aciklama |
|
|
620
|
+
|---|---|
|
|
621
|
+
| `message` | Yeni mesaj (metin, medya, servis mesajlari dahil) |
|
|
622
|
+
| `edited_message` | Duzenlenmis mesaj |
|
|
623
|
+
| `channel_post` | Kanal gonderdisi |
|
|
624
|
+
| `edited_channel_post` | Duzenlenmis kanal gonderisi |
|
|
625
|
+
| `callback_query` | Inline buton tiklamasi |
|
|
626
|
+
| `inline_query` | Inline mod sorgusu |
|
|
627
|
+
| `chosen_inline_result` | Secilen inline sonuc |
|
|
628
|
+
| `poll` | Anket durumu degisikligi |
|
|
629
|
+
| `poll_answer` | Anonim olmayan ankette yanit |
|
|
630
|
+
| `my_chat_member` | Bot'un uyelik durumu degisikligi |
|
|
631
|
+
| `chat_member` | Sohbet uyesinin durumu degisikligi |
|
|
632
|
+
| `chat_join_request` | Gruba/kanala katilma istegi |
|
|
633
|
+
| `pre_checkout_query` | Odeme oncesi onay |
|
|
634
|
+
| `shipping_query` | Gonderim bilgisi sorgusu |
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
## 11. Hata Yonetimi
|
|
639
|
+
|
|
640
|
+
### Yaygin Hata Kodlari
|
|
641
|
+
|
|
642
|
+
| Kod | Aciklama | Cozum |
|
|
643
|
+
|---|---|---|
|
|
644
|
+
| 400 | Bad Request | Parametre hatasi. Yanit mesajindaki `description` alanini kontrol edin. |
|
|
645
|
+
| 401 | Unauthorized | Token gecersiz. Token'i kontrol edin veya `/revoke` ile yenileyin. |
|
|
646
|
+
| 403 | Forbidden | Bot engellenmis veya izni yok. Kullanici bot'u engelledi, bot kanaldan/gruptan cikarildi. |
|
|
647
|
+
| 404 | Not Found | Metod adi yanlis veya chat_id bulunamadi. |
|
|
648
|
+
| 409 | Conflict | Birden fazla getUpdates veya webhook catismasi. Ayni anda iki polling yapmaktan kacinin. |
|
|
649
|
+
| 429 | Too Many Requests | Rate limit asildi. `retry_after` degeri kadar bekleyin. |
|
|
650
|
+
|
|
651
|
+
### Yaygin `description` Mesajlari
|
|
652
|
+
|
|
653
|
+
| Mesaj | Anlami |
|
|
654
|
+
|---|---|
|
|
655
|
+
| `chat not found` | chat_id gecersiz veya bot o sohbetin uyesi degil |
|
|
656
|
+
| `bot was blocked by the user` | Kullanici botu engelledi |
|
|
657
|
+
| `bot was kicked from the group chat` | Bot gruptan atildi |
|
|
658
|
+
| `not enough rights to send ...` | Yeterli admin izni yok |
|
|
659
|
+
| `message to edit not found` | Duzenlenmek istenen mesaj bulunamadi |
|
|
660
|
+
| `message can't be edited` | Mesaj duzenlenemez (baskasinin mesaji vs.) |
|
|
661
|
+
| `BUTTON_DATA_INVALID` | callback_data 64 byte'i asiyor |
|
|
662
|
+
| `query is too old` | Callback query zaman asimina ugradi (yanit gecikmis) |
|
|
663
|
+
|
|
664
|
+
---
|
|
665
|
+
|
|
666
|
+
## 12. Otomasyon Icin En Iyi Uygulamalar
|
|
667
|
+
|
|
668
|
+
### Kanal Gonderim Otomasyonu
|
|
669
|
+
|
|
670
|
+
```
|
|
671
|
+
1. Bot olusturun (@BotFather).
|
|
672
|
+
2. Bot'u kanala admin olarak ekleyin (mesaj gonderme izni ile).
|
|
673
|
+
3. chat_id olarak @kanal_adi veya numerik ID kullanin.
|
|
674
|
+
4. Icerigi hazirlayin (metin + medya + butonlar).
|
|
675
|
+
5. Uygun API metodunu secin (sendMessage, sendPhoto, sendMediaGroup vs.).
|
|
676
|
+
6. Rate limit'lere uyun.
|
|
677
|
+
7. Hatalari loglayin ve retry mekanizmasi kurun.
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### Coklu Kanal Yonetimi
|
|
681
|
+
|
|
682
|
+
- Tek bir bot birden fazla kanala gonderim yapabilir (her kanalda admin olmasi yeterli).
|
|
683
|
+
- Her kanal icin ayri zamanlama ve icerik kurallari belirleyin.
|
|
684
|
+
- Rate limit'e dikkat: Farkli kanallara saniyede 30 mesaj siniri gecerlidir.
|
|
685
|
+
|
|
686
|
+
### Medya Gonderimleri Icin Ipuclari
|
|
687
|
+
|
|
688
|
+
- Fotograflari orijinal kalitede gondermek icin `sendDocument` kullanin.
|
|
689
|
+
- Video icin MP4 (H.264) formati en iyi uyumlulugu saglar.
|
|
690
|
+
- Albumler icin `sendMediaGroup` kullanin (2-10 oge).
|
|
691
|
+
- Buyuk dosyalar icin (50MB+) yerel Bot API sunucusu kurun.
|
|
692
|
+
- Daha once gonderilmis bir dosyayi tekrar gondermek icin `file_id` kullanin (yeniden yuklemeye gerek yok, aninda gonderilir).
|
|
693
|
+
|
|
694
|
+
### Guvenlik Onerileri
|
|
695
|
+
|
|
696
|
+
- Token'i ortam degiskeninde saklayin, kodda hard-code yapmayin.
|
|
697
|
+
- Webhook kullaniyorsaniz `secret_token` parametresini ayarlayin.
|
|
698
|
+
- Webhook URL'sini tahmin edilmesi zor yapin (token'i URL'ye ekleyin).
|
|
699
|
+
- `getMe` cagrisinin basarili oldugunu dogrulayin (token gecerlilik kontrolu).
|
|
700
|
+
- Gelen guncellemelerde `chat_id` kontrolu yapin (yetkisiz kullanim onleme).
|
|
701
|
+
|
|
702
|
+
### Performans Ipuclari
|
|
703
|
+
|
|
704
|
+
- `file_id` kullanimini oncelikli tutun: ayni dosya birden fazla kez gonderilecekse ilk gonderimden alinan `file_id` ile gonderin.
|
|
705
|
+
- `sendMediaGroup` ile tekil `sendPhoto` cagrilarindan kacinarak daha az API cagrisi yapin.
|
|
706
|
+
- Long polling kullaniyorsaniz `allowed_updates` ile sadece ilgilendiginiz guncelleme tiplerini alin.
|
|
707
|
+
- Webhook kullaniyorsaniz yanitinizi hizli dondurun (5 saniyeden kisa). Uzun islemleri arka plana alin.
|
|
708
|
+
- `getUpdates` yaniti bos geliyorsa bu normaldir; long polling bekleme suresi doldugunda bos dizi doner.
|
|
709
|
+
|
|
710
|
+
---
|
|
711
|
+
|
|
712
|
+
## 13. Ornek API Cagrilari
|
|
713
|
+
|
|
714
|
+
### Formatli Mesaj ile Inline Buton Gonderme
|
|
715
|
+
|
|
716
|
+
```json
|
|
717
|
+
POST /sendMessage
|
|
718
|
+
{
|
|
719
|
+
"chat_id": "@kanal_adi",
|
|
720
|
+
"text": "<b>Yeni Urun!</b>\n\nDetaylar icin asagidaki butona tiklayin.",
|
|
721
|
+
"parse_mode": "HTML",
|
|
722
|
+
"reply_markup": {
|
|
723
|
+
"inline_keyboard": [
|
|
724
|
+
[
|
|
725
|
+
{"text": "Detaylari Gor", "url": "https://ornek.com/urun"},
|
|
726
|
+
{"text": "Satin Al", "callback_data": "buy_product_123"}
|
|
727
|
+
]
|
|
728
|
+
]
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Album (Medya Grubu) Gonderme
|
|
734
|
+
|
|
735
|
+
```json
|
|
736
|
+
POST /sendMediaGroup
|
|
737
|
+
{
|
|
738
|
+
"chat_id": "@kanal_adi",
|
|
739
|
+
"media": [
|
|
740
|
+
{
|
|
741
|
+
"type": "photo",
|
|
742
|
+
"media": "https://ornek.com/foto1.jpg",
|
|
743
|
+
"caption": "<b>Urun Galerisi</b>\n\n3 farkli renk secenegi",
|
|
744
|
+
"parse_mode": "HTML"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
"type": "photo",
|
|
748
|
+
"media": "https://ornek.com/foto2.jpg"
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"type": "photo",
|
|
752
|
+
"media": "https://ornek.com/foto3.jpg"
|
|
753
|
+
}
|
|
754
|
+
]
|
|
755
|
+
}
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
### Sessiz Anket Gonderme
|
|
759
|
+
|
|
760
|
+
```json
|
|
761
|
+
POST /sendPoll
|
|
762
|
+
{
|
|
763
|
+
"chat_id": "@kanal_adi",
|
|
764
|
+
"question": "Bu hafta hangi konuyu isleyelim?",
|
|
765
|
+
"options": ["API Tasarimi", "Veritabani Optimizasyonu", "CI/CD", "Test Stratejileri"],
|
|
766
|
+
"is_anonymous": true,
|
|
767
|
+
"allows_multiple_answers": false,
|
|
768
|
+
"disable_notification": true
|
|
769
|
+
}
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
---
|
|
773
|
+
|
|
774
|
+
## 14. Chat ID Bulma Yontemleri
|
|
775
|
+
|
|
776
|
+
Bot API ile calismak icin hedef sohbetin `chat_id` degerini bilmeniz gerekir.
|
|
777
|
+
|
|
778
|
+
| Yontem | Aciklama |
|
|
779
|
+
|---|---|
|
|
780
|
+
| `getUpdates` | Bot'a mesaj gonderin, yanittaki `message.chat.id` degerini alin. |
|
|
781
|
+
| `@kanal_adi` | Genel kanallarda kullanici adi direkt kullanilabilir. |
|
|
782
|
+
| Iletilen mesaj | Bot'a bir mesaj iletin, `forward_from_chat.id` degerini alin. |
|
|
783
|
+
| `getChat` | Bilinen bir chat_id veya @username icin detaylari getirir. |
|
|
784
|
+
|
|
785
|
+
Ozel kanallarin numerik ID'si negatiftir ve genellikle `-100` ile baslar. Ornegin: `-1001234567890`.
|
|
786
|
+
|
|
787
|
+
---
|
|
788
|
+
|
|
789
|
+
## 15. API Yanit Formati
|
|
790
|
+
|
|
791
|
+
Tum Bot API yanitlari su formattadir:
|
|
792
|
+
|
|
793
|
+
```json
|
|
794
|
+
{
|
|
795
|
+
"ok": true,
|
|
796
|
+
"result": { ... }
|
|
797
|
+
}
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
Hata durumunda:
|
|
801
|
+
|
|
802
|
+
```json
|
|
803
|
+
{
|
|
804
|
+
"ok": false,
|
|
805
|
+
"error_code": 400,
|
|
806
|
+
"description": "Bad Request: chat not found"
|
|
807
|
+
}
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
Bazi yanitlarda ek `parameters` alani bulunur:
|
|
811
|
+
|
|
812
|
+
```json
|
|
813
|
+
{
|
|
814
|
+
"ok": false,
|
|
815
|
+
"error_code": 429,
|
|
816
|
+
"description": "Too Many Requests: retry after 35",
|
|
817
|
+
"parameters": {
|
|
818
|
+
"retry_after": 35,
|
|
819
|
+
"migrate_to_chat_id": -1001234567890
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
`migrate_to_chat_id`: Grup supergrup'a donusturulduyse yeni chat_id'yi icerir. Bu durumda eski chat_id'yi yenisiyle guncelleyin.
|