# Web formu için Telegram botu: yazmalı mı?

Web sitesi formu için Cloudflare Worker ile kendi Telegram botunuzu yazın ya da botsuz çözümü seçin. Çalışan kod, chat ID bulma ve token hatası.

Author: Formgong
Published: 2026-10-03
Language: tr
Canonical: https://formgong.com/tr/blog/telegram-bot-for-contact-form/

İletişim formundaki mesajları kendi botunuzla Telegram'a gönderebilirsiniz: botu @BotFather'da oluşturun, chat ID'nizi bulun ve formu sendMessage çağıran küçük bir sunucu fonksiyonuyla iletin. Bot token'ı sunucuda kalmalıdır. Bu kodu yönetmek istemiyorsanız, Telegram teslimatı yerleşik bir form servisi aynı işi botsuz yapar.

## Form başvurularını Telegram'a almanın üç yolu

Bolt, Lovable ya da ChatGPT'ye formu Telegram'a nasıl göndereceğinizi sorarsanız, genelde “kendi botunu yaz” cevabını alırsınız. Bu yöntem çalışır. Ama üç seçenekten yalnızca biridir:

- **Kendi botunuz ve küçük bir sunucu fonksiyonu.** Çoğu barındırma hizmetinde ücretsizdir ve tamamen sizindir. Yaklaşık 25 satır kodu siz yazar ve bakımını yaparsınız.

- **Zapier, Make veya n8n gibi bir otomasyon aracı.** Bir webhook adımı formu alır, Telegram adımı gönderir. Kod gerekmez, ama ayrı bir hesap ve ayrı bir fiyatlandırma demektir.

- **Telegram desteği yerleşik bir form servisi.** Formun `action` adresini değiştirir ve bir sohbet bağlarsınız. Bot da sunucu kodu da gerekmez. Formgong böyle çalışır; Telegram eklentisiyle Formspree de öyle.

Bu rehber ilk seçeneği baştan sona kuruyor. Ardından kodun neyi kapsamadığını gösteriyor; böylece bilerek seçim yapabilirsiniz.

## 1. Botu oluşturun ve chat ID'nizi bulun

- Telegram'da **@BotFather**'ı açın ve `/newbot` gönderin. Bir ad ve `bot` ile biten bir kullanıcı adı seçin.

- BotFather `123456789:AAH…` gibi bir token gönderir. Onu bir şifre gibi saklayın.

- Yeni botunuzu açıp **Start**'a basın. Bunu yapmadan bot size mesaj yazamaz.

- Tarayıcıda `https://api.telegram.org/bot<TOKEN>/getUpdates` adresini açın. `"chat":{"id":…}` kısmını bulun. Bu sayı chat ID'nizdir.

Ekip grubu için botu gruba ekleyin ve grupta `/start@your_bot` gönderin. Grup ID'leri `-1001234567890` gibi negatif sayılardır. Eksi işaretini silmeyin.

## 2. Formu bir Cloudflare Worker ile iletin

Formun, token'ı saklayan ve Bot API'yi çağıran bir sunucuya ihtiyacı var. En küçük seçenek bir Cloudflare Worker'dır. Workers ücretsiz planı günde 100.000 istek içerir (03.10.2026 tarihinde kontrol edildi). Aynı kod bir Supabase Edge Function veya Netlify Function içinde de çalışır.

Worker formu okur, gizli tuzak alanını dolduran botları eler, uzun değerleri kısaltır ve düz metin gönderir. Düz metin, kesme işareti ya da `<` içeren isimlerde bozulmaz. Bir Telegram mesajı en fazla 4.096 karakter alır; bu yüzden mesaj alanı 3.000 karakterde kesilir.

```javascript
// src/index.js: formu alır ve Telegram'a gönderir
export default {
  async fetch(request, env) {
    if (request.method !== "POST") return new Response("POST only", { status: 405 });
    const form = await request.formData();
    // Honeypot: people never see this field, bots fill it in.
    if (form.get("botcheck")) return Response.redirect(env.THANK_YOU_URL, 303);
    const name = String(form.get("name") ?? "").slice(0, 200);
    const email = String(form.get("email") ?? "").slice(0, 200);
    const message = String(form.get("message") ?? "").slice(0, 3000);
    if (!email || !message) return new Response("E-posta ve mesaj zorunludur", { status: 400 });
    const text = `Yeni başvuru\nAd: ${name}\nE-posta: ${email}\n\n${message}`;
    const sent = await fetch(`https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ chat_id: env.TELEGRAM_CHAT_ID, text }),
    });
    if (!sent.ok) return new Response("Mesaj iletilemedi", { status: 502 });
    return Response.redirect(env.THANK_YOU_URL, 303);
  },
};
```

**Yayınlama komutları ve gizli anahtarlar**

```bash
npm create cloudflare@latest contact-to-telegram
cd contact-to-telegram
# paste the Worker code into src/index.js, then:
npx wrangler secret put TELEGRAM_BOT_TOKEN
npx wrangler secret put TELEGRAM_CHAT_ID
# add to wrangler.jsonc: "vars": { "THANK_YOU_URL": "https://example.com/tesekkurler" }
npx wrangler deploy
```

**Worker'a gönderen HTML formu**

```html
<form action="https://contact-to-telegram.YOUR-SUBDOMAIN.workers.dev" method="POST">
  <label>Ad <input name="name" autocomplete="name"></label>
  <label>E-posta <input type="email" name="email" required autocomplete="email"></label>
  <label>Mesaj <textarea name="message" required></textarea></label>
  <input type="text" name="botcheck" tabindex="-1" autocomplete="off" hidden>
  <button type="submit">Gönder</button>
</form>
```

## Bot token'ını asla tarayıcıya koymayın

Üretilen kodun bir kısmı `api.telegram.org` adresini doğrudan sayfadan çağırır. Önizlemede çalışıyor gibi görünür. Ama sayfa kaynağını açan herkes token'ı kopyalayıp botunuzu kullanabilir: onun adına mesaj atabilir, güncellemeleri okuyabilir veya webhook'u değiştirebilir.

Token'ı yukarıdaki komutlardaki gibi sunucu tarafında gizli tutun. Token zaten ön yüz koduna girdiyse BotFather'a `/revoke` gönderin ve yeni token'ı gizli anahtar olarak kaydedin. Bolt ve Lovable projeleri için de aynısı geçerli: aracı, çağrıyı bir backend fonksiyonuna, token'ı da onun gizli anahtarlarına taşımaya yönlendirin.

## Kendi yazdığınız botun yapmadıkları

Yukarıdaki Worker çalışan bir başlangıçtır. Gerçek başvuruları ona emanet etmeden önce eksiklerini bilin:

- **Başvurunun kopyası yok.** Telegram'a ulaşılamazsa ya da chat ID yanlışsa ziyaretçi bir hata görür ve mesaj başka hiçbir yerde kalmaz. Başvurular önemliyse bir veritabanı veya e-posta adımı ekleyin.

- **Zayıf spam koruması.** Honeypot yalnızca basit botları durdurur. Spam başlarsa Cloudflare Turnstile veya istek sınırı ekleyin.

- **Tek sohbet, durum yok.** Birden fazla sohbet, “tamamlandı” düğmeleri ya da cevapsız başvuru hatırlatmaları ek kod demektir.

- **Sınırlar.** Telegram, botların tek bir sohbete saniyede yaklaşık bir mesajdan, bir gruba dakikada 20 mesajdan fazlasını göndermemesini ister. Bir iletişim formu buna nadiren yaklaşır.

- **Bakım.** Token yenileme, hata uyarıları ve güncellemeler artık sizin işinizdir.

## Botsuz yol: Telegram'ı doğrudan forma bağlayın

Tek ihtiyacınız her başvurunun bir sohbete düşmesiyse, bir form servisi sizi bottan ve Worker'dan kurtarır. Formgong ile adımlar şöyle:

- [formgong.com](/tr/#top) üzerinden ücretsiz bir form anahtarı alın ve e-postanızı doğrulayın.

- Formu Formgong'a yönlendirin: `action="https://formgong.com/submit"` yazın ve anahtarı gizli bir alana ekleyin. Formun tasarımı değişmez.

- Form ayarlarında Telegram bölümünü açıp bağlan düğmesine basın. Formgong botu açılır; Start'a basın. Grup için botu gruba ekleyin ve ayarlarda gösterilen `/connect` kodunu gönderin.

Her başvuru ayrıca gelen kutunuza kaydedilir ve e-postayla gönderilir; spam sohbete ulaşmadan ayıklanır. Telegram, ayda 300 başvurulu ücretsiz plana dahildir; ayrıntılar [fiyatlar](/tr/#pricing) bölümünde. Adım adım rehber: [web sitesi başvurularını Telegram'da karşılayın](/tr/blog/website-form-to-telegram/). Telegram sunan servisleri [form servisleri karşılaştırmasında](/tr/compare/) inceleyebilirsiniz.

## Sık sorulan sorular

### Telegram bot token'ı sitenin koduna konabilir mi?

Hayır. Sayfa kaynağını açan herkes token'ı kopyalayıp botu yönetebilir. Token'ı sunucuda gizli anahtar olarak saklayın ve Bot API'yi bir sunucu fonksiyonundan çağırın. Sızdıysa BotFather'da iptal edin.

### Telegram chat ID'mi nasıl bulurum?

Botunuzla olan sohbette Start'a basın, sonra tarayıcıda token'ınızla getUpdates adresini açın. Yanıttaki chat alanındaki id kullanacağınız değerdir. Grup için grupta /start@your_bot gönderin; grup ID'leri negatiftir.

### Bot form başvurularını bir gruba gönderebilir mi?

Evet. Botu gruba ekleyin, grup ID'sini getUpdates yanıtından alın ve chat_id olarak kullanın. Telegram, botların tek bir grupta dakikada yaklaşık 20 mesaj göndermesine izin verir.

### İletişim formu için Cloudflare Worker ücretsiz mi?

Çoğu site için evet. Workers ücretsiz planı, 3 Ekim 2026 itibarıyla günde 100.000 istek içerir. Her başvuru tek bir istektir.

### Başvuruları Telegram'da almak için kendi botum gerekli mi?

Hayır. Formgong gibi form servisleri sohbeti kendi botlarıyla forma bağlar. Siz yalnızca formun action adresini değiştirir ve ayarlarda bağlan düğmesine basarsınız.

## Kaynaklar ve belgeler

- [Telegram Bot API: sendMessage](https://core.telegram.org/bots/api#sendmessage)
- [Telegram Bot FAQ: limits](https://core.telegram.org/bots/faq#my-bot-is-hitting-limits-how-do-i-avoid-this)
- [Telegram: BotFather](https://core.telegram.org/bots/features#botfather)
- [Cloudflare Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/)
- [Cloudflare Workers secrets](https://developers.cloudflare.com/workers/configuration/secrets/)
- [Formgong belgeleri](https://formgong.com/tr/docs/)

[Form anahtarı alın](https://formgong.com/tr/#top)
